=========================== Floating attributes =========================== [@@@id] [@@@I.D] [@@@id let x = x] [@@@id : t] [@@@id : type t type t] [@@@id ? A x] --- (compilation_unit (floating_attribute (attribute_id)) (floating_attribute (attribute_id)) (floating_attribute (attribute_id) (attribute_payload (value_definition (let_binding (value_name) (value_path (value_name)))))) (floating_attribute (attribute_id) (attribute_payload (type_constructor_path (type_constructor)))) (floating_attribute (attribute_id) (attribute_payload (type_definition (type_binding (type_constructor))) (type_definition (type_binding (type_constructor))))) (floating_attribute (attribute_id) (attribute_payload (constructor_pattern (constructor_path (constructor_name)) (value_name))))) =========================== Item attributes =========================== x [@@id] [@@id] let x = x [@@id] and x = x [@@id] module M = M [@@id] --- (compilation_unit (value_path (value_name)) (item_attribute (attribute_id)) (item_attribute (attribute_id)) (value_definition (let_binding (value_name) (value_path (value_name)) (item_attribute (attribute_id))) (let_binding (value_name) (value_path (value_name)) (item_attribute (attribute_id)))) (module_definition (module_binding (module_name) (module_name) (item_attribute (attribute_id))))) =========================== Attributes =========================== let%id x = x and [@id] x = x [@id] type t = A [@id] [@id] type t = { x : t [@id]; [@id] } module M = struct [@id] end [@id];; x ;%id x --- (compilation_unit (value_definition (attribute_id) (let_binding (value_name) (value_path (value_name))) (attribute (attribute_id)) (let_binding (value_name) (value_path (value_name)) (attribute (attribute_id)))) (type_definition (type_binding (type_constructor) (variant_declaration (constructor_declaration (constructor_name) (attribute (attribute_id)) (attribute (attribute_id)))))) (type_definition (type_binding (type_constructor) (record_declaration (field_declaration (field_name) (type_constructor_path (type_constructor)) (attribute (attribute_id))) (attribute (attribute_id))))) (module_definition (module_binding (module_name) (structure (attribute (attribute_id))) (attribute (attribute_id)))) (sequence_expression (value_path (value_name)) (attribute_id) (value_path (value_name)))) =========================== Item extension =========================== [%%id];; {%%M.id|payload|};; {%%id ab|payload|ab};; --- (compilation_unit (item_extension (attribute_id)) (quoted_item_extension (attribute_id)) (quoted_item_extension (attribute_id))) =========================== Extension =========================== module type T = [%id] module M = [%id] type t = [%id] let x = [%id] let x = {%id|payload|} let x = {%id ab|payload|ab};; --- (compilation_unit (module_type_definition (module_type_name) (extension (attribute_id))) (module_definition (module_binding (module_name) (extension (attribute_id)))) (type_definition (type_binding (type_constructor) (extension (attribute_id)))) (value_definition (let_binding (value_name) (extension (attribute_id)))) (value_definition (let_binding (value_name) (quoted_extension (attribute_id)))) (value_definition (let_binding (value_name) (quoted_extension (attribute_id)))))