pub(crate) const JSON_SCHEMA: &str = "{\"$schema\":\"http://json-schema.org/draft-07/schema#\",\"$id\":\"0.3.2\",\"title\":\"Tuple_of_Item_for_Decorated_for_ExprKind_and_ExtensibleOptions_for_Null_and_Diagnostics_and_EngineOptions_and_Output_and_WithDefIds_for_Decorated_for_ExprKind_and_FromEngine_and_ToEngine_and_HaPayload_and_Query_and_Response\",\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Item_for_Decorated_for_ExprKind\"},{\"$ref\":\"#/definitions/ExtensibleOptions_for_Null\"},{\"$ref\":\"#/definitions/Diagnostics\"},{\"$ref\":\"#/definitions/EngineOptions\"},{\"$ref\":\"#/definitions/Output\"},{\"$ref\":\"#/definitions/WithDefIds_for_Decorated_for_ExprKind\"},{\"$ref\":\"#/definitions/FromEngine\"},{\"$ref\":\"#/definitions/ToEngine\"},{\"$ref\":\"#/definitions/HaPayload\"},{\"$ref\":\"#/definitions/Query\"},{\"$ref\":\"#/definitions/Response\"}],\"maxItems\":11,\"minItems\":11,\"definitions\":{\"AdtExpr\":{\"description\":\"Reflects [`thir::AdtExpr`]\",\"type\":\"object\",\"required\":[\"base\",\"fields\",\"info\"],\"properties\":{\"base\":{\"$ref\":\"#/definitions/AdtExprBase\"},\"fields\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/FieldExpr\"}},\"info\":{\"$ref\":\"#/definitions/VariantInformations\"},\"user_ty\":{\"anyOf\":[{\"$ref\":\"#/definitions/Canonical_for_UserType\"},{\"type\":\"null\"}]}}},\"AdtExprBase\":{\"oneOf\":[{\"type\":\"string\",\"enum\":[\"None\"]},{\"type\":\"object\",\"required\":[\"Base\"],\"properties\":{\"Base\":{\"$ref\":\"#/definitions/FruInfo\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"DefaultFields\"],\"properties\":{\"DefaultFields\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}},\"additionalProperties\":false}]},\"Alias\":{\"description\":\"This type merges the information from `rustc_type_ir::AliasKind` and `ty::AliasTy`\",\"type\":\"object\",\"required\":[\"args\",\"def_id\",\"kind\"],\"properties\":{\"args\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericArg\"}},\"def_id\":{\"$ref\":\"#/definitions/DefId\"},\"kind\":{\"$ref\":\"#/definitions/AliasKind\"}}},\"AliasKind\":{\"description\":\"Reflects [`ty::AliasKind`]\",\"oneOf\":[{\"description\":\"The projection of a trait type: `<Ty as Trait<...>>::Type<...>`\",\"type\":\"object\",\"required\":[\"Projection\"],\"properties\":{\"Projection\":{\"type\":\"object\",\"required\":[\"assoc_item\",\"impl_expr\"],\"properties\":{\"assoc_item\":{\"description\":\"The `Type` in `Ty: Trait<..., Type = U>`.\",\"allOf\":[{\"$ref\":\"#/definitions/AssocItem\"}]},\"impl_expr\":{\"description\":\"The `impl Trait for Ty` in `Ty: Trait<..., Type = U>`.\",\"allOf\":[{\"$ref\":\"#/definitions/ImplExpr\"}]}}}},\"additionalProperties\":false},{\"description\":\"An associated type in an inherent impl.\",\"type\":\"string\",\"enum\":[\"Inherent\"]},{\"description\":\"An `impl Trait` opaque type.\",\"type\":\"object\",\"required\":[\"Opaque\"],\"properties\":{\"Opaque\":{\"type\":\"object\",\"required\":[\"hidden_ty\"],\"properties\":{\"hidden_ty\":{\"description\":\"The real type hidden inside this opaque type.\",\"allOf\":[{\"$ref\":\"#/definitions/Node_for_TyKind\"}]}}}},\"additionalProperties\":false},{\"description\":\"A type alias that references opaque types. Likely to always be normalized away.\",\"type\":\"string\",\"enum\":[\"Free\"]}]},\"Align\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"Align\"],\"properties\":{\"Align\":{\"type\":\"object\",\"required\":[\"todo\"],\"properties\":{\"todo\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"AnonConst_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::AnonConst`]\",\"type\":\"object\",\"required\":[\"body\",\"def_id\",\"hir_id\"],\"properties\":{\"body\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"def_id\":{\"$ref\":\"#/definitions/DefId\"},\"hir_id\":{\"$ref\":\"#/definitions/HirId\"}}},\"Arm\":{\"description\":\"Reflects [`thir::Arm`]\",\"type\":\"object\",\"required\":[\"attributes\",\"body\",\"lint_level\",\"pattern\",\"scope\",\"span\"],\"properties\":{\"attributes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute\"}},\"body\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"guard\":{\"anyOf\":[{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},{\"type\":\"null\"}]},\"lint_level\":{\"$ref\":\"#/definitions/LintLevel\"},\"pattern\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"},\"scope\":{\"$ref\":\"#/definitions/Scope\"},\"span\":{\"$ref\":\"#/definitions/Span\"}}},\"Arm2\":{\"description\":\"A pattern matching arm with metadata.\",\"type\":\"object\",\"required\":[\"body\",\"meta\",\"pat\"],\"properties\":{\"body\":{\"description\":\"The body of the arm.\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"guard\":{\"description\":\"The optional guard of the arm.\",\"anyOf\":[{\"$ref\":\"#/definitions/Guard\"},{\"type\":\"null\"}]},\"meta\":{\"description\":\"Source span and attributes.\",\"allOf\":[{\"$ref\":\"#/definitions/Metadata\"}]},\"pat\":{\"description\":\"The pattern of the arm.\",\"allOf\":[{\"$ref\":\"#/definitions/Pat\"}]}}},\"Ascription\":{\"description\":\"Reflects [`thir::Ascription`]\",\"type\":\"object\",\"required\":[\"annotation\",\"variance\"],\"properties\":{\"annotation\":{\"$ref\":\"#/definitions/CanonicalUserTypeAnnotation\"},\"variance\":{\"$ref\":\"#/definitions/Variance\"}}},\"AssignOp\":{\"description\":\"Reflects [`rustc_middle::mir::AssignOp`]\",\"type\":\"string\",\"enum\":[\"AddAssign\",\"SubAssign\",\"MulAssign\",\"DivAssign\",\"RemAssign\",\"BitXorAssign\",\"BitAndAssign\",\"BitOrAssign\",\"ShlAssign\",\"ShrAssign\"]},\"AssocItem\":{\"description\":\"Reflects [`ty::AssocItem`]\",\"type\":\"object\",\"required\":[\"container\",\"def_id\",\"has_value\",\"kind\"],\"properties\":{\"container\":{\"$ref\":\"#/definitions/AssocItemContainer\"},\"def_id\":{\"$ref\":\"#/definitions/DefId\"},\"has_value\":{\"description\":\"Whether this item has a value (e.g. this is `false` for trait methods without default implementations).\",\"type\":\"boolean\"},\"kind\":{\"$ref\":\"#/definitions/AssocKind\"},\"name\":{\"description\":\"This is `None` for RPTITs.\",\"type\":[\"string\",\"null\"]}}},\"AssocItemContainer\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"TraitContainer\"],\"properties\":{\"TraitContainer\":{\"type\":\"object\",\"required\":[\"trait_ref\"],\"properties\":{\"trait_ref\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"TraitImplContainer\"],\"properties\":{\"TraitImplContainer\":{\"type\":\"object\",\"required\":[\"impl_\",\"implemented_trait_item\",\"implemented_trait_ref\",\"overrides_default\"],\"properties\":{\"impl_\":{\"description\":\"Reference to the def_id of the impl block.\",\"allOf\":[{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}]},\"implemented_trait_item\":{\"description\":\"The def_id of the associated item (in the trait declaration) that is being implemented.\",\"allOf\":[{\"$ref\":\"#/definitions/DefId\"}]},\"implemented_trait_ref\":{\"description\":\"The trait ref implemented by the impl block.\",\"allOf\":[{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}]},\"overrides_default\":{\"description\":\"Whether the corresponding trait item had a default (and therefore this one overrides it).\",\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"InherentImplContainer\"],\"properties\":{\"InherentImplContainer\":{\"type\":\"object\",\"required\":[\"impl_id\"],\"properties\":{\"impl_id\":{\"$ref\":\"#/definitions/DefId\"}}}},\"additionalProperties\":false}]},\"AssocKind\":{\"description\":\"Reflects [`ty::AssocKind`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Const\"],\"properties\":{\"Const\":{\"type\":\"object\",\"required\":[\"name\"],\"properties\":{\"name\":{\"type\":\"string\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Fn\"],\"properties\":{\"Fn\":{\"type\":\"object\",\"required\":[\"has_self\",\"name\"],\"properties\":{\"has_self\":{\"type\":\"boolean\"},\"name\":{\"type\":\"string\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Type\"],\"properties\":{\"Type\":{\"type\":\"object\",\"required\":[\"data\"],\"properties\":{\"data\":{\"$ref\":\"#/definitions/AssocTypeData\"}}}},\"additionalProperties\":false}]},\"AssocTypeData\":{\"description\":\"Reflects [`ty::AssocTypeData`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Normal\"],\"properties\":{\"Normal\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Rpitit\"],\"properties\":{\"Rpitit\":{\"$ref\":\"#/definitions/ImplTraitInTraitData\"}},\"additionalProperties\":false}]},\"AttrArgs\":{\"description\":\"Reflects [`rustc_hir::AttrArgs`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Empty\"]},{\"type\":\"object\",\"required\":[\"Delimited\"],\"properties\":{\"Delimited\":{\"$ref\":\"#/definitions/DelimArgs\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Eq\"],\"properties\":{\"Eq\":{\"type\":\"object\",\"required\":[\"eq_span\",\"expr\"],\"properties\":{\"eq_span\":{\"$ref\":\"#/definitions/Span\"},\"expr\":{\"$ref\":\"#/definitions/MetaItemLit\"}}}},\"additionalProperties\":false}]},\"AttrItem\":{\"description\":\"Reflects [`rustc_hir::AttrItem`]\",\"type\":\"object\",\"required\":[\"args\",\"path\",\"span\"],\"properties\":{\"args\":{\"$ref\":\"#/definitions/AttrArgs\"},\"path\":{\"type\":\"string\"},\"span\":{\"$ref\":\"#/definitions/Span\"}}},\"AttrStyle\":{\"description\":\"Reflects [`rustc_ast::AttrStyle`]\",\"type\":\"string\",\"enum\":[\"Outer\",\"Inner\"]},\"Attribute\":{\"description\":\"Reflects [`rustc_ast::Attribute`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Parsed\"],\"properties\":{\"Parsed\":{\"$ref\":\"#/definitions/AttributeKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Unparsed\"],\"properties\":{\"Unparsed\":{\"$ref\":\"#/definitions/AttrItem\"}},\"additionalProperties\":false}]},\"Attribute2\":{\"description\":\"Represents a single attribute.\",\"type\":\"object\",\"required\":[\"kind\",\"span\"],\"properties\":{\"kind\":{\"description\":\"The kind of attribute (a comment, a tool attribute?).\",\"allOf\":[{\"$ref\":\"#/definitions/AttributeKind2\"}]},\"span\":{\"description\":\"The span of the attribute.\",\"allOf\":[{\"$ref\":\"#/definitions/Span2\"}]}}},\"AttributeKind\":{\"description\":\"Reflects [`rustc_attr_data_structures::AttributeKind`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Align\"],\"properties\":{\"Align\":{\"type\":\"object\",\"required\":[\"align\",\"span\"],\"properties\":{\"align\":{\"$ref\":\"#/definitions/Align\"},\"span\":{\"$ref\":\"#/definitions/Span\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"AutomaticallyDerived\"],\"properties\":{\"AutomaticallyDerived\":{\"$ref\":\"#/definitions/Span\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Coverage\"],\"properties\":{\"Coverage\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Span\"},{\"$ref\":\"#/definitions/CoverageStatus\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Deprecation\"],\"properties\":{\"Deprecation\":{\"type\":\"object\",\"required\":[\"deprecation\",\"span\"],\"properties\":{\"deprecation\":{\"$ref\":\"#/definitions/Deprecation\"},\"span\":{\"$ref\":\"#/definitions/Span\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"DocComment\"],\"properties\":{\"DocComment\":{\"type\":\"object\",\"required\":[\"comment\",\"kind\",\"span\",\"style\"],\"properties\":{\"comment\":{\"type\":\"string\"},\"kind\":{\"$ref\":\"#/definitions/CommentKind\"},\"span\":{\"$ref\":\"#/definitions/Span\"},\"style\":{\"$ref\":\"#/definitions/AttrStyle\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Ignore\"],\"properties\":{\"Ignore\":{\"type\":\"object\",\"required\":[\"span\"],\"properties\":{\"reason\":{\"type\":[\"string\",\"null\"]},\"span\":{\"$ref\":\"#/definitions/Span\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Marker\"],\"properties\":{\"Marker\":{\"$ref\":\"#/definitions/Span\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"MayDangle\"],\"properties\":{\"MayDangle\":{\"$ref\":\"#/definitions/Span\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"MustUse\"],\"properties\":{\"MustUse\":{\"type\":\"object\",\"required\":[\"span\"],\"properties\":{\"reason\":{\"type\":[\"string\",\"null\"]},\"span\":{\"$ref\":\"#/definitions/Span\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Path\"],\"properties\":{\"Path\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Todo\"],\"properties\":{\"Todo\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"AttributeKind2\":{\"description\":\"Represents the kind of an attribute.\",\"oneOf\":[{\"description\":\"A tool attribute `#[path(tokens)]`\",\"type\":\"object\",\"required\":[\"Tool\"],\"properties\":{\"Tool\":{\"type\":\"object\",\"required\":[\"path\",\"tokens\"],\"properties\":{\"path\":{\"description\":\"The path to the tool\",\"type\":\"string\"},\"tokens\":{\"description\":\"The payload\",\"type\":\"string\"}}}},\"additionalProperties\":false},{\"description\":\"A doc comment\",\"type\":\"object\",\"required\":[\"DocComment\"],\"properties\":{\"DocComment\":{\"type\":\"object\",\"required\":[\"body\",\"kind\"],\"properties\":{\"body\":{\"description\":\"The contents of the comment\",\"type\":\"string\"},\"kind\":{\"description\":\"What kind of comment? (single lines, block)\",\"allOf\":[{\"$ref\":\"#/definitions/DocCommentKind\"}]}}}},\"additionalProperties\":false}]},\"BackendOptions_for_Null\":{\"type\":\"object\",\"required\":[\"backend\",\"cli_extension\",\"dry_run\",\"extract_type_aliases\",\"profile\",\"stats\",\"translation_options\",\"verbose\"],\"properties\":{\"backend\":{\"$ref\":\"#/definitions/Backend_for_Null\"},\"cli_extension\":{\"$ref\":\"#/definitions/EmptyArgsExtension\"},\"debug_engine\":{\"description\":\"Enable engine debugging: dumps the AST at each phase.\\n\\nThe value of `<DEBUG_ENGINE>` can be either: {n}{n} - `interactive` (or `i`): enables debugging of the engine, and visualize interactively in a webapp how a crate was transformed by each phase, both in Rust-like syntax and browsing directly the internal AST. By default, the webapp is hosted on `http://localhost:8000`, the port can be override by setting the `HAX_DEBUGGER_PORT` environment variable. {n} - `<FILE>` or `file:<FILE>`: outputs the different AST as JSON to `<FILE>`. `<FILE>` can be either [-] or a path.\",\"anyOf\":[{\"$ref\":\"#/definitions/DebugEngineMode\"},{\"type\":\"null\"}]},\"dry_run\":{\"description\":\"Don\'t write anything on disk. Output everything as JSON to stdout instead.\",\"type\":\"boolean\"},\"extract_type_aliases\":{\"description\":\"Extract type aliases. This is disabled by default, since extracted terms depends on expanded types rather than on type aliases. Turning this option on is discouraged: Rust type synonyms can ommit generic bounds, which are ususally necessary in the hax backends, leading to typechecking errors. For more details see https://github.com/hacspec/hax/issues/708.\",\"type\":\"boolean\"},\"output_dir\":{\"description\":\"Where to put the output files resulting from the translation. Defaults to \\\"<crate folder>/proofs/<backend>/extraction\\\".\",\"type\":[\"string\",\"null\"]},\"profile\":{\"description\":\"Enables profiling for the engine: for each phase of the engine, time and memory usage are recorded and reported.\",\"type\":\"boolean\"},\"stats\":{\"description\":\"Prints statistics about how many items have been translated successfully by the engine.\",\"type\":\"boolean\"},\"translation_options\":{\"$ref\":\"#/definitions/TranslationOptions\"},\"verbose\":{\"description\":\"Verbose mode for the Hax engine. Set `-vv` for maximal verbosity.\",\"type\":\"integer\",\"format\":\"uint8\",\"minimum\":0.0}}},\"Backend_for_Null\":{\"oneOf\":[{\"description\":\"Use the F* backend\",\"type\":\"object\",\"required\":[\"Fstar\"],\"properties\":{\"Fstar\":{\"$ref\":\"#/definitions/FStarOptions_for_Null\"}},\"additionalProperties\":false},{\"description\":\"Use the Coq backend\",\"type\":\"string\",\"enum\":[\"Coq\"]},{\"description\":\"Use the SSProve backend\",\"type\":\"string\",\"enum\":[\"Ssprove\"]},{\"description\":\"Use the EasyCrypt backend (warning: work in progress!)\",\"type\":\"string\",\"enum\":[\"Easycrypt\"]},{\"description\":\"Use the ProVerif backend (warning: work in progress!)\",\"type\":\"object\",\"required\":[\"ProVerif\"],\"properties\":{\"ProVerif\":{\"$ref\":\"#/definitions/ProVerifOptions\"}},\"additionalProperties\":false},{\"description\":\"Use the Lean backend (warning: work in progress!)\",\"type\":\"string\",\"enum\":[\"Lean\"]},{\"description\":\"Extract `DefId`s of the crate as a Rust module tree. This is a command that regenerates code for the rust engine.\",\"type\":\"string\",\"enum\":[\"GenerateRustEngineNames\"]}]},\"BinOp\":{\"description\":\"Reflects [`rustc_middle::mir::BinOp`]\",\"type\":\"string\",\"enum\":[\"Add\",\"AddUnchecked\",\"AddWithOverflow\",\"Sub\",\"SubUnchecked\",\"SubWithOverflow\",\"Mul\",\"MulUnchecked\",\"MulWithOverflow\",\"Div\",\"Rem\",\"BitXor\",\"BitAnd\",\"BitOr\",\"Shl\",\"ShlUnchecked\",\"Shr\",\"ShrUnchecked\",\"Eq\",\"Lt\",\"Le\",\"Ne\",\"Ge\",\"Gt\",\"Cmp\",\"Offset\"]},\"Binder_for_ClauseKind\":{\"description\":\"Reflects [`ty::Binder`]\",\"type\":\"object\",\"required\":[\"bound_vars\",\"value\"],\"properties\":{\"bound_vars\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/BoundVariableKind\"}},\"value\":{\"$ref\":\"#/definitions/ClauseKind\"}}},\"Binder_for_ExistentialPredicate\":{\"description\":\"Reflects [`ty::Binder`]\",\"type\":\"object\",\"required\":[\"bound_vars\",\"value\"],\"properties\":{\"bound_vars\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/BoundVariableKind\"}},\"value\":{\"$ref\":\"#/definitions/ExistentialPredicate\"}}},\"Binder_for_Node_for_ItemRefContents\":{\"description\":\"Reflects [`ty::Binder`]\",\"type\":\"object\",\"required\":[\"bound_vars\",\"value\"],\"properties\":{\"bound_vars\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/BoundVariableKind\"}},\"value\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}}},\"Binder_for_TraitPredicate\":{\"description\":\"Reflects [`ty::Binder`]\",\"type\":\"object\",\"required\":[\"bound_vars\",\"value\"],\"properties\":{\"bound_vars\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/BoundVariableKind\"}},\"value\":{\"$ref\":\"#/definitions/TraitPredicate\"}}},\"Binder_for_TyFnSig\":{\"description\":\"Reflects [`ty::Binder`]\",\"type\":\"object\",\"required\":[\"bound_vars\",\"value\"],\"properties\":{\"bound_vars\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/BoundVariableKind\"}},\"value\":{\"$ref\":\"#/definitions/TyFnSig\"}}},\"BindingMode\":{\"description\":\"Reflects [`rustc_ast::ast::BindingMode`]\",\"type\":\"object\",\"required\":[\"by_ref\",\"mutability\"],\"properties\":{\"by_ref\":{\"$ref\":\"#/definitions/ByRef\"},\"mutability\":{\"type\":\"boolean\"}}},\"BindingMode2\":{\"description\":\"Binding modes used in patterns.\",\"oneOf\":[{\"description\":\"Binding by value\\n\\n# Example: `x`\",\"type\":\"string\",\"enum\":[\"ByValue\"]},{\"description\":\"Binding by reference\\n\\n# Example: `ref x`, `ref mut x`\",\"type\":\"object\",\"required\":[\"ByRef\"],\"properties\":{\"ByRef\":{\"$ref\":\"#/definitions/BorrowKind2\"}},\"additionalProperties\":false}]},\"Block\":{\"description\":\"Reflects [`thir::Block`]\",\"type\":\"object\",\"required\":[\"region_scope\",\"safety_mode\",\"span\",\"stmts\",\"targeted_by_break\"],\"properties\":{\"expr\":{\"anyOf\":[{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},{\"type\":\"null\"}]},\"region_scope\":{\"$ref\":\"#/definitions/Scope\"},\"safety_mode\":{\"$ref\":\"#/definitions/BlockSafety\"},\"span\":{\"$ref\":\"#/definitions/Span\"},\"stmts\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Stmt\"}},\"targeted_by_break\":{\"type\":\"boolean\"}}},\"BlockSafety\":{\"description\":\"Reflects [`thir::BlockSafety`]\",\"type\":\"string\",\"enum\":[\"Safe\",\"BuiltinUnsafe\",\"ExplicitUnsafe\"]},\"BorrowKind\":{\"description\":\"Reflects [`rustc_middle::mir::BorrowKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Shared\"]},{\"type\":\"object\",\"required\":[\"Fake\"],\"properties\":{\"Fake\":{\"$ref\":\"#/definitions/FakeBorrowKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Mut\"],\"properties\":{\"Mut\":{\"type\":\"object\",\"required\":[\"kind\"],\"properties\":{\"kind\":{\"$ref\":\"#/definitions/MutBorrowKind\"}}}},\"additionalProperties\":false}]},\"BorrowKind2\":{\"description\":\"Represents different levels of borrowing.\",\"oneOf\":[{\"description\":\"Shared reference\\n\\n# Example: `&x`\",\"type\":\"string\",\"enum\":[\"Shared\"]},{\"description\":\"Unique reference: this is internal to rustc\",\"type\":\"string\",\"enum\":[\"Unique\"]},{\"description\":\"Mutable reference\\n\\n# Example: `&mut x`\",\"type\":\"string\",\"enum\":[\"Mut\"]}]},\"BoundRegion\":{\"description\":\"Reflects [`ty::BoundRegion`]\",\"type\":\"object\",\"required\":[\"kind\",\"var\"],\"properties\":{\"kind\":{\"$ref\":\"#/definitions/BoundRegionKind\"},\"var\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}}},\"BoundRegionKind\":{\"description\":\"Reflects [`ty::BoundRegionKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Anon\",\"ClosureEnv\"]},{\"type\":\"object\",\"required\":[\"NamedAnon\"],\"properties\":{\"NamedAnon\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Named\"],\"properties\":{\"Named\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/DefId\"},{\"type\":\"string\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false}]},\"BoundTy\":{\"description\":\"Reflects [`ty::BoundTy`]\",\"type\":\"object\",\"required\":[\"kind\",\"var\"],\"properties\":{\"kind\":{\"$ref\":\"#/definitions/BoundTyKind\"},\"var\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}}},\"BoundTyKind\":{\"description\":\"Reflects [`ty::BoundTyKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Anon\"]},{\"type\":\"object\",\"required\":[\"Param\"],\"properties\":{\"Param\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/DefId\"},{\"type\":\"string\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false}]},\"BoundVariableKind\":{\"description\":\"Reflects [`ty::BoundVariableKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Const\"]},{\"type\":\"object\",\"required\":[\"Ty\"],\"properties\":{\"Ty\":{\"$ref\":\"#/definitions/BoundTyKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Region\"],\"properties\":{\"Region\":{\"$ref\":\"#/definitions/BoundRegionKind\"}},\"additionalProperties\":false}]},\"ByRef\":{\"description\":\"Reflects [`rustc_ast::ast::ByRef`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"No\"]},{\"type\":\"object\",\"required\":[\"Yes\"],\"properties\":{\"Yes\":{\"type\":\"boolean\"}},\"additionalProperties\":false}]},\"CanonicalTyVarKind\":{\"description\":\"Reflects [`rustc_middle::infer::canonical::CanonicalTyVarKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Int\",\"Float\"]},{\"type\":\"object\",\"required\":[\"General\"],\"properties\":{\"General\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}},\"additionalProperties\":false}]},\"CanonicalUserTypeAnnotation\":{\"description\":\"Reflects [`ty::CanonicalUserTypeAnnotation`]\",\"type\":\"object\",\"required\":[\"inferred_ty\",\"span\",\"user_ty\"],\"properties\":{\"inferred_ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"},\"span\":{\"$ref\":\"#/definitions/Span\"},\"user_ty\":{\"$ref\":\"#/definitions/Canonical_for_UserType\"}}},\"CanonicalVarInfo\":{\"description\":\"Reflects [`rustc_middle::infer::canonical::CanonicalVarKind`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Ty\"],\"properties\":{\"Ty\":{\"$ref\":\"#/definitions/CanonicalTyVarKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"PlaceholderTy\"],\"properties\":{\"PlaceholderTy\":{\"$ref\":\"#/definitions/Placeholder_for_BoundTy\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Region\"],\"properties\":{\"Region\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"PlaceholderRegion\"],\"properties\":{\"PlaceholderRegion\":{\"$ref\":\"#/definitions/Placeholder_for_BoundRegion\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Const\"],\"properties\":{\"Const\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"PlaceholderConst\"],\"properties\":{\"PlaceholderConst\":{\"$ref\":\"#/definitions/Placeholder_for_uint\"}},\"additionalProperties\":false}]},\"Canonical_for_UserType\":{\"description\":\"Reflects [`rustc_middle::infer::canonical::Canonical`]\",\"type\":\"object\",\"required\":[\"max_universe\",\"value\",\"variables\"],\"properties\":{\"max_universe\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},\"value\":{\"$ref\":\"#/definitions/UserType\"},\"variables\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/CanonicalVarInfo\"}}}},\"Clause\":{\"description\":\"Reflects [`ty::Clause`] and adds a hash-consed predicate identifier.\",\"type\":\"object\",\"required\":[\"id\",\"kind\"],\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0},\"kind\":{\"$ref\":\"#/definitions/Binder_for_ClauseKind\"}}},\"ClauseKind\":{\"description\":\"Reflects [`ty::ClauseKind`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Trait\"],\"properties\":{\"Trait\":{\"$ref\":\"#/definitions/TraitPredicate\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"RegionOutlives\"],\"properties\":{\"RegionOutlives\":{\"$ref\":\"#/definitions/OutlivesPredicate_for_Region\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"TypeOutlives\"],\"properties\":{\"TypeOutlives\":{\"$ref\":\"#/definitions/OutlivesPredicate_for_Node_for_TyKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Projection\"],\"properties\":{\"Projection\":{\"$ref\":\"#/definitions/ProjectionPredicate\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ConstArgHasType\"],\"properties\":{\"ConstArgHasType\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"},{\"$ref\":\"#/definitions/Node_for_TyKind\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"WellFormed\"],\"properties\":{\"WellFormed\":{\"$ref\":\"#/definitions/Term\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ConstEvaluatable\"],\"properties\":{\"ConstEvaluatable\":{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"HostEffect\"],\"properties\":{\"HostEffect\":{\"$ref\":\"#/definitions/HostEffectPredicate\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"UnstableFeature\"],\"properties\":{\"UnstableFeature\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"ClosureArgs\":{\"description\":\"Reflects [`ty::ClosureArgs`]\",\"type\":\"object\",\"required\":[\"fn_sig\",\"item\",\"kind\",\"upvar_tys\"],\"properties\":{\"fn_sig\":{\"description\":\"The signature of the function that the closure implements, e.g. `fn(A, B, C) -> D`.\",\"allOf\":[{\"$ref\":\"#/definitions/Binder_for_TyFnSig\"}]},\"item\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"},\"kind\":{\"description\":\"The base kind of this closure. The kinds are ordered by inclusion: any `Fn` works as an `FnMut`, and any `FnMut` works as an `FnOnce`.\",\"allOf\":[{\"$ref\":\"#/definitions/ClosureKind\"}]},\"upvar_tys\":{\"description\":\"The set of captured variables. Together they form the state of the closure.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}}},\"ClosureKind\":{\"description\":\"Reflects [`ty::ClosureKind`]\",\"type\":\"string\",\"enum\":[\"Fn\",\"FnMut\",\"FnOnce\"]},\"Command_for_Null\":{\"oneOf\":[{\"description\":\"Translate to a backend. The translated modules will be written under the directory `<PKG>/proofs/<BACKEND>/extraction`, where `<PKG>` is the translated cargo package name and `<BACKEND>` the name of the backend.\",\"type\":\"object\",\"required\":[\"Backend\"],\"properties\":{\"Backend\":{\"$ref\":\"#/definitions/BackendOptions_for_Null\"}},\"additionalProperties\":false},{\"description\":\"Export directly as a JSON file\",\"type\":\"object\",\"required\":[\"JSON\"],\"properties\":{\"JSON\":{\"type\":\"object\",\"required\":[\"include_extra\",\"kind\",\"output_file\",\"use_ids\"],\"properties\":{\"include_extra\":{\"description\":\"Whether to include extra informations about `DefId`s.\",\"type\":\"boolean\"},\"kind\":{\"description\":\"Whether the bodies are exported as THIR, built MIR, const MIR, or a combination. Repeat this option to extract a combination (e.g. `-k thir -k mir-built`). Pass `--kind` alone with no value to disable body extraction.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ExportBodyKind\"}},\"output_file\":{\"description\":\"Path to the output JSON file, \\\"-\\\" denotes stdout.\",\"allOf\":[{\"$ref\":\"#/definitions/PathOrDash\"}]},\"use_ids\":{\"description\":\"By default, `cargo hax json` outputs a JSON where every piece of information is inlined. This however creates very large JSON files. This flag enables the use of unique IDs and outputs a map from IDs to actual objects.\",\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"CliExtension\"],\"properties\":{\"CliExtension\":{\"$ref\":\"#/definitions/EmptySubcommandExtension\"}},\"additionalProperties\":false}]},\"CommentKind\":{\"description\":\"Reflects [`rustc_ast::token::CommentKind`]\",\"type\":\"string\",\"enum\":[\"Line\",\"Block\"]},\"ConcreteId\":{\"description\":\"A identifier that we call concrete: it exists concretely somewhere in Rust.\",\"type\":\"object\",\"required\":[\"def_id\"],\"properties\":{\"def_id\":{\"description\":\"The explicit `def_id`.\",\"allOf\":[{\"$ref\":\"#/definitions/ExplicitDefId\"}]},\"moved\":{\"description\":\"A fresh module if this definition was moved to a fresh module.\",\"anyOf\":[{\"$ref\":\"#/definitions/FreshModule\"},{\"type\":\"null\"}]},\"suffix\":{\"description\":\"An optional suffix.\",\"anyOf\":[{\"$ref\":\"#/definitions/ReservedSuffix\"},{\"type\":\"null\"}]}}},\"ConstArgKind_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::ConstArgKind`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Path\"],\"properties\":{\"Path\":{\"$ref\":\"#/definitions/QPath\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Anon\"],\"properties\":{\"Anon\":{\"$ref\":\"#/definitions/AnonConst_for_Decorated_for_ExprKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Infer\"],\"properties\":{\"Infer\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"ConstArg_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::ConstArg`]\",\"type\":\"object\",\"required\":[\"hir_id\",\"kind\"],\"properties\":{\"hir_id\":{\"$ref\":\"#/definitions/HirId\"},\"kind\":{\"$ref\":\"#/definitions/ConstArgKind_for_Decorated_for_ExprKind\"}}},\"ConstantExprKind\":{\"description\":\"The subset of [Expr] that corresponds to constants.\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Literal\"],\"properties\":{\"Literal\":{\"$ref\":\"#/definitions/ConstantLiteral\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Adt\"],\"properties\":{\"Adt\":{\"type\":\"object\",\"required\":[\"fields\",\"info\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ConstantFieldExpr\"}},\"info\":{\"$ref\":\"#/definitions/VariantInformations\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Array\"],\"properties\":{\"Array\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"}}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Tuple\"],\"properties\":{\"Tuple\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"}}}}},\"additionalProperties\":false},{\"description\":\"A top-level constant or a constant appearing in an impl block.\\n\\nRemark: constants *can* have generic parameters. Example: ```text struct V<const N: usize, T> { x: [T; N], }\\n\\nimpl<const N: usize, T> V<N, T> { const LEN: usize = N; // This has generics <N, T> } ```\\n\\nIf `options.inline_anon_consts` is `false`, this is also used for inline const blocks and advanced const generics expressions.\",\"type\":\"object\",\"required\":[\"GlobalName\"],\"properties\":{\"GlobalName\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}},\"additionalProperties\":false},{\"description\":\"A trait constant\\n\\nEx.: ```text impl Foo for Bar { const C : usize = 32; // <- } ```\",\"type\":\"object\",\"required\":[\"TraitConst\"],\"properties\":{\"TraitConst\":{\"type\":\"object\",\"required\":[\"impl_expr\",\"name\"],\"properties\":{\"impl_expr\":{\"$ref\":\"#/definitions/ImplExpr\"},\"name\":{\"type\":\"string\"}}}},\"additionalProperties\":false},{\"description\":\"A shared reference to a static variable.\",\"type\":\"object\",\"required\":[\"Borrow\"],\"properties\":{\"Borrow\":{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"}},\"additionalProperties\":false},{\"description\":\"A raw borrow (`*const` or `*mut`).\",\"type\":\"object\",\"required\":[\"RawBorrow\"],\"properties\":{\"RawBorrow\":{\"type\":\"object\",\"required\":[\"arg\",\"mutability\"],\"properties\":{\"arg\":{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"},\"mutability\":{\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"description\":\"A cast `<source> as <type>`, `<type>` is stored as the type of the current constant expression. Currently, this is only used to represent `lit as *mut T` or `lit as *const T`, where `lit` is a `usize` literal.\",\"type\":\"object\",\"required\":[\"Cast\"],\"properties\":{\"Cast\":{\"type\":\"object\",\"required\":[\"source\"],\"properties\":{\"source\":{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ConstRef\"],\"properties\":{\"ConstRef\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"$ref\":\"#/definitions/ParamConst\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"FnPtr\"],\"properties\":{\"FnPtr\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}},\"additionalProperties\":false},{\"description\":\"A blob of memory containing the byte representation of the value. This can occur when evaluating MIR constants. Interpreting this back to a structured value is left as an exercice to the consumer.\",\"type\":\"object\",\"required\":[\"Memory\"],\"properties\":{\"Memory\":{\"type\":\"array\",\"items\":{\"type\":\"integer\",\"format\":\"uint8\",\"minimum\":0.0}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Todo\"],\"properties\":{\"Todo\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"ConstantFieldExpr\":{\"type\":\"object\",\"required\":[\"field\",\"value\"],\"properties\":{\"field\":{\"$ref\":\"#/definitions/DefId\"},\"value\":{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"}}},\"ConstantInt\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"Int\"],\"properties\":{\"Int\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/IntTy\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Uint\"],\"properties\":{\"Uint\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/UintTy\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false}]},\"ConstantLiteral\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"Bool\"],\"properties\":{\"Bool\":{\"type\":\"boolean\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Char\"],\"properties\":{\"Char\":{\"type\":\"string\",\"maxLength\":1,\"minLength\":1}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Float\"],\"properties\":{\"Float\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/FloatTy\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Int\"],\"properties\":{\"Int\":{\"$ref\":\"#/definitions/ConstantInt\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Str\"],\"properties\":{\"Str\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ByteStr\"],\"properties\":{\"ByteStr\":{\"type\":\"array\",\"items\":{\"type\":\"integer\",\"format\":\"uint8\",\"minimum\":0.0}}},\"additionalProperties\":false}]},\"Constness\":{\"description\":\"Reflects [`hir::Constness`]\",\"type\":\"string\",\"enum\":[\"Const\",\"NotConst\"]},\"Context\":{\"description\":\"Context of an error\",\"oneOf\":[{\"description\":\"Error during import from THIR\",\"type\":\"string\",\"enum\":[\"Import\"]}]},\"ControlFlowKind\":{\"description\":\"This is a marker to describe what control flow is present in a loop. It is added by phase `DropReturnBreakContinue` and the information is used in `FunctionalizeLoops`. We need it to replace the control flow nodes of the AST by an encoding in the `ControlFlow` enum.\",\"oneOf\":[{\"description\":\"Contains no `return`, maybe some `break`s\",\"type\":\"string\",\"enum\":[\"BreakOnly\"]},{\"description\":\"Contains both at least one `return` and maybe some `break`s\",\"type\":\"string\",\"enum\":[\"BreakOrReturn\"]}]},\"CoverageStatus\":{\"description\":\"Reflects [`rustc_attr_data_structures::CoverageStatus`]\",\"type\":\"string\",\"enum\":[\"On\",\"Off\"]},\"CtorKind\":{\"description\":\"Reflects [`hir::def::CtorKind`]\",\"type\":\"string\",\"enum\":[\"Fn\",\"Const\"]},\"CtorOf\":{\"description\":\"Reflects [`hir::def::CtorOf`]\",\"type\":\"string\",\"enum\":[\"Struct\",\"Variant\"]},\"DebugEngineMode\":{\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Interactive\"]},{\"type\":\"object\",\"required\":[\"File\"],\"properties\":{\"File\":{\"$ref\":\"#/definitions/PathOrDash\"}},\"additionalProperties\":false}]},\"Decorated_for_ConstantExprKind\":{\"description\":\"Generic container for decorating items with a type, a span, attributes and other meta-data.\",\"type\":\"object\",\"required\":[\"attributes\",\"contents\",\"span\",\"ty\"],\"properties\":{\"attributes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute\"}},\"contents\":{\"$ref\":\"#/definitions/ConstantExprKind\"},\"hir_id\":{\"type\":[\"array\",\"null\"],\"items\":[{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}],\"maxItems\":2,\"minItems\":2},\"span\":{\"$ref\":\"#/definitions/Span\"},\"ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}},\"Decorated_for_ExprKind\":{\"description\":\"Generic container for decorating items with a type, a span, attributes and other meta-data.\",\"type\":\"object\",\"required\":[\"attributes\",\"contents\",\"span\",\"ty\"],\"properties\":{\"attributes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute\"}},\"contents\":{\"$ref\":\"#/definitions/ExprKind\"},\"hir_id\":{\"type\":[\"array\",\"null\"],\"items\":[{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}],\"maxItems\":2,\"minItems\":2},\"span\":{\"$ref\":\"#/definitions/Span\"},\"ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}},\"Decorated_for_PatKind\":{\"description\":\"Generic container for decorating items with a type, a span, attributes and other meta-data.\",\"type\":\"object\",\"required\":[\"attributes\",\"contents\",\"span\",\"ty\"],\"properties\":{\"attributes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute\"}},\"contents\":{\"$ref\":\"#/definitions/PatKind\"},\"hir_id\":{\"type\":[\"array\",\"null\"],\"items\":[{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}],\"maxItems\":2,\"minItems\":2},\"span\":{\"$ref\":\"#/definitions/Span\"},\"ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}},\"DefId\":{\"description\":\"Reflects [`rustc_hir::def_id::DefId`], augmented to also give ids to promoted constants (which have their own ad-hoc numbering scheme in rustc for now).\",\"type\":\"object\",\"required\":[\"contents\"],\"properties\":{\"contents\":{\"$ref\":\"#/definitions/Node_for_DefIdContents\"}}},\"DefId2\":{\"description\":\"A Rust `DefId`: a lighter version of [`hax_frontend_exporter::DefId`].\",\"type\":\"object\",\"required\":[\"kind\",\"krate\",\"path\"],\"properties\":{\"kind\":{\"description\":\"What kind is this definition? (e.g. an `enum`, a `const`, an assoc. `fn`...)\",\"allOf\":[{\"$ref\":\"#/definitions/DefKind\"}]},\"krate\":{\"description\":\"The crate of the definition\",\"type\":\"string\"},\"parent\":{\"description\":\"The parent `DefId`, if any. `parent` if node if and only if `path` is empty\",\"anyOf\":[{\"$ref\":\"#/definitions/DefId2\"},{\"type\":\"null\"}]},\"path\":{\"description\":\"The full path for this definition, under the crate `krate`\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/DisambiguatedDefPathItem\"}}}},\"DefIdContents\":{\"type\":\"object\",\"required\":[\"index\",\"is_local\",\"kind\",\"krate\",\"path\"],\"properties\":{\"index\":{\"description\":\"Stores rustc\'s `CrateNum`, `DefIndex` and `Promoted` raw indices. This can be useful if one needs to convert a [`DefId`] into a [`rustc_hir::def_id::DefId`]. If the promoted id is `Some`, then this `DefId` indicates the nth promoted constant associated with the item, which doesn\'t have a real `rustc::DefId`.\\n\\n**Warning: this `index` field might not be safe to use**. They are valid only for one Rustc sesssion. Please do not rely on those indices unless you cannot do otherwise.\",\"type\":\"array\",\"items\":[{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},{\"anyOf\":[{\"$ref\":\"#/definitions/PromotedId\"},{\"type\":\"null\"}]}],\"maxItems\":3,\"minItems\":3},\"is_local\":{\"type\":\"boolean\"},\"kind\":{\"description\":\"The kind of definition this `DefId` points to.\",\"allOf\":[{\"$ref\":\"#/definitions/DefKind\"}]},\"krate\":{\"type\":\"string\"},\"parent\":{\"anyOf\":[{\"$ref\":\"#/definitions/DefId\"},{\"type\":\"null\"}]},\"path\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/DisambiguatedDefPathItem\"}}}},\"DefKind\":{\"description\":\"Reflects [`rustc_hir::def::DefKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Mod\",\"Struct\",\"Union\",\"Enum\",\"Variant\",\"Trait\",\"TyAlias\",\"ForeignTy\",\"TraitAlias\",\"AssocTy\",\"TyParam\",\"Fn\",\"Const\",\"ConstParam\",\"AssocFn\",\"AssocConst\",\"ExternCrate\",\"Use\",\"ForeignMod\",\"AnonConst\",\"InlineConst\",\"OpaqueTy\",\"Field\",\"LifetimeParam\",\"GlobalAsm\",\"Closure\",\"SyntheticCoroutineBody\"]},{\"type\":\"object\",\"required\":[\"Static\"],\"properties\":{\"Static\":{\"type\":\"object\",\"required\":[\"mutability\",\"nested\",\"safety\"],\"properties\":{\"mutability\":{\"type\":\"boolean\"},\"nested\":{\"type\":\"boolean\"},\"safety\":{\"$ref\":\"#/definitions/Safety\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Ctor\"],\"properties\":{\"Ctor\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/CtorOf\"},{\"$ref\":\"#/definitions/CtorKind\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Macro\"],\"properties\":{\"Macro\":{\"$ref\":\"#/definitions/MacroKind\"}},\"additionalProperties\":false},{\"description\":\"Added by hax: promoted constants don\'t have def_ids in rustc but they do in hax.\",\"type\":\"string\",\"enum\":[\"PromotedConst\"]},{\"type\":\"object\",\"required\":[\"Impl\"],\"properties\":{\"Impl\":{\"type\":\"object\",\"required\":[\"of_trait\"],\"properties\":{\"of_trait\":{\"type\":\"boolean\"}}}},\"additionalProperties\":false}]},\"DefPathItem\":{\"description\":\"Reflects [`rustc_hir::definitions::DefPathData`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Impl\",\"ForeignMod\",\"Use\",\"GlobalAsm\",\"Closure\",\"Ctor\",\"AnonConst\",\"PromotedConst\",\"OpaqueTy\",\"SyntheticCoroutineBody\",\"NestedStatic\"]},{\"type\":\"object\",\"required\":[\"CrateRoot\"],\"properties\":{\"CrateRoot\":{\"type\":\"object\",\"required\":[\"name\"],\"properties\":{\"name\":{\"type\":\"string\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"TypeNs\"],\"properties\":{\"TypeNs\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ValueNs\"],\"properties\":{\"ValueNs\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"MacroNs\"],\"properties\":{\"MacroNs\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"LifetimeNs\"],\"properties\":{\"LifetimeNs\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"OpaqueLifetime\"],\"properties\":{\"OpaqueLifetime\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"AnonAssocTy\"],\"properties\":{\"AnonAssocTy\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"Defaultness\":{\"description\":\"Reflects [`hir::Defaultness`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Final\"]},{\"type\":\"object\",\"required\":[\"Default\"],\"properties\":{\"Default\":{\"type\":\"object\",\"required\":[\"has_value\"],\"properties\":{\"has_value\":{\"type\":\"boolean\"}}}},\"additionalProperties\":false}]},\"DelimArgs\":{\"description\":\"Reflects [`rustc_ast::ast::DelimArgs`]\",\"type\":\"object\",\"required\":[\"delim\",\"dspan\",\"tokens\"],\"properties\":{\"delim\":{\"$ref\":\"#/definitions/Delimiter\"},\"dspan\":{\"$ref\":\"#/definitions/DelimSpan\"},\"tokens\":{\"type\":\"string\"}}},\"DelimSpan\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"DelimSpan\"],\"properties\":{\"DelimSpan\":{\"type\":\"object\",\"required\":[\"todo\"],\"properties\":{\"todo\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"Delimiter\":{\"description\":\"Reflects [`rustc_ast::token::Delimiter`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Parenthesis\",\"Brace\",\"Bracket\"]},{\"type\":\"object\",\"required\":[\"Invisible\"],\"properties\":{\"Invisible\":{\"$ref\":\"#/definitions/InvisibleOrigin\"}},\"additionalProperties\":false}]},\"DeprecatedSince\":{\"description\":\"Reflects [`rustc_attr_data_structures::DeprecatedSince`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Future\",\"Unspecified\",\"Err\"]},{\"type\":\"object\",\"required\":[\"RustcVersion\"],\"properties\":{\"RustcVersion\":{\"$ref\":\"#/definitions/RustcVersion\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"NonStandard\"],\"properties\":{\"NonStandard\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"Deprecation\":{\"description\":\"Reflects [`rustc_attr_data_structures::Deprecation`]\",\"type\":\"object\",\"required\":[\"since\"],\"properties\":{\"note\":{\"type\":[\"string\",\"null\"]},\"since\":{\"$ref\":\"#/definitions/DeprecatedSince\"},\"suggestion\":{\"type\":[\"string\",\"null\"]}}},\"DepsKind\":{\"type\":\"string\",\"enum\":[\"Transitive\",\"Shallow\",\"None\"]},\"Diagnostic\":{\"description\":\"Error diagnostic\",\"type\":\"object\",\"required\":[\"info\",\"node\"],\"properties\":{\"info\":{\"$ref\":\"#/definitions/DiagnosticInfo\"},\"node\":{\"$ref\":\"#/definitions/Fragment\"}}},\"DiagnosticInfo\":{\"description\":\"Error description and location\",\"type\":\"object\",\"required\":[\"context\",\"kind\",\"span\"],\"properties\":{\"context\":{\"description\":\"Diagnostic context\",\"allOf\":[{\"$ref\":\"#/definitions/Context\"}]},\"kind\":{\"description\":\"Error type\",\"allOf\":[{\"$ref\":\"#/definitions/Kind\"}]},\"span\":{\"description\":\"Location in the source code\",\"allOf\":[{\"$ref\":\"#/definitions/Span2\"}]}}},\"Diagnostics\":{\"type\":\"object\",\"required\":[\"context\",\"kind\",\"span\"],\"properties\":{\"context\":{\"type\":\"string\"},\"kind\":{\"$ref\":\"#/definitions/Kind\"},\"owner_id\":{\"anyOf\":[{\"$ref\":\"#/definitions/DefId\"},{\"type\":\"null\"}]},\"span\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Span\"}}}},\"DisambiguatedDefPathItem\":{\"description\":\"Reflects [`rustc_hir::definitions::DisambiguatedDefPathData`]\",\"type\":\"object\",\"required\":[\"data\",\"disambiguator\"],\"properties\":{\"data\":{\"$ref\":\"#/definitions/DefPathItem\"},\"disambiguator\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0}}},\"DiscriminantDefinition\":{\"description\":\"Reflects [`ty::VariantDiscr`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Explicit\"],\"properties\":{\"Explicit\":{\"$ref\":\"#/definitions/DefId\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Relative\"],\"properties\":{\"Relative\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0}},\"additionalProperties\":false}]},\"DocCommentKind\":{\"description\":\"Represents the kind of a doc comment.\",\"oneOf\":[{\"description\":\"Single line comment (`//...`)\",\"type\":\"string\",\"enum\":[\"Line\"]},{\"description\":\"Block comment (`/*...*/`)\",\"type\":\"string\",\"enum\":[\"Block\"]}]},\"DropData\":{\"oneOf\":[{\"description\":\"A drop that does nothing, e.g. for scalars and pointers.\",\"type\":\"string\",\"enum\":[\"Noop\"]},{\"description\":\"An implicit `Drop` local clause, if the `resolve_drop_bounds` option is `false`. If that option is `true`, we\'ll add `Drop` bounds to every type param, and use that to resolve `Drop` impls of generics. If it\'s `false`, we use this variant to indicate that the drop clause comes from a generic or associated type.\",\"type\":\"string\",\"enum\":[\"Implicit\"]},{\"description\":\"The implicit `Drop` impl that exists for every type without an explicit `Drop` impl. The virtual impl is considered to have one `T: Drop` bound for each generic argument of the target type; it then simply drops each field in order.\",\"type\":\"object\",\"required\":[\"Glue\"],\"properties\":{\"Glue\":{\"type\":\"object\",\"required\":[\"impl_exprs\",\"ty\"],\"properties\":{\"impl_exprs\":{\"description\":\"The `ImplExpr`s for the `T: Drop` bounds of the virtual impl. There is one for each generic argument, in order.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ImplExpr\"}},\"ty\":{\"description\":\"The type we\'re generating glue for.\",\"allOf\":[{\"$ref\":\"#/definitions/Node_for_TyKind\"}]}}}},\"additionalProperties\":false}]},\"DynKind\":{\"description\":\"Reflects [`ty::DynKind`]\",\"type\":\"string\",\"enum\":[\"Dyn\"]},\"DynTraitGoal\":{\"description\":\"A `dyn` trait. The generic arguments are known but the actual type implementing the trait is known dynamically.\\n\\n# Example: ```rust,ignore dyn Tr<A, B> ```\",\"type\":\"object\",\"required\":[\"non_self_args\",\"trait_\"],\"properties\":{\"non_self_args\":{\"description\":\"`A, B` in the example above\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericValue\"}},\"trait_\":{\"description\":\"`Tr` in the example above\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]}}},\"EarlyParamRegion\":{\"description\":\"Reflects [`ty::EarlyParamRegion`]\",\"type\":\"object\",\"required\":[\"index\",\"name\"],\"properties\":{\"index\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},\"name\":{\"type\":\"string\"}}},\"EmptyArgsExtension\":{\"type\":\"object\"},\"EmptySubcommandExtension\":{\"type\":\"string\",\"enum\":[]},\"EngineOptions\":{\"type\":\"object\",\"required\":[\"backend\",\"hax_version\",\"impl_infos\",\"input\"],\"properties\":{\"backend\":{\"$ref\":\"#/definitions/BackendOptions_for_Null\"},\"hax_version\":{\"type\":\"string\"},\"impl_infos\":{\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/DefId\"},{\"$ref\":\"#/definitions/ImplInfos\"}],\"maxItems\":2,\"minItems\":2}},\"input\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Item_for_Decorated_for_ExprKind\"}}}},\"ErrorGuaranteed\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"ErrorGuaranteed\"],\"properties\":{\"ErrorGuaranteed\":{\"type\":\"object\",\"required\":[\"todo\"],\"properties\":{\"todo\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"ErrorNode\":{\"description\":\"Represent a node of the AST where an error occured.\",\"type\":\"object\",\"required\":[\"diagnostics\",\"fragment\"],\"properties\":{\"diagnostics\":{\"description\":\"The error(s) encountered.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Diagnostic\"}},\"fragment\":{\"description\":\"The node from the AST at the time something failed\",\"allOf\":[{\"$ref\":\"#/definitions/Fragment\"}]}}},\"ExistentialPredicate\":{\"description\":\"A predicate without `Self`, for use in `dyn Trait`.\\n\\nReflects [`ty::ExistentialPredicate`]\",\"oneOf\":[{\"description\":\"E.g. `From<u64>`. Note that this isn\'t `T: From<u64>` with a given `T`, this is just `From<u64>`. Could be written `?: From<u64>`.\",\"type\":\"object\",\"required\":[\"Trait\"],\"properties\":{\"Trait\":{\"$ref\":\"#/definitions/ExistentialTraitRef\"}},\"additionalProperties\":false},{\"description\":\"E.g. `Iterator::Item = u64`. Could be written `<? as Iterator>::Item = u64`.\",\"type\":\"object\",\"required\":[\"Projection\"],\"properties\":{\"Projection\":{\"$ref\":\"#/definitions/ExistentialProjection\"}},\"additionalProperties\":false},{\"description\":\"E.g. `Send`.\",\"type\":\"object\",\"required\":[\"AutoTrait\"],\"properties\":{\"AutoTrait\":{\"$ref\":\"#/definitions/DefId\"}},\"additionalProperties\":false}]},\"ExistentialProjection\":{\"description\":\"Reflects [`rustc_type_ir::ExistentialProjection`]\",\"type\":\"object\",\"required\":[\"args\",\"def_id\",\"term\"],\"properties\":{\"args\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericArg\"}},\"def_id\":{\"$ref\":\"#/definitions/DefId\"},\"term\":{\"$ref\":\"#/definitions/Term\"}}},\"ExistentialTraitRef\":{\"description\":\"Reflects [`rustc_type_ir::ExistentialTraitRef`]\",\"type\":\"object\",\"required\":[\"args\",\"def_id\"],\"properties\":{\"args\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericArg\"}},\"def_id\":{\"$ref\":\"#/definitions/DefId\"}}},\"ExplicitDefId\":{\"description\":\"An [`ExpliciDefId`] is a Rust [`DefId`] tagged withg some disambiguation metadata.\\n\\n[`DefId`] can be ambiguous, consider the following Rust code:\\n\\n```rust struct S; fn f() -> S { S } ```\\n\\nHere, the return type of `f` (that is, `S`) and the constructor `S` in the body of `f` refer to the exact same identifier `mycrate::S`. Yet, they denote two very different objects: a type versus a constructor.\\n\\n[`ExplicitDefId`] clears up this ambiguity, making constructors and types two separate things.\\n\\nAlso, an [`ExplicitDefId`] always points to an item: an [`ExplicitDefId`] is never pointing to a crate alone.\",\"type\":\"object\",\"required\":[\"def_id\",\"is_constructor\"],\"properties\":{\"def_id\":{\"description\":\"The `DefId` itself\",\"allOf\":[{\"$ref\":\"#/definitions/DefId2\"}]},\"is_constructor\":{\"description\":\"Is this `DefId` a constructor?\",\"type\":\"boolean\"}}},\"ExportBodyKind\":{\"type\":\"string\",\"enum\":[\"Thir\",\"MirBuilt\"]},\"Expr\":{\"description\":\"A typed expression with metadata.\",\"type\":\"object\",\"required\":[\"kind\",\"meta\",\"ty\"],\"properties\":{\"kind\":{\"description\":\"The kind of expression.\",\"allOf\":[{\"$ref\":\"#/definitions/ExprKind2\"}]},\"meta\":{\"description\":\"Source span and attributes.\",\"allOf\":[{\"$ref\":\"#/definitions/Metadata\"}]},\"ty\":{\"description\":\"The type of this expression.\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]}}},\"ExprKind\":{\"description\":\"Reflects [`thir::ExprKind`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Box\"],\"properties\":{\"Box\":{\"type\":\"object\",\"required\":[\"value\"],\"properties\":{\"value\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"description\":\"Resugared macros calls. This is deprecated: see <https://github.com/hacspec/hax/issues/145>.\",\"type\":\"object\",\"required\":[\"If\"],\"properties\":{\"If\":{\"type\":\"object\",\"required\":[\"cond\",\"if_then_scope\",\"then\"],\"properties\":{\"cond\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"else_opt\":{\"anyOf\":[{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},{\"type\":\"null\"}]},\"if_then_scope\":{\"$ref\":\"#/definitions/Scope\"},\"then\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"description\":\"A call to a function or a method.\\n\\nExample: `f(0i8)`, where `f` has signature `fn f<T: Clone>(t: T) -> ()`.\",\"type\":\"object\",\"required\":[\"Call\"],\"properties\":{\"Call\":{\"type\":\"object\",\"required\":[\"args\",\"fn_span\",\"from_hir_call\",\"fun\",\"ty\"],\"properties\":{\"args\":{\"description\":\"The arguments given to the function.\\n\\nExample: for the call `f(0i8)`, this is `[0i8]`.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}},\"fn_span\":{\"$ref\":\"#/definitions/Span\"},\"from_hir_call\":{\"type\":\"boolean\"},\"fun\":{\"description\":\"The function itself. This can be something else than a name, e.g. a closure.\\n\\nExample: for the call `f(0i8)`, this is `f`.\\n\\nIn the case of a call to a function that\'s not a closure/fn pointer, the expression will be a `GlobalName` that contains all the information about generics and whether this is a direct call or a method call.\",\"allOf\":[{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}]},\"ty\":{\"description\":\"The type of the function, substitution applied.\\n\\nExample: for the call `f(0i8)`, this is `i8 -> ()`.\",\"allOf\":[{\"$ref\":\"#/definitions/Node_for_TyKind\"}]}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Deref\"],\"properties\":{\"Deref\":{\"type\":\"object\",\"required\":[\"arg\"],\"properties\":{\"arg\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Binary\"],\"properties\":{\"Binary\":{\"type\":\"object\",\"required\":[\"lhs\",\"op\",\"rhs\"],\"properties\":{\"lhs\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"op\":{\"$ref\":\"#/definitions/BinOp\"},\"rhs\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"LogicalOp\"],\"properties\":{\"LogicalOp\":{\"type\":\"object\",\"required\":[\"lhs\",\"op\",\"rhs\"],\"properties\":{\"lhs\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"op\":{\"$ref\":\"#/definitions/LogicalOp\"},\"rhs\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Unary\"],\"properties\":{\"Unary\":{\"type\":\"object\",\"required\":[\"arg\",\"op\"],\"properties\":{\"arg\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"op\":{\"$ref\":\"#/definitions/UnOp\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Cast\"],\"properties\":{\"Cast\":{\"type\":\"object\",\"required\":[\"source\"],\"properties\":{\"source\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Use\"],\"properties\":{\"Use\":{\"type\":\"object\",\"required\":[\"source\"],\"properties\":{\"source\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"NeverToAny\"],\"properties\":{\"NeverToAny\":{\"type\":\"object\",\"required\":[\"source\"],\"properties\":{\"source\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"PointerCoercion\"],\"properties\":{\"PointerCoercion\":{\"type\":\"object\",\"required\":[\"cast\",\"source\"],\"properties\":{\"cast\":{\"$ref\":\"#/definitions/PointerCoercion\"},\"source\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Loop\"],\"properties\":{\"Loop\":{\"type\":\"object\",\"required\":[\"body\"],\"properties\":{\"body\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Match\"],\"properties\":{\"Match\":{\"type\":\"object\",\"required\":[\"arms\",\"scrutinee\"],\"properties\":{\"arms\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Arm\"}},\"scrutinee\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Let\"],\"properties\":{\"Let\":{\"type\":\"object\",\"required\":[\"expr\",\"pat\"],\"properties\":{\"expr\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"pat\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Block\"],\"properties\":{\"Block\":{\"description\":\"Reflects [`thir::Block`]\",\"type\":\"object\",\"required\":[\"region_scope\",\"safety_mode\",\"span\",\"stmts\",\"targeted_by_break\"],\"properties\":{\"expr\":{\"anyOf\":[{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},{\"type\":\"null\"}]},\"region_scope\":{\"$ref\":\"#/definitions/Scope\"},\"safety_mode\":{\"$ref\":\"#/definitions/BlockSafety\"},\"span\":{\"$ref\":\"#/definitions/Span\"},\"stmts\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Stmt\"}},\"targeted_by_break\":{\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Assign\"],\"properties\":{\"Assign\":{\"type\":\"object\",\"required\":[\"lhs\",\"rhs\"],\"properties\":{\"lhs\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"rhs\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"AssignOp\"],\"properties\":{\"AssignOp\":{\"type\":\"object\",\"required\":[\"lhs\",\"op\",\"rhs\"],\"properties\":{\"lhs\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"op\":{\"$ref\":\"#/definitions/AssignOp\"},\"rhs\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Field\"],\"properties\":{\"Field\":{\"type\":\"object\",\"required\":[\"field\",\"lhs\"],\"properties\":{\"field\":{\"$ref\":\"#/definitions/DefId\"},\"lhs\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"TupleField\"],\"properties\":{\"TupleField\":{\"type\":\"object\",\"required\":[\"field\",\"lhs\"],\"properties\":{\"field\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},\"lhs\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Index\"],\"properties\":{\"Index\":{\"type\":\"object\",\"required\":[\"index\",\"lhs\"],\"properties\":{\"index\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"lhs\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"VarRef\"],\"properties\":{\"VarRef\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"$ref\":\"#/definitions/LocalIdent\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ConstRef\"],\"properties\":{\"ConstRef\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"$ref\":\"#/definitions/ParamConst\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"GlobalName\"],\"properties\":{\"GlobalName\":{\"type\":\"object\",\"required\":[\"item\"],\"properties\":{\"constructor\":{\"anyOf\":[{\"$ref\":\"#/definitions/VariantInformations\"},{\"type\":\"null\"}]},\"item\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"UpvarRef\"],\"properties\":{\"UpvarRef\":{\"type\":\"object\",\"required\":[\"closure_def_id\",\"var_hir_id\"],\"properties\":{\"closure_def_id\":{\"$ref\":\"#/definitions/DefId\"},\"var_hir_id\":{\"$ref\":\"#/definitions/LocalIdent\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Borrow\"],\"properties\":{\"Borrow\":{\"type\":\"object\",\"required\":[\"arg\",\"borrow_kind\"],\"properties\":{\"arg\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"borrow_kind\":{\"$ref\":\"#/definitions/BorrowKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"RawBorrow\"],\"properties\":{\"RawBorrow\":{\"type\":\"object\",\"required\":[\"arg\",\"mutability\"],\"properties\":{\"arg\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"mutability\":{\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Break\"],\"properties\":{\"Break\":{\"type\":\"object\",\"required\":[\"label\"],\"properties\":{\"label\":{\"$ref\":\"#/definitions/Scope\"},\"value\":{\"anyOf\":[{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},{\"type\":\"null\"}]}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Continue\"],\"properties\":{\"Continue\":{\"type\":\"object\",\"required\":[\"label\"],\"properties\":{\"label\":{\"$ref\":\"#/definitions/Scope\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Return\"],\"properties\":{\"Return\":{\"type\":\"object\",\"properties\":{\"value\":{\"anyOf\":[{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},{\"type\":\"null\"}]}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ConstBlock\"],\"properties\":{\"ConstBlock\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Repeat\"],\"properties\":{\"Repeat\":{\"type\":\"object\",\"required\":[\"count\",\"value\"],\"properties\":{\"count\":{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"},\"value\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Array\"],\"properties\":{\"Array\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Tuple\"],\"properties\":{\"Tuple\":{\"type\":\"object\",\"required\":[\"fields\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Adt\"],\"properties\":{\"Adt\":{\"$ref\":\"#/definitions/AdtExpr\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"PlaceTypeAscription\"],\"properties\":{\"PlaceTypeAscription\":{\"type\":\"object\",\"required\":[\"source\"],\"properties\":{\"source\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"user_ty\":{\"anyOf\":[{\"$ref\":\"#/definitions/Canonical_for_UserType\"},{\"type\":\"null\"}]}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ValueTypeAscription\"],\"properties\":{\"ValueTypeAscription\":{\"type\":\"object\",\"required\":[\"source\"],\"properties\":{\"source\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"user_ty\":{\"anyOf\":[{\"$ref\":\"#/definitions/Canonical_for_UserType\"},{\"type\":\"null\"}]}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Closure\"],\"properties\":{\"Closure\":{\"type\":\"object\",\"required\":[\"body\",\"params\",\"upvars\"],\"properties\":{\"body\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"movability\":{\"anyOf\":[{\"$ref\":\"#/definitions/Movability\"},{\"type\":\"null\"}]},\"params\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Param\"}},\"upvars\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Literal\"],\"properties\":{\"Literal\":{\"type\":\"object\",\"required\":[\"lit\",\"neg\"],\"properties\":{\"lit\":{\"$ref\":\"#/definitions/Spanned_for_LitKind\"},\"neg\":{\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ZstLiteral\"],\"properties\":{\"ZstLiteral\":{\"type\":\"object\",\"properties\":{\"user_ty\":{\"anyOf\":[{\"$ref\":\"#/definitions/Canonical_for_UserType\"},{\"type\":\"null\"}]}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"NamedConst\"],\"properties\":{\"NamedConst\":{\"type\":\"object\",\"required\":[\"item\"],\"properties\":{\"item\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"},\"user_ty\":{\"anyOf\":[{\"$ref\":\"#/definitions/Canonical_for_UserType\"},{\"type\":\"null\"}]}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ConstParam\"],\"properties\":{\"ConstParam\":{\"type\":\"object\",\"required\":[\"def_id\",\"param\"],\"properties\":{\"def_id\":{\"$ref\":\"#/definitions/DefId\"},\"param\":{\"$ref\":\"#/definitions/ParamConst\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"StaticRef\"],\"properties\":{\"StaticRef\":{\"type\":\"object\",\"required\":[\"alloc_id\",\"def_id\",\"ty\"],\"properties\":{\"alloc_id\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0},\"def_id\":{\"$ref\":\"#/definitions/DefId\"},\"ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Yield\"],\"properties\":{\"Yield\":{\"type\":\"object\",\"required\":[\"value\"],\"properties\":{\"value\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Todo\"],\"properties\":{\"Todo\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"ExprKind2\":{\"description\":\"Describes the shape of an expression.\",\"oneOf\":[{\"description\":\"If expression.\\n\\n# Example: `if x > 0 { 1 } else { 2 }`\",\"type\":\"object\",\"required\":[\"If\"],\"properties\":{\"If\":{\"type\":\"object\",\"required\":[\"condition\",\"then\"],\"properties\":{\"condition\":{\"description\":\"The boolean condition (`x > 0` in the example).\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"else_\":{\"description\":\"An optional else branch (`Some(2)`in the example).\",\"anyOf\":[{\"$ref\":\"#/definitions/Expr\"},{\"type\":\"null\"}]},\"then\":{\"description\":\"The then branch (`1` in the example).\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]}}}},\"additionalProperties\":false},{\"description\":\"Function application.\\n\\n# Example: `f(x, y)`\",\"type\":\"object\",\"required\":[\"App\"],\"properties\":{\"App\":{\"type\":\"object\",\"required\":[\"args\",\"bounds_impls\",\"generic_args\",\"head\"],\"properties\":{\"args\":{\"description\":\"The arguments applied to the function.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Expr\"}},\"bounds_impls\":{\"description\":\"If the function requires generic bounds to be called, `bounds_impls` is a vector of impl. expressions for those bounds.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ImplExpr2\"}},\"generic_args\":{\"description\":\"The generic arguments applied to the function.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericValue\"}},\"head\":{\"description\":\"The head of the function application (or, which function do we apply?).\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"trait_\":{\"description\":\"If we apply an associated function, contains the impl. expr used.\",\"type\":[\"array\",\"null\"],\"items\":[{\"$ref\":\"#/definitions/ImplExpr2\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericValue\"}}],\"maxItems\":2,\"minItems\":2}}}},\"additionalProperties\":false},{\"description\":\"A literal value.\\n\\n# Example: `42`, `\\\"hello\\\"`\",\"type\":\"object\",\"required\":[\"Literal\"],\"properties\":{\"Literal\":{\"$ref\":\"#/definitions/Literal\"}},\"additionalProperties\":false},{\"description\":\"An array literal.\\n\\n# Example: `[1, 2, 3]`\",\"type\":\"object\",\"required\":[\"Array\"],\"properties\":{\"Array\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Expr\"}}},\"additionalProperties\":false},{\"description\":\"A constructor application\\n\\n# Example: ```rust,ignore MyEnum::MyVariant { x : 1, ...base } ``````\",\"type\":\"object\",\"required\":[\"Construct\"],\"properties\":{\"Construct\":{\"type\":\"object\",\"required\":[\"constructor\",\"fields\",\"is_record\",\"is_struct\"],\"properties\":{\"base\":{\"description\":\"The base expression, if any. (`Some(base)` in the example)\",\"anyOf\":[{\"$ref\":\"#/definitions/Expr\"},{\"type\":\"null\"}]},\"constructor\":{\"description\":\"The identifier of the constructor we are building (`MyEnum::MyVariant` in the example).\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]},\"fields\":{\"description\":\"A list of fields (`[(x, 1)]` in the example).\",\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/GlobalId\"},{\"$ref\":\"#/definitions/Expr\"}],\"maxItems\":2,\"minItems\":2}},\"is_record\":{\"description\":\"Are we constructing a record? E.g. a struct or a variant with named fields. (`true` in the example)\",\"type\":\"boolean\"},\"is_struct\":{\"description\":\"Is this a struct? Neaning, *not* a variant from an enum. (`false` in the example)\",\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"description\":\"A `match`` expression.\\n\\n# Example: ```rust,ignore match x { pat1 => expr1, pat2 => expr2, } ```\",\"type\":\"object\",\"required\":[\"Match\"],\"properties\":{\"Match\":{\"type\":\"object\",\"required\":[\"arms\",\"scrutinee\"],\"properties\":{\"arms\":{\"description\":\"The arms of the match. (`pat1 => expr1` and `pat2 => expr2` in the example)\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Arm2\"}},\"scrutinee\":{\"description\":\"The expression on which we are matching. (`x` in the example)\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]}}}},\"additionalProperties\":false},{\"description\":\"A tuple literal.\\n\\n# Example: `(a, b)`\",\"type\":\"object\",\"required\":[\"Tuple\"],\"properties\":{\"Tuple\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Expr\"}}},\"additionalProperties\":false},{\"description\":\"A reference expression.\\n\\n# Examples: - `&x` \u{2192} `mutable: false` - `&mut x` \u{2192} `mutable: true`\",\"type\":\"object\",\"required\":[\"Borrow\"],\"properties\":{\"Borrow\":{\"type\":\"object\",\"required\":[\"inner\",\"mutable\"],\"properties\":{\"inner\":{\"description\":\"The expression we are borrowing\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"mutable\":{\"description\":\"Is the borrow mutable?\",\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"description\":\"Raw borrow\\n\\n# Example: `*const u8`\",\"type\":\"object\",\"required\":[\"AddressOf\"],\"properties\":{\"AddressOf\":{\"type\":\"object\",\"required\":[\"inner\",\"mutable\"],\"properties\":{\"inner\":{\"description\":\"The expression on which we take a pointer\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"mutable\":{\"description\":\"Is the raw pointer mutable?\",\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"description\":\"A dereference\\n\\n# Example: `*x`\",\"type\":\"object\",\"required\":[\"Deref\"],\"properties\":{\"Deref\":{\"$ref\":\"#/definitions/Expr\"}},\"additionalProperties\":false},{\"description\":\"A `let` expression used in expressions.\\n\\n# Example: `let x = 1; x + 1`\",\"type\":\"object\",\"required\":[\"Let\"],\"properties\":{\"Let\":{\"type\":\"object\",\"required\":[\"body\",\"lhs\",\"rhs\"],\"properties\":{\"body\":{\"description\":\"The body of the `let`. (`x + 1` in the example)\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"lhs\":{\"description\":\"The left-hand side of the `let` expression. (`x` in the example)\",\"allOf\":[{\"$ref\":\"#/definitions/Pat\"}]},\"rhs\":{\"description\":\"The right-hand side of the `let` expression. (`1` in the example)\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]}}}},\"additionalProperties\":false},{\"description\":\"A global identifier.\\n\\n# Example: `std::mem::drop`\",\"type\":\"object\",\"required\":[\"GlobalId\"],\"properties\":{\"GlobalId\":{\"$ref\":\"#/definitions/GlobalId\"}},\"additionalProperties\":false},{\"description\":\"A local variable.\\n\\n# Example: `x`\",\"type\":\"object\",\"required\":[\"LocalId\"],\"properties\":{\"LocalId\":{\"$ref\":\"#/definitions/LocalId\"}},\"additionalProperties\":false},{\"description\":\"Type ascription\",\"type\":\"object\",\"required\":[\"Ascription\"],\"properties\":{\"Ascription\":{\"type\":\"object\",\"required\":[\"e\",\"ty\"],\"properties\":{\"e\":{\"description\":\"The expression being ascribed.\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"ty\":{\"description\":\"The type\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]}}}},\"additionalProperties\":false},{\"description\":\"Variable mutation\\n\\n# Example: `x = 1`\",\"type\":\"object\",\"required\":[\"Assign\"],\"properties\":{\"Assign\":{\"type\":\"object\",\"required\":[\"lhs\",\"value\"],\"properties\":{\"lhs\":{\"description\":\"the left-hand side (place) of the assign\",\"allOf\":[{\"$ref\":\"#/definitions/Lhs\"}]},\"value\":{\"description\":\"The value we are assigning\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]}}}},\"additionalProperties\":false},{\"description\":\"Loop\\n\\n# Example: `\'label: loop { body }`\",\"type\":\"object\",\"required\":[\"Loop\"],\"properties\":{\"Loop\":{\"type\":\"object\",\"required\":[\"body\",\"kind\"],\"properties\":{\"body\":{\"description\":\"The body of the loop.\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"control_flow\":{\"description\":\"What kind of control flow is performed by this loop?\",\"anyOf\":[{\"$ref\":\"#/definitions/ControlFlowKind\"},{\"type\":\"null\"}]},\"kind\":{\"description\":\"The kind of loop (e.g. `while`, `loop`, `for`...).\",\"allOf\":[{\"$ref\":\"#/definitions/LoopKind\"}]},\"label\":{\"description\":\"Optional loop label.\",\"anyOf\":[{\"$ref\":\"#/definitions/Symbol\"},{\"type\":\"null\"}]},\"state\":{\"description\":\"An optional loop state, that makes explicit the state mutated by the loop.\",\"anyOf\":[{\"$ref\":\"#/definitions/LoopState\"},{\"type\":\"null\"}]}}}},\"additionalProperties\":false},{\"description\":\"The `break` exppression, that breaks out of a loop.\\n\\n# Example: `break \'label 3`\",\"type\":\"object\",\"required\":[\"Break\"],\"properties\":{\"Break\":{\"type\":\"object\",\"required\":[\"value\"],\"properties\":{\"label\":{\"description\":\"What loop shall we break? By default, the parent enclosing loop.\",\"anyOf\":[{\"$ref\":\"#/definitions/Symbol\"},{\"type\":\"null\"}]},\"value\":{\"description\":\"The value we break with. By default, this is `()`.\\n\\n# Example: ```rust,ignore loop { break 3; } + 3 ```\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]}}}},\"additionalProperties\":false},{\"description\":\"Return from a function.\\n\\n# Example: `return 1`\",\"type\":\"object\",\"required\":[\"Return\"],\"properties\":{\"Return\":{\"type\":\"object\",\"required\":[\"value\"],\"properties\":{\"value\":{\"description\":\"The expression we return (`1` in the example).\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]}}}},\"additionalProperties\":false},{\"description\":\"Continue (go to next loop iteration)\\n\\n# Example: `continue \'label`\",\"type\":\"object\",\"required\":[\"Continue\"],\"properties\":{\"Continue\":{\"type\":\"object\",\"properties\":{\"label\":{\"description\":\"The loop we continue.\",\"anyOf\":[{\"$ref\":\"#/definitions/Symbol\"},{\"type\":\"null\"}]}}}},\"additionalProperties\":false},{\"description\":\"Closure (anonymous function)\\n\\n# Example: `|x| x`\",\"type\":\"object\",\"required\":[\"Closure\"],\"properties\":{\"Closure\":{\"type\":\"object\",\"required\":[\"body\",\"captures\",\"params\"],\"properties\":{\"body\":{\"description\":\"The body of the closure\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"captures\":{\"description\":\"The captured expressions\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Expr\"}},\"params\":{\"description\":\"The parameters of the closure\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Pat\"}}}}},\"additionalProperties\":false},{\"description\":\"Block of safe or unsafe expression\\n\\n# Example: `unsafe { ... }`\",\"type\":\"object\",\"required\":[\"Block\"],\"properties\":{\"Block\":{\"type\":\"object\",\"required\":[\"body\",\"safety_mode\"],\"properties\":{\"body\":{\"description\":\"The body of the block.\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"safety_mode\":{\"description\":\"The safety of the block.\",\"allOf\":[{\"$ref\":\"#/definitions/SafetyKind\"}]}}}},\"additionalProperties\":false},{\"description\":\"A quote is an inlined piece of backend code.\",\"type\":\"object\",\"required\":[\"Quote\"],\"properties\":{\"Quote\":{\"type\":\"object\",\"required\":[\"contents\"],\"properties\":{\"contents\":{\"description\":\"The contents of the quote.\",\"allOf\":[{\"$ref\":\"#/definitions/Quote\"}]}}}},\"additionalProperties\":false},{\"description\":\"A resugared expression. This variant is introduced before printing only. Phases must not produce this variant.\",\"type\":\"object\",\"required\":[\"Resugared\"],\"properties\":{\"Resugared\":{\"$ref\":\"#/definitions/ResugaredExprKind\"}},\"additionalProperties\":false},{\"description\":\"Fallback constructor to carry errors.\",\"type\":\"object\",\"required\":[\"Error\"],\"properties\":{\"Error\":{\"$ref\":\"#/definitions/ErrorNode\"}},\"additionalProperties\":false}]},\"ExtensibleOptions_for_Null\":{\"type\":\"object\",\"required\":[\"cargo_flags\",\"command\",\"deps\",\"extension\",\"force_cargo_build\",\"inline_macro_calls\",\"message_format\",\"no_custom_target_directory\"],\"properties\":{\"cargo_flags\":{\"description\":\"Semi-colon terminated list of arguments to pass to the `cargo build` invocation. For example, to apply this program on a package `foo`, use `-C -p foo ;`. (make sure to escape `;` correctly in your shell)\",\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"command\":{\"$ref\":\"#/definitions/Command_for_Null\"},\"deps\":{\"description\":\"Apply the command to every local package of the dependency closure. By default, the command is only applied to the primary packages (i.e. the package(s) of the current directory, or the ones selected with cargo options like `-C -p <PKG> ;`).\",\"type\":\"boolean\"},\"extension\":{\"$ref\":\"#/definitions/EmptyArgsExtension\"},\"force_cargo_build\":{\"description\":\"`cargo` caching is enable by default, this flag disables it.\",\"allOf\":[{\"$ref\":\"#/definitions/ForceCargoBuild\"}]},\"inline_macro_calls\":{\"description\":\"Replace the expansion of each macro matching PATTERN by their invocation. PATTERN denotes a rust path (i.e. `A::B::c`) in which glob patterns are allowed. The glob pattern * matches any name, the glob pattern ** matches zero, one or more names. For instance, `A::B::C::D::X` and `A::E::F::D::Y` matches `A::**::D::*`.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Namespace\"}},\"message_format\":{\"description\":\"Diagnostic format. Sets `cargo`\'s `--message-format` as well, if not present.\",\"allOf\":[{\"$ref\":\"#/definitions/MessageFormat\"}]},\"no_custom_target_directory\":{\"description\":\"By default, hax uses `$CARGO_TARGET_DIR/hax` as target folder, to avoid recompilation when working both with `cargo hax` and `cargo build` (or, e.g. `rust-analyzer`). This option disables this behavior.\",\"type\":\"boolean\"}}},\"ExternAbi\":{\"description\":\"Reflects [`rustc_abi::ExternAbi`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Rust\"]},{\"type\":\"object\",\"required\":[\"C\"],\"properties\":{\"C\":{\"type\":\"object\",\"required\":[\"unwind\"],\"properties\":{\"unwind\":{\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Other\"],\"properties\":{\"Other\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"FStarOptions_for_Null\":{\"type\":\"object\",\"required\":[\"cli_extension\",\"fuel\",\"ifuel\",\"interfaces\",\"line_width\",\"z3rlimit\"],\"properties\":{\"cli_extension\":{\"$ref\":\"#/definitions/EmptyArgsExtension\"},\"fuel\":{\"description\":\"Number of unrolling of recursive functions to try\",\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},\"ifuel\":{\"description\":\"Number of unrolling of inductive datatypes to try\",\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},\"interfaces\":{\"description\":\"Modules for which Hax should extract interfaces (`*.fsti` files) in supplement to implementations (`*.fst` files). By default we extract no interface, only implementations. If a item is signature only (see the `+:` prefix of the `--include_namespaces` flag of the `into` subcommand), then its namespace is extracted with an interface. This flag expects a space-separated list of inclusion clauses. An inclusion clause is a Rust path prefixed with `+`, `+!` or `-`. `-` means implementation only, `+!` means interface only and `+` means implementation and interface. Rust path chunks can be either a concrete string, or a glob (just like bash globs, but with Rust paths).\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/InclusionClause\"}},\"line_width\":{\"type\":\"integer\",\"format\":\"uint16\",\"minimum\":0.0},\"z3rlimit\":{\"description\":\"Set the Z3 per-query resource limit\",\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0}}},\"FakeBorrowKind\":{\"description\":\"Reflects [`rustc_middle::mir::FakeBorrowKind`]\",\"oneOf\":[{\"description\":\"A shared (deep) borrow. Data must be immutable and is aliasable.\",\"type\":\"string\",\"enum\":[\"Deep\"]},{\"description\":\"The immediately borrowed place must be immutable, but projections from it don\'t need to be. This is used to prevent match guards from replacing the scrutinee. For example, a fake borrow of `a.b` doesn\'t conflict with a mutable borrow of `a.b.c`.\",\"type\":\"string\",\"enum\":[\"Shallow\"]}]},\"FieldExpr\":{\"description\":\"A field expression: a field name along with a value\",\"type\":\"object\",\"required\":[\"field\",\"value\"],\"properties\":{\"field\":{\"$ref\":\"#/definitions/DefId\"},\"value\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}}},\"FieldPat\":{\"description\":\"A field pattern: a field name along with a pattern\",\"type\":\"object\",\"required\":[\"field\",\"pattern\"],\"properties\":{\"field\":{\"$ref\":\"#/definitions/DefId\"},\"pattern\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"}}},\"File\":{\"type\":\"object\",\"required\":[\"contents\",\"path\"],\"properties\":{\"contents\":{\"type\":\"string\"},\"path\":{\"type\":\"string\"},\"sourcemap\":{\"anyOf\":[{\"$ref\":\"#/definitions/SourceMap\"},{\"type\":\"null\"}]}}},\"FileName\":{\"description\":\"Reflects [`rustc_span::FileName`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Real\"],\"properties\":{\"Real\":{\"$ref\":\"#/definitions/RealFileName\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"CfgSpec\"],\"properties\":{\"CfgSpec\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Anon\"],\"properties\":{\"Anon\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"MacroExpansion\"],\"properties\":{\"MacroExpansion\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ProcMacroSourceCode\"],\"properties\":{\"ProcMacroSourceCode\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"CliCrateAttr\"],\"properties\":{\"CliCrateAttr\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Custom\"],\"properties\":{\"Custom\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"DocTest\"],\"properties\":{\"DocTest\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"InlineAsm\"],\"properties\":{\"InlineAsm\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0}},\"additionalProperties\":false}]},\"FloatKind\":{\"description\":\"Float types\",\"oneOf\":[{\"description\":\"16 bits float\",\"type\":\"string\",\"enum\":[\"F16\"]},{\"description\":\"32 bits float\",\"type\":\"string\",\"enum\":[\"F32\"]},{\"description\":\"64 bits float\",\"type\":\"string\",\"enum\":[\"F64\"]},{\"description\":\"128 bits float\",\"type\":\"string\",\"enum\":[\"F128\"]}]},\"FloatTy\":{\"description\":\"Reflects [`rustc_type_ir::FloatTy`]\",\"type\":\"string\",\"enum\":[\"F16\",\"F32\",\"F64\",\"F128\"]},\"FnDecl\":{\"description\":\"Reflects [`hir::FnDecl`]\",\"type\":\"object\",\"required\":[\"c_variadic\",\"implicit_self\",\"inputs\",\"lifetime_elision_allowed\",\"output\"],\"properties\":{\"c_variadic\":{\"type\":\"boolean\"},\"implicit_self\":{\"$ref\":\"#/definitions/ImplicitSelfKind\"},\"inputs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}},\"lifetime_elision_allowed\":{\"type\":\"boolean\"},\"output\":{\"$ref\":\"#/definitions/FnRetTy\"}}},\"FnDef_for_Decorated_for_ExprKind\":{\"description\":\"Function definition\",\"type\":\"object\",\"required\":[\"body\",\"header\",\"params\",\"ret\",\"sig_span\"],\"properties\":{\"body\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"header\":{\"$ref\":\"#/definitions/FnHeader\"},\"params\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Param\"}},\"ret\":{\"$ref\":\"#/definitions/Node_for_TyKind\"},\"sig_span\":{\"$ref\":\"#/definitions/Span\"}}},\"FnHeader\":{\"description\":\"Reflects [`hir::FnHeader`]\",\"type\":\"object\",\"required\":[\"abi\",\"asyncness\",\"constness\",\"safety\"],\"properties\":{\"abi\":{\"$ref\":\"#/definitions/ExternAbi\"},\"asyncness\":{\"$ref\":\"#/definitions/IsAsync\"},\"constness\":{\"$ref\":\"#/definitions/Constness\"},\"safety\":{\"$ref\":\"#/definitions/HeaderSafety\"}}},\"FnRetTy\":{\"description\":\"Reflects [`hir::FnRetTy`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"DefaultReturn\"],\"properties\":{\"DefaultReturn\":{\"$ref\":\"#/definitions/Span\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Return\"],\"properties\":{\"Return\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}},\"additionalProperties\":false}]},\"FnSig\":{\"description\":\"Reflects [`hir::FnSig`]\",\"type\":\"object\",\"required\":[\"decl\",\"header\",\"span\"],\"properties\":{\"decl\":{\"$ref\":\"#/definitions/FnDecl\"},\"header\":{\"$ref\":\"#/definitions/FnHeader\"},\"span\":{\"$ref\":\"#/definitions/Span\"}}},\"ForceCargoBuild\":{\"type\":\"object\",\"required\":[\"data\"],\"properties\":{\"data\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0}}},\"ForeignItemKind_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::ForeignItemKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Type\"]},{\"type\":\"object\",\"required\":[\"Fn\"],\"properties\":{\"Fn\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/FnSig\"},{\"type\":\"array\",\"items\":{\"type\":[\"array\",\"null\"],\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2}},{\"$ref\":\"#/definitions/Generics_for_Decorated_for_ExprKind\"}],\"maxItems\":3,\"minItems\":3}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Static\"],\"properties\":{\"Static\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Node_for_TyKind\"},{\"type\":\"boolean\"},{\"$ref\":\"#/definitions/Safety\"}],\"maxItems\":3,\"minItems\":3}},\"additionalProperties\":false}]},\"ForeignItem_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::ForeignItem`]\",\"type\":\"object\",\"required\":[\"ident\",\"kind\",\"owner_id\",\"span\",\"vis_span\"],\"properties\":{\"ident\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},\"kind\":{\"$ref\":\"#/definitions/ForeignItemKind_for_Decorated_for_ExprKind\"},\"owner_id\":{\"$ref\":\"#/definitions/DefId\"},\"span\":{\"$ref\":\"#/definitions/Span\"},\"vis_span\":{\"$ref\":\"#/definitions/Span\"}}},\"Fragment\":{\"description\":\"An owned fragment of the AST: this enumeration can represent any node in the AST.\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"GenericValue\"],\"properties\":{\"GenericValue\":{\"$ref\":\"#/definitions/GenericValue\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"PrimitiveTy\"],\"properties\":{\"PrimitiveTy\":{\"$ref\":\"#/definitions/PrimitiveTy\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Region\"],\"properties\":{\"Region\":{\"$ref\":\"#/definitions/Region2\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Ty\"],\"properties\":{\"Ty\":{\"$ref\":\"#/definitions/Ty\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"DynTraitGoal\"],\"properties\":{\"DynTraitGoal\":{\"$ref\":\"#/definitions/DynTraitGoal\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Metadata\"],\"properties\":{\"Metadata\":{\"$ref\":\"#/definitions/Metadata\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Expr\"],\"properties\":{\"Expr\":{\"$ref\":\"#/definitions/Expr\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Pat\"],\"properties\":{\"Pat\":{\"$ref\":\"#/definitions/Pat\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Arm\"],\"properties\":{\"Arm\":{\"$ref\":\"#/definitions/Arm2\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Guard\"],\"properties\":{\"Guard\":{\"$ref\":\"#/definitions/Guard\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"BorrowKind\"],\"properties\":{\"BorrowKind\":{\"$ref\":\"#/definitions/BorrowKind2\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"BindingMode\"],\"properties\":{\"BindingMode\":{\"$ref\":\"#/definitions/BindingMode2\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"PatKind\"],\"properties\":{\"PatKind\":{\"$ref\":\"#/definitions/PatKind2\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"GuardKind\"],\"properties\":{\"GuardKind\":{\"$ref\":\"#/definitions/GuardKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Lhs\"],\"properties\":{\"Lhs\":{\"$ref\":\"#/definitions/Lhs\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ImplExpr\"],\"properties\":{\"ImplExpr\":{\"$ref\":\"#/definitions/ImplExpr2\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ImplExprKind\"],\"properties\":{\"ImplExprKind\":{\"$ref\":\"#/definitions/ImplExprKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ImplItem\"],\"properties\":{\"ImplItem\":{\"$ref\":\"#/definitions/ImplItem\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ImplItemKind\"],\"properties\":{\"ImplItemKind\":{\"$ref\":\"#/definitions/ImplItemKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"TraitItem\"],\"properties\":{\"TraitItem\":{\"$ref\":\"#/definitions/TraitItem\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"TraitItemKind\"],\"properties\":{\"TraitItemKind\":{\"$ref\":\"#/definitions/TraitItemKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"QuoteContent\"],\"properties\":{\"QuoteContent\":{\"$ref\":\"#/definitions/QuoteContent\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Quote\"],\"properties\":{\"Quote\":{\"$ref\":\"#/definitions/Quote\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ItemQuoteOrigin\"],\"properties\":{\"ItemQuoteOrigin\":{\"$ref\":\"#/definitions/ItemQuoteOrigin\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ItemQuoteOriginKind\"],\"properties\":{\"ItemQuoteOriginKind\":{\"$ref\":\"#/definitions/ItemQuoteOriginKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ItemQuoteOriginPosition\"],\"properties\":{\"ItemQuoteOriginPosition\":{\"$ref\":\"#/definitions/ItemQuoteOriginPosition\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"LoopKind\"],\"properties\":{\"LoopKind\":{\"$ref\":\"#/definitions/LoopKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Literal\"],\"properties\":{\"Literal\":{\"$ref\":\"#/definitions/Literal\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ControlFlowKind\"],\"properties\":{\"ControlFlowKind\":{\"$ref\":\"#/definitions/ControlFlowKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"LoopState\"],\"properties\":{\"LoopState\":{\"$ref\":\"#/definitions/LoopState\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ExprKind\"],\"properties\":{\"ExprKind\":{\"$ref\":\"#/definitions/ExprKind2\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"GenericParamKind\"],\"properties\":{\"GenericParamKind\":{\"$ref\":\"#/definitions/GenericParamKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"TraitGoal\"],\"properties\":{\"TraitGoal\":{\"$ref\":\"#/definitions/TraitGoal\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ImplIdent\"],\"properties\":{\"ImplIdent\":{\"$ref\":\"#/definitions/ImplIdent\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ProjectionPredicate\"],\"properties\":{\"ProjectionPredicate\":{\"$ref\":\"#/definitions/ProjectionPredicate2\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"GenericConstraint\"],\"properties\":{\"GenericConstraint\":{\"$ref\":\"#/definitions/GenericConstraint\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"GenericParam\"],\"properties\":{\"GenericParam\":{\"$ref\":\"#/definitions/GenericParam\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Generics\"],\"properties\":{\"Generics\":{\"$ref\":\"#/definitions/Generics\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"SafetyKind\"],\"properties\":{\"SafetyKind\":{\"$ref\":\"#/definitions/SafetyKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Attribute\"],\"properties\":{\"Attribute\":{\"$ref\":\"#/definitions/Attribute2\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"AttributeKind\"],\"properties\":{\"AttributeKind\":{\"$ref\":\"#/definitions/AttributeKind2\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"DocCommentKind\"],\"properties\":{\"DocCommentKind\":{\"$ref\":\"#/definitions/DocCommentKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"SpannedTy\"],\"properties\":{\"SpannedTy\":{\"$ref\":\"#/definitions/SpannedTy\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Param\"],\"properties\":{\"Param\":{\"$ref\":\"#/definitions/Param2\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Variant\"],\"properties\":{\"Variant\":{\"$ref\":\"#/definitions/Variant\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ItemKind\"],\"properties\":{\"ItemKind\":{\"$ref\":\"#/definitions/ItemKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Item\"],\"properties\":{\"Item\":{\"$ref\":\"#/definitions/Item\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Unknown\"],\"properties\":{\"Unknown\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"FreshModule\":{\"description\":\"Represents a fresh module: a module generated by hax and guaranteed to be fresh.\",\"type\":\"object\",\"required\":[\"hints\",\"id\",\"label\"],\"properties\":{\"hints\":{\"description\":\"Non-empty list of identifiers that will be used to decide the name of the fresh module.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ExplicitDefId\"}},\"id\":{\"description\":\"Internal (unique) identifier\",\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},\"label\":{\"description\":\"A decoration label that will be also used to decide the name of the fresh module.\",\"type\":\"string\"}}},\"FromEngine\":{\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Exit\",\"Ping\"]},{\"type\":\"object\",\"required\":[\"Diagnostic\"],\"properties\":{\"Diagnostic\":{\"$ref\":\"#/definitions/Diagnostics\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"File\"],\"properties\":{\"File\":{\"$ref\":\"#/definitions/File\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"PrettyPrintDiagnostic\"],\"properties\":{\"PrettyPrintDiagnostic\":{\"$ref\":\"#/definitions/Diagnostics\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"PrettyPrintRust\"],\"properties\":{\"PrettyPrintRust\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"DebugString\"],\"properties\":{\"DebugString\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ProfilingData\"],\"properties\":{\"ProfilingData\":{\"$ref\":\"#/definitions/ProfilingData\"}},\"additionalProperties\":false},{\"description\":\"Declares a list of items that will be processed by the engine\",\"type\":\"object\",\"required\":[\"ItemProcessed\"],\"properties\":{\"ItemProcessed\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/DefId\"}}},\"additionalProperties\":false}]},\"FruInfo\":{\"description\":\"Field Record Update (FRU) informations, this reflects [`thir::FruInfo`]\",\"type\":\"object\",\"required\":[\"base\",\"field_types\"],\"properties\":{\"base\":{\"description\":\"The base, e.g. `Foo {x: 1, .. base}`\",\"allOf\":[{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}]},\"field_types\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}}},\"GenericArg\":{\"description\":\"Reflects both [`ty::GenericArg`] and [`ty::GenericArgKind`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Lifetime\"],\"properties\":{\"Lifetime\":{\"$ref\":\"#/definitions/Region\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Type\"],\"properties\":{\"Type\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Const\"],\"properties\":{\"Const\":{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"}},\"additionalProperties\":false}]},\"GenericConstraint\":{\"description\":\"A generic constraint (lifetime, type or projection)\",\"oneOf\":[{\"description\":\"A lifetime\",\"type\":\"object\",\"required\":[\"Lifetime\"],\"properties\":{\"Lifetime\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"description\":\"A type\",\"type\":\"object\",\"required\":[\"Type\"],\"properties\":{\"Type\":{\"$ref\":\"#/definitions/ImplIdent\"}},\"additionalProperties\":false},{\"description\":\"A projection\",\"type\":\"object\",\"required\":[\"Projection\"],\"properties\":{\"Projection\":{\"$ref\":\"#/definitions/ProjectionPredicate2\"}},\"additionalProperties\":false}]},\"GenericParam\":{\"description\":\"A generic parameter (lifetime, type parameter or const parameter)\",\"type\":\"object\",\"required\":[\"ident\",\"kind\",\"meta\"],\"properties\":{\"ident\":{\"description\":\"The local identifier for the generic parameter\",\"allOf\":[{\"$ref\":\"#/definitions/LocalId\"}]},\"kind\":{\"description\":\"The kind of generic parameter.\",\"allOf\":[{\"$ref\":\"#/definitions/GenericParamKind\"}]},\"meta\":{\"description\":\"Metadata (span and attributes) for the generic parameter.\",\"allOf\":[{\"$ref\":\"#/definitions/Metadata\"}]}}},\"GenericParamDef\":{\"description\":\"Reflects [`ty::GenericParamDef`]\",\"type\":\"object\",\"required\":[\"def_id\",\"index\",\"kind\",\"name\",\"pure_wrt_drop\"],\"properties\":{\"def_id\":{\"$ref\":\"#/definitions/DefId\"},\"index\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},\"kind\":{\"$ref\":\"#/definitions/GenericParamDefKind\"},\"name\":{\"type\":\"string\"},\"pure_wrt_drop\":{\"type\":\"boolean\"}}},\"GenericParamDefKind\":{\"description\":\"Reflects [`ty::GenericParamDefKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Lifetime\"]},{\"type\":\"object\",\"required\":[\"Type\"],\"properties\":{\"Type\":{\"type\":\"object\",\"required\":[\"has_default\",\"synthetic\"],\"properties\":{\"has_default\":{\"type\":\"boolean\"},\"synthetic\":{\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Const\"],\"properties\":{\"Const\":{\"type\":\"object\",\"required\":[\"has_default\",\"ty\"],\"properties\":{\"has_default\":{\"type\":\"boolean\"},\"ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}}},\"additionalProperties\":false}]},\"GenericParamKind\":{\"description\":\"Represents the kinds of generic parameters\",\"oneOf\":[{\"description\":\"A generic lifetime\",\"type\":\"string\",\"enum\":[\"Lifetime\"]},{\"description\":\"A generic type\",\"type\":\"string\",\"enum\":[\"Type\"]},{\"description\":\"A generic constant\",\"type\":\"object\",\"required\":[\"Const\"],\"properties\":{\"Const\":{\"type\":\"object\",\"required\":[\"ty\"],\"properties\":{\"ty\":{\"description\":\"The type of the generic constant\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]}}}},\"additionalProperties\":false}]},\"GenericParamKind_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::GenericParamKind`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Lifetime\"],\"properties\":{\"Lifetime\":{\"type\":\"object\",\"required\":[\"kind\"],\"properties\":{\"kind\":{\"$ref\":\"#/definitions/LifetimeParamKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Type\"],\"properties\":{\"Type\":{\"type\":\"object\",\"required\":[\"synthetic\"],\"properties\":{\"default\":{\"description\":\"On use site, Rust always give us all the generic parameters, no matter the defaultness. This information is thus not so useful. At the same time, as discussed in https://github.com/hacspec/hax/issues/310, extracting this default type causes failures when querying Rust for trait resolution. We thus decided to disable this feature. If this default type information is useful to you, please open an issue on https://github.com/hacspec/hax.\",\"type\":\"null\"},\"synthetic\":{\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Const\"],\"properties\":{\"Const\":{\"type\":\"object\",\"required\":[\"ty\"],\"properties\":{\"default\":{\"anyOf\":[{\"$ref\":\"#/definitions/ConstArg_for_Decorated_for_ExprKind\"},{\"type\":\"null\"}]},\"ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}}},\"additionalProperties\":false}]},\"GenericParam_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::GenericParam`]\",\"type\":\"object\",\"required\":[\"attributes\",\"def_id\",\"hir_id\",\"kind\",\"name\",\"pure_wrt_drop\",\"span\"],\"properties\":{\"attributes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute\"}},\"colon_span\":{\"anyOf\":[{\"$ref\":\"#/definitions/Span\"},{\"type\":\"null\"}]},\"def_id\":{\"$ref\":\"#/definitions/DefId\"},\"hir_id\":{\"$ref\":\"#/definitions/HirId\"},\"kind\":{\"$ref\":\"#/definitions/GenericParamKind_for_Decorated_for_ExprKind\"},\"name\":{\"$ref\":\"#/definitions/ParamName\"},\"pure_wrt_drop\":{\"type\":\"boolean\"},\"span\":{\"$ref\":\"#/definitions/Span\"}}},\"GenericValue\":{\"description\":\"Represents a generic value used in type applications (e.g., `T` in `Vec<T>`).\",\"oneOf\":[{\"description\":\"A type-level generic value.\\n\\n# Example: `i32` in `Vec<i32>`\",\"type\":\"object\",\"required\":[\"Ty\"],\"properties\":{\"Ty\":{\"$ref\":\"#/definitions/Ty\"}},\"additionalProperties\":false},{\"description\":\"A const-level generic value.\\n\\n# Example: `12` in `Foo<12>`\",\"type\":\"object\",\"required\":[\"Expr\"],\"properties\":{\"Expr\":{\"$ref\":\"#/definitions/Expr\"}},\"additionalProperties\":false},{\"description\":\"A lifetime.\\n\\n# Example: `\'a` in `foo<\'a>`\",\"type\":\"string\",\"enum\":[\"Lifetime\"]}]},\"Generics\":{\"description\":\"Generic parameters and constraints (contained between `<>` in function declarations)\",\"type\":\"object\",\"required\":[\"constraints\",\"params\"],\"properties\":{\"constraints\":{\"description\":\"A vector of genreric constraints.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericConstraint\"}},\"params\":{\"description\":\"A vector of genreric parameters.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericParam\"}}}},\"Generics_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::Generics`]\",\"type\":\"object\",\"required\":[\"bounds\",\"has_where_clause_predicates\",\"params\",\"span\",\"where_clause_span\"],\"properties\":{\"bounds\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Clause\"}},\"has_where_clause_predicates\":{\"type\":\"boolean\"},\"params\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericParam_for_Decorated_for_ExprKind\"}},\"span\":{\"$ref\":\"#/definitions/Span\"},\"where_clause_span\":{\"$ref\":\"#/definitions/Span\"}}},\"Glob\":{\"type\":\"string\",\"enum\":[\"One\",\"Many\"]},\"GlobalId\":{\"description\":\"A global identifier in hax.\",\"oneOf\":[{\"description\":\"A concrete identifier that exists in Rust.\",\"type\":\"object\",\"required\":[\"Concrete\"],\"properties\":{\"Concrete\":{\"$ref\":\"#/definitions/ConcreteId\"}},\"additionalProperties\":false},{\"description\":\"A projector.\",\"type\":\"object\",\"required\":[\"Projector\"],\"properties\":{\"Projector\":{\"$ref\":\"#/definitions/ConcreteId\"}},\"additionalProperties\":false}]},\"Guard\":{\"description\":\"A pattern matching arm guard with metadata.\",\"type\":\"object\",\"required\":[\"kind\",\"meta\"],\"properties\":{\"kind\":{\"description\":\"The kind of guard.\",\"allOf\":[{\"$ref\":\"#/definitions/GuardKind\"}]},\"meta\":{\"description\":\"Source span and attributes.\",\"allOf\":[{\"$ref\":\"#/definitions/Metadata\"}]}}},\"GuardKind\":{\"description\":\"Represents the various kinds of pattern guards.\",\"oneOf\":[{\"description\":\"An `if let` guard.\\n\\n# Example: ```rust,ignore match x { Some(value) if let Some(x) = f(value) => x, _ => ..., } ```\",\"type\":\"object\",\"required\":[\"IfLet\"],\"properties\":{\"IfLet\":{\"type\":\"object\",\"required\":[\"lhs\",\"rhs\"],\"properties\":{\"lhs\":{\"description\":\"The left-hand side of the guard. `Some(x)` in the example.\",\"allOf\":[{\"$ref\":\"#/definitions/Pat\"}]},\"rhs\":{\"description\":\"The right-hand side of the guard. `f(value)` in the example.\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]}}}},\"additionalProperties\":false}]},\"HaAssocRole\":{\"description\":\"An item can be associated to another one for multiple reasons: `AssociationRole` capture the nature of the (directed) relation between two items\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Requires\",\"Ensures\",\"Decreases\",\"SMTPat\",\"Refine\",\"ProcessRead\",\"ProcessWrite\",\"ProcessInit\",\"ProtocolMessages\"]},{\"description\":\"A quoted piece of backend code to place after or before the extraction of the marked item\",\"type\":\"string\",\"enum\":[\"ItemQuote\"]}]},\"HaItemQuote\":{\"description\":\"An item quote is a verbatim piece of backend code included in Rust. [`ItemQuote`] encodes the various options a item quote can have.\",\"type\":\"object\",\"required\":[\"position\"],\"properties\":{\"fstar_options\":{\"anyOf\":[{\"$ref\":\"#/definitions/HaItemQuoteFStarOpts\"},{\"type\":\"null\"}]},\"position\":{\"$ref\":\"#/definitions/HaItemQuotePosition\"}}},\"HaItemQuoteFStarOpts\":{\"description\":\"F*-specific options for item quotes\",\"type\":\"object\",\"required\":[\"impl\",\"intf\"],\"properties\":{\"impl\":{\"description\":\"Shall we output this in F* implementations (`*.fst` files)?\",\"type\":\"boolean\"},\"intf\":{\"description\":\"Shall we output this in F* interfaces (`*.fsti` files)?\",\"type\":\"boolean\"}}},\"HaItemQuotePosition\":{\"description\":\"Where should a item quote appear?\",\"oneOf\":[{\"description\":\"Should appear just before the item in the extraction\",\"type\":\"string\",\"enum\":[\"Before\"]},{\"description\":\"Should appear right after the item in the extraction\",\"type\":\"string\",\"enum\":[\"After\"]}]},\"HaItemStatus\":{\"description\":\"What shall Hax do with an item?\",\"oneOf\":[{\"description\":\"Include this item in the translation\",\"type\":\"object\",\"required\":[\"Included\"],\"properties\":{\"Included\":{\"type\":\"object\",\"required\":[\"late_skip\"],\"properties\":{\"late_skip\":{\"description\":\"Should Hax drop this item just before code generation?\",\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"description\":\"Exclude this item from the translation, optionally replacing it in the backends\",\"type\":\"object\",\"required\":[\"Excluded\"],\"properties\":{\"Excluded\":{\"type\":\"object\",\"properties\":{\"modeled_by\":{\"type\":[\"string\",\"null\"]}}}},\"additionalProperties\":false}]},\"HaPayload\":{\"description\":\"Hax only understands one attribute: `#[hax::json(PAYLOAD)]` where `PAYLOAD` is a JSON serialization of an inhabitant of `AttrPayload`.\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"NewtypeAsRefinement\",\"Language\",\"ProcessRead\",\"ProcessWrite\",\"ProcessInit\",\"ProtocolMessages\",\"PVConstructor\",\"PVHandwritten\",\"TraitMethodNoPrePost\"]},{\"type\":\"object\",\"required\":[\"ItemStatus\"],\"properties\":{\"ItemStatus\":{\"$ref\":\"#/definitions/HaItemStatus\"}},\"additionalProperties\":false},{\"description\":\"Mark an item as associated with another one\",\"type\":\"object\",\"required\":[\"AssociatedItem\"],\"properties\":{\"AssociatedItem\":{\"type\":\"object\",\"required\":[\"item\",\"role\"],\"properties\":{\"item\":{\"description\":\"What is the identifier of the target item?\",\"allOf\":[{\"$ref\":\"#/definitions/HaUid\"}]},\"role\":{\"description\":\"What is the nature of the association?\",\"allOf\":[{\"$ref\":\"#/definitions/HaAssocRole\"}]}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Uid\"],\"properties\":{\"Uid\":{\"$ref\":\"#/definitions/HaUid\"}},\"additionalProperties\":false},{\"description\":\"Decides of the position of a item quote\",\"type\":\"object\",\"required\":[\"ItemQuote\"],\"properties\":{\"ItemQuote\":{\"$ref\":\"#/definitions/HaItemQuote\"}},\"additionalProperties\":false},{\"description\":\"Mark an item so that hax never drop its body (this is useful for pre- and post- conditions of a function we dropped the body of: pre and post are part of type signature)\",\"type\":\"string\",\"enum\":[\"NeverErased\"]},{\"description\":\"Mark an item as a lemma statement to prove in the backend\",\"type\":\"string\",\"enum\":[\"Lemma\"]},{\"description\":\"Make an item opaque\",\"type\":\"string\",\"enum\":[\"Erased\"]},{\"description\":\"In the context of a set of fields (e.g. on a `struct`), overrides its order. By default, the order of a field is its index, e.g. the first field has order 0, the i-th field has order i+1. Rust fields order matters: it rules how bits are represented. Once extracted, the order matters, but for different reasons, e.g. a field is refined with another, requiring a specific order.\",\"type\":\"object\",\"required\":[\"Order\"],\"properties\":{\"Order\":{\"type\":\"integer\",\"format\":\"int32\"}},\"additionalProperties\":false}]},\"HaUid\":{\"description\":\"Each item can be marked with a *u*nique *id*entifier. This is useful whenever the payload of an attribute is a piece of Rust code (an expression, a path, a type...). We don\'t want to retrieve those pieces of Rust code as raw token stream: we want to let Rustc give meaning to those. For instance, we want Rustc to type expressions and to resolve paths.\\n\\nThus, we expand attributes with Rust-code-payloads as top-level items marked with an `ItemUid`. The attributes are then replaced in place with a simple reference (the `ItemUid` in stake).\\n\\nMorally, we expand `struct Foo { #[refine(x > 3)] x: u32 }` to: 1. `#[uuid(A_UNIQUE_ID_123)] fn refinement(x: u32) -> hax_lib::Prop {x > 3}`; 2. `struct Foo { #[refined_by(A_UNIQUE_ID_123)] x: u32 }`.\",\"type\":\"object\",\"required\":[\"uid\"],\"properties\":{\"uid\":{\"description\":\"Currently, this is a UUID.\",\"type\":\"string\"}}},\"HeaderSafety\":{\"oneOf\":[{\"type\":\"string\",\"enum\":[\"SafeTargetFeatures\"]},{\"type\":\"object\",\"required\":[\"Normal\"],\"properties\":{\"Normal\":{\"$ref\":\"#/definitions/Safety\"}},\"additionalProperties\":false}]},\"HirFieldDef\":{\"description\":\"Reflects [`hir::FieldDef`]\",\"type\":\"object\",\"required\":[\"attributes\",\"def_id\",\"hir_id\",\"ident\",\"span\",\"ty\",\"vis_span\"],\"properties\":{\"attributes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute\"}},\"def_id\":{\"$ref\":\"#/definitions/DefId\"},\"hir_id\":{\"$ref\":\"#/definitions/HirId\"},\"ident\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},\"span\":{\"$ref\":\"#/definitions/Span\"},\"ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"},\"vis_span\":{\"$ref\":\"#/definitions/Span\"}}},\"HirGenericArgs\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"GenericArgs\"],\"properties\":{\"GenericArgs\":{\"type\":\"object\",\"required\":[\"todo\"],\"properties\":{\"todo\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"HirId\":{\"description\":\"Reflects [`hir::hir_id::HirId`]\",\"type\":\"object\",\"required\":[\"local_id\",\"owner\"],\"properties\":{\"local_id\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},\"owner\":{\"$ref\":\"#/definitions/DefId\"}}},\"HostEffectPredicate\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"HostEffectPredicate\"],\"properties\":{\"HostEffectPredicate\":{\"type\":\"object\",\"required\":[\"todo\"],\"properties\":{\"todo\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"ImplExpr\":{\"description\":\"An `ImplExpr` describes the full data of a trait implementation. Because of generics, this may need to combine several concrete trait implementation items. For example, `((1u8, 2u8), \\\"hello\\\").clone()` combines the generic implementation of `Clone` for `(A, B)` with the concrete implementations for `u8` and `&str`, represented as a tree.\",\"type\":\"object\",\"required\":[\"impl\",\"trait\"],\"properties\":{\"impl\":{\"description\":\"The kind of implemention of the root of the tree.\",\"allOf\":[{\"$ref\":\"#/definitions/ImplExprAtom\"}]},\"trait\":{\"description\":\"The trait this is an impl for.\",\"allOf\":[{\"$ref\":\"#/definitions/Binder_for_Node_for_ItemRefContents\"}]}}},\"ImplExpr2\":{\"description\":\"An `ImplExpr` describes the full data of a trait implementation. Because of generics, this may need to combine several concrete trait implementation items. For example, `((1u8, 2u8), \\\"hello\\\").clone()` combines the generic implementation of `Clone` for `(A, B)` with the concrete implementations for `u8` and `&str`, represented as a tree.\",\"type\":\"object\",\"required\":[\"goal\",\"kind\"],\"properties\":{\"goal\":{\"description\":\"The trait being implemented.\",\"allOf\":[{\"$ref\":\"#/definitions/TraitGoal\"}]},\"kind\":{\"description\":\"The impl. expression itself.\",\"allOf\":[{\"$ref\":\"#/definitions/ImplExprKind\"}]}}},\"ImplExprAtom\":{\"description\":\"The source of a particular trait implementation. Most often this is either `Concrete` for a concrete `impl Trait for Type {}` item, or `LocalBound` for a context-bound `where T: Trait`.\",\"oneOf\":[{\"description\":\"A concrete `impl Trait for Type {}` item.\",\"type\":\"object\",\"required\":[\"Concrete\"],\"properties\":{\"Concrete\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}},\"additionalProperties\":false},{\"description\":\"A context-bound clause like `where T: Trait`.\",\"type\":\"object\",\"required\":[\"LocalBound\"],\"properties\":{\"LocalBound\":{\"type\":\"object\",\"required\":[\"index\",\"path\",\"predicate_id\",\"trait\"],\"properties\":{\"index\":{\"description\":\"The nth (non-self) predicate found for this item. We use predicates from `required_predicates` starting from the parentmost item.\",\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},\"path\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ImplExprPathChunk\"}},\"predicate_id\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0},\"trait\":{\"$ref\":\"#/definitions/Binder_for_Node_for_ItemRefContents\"}}}},\"additionalProperties\":false},{\"description\":\"The implicit `Self: Trait` clause present inside a `trait Trait {}` item.\",\"type\":\"object\",\"required\":[\"SelfImpl\"],\"properties\":{\"SelfImpl\":{\"type\":\"object\",\"required\":[\"path\",\"trait\"],\"properties\":{\"path\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ImplExprPathChunk\"}},\"trait\":{\"$ref\":\"#/definitions/Binder_for_Node_for_ItemRefContents\"}}}},\"additionalProperties\":false},{\"description\":\"`dyn Trait` is a wrapped value with a virtual table for trait `Trait`. In other words, a value `dyn Trait` is a dependent triple that gathers a type \u{3c4}, a value of type \u{3c4} and an instance of type `Trait`. `dyn Trait` implements `Trait` using a built-in implementation; this refers to that built-in implementation.\",\"type\":\"string\",\"enum\":[\"Dyn\"]},{\"description\":\"A virtual `Drop` implementation. `Drop` doesn\'t work like a real trait but we want to pretend it does. If a type has a user-defined `impl Drop for X` we just use the `Concrete` variant, but if it doesn\'t we use this variant to supply the data needed to know what code will run on drop.\",\"type\":\"object\",\"required\":[\"Drop\"],\"properties\":{\"Drop\":{\"$ref\":\"#/definitions/DropData\"}},\"additionalProperties\":false},{\"description\":\"A built-in trait whose implementation is computed by the compiler, such as `FnMut`. This morally points to an invisible `impl` block; as such it contains the information we may need from one.\",\"type\":\"object\",\"required\":[\"Builtin\"],\"properties\":{\"Builtin\":{\"type\":\"object\",\"required\":[\"impl_exprs\",\"trait\",\"types\"],\"properties\":{\"impl_exprs\":{\"description\":\"The `ImplExpr`s required to satisfy the implied predicates on the trait declaration. E.g. since `FnMut: FnOnce`, a built-in `T: FnMut` impl would have an `ImplExpr` for `T: FnOnce`.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ImplExpr\"}},\"trait\":{\"$ref\":\"#/definitions/Binder_for_Node_for_ItemRefContents\"},\"types\":{\"description\":\"The values of the associated types for this trait.\",\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/DefId\"},{\"$ref\":\"#/definitions/Node_for_TyKind\"}],\"maxItems\":2,\"minItems\":2}}}}},\"additionalProperties\":false},{\"description\":\"An error happened while resolving traits.\",\"type\":\"object\",\"required\":[\"Error\"],\"properties\":{\"Error\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"ImplExprKind\":{\"description\":\"Represents all the kinds of impl expr.\\n\\n# Example: In the snippet below, the `clone` method on `x` corresponds to the implementation of `Clone` derived for `Vec<T>` (`ImplApp`) given the `LocalBound` on `T`. ```rust,ignore fn f<T: Clone>(x: Vec<T>) -> Vec<T> { x.clone() } ```\",\"oneOf\":[{\"description\":\"The trait implementation being defined.\\n\\n# Example: The impl expr for `Type: Trait` used in `self.f()` is `Self_`. ```rust,ignore impl Trait for Type { fn f(&self) {...} fn g(&self) {self.f()} } ```\",\"type\":\"string\",\"enum\":[\"Self_\"]},{\"description\":\"A concrete `impl` block.\\n\\n# Example ```rust,ignore impl Clone for Type { // Consider this `impl` is called `impl0` ... } fn f(x: Type) { x.clone() // Here `clone` comes from `Concrete(impl0)` } ```\",\"type\":\"object\",\"required\":[\"Concrete\"],\"properties\":{\"Concrete\":{\"$ref\":\"#/definitions/TraitGoal\"}},\"additionalProperties\":false},{\"description\":\"A bound introduced by a generic clause.\\n\\n# Example: ```rust,ignore fn f<T: Clone>(x: T) -> T { x.clone() // Here the method comes from the bound `T: Clone` } ```\",\"type\":\"object\",\"required\":[\"LocalBound\"],\"properties\":{\"LocalBound\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"description\":\"Local identifier to a bound.\",\"allOf\":[{\"$ref\":\"#/definitions/Symbol\"}]}}}},\"additionalProperties\":false},{\"description\":\"A parent implementation.\\n\\n# Example: ```rust,ignore trait SubTrait: Clone {} fn f<T: SubTrait>(x: T) -> T { x.clone() // Here the method comes from the parent of the bound `T: SubTrait` } ```\",\"type\":\"object\",\"required\":[\"Parent\"],\"properties\":{\"Parent\":{\"type\":\"object\",\"required\":[\"ident\",\"impl_\"],\"properties\":{\"ident\":{\"description\":\"Which implementation to pick in the parent\",\"allOf\":[{\"$ref\":\"#/definitions/ImplIdent\"}]},\"impl_\":{\"description\":\"Parent implementation\",\"allOf\":[{\"$ref\":\"#/definitions/ImplExpr2\"}]}}}},\"additionalProperties\":false},{\"description\":\"A projected associated implementation.\\n\\n# Example: In this snippet, `T::Item` is an `AssociatedType` where the subsequent `ImplExpr` is a type projection of `ITerator`. ```rust,ignore fn f<T: Iterator>(x: T) -> Option<T::Item> { x.next() } ```\",\"type\":\"object\",\"required\":[\"Projection\"],\"properties\":{\"Projection\":{\"type\":\"object\",\"required\":[\"ident\",\"impl_\",\"item\"],\"properties\":{\"ident\":{\"description\":\"Which implementation to pick on the item\",\"allOf\":[{\"$ref\":\"#/definitions/ImplIdent\"}]},\"impl_\":{\"description\":\"The base implementation from which we project\",\"allOf\":[{\"$ref\":\"#/definitions/ImplExpr2\"}]},\"item\":{\"description\":\"The item in the trait implemented by `impl_`\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]}}}},\"additionalProperties\":false},{\"description\":\"An instantiation of a generic implementation.\\n\\n# Example: ```rust,ignore fn f<T: Clone>(x: Vec<T>) -> Vec<T> { x.clone() // The `Clone` implementation for `Vec` is instantiated with the local bound `T: Clone` } ```\",\"type\":\"object\",\"required\":[\"ImplApp\"],\"properties\":{\"ImplApp\":{\"type\":\"object\",\"required\":[\"args\",\"impl_\"],\"properties\":{\"args\":{\"description\":\"The arguments of the application\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ImplExpr2\"}},\"impl_\":{\"description\":\"The head of the application\",\"allOf\":[{\"$ref\":\"#/definitions/ImplExpr2\"}]}}}},\"additionalProperties\":false},{\"description\":\"The implementation provided by a dyn.\",\"type\":\"string\",\"enum\":[\"Dyn\"]},{\"description\":\"A trait implemented natively by rust.\",\"type\":\"object\",\"required\":[\"Builtin\"],\"properties\":{\"Builtin\":{\"$ref\":\"#/definitions/TraitGoal\"}},\"additionalProperties\":false}]},\"ImplExprPathChunk\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"AssocItem\"],\"properties\":{\"AssocItem\":{\"type\":\"object\",\"required\":[\"assoc_item\",\"index\",\"item\",\"predicate\",\"predicate_id\"],\"properties\":{\"assoc_item\":{\"$ref\":\"#/definitions/AssocItem\"},\"index\":{\"description\":\"The index of this predicate in the list returned by `implied_predicates`.\",\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},\"item\":{\"description\":\"Reference to the item, with generics (for GATs), e.g. the `T` and `T: Clone` `ImplExpr` in the following example: ```ignore trait Foo { type Type<T: Clone>: Debug; } ```\",\"allOf\":[{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}]},\"predicate\":{\"description\":\"The implemented predicate.\",\"allOf\":[{\"$ref\":\"#/definitions/Binder_for_TraitPredicate\"}]},\"predicate_id\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Parent\"],\"properties\":{\"Parent\":{\"type\":\"object\",\"required\":[\"index\",\"predicate\",\"predicate_id\"],\"properties\":{\"index\":{\"description\":\"The index of this predicate in the list returned by `implied_predicates`.\",\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},\"predicate\":{\"description\":\"The implemented predicate.\",\"allOf\":[{\"$ref\":\"#/definitions/Binder_for_TraitPredicate\"}]},\"predicate_id\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0}}}},\"additionalProperties\":false}]},\"ImplIdent\":{\"description\":\"Represents a trait bound in a generic constraint\",\"type\":\"object\",\"required\":[\"goal\",\"name\"],\"properties\":{\"goal\":{\"description\":\"The trait goal of this impl identifier\",\"allOf\":[{\"$ref\":\"#/definitions/TraitGoal\"}]},\"name\":{\"description\":\"The name itself\",\"allOf\":[{\"$ref\":\"#/definitions/Symbol\"}]}}},\"ImplInfos\":{\"description\":\"Meta-informations about an `impl<GENERICS[: PREDICATES]> TRAIT for TYPE where PREDICATES {}`\",\"type\":\"object\",\"required\":[\"clauses\",\"generics\",\"typ\"],\"properties\":{\"clauses\":{\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Clause\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2}},\"generics\":{\"$ref\":\"#/definitions/TyGenerics\"},\"trait_ref\":{\"anyOf\":[{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"},{\"type\":\"null\"}]},\"typ\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}},\"ImplItem\":{\"description\":\"Represents an impl item (associated type or function)\\n\\n# Example: ```rust,ignore impl ... { fn assoc_fn<T>(...) {...} } ```\",\"type\":\"object\",\"required\":[\"generics\",\"ident\",\"kind\",\"meta\"],\"properties\":{\"generics\":{\"description\":\"Generics for this associated item. `T` in the example.\",\"allOf\":[{\"$ref\":\"#/definitions/Generics\"}]},\"ident\":{\"description\":\"The unique identifier for this associated item.\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]},\"kind\":{\"description\":\"The associated item itself.\",\"allOf\":[{\"$ref\":\"#/definitions/ImplItemKind\"}]},\"meta\":{\"description\":\"Metadata (span and attributes) for the impl item.\",\"allOf\":[{\"$ref\":\"#/definitions/Metadata\"}]}}},\"ImplItemKind\":{\"description\":\"Represents the kinds of impl items\",\"oneOf\":[{\"description\":\"An instantiation of associated type\\n\\n# Example: The associated type `Error` in the following example. ```rust,ignore impl TryInto for ... { type Error = u8; } ```\",\"type\":\"object\",\"required\":[\"Type\"],\"properties\":{\"Type\":{\"type\":\"object\",\"required\":[\"parent_bounds\",\"ty\"],\"properties\":{\"parent_bounds\":{\"description\":\"The parent bounds. In the example, there are none (in the definition of `TryInto`, there is no `Error: Something` in the associated type definition).\",\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/ImplExpr2\"},{\"$ref\":\"#/definitions/ImplIdent\"}],\"maxItems\":2,\"minItems\":2}},\"ty\":{\"description\":\"The type expression, `u8` in the example.\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]}}}},\"additionalProperties\":false},{\"description\":\"A definition for a trait function\\n\\n# Example: The associated function `into` in the following example. ```rust,ignore impl Into for T { fn into(&self) -> T {...} } ```\",\"type\":\"object\",\"required\":[\"Fn\"],\"properties\":{\"Fn\":{\"type\":\"object\",\"required\":[\"body\",\"params\"],\"properties\":{\"body\":{\"description\":\"The body of the associated function (`...` in the example)\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"params\":{\"description\":\"The list of the argument for the associated function (`&self` in the example).\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Param2\"}}}}},\"additionalProperties\":false},{\"description\":\"A resugared impl item. This variant is introduced before printing only. Phases must not produce this variant.\",\"type\":\"object\",\"required\":[\"Resugared\"],\"properties\":{\"Resugared\":{\"$ref\":\"#/definitions/ResugaredImplItemKind\"}},\"additionalProperties\":false}]},\"ImplItemKind_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::ImplItemKind`], inlining the body of the items.\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Const\"],\"properties\":{\"Const\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Node_for_TyKind\"},{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Fn\"],\"properties\":{\"Fn\":{\"$ref\":\"#/definitions/FnDef_for_Decorated_for_ExprKind\"}},\"additionalProperties\":false},{\"description\":\"An associated type with its parent bounds inlined.\",\"type\":\"object\",\"required\":[\"Type\"],\"properties\":{\"Type\":{\"type\":\"object\",\"required\":[\"parent_bounds\",\"ty\"],\"properties\":{\"parent_bounds\":{\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Clause\"},{\"$ref\":\"#/definitions/ImplExpr\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":3,\"minItems\":3}},\"ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}}},\"additionalProperties\":false}]},\"ImplItem_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::ImplItem`]\",\"type\":\"object\",\"required\":[\"attributes\",\"defaultness\",\"generics\",\"ident\",\"kind\",\"owner_id\",\"span\",\"vis_span\"],\"properties\":{\"attributes\":{\"description\":\"the attributes on this impl item\",\"allOf\":[{\"$ref\":\"#/definitions/ItemAttributes\"}]},\"defaultness\":{\"$ref\":\"#/definitions/Defaultness\"},\"generics\":{\"$ref\":\"#/definitions/Generics_for_Decorated_for_ExprKind\"},\"ident\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},\"kind\":{\"$ref\":\"#/definitions/ImplItemKind_for_Decorated_for_ExprKind\"},\"owner_id\":{\"$ref\":\"#/definitions/DefId\"},\"span\":{\"$ref\":\"#/definitions/Span\"},\"vis_span\":{\"$ref\":\"#/definitions/Span\"}}},\"ImplPolarity\":{\"description\":\"Reflects [`hir::ImplPolarity`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Positive\"]},{\"type\":\"object\",\"required\":[\"Negative\"],\"properties\":{\"Negative\":{\"$ref\":\"#/definitions/Span\"}},\"additionalProperties\":false}]},\"ImplTraitInTraitData\":{\"description\":\"Reflects [`ty::ImplTraitInTraitData`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Trait\"],\"properties\":{\"Trait\":{\"type\":\"object\",\"required\":[\"fn_def_id\",\"opaque_def_id\"],\"properties\":{\"fn_def_id\":{\"$ref\":\"#/definitions/DefId\"},\"opaque_def_id\":{\"$ref\":\"#/definitions/DefId\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Impl\"],\"properties\":{\"Impl\":{\"type\":\"object\",\"required\":[\"fn_def_id\"],\"properties\":{\"fn_def_id\":{\"$ref\":\"#/definitions/DefId\"}}}},\"additionalProperties\":false}]},\"Impl_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::Impl`].\",\"type\":\"object\",\"required\":[\"defaultness\",\"generics\",\"items\",\"parent_bounds\",\"polarity\",\"safety\",\"self_ty\"],\"properties\":{\"defaultness\":{\"$ref\":\"#/definitions/Defaultness\"},\"defaultness_span\":{\"anyOf\":[{\"$ref\":\"#/definitions/Span\"},{\"type\":\"null\"}]},\"generics\":{\"$ref\":\"#/definitions/Generics_for_Decorated_for_ExprKind\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ImplItem_for_Decorated_for_ExprKind\"}},\"of_trait\":{\"anyOf\":[{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"},{\"type\":\"null\"}]},\"parent_bounds\":{\"description\":\"The clauses and impl expressions corresponding to the impl\'s trait (if not inherent) super bounds (if any).\",\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Clause\"},{\"$ref\":\"#/definitions/ImplExpr\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":3,\"minItems\":3}},\"polarity\":{\"$ref\":\"#/definitions/ImplPolarity\"},\"safety\":{\"$ref\":\"#/definitions/Safety\"},\"self_ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}},\"ImplicitSelfKind\":{\"description\":\"Reflects [`hir::ImplicitSelfKind`]\",\"type\":\"string\",\"enum\":[\"Imm\",\"Mut\",\"RefImm\",\"RefMut\",\"None\"]},\"InclusionClause\":{\"type\":\"object\",\"required\":[\"kind\",\"namespace\"],\"properties\":{\"kind\":{\"$ref\":\"#/definitions/InclusionKind\"},\"namespace\":{\"$ref\":\"#/definitions/Namespace\"}}},\"InclusionKind\":{\"oneOf\":[{\"type\":\"string\",\"enum\":[\"SignatureOnly\",\"Excluded\"]},{\"description\":\"`+query` include the items selected by `query`\",\"type\":\"object\",\"required\":[\"Included\"],\"properties\":{\"Included\":{\"$ref\":\"#/definitions/DepsKind\"}},\"additionalProperties\":false}]},\"InferTy\":{\"description\":\"Reflects partially [`ty::InferTy`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"TyVar\",\"IntVar\",\"FloatVar\"]},{\"type\":\"object\",\"required\":[\"FreshTy\"],\"properties\":{\"FreshTy\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"FreshIntTy\"],\"properties\":{\"FreshIntTy\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"FreshFloatTy\"],\"properties\":{\"FreshFloatTy\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0}},\"additionalProperties\":false}]},\"InlineAsm\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"InlineAsm\"],\"properties\":{\"InlineAsm\":{\"type\":\"object\",\"required\":[\"todo\"],\"properties\":{\"todo\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"IntKind\":{\"description\":\"Describes a Rust integer type (`u64`, `i32`, ...)\",\"type\":\"object\",\"required\":[\"signedness\",\"size\"],\"properties\":{\"signedness\":{\"description\":\"Whether this integer type is signed or unsigned\",\"allOf\":[{\"$ref\":\"#/definitions/Signedness\"}]},\"size\":{\"description\":\"Size of this integer type\",\"allOf\":[{\"$ref\":\"#/definitions/IntSize\"}]}}},\"IntSize\":{\"description\":\"Size of an integer type\",\"oneOf\":[{\"description\":\"8 bits integer type\",\"type\":\"string\",\"enum\":[\"S8\"]},{\"description\":\"16 bits integer type\",\"type\":\"string\",\"enum\":[\"S16\"]},{\"description\":\"32 bits integer type\",\"type\":\"string\",\"enum\":[\"S32\"]},{\"description\":\"64 bits integer type\",\"type\":\"string\",\"enum\":[\"S64\"]},{\"description\":\"128 bits integer type\",\"type\":\"string\",\"enum\":[\"S128\"]},{\"description\":\"Pointer-sized integer type\",\"type\":\"string\",\"enum\":[\"SSize\"]}]},\"IntTy\":{\"description\":\"Reflects [`rustc_type_ir::IntTy`]\",\"type\":\"string\",\"enum\":[\"Isize\",\"I8\",\"I16\",\"I32\",\"I64\",\"I128\"]},\"IntegerType\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"IntegerType\"],\"properties\":{\"IntegerType\":{\"type\":\"object\",\"required\":[\"todo\"],\"properties\":{\"todo\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"InvisibleOrigin\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"InvisibleOrigin\"],\"properties\":{\"InvisibleOrigin\":{\"type\":\"object\",\"required\":[\"todo\"],\"properties\":{\"todo\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"IsAsync\":{\"description\":\"Reflects [`hir::IsAsync`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"NotAsync\"]},{\"type\":\"object\",\"required\":[\"Async\"],\"properties\":{\"Async\":{\"$ref\":\"#/definitions/Span\"}},\"additionalProperties\":false}]},\"IsAuto\":{\"description\":\"Reflects [`hir::IsAuto`]\",\"type\":\"string\",\"enum\":[\"Yes\",\"No\"]},\"Item\":{\"description\":\"A top-level item with metadata.\",\"type\":\"object\",\"required\":[\"ident\",\"kind\",\"meta\"],\"properties\":{\"ident\":{\"description\":\"The global identifier of the item.\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]},\"kind\":{\"description\":\"The kind of the item.\",\"allOf\":[{\"$ref\":\"#/definitions/ItemKind\"}]},\"meta\":{\"description\":\"Source span and attributes.\",\"allOf\":[{\"$ref\":\"#/definitions/Metadata\"}]}}},\"ItemAttributes\":{\"type\":\"object\",\"required\":[\"attributes\",\"parent_attributes\"],\"properties\":{\"attributes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute\"}},\"parent_attributes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute\"}}}},\"ItemKind\":{\"description\":\"A top-level item in the module.\",\"oneOf\":[{\"description\":\"A function or constant item.\\n\\n# Example: ```rust,ignore fn add<T: Clone>(x: i32, y: i32) -> i32 { x + y } ``` Constants are represented as functions of arity zero, while functions always have a non-zero arity.\",\"type\":\"object\",\"required\":[\"Fn\"],\"properties\":{\"Fn\":{\"type\":\"object\",\"required\":[\"body\",\"generics\",\"name\",\"params\",\"safety\"],\"properties\":{\"body\":{\"description\":\"The body of the function\\n\\n# Example: `x + y`\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"generics\":{\"description\":\"The generic arguments and constraints of the function.\\n\\n# Example: the generic type `T` and the constraint `T: Clone`\",\"allOf\":[{\"$ref\":\"#/definitions/Generics\"}]},\"name\":{\"description\":\"The identifier of the function.\\n\\n# Example: `add`\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]},\"params\":{\"description\":\"The parameters of the function.\\n\\n# Example: `x: i32, y: i32`\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Param2\"}},\"safety\":{\"description\":\"The safety of the function.\",\"allOf\":[{\"$ref\":\"#/definitions/SafetyKind\"}]}}}},\"additionalProperties\":false},{\"description\":\"A type alias.\\n\\n# Example: ```rust,ignore type A = u8; ```\",\"type\":\"object\",\"required\":[\"TyAlias\"],\"properties\":{\"TyAlias\":{\"type\":\"object\",\"required\":[\"generics\",\"name\",\"ty\"],\"properties\":{\"generics\":{\"description\":\"Generic arguments and constraints\",\"allOf\":[{\"$ref\":\"#/definitions/Generics\"}]},\"name\":{\"description\":\"Name of the alias\\n\\n# Example: `A`\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]},\"ty\":{\"description\":\"Original type\\n\\n# Example: `u8`\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]}}}},\"additionalProperties\":false},{\"description\":\"A type definition (struct or enum)\\n\\n# Example: ```rust,ignore enum A {B, C} struct S {f: u8} ```\",\"type\":\"object\",\"required\":[\"Type\"],\"properties\":{\"Type\":{\"type\":\"object\",\"required\":[\"generics\",\"is_struct\",\"name\",\"variants\"],\"properties\":{\"generics\":{\"description\":\"Generic parameters and constraints\",\"allOf\":[{\"$ref\":\"#/definitions/Generics\"}]},\"is_struct\":{\"description\":\"Is this a struct (or an enum)\",\"type\":\"boolean\"},\"name\":{\"description\":\"Name of this type\\n\\n# Example: `A`, `S`\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]},\"variants\":{\"description\":\"Variants\\n\\n# Example: `{B, C}`\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Variant\"}}}}},\"additionalProperties\":false},{\"description\":\"A trait definition.\\n\\n# Example: ```rust,ignore trait T<A> { type Assoc; fn m(x: Self::Assoc, y: Self) -> A; } ```\",\"type\":\"object\",\"required\":[\"Trait\"],\"properties\":{\"Trait\":{\"type\":\"object\",\"required\":[\"generics\",\"items\",\"name\"],\"properties\":{\"generics\":{\"description\":\"Generic parameters and constraints\\n\\n# Example: `<A>`\",\"allOf\":[{\"$ref\":\"#/definitions/Generics\"}]},\"items\":{\"description\":\"Items required to implement the trait\\n\\n# Example: `type Assoc;`, `fn m ...;`\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/TraitItem\"}},\"name\":{\"description\":\"Name of this trait\\n\\n# Example: `T`\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]}}}},\"additionalProperties\":false},{\"description\":\"A trait implementation.\\n\\n# Example: ```rust,ignore impl T<u8> for u16 { type Assoc = u32; fn m(x: u32, y: u16) -> u8 { (x as u8) + (y as u8) } } ```\",\"type\":\"object\",\"required\":[\"Impl\"],\"properties\":{\"Impl\":{\"type\":\"object\",\"required\":[\"generics\",\"items\",\"of_trait\",\"parent_bounds\",\"safety\",\"self_ty\"],\"properties\":{\"generics\":{\"description\":\"Generic arguments and constraints\",\"allOf\":[{\"$ref\":\"#/definitions/Generics\"}]},\"items\":{\"description\":\"Items in this impl\\n\\n# Example: `fn m ...`, `type Assoc ...`\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ImplItem\"}},\"of_trait\":{\"description\":\"Instantiated trait that is being implemented\\n\\n# Example: `T<u8>`\",\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/GlobalId\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericValue\"}}],\"maxItems\":2,\"minItems\":2},\"parent_bounds\":{\"description\":\"Implementations of traits required for this impl\",\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/ImplExpr2\"},{\"$ref\":\"#/definitions/ImplIdent\"}],\"maxItems\":2,\"minItems\":2}},\"safety\":{\"description\":\"Safe or unsafe\",\"allOf\":[{\"$ref\":\"#/definitions/SafetyKind\"}]},\"self_ty\":{\"description\":\"The type we implement the trait for\\n\\n# Example: `u16`\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]}}}},\"additionalProperties\":false},{\"description\":\"Internal node introduced by phases, corresponds to an alias to any item.\",\"type\":\"object\",\"required\":[\"Alias\"],\"properties\":{\"Alias\":{\"type\":\"object\",\"required\":[\"item\",\"name\"],\"properties\":{\"item\":{\"description\":\"Original name\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]},\"name\":{\"description\":\"New name\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]}}}},\"additionalProperties\":false},{\"description\":\"A `use` statement\",\"type\":\"object\",\"required\":[\"Use\"],\"properties\":{\"Use\":{\"type\":\"object\",\"required\":[\"is_external\",\"path\"],\"properties\":{\"is_external\":{\"description\":\"Comes from external crate\",\"type\":\"boolean\"},\"path\":{\"description\":\"Path to used item(s)\",\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"rename\":{\"description\":\"Optional `as`\",\"type\":[\"string\",\"null\"]}}}},\"additionalProperties\":false},{\"description\":\"A `Quote` node is inserted by phase TransformHaxLibInline to deal with some `hax_lib` features. For example insertion of verbatim backend code.\",\"type\":\"object\",\"required\":[\"Quote\"],\"properties\":{\"Quote\":{\"type\":\"object\",\"required\":[\"origin\",\"quote\"],\"properties\":{\"origin\":{\"description\":\"Description of the quote target position\",\"allOf\":[{\"$ref\":\"#/definitions/ItemQuoteOrigin\"}]},\"quote\":{\"description\":\"Content of the quote\",\"allOf\":[{\"$ref\":\"#/definitions/Quote\"}]}}}},\"additionalProperties\":false},{\"description\":\"Fallback constructor to carry errors.\",\"type\":\"object\",\"required\":[\"Error\"],\"properties\":{\"Error\":{\"$ref\":\"#/definitions/ErrorNode\"}},\"additionalProperties\":false},{\"description\":\"A resugared item. This variant is introduced before printing only. Phases must not produce this variant.\",\"type\":\"object\",\"required\":[\"Resugared\"],\"properties\":{\"Resugared\":{\"$ref\":\"#/definitions/ResugaredItemKind\"}},\"additionalProperties\":false},{\"description\":\"Item that is not implemented yet\",\"type\":\"string\",\"enum\":[\"NotImplementedYet\"]}]},\"ItemKind_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::ItemKind`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"ExternCrate\"],\"properties\":{\"ExternCrate\":{\"type\":\"array\",\"items\":[{\"type\":[\"string\",\"null\"]},{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Use\"],\"properties\":{\"Use\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/UsePath\"},{\"$ref\":\"#/definitions/UseKind\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Static\"],\"properties\":{\"Static\":{\"type\":\"array\",\"items\":[{\"type\":\"boolean\"},{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},{\"$ref\":\"#/definitions/Node_for_TyKind\"},{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}],\"maxItems\":4,\"minItems\":4}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Const\"],\"properties\":{\"Const\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},{\"$ref\":\"#/definitions/Generics_for_Decorated_for_ExprKind\"},{\"$ref\":\"#/definitions/Node_for_TyKind\"},{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"}],\"maxItems\":4,\"minItems\":4}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Fn\"],\"properties\":{\"Fn\":{\"type\":\"object\",\"required\":[\"def\",\"generics\",\"ident\"],\"properties\":{\"def\":{\"$ref\":\"#/definitions/FnDef_for_Decorated_for_ExprKind\"},\"generics\":{\"$ref\":\"#/definitions/Generics_for_Decorated_for_ExprKind\"},\"ident\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Macro\"],\"properties\":{\"Macro\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},{\"$ref\":\"#/definitions/MacroDef\"},{\"$ref\":\"#/definitions/MacroKind\"}],\"maxItems\":3,\"minItems\":3}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Mod\"],\"properties\":{\"Mod\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Item_for_Decorated_for_ExprKind\"}}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ForeignMod\"],\"properties\":{\"ForeignMod\":{\"type\":\"object\",\"required\":[\"abi\",\"items\"],\"properties\":{\"abi\":{\"$ref\":\"#/definitions/ExternAbi\"},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ForeignItem_for_Decorated_for_ExprKind\"}}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"GlobalAsm\"],\"properties\":{\"GlobalAsm\":{\"type\":\"object\",\"required\":[\"asm\"],\"properties\":{\"asm\":{\"$ref\":\"#/definitions/InlineAsm\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"TyAlias\"],\"properties\":{\"TyAlias\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},{\"$ref\":\"#/definitions/Generics_for_Decorated_for_ExprKind\"},{\"$ref\":\"#/definitions/Node_for_TyKind\"}],\"maxItems\":3,\"minItems\":3}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Enum\"],\"properties\":{\"Enum\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},{\"$ref\":\"#/definitions/Generics_for_Decorated_for_ExprKind\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Variant_for_Decorated_for_ExprKind\"}},{\"$ref\":\"#/definitions/ReprOptions\"}],\"maxItems\":4,\"minItems\":4}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Struct\"],\"properties\":{\"Struct\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},{\"$ref\":\"#/definitions/Generics_for_Decorated_for_ExprKind\"},{\"$ref\":\"#/definitions/VariantData\"}],\"maxItems\":3,\"minItems\":3}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Union\"],\"properties\":{\"Union\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},{\"$ref\":\"#/definitions/Generics_for_Decorated_for_ExprKind\"},{\"$ref\":\"#/definitions/VariantData\"}],\"maxItems\":3,\"minItems\":3}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Trait\"],\"properties\":{\"Trait\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Constness\"},{\"$ref\":\"#/definitions/IsAuto\"},{\"$ref\":\"#/definitions/Safety\"},{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},{\"$ref\":\"#/definitions/Generics_for_Decorated_for_ExprKind\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Clause\"}},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/TraitItem_for_Decorated_for_ExprKind\"}}],\"maxItems\":7,\"minItems\":7}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"TraitAlias\"],\"properties\":{\"TraitAlias\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},{\"$ref\":\"#/definitions/Generics_for_Decorated_for_ExprKind\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Clause\"}}],\"maxItems\":3,\"minItems\":3}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Impl\"],\"properties\":{\"Impl\":{\"$ref\":\"#/definitions/Impl_for_Decorated_for_ExprKind\"}},\"additionalProperties\":false}]},\"ItemQuoteOrigin\":{\"description\":\"The origin of a quote item.\",\"type\":\"object\",\"required\":[\"item_ident\",\"item_kind\",\"position\"],\"properties\":{\"item_ident\":{\"description\":\"From what item this quote was placed on?\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]},\"item_kind\":{\"description\":\"From which kind of item this quote was placed on?\",\"allOf\":[{\"$ref\":\"#/definitions/ItemQuoteOriginKind\"}]},\"position\":{\"description\":\"What was the position of the quote?\",\"allOf\":[{\"$ref\":\"#/definitions/ItemQuoteOriginPosition\"}]}}},\"ItemQuoteOriginKind\":{\"description\":\"The kind of a quote item\'s origin\",\"oneOf\":[{\"description\":\"A function\",\"type\":\"string\",\"enum\":[\"Fn\"]},{\"description\":\"A type alias\",\"type\":\"string\",\"enum\":[\"TyAlias\"]},{\"description\":\"A type definition (`enum`, `union`, `struct`)\",\"type\":\"string\",\"enum\":[\"Type\"]},{\"description\":\"A macro invocation TODO: drop\",\"type\":\"string\",\"enum\":[\"MacroInvocation\"]},{\"description\":\"A trait definition\",\"type\":\"string\",\"enum\":[\"Trait\"]},{\"description\":\"An `impl` block\",\"type\":\"string\",\"enum\":[\"Impl\"]},{\"description\":\"An alias\",\"type\":\"string\",\"enum\":[\"Alias\"]},{\"description\":\"A `use`\",\"type\":\"string\",\"enum\":[\"Use\"]},{\"description\":\"A quote\",\"type\":\"string\",\"enum\":[\"Quote\"]},{\"description\":\"An error\",\"type\":\"string\",\"enum\":[\"HaxError\"]},{\"description\":\"Something unknown\",\"type\":\"string\",\"enum\":[\"NotImplementedYet\"]}]},\"ItemQuoteOriginPosition\":{\"description\":\"The position of a quote item relative to its origin\",\"oneOf\":[{\"description\":\"The quote was placed before an item\",\"type\":\"string\",\"enum\":[\"Before\"]},{\"description\":\"The quote was placed after an item\",\"type\":\"string\",\"enum\":[\"After\"]},{\"description\":\"The quote replaces an item\",\"type\":\"string\",\"enum\":[\"Replace\"]}]},\"ItemRefContents\":{\"description\":\"Contents of `ItemRef`.\",\"type\":\"object\",\"required\":[\"def_id\",\"generic_args\",\"impl_exprs\"],\"properties\":{\"def_id\":{\"description\":\"The item being refered to.\",\"allOf\":[{\"$ref\":\"#/definitions/DefId\"}]},\"generic_args\":{\"description\":\"The generics passed to the item. If `in_trait` is `Some`, these are only the generics of the method/type/const itself; generics for the traits are available in `in_trait.unwrap().trait`.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericArg\"}},\"impl_exprs\":{\"description\":\"Witnesses of the trait clauses required by the item, e.g. `T: Sized` for `Option<T>` or `B: ToOwned` for `Cow<\'a, B>`. Same as above, for associated items this only includes clauses for the item itself.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ImplExpr\"}},\"in_trait\":{\"description\":\"If we\'re referring to a trait associated item, this gives the trait clause/impl we\'re referring to.\",\"anyOf\":[{\"$ref\":\"#/definitions/ImplExpr\"},{\"type\":\"null\"}]}}},\"Item_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::Item`] (and [`hir::ItemId`])\",\"type\":\"object\",\"required\":[\"attributes\",\"kind\",\"owner_id\",\"span\",\"vis_span\"],\"properties\":{\"attributes\":{\"$ref\":\"#/definitions/ItemAttributes\"},\"def_id\":{\"anyOf\":[{\"$ref\":\"#/definitions/DefId\"},{\"type\":\"null\"}]},\"kind\":{\"$ref\":\"#/definitions/ItemKind_for_Decorated_for_ExprKind\"},\"owner_id\":{\"$ref\":\"#/definitions/DefId\"},\"span\":{\"$ref\":\"#/definitions/Span\"},\"vis_span\":{\"$ref\":\"#/definitions/Span\"}}},\"Kind\":{\"oneOf\":[{\"type\":\"string\",\"enum\":[\"ExpectedMutRef\"]},{\"description\":\"Unsafe code is not supported\",\"type\":\"string\",\"enum\":[\"UnsafeBlock\"]},{\"description\":\"A feature is not currently implemented, but\",\"type\":\"object\",\"required\":[\"Unimplemented\"],\"properties\":{\"Unimplemented\":{\"type\":\"object\",\"properties\":{\"details\":{\"type\":[\"string\",\"null\"]},\"issue_id\":{\"description\":\"Issue on the GitHub repository\",\"type\":[\"integer\",\"null\"],\"format\":\"uint32\",\"minimum\":0.0}}}},\"additionalProperties\":false},{\"description\":\"Unknown error\",\"type\":\"object\",\"required\":[\"AssertionFailure\"],\"properties\":{\"AssertionFailure\":{\"type\":\"object\",\"required\":[\"details\"],\"properties\":{\"details\":{\"type\":\"string\"}}}},\"additionalProperties\":false},{\"description\":\"Unallowed mutable reference\",\"type\":\"string\",\"enum\":[\"UnallowedMutRef\"]},{\"description\":\"Unsupported macro invokation\",\"type\":\"object\",\"required\":[\"UnsupportedMacro\"],\"properties\":{\"UnsupportedMacro\":{\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"string\"}}}},\"additionalProperties\":false},{\"description\":\"Error parsing a macro invocation to a macro treated specifcially by a backend\",\"type\":\"object\",\"required\":[\"ErrorParsingMacroInvocation\"],\"properties\":{\"ErrorParsingMacroInvocation\":{\"type\":\"object\",\"required\":[\"details\",\"macro_id\"],\"properties\":{\"details\":{\"type\":\"string\"},\"macro_id\":{\"type\":\"string\"}}}},\"additionalProperties\":false},{\"description\":\"Mutation of bindings living outside a closure scope are not supported\",\"type\":\"object\",\"required\":[\"ClosureMutatesParentBindings\"],\"properties\":{\"ClosureMutatesParentBindings\":{\"type\":\"object\",\"required\":[\"bindings\"],\"properties\":{\"bindings\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}},\"additionalProperties\":false},{\"description\":\"Assignation of an arbitrary left-hand side is not supported. `lhs = e` is fine only when `lhs` is a combination of local identifiers, field accessors and index accessors.\",\"type\":\"string\",\"enum\":[\"ArbitraryLHS\"]},{\"description\":\"A phase explicitely rejected this chunk of code\",\"type\":\"object\",\"required\":[\"ExplicitRejection\"],\"properties\":{\"ExplicitRejection\":{\"type\":\"object\",\"required\":[\"reason\"],\"properties\":{\"reason\":{\"type\":\"string\"}}}},\"additionalProperties\":false},{\"description\":\"A backend doesn\'t support a tuple size\",\"type\":\"object\",\"required\":[\"UnsupportedTupleSize\"],\"properties\":{\"UnsupportedTupleSize\":{\"type\":\"object\",\"required\":[\"reason\",\"tuple_size\"],\"properties\":{\"reason\":{\"type\":\"string\"},\"tuple_size\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0}}}},\"additionalProperties\":false},{\"description\":\"&mut inputs should be trivial patterns\",\"type\":\"string\",\"enum\":[\"NonTrivialAndMutFnInput\"]},{\"description\":\"An hax attribute (from `hax-lib-macros`) was rejected\",\"type\":\"object\",\"required\":[\"AttributeRejected\"],\"properties\":{\"AttributeRejected\":{\"type\":\"object\",\"required\":[\"reason\"],\"properties\":{\"reason\":{\"type\":\"string\"}}}},\"additionalProperties\":false},{\"description\":\"A snippet of F* code could not be parsed\",\"type\":\"object\",\"required\":[\"FStarParseError\"],\"properties\":{\"FStarParseError\":{\"type\":\"object\",\"required\":[\"details\",\"fstar_snippet\"],\"properties\":{\"details\":{\"type\":\"string\"},\"fstar_snippet\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"LateParamRegion\":{\"description\":\"Reflects [`ty::LateParamRegion`]\",\"type\":\"object\",\"required\":[\"kind\",\"scope\"],\"properties\":{\"kind\":{\"$ref\":\"#/definitions/LateParamRegionKind\"},\"scope\":{\"$ref\":\"#/definitions/DefId\"}}},\"LateParamRegionKind\":{\"description\":\"Reflects [`ty::LateParamRegionKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"ClosureEnv\"]},{\"type\":\"object\",\"required\":[\"Anon\"],\"properties\":{\"Anon\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"NamedAnon\"],\"properties\":{\"NamedAnon\":{\"type\":\"array\",\"items\":[{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},{\"type\":\"string\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Named\"],\"properties\":{\"Named\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/DefId\"},{\"type\":\"string\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false}]},\"Lhs\":{\"description\":\"The left-hand side of an assignment.\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"LocalVar\"],\"properties\":{\"LocalVar\":{\"type\":\"object\",\"required\":[\"ty\",\"var\"],\"properties\":{\"ty\":{\"$ref\":\"#/definitions/Ty\"},\"var\":{\"$ref\":\"#/definitions/LocalId\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ArbitraryExpr\"],\"properties\":{\"ArbitraryExpr\":{\"$ref\":\"#/definitions/Expr\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"FieldAccessor\"],\"properties\":{\"FieldAccessor\":{\"type\":\"object\",\"required\":[\"e\",\"field\",\"ty\"],\"properties\":{\"e\":{\"$ref\":\"#/definitions/Lhs\"},\"field\":{\"$ref\":\"#/definitions/GlobalId\"},\"ty\":{\"$ref\":\"#/definitions/Ty\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ArrayAccessor\"],\"properties\":{\"ArrayAccessor\":{\"type\":\"object\",\"required\":[\"e\",\"index\",\"ty\"],\"properties\":{\"e\":{\"$ref\":\"#/definitions/Lhs\"},\"index\":{\"$ref\":\"#/definitions/Expr\"},\"ty\":{\"$ref\":\"#/definitions/Ty\"}}}},\"additionalProperties\":false}]},\"LifetimeParamKind\":{\"description\":\"Reflects [`hir::LifetimeParamKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Explicit\",\"Error\"]},{\"type\":\"object\",\"required\":[\"Elided\"],\"properties\":{\"Elided\":{\"$ref\":\"#/definitions/MissingLifetimeKind\"}},\"additionalProperties\":false}]},\"LintLevel\":{\"description\":\"Reflects [`thir::LintLevel`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Inherited\"]},{\"type\":\"object\",\"required\":[\"Explicit\"],\"properties\":{\"Explicit\":{\"$ref\":\"#/definitions/HirId\"}},\"additionalProperties\":false}]},\"LitFloatType\":{\"description\":\"Reflects [`ast::LitFloatType`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Unsuffixed\"]},{\"type\":\"object\",\"required\":[\"Suffixed\"],\"properties\":{\"Suffixed\":{\"$ref\":\"#/definitions/FloatTy\"}},\"additionalProperties\":false}]},\"LitIntType\":{\"description\":\"Reflects both [`ty::GenericArg`] and [`ty::GenericArgKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Unsuffixed\"]},{\"type\":\"object\",\"required\":[\"Signed\"],\"properties\":{\"Signed\":{\"$ref\":\"#/definitions/IntTy\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Unsigned\"],\"properties\":{\"Unsigned\":{\"$ref\":\"#/definitions/UintTy\"}},\"additionalProperties\":false}]},\"LitKind\":{\"description\":\"Reflects [`rustc_ast::ast::LitKind`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Str\"],\"properties\":{\"Str\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/StrStyle\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ByteStr\"],\"properties\":{\"ByteStr\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":{\"type\":\"integer\",\"format\":\"uint8\",\"minimum\":0.0}},{\"$ref\":\"#/definitions/StrStyle\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"CStr\"],\"properties\":{\"CStr\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":{\"type\":\"integer\",\"format\":\"uint8\",\"minimum\":0.0}},{\"$ref\":\"#/definitions/StrStyle\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Byte\"],\"properties\":{\"Byte\":{\"type\":\"integer\",\"format\":\"uint8\",\"minimum\":0.0}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Char\"],\"properties\":{\"Char\":{\"type\":\"string\",\"maxLength\":1,\"minLength\":1}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Int\"],\"properties\":{\"Int\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/LitIntType\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Float\"],\"properties\":{\"Float\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/LitFloatType\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Bool\"],\"properties\":{\"Bool\":{\"type\":\"boolean\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Err\"],\"properties\":{\"Err\":{\"$ref\":\"#/definitions/ErrorGuaranteed\"}},\"additionalProperties\":false}]},\"Literal\":{\"description\":\"Rust literal\",\"oneOf\":[{\"description\":\"String literal\",\"type\":\"object\",\"required\":[\"String\"],\"properties\":{\"String\":{\"$ref\":\"#/definitions/Symbol\"}},\"additionalProperties\":false},{\"description\":\"Character literal\",\"type\":\"object\",\"required\":[\"Char\"],\"properties\":{\"Char\":{\"type\":\"string\",\"maxLength\":1,\"minLength\":1}},\"additionalProperties\":false},{\"description\":\"Boolean literal\",\"type\":\"object\",\"required\":[\"Bool\"],\"properties\":{\"Bool\":{\"type\":\"boolean\"}},\"additionalProperties\":false},{\"description\":\"Integer literal\",\"type\":\"object\",\"required\":[\"Int\"],\"properties\":{\"Int\":{\"type\":\"object\",\"required\":[\"kind\",\"negative\",\"value\"],\"properties\":{\"kind\":{\"description\":\"Rust int type description (size + signedness)\",\"allOf\":[{\"$ref\":\"#/definitions/IntKind\"}]},\"negative\":{\"description\":\"True if `-`\",\"type\":\"boolean\"},\"value\":{\"description\":\"Value as u128\",\"allOf\":[{\"$ref\":\"#/definitions/Symbol\"}]}}}},\"additionalProperties\":false},{\"description\":\"Float literal\",\"type\":\"object\",\"required\":[\"Float\"],\"properties\":{\"Float\":{\"type\":\"object\",\"required\":[\"kind\",\"negative\",\"value\"],\"properties\":{\"kind\":{\"description\":\"Size\",\"allOf\":[{\"$ref\":\"#/definitions/FloatKind\"}]},\"negative\":{\"description\":\"True if `-`\",\"type\":\"boolean\"},\"value\":{\"description\":\"Value as a string\",\"allOf\":[{\"$ref\":\"#/definitions/Symbol\"}]}}}},\"additionalProperties\":false}]},\"Loc\":{\"description\":\"Reflects [`rustc_span::Loc`]\",\"type\":\"object\",\"required\":[\"col\",\"line\"],\"properties\":{\"col\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},\"line\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}}},\"LocalId\":{\"description\":\"Local identifier\",\"allOf\":[{\"$ref\":\"#/definitions/Symbol\"}]},\"LocalIdent\":{\"description\":\"Reflects [`thir::LocalVarId`]\",\"type\":\"object\",\"required\":[\"id\",\"name\"],\"properties\":{\"id\":{\"$ref\":\"#/definitions/HirId\"},\"name\":{\"type\":\"string\"}}},\"LogicalOp\":{\"description\":\"Reflects [`thir::LogicalOp`]\",\"type\":\"string\",\"enum\":[\"And\",\"Or\"]},\"LoopKind\":{\"description\":\"The kind of a loop (resugared by respective `Reconstruct...Loops` phases). Useful for `FunctionalizeLoops`.\",\"oneOf\":[{\"description\":\"An unconditional loop.\\n\\n# Example: `loop { ... }`\",\"type\":\"string\",\"enum\":[\"UnconditionalLoop\"]},{\"description\":\"A while loop.\\n\\n# Example: ```rust,ignore while(condition) { ... } ```\",\"type\":\"object\",\"required\":[\"WhileLoop\"],\"properties\":{\"WhileLoop\":{\"type\":\"object\",\"required\":[\"condition\"],\"properties\":{\"condition\":{\"description\":\"The boolean condition\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]}}}},\"additionalProperties\":false},{\"description\":\"A for loop.\\n\\n# Example: ```rust,ignore for i in iterator { ... } ```\",\"type\":\"object\",\"required\":[\"ForLoop\"],\"properties\":{\"ForLoop\":{\"type\":\"object\",\"required\":[\"iterator\",\"pat\"],\"properties\":{\"iterator\":{\"description\":\"The iterator we\'re looping on (`iterator` in the example).\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"pat\":{\"description\":\"The pattern of the for loop (`i` in the example).\",\"allOf\":[{\"$ref\":\"#/definitions/Pat\"}]}}}},\"additionalProperties\":false},{\"description\":\"A specialized for loop on a range.\\n\\n# Example: ```rust,ignore for i in start..end { ... } ```\",\"type\":\"object\",\"required\":[\"ForIndexLoop\"],\"properties\":{\"ForIndexLoop\":{\"type\":\"object\",\"required\":[\"end\",\"start\",\"var\",\"var_ty\"],\"properties\":{\"end\":{\"description\":\"Where the range ends (`end` in the example).\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"start\":{\"description\":\"Where the range begins (`start` in the example).\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"var\":{\"description\":\"The binding used for the iteration.\",\"allOf\":[{\"$ref\":\"#/definitions/LocalId\"}]},\"var_ty\":{\"description\":\"The type of the binding `var`.\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]}}}},\"additionalProperties\":false}]},\"LoopState\":{\"description\":\"Represent explicit mutation context for a loop. This is useful to make loops pure.\",\"type\":\"object\",\"required\":[\"body_pat\",\"init\"],\"properties\":{\"body_pat\":{\"description\":\"The pattern that destructures the state of the loop.\",\"allOf\":[{\"$ref\":\"#/definitions/Pat\"}]},\"init\":{\"description\":\"The initial state of the loop.\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]}}},\"MacroDef\":{\"description\":\"Reflects [`ast::MacroDef`]\",\"type\":\"object\",\"required\":[\"body\",\"macro_rules\"],\"properties\":{\"body\":{\"$ref\":\"#/definitions/DelimArgs\"},\"macro_rules\":{\"type\":\"boolean\"}}},\"MacroKind\":{\"description\":\"Reflects [`rustc_span::hygiene::MacroKind`]\",\"type\":\"string\",\"enum\":[\"Bang\",\"Attr\",\"Derive\"]},\"MessageFormat\":{\"type\":\"string\",\"enum\":[\"Human\",\"Json\"]},\"MetaItemLit\":{\"description\":\"Reflects [`rustc_ast::MetaItemLit`]\",\"type\":\"object\",\"required\":[\"kind\",\"span\",\"symbol\"],\"properties\":{\"kind\":{\"$ref\":\"#/definitions/LitKind\"},\"span\":{\"$ref\":\"#/definitions/Span\"},\"suffix\":{\"type\":[\"string\",\"null\"]},\"symbol\":{\"type\":\"string\"}}},\"Metadata\":{\"description\":\"Extra information attached to syntax nodes.\",\"type\":\"object\",\"required\":[\"attributes\",\"span\"],\"properties\":{\"attributes\":{\"description\":\"Rust attributes.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute2\"}},\"span\":{\"description\":\"The location in the source code.\",\"allOf\":[{\"$ref\":\"#/definitions/Span2\"}]}}},\"MissingLifetimeKind\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"MissingLifetimeKind\"],\"properties\":{\"MissingLifetimeKind\":{\"type\":\"object\",\"required\":[\"todo\"],\"properties\":{\"todo\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"Movability\":{\"description\":\"Reflects [`hir::Movability`]\",\"type\":\"string\",\"enum\":[\"Static\",\"Movable\"]},\"MutBorrowKind\":{\"description\":\"Reflects [`rustc_middle::mir::MutBorrowKind`]\",\"type\":\"string\",\"enum\":[\"Default\",\"TwoPhaseBorrow\",\"ClosureCapture\"]},\"Namespace\":{\"type\":\"object\",\"required\":[\"chunks\"],\"properties\":{\"chunks\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/NamespaceChunk\"}}}},\"NamespaceChunk\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"Glob\"],\"properties\":{\"Glob\":{\"$ref\":\"#/definitions/Glob\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Exact\"],\"properties\":{\"Exact\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"Node_for_DefIdContents\":{\"description\":\"A node is a bundle of an ID with a value.\",\"type\":\"object\",\"required\":[\"id\",\"value\"],\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},\"value\":{\"$ref\":\"#/definitions/DefIdContents\"}}},\"Node_for_ItemRefContents\":{\"description\":\"A node is a bundle of an ID with a value.\",\"type\":\"object\",\"required\":[\"id\",\"value\"],\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},\"value\":{\"$ref\":\"#/definitions/ItemRefContents\"}}},\"Node_for_TyKind\":{\"description\":\"A node is a bundle of an ID with a value.\",\"type\":\"object\",\"required\":[\"id\",\"value\"],\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},\"value\":{\"$ref\":\"#/definitions/TyKind\"}}},\"NonMacroAttrKind\":{\"description\":\"Reflects [`hir::def::NonMacroAttrKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Tool\",\"DeriveHelper\",\"DeriveHelperCompat\"]},{\"type\":\"object\",\"required\":[\"Builtin\"],\"properties\":{\"Builtin\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"OutlivesPredicate_for_Node_for_TyKind\":{\"description\":\"Reflects [`ty::OutlivesPredicate`] as a named struct instead of a tuple struct. This is because the script converting JSONSchema types to OCaml doesn\'t support tuple structs, and this is the only tuple struct in the whole AST.\",\"type\":\"object\",\"required\":[\"lhs\",\"rhs\"],\"properties\":{\"lhs\":{\"$ref\":\"#/definitions/Node_for_TyKind\"},\"rhs\":{\"$ref\":\"#/definitions/Region\"}}},\"OutlivesPredicate_for_Region\":{\"description\":\"Reflects [`ty::OutlivesPredicate`] as a named struct instead of a tuple struct. This is because the script converting JSONSchema types to OCaml doesn\'t support tuple structs, and this is the only tuple struct in the whole AST.\",\"type\":\"object\",\"required\":[\"lhs\",\"rhs\"],\"properties\":{\"lhs\":{\"$ref\":\"#/definitions/Region\"},\"rhs\":{\"$ref\":\"#/definitions/Region\"}}},\"Output\":{\"type\":\"object\",\"required\":[\"diagnostics\",\"files\"],\"properties\":{\"debug_json\":{\"type\":[\"string\",\"null\"]},\"diagnostics\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Diagnostics\"}},\"files\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/File\"}}}},\"OwnerId\":{\"description\":\"Identifier used to track the origin Rust item of a span\",\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},\"Param\":{\"description\":\"Reflects [`thir::Param`]\",\"type\":\"object\",\"required\":[\"attributes\",\"ty\"],\"properties\":{\"attributes\":{\"description\":\"attributes on this parameter\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute\"}},\"hir_id\":{\"anyOf\":[{\"$ref\":\"#/definitions/HirId\"},{\"type\":\"null\"}]},\"pat\":{\"anyOf\":[{\"$ref\":\"#/definitions/Decorated_for_PatKind\"},{\"type\":\"null\"}]},\"self_kind\":{\"anyOf\":[{\"$ref\":\"#/definitions/ImplicitSelfKind\"},{\"type\":\"null\"}]},\"ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"},\"ty_span\":{\"anyOf\":[{\"$ref\":\"#/definitions/Span\"},{\"type\":\"null\"}]}}},\"Param2\":{\"description\":\"A function or closure parameter.\\n\\n# Example: ```rust,ignore (mut x, y): (T, u8) ```\",\"type\":\"object\",\"required\":[\"attributes\",\"pat\",\"ty\"],\"properties\":{\"attributes\":{\"description\":\"Optionally, some attributes present on the parameter.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute2\"}},\"pat\":{\"description\":\"The pattern part (left-hand side) of a parameter (`(mut x, y)` in the example).\",\"allOf\":[{\"$ref\":\"#/definitions/Pat\"}]},\"ty\":{\"description\":\"The type part (right-rand side) of a parameter (`(T, u8)` in the example).\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]},\"ty_span\":{\"description\":\"The span of the type part (if available).\",\"anyOf\":[{\"$ref\":\"#/definitions/Span2\"},{\"type\":\"null\"}]}}},\"ParamConst\":{\"description\":\"Reflects [`ty::ParamConst`]\",\"type\":\"object\",\"required\":[\"index\",\"name\"],\"properties\":{\"index\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},\"name\":{\"type\":\"string\"}}},\"ParamName\":{\"description\":\"Reflects [`hir::ParamName`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Fresh\",\"Error\"]},{\"type\":\"object\",\"required\":[\"Plain\"],\"properties\":{\"Plain\":{\"$ref\":\"#/definitions/LocalIdent\"}},\"additionalProperties\":false}]},\"ParamTy\":{\"description\":\"Reflects [`ty::ParamTy`]\",\"type\":\"object\",\"required\":[\"index\",\"name\"],\"properties\":{\"index\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},\"name\":{\"type\":\"string\"}}},\"Pat\":{\"description\":\"A typed pattern with metadata.\",\"type\":\"object\",\"required\":[\"kind\",\"meta\",\"ty\"],\"properties\":{\"kind\":{\"description\":\"The kind of pattern.\",\"allOf\":[{\"$ref\":\"#/definitions/PatKind2\"}]},\"meta\":{\"description\":\"Source span and attributes.\",\"allOf\":[{\"$ref\":\"#/definitions/Metadata\"}]},\"ty\":{\"description\":\"The type of this pattern.\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]}}},\"PatKind\":{\"description\":\"Reflects [`thir::PatKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Wild\",\"Missing\",\"Never\"]},{\"type\":\"object\",\"required\":[\"AscribeUserType\"],\"properties\":{\"AscribeUserType\":{\"type\":\"object\",\"required\":[\"ascription\",\"subpattern\"],\"properties\":{\"ascription\":{\"$ref\":\"#/definitions/Ascription\"},\"subpattern\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Binding\"],\"properties\":{\"Binding\":{\"type\":\"object\",\"required\":[\"is_primary\",\"mode\",\"ty\",\"var\"],\"properties\":{\"is_primary\":{\"type\":\"boolean\"},\"mode\":{\"$ref\":\"#/definitions/BindingMode\"},\"subpattern\":{\"anyOf\":[{\"$ref\":\"#/definitions/Decorated_for_PatKind\"},{\"type\":\"null\"}]},\"ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"},\"var\":{\"$ref\":\"#/definitions/LocalIdent\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Variant\"],\"properties\":{\"Variant\":{\"type\":\"object\",\"required\":[\"info\",\"item\",\"subpatterns\"],\"properties\":{\"info\":{\"description\":\"Extra info about the variant.\",\"allOf\":[{\"$ref\":\"#/definitions/VariantInformations\"}]},\"item\":{\"description\":\"Reference to variant item definition, with appropriate generics.\",\"allOf\":[{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}]},\"subpatterns\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/FieldPat\"}}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Tuple\"],\"properties\":{\"Tuple\":{\"type\":\"object\",\"required\":[\"subpatterns\"],\"properties\":{\"subpatterns\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"}}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Deref\"],\"properties\":{\"Deref\":{\"type\":\"object\",\"required\":[\"subpattern\"],\"properties\":{\"subpattern\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"DerefPattern\"],\"properties\":{\"DerefPattern\":{\"type\":\"object\",\"required\":[\"subpattern\"],\"properties\":{\"subpattern\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Constant\"],\"properties\":{\"Constant\":{\"type\":\"object\",\"required\":[\"value\"],\"properties\":{\"value\":{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ExpandedConstant\"],\"properties\":{\"ExpandedConstant\":{\"type\":\"object\",\"required\":[\"def_id\",\"subpattern\"],\"properties\":{\"def_id\":{\"$ref\":\"#/definitions/DefId\"},\"subpattern\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Range\"],\"properties\":{\"Range\":{\"$ref\":\"#/definitions/PatRange\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Slice\"],\"properties\":{\"Slice\":{\"type\":\"object\",\"required\":[\"prefix\",\"suffix\"],\"properties\":{\"prefix\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"}},\"slice\":{\"anyOf\":[{\"$ref\":\"#/definitions/Decorated_for_PatKind\"},{\"type\":\"null\"}]},\"suffix\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"}}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Array\"],\"properties\":{\"Array\":{\"type\":\"object\",\"required\":[\"prefix\",\"suffix\"],\"properties\":{\"prefix\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"}},\"slice\":{\"anyOf\":[{\"$ref\":\"#/definitions/Decorated_for_PatKind\"},{\"type\":\"null\"}]},\"suffix\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"}}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Or\"],\"properties\":{\"Or\":{\"type\":\"object\",\"required\":[\"pats\"],\"properties\":{\"pats\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"}}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Error\"],\"properties\":{\"Error\":{\"$ref\":\"#/definitions/ErrorGuaranteed\"}},\"additionalProperties\":false}]},\"PatKind2\":{\"description\":\"Represents the various kinds of patterns.\",\"oneOf\":[{\"description\":\"Wildcard pattern\\n\\n# Example: `_`\",\"type\":\"string\",\"enum\":[\"Wild\"]},{\"description\":\"An ascription pattern\\n\\n# Example: `p : ty`\",\"type\":\"object\",\"required\":[\"Ascription\"],\"properties\":{\"Ascription\":{\"type\":\"object\",\"required\":[\"pat\",\"ty\"],\"properties\":{\"pat\":{\"description\":\"The inner pattern (`p` in the example)\",\"allOf\":[{\"$ref\":\"#/definitions/Pat\"}]},\"ty\":{\"description\":\"The (spanned) type ascription (`ty` in the example)\",\"allOf\":[{\"$ref\":\"#/definitions/SpannedTy\"}]}}}},\"additionalProperties\":false},{\"description\":\"An or pattern\\n\\n# Example: `p | q` Always contains at least 2 sub-patterns\",\"type\":\"object\",\"required\":[\"Or\"],\"properties\":{\"Or\":{\"type\":\"object\",\"required\":[\"sub_pats\"],\"properties\":{\"sub_pats\":{\"description\":\"A vector of sub-patterns\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Pat\"}}}}},\"additionalProperties\":false},{\"description\":\"An array pattern\\n\\n# Example: `[p, q]`\",\"type\":\"object\",\"required\":[\"Array\"],\"properties\":{\"Array\":{\"type\":\"object\",\"required\":[\"args\"],\"properties\":{\"args\":{\"description\":\"A vector of patterns\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Pat\"}}}}},\"additionalProperties\":false},{\"description\":\"A dereference pattern\\n\\n# Example: `&p`\",\"type\":\"object\",\"required\":[\"Deref\"],\"properties\":{\"Deref\":{\"type\":\"object\",\"required\":[\"sub_pat\"],\"properties\":{\"sub_pat\":{\"description\":\"The inner pattern\",\"allOf\":[{\"$ref\":\"#/definitions/Pat\"}]}}}},\"additionalProperties\":false},{\"description\":\"A constant pattern\\n\\n# Example: `1`\",\"type\":\"object\",\"required\":[\"Constant\"],\"properties\":{\"Constant\":{\"type\":\"object\",\"required\":[\"lit\"],\"properties\":{\"lit\":{\"description\":\"The literal\",\"allOf\":[{\"$ref\":\"#/definitions/Literal\"}]}}}},\"additionalProperties\":false},{\"description\":\"A variable binding.\\n\\n# Examples: - `x` \u{2192} `mutable: false` - `mut x` \u{2192} `mutable: true` - `ref x` \u{2192} `mode: ByRef(Shared)`\",\"type\":\"object\",\"required\":[\"Binding\"],\"properties\":{\"Binding\":{\"type\":\"object\",\"required\":[\"mode\",\"mutable\",\"var\"],\"properties\":{\"mode\":{\"description\":\"The binding mode, e.g. [`BindingMode::Shared`] for `ref x`.\",\"allOf\":[{\"$ref\":\"#/definitions/BindingMode2\"}]},\"mutable\":{\"description\":\"Is the binding mutable? E.g. `x` is not mutable, `mut x` is.\",\"type\":\"boolean\"},\"sub_pat\":{\"description\":\"The sub-pattern, if any. For example, this is `Some(inner_pat)` for the pattern `variable @ inner_pat`.\",\"anyOf\":[{\"$ref\":\"#/definitions/Pat\"},{\"type\":\"null\"}]},\"var\":{\"description\":\"The variable introduced by the binding pattern.\",\"allOf\":[{\"$ref\":\"#/definitions/LocalId\"}]}}}},\"additionalProperties\":false},{\"description\":\"A constructor pattern\\n\\n# Example: ```rust,ignore Foo(x) ```\",\"type\":\"object\",\"required\":[\"Construct\"],\"properties\":{\"Construct\":{\"type\":\"object\",\"required\":[\"constructor\",\"fields\",\"is_record\",\"is_struct\"],\"properties\":{\"constructor\":{\"description\":\"The identifier of the constructor we are matching\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]},\"fields\":{\"description\":\"A list of fields.\",\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/GlobalId\"},{\"$ref\":\"#/definitions/Pat\"}],\"maxItems\":2,\"minItems\":2}},\"is_record\":{\"description\":\"Are we constructing a record? E.g. a struct or a variant with named fields.\",\"type\":\"boolean\"},\"is_struct\":{\"description\":\"Is this a struct? (meaning, *not* a variant from an enum)\",\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"description\":\"A resugared pattern. This variant is introduced before printing only. Phases must not produce this variant.\",\"type\":\"object\",\"required\":[\"Resugared\"],\"properties\":{\"Resugared\":{\"$ref\":\"#/definitions/ResugaredPatKind\"}},\"additionalProperties\":false},{\"description\":\"Fallback constructor to carry errors.\",\"type\":\"object\",\"required\":[\"Error\"],\"properties\":{\"Error\":{\"$ref\":\"#/definitions/ErrorNode\"}},\"additionalProperties\":false}]},\"PatRange\":{\"description\":\"Reflects [`thir::PatRange`]\",\"type\":\"object\",\"required\":[\"end\",\"hi\",\"lo\"],\"properties\":{\"end\":{\"$ref\":\"#/definitions/RangeEnd\"},\"hi\":{\"$ref\":\"#/definitions/PatRangeBoundary\"},\"lo\":{\"$ref\":\"#/definitions/PatRangeBoundary\"}}},\"PatRangeBoundary\":{\"description\":\"Reflects [`thir::PatRangeBoundary`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"NegInfinity\",\"PosInfinity\"]},{\"type\":\"object\",\"required\":[\"Finite\"],\"properties\":{\"Finite\":{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"}},\"additionalProperties\":false}]},\"PathOrDash\":{\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Dash\"]},{\"type\":\"object\",\"required\":[\"Path\"],\"properties\":{\"Path\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"PathSegment\":{\"description\":\"Reflects [`hir::PathSegment`]\",\"type\":\"object\",\"required\":[\"hir_id\",\"ident\",\"infer_args\",\"res\"],\"properties\":{\"args\":{\"anyOf\":[{\"$ref\":\"#/definitions/HirGenericArgs\"},{\"type\":\"null\"}]},\"hir_id\":{\"$ref\":\"#/definitions/HirId\"},\"ident\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},\"infer_args\":{\"type\":\"boolean\"},\"res\":{\"$ref\":\"#/definitions/Res\"}}},\"Placeholder_for_BoundRegion\":{\"description\":\"Reflects [`ty::Placeholder`]\",\"type\":\"object\",\"required\":[\"bound\",\"universe\"],\"properties\":{\"bound\":{\"$ref\":\"#/definitions/BoundRegion\"},\"universe\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}}},\"Placeholder_for_BoundTy\":{\"description\":\"Reflects [`ty::Placeholder`]\",\"type\":\"object\",\"required\":[\"bound\",\"universe\"],\"properties\":{\"bound\":{\"$ref\":\"#/definitions/BoundTy\"},\"universe\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}}},\"Placeholder_for_uint\":{\"description\":\"Reflects [`ty::Placeholder`]\",\"type\":\"object\",\"required\":[\"bound\",\"universe\"],\"properties\":{\"bound\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},\"universe\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}}},\"PointerCoercion\":{\"description\":\"Reflects [`ty::adjustment::PointerCoercion`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"ReifyFnPointer\",\"UnsafeFnPointer\",\"MutToConstPointer\",\"ArrayToPointer\",\"Unsize\"]},{\"type\":\"object\",\"required\":[\"ClosureFnPointer\"],\"properties\":{\"ClosureFnPointer\":{\"$ref\":\"#/definitions/Safety\"}},\"additionalProperties\":false}]},\"PrimTy\":{\"description\":\"Reflects [`hir::PrimTy`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Str\",\"Bool\",\"Char\"]},{\"type\":\"object\",\"required\":[\"Int\"],\"properties\":{\"Int\":{\"$ref\":\"#/definitions/IntTy\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Uint\"],\"properties\":{\"Uint\":{\"$ref\":\"#/definitions/UintTy\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Float\"],\"properties\":{\"Float\":{\"$ref\":\"#/definitions/FloatTy\"}},\"additionalProperties\":false}]},\"PrimitiveTy\":{\"description\":\"Built-in primitive types.\",\"oneOf\":[{\"description\":\"The `bool` type.\",\"type\":\"string\",\"enum\":[\"Bool\"]},{\"description\":\"An integer type (e.g., `i32`, `u8`).\",\"type\":\"object\",\"required\":[\"Int\"],\"properties\":{\"Int\":{\"$ref\":\"#/definitions/IntKind\"}},\"additionalProperties\":false},{\"description\":\"A float type (e.g. `f32`)\",\"type\":\"object\",\"required\":[\"Float\"],\"properties\":{\"Float\":{\"$ref\":\"#/definitions/FloatKind\"}},\"additionalProperties\":false},{\"description\":\"The `char` type\",\"type\":\"string\",\"enum\":[\"Char\"]},{\"description\":\"The `str` type\",\"type\":\"string\",\"enum\":[\"Str\"]}]},\"ProVerifOptions\":{\"type\":\"object\",\"required\":[\"assume_items\"],\"properties\":{\"assume_items\":{\"description\":\"Items for which hax should extract a default-valued process macro with a corresponding type signature. This flag expects a space-separated list of inclusion clauses. An inclusion clause is a Rust path prefixed with `+`, `+!` or `-`. `-` means implementation only, `+!` means interface only and `+` means implementation and interface. Rust path chunks can be either a concrete string, or a glob (just like bash globs, but with Rust paths).\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/InclusionClause\"}}}},\"ProfilingData\":{\"type\":\"object\",\"required\":[\"context\",\"errored\",\"memory\",\"quantity\",\"time_ns\"],\"properties\":{\"context\":{\"description\":\"What context are we profiling?\",\"type\":\"string\"},\"errored\":{\"description\":\"Did the action errored? This is important since a failed action might have exited very early, making the numbers unusable.\",\"type\":\"boolean\"},\"memory\":{\"description\":\"How much memory this took? This is using OCaml\'s `Gc.minor_words`, and is probably not very precise.\",\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0},\"quantity\":{\"description\":\"How many things were processed? (often, this is the number of items a phase processes)\",\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0},\"time_ns\":{\"description\":\"How long this took?\",\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0}}},\"ProjectionPredicate\":{\"description\":\"Expresses a constraints over an associated type.\\n\\nFor instance: ```text fn f<T : Foo<S = String>>(...) ^^^^^^^^^^ ``` (provided the trait `Foo` has an associated type `S`).\",\"type\":\"object\",\"required\":[\"assoc_item\",\"impl_expr\",\"ty\"],\"properties\":{\"assoc_item\":{\"description\":\"The `Type` in `Ty: Trait<..., Type = U>`.\",\"allOf\":[{\"$ref\":\"#/definitions/AssocItem\"}]},\"impl_expr\":{\"description\":\"The `impl Trait for Ty` in `Ty: Trait<..., Type = U>`.\",\"allOf\":[{\"$ref\":\"#/definitions/ImplExpr\"}]},\"ty\":{\"description\":\"The type `U` in `Ty: Trait<..., Type = U>`.\",\"allOf\":[{\"$ref\":\"#/definitions/Node_for_TyKind\"}]}}},\"ProjectionPredicate2\":{\"description\":\"A projection predicate expresses a constraint over an associated type: ```rust,ignore fn f<T: Foo<S = String>>(...) ``` In this example `Foo` has an associated type `S`.\",\"type\":\"object\",\"required\":[\"assoc_item\",\"impl_\",\"ty\"],\"properties\":{\"assoc_item\":{\"description\":\"The associated type being projected\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]},\"impl_\":{\"description\":\"The impl expression we project from\",\"allOf\":[{\"$ref\":\"#/definitions/ImplExpr2\"}]},\"ty\":{\"description\":\"The equality constraint on the associated type\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]}}},\"PromotedId\":{\"description\":\"The id of a promoted MIR constant.\\n\\nReflects [`rustc_middle::mir::Promoted`].\",\"type\":\"object\",\"required\":[\"id\"],\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"uint32\",\"minimum\":0.0}}},\"QPath\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"QPath\"],\"properties\":{\"QPath\":{\"type\":\"object\",\"required\":[\"todo\"],\"properties\":{\"todo\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"Query\":{\"description\":\"A query for the OCaml engine\",\"type\":\"object\",\"required\":[\"hax_version\",\"impl_infos\",\"kind\"],\"properties\":{\"hax_version\":{\"description\":\"The version of hax currently used\",\"type\":\"string\"},\"impl_infos\":{\"description\":\"Dictionary from `DefId`s to `impl_infos`\",\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/DefId\"},{\"$ref\":\"#/definitions/ImplInfos\"}],\"maxItems\":2,\"minItems\":2}},\"kind\":{\"description\":\"The kind of query we want to send to the engine\",\"allOf\":[{\"$ref\":\"#/definitions/QueryKind\"}]}}},\"QueryKind\":{\"description\":\"The payload of the query. [`Response`] below mirrors this enum to represent the response from the engine.\",\"oneOf\":[{\"description\":\"Ask the OCaml engine to import the given THIR from the frontend\",\"type\":\"object\",\"required\":[\"ImportThir\"],\"properties\":{\"ImportThir\":{\"type\":\"object\",\"required\":[\"apply_phases\",\"input\"],\"properties\":{\"apply_phases\":{\"description\":\"Temporary option to enable a set of default phases\",\"type\":\"boolean\"},\"input\":{\"description\":\"The input THIR items\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Item_for_Decorated_for_ExprKind\"}}}}},\"additionalProperties\":false}]},\"Quote\":{\"description\":\"Represents an inlined piece of backend code\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/QuoteContent\"}},\"QuoteContent\":{\"description\":\"A QuoteContent is a component of a quote: it can be a verbatim string, a Rust expression to embed in the quote, a pattern etc.\\n\\n# Example: ```rust,ignore fstar!(\\\"f ${x + 3} + 10\\\") ``` results in `[Verbatim(\\\"f\\\"), Expr([[x + 3]]), Verbatim(\\\" + 10\\\")]`\",\"oneOf\":[{\"description\":\"A verbatim chunk of backend code.\",\"type\":\"object\",\"required\":[\"Verbatim\"],\"properties\":{\"Verbatim\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"description\":\"A Rust expression to inject in the quote.\",\"type\":\"object\",\"required\":[\"Expr\"],\"properties\":{\"Expr\":{\"$ref\":\"#/definitions/Expr\"}},\"additionalProperties\":false},{\"description\":\"A Rust pattern to inject in the quote.\",\"type\":\"object\",\"required\":[\"Pattern\"],\"properties\":{\"Pattern\":{\"$ref\":\"#/definitions/Pat\"}},\"additionalProperties\":false},{\"description\":\"A Rust type to inject in the quote.\",\"type\":\"object\",\"required\":[\"Ty\"],\"properties\":{\"Ty\":{\"$ref\":\"#/definitions/Ty\"}},\"additionalProperties\":false}]},\"RangeEnd\":{\"description\":\"Reflects [`hir::RangeEnd`]\",\"type\":\"string\",\"enum\":[\"Included\",\"Excluded\"]},\"RealFileName\":{\"description\":\"Reflects [`rustc_span::RealFileName`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"LocalPath\"],\"properties\":{\"LocalPath\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Remapped\"],\"properties\":{\"Remapped\":{\"type\":\"object\",\"required\":[\"virtual_name\"],\"properties\":{\"local_path\":{\"type\":[\"string\",\"null\"]},\"virtual_name\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"Region\":{\"description\":\"Reflects [`ty::Region`]\",\"type\":\"object\",\"required\":[\"kind\"],\"properties\":{\"kind\":{\"$ref\":\"#/definitions/RegionKind\"}}},\"Region2\":{\"description\":\"Represent a Rust lifetime region.\",\"type\":\"null\"},\"RegionKind\":{\"description\":\"Reflects [`ty::RegionKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"ReStatic\",\"ReErased\"]},{\"type\":\"object\",\"required\":[\"ReEarlyParam\"],\"properties\":{\"ReEarlyParam\":{\"$ref\":\"#/definitions/EarlyParamRegion\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ReBound\"],\"properties\":{\"ReBound\":{\"type\":\"array\",\"items\":[{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},{\"$ref\":\"#/definitions/BoundRegion\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ReLateParam\"],\"properties\":{\"ReLateParam\":{\"$ref\":\"#/definitions/LateParamRegion\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ReVar\"],\"properties\":{\"ReVar\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"RePlaceholder\"],\"properties\":{\"RePlaceholder\":{\"$ref\":\"#/definitions/Placeholder_for_BoundRegion\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"ReError\"],\"properties\":{\"ReError\":{\"$ref\":\"#/definitions/ErrorGuaranteed\"}},\"additionalProperties\":false}]},\"ReprFlags\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"ReprFlags\"],\"properties\":{\"ReprFlags\":{\"type\":\"object\",\"required\":[\"todo\"],\"properties\":{\"todo\":{\"type\":\"string\"}}}},\"additionalProperties\":false}]},\"ReprOptions\":{\"description\":\"Reflects [`ty::ReprOptions`]\",\"type\":\"object\",\"required\":[\"field_shuffle_seed\",\"flags\",\"typ\"],\"properties\":{\"align\":{\"anyOf\":[{\"$ref\":\"#/definitions/Align\"},{\"type\":\"null\"}]},\"field_shuffle_seed\":{\"type\":\"integer\",\"format\":\"uint64\",\"minimum\":0.0},\"flags\":{\"$ref\":\"#/definitions/ReprFlags\"},\"int\":{\"anyOf\":[{\"$ref\":\"#/definitions/IntegerType\"},{\"type\":\"null\"}]},\"pack\":{\"anyOf\":[{\"$ref\":\"#/definitions/Align\"},{\"type\":\"null\"}]},\"typ\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}},\"Res\":{\"description\":\"Reflects [`hir::def::Res`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"ToolMod\",\"Err\"]},{\"type\":\"object\",\"required\":[\"Def\"],\"properties\":{\"Def\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/DefKind\"},{\"$ref\":\"#/definitions/DefId\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"PrimTy\"],\"properties\":{\"PrimTy\":{\"$ref\":\"#/definitions/PrimTy\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"SelfTyParam\"],\"properties\":{\"SelfTyParam\":{\"type\":\"object\",\"required\":[\"trait_\"],\"properties\":{\"trait_\":{\"$ref\":\"#/definitions/DefId\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"SelfTyAlias\"],\"properties\":{\"SelfTyAlias\":{\"type\":\"object\",\"required\":[\"alias_to\",\"forbid_generic\",\"is_trait_impl\"],\"properties\":{\"alias_to\":{\"$ref\":\"#/definitions/DefId\"},\"forbid_generic\":{\"type\":\"boolean\"},\"is_trait_impl\":{\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"SelfCtor\"],\"properties\":{\"SelfCtor\":{\"$ref\":\"#/definitions/DefId\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Local\"],\"properties\":{\"Local\":{\"$ref\":\"#/definitions/HirId\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"NonMacroAttr\"],\"properties\":{\"NonMacroAttr\":{\"$ref\":\"#/definitions/NonMacroAttrKind\"}},\"additionalProperties\":false}]},\"ReservedSuffix\":{\"description\":\"[`ReservedSuffix`] helps at deriving fresh identifiers out of existing (Rust) ones.\",\"oneOf\":[{\"description\":\"Precondition of a function-like item.\",\"type\":\"string\",\"enum\":[\"Pre\"]},{\"description\":\"Postcondition of a function-like item.\",\"type\":\"string\",\"enum\":[\"Post\"]},{\"description\":\"Cast function for an `enum` discriminant.\",\"type\":\"string\",\"enum\":[\"Cast\"]}]},\"Response\":{\"description\":\"A Response after a [`Query`]\",\"oneOf\":[{\"description\":\"Return imported THIR as an internal AST from Rust engine\",\"type\":\"object\",\"required\":[\"ImportThir\"],\"properties\":{\"ImportThir\":{\"type\":\"object\",\"required\":[\"output\"],\"properties\":{\"output\":{\"description\":\"The output Rust AST items\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Item\"}}}}},\"additionalProperties\":false}]},\"ResugaredExprKind\":{\"description\":\"Resugared variants for expressions. This represent extra printing-only expressions, see [`super::ExprKind::Resugared`].\",\"type\":\"string\",\"enum\":[]},\"ResugaredImplItemKind\":{\"description\":\"Resugared variants for impl. items. This represent extra printing-only impl. items, see [`super::ImplItemKind::Resugared`].\",\"type\":\"string\",\"enum\":[]},\"ResugaredItemKind\":{\"description\":\"Resugared variants for items. This represent extra printing-only items, see [`super::ItemKind::Resugared`].\",\"type\":\"string\",\"enum\":[]},\"ResugaredPatKind\":{\"description\":\"Resugared variants for patterns. This represent extra printing-only patterns, see [`super::PatKind::Resugared`].\",\"type\":\"string\",\"enum\":[]},\"ResugaredTraitItemKind\":{\"description\":\"Resugared variants for trait items. This represent extra printing-only trait items, see [`super::TraitItemKind::Resugared`].\",\"type\":\"string\",\"enum\":[]},\"ResugaredTyKind\":{\"description\":\"Resugared variants for types. This represent extra printing-only types, see [`super::TyKind::Resugared`].\",\"type\":\"string\",\"enum\":[]},\"Result_of_String_or_String\":{\"oneOf\":[{\"type\":\"object\",\"required\":[\"Ok\"],\"properties\":{\"Ok\":{\"type\":\"string\"}}},{\"type\":\"object\",\"required\":[\"Err\"],\"properties\":{\"Err\":{\"type\":\"string\"}}}]},\"RustcVersion\":{\"description\":\"Reflects [`rustc_attr_data_structures::RustcVersion`]\",\"type\":\"object\",\"required\":[\"major\",\"minor\",\"patch\"],\"properties\":{\"major\":{\"type\":\"integer\",\"format\":\"uint16\",\"minimum\":0.0},\"minor\":{\"type\":\"integer\",\"format\":\"uint16\",\"minimum\":0.0},\"patch\":{\"type\":\"integer\",\"format\":\"uint16\",\"minimum\":0.0}}},\"Safety\":{\"description\":\"Reflects [`hir::Safety`]\",\"type\":\"string\",\"enum\":[\"Unsafe\",\"Safe\"]},\"SafetyKind\":{\"description\":\"Safety level of a function.\",\"oneOf\":[{\"description\":\"Safe function (default).\",\"type\":\"string\",\"enum\":[\"Safe\"]},{\"description\":\"Unsafe function.\",\"type\":\"string\",\"enum\":[\"Unsafe\"]}]},\"Scope\":{\"description\":\"Reflects [`rustc_middle::middle::region::Scope`]\",\"type\":\"object\",\"required\":[\"data\",\"local_id\"],\"properties\":{\"data\":{\"$ref\":\"#/definitions/ScopeData\"},\"local_id\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}}},\"ScopeData\":{\"description\":\"Reflects [`rustc_middle::middle::region::ScopeData`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Node\",\"CallSite\",\"Arguments\",\"Destruction\",\"IfThen\",\"IfThenRescope\"]},{\"type\":\"object\",\"required\":[\"Remainder\"],\"properties\":{\"Remainder\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}},\"additionalProperties\":false}]},\"Signedness\":{\"description\":\"Signedness of a numeric type\",\"oneOf\":[{\"description\":\"Signed type (`i32`, `i64`, ...)\",\"type\":\"string\",\"enum\":[\"Signed\"]},{\"description\":\"Unsigned type (`u32`, `u64`, ...)\",\"type\":\"string\",\"enum\":[\"Unsigned\"]}]},\"SourceMap\":{\"type\":\"object\",\"required\":[\"file\",\"mappings\",\"names\",\"sourceRoot\",\"sources\",\"sourcesContent\",\"version\"],\"properties\":{\"file\":{\"type\":\"string\"},\"mappings\":{\"type\":\"string\"},\"names\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"sourceRoot\":{\"type\":\"string\"},\"sources\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"sourcesContent\":{\"type\":\"array\",\"items\":{\"type\":[\"string\",\"null\"]}},\"version\":{\"type\":\"integer\",\"format\":\"uint8\",\"minimum\":0.0}}},\"Span\":{\"description\":\"Reflects [`rustc_span::Span`]\",\"type\":\"object\",\"required\":[\"filename\",\"hi\",\"lo\"],\"properties\":{\"filename\":{\"$ref\":\"#/definitions/FileName\"},\"hi\":{\"$ref\":\"#/definitions/Loc\"},\"lo\":{\"$ref\":\"#/definitions/Loc\"}}},\"Span2\":{\"description\":\"Position of a Rust source\",\"type\":\"object\",\"required\":[\"data\",\"id\"],\"properties\":{\"data\":{\"description\":\"A vector of spans as defined by the frontend. This is useful for supporting in a trivial way union of spans.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Span\"}},\"id\":{\"description\":\"A unique identifier. Since we store spans almost for every node of the AST, having a unique identifier for spans gives us a fine-grained way of refering to sub-nodes in debugging context. This id is indeed mostly used by the web debugger.\",\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},\"owner_hint\":{\"description\":\"A reference to the item in which this span lives. This information is used for debugging and profiling purposes, e.g. for `cargo hax into --stats backend`.\",\"anyOf\":[{\"$ref\":\"#/definitions/OwnerId\"},{\"type\":\"null\"}]}}},\"SpannedTy\":{\"description\":\"A type with its associated span.\",\"type\":\"object\",\"required\":[\"span\",\"ty\"],\"properties\":{\"span\":{\"description\":\"The span of the type\",\"allOf\":[{\"$ref\":\"#/definitions/Span2\"}]},\"ty\":{\"description\":\"The type itself\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]}}},\"Spanned_for_LitKind\":{\"description\":\"Reflects [`rustc_span::source_map::Spanned`]\",\"type\":\"object\",\"required\":[\"node\",\"span\"],\"properties\":{\"node\":{\"$ref\":\"#/definitions/LitKind\"},\"span\":{\"$ref\":\"#/definitions/Span\"}}},\"Stmt\":{\"description\":\"Reflects [`thir::Stmt`]\",\"type\":\"object\",\"required\":[\"kind\"],\"properties\":{\"kind\":{\"$ref\":\"#/definitions/StmtKind\"}}},\"StmtKind\":{\"description\":\"Reflects [`thir::StmtKind`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Expr\"],\"properties\":{\"Expr\":{\"type\":\"object\",\"required\":[\"expr\",\"scope\"],\"properties\":{\"expr\":{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},\"scope\":{\"$ref\":\"#/definitions/Scope\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Let\"],\"properties\":{\"Let\":{\"type\":\"object\",\"required\":[\"attributes\",\"init_scope\",\"lint_level\",\"pattern\",\"remainder_scope\"],\"properties\":{\"attributes\":{\"description\":\"The attribute on this `let` binding\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute\"}},\"else_block\":{\"anyOf\":[{\"$ref\":\"#/definitions/Block\"},{\"type\":\"null\"}]},\"init_scope\":{\"$ref\":\"#/definitions/Scope\"},\"initializer\":{\"anyOf\":[{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},{\"type\":\"null\"}]},\"lint_level\":{\"$ref\":\"#/definitions/LintLevel\"},\"pattern\":{\"$ref\":\"#/definitions/Decorated_for_PatKind\"},\"remainder_scope\":{\"$ref\":\"#/definitions/Scope\"}}}},\"additionalProperties\":false}]},\"StrStyle\":{\"description\":\"Reflects [`rustc_ast::ast::StrStyle`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Cooked\"]},{\"type\":\"object\",\"required\":[\"Raw\"],\"properties\":{\"Raw\":{\"type\":\"integer\",\"format\":\"uint8\",\"minimum\":0.0}},\"additionalProperties\":false}]},\"Symbol\":{\"description\":\"Interned string identifier for the AST\",\"type\":\"string\"},\"Term\":{\"description\":\"Reflects [`ty::Term`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Ty\"],\"properties\":{\"Ty\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Const\"],\"properties\":{\"Const\":{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"}},\"additionalProperties\":false}]},\"ToEngine\":{\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Pong\"]},{\"type\":\"object\",\"required\":[\"PrettyPrintedDiagnostic\"],\"properties\":{\"PrettyPrintedDiagnostic\":{\"type\":\"string\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"PrettyPrintedRust\"],\"properties\":{\"PrettyPrintedRust\":{\"$ref\":\"#/definitions/Result_of_String_or_String\"}},\"additionalProperties\":false}]},\"TraitGoal\":{\"description\":\"Represents an instantiated trait that needs to be implemented.\\n\\n# Example: A bound `_: std::ops::Add<u8>`\",\"type\":\"object\",\"required\":[\"args\",\"trait_\"],\"properties\":{\"args\":{\"description\":\"`[u8]` in the example.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericValue\"}},\"trait_\":{\"description\":\"`std::ops::Add` in the example.\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]}}},\"TraitItem\":{\"description\":\"Represents a trait item (associated type, fn, or default)\",\"type\":\"object\",\"required\":[\"generics\",\"ident\",\"kind\",\"meta\"],\"properties\":{\"generics\":{\"description\":\"The generics this associated item carries.\\n\\n# Example: The generics `<B>` on `f`, **not** `<A>`. ```rust,ignore trait<A> ... { fn f<B>(){} } ```\",\"allOf\":[{\"$ref\":\"#/definitions/Generics\"}]},\"ident\":{\"description\":\"The identifier of the associateed item.\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]},\"kind\":{\"description\":\"The kind of trait item we are dealing with (an associated type or function).\",\"allOf\":[{\"$ref\":\"#/definitions/TraitItemKind\"}]},\"meta\":{\"description\":\"Source span and attributes.\",\"allOf\":[{\"$ref\":\"#/definitions/Metadata\"}]}}},\"TraitItemKind\":{\"description\":\"Represents the kinds of trait items\",\"oneOf\":[{\"description\":\"An associated type\",\"type\":\"object\",\"required\":[\"Type\"],\"properties\":{\"Type\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/ImplIdent\"}}},\"additionalProperties\":false},{\"description\":\"An associated function\",\"type\":\"object\",\"required\":[\"Fn\"],\"properties\":{\"Fn\":{\"$ref\":\"#/definitions/Ty\"}},\"additionalProperties\":false},{\"description\":\"An associated function with a default body. A arrow type (like what is given in `TraitItemKind::Ty`) can be reconstructed using the types of the parameters and of the body.\\n\\n# Example: ```rust,ignore impl ... { fn f(x: u8) -> u8 { x + 2 } } ```\",\"type\":\"object\",\"required\":[\"Default\"],\"properties\":{\"Default\":{\"type\":\"object\",\"required\":[\"body\",\"params\"],\"properties\":{\"body\":{\"description\":\"The default body of the associated function (`x + 2` in the example).\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"params\":{\"description\":\"The parameters of the associated function (`[x: u8]` in the example).\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Param2\"}}}}},\"additionalProperties\":false},{\"description\":\"A resugared trait item. This variant is introduced before printing only. Phases must not produce this variant.\",\"type\":\"object\",\"required\":[\"Resugared\"],\"properties\":{\"Resugared\":{\"$ref\":\"#/definitions/ResugaredTraitItemKind\"}},\"additionalProperties\":false}]},\"TraitItemKind_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::TraitItemKind`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Const\"],\"properties\":{\"Const\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Node_for_TyKind\"},{\"anyOf\":[{\"$ref\":\"#/definitions/Decorated_for_ExprKind\"},{\"type\":\"null\"}]}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"description\":\"Reflects a required [`hir::TraitItemKind::Fn`]\",\"type\":\"object\",\"required\":[\"RequiredFn\"],\"properties\":{\"RequiredFn\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/FnSig\"},{\"type\":\"array\",\"items\":{\"type\":[\"array\",\"null\"],\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2}}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"description\":\"Reflects a provided [`hir::TraitItemKind::Fn`]\",\"type\":\"object\",\"required\":[\"ProvidedFn\"],\"properties\":{\"ProvidedFn\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/FnSig\"},{\"$ref\":\"#/definitions/FnDef_for_Decorated_for_ExprKind\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Type\"],\"properties\":{\"Type\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Clause\"}},{\"anyOf\":[{\"$ref\":\"#/definitions/Node_for_TyKind\"},{\"type\":\"null\"}]}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false}]},\"TraitItem_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::TraitItem`]\",\"type\":\"object\",\"required\":[\"attributes\",\"defaultness\",\"generics\",\"ident\",\"kind\",\"owner_id\",\"span\"],\"properties\":{\"attributes\":{\"description\":\"The attributes on this trait item\",\"allOf\":[{\"$ref\":\"#/definitions/ItemAttributes\"}]},\"defaultness\":{\"$ref\":\"#/definitions/Defaultness\"},\"generics\":{\"$ref\":\"#/definitions/Generics_for_Decorated_for_ExprKind\"},\"ident\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},\"kind\":{\"$ref\":\"#/definitions/TraitItemKind_for_Decorated_for_ExprKind\"},\"owner_id\":{\"$ref\":\"#/definitions/DefId\"},\"span\":{\"$ref\":\"#/definitions/Span\"}}},\"TraitPredicate\":{\"description\":\"Reflects [`ty::TraitPredicate`]\",\"type\":\"object\",\"required\":[\"is_positive\",\"trait_ref\"],\"properties\":{\"is_positive\":{\"type\":\"boolean\"},\"trait_ref\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}}},\"TranslationOptions\":{\"type\":\"object\",\"required\":[\"include_namespaces\"],\"properties\":{\"include_namespaces\":{\"description\":\"Controls which Rust item should be extracted or not.\\n\\nThis is a space-separated list of patterns prefixed with a modifier, read from the left to the right.\\n\\nA pattern is a Rust path (say `mycrate::mymod::myfn`) where globs are allowed: `*` matches any name (e.g. `mycrate::mymod::myfn` is matched by `mycrate::*::myfn`), while `**` matches any subpath, empty included (e.g. `mycrate::mymod::myfn` is matched by `**::myfn`). By default, hax includes all items. Then, the patterns prefixed by modifiers are processed from left to right, excluding or including items. Each pattern selects a number of item. The modifiers are: {n}{n} - `+`: includes the selected items with their dependencies, transitively (e.g. if function `f` calls `g` which in turn calls `h`, then `+k::f` includes `f`, `g` and `h`) {n} - `+~`: includes the selected items with their direct dependencies only (following the previous example, `+~k::f` would select `f` and `g`, but not `h`) {n} - `+!`: includes the selected items, without their dependencies (`+!k::f` would only select `f`) {n} - `+:`: only includes the type of the selected items (no dependencies). This includes full struct and enums, but only the type signature of functions and trait impls (except when they contain associated types), dropping their bodies.\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/InclusionClause\"}}}},\"Ty\":{\"description\":\"A indirection for the representation of types.\",\"allOf\":[{\"$ref\":\"#/definitions/TyKind2\"}]},\"TyFnSig\":{\"description\":\"Reflects [`ty::FnSig`]\",\"type\":\"object\",\"required\":[\"abi\",\"c_variadic\",\"inputs\",\"output\",\"safety\"],\"properties\":{\"abi\":{\"$ref\":\"#/definitions/ExternAbi\"},\"c_variadic\":{\"type\":\"boolean\"},\"inputs\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}},\"output\":{\"$ref\":\"#/definitions/Node_for_TyKind\"},\"safety\":{\"$ref\":\"#/definitions/Safety\"}}},\"TyGenerics\":{\"description\":\"Reflects [`ty::Generics`]\",\"type\":\"object\",\"required\":[\"has_self\",\"params\",\"parent_count\"],\"properties\":{\"has_late_bound_regions\":{\"anyOf\":[{\"$ref\":\"#/definitions/Span\"},{\"type\":\"null\"}]},\"has_self\":{\"type\":\"boolean\"},\"params\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericParamDef\"}},\"parent\":{\"anyOf\":[{\"$ref\":\"#/definitions/DefId\"},{\"type\":\"null\"}]},\"parent_count\":{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0}}},\"TyKind\":{\"description\":\"Reflects [`ty::TyKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Bool\",\"Char\",\"Str\",\"Never\",\"Error\"]},{\"type\":\"object\",\"required\":[\"Int\"],\"properties\":{\"Int\":{\"$ref\":\"#/definitions/IntTy\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Uint\"],\"properties\":{\"Uint\":{\"$ref\":\"#/definitions/UintTy\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Float\"],\"properties\":{\"Float\":{\"$ref\":\"#/definitions/FloatTy\"}},\"additionalProperties\":false},{\"description\":\"Reflects [`ty::TyKind::FnDef`]\",\"type\":\"object\",\"required\":[\"FnDef\"],\"properties\":{\"FnDef\":{\"type\":\"object\",\"required\":[\"fn_sig\",\"item\"],\"properties\":{\"fn_sig\":{\"$ref\":\"#/definitions/Binder_for_TyFnSig\"},\"item\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}}}},\"additionalProperties\":false},{\"description\":\"Reflects [`ty::TyKind::FnPtr`]\",\"type\":\"object\",\"required\":[\"Arrow\"],\"properties\":{\"Arrow\":{\"$ref\":\"#/definitions/Binder_for_TyFnSig\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Closure\"],\"properties\":{\"Closure\":{\"$ref\":\"#/definitions/ClosureArgs\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Adt\"],\"properties\":{\"Adt\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Foreign\"],\"properties\":{\"Foreign\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Array\"],\"properties\":{\"Array\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Node_for_TyKind\"},{\"$ref\":\"#/definitions/Decorated_for_ConstantExprKind\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Slice\"],\"properties\":{\"Slice\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"RawPtr\"],\"properties\":{\"RawPtr\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Node_for_TyKind\"},{\"type\":\"boolean\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Ref\"],\"properties\":{\"Ref\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Region\"},{\"$ref\":\"#/definitions/Node_for_TyKind\"},{\"type\":\"boolean\"}],\"maxItems\":3,\"minItems\":3}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Dynamic\"],\"properties\":{\"Dynamic\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Binder_for_ExistentialPredicate\"}},{\"$ref\":\"#/definitions/Region\"},{\"$ref\":\"#/definitions/DynKind\"}],\"maxItems\":3,\"minItems\":3}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Coroutine\"],\"properties\":{\"Coroutine\":{\"$ref\":\"#/definitions/Node_for_ItemRefContents\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Tuple\"],\"properties\":{\"Tuple\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Node_for_TyKind\"}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Alias\"],\"properties\":{\"Alias\":{\"$ref\":\"#/definitions/Alias\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Param\"],\"properties\":{\"Param\":{\"$ref\":\"#/definitions/ParamTy\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Bound\"],\"properties\":{\"Bound\":{\"type\":\"array\",\"items\":[{\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},{\"$ref\":\"#/definitions/BoundTy\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Placeholder\"],\"properties\":{\"Placeholder\":{\"$ref\":\"#/definitions/Placeholder_for_BoundTy\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Infer\"],\"properties\":{\"Infer\":{\"$ref\":\"#/definitions/InferTy\"}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Todo\"],\"properties\":{\"Todo\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"TyKind2\":{\"description\":\"Describes any Rust type (e.g., `i32`, `Vec<T>`, `fn(i32) -> bool`).\",\"oneOf\":[{\"description\":\"A primitive type.\\n\\n# Example: `i32`, `bool`\",\"type\":\"object\",\"required\":[\"Primitive\"],\"properties\":{\"Primitive\":{\"$ref\":\"#/definitions/PrimitiveTy\"}},\"additionalProperties\":false},{\"description\":\"A tuple type.\\n\\n# Example: `(i32, bool)`\",\"type\":\"object\",\"required\":[\"Tuple\"],\"properties\":{\"Tuple\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Ty\"}}},\"additionalProperties\":false},{\"description\":\"A type application (generic type).\\n\\n# Example: `Vec<i32>`\",\"type\":\"object\",\"required\":[\"App\"],\"properties\":{\"App\":{\"type\":\"object\",\"required\":[\"args\",\"head\"],\"properties\":{\"args\":{\"description\":\"The arguments (`[i32]` in the example).\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/GenericValue\"}},\"head\":{\"description\":\"The type being applied (`Vec` in the example).\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]}}}},\"additionalProperties\":false},{\"description\":\"A function or closure type.\\n\\n# Example: `fn(i32) -> bool` or `Fn(i32) -> bool`\",\"type\":\"object\",\"required\":[\"Arrow\"],\"properties\":{\"Arrow\":{\"type\":\"object\",\"required\":[\"inputs\",\"output\"],\"properties\":{\"inputs\":{\"description\":\"`i32` in the example\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Ty\"}},\"output\":{\"description\":\"`bool` in the example\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]}}}},\"additionalProperties\":false},{\"description\":\"A reference type.\\n\\n# Example: `&i32`, `&mut i32`\",\"type\":\"object\",\"required\":[\"Ref\"],\"properties\":{\"Ref\":{\"type\":\"object\",\"required\":[\"inner\",\"mutable\",\"region\"],\"properties\":{\"inner\":{\"description\":\"The type inside the reference\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]},\"mutable\":{\"description\":\"Is the reference mutable?\",\"type\":\"boolean\"},\"region\":{\"description\":\"The region of this reference\",\"allOf\":[{\"$ref\":\"#/definitions/Region2\"}]}}}},\"additionalProperties\":false},{\"description\":\"A parameter type\",\"type\":\"object\",\"required\":[\"Param\"],\"properties\":{\"Param\":{\"$ref\":\"#/definitions/LocalId\"}},\"additionalProperties\":false},{\"description\":\"A slice type.\\n\\n# Example: `&[i32]`\",\"type\":\"object\",\"required\":[\"Slice\"],\"properties\":{\"Slice\":{\"$ref\":\"#/definitions/Ty\"}},\"additionalProperties\":false},{\"description\":\"An array type.\\n\\n# Example: `&[i32; 10]`\",\"type\":\"object\",\"required\":[\"Array\"],\"properties\":{\"Array\":{\"type\":\"object\",\"required\":[\"length\",\"ty\"],\"properties\":{\"length\":{\"description\":\"The length of the array\",\"allOf\":[{\"$ref\":\"#/definitions/Expr\"}]},\"ty\":{\"description\":\"The type of the items of the array\",\"allOf\":[{\"$ref\":\"#/definitions/Ty\"}]}}}},\"additionalProperties\":false},{\"description\":\"A raw pointer type\",\"type\":\"string\",\"enum\":[\"RawPointer\"]},{\"description\":\"An associated type\\n\\n# Example: ```rust,ignore fn f<T: Tr>() -> T::A {...} ```\",\"type\":\"object\",\"required\":[\"AssociatedType\"],\"properties\":{\"AssociatedType\":{\"type\":\"object\",\"required\":[\"impl_\",\"item\"],\"properties\":{\"impl_\":{\"description\":\"Impl expr for `Tr<T>` in the example\",\"allOf\":[{\"$ref\":\"#/definitions/ImplExpr2\"}]},\"item\":{\"description\":\"`Tr::A` in the example\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]}}}},\"additionalProperties\":false},{\"description\":\"An opaque type\\n\\n# Example: ```rust,ignore type Foo = impl Bar; ```\",\"type\":\"object\",\"required\":[\"Opaque\"],\"properties\":{\"Opaque\":{\"$ref\":\"#/definitions/GlobalId\"}},\"additionalProperties\":false},{\"description\":\"A `dyn` type\\n\\n# Example: ```rust,ignore dyn Tr ```\",\"type\":\"object\",\"required\":[\"Dyn\"],\"properties\":{\"Dyn\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/DynTraitGoal\"}}},\"additionalProperties\":false},{\"description\":\"A resugared type. This variant is introduced before printing only. Phases must not produce this variant.\",\"type\":\"object\",\"required\":[\"Resugared\"],\"properties\":{\"Resugared\":{\"$ref\":\"#/definitions/ResugaredTyKind\"}},\"additionalProperties\":false},{\"description\":\"Fallback constructor to carry errors.\",\"type\":\"object\",\"required\":[\"Error\"],\"properties\":{\"Error\":{\"$ref\":\"#/definitions/ErrorNode\"}},\"additionalProperties\":false}]},\"UintTy\":{\"description\":\"Reflects [`rustc_type_ir::UintTy`]\",\"type\":\"string\",\"enum\":[\"Usize\",\"U8\",\"U16\",\"U32\",\"U64\",\"U128\"]},\"UnOp\":{\"description\":\"Reflects [`rustc_middle::mir::UnOp`]\",\"type\":\"string\",\"enum\":[\"Not\",\"Neg\",\"PtrMetadata\"]},\"UseKind\":{\"description\":\"Reflects [`hir::UseKind`]\",\"oneOf\":[{\"type\":\"string\",\"enum\":[\"Glob\",\"ListStem\"]},{\"type\":\"object\",\"required\":[\"Single\"],\"properties\":{\"Single\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false}]},\"UsePath\":{\"description\":\"Reflects [`hir::UsePath`]\",\"type\":\"object\",\"required\":[\"res\",\"segments\",\"span\"],\"properties\":{\"rename\":{\"type\":[\"string\",\"null\"]},\"res\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"$ref\":\"#/definitions/Res\"},{\"type\":\"null\"}]}},\"segments\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/PathSegment\"}},\"span\":{\"$ref\":\"#/definitions/Span\"}}},\"UserType\":{\"description\":\"Reflects [`ty::UserType`]: this is currently disabled, and everything is printed as debug in the [`UserType::Todo`] variant.\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Todo\"],\"properties\":{\"Todo\":{\"type\":\"string\"}},\"additionalProperties\":false}]},\"Variance\":{\"description\":\"Reflects [`ty::Variance`]\",\"type\":\"string\",\"enum\":[\"Covariant\",\"Invariant\",\"Contravariant\",\"Bivariant\"]},\"Variant\":{\"description\":\"A variant of an enum or struct. In our representation structs always have one variant with an argument for each field.\",\"type\":\"object\",\"required\":[\"arguments\",\"attributes\",\"is_record\",\"name\"],\"properties\":{\"arguments\":{\"description\":\"Fields of this variant (named or anonymous)\",\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/GlobalId\"},{\"$ref\":\"#/definitions/Ty\"},{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute2\"}}],\"maxItems\":3,\"minItems\":3}},\"attributes\":{\"description\":\"Attributes of the variant\",\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute2\"}},\"is_record\":{\"description\":\"True if fields are named\",\"type\":\"boolean\"},\"name\":{\"description\":\"Name of the variant\",\"allOf\":[{\"$ref\":\"#/definitions/GlobalId\"}]}}},\"VariantData\":{\"description\":\"Reflects [`hir::VariantData`]\",\"oneOf\":[{\"type\":\"object\",\"required\":[\"Struct\"],\"properties\":{\"Struct\":{\"type\":\"object\",\"required\":[\"fields\",\"recovered\"],\"properties\":{\"fields\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/HirFieldDef\"}},\"recovered\":{\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Tuple\"],\"properties\":{\"Tuple\":{\"type\":\"array\",\"items\":[{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/HirFieldDef\"}},{\"$ref\":\"#/definitions/HirId\"},{\"$ref\":\"#/definitions/DefId\"}],\"maxItems\":3,\"minItems\":3}},\"additionalProperties\":false},{\"type\":\"object\",\"required\":[\"Unit\"],\"properties\":{\"Unit\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/HirId\"},{\"$ref\":\"#/definitions/DefId\"}],\"maxItems\":2,\"minItems\":2}},\"additionalProperties\":false}]},\"VariantInformations\":{\"description\":\"Describe a variant\",\"type\":\"object\",\"required\":[\"kind\",\"typ\",\"type_namespace\",\"variant\"],\"properties\":{\"kind\":{\"$ref\":\"#/definitions/VariantKind\"},\"typ\":{\"$ref\":\"#/definitions/DefId\"},\"type_namespace\":{\"$ref\":\"#/definitions/DefId\"},\"variant\":{\"$ref\":\"#/definitions/DefId\"}}},\"VariantKind\":{\"description\":\"Describe the kind of a variant\",\"oneOf\":[{\"description\":\"The variant is the only variant of a `struct` type\",\"type\":\"object\",\"required\":[\"Struct\"],\"properties\":{\"Struct\":{\"type\":\"object\",\"required\":[\"named\"],\"properties\":{\"named\":{\"description\":\"Are the fields on this struct all named?\",\"type\":\"boolean\"}}}},\"additionalProperties\":false},{\"description\":\"The variant is the only variant of a `union` type\",\"type\":\"string\",\"enum\":[\"Union\"]},{\"description\":\"The variant is one of the many variants of a `enum` type\",\"type\":\"object\",\"required\":[\"Enum\"],\"properties\":{\"Enum\":{\"type\":\"object\",\"required\":[\"index\",\"named\"],\"properties\":{\"index\":{\"description\":\"The index of this variant in the `enum`\",\"type\":\"integer\",\"format\":\"uint\",\"minimum\":0.0},\"named\":{\"description\":\"Are the fields on this struct all named?\",\"type\":\"boolean\"}}}},\"additionalProperties\":false}]},\"Variant_for_Decorated_for_ExprKind\":{\"description\":\"Reflects [`hir::Variant`]\",\"type\":\"object\",\"required\":[\"attributes\",\"data\",\"def_id\",\"discr\",\"hir_id\",\"ident\",\"span\"],\"properties\":{\"attributes\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Attribute\"}},\"data\":{\"$ref\":\"#/definitions/VariantData\"},\"def_id\":{\"$ref\":\"#/definitions/DefId\"},\"discr\":{\"$ref\":\"#/definitions/DiscriminantDefinition\"},\"disr_expr\":{\"anyOf\":[{\"$ref\":\"#/definitions/AnonConst_for_Decorated_for_ExprKind\"},{\"type\":\"null\"}]},\"hir_id\":{\"$ref\":\"#/definitions/HirId\"},\"ident\":{\"type\":\"array\",\"items\":[{\"type\":\"string\"},{\"$ref\":\"#/definitions/Span\"}],\"maxItems\":2,\"minItems\":2},\"span\":{\"$ref\":\"#/definitions/Span\"}}},\"WithDefIds_for_Decorated_for_ExprKind\":{\"type\":\"object\",\"required\":[\"comments\",\"def_ids\",\"impl_infos\",\"items\"],\"properties\":{\"comments\":{\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/Span\"},{\"type\":\"string\"}],\"maxItems\":2,\"minItems\":2}},\"def_ids\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/DefId\"}},\"impl_infos\":{\"type\":\"array\",\"items\":{\"type\":\"array\",\"items\":[{\"$ref\":\"#/definitions/DefId\"},{\"$ref\":\"#/definitions/ImplInfos\"}],\"maxItems\":2,\"minItems\":2}},\"items\":{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Item_for_Decorated_for_ExprKind\"}}}}}}";