code_ownership 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (445) hide show
  1. checksums.yaml +4 -4
  2. data/Cargo.lock +30 -27
  3. data/bin/codeownership +1 -0
  4. data/ext/cargo-vendor/bindgen-0.72.1/.cargo-checksum.json +1 -0
  5. data/ext/cargo-vendor/bindgen-0.72.1/.cargo_vcs_info.json +6 -0
  6. data/ext/cargo-vendor/bindgen-0.72.1/Cargo.lock +485 -0
  7. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/Cargo.toml +72 -38
  8. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/Cargo.toml.orig +26 -28
  9. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/README.md +2 -2
  10. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/build.rs +2 -2
  11. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/callbacks.rs +114 -10
  12. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/clang.rs +184 -83
  13. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/bitfield_unit.rs +20 -10
  14. data/ext/cargo-vendor/bindgen-0.72.1/codegen/bitfield_unit_raw_ref_macros.rs +191 -0
  15. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/bitfield_unit_tests.rs +4 -4
  16. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/dyngen.rs +77 -20
  17. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/error.rs +2 -3
  18. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/helpers.rs +106 -66
  19. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/impl_debug.rs +32 -34
  20. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/impl_partialeq.rs +5 -5
  21. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/mod.rs +1197 -679
  22. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/postprocessing/merge_extern_blocks.rs +3 -3
  23. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/postprocessing/sort_semantically.rs +3 -3
  24. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/serialize.rs +33 -34
  25. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/struct_layout.rs +33 -26
  26. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/deps.rs +1 -1
  27. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/diagnostics.rs +22 -65
  28. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/extra_assertions.rs +1 -1
  29. data/ext/cargo-vendor/bindgen-0.72.1/features.rs +570 -0
  30. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/derive.rs +69 -75
  31. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/has_destructor.rs +5 -6
  32. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/has_float.rs +13 -17
  33. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/has_type_param_in_array.rs +22 -32
  34. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/has_vtable.rs +11 -16
  35. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/mod.rs +15 -20
  36. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/sizedness.rs +13 -21
  37. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/analysis/template_params.rs +20 -26
  38. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/annotations.rs +18 -15
  39. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/comment.rs +2 -2
  40. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/comp.rs +54 -29
  41. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/context.rs +205 -136
  42. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/derive.rs +5 -10
  43. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/dot.rs +3 -4
  44. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/enum_ty.rs +5 -7
  45. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/function.rs +27 -28
  46. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/int.rs +7 -6
  47. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/item.rs +92 -132
  48. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/item_kind.rs +7 -7
  49. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/layout.rs +11 -23
  50. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/module.rs +2 -2
  51. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/objc.rs +22 -33
  52. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/template.rs +26 -33
  53. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/traversal.rs +4 -5
  54. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/ty.rs +63 -88
  55. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/var.rs +73 -38
  56. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/lib.rs +186 -144
  57. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/log_stubs.rs +6 -0
  58. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/options/as_args.rs +1 -1
  59. data/ext/cargo-vendor/bindgen-0.72.1/options/cli.rs +1151 -0
  60. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/options/mod.rs +234 -27
  61. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/regex_set.rs +23 -28
  62. data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/time.rs +4 -4
  63. data/ext/cargo-vendor/rb-sys-0.9.130/.cargo-checksum.json +1 -0
  64. data/ext/cargo-vendor/rb-sys-0.9.130/.cargo_vcs_info.json +6 -0
  65. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/Cargo.lock +23 -31
  66. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/Cargo.toml +5 -4
  67. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/Cargo.toml.orig +5 -4
  68. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/build/main.rs +7 -1
  69. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/build/stable_api_config.rs +30 -6
  70. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/build/version.rs +14 -6
  71. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/bindings.rs +1 -0
  72. data/ext/cargo-vendor/rb-sys-0.9.130/src/macros.rs +701 -0
  73. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/memory.rs +17 -6
  74. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/stable_api/compiled.c +169 -10
  75. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/stable_api/compiled.rs +209 -14
  76. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_2_7.rs +770 -0
  77. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_3_0.rs +773 -0
  78. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_3_1.rs +766 -0
  79. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_3_2.rs +764 -0
  80. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_3_3.rs +777 -0
  81. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_3_4.rs +788 -0
  82. data/ext/cargo-vendor/rb-sys-0.9.130/src/stable_api/ruby_4_0.rs +784 -0
  83. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/stable_api.rs +213 -9
  84. data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/utils.rs +12 -7
  85. data/ext/cargo-vendor/rb-sys-build-0.9.130/.cargo-checksum.json +1 -0
  86. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/.cargo_vcs_info.json +1 -1
  87. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/Cargo.lock +19 -27
  88. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/Cargo.toml +8 -3
  89. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/Cargo.toml.orig +4 -3
  90. data/ext/cargo-vendor/rb-sys-build-0.9.130/src/bindings/gc_stress.rs +303 -0
  91. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/bindings/stable_api.rs +102 -11
  92. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/bindings.rs +19 -13
  93. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/cc.rs +1 -1
  94. data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/rb_config.rs +199 -2
  95. data/ext/cargo-vendor/rb-sys-build-0.9.130/tests/fixtures/rubyopt_stdout.rb +1 -0
  96. data/ext/cargo-vendor/rb-sys-build-0.9.130/tests/rubyopt.rs +17 -0
  97. data/ext/cargo-vendor/rb-sys-env-0.2.3/.cargo-checksum.json +1 -0
  98. data/ext/cargo-vendor/rb-sys-env-0.2.3/.cargo_vcs_info.json +6 -0
  99. data/ext/cargo-vendor/rb-sys-env-0.2.3/Cargo.lock +7 -0
  100. data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/Cargo.toml +2 -2
  101. data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/Cargo.toml.orig +2 -2
  102. data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/readme.md +0 -2
  103. data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/src/ruby_version.rs +3 -1
  104. data/ext/cargo-vendor/rustc-hash-2.1.3/.cargo-checksum.json +1 -0
  105. data/ext/cargo-vendor/rustc-hash-2.1.3/.cargo_vcs_info.json +6 -0
  106. data/ext/cargo-vendor/rustc-hash-2.1.3/.github/workflows/rust.yml +73 -0
  107. data/ext/cargo-vendor/rustc-hash-2.1.3/CHANGELOG.md +41 -0
  108. data/ext/cargo-vendor/rustc-hash-2.1.3/CODE_OF_CONDUCT.md +3 -0
  109. data/ext/cargo-vendor/rustc-hash-2.1.3/Cargo.lock +90 -0
  110. data/ext/cargo-vendor/rustc-hash-2.1.3/Cargo.toml +50 -0
  111. data/ext/cargo-vendor/rustc-hash-2.1.3/Cargo.toml.orig +20 -0
  112. data/ext/cargo-vendor/rustc-hash-2.1.3/LICENSE-APACHE +176 -0
  113. data/ext/cargo-vendor/rustc-hash-2.1.3/LICENSE-MIT +23 -0
  114. data/ext/cargo-vendor/rustc-hash-2.1.3/README.md +42 -0
  115. data/ext/cargo-vendor/rustc-hash-2.1.3/src/lib.rs +472 -0
  116. data/ext/cargo-vendor/rustc-hash-2.1.3/src/random_state.rs +101 -0
  117. data/ext/cargo-vendor/rustc-hash-2.1.3/src/seeded_state.rs +76 -0
  118. data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/.cargo-checksum.json +1 -1
  119. data/ext/cargo-vendor/serde-1.0.229/.cargo_vcs_info.json +6 -0
  120. data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/Cargo.lock +13 -13
  121. data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/Cargo.toml +2 -2
  122. data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/Cargo.toml.orig +2 -2
  123. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde-1.0.229}/README.md +3 -3
  124. data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/build.rs +2 -2
  125. data/ext/cargo-vendor/{serde_core-1.0.228/src → serde-1.0.229/src/core}/de/impls.rs +4 -4
  126. data/ext/cargo-vendor/{serde_core-1.0.228/src → serde-1.0.229/src/core}/lib.rs +2 -2
  127. data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/lib.rs +3 -3
  128. data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/.cargo-checksum.json +1 -1
  129. data/ext/cargo-vendor/serde_core-1.0.229/.cargo_vcs_info.json +6 -0
  130. data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/Cargo.lock +11 -11
  131. data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/Cargo.toml +2 -2
  132. data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/Cargo.toml.orig +2 -2
  133. data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/build.rs +5 -5
  134. data/ext/cargo-vendor/{serde-1.0.228/src/core → serde_core-1.0.229/src}/de/impls.rs +4 -4
  135. data/ext/cargo-vendor/{serde-1.0.228/src/core → serde_core-1.0.229/src}/lib.rs +2 -2
  136. data/ext/cargo-vendor/serde_derive-1.0.229/.cargo-checksum.json +1 -0
  137. data/ext/cargo-vendor/serde_derive-1.0.229/.cargo_vcs_info.json +6 -0
  138. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/Cargo.lock +29 -18
  139. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/Cargo.toml +3 -3
  140. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/Cargo.toml.orig +2 -2
  141. data/ext/cargo-vendor/{serde-1.0.228 → serde_derive-1.0.229}/README.md +3 -3
  142. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/bound.rs +80 -59
  143. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/enum_adjacently.rs +46 -45
  144. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/enum_externally.rs +3 -2
  145. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de.rs +10 -7
  146. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/ast.rs +15 -8
  147. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/attr.rs +18 -31
  148. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/ctxt.rs +3 -4
  149. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/receiver.rs +2 -2
  150. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/lib.rs +1 -1
  151. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/pretend.rs +7 -7
  152. data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/ser.rs +94 -94
  153. data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/.cargo-checksum.json +1 -1
  154. data/ext/cargo-vendor/serde_magnus-0.11.0/.cargo_vcs_info.json +6 -0
  155. data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/Cargo.lock +71 -73
  156. data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/Cargo.toml +2 -2
  157. data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/Cargo.toml.orig +2 -2
  158. data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/README.md +1 -1
  159. data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/deserializer.rs +2 -2
  160. data/ext/cargo-vendor/syn-3.0.9/.cargo-checksum.json +1 -0
  161. data/ext/cargo-vendor/syn-3.0.9/.cargo_vcs_info.json +6 -0
  162. data/ext/cargo-vendor/syn-3.0.9/Cargo.lock +1948 -0
  163. data/ext/cargo-vendor/syn-3.0.9/Cargo.toml +268 -0
  164. data/ext/cargo-vendor/syn-3.0.9/Cargo.toml.orig +95 -0
  165. data/ext/cargo-vendor/{lazycell-1.3.0 → syn-3.0.9}/LICENSE-APACHE +0 -25
  166. data/ext/cargo-vendor/syn-3.0.9/README.md +297 -0
  167. data/ext/cargo-vendor/syn-3.0.9/benches/file.rs +59 -0
  168. data/ext/cargo-vendor/syn-3.0.9/benches/rust.rs +189 -0
  169. data/ext/cargo-vendor/syn-3.0.9/src/attr.rs +841 -0
  170. data/ext/cargo-vendor/syn-3.0.9/src/bigint.rs +68 -0
  171. data/ext/cargo-vendor/syn-3.0.9/src/buffer.rs +462 -0
  172. data/ext/cargo-vendor/syn-3.0.9/src/classify.rs +311 -0
  173. data/ext/cargo-vendor/syn-3.0.9/src/custom_keyword.rs +260 -0
  174. data/ext/cargo-vendor/syn-3.0.9/src/custom_punctuation.rs +305 -0
  175. data/ext/cargo-vendor/syn-3.0.9/src/data.rs +489 -0
  176. data/ext/cargo-vendor/syn-3.0.9/src/derive.rs +260 -0
  177. data/ext/cargo-vendor/syn-3.0.9/src/discouraged.rs +233 -0
  178. data/ext/cargo-vendor/syn-3.0.9/src/drops.rs +58 -0
  179. data/ext/cargo-vendor/syn-3.0.9/src/error.rs +552 -0
  180. data/ext/cargo-vendor/syn-3.0.9/src/export.rs +73 -0
  181. data/ext/cargo-vendor/syn-3.0.9/src/expr.rs +4249 -0
  182. data/ext/cargo-vendor/syn-3.0.9/src/ext.rs +180 -0
  183. data/ext/cargo-vendor/syn-3.0.9/src/file.rs +136 -0
  184. data/ext/cargo-vendor/syn-3.0.9/src/fixup.rs +773 -0
  185. data/ext/cargo-vendor/syn-3.0.9/src/gen/clone.rs +2394 -0
  186. data/ext/cargo-vendor/syn-3.0.9/src/gen/debug.rs +3399 -0
  187. data/ext/cargo-vendor/syn-3.0.9/src/gen/eq.rs +2459 -0
  188. data/ext/cargo-vendor/syn-3.0.9/src/gen/fold.rs +3934 -0
  189. data/ext/cargo-vendor/syn-3.0.9/src/gen/hash.rs +3040 -0
  190. data/ext/cargo-vendor/syn-3.0.9/src/gen/token.css +744 -0
  191. data/ext/cargo-vendor/syn-3.0.9/src/gen/visit.rs +4037 -0
  192. data/ext/cargo-vendor/syn-3.0.9/src/gen/visit_mut.rs +3824 -0
  193. data/ext/cargo-vendor/syn-3.0.9/src/generics.rs +1490 -0
  194. data/ext/cargo-vendor/syn-3.0.9/src/group.rs +294 -0
  195. data/ext/cargo-vendor/syn-3.0.9/src/ident.rs +109 -0
  196. data/ext/cargo-vendor/syn-3.0.9/src/item.rs +3923 -0
  197. data/ext/cargo-vendor/syn-3.0.9/src/lib.rs +1132 -0
  198. data/ext/cargo-vendor/syn-3.0.9/src/lifetime.rs +193 -0
  199. data/ext/cargo-vendor/syn-3.0.9/src/lit.rs +1881 -0
  200. data/ext/cargo-vendor/syn-3.0.9/src/lookahead.rs +350 -0
  201. data/ext/cargo-vendor/syn-3.0.9/src/mac.rs +225 -0
  202. data/ext/cargo-vendor/syn-3.0.9/src/macros.rs +151 -0
  203. data/ext/cargo-vendor/syn-3.0.9/src/meta.rs +427 -0
  204. data/ext/cargo-vendor/syn-3.0.9/src/op.rs +219 -0
  205. data/ext/cargo-vendor/syn-3.0.9/src/parse.rs +1420 -0
  206. data/ext/cargo-vendor/syn-3.0.9/src/parse_macro_input.rs +128 -0
  207. data/ext/cargo-vendor/syn-3.0.9/src/parse_quote.rs +261 -0
  208. data/ext/cargo-vendor/syn-3.0.9/src/pat.rs +994 -0
  209. data/ext/cargo-vendor/syn-3.0.9/src/path.rs +972 -0
  210. data/ext/cargo-vendor/syn-3.0.9/src/precedence.rs +210 -0
  211. data/ext/cargo-vendor/syn-3.0.9/src/print.rs +16 -0
  212. data/ext/cargo-vendor/syn-3.0.9/src/punctuated.rs +1200 -0
  213. data/ext/cargo-vendor/syn-3.0.9/src/restriction.rs +160 -0
  214. data/ext/cargo-vendor/syn-3.0.9/src/scan_expr.rs +270 -0
  215. data/ext/cargo-vendor/syn-3.0.9/src/sealed.rs +4 -0
  216. data/ext/cargo-vendor/syn-3.0.9/src/span.rs +63 -0
  217. data/ext/cargo-vendor/syn-3.0.9/src/spanned.rs +118 -0
  218. data/ext/cargo-vendor/syn-3.0.9/src/stmt.rs +536 -0
  219. data/ext/cargo-vendor/syn-3.0.9/src/thread.rs +60 -0
  220. data/ext/cargo-vendor/syn-3.0.9/src/token.rs +1103 -0
  221. data/ext/cargo-vendor/syn-3.0.9/src/tt.rs +97 -0
  222. data/ext/cargo-vendor/syn-3.0.9/src/ty.rs +1347 -0
  223. data/ext/cargo-vendor/syn-3.0.9/src/verbatim.rs +32 -0
  224. data/ext/cargo-vendor/syn-3.0.9/src/whitespace.rs +65 -0
  225. data/ext/cargo-vendor/syn-3.0.9/tests/common/eq.rs +939 -0
  226. data/ext/cargo-vendor/syn-3.0.9/tests/common/mod.rs +6 -0
  227. data/ext/cargo-vendor/syn-3.0.9/tests/common/parse.rs +51 -0
  228. data/ext/cargo-vendor/syn-3.0.9/tests/common/visit.rs +119 -0
  229. data/ext/cargo-vendor/syn-3.0.9/tests/debug/gen.rs +5394 -0
  230. data/ext/cargo-vendor/syn-3.0.9/tests/debug/mod.rs +147 -0
  231. data/ext/cargo-vendor/syn-3.0.9/tests/macros/mod.rs +7 -0
  232. data/ext/cargo-vendor/syn-3.0.9/tests/regression/issue1108.rs +5 -0
  233. data/ext/cargo-vendor/syn-3.0.9/tests/regression/issue1235.rs +32 -0
  234. data/ext/cargo-vendor/syn-3.0.9/tests/regression.rs +5 -0
  235. data/ext/cargo-vendor/syn-3.0.9/tests/repo/mod.rs +789 -0
  236. data/ext/cargo-vendor/syn-3.0.9/tests/repo/progress.rs +37 -0
  237. data/ext/cargo-vendor/syn-3.0.9/tests/snapshot/mod.rs +68 -0
  238. data/ext/cargo-vendor/syn-3.0.9/tests/test_attribute.rs +231 -0
  239. data/ext/cargo-vendor/syn-3.0.9/tests/test_derive_input.rs +801 -0
  240. data/ext/cargo-vendor/syn-3.0.9/tests/test_expr.rs +1721 -0
  241. data/ext/cargo-vendor/syn-3.0.9/tests/test_generics.rs +363 -0
  242. data/ext/cargo-vendor/syn-3.0.9/tests/test_grouping.rs +59 -0
  243. data/ext/cargo-vendor/syn-3.0.9/tests/test_ident.rs +87 -0
  244. data/ext/cargo-vendor/syn-3.0.9/tests/test_item.rs +374 -0
  245. data/ext/cargo-vendor/syn-3.0.9/tests/test_lit.rs +335 -0
  246. data/ext/cargo-vendor/syn-3.0.9/tests/test_meta.rs +180 -0
  247. data/ext/cargo-vendor/syn-3.0.9/tests/test_parse_buffer.rs +104 -0
  248. data/ext/cargo-vendor/syn-3.0.9/tests/test_parse_quote.rs +175 -0
  249. data/ext/cargo-vendor/syn-3.0.9/tests/test_parse_stream.rs +187 -0
  250. data/ext/cargo-vendor/syn-3.0.9/tests/test_pat.rs +158 -0
  251. data/ext/cargo-vendor/syn-3.0.9/tests/test_path.rs +117 -0
  252. data/ext/cargo-vendor/syn-3.0.9/tests/test_precedence.rs +560 -0
  253. data/ext/cargo-vendor/syn-3.0.9/tests/test_punctuated.rs +92 -0
  254. data/ext/cargo-vendor/syn-3.0.9/tests/test_receiver.rs +275 -0
  255. data/ext/cargo-vendor/syn-3.0.9/tests/test_round_trip.rs +226 -0
  256. data/ext/cargo-vendor/syn-3.0.9/tests/test_shebang.rs +77 -0
  257. data/ext/cargo-vendor/syn-3.0.9/tests/test_size.rs +54 -0
  258. data/ext/cargo-vendor/syn-3.0.9/tests/test_stmt.rs +378 -0
  259. data/ext/cargo-vendor/syn-3.0.9/tests/test_token_trees.rs +38 -0
  260. data/ext/cargo-vendor/syn-3.0.9/tests/test_ty.rs +479 -0
  261. data/ext/cargo-vendor/syn-3.0.9/tests/test_unparenthesize.rs +71 -0
  262. data/ext/cargo-vendor/syn-3.0.9/tests/test_visibility.rs +193 -0
  263. data/ext/cargo-vendor/syn-3.0.9/tests/zzz_stable.rs +33 -0
  264. data/ext/code_ownership/Cargo.toml +1 -1
  265. data/ext/code_ownership/src/lib.rs +2 -2
  266. data/lib/code_ownership/version.rb +1 -1
  267. data/lib/code_ownership.rb +1 -1
  268. metadata +400 -293
  269. data/ext/cargo-vendor/bindgen-0.69.5/.cargo-checksum.json +0 -1
  270. data/ext/cargo-vendor/bindgen-0.69.5/.cargo_vcs_info.json +0 -6
  271. data/ext/cargo-vendor/bindgen-0.69.5/features.rs +0 -296
  272. data/ext/cargo-vendor/lazycell-1.3.0/.cargo-checksum.json +0 -1
  273. data/ext/cargo-vendor/lazycell-1.3.0/.cargo_vcs_info.json +0 -5
  274. data/ext/cargo-vendor/lazycell-1.3.0/CHANGELOG.md +0 -197
  275. data/ext/cargo-vendor/lazycell-1.3.0/Cargo.toml +0 -34
  276. data/ext/cargo-vendor/lazycell-1.3.0/Cargo.toml.orig +0 -27
  277. data/ext/cargo-vendor/lazycell-1.3.0/LICENSE-MIT +0 -26
  278. data/ext/cargo-vendor/lazycell-1.3.0/README.md +0 -73
  279. data/ext/cargo-vendor/lazycell-1.3.0/src/lib.rs +0 -680
  280. data/ext/cargo-vendor/lazycell-1.3.0/src/serde_impl.rs +0 -86
  281. data/ext/cargo-vendor/rb-sys-0.9.117/.cargo-checksum.json +0 -1
  282. data/ext/cargo-vendor/rb-sys-0.9.117/.cargo_vcs_info.json +0 -6
  283. data/ext/cargo-vendor/rb-sys-0.9.117/src/macros.rs +0 -371
  284. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_2_6.rs +0 -324
  285. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_2_7.rs +0 -324
  286. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_3_0.rs +0 -332
  287. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_3_1.rs +0 -325
  288. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_3_2.rs +0 -323
  289. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_3_3.rs +0 -339
  290. data/ext/cargo-vendor/rb-sys-0.9.117/src/stable_api/ruby_3_4.rs +0 -339
  291. data/ext/cargo-vendor/rb-sys-build-0.9.117/.cargo-checksum.json +0 -1
  292. data/ext/cargo-vendor/rb-sys-env-0.2.2/.cargo-checksum.json +0 -1
  293. data/ext/cargo-vendor/rb-sys-env-0.2.2/.cargo_vcs_info.json +0 -6
  294. data/ext/cargo-vendor/rustc-hash-1.1.0/.cargo-checksum.json +0 -1
  295. data/ext/cargo-vendor/rustc-hash-1.1.0/.cargo_vcs_info.json +0 -5
  296. data/ext/cargo-vendor/rustc-hash-1.1.0/CODE_OF_CONDUCT.md +0 -40
  297. data/ext/cargo-vendor/rustc-hash-1.1.0/Cargo.toml +0 -25
  298. data/ext/cargo-vendor/rustc-hash-1.1.0/Cargo.toml.orig +0 -13
  299. data/ext/cargo-vendor/rustc-hash-1.1.0/LICENSE-APACHE +0 -201
  300. data/ext/cargo-vendor/rustc-hash-1.1.0/README.md +0 -38
  301. data/ext/cargo-vendor/rustc-hash-1.1.0/src/lib.rs +0 -148
  302. data/ext/cargo-vendor/serde-1.0.228/.cargo_vcs_info.json +0 -6
  303. data/ext/cargo-vendor/serde_core-1.0.228/.cargo_vcs_info.json +0 -6
  304. data/ext/cargo-vendor/serde_derive-1.0.228/.cargo-checksum.json +0 -1
  305. data/ext/cargo-vendor/serde_derive-1.0.228/.cargo_vcs_info.json +0 -6
  306. data/ext/cargo-vendor/serde_magnus-0.10.0/.cargo_vcs_info.json +0 -6
  307. /data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/LICENSE +0 -0
  308. /data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/codegen/postprocessing/mod.rs +0 -0
  309. /data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/ir/mod.rs +0 -0
  310. /data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/options/helpers.rs +0 -0
  311. /data/ext/cargo-vendor/{bindgen-0.69.5 → bindgen-0.72.1}/parse.rs +0 -0
  312. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/LICENSE-APACHE +0 -0
  313. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/LICENSE-MIT +0 -0
  314. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/bin/release.sh +0 -0
  315. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/build/features.rs +0 -0
  316. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/readme.md +0 -0
  317. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/hidden.rs +0 -0
  318. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/lib.rs +0 -0
  319. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/ruby_abi_version.rs +0 -0
  320. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/special_consts.rs +0 -0
  321. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/symbol.rs +0 -0
  322. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/tracking_allocator.rs +0 -0
  323. /data/ext/cargo-vendor/{rb-sys-0.9.117 → rb-sys-0.9.130}/src/value_type.rs +0 -0
  324. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/LICENSE-APACHE +0 -0
  325. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/LICENSE-MIT +0 -0
  326. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/bindings/sanitizer.rs +0 -0
  327. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/bindings/wrapper.h +0 -0
  328. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/lib.rs +0 -0
  329. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/rb_config/flags.rs +0 -0
  330. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/rb_config/library.rs +0 -0
  331. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/rb_config/search_path.rs +0 -0
  332. /data/ext/cargo-vendor/{rb-sys-build-0.9.117 → rb-sys-build-0.9.130}/src/utils.rs +0 -0
  333. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/LICENSE-APACHE +0 -0
  334. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/LICENSE-MIT +0 -0
  335. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/build.rs +0 -0
  336. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/src/defines.rs +0 -0
  337. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/src/lib.rs +0 -0
  338. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/src/rb_env.rs +0 -0
  339. /data/ext/cargo-vendor/{rb-sys-env-0.2.2 → rb-sys-env-0.2.3}/src/utils.rs +0 -0
  340. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/LICENSE-APACHE +0 -0
  341. /data/ext/cargo-vendor/{rustc-hash-1.1.0 → serde-1.0.229}/LICENSE-MIT +0 -0
  342. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/crates-io.md +0 -0
  343. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/crate_root.rs +0 -0
  344. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/de/ignored_any.rs +0 -0
  345. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/de/mod.rs +0 -0
  346. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/de/value.rs +0 -0
  347. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/format.rs +0 -0
  348. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/macros.rs +0 -0
  349. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/private/content.rs +0 -0
  350. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/private/doc.rs +0 -0
  351. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/private/mod.rs +0 -0
  352. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/private/seed.rs +0 -0
  353. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/private/size_hint.rs +0 -0
  354. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/private/string.rs +0 -0
  355. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/ser/fmt.rs +0 -0
  356. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/ser/impls.rs +0 -0
  357. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/ser/impossible.rs +0 -0
  358. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/ser/mod.rs +0 -0
  359. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/core/std_error.rs +0 -0
  360. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/integer128.rs +0 -0
  361. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/private/de.rs +0 -0
  362. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/private/mod.rs +0 -0
  363. /data/ext/cargo-vendor/{serde-1.0.228 → serde-1.0.229}/src/private/ser.rs +0 -0
  364. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/LICENSE-APACHE +0 -0
  365. /data/ext/cargo-vendor/{serde-1.0.228 → serde_core-1.0.229}/LICENSE-MIT +0 -0
  366. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/README.md +0 -0
  367. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/crate_root.rs +0 -0
  368. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/de/ignored_any.rs +0 -0
  369. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/de/mod.rs +0 -0
  370. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/de/value.rs +0 -0
  371. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/format.rs +0 -0
  372. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/macros.rs +0 -0
  373. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/private/content.rs +0 -0
  374. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/private/doc.rs +0 -0
  375. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/private/mod.rs +0 -0
  376. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/private/seed.rs +0 -0
  377. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/private/size_hint.rs +0 -0
  378. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/private/string.rs +0 -0
  379. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/ser/fmt.rs +0 -0
  380. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/ser/impls.rs +0 -0
  381. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/ser/impossible.rs +0 -0
  382. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/ser/mod.rs +0 -0
  383. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_core-1.0.229}/src/std_error.rs +0 -0
  384. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/LICENSE-APACHE +0 -0
  385. /data/ext/cargo-vendor/{serde_core-1.0.228 → serde_derive-1.0.229}/LICENSE-MIT +0 -0
  386. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/crates-io.md +0 -0
  387. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/enum_.rs +0 -0
  388. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/enum_internally.rs +0 -0
  389. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/enum_untagged.rs +0 -0
  390. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/identifier.rs +0 -0
  391. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/struct_.rs +0 -0
  392. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/tuple.rs +0 -0
  393. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/de/unit.rs +0 -0
  394. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/deprecated.rs +0 -0
  395. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/dummy.rs +0 -0
  396. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/fragment.rs +0 -0
  397. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/case.rs +0 -0
  398. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/check.rs +0 -0
  399. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/mod.rs +0 -0
  400. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/name.rs +0 -0
  401. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/respan.rs +0 -0
  402. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/internals/symbol.rs +0 -0
  403. /data/ext/cargo-vendor/{serde_derive-1.0.228 → serde_derive-1.0.229}/src/this.rs +0 -0
  404. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/LICENSE +0 -0
  405. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/array_deserializer.rs +0 -0
  406. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/array_enumerator.rs +0 -0
  407. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/enum_deserializer.rs +0 -0
  408. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/hash_deserializer.rs +0 -0
  409. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/mod.rs +0 -0
  410. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/de/variant_deserializer.rs +0 -0
  411. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/error.rs +0 -0
  412. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/lib.rs +0 -0
  413. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/enums.rs +0 -0
  414. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/map_serializer.rs +0 -0
  415. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/mod.rs +0 -0
  416. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/seq_serializer.rs +0 -0
  417. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/serializer.rs +0 -0
  418. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/struct_serializer.rs +0 -0
  419. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/struct_variant_serializer.rs +0 -0
  420. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/src/ser/tuple_variant_serializer.rs +0 -0
  421. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_arrays.rs +0 -0
  422. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_booleans.rs +0 -0
  423. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_enums.rs +0 -0
  424. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_floats.rs +0 -0
  425. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_integers.rs +0 -0
  426. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_maps.rs +0 -0
  427. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_options.rs +0 -0
  428. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_results.rs +0 -0
  429. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_strings.rs +0 -0
  430. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_structs.rs +0 -0
  431. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_tuples.rs +0 -0
  432. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/deserializing_vecs.rs +0 -0
  433. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_arrays.rs +0 -0
  434. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_booleans.rs +0 -0
  435. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_enums.rs +0 -0
  436. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_floats.rs +0 -0
  437. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_integers.rs +0 -0
  438. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_maps.rs +0 -0
  439. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_options.rs +0 -0
  440. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_results.rs +0 -0
  441. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_strings.rs +0 -0
  442. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_structs.rs +0 -0
  443. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_tuples.rs +0 -0
  444. /data/ext/cargo-vendor/{serde_magnus-0.10.0 → serde_magnus-0.11.0}/tests/serializing_vecs.rs +0 -0
  445. /data/ext/cargo-vendor/{serde_derive-1.0.228 → syn-3.0.9}/LICENSE-MIT +0 -0
@@ -0,0 +1,972 @@
1
+ #[cfg(feature = "parsing")]
2
+ use crate::error::Result;
3
+ use crate::expr::Expr;
4
+ use crate::generics::TypeParamBound;
5
+ use crate::ident::Ident;
6
+ use crate::lifetime::Lifetime;
7
+ use crate::punctuated::Punctuated;
8
+ use crate::token;
9
+ use crate::ty::{NamedArg, ReturnType, Type};
10
+ use alloc::boxed::Box;
11
+
12
+ ast_struct! {
13
+ /// A path at which a named item is exported (e.g. `alloc::collections::HashMap`).
14
+ #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
15
+ pub struct Path {
16
+ pub leading_colon: Option<Token![::]>,
17
+ pub segments: Punctuated<PathSegment, Token![::]>,
18
+ }
19
+ }
20
+
21
+ impl<T> From<T> for Path
22
+ where
23
+ T: Into<PathSegment>,
24
+ {
25
+ fn from(segment: T) -> Self {
26
+ let mut path = Path {
27
+ leading_colon: None,
28
+ segments: Punctuated::new(),
29
+ };
30
+ path.segments.push_value(segment.into());
31
+ path
32
+ }
33
+ }
34
+
35
+ impl Path {
36
+ /// Determines whether this is a path of length 1 equal to the given
37
+ /// ident.
38
+ ///
39
+ /// For them to compare equal, it must be the case that:
40
+ ///
41
+ /// - the path has no leading colon,
42
+ /// - the number of path segments is 1,
43
+ /// - the first path segment has no angle bracketed or parenthesized
44
+ /// path arguments, and
45
+ /// - the ident of the first path segment is equal to the given one.
46
+ ///
47
+ /// # Example
48
+ ///
49
+ /// ```
50
+ /// use proc_macro2::TokenStream;
51
+ /// use syn::{Attribute, Error, Meta, Result};
52
+ ///
53
+ /// fn get_serde_meta_item(attr: &Attribute) -> Result<Option<&TokenStream>> {
54
+ /// if attr.path().is_ident("serde") {
55
+ /// match &attr.meta {
56
+ /// Meta::List(meta) => Ok(Some(&meta.tokens)),
57
+ /// bad => Err(Error::new_spanned(bad, "unrecognized attribute")),
58
+ /// }
59
+ /// } else {
60
+ /// Ok(None)
61
+ /// }
62
+ /// }
63
+ /// ```
64
+ pub fn is_ident<I>(&self, ident: &I) -> bool
65
+ where
66
+ I: ?Sized,
67
+ Ident: PartialEq<I>,
68
+ {
69
+ match self.get_ident() {
70
+ Some(id) => id == ident,
71
+ None => false,
72
+ }
73
+ }
74
+
75
+ /// If this path consists of a single ident, returns the ident.
76
+ ///
77
+ /// A path is considered an ident if:
78
+ ///
79
+ /// - the path has no leading colon,
80
+ /// - the number of path segments is 1, and
81
+ /// - the first path segment has no angle bracketed or parenthesized
82
+ /// path arguments.
83
+ pub fn get_ident(&self) -> Option<&Ident> {
84
+ if self.leading_colon.is_none()
85
+ && self.segments.len() == 1
86
+ && self.segments[0].arguments.is_none()
87
+ {
88
+ Some(&self.segments[0].ident)
89
+ } else {
90
+ None
91
+ }
92
+ }
93
+
94
+ /// An error if this path is not a single ident, as defined in `get_ident`.
95
+ #[cfg(feature = "parsing")]
96
+ #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
97
+ pub fn require_ident(&self) -> Result<&Ident> {
98
+ self.get_ident().ok_or_else(|| {
99
+ crate::error::new2(
100
+ self.segments.first().unwrap().ident.span(),
101
+ self.segments.last().unwrap().ident.span(),
102
+ "expected this path to be an identifier",
103
+ )
104
+ })
105
+ }
106
+ }
107
+
108
+ ast_struct! {
109
+ /// A segment of a path together with any path arguments on that segment.
110
+ #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
111
+ pub struct PathSegment {
112
+ pub ident: Ident,
113
+ pub arguments: PathArguments,
114
+ }
115
+ }
116
+
117
+ impl<T> From<T> for PathSegment
118
+ where
119
+ T: Into<Ident>,
120
+ {
121
+ fn from(ident: T) -> Self {
122
+ PathSegment {
123
+ ident: ident.into(),
124
+ arguments: PathArguments::None,
125
+ }
126
+ }
127
+ }
128
+
129
+ ast_enum! {
130
+ /// Angle bracketed or parenthesized arguments of a path segment.
131
+ ///
132
+ /// ## Angle bracketed
133
+ ///
134
+ /// The `<'a, T>` in `core::slice::iter<'a, T>`.
135
+ ///
136
+ /// ## Parenthesized
137
+ ///
138
+ /// The `(A, B) -> C` in `Fn(A, B) -> C`.
139
+ #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
140
+ pub enum PathArguments {
141
+ None,
142
+ /// The `<'a, T>` in `core::slice::iter<'a, T>`.
143
+ AngleBracketed(AngleBracketedGenericArguments),
144
+ /// The `(A, B) -> C` in `Fn(A, B) -> C`.
145
+ Parenthesized(ParenthesizedGenericArguments),
146
+ }
147
+ }
148
+
149
+ impl Default for PathArguments {
150
+ fn default() -> Self {
151
+ PathArguments::None
152
+ }
153
+ }
154
+
155
+ impl PathArguments {
156
+ pub fn is_empty(&self) -> bool {
157
+ match self {
158
+ PathArguments::None => true,
159
+ PathArguments::AngleBracketed(bracketed) => bracketed.args.is_empty(),
160
+ PathArguments::Parenthesized(_) => false,
161
+ }
162
+ }
163
+
164
+ pub fn is_none(&self) -> bool {
165
+ match self {
166
+ PathArguments::None => true,
167
+ PathArguments::AngleBracketed(_) | PathArguments::Parenthesized(_) => false,
168
+ }
169
+ }
170
+ }
171
+
172
+ ast_enum! {
173
+ /// An individual generic argument, like `'a`, `T`, or `Item = T`.
174
+ #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
175
+ #[non_exhaustive]
176
+ pub enum GenericArgument {
177
+ /// A lifetime argument.
178
+ Lifetime(Lifetime),
179
+ /// A type argument.
180
+ Type(Type),
181
+ /// A const expression. Must be inside of a block.
182
+ ///
183
+ /// NOTE: Identity expressions are represented as Type arguments, as
184
+ /// they are indistinguishable syntactically.
185
+ Const(Expr),
186
+ /// A binding (equality constraint) on an associated type: the `Item =
187
+ /// u8` in `Iterator<Item = u8>`.
188
+ AssocType(AssocType),
189
+ /// An equality constraint on an associated constant: the `PANIC =
190
+ /// false` in `Trait<PANIC = false>`.
191
+ AssocConst(AssocConst),
192
+ /// An associated type bound: `Iterator<Item: Display>`.
193
+ Constraint(Constraint),
194
+ }
195
+ }
196
+
197
+ ast_struct! {
198
+ /// Angle bracketed arguments of a path segment: the `<K, V>` in `HashMap<K,
199
+ /// V>`.
200
+ #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
201
+ pub struct AngleBracketedGenericArguments {
202
+ pub colon2_token: Option<Token![::]>,
203
+ pub lt_token: Token![<],
204
+ pub args: Punctuated<GenericArgument, Token![,]>,
205
+ pub gt_token: Token![>],
206
+ }
207
+ }
208
+
209
+ ast_struct! {
210
+ /// A binding (equality constraint) on an associated type: the `Item = u8`
211
+ /// in `Iterator<Item = u8>`.
212
+ #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
213
+ pub struct AssocType {
214
+ pub ident: Ident,
215
+ pub generics: Option<AngleBracketedGenericArguments>,
216
+ pub eq_token: Token![=],
217
+ pub ty: Type,
218
+ }
219
+ }
220
+
221
+ ast_struct! {
222
+ /// An equality constraint on an associated constant: the `PANIC = false` in
223
+ /// `Trait<PANIC = false>`.
224
+ #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
225
+ pub struct AssocConst {
226
+ pub ident: Ident,
227
+ pub generics: Option<AngleBracketedGenericArguments>,
228
+ pub eq_token: Token![=],
229
+ pub value: Expr,
230
+ }
231
+ }
232
+
233
+ ast_struct! {
234
+ /// An associated type bound: `Iterator<Item: Display>`.
235
+ #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
236
+ pub struct Constraint {
237
+ pub ident: Ident,
238
+ pub generics: Option<AngleBracketedGenericArguments>,
239
+ pub colon_token: Token![:],
240
+ pub bounds: Punctuated<TypeParamBound, Token![+]>,
241
+ }
242
+ }
243
+
244
+ ast_struct! {
245
+ /// Arguments of a function path segment: the `(A, B) -> C` in `Fn(A,B) ->
246
+ /// C`.
247
+ #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
248
+ pub struct ParenthesizedGenericArguments {
249
+ pub paren_token: token::Paren,
250
+ /// `(A, B)`
251
+ pub inputs: Punctuated<NamedArg, Token![,]>,
252
+ /// `C`
253
+ pub output: ReturnType,
254
+ }
255
+ }
256
+
257
+ ast_struct! {
258
+ /// The explicit Self type in a qualified path: the `T` in `<T as
259
+ /// Display>::fmt`.
260
+ ///
261
+ /// The actual path, including the trait and the associated item, is stored
262
+ /// separately. The `position` field represents the index of the associated
263
+ /// item qualified with this Self type.
264
+ ///
265
+ /// ```text
266
+ /// <Vec<T> as a::b::Trait>::AssociatedItem
267
+ /// ^~~~~~ ~~~~~~~~~~~~~~^
268
+ /// ty position = 3
269
+ ///
270
+ /// <Vec<T>>::AssociatedItem
271
+ /// ^~~~~~ ^
272
+ /// ty position = 0
273
+ /// ```
274
+ #[cfg_attr(docsrs, doc(cfg(any(feature = "full", feature = "derive"))))]
275
+ pub struct QSelf {
276
+ pub lt_token: Token![<],
277
+ pub ty: Box<Type>,
278
+ pub position: usize,
279
+ pub as_token: Option<Token![as]>,
280
+ pub gt_token: Token![>],
281
+ }
282
+ }
283
+
284
+ #[cfg(feature = "parsing")]
285
+ pub(crate) mod parsing {
286
+ use crate::error::Result;
287
+ #[cfg(feature = "full")]
288
+ use crate::expr::ExprBlock;
289
+ use crate::expr::{Expr, ExprPath};
290
+ use crate::ext::IdentExt as _;
291
+ use crate::generics::TypeParamBound;
292
+ use crate::ident::Ident;
293
+ use crate::lifetime::Lifetime;
294
+ use crate::lit::Lit;
295
+ use crate::parse::{Parse, ParseStream};
296
+ use crate::path::{
297
+ AngleBracketedGenericArguments, AssocConst, AssocType, Constraint, GenericArgument,
298
+ ParenthesizedGenericArguments, Path, PathArguments, PathSegment, QSelf,
299
+ };
300
+ use crate::punctuated::Punctuated;
301
+ use crate::token;
302
+ use crate::ty::{NamedArg, ReturnType, Type};
303
+ #[cfg(not(feature = "full"))]
304
+ use crate::verbatim;
305
+ use alloc::boxed::Box;
306
+ use alloc::vec::Vec;
307
+
308
+ #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
309
+ impl Parse for Path {
310
+ fn parse(input: ParseStream) -> Result<Self> {
311
+ Self::parse_helper(input, false)
312
+ }
313
+ }
314
+
315
+ #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
316
+ impl Parse for GenericArgument {
317
+ fn parse(input: ParseStream) -> Result<Self> {
318
+ if input.peek(Lifetime) && !input.peek2(Token![+]) {
319
+ return Ok(GenericArgument::Lifetime(Lifetime::parse_any(input)?));
320
+ }
321
+
322
+ if input.peek(Lit) || input.peek(token::Brace) {
323
+ return const_argument(input).map(GenericArgument::Const);
324
+ }
325
+
326
+ let mut argument: Type = input.parse()?;
327
+
328
+ match argument {
329
+ Type::Path(mut ty)
330
+ if ty.qself.is_none()
331
+ && ty.path.leading_colon.is_none()
332
+ && ty.path.segments.len() == 1
333
+ && match &ty.path.segments[0].arguments {
334
+ PathArguments::None | PathArguments::AngleBracketed(_) => true,
335
+ PathArguments::Parenthesized(_) => false,
336
+ } =>
337
+ {
338
+ if let Some(eq_token) = input.parse::<Option<Token![=]>>()? {
339
+ let segment = ty.path.segments.pop().unwrap();
340
+ let ident = segment.ident;
341
+ let generics = match segment.arguments {
342
+ PathArguments::None => None,
343
+ PathArguments::AngleBracketed(arguments) => Some(arguments),
344
+ PathArguments::Parenthesized(_) => unreachable!(),
345
+ };
346
+ return if input.peek(Lit) || input.peek(token::Brace) {
347
+ Ok(GenericArgument::AssocConst(AssocConst {
348
+ ident,
349
+ generics,
350
+ eq_token,
351
+ value: const_argument(input)?,
352
+ }))
353
+ } else {
354
+ Ok(GenericArgument::AssocType(AssocType {
355
+ ident,
356
+ generics,
357
+ eq_token,
358
+ ty: input.parse()?,
359
+ }))
360
+ };
361
+ }
362
+
363
+ if let Some(colon_token) = input.parse::<Option<Token![:]>>()? {
364
+ let segment = ty.path.segments.pop().unwrap();
365
+ return Ok(GenericArgument::Constraint(Constraint {
366
+ ident: segment.ident,
367
+ generics: match segment.arguments {
368
+ PathArguments::None => None,
369
+ PathArguments::AngleBracketed(arguments) => Some(arguments),
370
+ PathArguments::Parenthesized(_) => unreachable!(),
371
+ },
372
+ colon_token,
373
+ bounds: {
374
+ let mut bounds = Punctuated::new();
375
+ loop {
376
+ if input.peek(Token![,]) || input.peek(Token![>]) {
377
+ break;
378
+ }
379
+ bounds.push_value({
380
+ let allow_precise_capture = false;
381
+ let allow_const = true;
382
+ TypeParamBound::parse_single(
383
+ input,
384
+ allow_precise_capture,
385
+ allow_const,
386
+ )?
387
+ });
388
+ if !input.peek(Token![+]) {
389
+ break;
390
+ }
391
+ let punct: Token![+] = input.parse()?;
392
+ bounds.push_punct(punct);
393
+ }
394
+ bounds
395
+ },
396
+ }));
397
+ }
398
+
399
+ argument = Type::Path(ty);
400
+ }
401
+ _ => {}
402
+ }
403
+
404
+ Ok(GenericArgument::Type(argument))
405
+ }
406
+ }
407
+
408
+ pub(crate) fn const_argument(input: ParseStream) -> Result<Expr> {
409
+ let lookahead = input.lookahead1();
410
+
411
+ if input.peek(Lit) {
412
+ let lit = input.parse()?;
413
+ return Ok(Expr::Lit(lit));
414
+ }
415
+
416
+ if input.peek(Ident) {
417
+ let ident: Ident = input.parse()?;
418
+ return Ok(Expr::Path(ExprPath {
419
+ attrs: Vec::new(),
420
+ qself: None,
421
+ path: Path::from(ident),
422
+ }));
423
+ }
424
+
425
+ if input.peek(token::Brace) {
426
+ #[cfg(feature = "full")]
427
+ {
428
+ let block: ExprBlock = input.parse()?;
429
+ return Ok(Expr::Block(block));
430
+ }
431
+
432
+ #[cfg(not(feature = "full"))]
433
+ {
434
+ let begin = input.cursor();
435
+ let content;
436
+ braced!(content in input);
437
+ content.parse::<Expr>()?;
438
+ let verbatim = verbatim::between(begin, input.cursor());
439
+ return Ok(Expr::Verbatim(verbatim));
440
+ }
441
+ }
442
+
443
+ Err(lookahead.error())
444
+ }
445
+
446
+ impl AngleBracketedGenericArguments {
447
+ /// Parse `::<…>` with mandatory leading `::`.
448
+ ///
449
+ /// The ordinary [`Parse`] impl for `AngleBracketedGenericArguments`
450
+ /// parses optional leading `::`.
451
+ #[cfg(feature = "full")]
452
+ #[cfg_attr(docsrs, doc(cfg(all(feature = "parsing", feature = "full"))))]
453
+ pub fn parse_turbofish(input: ParseStream) -> Result<Self> {
454
+ let colon2_token: Token![::] = input.parse()?;
455
+ Self::do_parse(Some(colon2_token), input)
456
+ }
457
+
458
+ pub(crate) fn do_parse(
459
+ colon2_token: Option<Token![::]>,
460
+ input: ParseStream,
461
+ ) -> Result<Self> {
462
+ Ok(AngleBracketedGenericArguments {
463
+ colon2_token,
464
+ lt_token: input.parse()?,
465
+ args: {
466
+ let mut args = Punctuated::new();
467
+ loop {
468
+ if input.peek(Token![>]) {
469
+ break;
470
+ }
471
+ let value: GenericArgument = input.parse()?;
472
+ args.push_value(value);
473
+ if input.peek(Token![>]) {
474
+ break;
475
+ }
476
+ let punct: Token![,] = input.parse()?;
477
+ args.push_punct(punct);
478
+ }
479
+ args
480
+ },
481
+ gt_token: input.parse()?,
482
+ })
483
+ }
484
+ }
485
+
486
+ #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
487
+ impl Parse for AngleBracketedGenericArguments {
488
+ fn parse(input: ParseStream) -> Result<Self> {
489
+ let colon2_token: Option<Token![::]> = input.parse()?;
490
+ Self::do_parse(colon2_token, input)
491
+ }
492
+ }
493
+
494
+ #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
495
+ impl Parse for ParenthesizedGenericArguments {
496
+ fn parse(input: ParseStream) -> Result<Self> {
497
+ fn type_as_named_arg(input: ParseStream) -> Result<NamedArg> {
498
+ Ok(NamedArg {
499
+ attrs: Vec::new(),
500
+ name: None,
501
+ ty: input.parse()?,
502
+ })
503
+ }
504
+ let content;
505
+ Ok(ParenthesizedGenericArguments {
506
+ paren_token: parenthesized!(content in input),
507
+ inputs: content.parse_terminated(type_as_named_arg, Token![,])?,
508
+ output: input.call(ReturnType::without_plus)?,
509
+ })
510
+ }
511
+ }
512
+
513
+ #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
514
+ impl Parse for PathSegment {
515
+ fn parse(input: ParseStream) -> Result<Self> {
516
+ Self::parse_helper(input, false)
517
+ }
518
+ }
519
+
520
+ impl PathSegment {
521
+ fn parse_helper(input: ParseStream, expr_style: bool) -> Result<Self> {
522
+ if input.peek(Token![super])
523
+ || input.peek(Token![self])
524
+ || input.peek(Token![crate])
525
+ || cfg!(feature = "full") && input.peek(Token![try])
526
+ {
527
+ let ident = input.call(Ident::parse_any)?;
528
+ return Ok(PathSegment::from(ident));
529
+ }
530
+
531
+ let ident = if input.peek(Token![Self]) {
532
+ input.call(Ident::parse_any)?
533
+ } else {
534
+ input.parse()?
535
+ };
536
+
537
+ if !expr_style
538
+ && input.peek(Token![<])
539
+ && !input.peek(Token![<=])
540
+ && !input.peek(Token![<<=])
541
+ || input.peek(Token![::]) && input.peek3(Token![<])
542
+ {
543
+ Ok(PathSegment {
544
+ ident,
545
+ arguments: PathArguments::AngleBracketed(input.parse()?),
546
+ })
547
+ } else {
548
+ Ok(PathSegment::from(ident))
549
+ }
550
+ }
551
+ }
552
+
553
+ impl Path {
554
+ /// Parse a `Path` containing no path arguments on any of its segments.
555
+ ///
556
+ /// # Example
557
+ ///
558
+ /// ```
559
+ /// use syn::{Path, Result, Token};
560
+ /// use syn::parse::{Parse, ParseStream};
561
+ ///
562
+ /// // A simplified single `use` statement like:
563
+ /// //
564
+ /// // use alloc::collections::HashMap;
565
+ /// //
566
+ /// // Note that generic parameters are not allowed in a `use` statement
567
+ /// // so the following must not be accepted.
568
+ /// //
569
+ /// // use a::<b>::c;
570
+ /// struct SingleUse {
571
+ /// use_token: Token![use],
572
+ /// path: Path,
573
+ /// }
574
+ ///
575
+ /// impl Parse for SingleUse {
576
+ /// fn parse(input: ParseStream) -> Result<Self> {
577
+ /// Ok(SingleUse {
578
+ /// use_token: input.parse()?,
579
+ /// path: input.call(Path::parse_mod_style)?,
580
+ /// })
581
+ /// }
582
+ /// }
583
+ /// ```
584
+ #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
585
+ pub fn parse_mod_style(input: ParseStream) -> Result<Self> {
586
+ Ok(Path {
587
+ leading_colon: input.parse()?,
588
+ segments: {
589
+ let mut segments = Punctuated::new();
590
+ loop {
591
+ if !input.peek(Ident)
592
+ && !input.peek(Token![super])
593
+ && !input.peek(Token![self])
594
+ && !input.peek(Token![Self])
595
+ && !input.peek(Token![crate])
596
+ {
597
+ break;
598
+ }
599
+ let ident = Ident::parse_any(input)?;
600
+ segments.push_value(PathSegment::from(ident));
601
+ if !input.peek(Token![::]) {
602
+ break;
603
+ }
604
+ let punct = input.parse()?;
605
+ segments.push_punct(punct);
606
+ }
607
+ if segments.is_empty() {
608
+ return Err(input.parse::<Ident>().unwrap_err());
609
+ } else if segments.trailing_punct() {
610
+ return Err(input.error("expected path segment after `::`"));
611
+ }
612
+ segments
613
+ },
614
+ })
615
+ }
616
+
617
+ pub(crate) fn parse_helper(input: ParseStream, expr_style: bool) -> Result<Self> {
618
+ let mut path = Path {
619
+ leading_colon: input.parse()?,
620
+ segments: {
621
+ let mut segments = Punctuated::new();
622
+ let value = PathSegment::parse_helper(input, expr_style)?;
623
+ segments.push_value(value);
624
+ segments
625
+ },
626
+ };
627
+ Path::parse_rest(input, &mut path, expr_style)?;
628
+ Ok(path)
629
+ }
630
+
631
+ pub(crate) fn parse_rest(
632
+ input: ParseStream,
633
+ path: &mut Self,
634
+ expr_style: bool,
635
+ ) -> Result<()> {
636
+ while input.peek(Token![::]) && !input.peek3(token::Paren) {
637
+ let punct: Token![::] = input.parse()?;
638
+ path.segments.push_punct(punct);
639
+ let value = PathSegment::parse_helper(input, expr_style)?;
640
+ path.segments.push_value(value);
641
+ }
642
+ Ok(())
643
+ }
644
+
645
+ pub(crate) fn is_mod_style(&self) -> bool {
646
+ self.segments
647
+ .iter()
648
+ .all(|segment| segment.arguments.is_none())
649
+ }
650
+ }
651
+
652
+ pub(crate) fn qpath(input: ParseStream, expr_style: bool) -> Result<(Option<QSelf>, Path)> {
653
+ if input.peek(Token![<]) {
654
+ let lt_token: Token![<] = input.parse()?;
655
+ let this: Type = input.parse()?;
656
+ let path = if input.peek(Token![as]) {
657
+ let as_token: Token![as] = input.parse()?;
658
+ let path: Path = input.parse()?;
659
+ Some((as_token, path))
660
+ } else {
661
+ None
662
+ };
663
+ let gt_token: Token![>] = input.parse()?;
664
+ let colon2_token: Token![::] = input.parse()?;
665
+ let mut rest = Punctuated::new();
666
+ loop {
667
+ let path = PathSegment::parse_helper(input, expr_style)?;
668
+ rest.push_value(path);
669
+ if !input.peek(Token![::]) {
670
+ break;
671
+ }
672
+ let punct: Token![::] = input.parse()?;
673
+ rest.push_punct(punct);
674
+ }
675
+ let (position, as_token, path) = match path {
676
+ Some((as_token, mut path)) => {
677
+ let pos = path.segments.len();
678
+ path.segments.push_punct(colon2_token);
679
+ path.segments.extend(rest.into_pairs());
680
+ (pos, Some(as_token), path)
681
+ }
682
+ None => {
683
+ let path = Path {
684
+ leading_colon: Some(colon2_token),
685
+ segments: rest,
686
+ };
687
+ (0, None, path)
688
+ }
689
+ };
690
+ let qself = QSelf {
691
+ lt_token,
692
+ ty: Box::new(this),
693
+ position,
694
+ as_token,
695
+ gt_token,
696
+ };
697
+ Ok((Some(qself), path))
698
+ } else {
699
+ let path = Path::parse_helper(input, expr_style)?;
700
+ Ok((None, path))
701
+ }
702
+ }
703
+ }
704
+
705
+ #[cfg(feature = "printing")]
706
+ pub(crate) mod printing {
707
+ use crate::generics;
708
+ use crate::path::{
709
+ AngleBracketedGenericArguments, AssocConst, AssocType, Constraint, GenericArgument,
710
+ ParenthesizedGenericArguments, Path, PathArguments, PathSegment, QSelf,
711
+ };
712
+ use crate::print::TokensOrDefault;
713
+ #[cfg(feature = "parsing")]
714
+ use crate::spanned::Spanned;
715
+ use core::cmp;
716
+ #[cfg(feature = "parsing")]
717
+ use proc_macro2::Span;
718
+ use proc_macro2::TokenStream;
719
+ use quote::ToTokens;
720
+
721
+ pub(crate) enum PathStyle {
722
+ Expr,
723
+ Mod,
724
+ AsWritten,
725
+ }
726
+
727
+ impl Copy for PathStyle {}
728
+
729
+ impl Clone for PathStyle {
730
+ fn clone(&self) -> Self {
731
+ *self
732
+ }
733
+ }
734
+
735
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
736
+ impl ToTokens for Path {
737
+ fn to_tokens(&self, tokens: &mut TokenStream) {
738
+ print_path(tokens, self, PathStyle::AsWritten);
739
+ }
740
+ }
741
+
742
+ pub(crate) fn print_path(tokens: &mut TokenStream, path: &Path, style: PathStyle) {
743
+ path.leading_colon.to_tokens(tokens);
744
+ for segment in path.segments.pairs() {
745
+ print_path_segment(tokens, segment.value(), style);
746
+ segment.punct().to_tokens(tokens);
747
+ }
748
+ }
749
+
750
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
751
+ impl ToTokens for PathSegment {
752
+ fn to_tokens(&self, tokens: &mut TokenStream) {
753
+ print_path_segment(tokens, self, PathStyle::AsWritten);
754
+ }
755
+ }
756
+
757
+ fn print_path_segment(tokens: &mut TokenStream, segment: &PathSegment, style: PathStyle) {
758
+ segment.ident.to_tokens(tokens);
759
+ print_path_arguments(tokens, &segment.arguments, style);
760
+ }
761
+
762
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
763
+ impl ToTokens for PathArguments {
764
+ fn to_tokens(&self, tokens: &mut TokenStream) {
765
+ print_path_arguments(tokens, self, PathStyle::AsWritten);
766
+ }
767
+ }
768
+
769
+ fn print_path_arguments(tokens: &mut TokenStream, arguments: &PathArguments, style: PathStyle) {
770
+ match arguments {
771
+ PathArguments::None => {}
772
+ PathArguments::AngleBracketed(arguments) => {
773
+ print_angle_bracketed_generic_arguments(tokens, arguments, style);
774
+ }
775
+ PathArguments::Parenthesized(arguments) => {
776
+ print_parenthesized_generic_arguments(tokens, arguments, style);
777
+ }
778
+ }
779
+ }
780
+
781
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
782
+ impl ToTokens for GenericArgument {
783
+ #[allow(clippy::match_same_arms)]
784
+ fn to_tokens(&self, tokens: &mut TokenStream) {
785
+ match self {
786
+ GenericArgument::Lifetime(lt) => lt.to_tokens(tokens),
787
+ GenericArgument::Type(ty) => ty.to_tokens(tokens),
788
+ GenericArgument::Const(expr) => {
789
+ generics::printing::print_const_argument(expr, tokens);
790
+ }
791
+ GenericArgument::AssocType(assoc) => assoc.to_tokens(tokens),
792
+ GenericArgument::AssocConst(assoc) => assoc.to_tokens(tokens),
793
+ GenericArgument::Constraint(constraint) => constraint.to_tokens(tokens),
794
+ }
795
+ }
796
+ }
797
+
798
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
799
+ impl ToTokens for AngleBracketedGenericArguments {
800
+ fn to_tokens(&self, tokens: &mut TokenStream) {
801
+ print_angle_bracketed_generic_arguments(tokens, self, PathStyle::AsWritten);
802
+ }
803
+ }
804
+
805
+ pub(crate) fn print_angle_bracketed_generic_arguments(
806
+ tokens: &mut TokenStream,
807
+ arguments: &AngleBracketedGenericArguments,
808
+ style: PathStyle,
809
+ ) {
810
+ if let PathStyle::Mod = style {
811
+ return;
812
+ }
813
+
814
+ conditionally_print_turbofish(tokens, &arguments.colon2_token, style);
815
+ arguments.lt_token.to_tokens(tokens);
816
+
817
+ // Print lifetimes before types/consts/bindings, regardless of their
818
+ // order in args.
819
+ let mut trailing_or_empty = true;
820
+ for param in arguments.args.pairs() {
821
+ match param.value() {
822
+ GenericArgument::Lifetime(_) => {
823
+ param.to_tokens(tokens);
824
+ trailing_or_empty = param.punct().is_some();
825
+ }
826
+ GenericArgument::Type(_)
827
+ | GenericArgument::Const(_)
828
+ | GenericArgument::AssocType(_)
829
+ | GenericArgument::AssocConst(_)
830
+ | GenericArgument::Constraint(_) => {}
831
+ }
832
+ }
833
+ for param in arguments.args.pairs() {
834
+ match param.value() {
835
+ GenericArgument::Type(_)
836
+ | GenericArgument::Const(_)
837
+ | GenericArgument::AssocType(_)
838
+ | GenericArgument::AssocConst(_)
839
+ | GenericArgument::Constraint(_) => {
840
+ if !trailing_or_empty {
841
+ <Token![,]>::default().to_tokens(tokens);
842
+ }
843
+ param.to_tokens(tokens);
844
+ trailing_or_empty = param.punct().is_some();
845
+ }
846
+ GenericArgument::Lifetime(_) => {}
847
+ }
848
+ }
849
+
850
+ arguments.gt_token.to_tokens(tokens);
851
+ }
852
+
853
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
854
+ impl ToTokens for AssocType {
855
+ fn to_tokens(&self, tokens: &mut TokenStream) {
856
+ self.ident.to_tokens(tokens);
857
+ self.generics.to_tokens(tokens);
858
+ self.eq_token.to_tokens(tokens);
859
+ self.ty.to_tokens(tokens);
860
+ }
861
+ }
862
+
863
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
864
+ impl ToTokens for AssocConst {
865
+ fn to_tokens(&self, tokens: &mut TokenStream) {
866
+ self.ident.to_tokens(tokens);
867
+ self.generics.to_tokens(tokens);
868
+ self.eq_token.to_tokens(tokens);
869
+ generics::printing::print_const_argument(&self.value, tokens);
870
+ }
871
+ }
872
+
873
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
874
+ impl ToTokens for Constraint {
875
+ fn to_tokens(&self, tokens: &mut TokenStream) {
876
+ self.ident.to_tokens(tokens);
877
+ self.generics.to_tokens(tokens);
878
+ self.colon_token.to_tokens(tokens);
879
+ self.bounds.to_tokens(tokens);
880
+ }
881
+ }
882
+
883
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
884
+ impl ToTokens for ParenthesizedGenericArguments {
885
+ fn to_tokens(&self, tokens: &mut TokenStream) {
886
+ print_parenthesized_generic_arguments(tokens, self, PathStyle::AsWritten);
887
+ }
888
+ }
889
+
890
+ fn print_parenthesized_generic_arguments(
891
+ tokens: &mut TokenStream,
892
+ arguments: &ParenthesizedGenericArguments,
893
+ style: PathStyle,
894
+ ) {
895
+ if let PathStyle::Mod = style {
896
+ return;
897
+ }
898
+
899
+ conditionally_print_turbofish(tokens, &None, style);
900
+ arguments.paren_token.surround(tokens, |tokens| {
901
+ arguments.inputs.to_tokens(tokens);
902
+ });
903
+ arguments.output.to_tokens(tokens);
904
+ }
905
+
906
+ pub(crate) fn print_qpath(
907
+ tokens: &mut TokenStream,
908
+ qself: &Option<QSelf>,
909
+ path: &Path,
910
+ style: PathStyle,
911
+ ) {
912
+ let qself = match qself {
913
+ Some(qself) => qself,
914
+ None => {
915
+ print_path(tokens, path, style);
916
+ return;
917
+ }
918
+ };
919
+ qself.lt_token.to_tokens(tokens);
920
+ qself.ty.to_tokens(tokens);
921
+
922
+ let pos = cmp::min(qself.position, path.segments.len());
923
+ let mut segments = path.segments.pairs();
924
+ if pos > 0 {
925
+ TokensOrDefault(&qself.as_token).to_tokens(tokens);
926
+ path.leading_colon.to_tokens(tokens);
927
+ for (i, segment) in segments.by_ref().take(pos).enumerate() {
928
+ print_path_segment(tokens, segment.value(), PathStyle::AsWritten);
929
+ if i + 1 == pos {
930
+ qself.gt_token.to_tokens(tokens);
931
+ }
932
+ segment.punct().to_tokens(tokens);
933
+ }
934
+ } else {
935
+ qself.gt_token.to_tokens(tokens);
936
+ path.leading_colon.to_tokens(tokens);
937
+ }
938
+ for segment in segments {
939
+ print_path_segment(tokens, segment.value(), style);
940
+ segment.punct().to_tokens(tokens);
941
+ }
942
+ }
943
+
944
+ fn conditionally_print_turbofish(
945
+ tokens: &mut TokenStream,
946
+ colon2_token: &Option<Token![::]>,
947
+ style: PathStyle,
948
+ ) {
949
+ match style {
950
+ PathStyle::Expr => TokensOrDefault(colon2_token).to_tokens(tokens),
951
+ PathStyle::Mod => unreachable!(),
952
+ PathStyle::AsWritten => colon2_token.to_tokens(tokens),
953
+ }
954
+ }
955
+
956
+ #[cfg(feature = "parsing")]
957
+ #[cfg_attr(docsrs, doc(cfg(all(feature = "parsing", feature = "printing"))))]
958
+ impl Spanned for QSelf {
959
+ fn span(&self) -> Span {
960
+ struct QSelfDelimiters<'a>(&'a QSelf);
961
+
962
+ impl<'a> ToTokens for QSelfDelimiters<'a> {
963
+ fn to_tokens(&self, tokens: &mut TokenStream) {
964
+ self.0.lt_token.to_tokens(tokens);
965
+ self.0.gt_token.to_tokens(tokens);
966
+ }
967
+ }
968
+
969
+ QSelfDelimiters(self).span()
970
+ }
971
+ }
972
+ }