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,994 @@
1
+ use crate::attr::Attribute;
2
+ use crate::expr::{Expr, Member};
3
+ use crate::ident::Ident;
4
+ use crate::path::{Path, QSelf};
5
+ use crate::punctuated::Punctuated;
6
+ use crate::token;
7
+ use crate::ty::Type;
8
+ use alloc::boxed::Box;
9
+ use alloc::vec::Vec;
10
+ use proc_macro2::TokenStream;
11
+
12
+ pub use crate::expr::{
13
+ ExprConst as PatConst, ExprLit as PatLit, ExprMacro as PatMacro, ExprPath as PatPath,
14
+ ExprRange as PatRange,
15
+ };
16
+
17
+ ast_enum_of_structs! {
18
+ /// A pattern in a local binding, function signature, match expression, or
19
+ /// various other places.
20
+ ///
21
+ /// # Syntax tree enum
22
+ ///
23
+ /// This type is a [syntax tree enum].
24
+ ///
25
+ /// [syntax tree enum]: crate::expr::Expr#syntax-tree-enums
26
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
27
+ #[non_exhaustive]
28
+ pub enum Pat {
29
+ /// A const block: `const { ... }`.
30
+ Const(PatConst),
31
+
32
+ /// A pattern with guard predicate: `Some(x) if x > 0`.
33
+ Guard(PatGuard),
34
+
35
+ /// A pattern that binds a new variable: `ref mut binding @ SUBPATTERN`.
36
+ Ident(PatIdent),
37
+
38
+ /// A literal pattern: `0`.
39
+ Lit(PatLit),
40
+
41
+ /// A macro in pattern position.
42
+ Macro(PatMacro),
43
+
44
+ /// A pattern that matches any one of a set of cases.
45
+ Or(PatOr),
46
+
47
+ /// A parenthesized pattern: `(A | B)`.
48
+ Paren(PatParen),
49
+
50
+ /// A path pattern like `Color::Red`, optionally qualified with a
51
+ /// self-type.
52
+ ///
53
+ /// Unqualified path patterns can legally refer to variants, structs,
54
+ /// constants or associated constants. Qualified path patterns like
55
+ /// `<A>::B::C` and `<A as Trait>::B::C` can only legally refer to
56
+ /// associated constants.
57
+ Path(PatPath),
58
+
59
+ /// A range pattern: `1..=2`.
60
+ Range(PatRange),
61
+
62
+ /// A reference pattern: `&mut var`.
63
+ Reference(PatReference),
64
+
65
+ /// The dots in a tuple or slice pattern: `[0, 1, ..]`.
66
+ Rest(PatRest),
67
+
68
+ /// A dynamically sized slice pattern: `[a, b, ref i @ .., y, z]`.
69
+ Slice(PatSlice),
70
+
71
+ /// A struct or struct variant pattern: `Variant { x, y, .. }`.
72
+ Struct(PatStruct),
73
+
74
+ /// A tuple pattern: `(a, b)`.
75
+ Tuple(PatTuple),
76
+
77
+ /// A tuple struct or tuple variant pattern: `Variant(x, y, .., z)`.
78
+ TupleStruct(PatTupleStruct),
79
+
80
+ /// A type ascription pattern: `foo: f64`.
81
+ Type(PatType),
82
+
83
+ /// Tokens in pattern position not interpreted by Syn.
84
+ ///
85
+ /// <div class="warning">
86
+ ///
87
+ /// Important: see [Compatibility notes][crate#verbatim-variants].
88
+ ///
89
+ /// </div>
90
+ Verbatim(TokenStream),
91
+
92
+ /// A pattern that matches any value: `_`.
93
+ Wild(PatWild),
94
+ }
95
+ }
96
+
97
+ ast_struct! {
98
+ /// A pattern that binds a new variable: `ref mut binding @ SUBPATTERN`.
99
+ ///
100
+ /// It may also be a unit struct or struct variant (e.g. `None`), or a
101
+ /// constant; these cannot be distinguished syntactically.
102
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
103
+ pub struct PatIdent {
104
+ pub attrs: Vec<Attribute>,
105
+ pub by_ref: Option<Token![ref]>,
106
+ pub mutability: Option<Token![mut]>,
107
+ pub ident: Ident,
108
+ pub subpat: Option<(Token![@], Box<Pat>)>,
109
+ }
110
+ }
111
+
112
+ ast_struct! {
113
+ /// A pattern with guard predicate: `Some(x) if x > 0`.
114
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
115
+ pub struct PatGuard {
116
+ pub attrs: Vec<Attribute>,
117
+ pub pat: Box<Pat>,
118
+ pub if_token: Token![if],
119
+ pub guard: Box<Expr>,
120
+ }
121
+ }
122
+
123
+ ast_struct! {
124
+ /// A pattern that matches any one of a set of cases.
125
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
126
+ pub struct PatOr {
127
+ pub attrs: Vec<Attribute>,
128
+ pub leading_vert: Option<Token![|]>,
129
+ pub cases: Punctuated<Pat, Token![|]>,
130
+ }
131
+ }
132
+
133
+ ast_struct! {
134
+ /// A parenthesized pattern: `(A | B)`.
135
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
136
+ pub struct PatParen {
137
+ pub attrs: Vec<Attribute>,
138
+ pub paren_token: token::Paren,
139
+ pub pat: Box<Pat>,
140
+ }
141
+ }
142
+
143
+ ast_struct! {
144
+ /// A reference pattern: `&mut var`.
145
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
146
+ pub struct PatReference {
147
+ pub attrs: Vec<Attribute>,
148
+ pub and_token: Token![&],
149
+ pub mutability: Option<Token![mut]>,
150
+ pub pat: Box<Pat>,
151
+ }
152
+ }
153
+
154
+ ast_struct! {
155
+ /// The dots in a tuple or slice pattern: `[0, 1, ..]`.
156
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
157
+ pub struct PatRest {
158
+ pub attrs: Vec<Attribute>,
159
+ pub dot2_token: Token![..],
160
+ }
161
+ }
162
+
163
+ ast_struct! {
164
+ /// A dynamically sized slice pattern: `[a, b, ref i @ .., y, z]`.
165
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
166
+ pub struct PatSlice {
167
+ pub attrs: Vec<Attribute>,
168
+ pub bracket_token: token::Bracket,
169
+ pub elems: Punctuated<Pat, Token![,]>,
170
+ }
171
+ }
172
+
173
+ ast_struct! {
174
+ /// A struct or struct variant pattern: `Variant { x, y, .. }`.
175
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
176
+ pub struct PatStruct {
177
+ pub attrs: Vec<Attribute>,
178
+ pub qself: Option<QSelf>,
179
+ pub path: Path,
180
+ pub brace_token: token::Brace,
181
+ pub fields: Punctuated<FieldPat, Token![,]>,
182
+ pub rest: Option<PatRest>,
183
+ }
184
+ }
185
+
186
+ ast_struct! {
187
+ /// A tuple pattern: `(a, b)`.
188
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
189
+ pub struct PatTuple {
190
+ pub attrs: Vec<Attribute>,
191
+ pub paren_token: token::Paren,
192
+ pub elems: Punctuated<Pat, Token![,]>,
193
+ }
194
+ }
195
+
196
+ ast_struct! {
197
+ /// A tuple struct or tuple variant pattern: `Variant(x, y, .., z)`.
198
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
199
+ pub struct PatTupleStruct {
200
+ pub attrs: Vec<Attribute>,
201
+ pub qself: Option<QSelf>,
202
+ pub path: Path,
203
+ pub paren_token: token::Paren,
204
+ pub elems: Punctuated<Pat, Token![,]>,
205
+ }
206
+ }
207
+
208
+ ast_struct! {
209
+ /// A type ascription pattern: `foo: f64`.
210
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
211
+ pub struct PatType {
212
+ pub attrs: Vec<Attribute>,
213
+ pub pat: Box<Pat>,
214
+ pub colon_token: Token![:],
215
+ pub ty: Box<Type>,
216
+ }
217
+ }
218
+
219
+ ast_struct! {
220
+ /// A pattern that matches any value: `_`.
221
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
222
+ pub struct PatWild {
223
+ pub attrs: Vec<Attribute>,
224
+ pub underscore_token: Token![_],
225
+ }
226
+ }
227
+
228
+ ast_struct! {
229
+ /// A single field in a struct pattern.
230
+ ///
231
+ /// Patterns like the fields of `Pat { x, ref y, ref mut z }` are treated
232
+ /// the same as `x: x, y: ref y, z: ref mut z` but there is no colon token.
233
+ #[cfg_attr(docsrs, doc(cfg(feature = "full")))]
234
+ pub struct FieldPat {
235
+ pub attrs: Vec<Attribute>,
236
+ pub member: Member,
237
+ pub colon_token: Option<Token![:]>,
238
+ pub pat: Box<Pat>,
239
+ }
240
+ }
241
+
242
+ #[cfg(feature = "parsing")]
243
+ pub(crate) mod parsing {
244
+ use crate::attr::Attribute;
245
+ use crate::buffer::Cursor;
246
+ use crate::error::{self, Result};
247
+ use crate::expr::{
248
+ Expr, ExprConst, ExprLit, ExprMacro, ExprPath, ExprRange, Member, RangeLimits,
249
+ };
250
+ use crate::ext::IdentExt as _;
251
+ use crate::ident::Ident;
252
+ use crate::lit::Lit;
253
+ use crate::mac::{self, Macro};
254
+ use crate::parse::{Parse, ParseStream};
255
+ use crate::pat::{
256
+ FieldPat, Pat, PatGuard, PatIdent, PatOr, PatParen, PatReference, PatRest, PatSlice,
257
+ PatStruct, PatTuple, PatTupleStruct, PatType, PatWild,
258
+ };
259
+ use crate::path::{self, Path, QSelf};
260
+ use crate::punctuated::Punctuated;
261
+ use crate::stmt::Block;
262
+ use crate::token;
263
+ use crate::verbatim;
264
+ use alloc::boxed::Box;
265
+ use alloc::vec::Vec;
266
+ use proc_macro2::TokenStream;
267
+
268
+ #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
269
+ impl Pat {
270
+ /// Parse a pattern that does _not_ involve `|` at the top level.
271
+ ///
272
+ /// This parser matches the behavior of the `$:pat_param` macro_rules
273
+ /// matcher, and on editions prior to Rust 2021, the behavior of
274
+ /// `$:pat`.
275
+ ///
276
+ /// In Rust syntax, some examples of where this syntax would occur are
277
+ /// in the argument pattern of functions and closures. Patterns using
278
+ /// `|` are not allowed to occur in these positions.
279
+ ///
280
+ /// ```compile_fail
281
+ /// fn f(Some(_) | None: Option<T>) {
282
+ /// let _ = |Some(_) | None: Option<T>| {};
283
+ /// // ^^^^^^^^^^^^^^^^^^^^^^^^^??? :(
284
+ /// }
285
+ /// ```
286
+ ///
287
+ /// ```console
288
+ /// error: top-level or-patterns are not allowed in function parameters
289
+ /// --> src/main.rs:1:6
290
+ /// |
291
+ /// 1 | fn f(Some(_) | None: Option<T>) {
292
+ /// | ^^^^^^^^^^^^^^ help: wrap the pattern in parentheses: `(Some(_) | None)`
293
+ /// ```
294
+ pub fn parse_single(input: ParseStream) -> Result<Self> {
295
+ let begin = input.cursor();
296
+ let lookahead = input.lookahead1();
297
+ if lookahead.peek(Ident)
298
+ && (input.peek2(Token![::])
299
+ || input.peek2(Token![!])
300
+ || input.peek2(token::Brace)
301
+ || input.peek2(token::Paren)
302
+ || input.peek2(Token![..]))
303
+ || input.peek(Token![self]) && input.peek2(Token![::])
304
+ || lookahead.peek(Token![::])
305
+ || lookahead.peek(Token![<])
306
+ || input.peek(Token![Self])
307
+ || input.peek(Token![super])
308
+ || input.peek(Token![crate])
309
+ {
310
+ pat_path_or_macro_or_struct_or_range(input)
311
+ } else if lookahead.peek(Token![_]) {
312
+ input.call(pat_wild).map(Pat::Wild)
313
+ } else if input.peek(Token![box]) {
314
+ pat_box(begin, input)
315
+ } else if input.peek(Token![-]) || lookahead.peek(Lit) || lookahead.peek(Token![const])
316
+ {
317
+ pat_lit_or_range(input)
318
+ } else if lookahead.peek(Token![ref])
319
+ || lookahead.peek(Token![mut])
320
+ || input.peek(Token![self])
321
+ || input.peek(Ident)
322
+ {
323
+ input.call(pat_ident).map(Pat::Ident)
324
+ } else if lookahead.peek(Token![&]) {
325
+ input.call(pat_reference).map(Pat::Reference)
326
+ } else if lookahead.peek(token::Paren) {
327
+ input.call(pat_paren_or_tuple)
328
+ } else if lookahead.peek(token::Bracket) {
329
+ input.call(pat_slice).map(Pat::Slice)
330
+ } else if lookahead.peek(Token![..]) && !input.peek(Token![...]) {
331
+ pat_range_half_open(input)
332
+ } else if lookahead.peek(Token![const]) {
333
+ input.call(pat_const).map(Pat::Verbatim)
334
+ } else {
335
+ Err(lookahead.error())
336
+ }
337
+ }
338
+
339
+ /// Parse a pattern, possibly involving `|`, but not a leading `|`.
340
+ pub fn parse_multi(input: ParseStream) -> Result<Self> {
341
+ let allow_guard = false;
342
+ multi_pat_impl(input, None, allow_guard)
343
+ }
344
+
345
+ /// Parse a pattern, possibly involving `|`, possibly including a
346
+ /// leading `|`.
347
+ ///
348
+ /// This parser matches the behavior of the Rust 2021 edition's `$:pat`
349
+ /// macro_rules matcher.
350
+ ///
351
+ /// In Rust syntax, an example of where this syntax would occur is in
352
+ /// the pattern of a `match` arm, where the language permits an optional
353
+ /// leading `|`, although it is not idiomatic to write one there in
354
+ /// handwritten code.
355
+ ///
356
+ /// ```
357
+ /// # let wat = None;
358
+ /// match wat {
359
+ /// | None | Some(false) => {}
360
+ /// | Some(true) => {}
361
+ /// }
362
+ /// ```
363
+ ///
364
+ /// The compiler accepts it only to facilitate some situations in
365
+ /// macro-generated code where a macro author might need to write:
366
+ ///
367
+ /// ```
368
+ /// # macro_rules! doc {
369
+ /// # ($value:expr, ($($conditions1:pat),*), ($($conditions2:pat),*), $then:expr) => {
370
+ /// match $value {
371
+ /// $(| $conditions1)* $(| $conditions2)* => $then
372
+ /// }
373
+ /// # };
374
+ /// # }
375
+ /// #
376
+ /// # doc!(true, (true), (false), {});
377
+ /// # doc!(true, (), (true, false), {});
378
+ /// # doc!(true, (true, false), (), {});
379
+ /// ```
380
+ ///
381
+ /// Expressing the same thing correctly in the case that either one (but
382
+ /// not both) of `$conditions1` and `$conditions2` might be empty,
383
+ /// without leading `|`, is complex.
384
+ ///
385
+ /// Use [`Pat::parse_multi`] instead if you are not intending to support
386
+ /// macro-generated macro input.
387
+ pub fn parse_multi_with_leading_vert(input: ParseStream) -> Result<Self> {
388
+ let leading_vert: Option<Token![|]> = input.parse()?;
389
+ let allow_guard = false;
390
+ multi_pat_impl(input, leading_vert, allow_guard)
391
+ }
392
+
393
+ pub(crate) fn parse_multi_with_leading_vert_and_guard(input: ParseStream) -> Result<Self> {
394
+ let leading_vert: Option<Token![|]> = input.parse()?;
395
+ let allow_guard = true;
396
+ multi_pat_impl(input, leading_vert, allow_guard)
397
+ }
398
+ }
399
+
400
+ #[cfg_attr(docsrs, doc(cfg(feature = "parsing")))]
401
+ impl Parse for PatType {
402
+ fn parse(input: ParseStream) -> Result<Self> {
403
+ Ok(PatType {
404
+ attrs: Vec::new(),
405
+ pat: Box::new(Pat::parse_single(input)?),
406
+ colon_token: input.parse()?,
407
+ ty: input.parse()?,
408
+ })
409
+ }
410
+ }
411
+
412
+ fn multi_pat_impl(
413
+ input: ParseStream,
414
+ leading_vert: Option<Token![|]>,
415
+ allow_guard: bool,
416
+ ) -> Result<Pat> {
417
+ let mut pat = Pat::parse_single(input)?;
418
+ if leading_vert.is_some()
419
+ || input.peek(Token![|]) && !input.peek(Token![||]) && !input.peek(Token![|=])
420
+ {
421
+ let mut cases = Punctuated::new();
422
+ cases.push_value(pat);
423
+ while input.peek(Token![|]) && !input.peek(Token![||]) && !input.peek(Token![|=]) {
424
+ let punct = input.parse()?;
425
+ cases.push_punct(punct);
426
+ let pat = Pat::parse_single(input)?;
427
+ cases.push_value(pat);
428
+ }
429
+ pat = Pat::Or(PatOr {
430
+ attrs: Vec::new(),
431
+ leading_vert,
432
+ cases,
433
+ });
434
+ }
435
+ if allow_guard && input.peek(Token![if]) {
436
+ let if_token: Token![if] = input.parse()?;
437
+ let guard: Expr = input.parse()?;
438
+ pat = Pat::Guard(PatGuard {
439
+ attrs: Vec::new(),
440
+ pat: Box::new(pat),
441
+ if_token,
442
+ guard: Box::new(guard),
443
+ });
444
+ }
445
+ Ok(pat)
446
+ }
447
+
448
+ fn pat_path_or_macro_or_struct_or_range(input: ParseStream) -> Result<Pat> {
449
+ let expr_style = true;
450
+ let (qself, path) = path::parsing::qpath(input, expr_style)?;
451
+
452
+ if qself.is_none()
453
+ && input.peek(Token![!])
454
+ && !input.peek(Token![!=])
455
+ && path.is_mod_style()
456
+ {
457
+ let bang_token: Token![!] = input.parse()?;
458
+ let (delimiter, tokens) = mac::parse_delimiter(input)?;
459
+ return Ok(Pat::Macro(ExprMacro {
460
+ attrs: Vec::new(),
461
+ mac: Macro {
462
+ path,
463
+ bang_token,
464
+ delimiter,
465
+ tokens,
466
+ },
467
+ }));
468
+ }
469
+
470
+ if input.peek(token::Brace) {
471
+ pat_struct(input, qself, path).map(Pat::Struct)
472
+ } else if input.peek(token::Paren) {
473
+ pat_tuple_struct(input, qself, path).map(Pat::TupleStruct)
474
+ } else if input.peek(Token![..]) {
475
+ pat_range(input, qself, path)
476
+ } else {
477
+ Ok(Pat::Path(ExprPath {
478
+ attrs: Vec::new(),
479
+ qself,
480
+ path,
481
+ }))
482
+ }
483
+ }
484
+
485
+ fn pat_wild(input: ParseStream) -> Result<PatWild> {
486
+ Ok(PatWild {
487
+ attrs: Vec::new(),
488
+ underscore_token: input.parse()?,
489
+ })
490
+ }
491
+
492
+ fn pat_box(begin: Cursor, input: ParseStream) -> Result<Pat> {
493
+ input.parse::<Token![box]>()?;
494
+ Pat::parse_single(input)?;
495
+ Ok(Pat::Verbatim(verbatim::between(begin, input.cursor())))
496
+ }
497
+
498
+ fn pat_ident(input: ParseStream) -> Result<PatIdent> {
499
+ Ok(PatIdent {
500
+ attrs: Vec::new(),
501
+ by_ref: input.parse()?,
502
+ mutability: input.parse()?,
503
+ ident: {
504
+ if input.peek(Token![self]) {
505
+ input.call(Ident::parse_any)?
506
+ } else {
507
+ input.parse()?
508
+ }
509
+ },
510
+ subpat: {
511
+ if input.peek(Token![@]) {
512
+ let at_token: Token![@] = input.parse()?;
513
+ let subpat = Pat::parse_single(input)?;
514
+ Some((at_token, Box::new(subpat)))
515
+ } else {
516
+ None
517
+ }
518
+ },
519
+ })
520
+ }
521
+
522
+ fn pat_tuple_struct(
523
+ input: ParseStream,
524
+ qself: Option<QSelf>,
525
+ path: Path,
526
+ ) -> Result<PatTupleStruct> {
527
+ let content;
528
+ let paren_token = parenthesized!(content in input);
529
+
530
+ let mut elems = Punctuated::new();
531
+ while !content.is_empty() {
532
+ let value = Pat::parse_multi_with_leading_vert(&content)?;
533
+ elems.push_value(value);
534
+ if content.is_empty() {
535
+ break;
536
+ }
537
+ let punct = content.parse()?;
538
+ elems.push_punct(punct);
539
+ }
540
+
541
+ Ok(PatTupleStruct {
542
+ attrs: Vec::new(),
543
+ qself,
544
+ path,
545
+ paren_token,
546
+ elems,
547
+ })
548
+ }
549
+
550
+ fn pat_struct(input: ParseStream, qself: Option<QSelf>, path: Path) -> Result<PatStruct> {
551
+ let content;
552
+ let brace_token = braced!(content in input);
553
+
554
+ let mut fields = Punctuated::new();
555
+ let mut rest = None;
556
+ while !content.is_empty() {
557
+ let attrs = content.call(Attribute::parse_outer)?;
558
+ if content.peek(Token![..]) {
559
+ rest = Some(PatRest {
560
+ attrs,
561
+ dot2_token: content.parse()?,
562
+ });
563
+ break;
564
+ }
565
+ let mut value = content.call(field_pat)?;
566
+ value.attrs = attrs;
567
+ fields.push_value(value);
568
+ if content.is_empty() {
569
+ break;
570
+ }
571
+ let punct: Token![,] = content.parse()?;
572
+ fields.push_punct(punct);
573
+ }
574
+
575
+ Ok(PatStruct {
576
+ attrs: Vec::new(),
577
+ qself,
578
+ path,
579
+ brace_token,
580
+ fields,
581
+ rest,
582
+ })
583
+ }
584
+
585
+ fn field_pat(input: ParseStream) -> Result<FieldPat> {
586
+ let begin = input.cursor();
587
+ let boxed: Option<Token![box]> = input.parse()?;
588
+ let by_ref: Option<Token![ref]> = input.parse()?;
589
+ let mutability: Option<Token![mut]> = input.parse()?;
590
+
591
+ let member = if boxed.is_some() || by_ref.is_some() || mutability.is_some() {
592
+ input.parse().map(Member::Named)
593
+ } else {
594
+ input.parse()
595
+ }?;
596
+
597
+ if boxed.is_none() && by_ref.is_none() && mutability.is_none() && input.peek(Token![:])
598
+ || !member.is_named()
599
+ {
600
+ return Ok(FieldPat {
601
+ attrs: Vec::new(),
602
+ member,
603
+ colon_token: Some(input.parse()?),
604
+ pat: Box::new(Pat::parse_multi_with_leading_vert(input)?),
605
+ });
606
+ }
607
+
608
+ let ident = match member {
609
+ Member::Named(ident) => ident,
610
+ Member::Unnamed(_) => unreachable!(),
611
+ };
612
+
613
+ let pat = if boxed.is_some() {
614
+ Pat::Verbatim(verbatim::between(begin, input.cursor()))
615
+ } else {
616
+ Pat::Ident(PatIdent {
617
+ attrs: Vec::new(),
618
+ by_ref,
619
+ mutability,
620
+ ident: ident.clone(),
621
+ subpat: None,
622
+ })
623
+ };
624
+
625
+ Ok(FieldPat {
626
+ attrs: Vec::new(),
627
+ member: Member::Named(ident),
628
+ colon_token: None,
629
+ pat: Box::new(pat),
630
+ })
631
+ }
632
+
633
+ fn pat_range(input: ParseStream, qself: Option<QSelf>, path: Path) -> Result<Pat> {
634
+ let limits = RangeLimits::parse_obsolete(input)?;
635
+ let end = input.call(pat_range_bound)?;
636
+ if let (RangeLimits::Closed(_), None) = (&limits, &end) {
637
+ return Err(input.error("expected range upper bound"));
638
+ }
639
+ Ok(Pat::Range(ExprRange {
640
+ attrs: Vec::new(),
641
+ start: Some(Box::new(Expr::Path(ExprPath {
642
+ attrs: Vec::new(),
643
+ qself,
644
+ path,
645
+ }))),
646
+ limits,
647
+ end: end.map(PatRangeBound::into_expr),
648
+ }))
649
+ }
650
+
651
+ fn pat_range_half_open(input: ParseStream) -> Result<Pat> {
652
+ let limits: RangeLimits = input.parse()?;
653
+ let end = input.call(pat_range_bound)?;
654
+ if end.is_some() {
655
+ Ok(Pat::Range(ExprRange {
656
+ attrs: Vec::new(),
657
+ start: None,
658
+ limits,
659
+ end: end.map(PatRangeBound::into_expr),
660
+ }))
661
+ } else {
662
+ match limits {
663
+ RangeLimits::HalfOpen(dot2_token) => Ok(Pat::Rest(PatRest {
664
+ attrs: Vec::new(),
665
+ dot2_token,
666
+ })),
667
+ RangeLimits::Closed(_) => Err(input.error("expected range upper bound")),
668
+ }
669
+ }
670
+ }
671
+
672
+ fn pat_paren_or_tuple(input: ParseStream) -> Result<Pat> {
673
+ let content;
674
+ let paren_token = parenthesized!(content in input);
675
+
676
+ let mut elems = Punctuated::new();
677
+ while !content.is_empty() {
678
+ let value = Pat::parse_multi_with_leading_vert(&content)?;
679
+ if content.is_empty() {
680
+ if elems.is_empty() && !matches!(value, Pat::Rest(_)) {
681
+ return Ok(Pat::Paren(PatParen {
682
+ attrs: Vec::new(),
683
+ paren_token,
684
+ pat: Box::new(value),
685
+ }));
686
+ }
687
+ elems.push_value(value);
688
+ break;
689
+ }
690
+ elems.push_value(value);
691
+ let punct = content.parse()?;
692
+ elems.push_punct(punct);
693
+ }
694
+
695
+ Ok(Pat::Tuple(PatTuple {
696
+ attrs: Vec::new(),
697
+ paren_token,
698
+ elems,
699
+ }))
700
+ }
701
+
702
+ fn pat_reference(input: ParseStream) -> Result<PatReference> {
703
+ Ok(PatReference {
704
+ attrs: Vec::new(),
705
+ and_token: input.parse()?,
706
+ mutability: input.parse()?,
707
+ pat: Box::new(Pat::parse_single(input)?),
708
+ })
709
+ }
710
+
711
+ fn pat_lit_or_range(input: ParseStream) -> Result<Pat> {
712
+ let start = input.call(pat_range_bound)?.unwrap();
713
+ if input.peek(Token![..]) {
714
+ let limits = RangeLimits::parse_obsolete(input)?;
715
+ let end = input.call(pat_range_bound)?;
716
+ if let (RangeLimits::Closed(_), None) = (&limits, &end) {
717
+ return Err(input.error("expected range upper bound"));
718
+ }
719
+ Ok(Pat::Range(ExprRange {
720
+ attrs: Vec::new(),
721
+ start: Some(start.into_expr()),
722
+ limits,
723
+ end: end.map(PatRangeBound::into_expr),
724
+ }))
725
+ } else {
726
+ Ok(start.into_pat())
727
+ }
728
+ }
729
+
730
+ // Patterns that can appear on either side of a range pattern.
731
+ enum PatRangeBound {
732
+ Const(ExprConst),
733
+ Lit(ExprLit),
734
+ Path(ExprPath),
735
+ }
736
+
737
+ impl PatRangeBound {
738
+ fn into_expr(self) -> Box<Expr> {
739
+ Box::new(match self {
740
+ PatRangeBound::Const(pat) => Expr::Const(pat),
741
+ PatRangeBound::Lit(pat) => Expr::Lit(pat),
742
+ PatRangeBound::Path(pat) => Expr::Path(pat),
743
+ })
744
+ }
745
+
746
+ fn into_pat(self) -> Pat {
747
+ match self {
748
+ PatRangeBound::Const(pat) => Pat::Const(pat),
749
+ PatRangeBound::Lit(pat) => Pat::Lit(pat),
750
+ PatRangeBound::Path(pat) => Pat::Path(pat),
751
+ }
752
+ }
753
+ }
754
+
755
+ fn pat_range_bound(input: ParseStream) -> Result<Option<PatRangeBound>> {
756
+ if input.is_empty()
757
+ || input.peek(Token![|])
758
+ || input.peek(Token![=])
759
+ || input.peek(Token![:]) && !input.peek(Token![::])
760
+ || input.peek(Token![,])
761
+ || input.peek(Token![;])
762
+ || input.peek(Token![if])
763
+ {
764
+ return Ok(None);
765
+ }
766
+
767
+ let lookahead = input.lookahead1();
768
+ let expr = if lookahead.peek(Lit) {
769
+ PatRangeBound::Lit(input.parse()?)
770
+ } else if lookahead.peek(Ident)
771
+ || lookahead.peek(Token![::])
772
+ || lookahead.peek(Token![<])
773
+ || lookahead.peek(Token![self])
774
+ || lookahead.peek(Token![Self])
775
+ || lookahead.peek(Token![super])
776
+ || lookahead.peek(Token![crate])
777
+ {
778
+ PatRangeBound::Path(input.parse()?)
779
+ } else if lookahead.peek(Token![const]) {
780
+ PatRangeBound::Const(input.parse()?)
781
+ } else {
782
+ return Err(lookahead.error());
783
+ };
784
+
785
+ Ok(Some(expr))
786
+ }
787
+
788
+ fn pat_slice(input: ParseStream) -> Result<PatSlice> {
789
+ let content;
790
+ let bracket_token = bracketed!(content in input);
791
+
792
+ let mut elems = Punctuated::new();
793
+ while !content.is_empty() {
794
+ let value = Pat::parse_multi_with_leading_vert(&content)?;
795
+ match value {
796
+ Pat::Range(pat) if pat.start.is_none() || pat.end.is_none() => {
797
+ let (start, end) = match pat.limits {
798
+ RangeLimits::HalfOpen(dot_dot) => (dot_dot.spans[0], dot_dot.spans[1]),
799
+ RangeLimits::Closed(dot_dot_eq) => {
800
+ (dot_dot_eq.spans[0], dot_dot_eq.spans[2])
801
+ }
802
+ };
803
+ let msg = "range pattern is not allowed unparenthesized inside slice pattern";
804
+ return Err(error::new2(start, end, msg));
805
+ }
806
+ _ => {}
807
+ }
808
+ elems.push_value(value);
809
+ if content.is_empty() {
810
+ break;
811
+ }
812
+ let punct = content.parse()?;
813
+ elems.push_punct(punct);
814
+ }
815
+
816
+ Ok(PatSlice {
817
+ attrs: Vec::new(),
818
+ bracket_token,
819
+ elems,
820
+ })
821
+ }
822
+
823
+ fn pat_const(input: ParseStream) -> Result<TokenStream> {
824
+ let begin = input.cursor();
825
+ input.parse::<Token![const]>()?;
826
+
827
+ let content;
828
+ braced!(content in input);
829
+ content.call(Attribute::parse_inner)?;
830
+ content.call(Block::parse_within)?;
831
+
832
+ Ok(verbatim::between(begin, input.cursor()))
833
+ }
834
+ }
835
+
836
+ #[cfg(feature = "printing")]
837
+ mod printing {
838
+ use crate::attr::FilterAttrs;
839
+ use crate::pat::{
840
+ FieldPat, Pat, PatGuard, PatIdent, PatOr, PatParen, PatReference, PatRest, PatSlice,
841
+ PatStruct, PatTuple, PatTupleStruct, PatType, PatWild,
842
+ };
843
+ use crate::path;
844
+ use crate::path::printing::PathStyle;
845
+ use proc_macro2::TokenStream;
846
+ use quote::{ToTokens, TokenStreamExt as _};
847
+
848
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
849
+ impl ToTokens for PatIdent {
850
+ fn to_tokens(&self, tokens: &mut TokenStream) {
851
+ tokens.append_all(self.attrs.outer());
852
+ self.by_ref.to_tokens(tokens);
853
+ self.mutability.to_tokens(tokens);
854
+ self.ident.to_tokens(tokens);
855
+ if let Some((at_token, subpat)) = &self.subpat {
856
+ at_token.to_tokens(tokens);
857
+ subpat.to_tokens(tokens);
858
+ }
859
+ }
860
+ }
861
+
862
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
863
+ impl ToTokens for PatGuard {
864
+ fn to_tokens(&self, tokens: &mut TokenStream) {
865
+ tokens.append_all(self.attrs.outer());
866
+ self.pat.to_tokens(tokens);
867
+ self.if_token.to_tokens(tokens);
868
+ self.guard.to_tokens(tokens);
869
+ }
870
+ }
871
+
872
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
873
+ impl ToTokens for PatOr {
874
+ fn to_tokens(&self, tokens: &mut TokenStream) {
875
+ tokens.append_all(self.attrs.outer());
876
+ self.leading_vert.to_tokens(tokens);
877
+ self.cases.to_tokens(tokens);
878
+ }
879
+ }
880
+
881
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
882
+ impl ToTokens for PatParen {
883
+ fn to_tokens(&self, tokens: &mut TokenStream) {
884
+ tokens.append_all(self.attrs.outer());
885
+ self.paren_token.surround(tokens, |tokens| {
886
+ self.pat.to_tokens(tokens);
887
+ });
888
+ }
889
+ }
890
+
891
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
892
+ impl ToTokens for PatReference {
893
+ fn to_tokens(&self, tokens: &mut TokenStream) {
894
+ tokens.append_all(self.attrs.outer());
895
+ self.and_token.to_tokens(tokens);
896
+ self.mutability.to_tokens(tokens);
897
+ self.pat.to_tokens(tokens);
898
+ }
899
+ }
900
+
901
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
902
+ impl ToTokens for PatRest {
903
+ fn to_tokens(&self, tokens: &mut TokenStream) {
904
+ tokens.append_all(self.attrs.outer());
905
+ self.dot2_token.to_tokens(tokens);
906
+ }
907
+ }
908
+
909
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
910
+ impl ToTokens for PatSlice {
911
+ fn to_tokens(&self, tokens: &mut TokenStream) {
912
+ tokens.append_all(self.attrs.outer());
913
+ self.bracket_token.surround(tokens, |tokens| {
914
+ self.elems.to_tokens(tokens);
915
+ });
916
+ }
917
+ }
918
+
919
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
920
+ impl ToTokens for PatStruct {
921
+ fn to_tokens(&self, tokens: &mut TokenStream) {
922
+ tokens.append_all(self.attrs.outer());
923
+ path::printing::print_qpath(tokens, &self.qself, &self.path, PathStyle::Expr);
924
+ self.brace_token.surround(tokens, |tokens| {
925
+ self.fields.to_tokens(tokens);
926
+ // NOTE: We need a comma before the dot2 token if it is present.
927
+ if !self.fields.empty_or_trailing() && self.rest.is_some() {
928
+ <Token![,]>::default().to_tokens(tokens);
929
+ }
930
+ self.rest.to_tokens(tokens);
931
+ });
932
+ }
933
+ }
934
+
935
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
936
+ impl ToTokens for PatTuple {
937
+ fn to_tokens(&self, tokens: &mut TokenStream) {
938
+ tokens.append_all(self.attrs.outer());
939
+ self.paren_token.surround(tokens, |tokens| {
940
+ self.elems.to_tokens(tokens);
941
+ // If there is only one element, a trailing comma is needed to
942
+ // distinguish PatTuple from PatParen, unless this is `(..)`
943
+ // which is a tuple pattern even without comma.
944
+ if self.elems.len() == 1
945
+ && !self.elems.trailing_punct()
946
+ && !matches!(self.elems[0], Pat::Rest { .. })
947
+ {
948
+ <Token![,]>::default().to_tokens(tokens);
949
+ }
950
+ });
951
+ }
952
+ }
953
+
954
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
955
+ impl ToTokens for PatTupleStruct {
956
+ fn to_tokens(&self, tokens: &mut TokenStream) {
957
+ tokens.append_all(self.attrs.outer());
958
+ path::printing::print_qpath(tokens, &self.qself, &self.path, PathStyle::Expr);
959
+ self.paren_token.surround(tokens, |tokens| {
960
+ self.elems.to_tokens(tokens);
961
+ });
962
+ }
963
+ }
964
+
965
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
966
+ impl ToTokens for PatType {
967
+ fn to_tokens(&self, tokens: &mut TokenStream) {
968
+ tokens.append_all(self.attrs.outer());
969
+ self.pat.to_tokens(tokens);
970
+ self.colon_token.to_tokens(tokens);
971
+ self.ty.to_tokens(tokens);
972
+ }
973
+ }
974
+
975
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
976
+ impl ToTokens for PatWild {
977
+ fn to_tokens(&self, tokens: &mut TokenStream) {
978
+ tokens.append_all(self.attrs.outer());
979
+ self.underscore_token.to_tokens(tokens);
980
+ }
981
+ }
982
+
983
+ #[cfg_attr(docsrs, doc(cfg(feature = "printing")))]
984
+ impl ToTokens for FieldPat {
985
+ fn to_tokens(&self, tokens: &mut TokenStream) {
986
+ tokens.append_all(self.attrs.outer());
987
+ if let Some(colon_token) = &self.colon_token {
988
+ self.member.to_tokens(tokens);
989
+ colon_token.to_tokens(tokens);
990
+ }
991
+ self.pat.to_tokens(tokens);
992
+ }
993
+ }
994
+ }