mocktail 2.0.0 → 3.0.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 (288) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/main.yml +2 -2
  3. data/CHANGELOG.md +16 -0
  4. data/Gemfile +3 -2
  5. data/Gemfile.lock +76 -82
  6. data/README.md +2 -0
  7. data/docs/code_of_conduct.md +8 -0
  8. data/docs/configuring_minitest.md +20 -0
  9. data/docs/configuring_rspec.md +19 -0
  10. data/docs/example_test.md +594 -0
  11. data/docs/faq/existing_tests.md +47 -0
  12. data/docs/faq/mocking_http.md +151 -0
  13. data/docs/faq/mocking_the_subject.md +161 -0
  14. data/docs/faq/mocking_time.md +34 -0
  15. data/docs/faq/partial_mocks.md +34 -0
  16. data/docs/faq/verifying_real_interactions.md +52 -0
  17. data/docs/img/delegator_tree.png +0 -0
  18. data/docs/img/example_test.png +0 -0
  19. data/docs/img/extract_transform_load.png +0 -0
  20. data/docs/img/mocktail_sorbet.jpg +0 -0
  21. data/docs/img/mocktail_untyped.jpg +0 -0
  22. data/docs/img/spacer.png +0 -0
  23. data/docs/installation_sorbet.md +99 -0
  24. data/docs/installation_untyped.md +29 -0
  25. data/docs/other_uses.md +32 -0
  26. data/docs/stubbing_and_verifying.md +515 -0
  27. data/docs/support/api.md +819 -0
  28. data/docs/support/example_test.rb +94 -0
  29. data/docs/support/glossary.md +426 -0
  30. data/docs/tdd/class_methods.md +44 -0
  31. data/docs/tdd/poro/dependency_inception.md +136 -0
  32. data/docs/tdd/poro/dependency_injection.md +82 -0
  33. data/docs/tdd/poro.md +15 -0
  34. data/docs/tdd/third_party.md +220 -0
  35. data/docs/tdd.md +15 -0
  36. data/lib/mocktail/debug.rb +5 -4
  37. data/lib/mocktail/handles_dry_call/validates_arguments.rb +6 -3
  38. data/lib/mocktail/handles_dry_new_call.rb +5 -0
  39. data/lib/mocktail/replaces_type/redefines_singleton_methods.rb +5 -0
  40. data/lib/mocktail/share/folds_keywords_into_options_hash.rb +22 -0
  41. data/lib/mocktail/share/stringifies_call.rb +0 -1
  42. data/lib/mocktail/simulates_argument_error/transforms_params.rb +2 -2
  43. data/lib/mocktail/sorbet/mocktail/debug.rb +5 -4
  44. data/lib/mocktail/sorbet/mocktail/handles_dry_call/validates_arguments.rb +6 -3
  45. data/lib/mocktail/sorbet/mocktail/handles_dry_new_call.rb +5 -0
  46. data/lib/mocktail/sorbet/mocktail/replaces_type/redefines_singleton_methods.rb +5 -0
  47. data/lib/mocktail/sorbet/mocktail/share/folds_keywords_into_options_hash.rb +25 -0
  48. data/lib/mocktail/sorbet/mocktail/share/stringifies_call.rb +0 -1
  49. data/lib/mocktail/sorbet/mocktail/simulates_argument_error/transforms_params.rb +2 -2
  50. data/lib/mocktail/sorbet/mocktail/value/call.rb +1 -1
  51. data/lib/mocktail/sorbet/mocktail/version.rb +1 -1
  52. data/lib/mocktail/value/call.rb +1 -1
  53. data/lib/mocktail/version.rb +1 -1
  54. data/mocktail.gemspec +2 -2
  55. data/rbi/mocktail-pregenerated.rbi +54 -45
  56. data/script/build +47 -0
  57. data/script/setup +17 -0
  58. data/script/spoom_me +7 -0
  59. data/script/strip_sigils +17 -0
  60. data/script/test +33 -0
  61. data/script/test_double_require_warnings +46 -0
  62. data/script/update +21 -0
  63. data/sorbet/config +12 -0
  64. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  65. data/sorbet/rbi/gems/ast@2.4.2.rbi +584 -0
  66. data/sorbet/rbi/gems/diff-lcs@1.5.0.rbi +1083 -0
  67. data/sorbet/rbi/gems/docile@1.4.0.rbi +376 -0
  68. data/sorbet/rbi/gems/json@2.6.3.rbi +1533 -0
  69. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14237 -0
  70. data/sorbet/rbi/gems/lint_roller@1.0.0.rbi +230 -0
  71. data/sorbet/rbi/gems/m@1.6.1.rbi +257 -0
  72. data/sorbet/rbi/gems/method_source@1.0.0.rbi +272 -0
  73. data/sorbet/rbi/gems/minitest@5.18.0.rbi +1491 -0
  74. data/sorbet/rbi/gems/netrc@0.11.0.rbi +158 -0
  75. data/sorbet/rbi/gems/parallel@1.23.0.rbi +273 -0
  76. data/sorbet/rbi/gems/parser@3.2.2.1.rbi +7253 -0
  77. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +402 -0
  78. data/sorbet/rbi/gems/rake@13.0.6.rbi +3024 -0
  79. data/sorbet/rbi/gems/rbi@0.0.16.rbi +3049 -0
  80. data/sorbet/rbi/gems/regexp_parser@2.8.0.rbi +3748 -0
  81. data/sorbet/rbi/gems/rexml@3.2.5.rbi +4717 -0
  82. data/sorbet/rbi/gems/rubocop-ast@1.29.0.rbi +7003 -0
  83. data/sorbet/rbi/gems/rubocop-performance@1.18.0.rbi +8 -0
  84. data/sorbet/rbi/gems/rubocop-sorbet@0.7.0.rbi +1043 -0
  85. data/sorbet/rbi/gems/rubocop@1.52.0.rbi +55500 -0
  86. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1317 -0
  87. data/sorbet/rbi/gems/simplecov-html@0.12.3.rbi +216 -0
  88. data/sorbet/rbi/gems/simplecov@0.22.0.rbi +2148 -0
  89. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +8 -0
  90. data/sorbet/rbi/gems/spoom@1.2.1.rbi +2536 -0
  91. data/sorbet/rbi/gems/standard-custom@1.0.1.rbi +63 -0
  92. data/sorbet/rbi/gems/standard-performance@1.1.0.rbi +8 -0
  93. data/sorbet/rbi/gems/standard@1.29.0.rbi +850 -0
  94. data/sorbet/rbi/gems/tapioca@0.11.6.rbi +3301 -0
  95. data/sorbet/rbi/gems/thor@1.2.2.rbi +3965 -0
  96. data/sorbet/rbi/gems/unicode-display_width@2.4.2.rbi +65 -0
  97. data/sorbet/rbi/gems/unparser@0.6.7.rbi +4524 -0
  98. data/sorbet/rbi/gems/yard-sorbet@0.8.1.rbi +428 -0
  99. data/sorbet/rbi/gems/yard@0.9.34.rbi +18219 -0
  100. data/sorbet/tapioca/config.yml +13 -0
  101. data/sorbet/tapioca/require.rb +4 -0
  102. data/spoom_data/05f0c49.json +1 -0
  103. data/spoom_data/1657012.json +1 -0
  104. data/spoom_data/167434b.json +1 -0
  105. data/spoom_data/1d0ba5b.json +1 -0
  106. data/spoom_data/1ffa724.json +1 -0
  107. data/spoom_data/2129b3d.json +1 -0
  108. data/spoom_data/24b1c92.json +1 -0
  109. data/spoom_data/2c46aee.json +1 -0
  110. data/spoom_data/305ec0b.json +1 -0
  111. data/spoom_data/30e9528.json +1 -0
  112. data/spoom_data/4638cd5.json +1 -0
  113. data/spoom_data/47c7dad.json +1 -0
  114. data/spoom_data/4b1edef.json +1 -0
  115. data/spoom_data/4de157f.json +1 -0
  116. data/spoom_data/526e7db.json +1 -0
  117. data/spoom_data/5d093b9.json +1 -0
  118. data/spoom_data/5db3b43.json +1 -0
  119. data/spoom_data/5fe2a65.json +1 -0
  120. data/spoom_data/6891312.json +1 -0
  121. data/spoom_data/6b0fef4.json +1 -0
  122. data/spoom_data/6b83d12.json +1 -0
  123. data/spoom_data/74c83c2.json +1 -0
  124. data/spoom_data/7644ff4.json +1 -0
  125. data/spoom_data/79054db.json +1 -0
  126. data/spoom_data/814e515.json +1 -0
  127. data/spoom_data/88c3b60.json +1 -0
  128. data/spoom_data/8bd4b6e.json +1 -0
  129. data/spoom_data/93f8153.json +1 -0
  130. data/spoom_data/95242fe.json +1 -0
  131. data/spoom_data/97f4c09.json +1 -0
  132. data/spoom_data/a13d150.json +1 -0
  133. data/spoom_data/a17f215.json +1 -0
  134. data/spoom_data/b705a9d.json +1 -0
  135. data/spoom_data/ba19195.json +1 -0
  136. data/spoom_data/bef51ca.json +1 -0
  137. data/spoom_data/dbb595a.json +1 -0
  138. data/spoom_data/e8fab92.json +1 -0
  139. data/spoom_data/f166c87.json +1 -0
  140. data/spoom_data/f57992d.json +1 -0
  141. data/spoom_data/f5a1e40.json +1 -0
  142. data/spoom_data/f6d6431.json +1 -0
  143. data/spoom_data/f72b67c.json +1 -0
  144. data/spoom_data/fc2f231.json +1 -0
  145. data/src/mocktail/collects_calls.rb +18 -0
  146. data/src/mocktail/debug.rb +55 -0
  147. data/src/mocktail/dsl.rb +46 -0
  148. data/src/mocktail/errors.rb +19 -0
  149. data/src/mocktail/explains_nils.rb +41 -0
  150. data/src/mocktail/explains_thing.rb +137 -0
  151. data/src/mocktail/grabs_original_method_parameters.rb +33 -0
  152. data/src/mocktail/handles_dry_call/fulfills_stubbing/describes_unsatisfied_stubbing.rb +27 -0
  153. data/src/mocktail/handles_dry_call/fulfills_stubbing/finds_satisfaction.rb +24 -0
  154. data/src/mocktail/handles_dry_call/fulfills_stubbing.rb +45 -0
  155. data/src/mocktail/handles_dry_call/logs_call.rb +12 -0
  156. data/src/mocktail/handles_dry_call/validates_arguments.rb +48 -0
  157. data/src/mocktail/handles_dry_call.rb +25 -0
  158. data/src/mocktail/handles_dry_new_call.rb +47 -0
  159. data/src/mocktail/imitates_type/ensures_imitation_support.rb +16 -0
  160. data/src/mocktail/imitates_type/makes_double/declares_dry_class/reconstructs_call.rb +73 -0
  161. data/src/mocktail/imitates_type/makes_double/declares_dry_class.rb +136 -0
  162. data/src/mocktail/imitates_type/makes_double/gathers_fakeable_instance_methods.rb +28 -0
  163. data/src/mocktail/imitates_type/makes_double.rb +29 -0
  164. data/src/mocktail/imitates_type.rb +29 -0
  165. data/src/mocktail/initialize_based_on_type_system_mode_switching.rb +11 -0
  166. data/src/mocktail/initializes_mocktail.rb +25 -0
  167. data/src/mocktail/matcher_presentation.rb +21 -0
  168. data/src/mocktail/matchers/any.rb +27 -0
  169. data/src/mocktail/matchers/base.rb +39 -0
  170. data/src/mocktail/matchers/captor.rb +76 -0
  171. data/src/mocktail/matchers/includes.rb +32 -0
  172. data/src/mocktail/matchers/includes_hash.rb +12 -0
  173. data/src/mocktail/matchers/includes_key.rb +12 -0
  174. data/src/mocktail/matchers/includes_string.rb +12 -0
  175. data/src/mocktail/matchers/is_a.rb +17 -0
  176. data/src/mocktail/matchers/matches.rb +19 -0
  177. data/src/mocktail/matchers/not.rb +17 -0
  178. data/src/mocktail/matchers/numeric.rb +27 -0
  179. data/src/mocktail/matchers/that.rb +32 -0
  180. data/src/mocktail/matchers.rb +19 -0
  181. data/src/mocktail/raises_neato_no_method_error.rb +93 -0
  182. data/src/mocktail/records_demonstration.rb +43 -0
  183. data/src/mocktail/registers_matcher.rb +65 -0
  184. data/src/mocktail/registers_stubbing.rb +31 -0
  185. data/src/mocktail/replaces_next.rb +55 -0
  186. data/src/mocktail/replaces_type/redefines_new.rb +32 -0
  187. data/src/mocktail/replaces_type/redefines_singleton_methods.rb +85 -0
  188. data/src/mocktail/replaces_type/runs_sorbet_sig_blocks_before_replacement.rb +39 -0
  189. data/src/mocktail/replaces_type.rb +36 -0
  190. data/src/mocktail/resets_state.rb +14 -0
  191. data/src/mocktail/share/bind.rb +18 -0
  192. data/src/mocktail/share/cleans_backtrace.rb +22 -0
  193. data/src/mocktail/share/creates_identifier.rb +39 -0
  194. data/src/mocktail/share/determines_matching_calls.rb +72 -0
  195. data/src/mocktail/share/folds_keywords_into_options_hash.rb +25 -0
  196. data/src/mocktail/share/stringifies_call.rb +84 -0
  197. data/src/mocktail/share/stringifies_method_name.rb +16 -0
  198. data/src/mocktail/simulates_argument_error/reconciles_args_with_params.rb +27 -0
  199. data/src/mocktail/simulates_argument_error/recreates_message.rb +34 -0
  200. data/src/mocktail/simulates_argument_error/transforms_params.rb +58 -0
  201. data/src/mocktail/simulates_argument_error.rb +36 -0
  202. data/src/mocktail/sorbet.rb +3 -0
  203. data/src/mocktail/stringifies_method_signature.rb +53 -0
  204. data/src/mocktail/typed.rb +5 -0
  205. data/src/mocktail/value/cabinet.rb +91 -0
  206. data/src/mocktail/value/call.rb +51 -0
  207. data/src/mocktail/value/demo_config.rb +10 -0
  208. data/src/mocktail/value/double.rb +10 -0
  209. data/src/mocktail/value/double_data.rb +15 -0
  210. data/src/mocktail/value/explanation.rb +68 -0
  211. data/src/mocktail/value/explanation_data.rb +19 -0
  212. data/src/mocktail/value/fake_method_data.rb +11 -0
  213. data/src/mocktail/value/matcher_registry.rb +27 -0
  214. data/src/mocktail/value/no_explanation_data.rb +20 -0
  215. data/src/mocktail/value/signature.rb +35 -0
  216. data/src/mocktail/value/stubbing.rb +26 -0
  217. data/src/mocktail/value/top_shelf.rb +79 -0
  218. data/src/mocktail/value/type_replacement.rb +11 -0
  219. data/src/mocktail/value/type_replacement_data.rb +19 -0
  220. data/src/mocktail/value/unsatisfying_call.rb +9 -0
  221. data/src/mocktail/value/unsatisfying_call_explanation.rb +24 -0
  222. data/src/mocktail/value.rb +19 -0
  223. data/src/mocktail/verifies_call/finds_verifiable_calls.rb +21 -0
  224. data/src/mocktail/verifies_call/raises_verification_error/gathers_calls_of_method.rb +15 -0
  225. data/src/mocktail/verifies_call/raises_verification_error.rb +74 -0
  226. data/src/mocktail/verifies_call.rb +37 -0
  227. data/src/mocktail/version.rb +12 -0
  228. data/src/mocktail.rb +154 -0
  229. data/sub_projects/rbi_generator/Gemfile +4 -0
  230. data/sub_projects/rbi_generator/Gemfile.lock +63 -0
  231. data/sub_projects/rbi_generator/sorbet/rbi/gems/.gitattributes +1 -0
  232. data/sub_projects/sorbet_user/Gemfile +13 -0
  233. data/sub_projects/sorbet_user/Gemfile.lock +126 -0
  234. data/sub_projects/sorbet_user/Rakefile +10 -0
  235. data/sub_projects/sorbet_user/bin/tapioca +27 -0
  236. data/sub_projects/sorbet_user/rbi/mocktail.rbi +9 -0
  237. data/sub_projects/sorbet_user/script/test +13 -0
  238. data/sub_projects/sorbet_user/sorbet/config +4 -0
  239. data/sub_projects/sorbet_user/sorbet/rbi/gems/.gitattributes +1 -0
  240. data/sub_projects/sorbet_user/sorbet/rbi/gems/ast@2.4.3.rbi +585 -0
  241. data/sub_projects/sorbet_user/sorbet/rbi/gems/benchmark@0.4.0.rbi +618 -0
  242. data/sub_projects/sorbet_user/sorbet/rbi/gems/erubi@1.13.1.rbi +155 -0
  243. data/sub_projects/sorbet_user/sorbet/rbi/gems/json@2.21.2.rbi +2140 -0
  244. data/sub_projects/sorbet_user/sorbet/rbi/gems/language_server-protocol@3.17.0.4.rbi +14244 -0
  245. data/sub_projects/sorbet_user/sorbet/rbi/gems/lint_roller@1.1.0.rbi +239 -0
  246. data/sub_projects/sorbet_user/sorbet/rbi/gems/logger@1.7.0.rbi +963 -0
  247. data/sub_projects/sorbet_user/sorbet/rbi/gems/m@1.6.2.rbi +258 -0
  248. data/sub_projects/sorbet_user/sorbet/rbi/gems/method_source@1.1.0.rbi +9 -0
  249. data/sub_projects/sorbet_user/sorbet/rbi/gems/minitest@5.27.0.rbi +1549 -0
  250. data/sub_projects/sorbet_user/sorbet/rbi/gems/mocktail@3.0.1.rbi +1930 -0
  251. data/sub_projects/sorbet_user/sorbet/rbi/gems/netrc@0.11.0.rbi +158 -0
  252. data/sub_projects/sorbet_user/sorbet/rbi/gems/parallel@1.26.3.rbi +291 -0
  253. data/sub_projects/sorbet_user/sorbet/rbi/gems/parser@3.3.7.4.rbi +5451 -0
  254. data/sub_projects/sorbet_user/sorbet/rbi/gems/prism@1.4.0.rbi +41732 -0
  255. data/sub_projects/sorbet_user/sorbet/rbi/gems/racc@1.8.1.rbi +164 -0
  256. data/sub_projects/sorbet_user/sorbet/rbi/gems/rainbow@3.1.1.rbi +402 -0
  257. data/sub_projects/sorbet_user/sorbet/rbi/gems/rake@13.2.1.rbi +3028 -0
  258. data/sub_projects/sorbet_user/sorbet/rbi/gems/rbi@0.3.1.rbi +6599 -0
  259. data/sub_projects/sorbet_user/sorbet/rbi/gems/rbs@3.9.2.rbi +6976 -0
  260. data/sub_projects/sorbet_user/sorbet/rbi/gems/regexp_parser@2.10.0.rbi +3795 -0
  261. data/sub_projects/sorbet_user/sorbet/rbi/gems/rubocop-ast@1.43.0.rbi +7717 -0
  262. data/sub_projects/sorbet_user/sorbet/rbi/gems/rubocop-performance@1.24.0.rbi +9 -0
  263. data/sub_projects/sorbet_user/sorbet/rbi/gems/rubocop-sorbet@0.9.0.rbi +9 -0
  264. data/sub_projects/sorbet_user/sorbet/rbi/gems/rubocop@1.73.2.rbi +61306 -0
  265. data/sub_projects/sorbet_user/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1317 -0
  266. data/sub_projects/sorbet_user/sorbet/rbi/gems/sorbet-eraser@0.3.1.rbi +8 -0
  267. data/sub_projects/sorbet_user/sorbet/rbi/gems/spoom@1.6.1.rbi +7274 -0
  268. data/sub_projects/sorbet_user/sorbet/rbi/gems/standard-custom@1.0.2.rbi +8 -0
  269. data/sub_projects/sorbet_user/sorbet/rbi/gems/standard-performance@1.7.0.rbi +9 -0
  270. data/sub_projects/sorbet_user/sorbet/rbi/gems/standard-sorbet@0.0.3.rbi +53 -0
  271. data/sub_projects/sorbet_user/sorbet/rbi/gems/standard@1.47.0.rbi +935 -0
  272. data/sub_projects/sorbet_user/sorbet/rbi/gems/tapioca@0.16.11.rbi +3628 -0
  273. data/sub_projects/sorbet_user/sorbet/rbi/gems/thor@1.3.2.rbi +4378 -0
  274. data/sub_projects/sorbet_user/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi +132 -0
  275. data/sub_projects/sorbet_user/sorbet/rbi/gems/unicode-emoji@4.2.0.rbi +254 -0
  276. data/sub_projects/sorbet_user/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
  277. data/sub_projects/sorbet_user/sorbet/rbi/gems/yard@0.9.45.rbi +18916 -0
  278. data/sub_projects/sorbet_user/sorbet/tapioca/config.yml +13 -0
  279. data/sub_projects/sorbet_user/sorbet/tapioca/require.rb +4 -0
  280. data/sub_projects/sorbet_user/test/ensure_type_safety_test.rb +21 -0
  281. data/sub_projects/sorbet_user/test/paint_by_number_test.rb +113 -0
  282. data/sub_projects/sorbet_user/test/sorbet_test.rb +289 -0
  283. data/sub_projects/sorbet_user/test/test_helper.rb +35 -0
  284. data/sub_projects/untyped_user/Gemfile +4 -0
  285. data/sub_projects/untyped_user/Gemfile.lock +25 -0
  286. data/sub_projects/untyped_user/antitype_test.rb +54 -0
  287. data/sub_projects/untyped_user/script/test +5 -0
  288. metadata +267 -8
@@ -0,0 +1,1930 @@
1
+ # typed: true
2
+
3
+ # DO NOT EDIT MANUALLY
4
+ # This is an autogenerated file for types exported from the `mocktail` gem.
5
+ # Please instead update this file by running `bin/tapioca gem mocktail`.
6
+
7
+
8
+ # typed: true
9
+
10
+ # DO NOT EDIT MANUALLY
11
+ # This is an autogenerated file for types exported from the `mocktail` gem.
12
+ # Please instead update this file by running `bin/tapioca gem mocktail`.
13
+
14
+ # The Cabinet stores all thread-local state, so anything that goes here
15
+ # is guaranteed by Mocktail to be local to the currently-running thread
16
+ #
17
+ # source://mocktail//lib/mocktail/sorbet/mocktail/typed.rb#3
18
+ # The Cabinet stores all thread-local state, so anything that goes here
19
+ module Mocktail
20
+ extend ::Mocktail::DSL
21
+
22
+ class << self
23
+ # Stores most transactional state about calls & stubbing configurations
24
+ # Anything returned by this is undocumented and could change at any time, so
25
+ # don't commit code that relies on it!
26
+ #
27
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#149
28
+ # Stores most transactional state about calls & stubbing configurations
29
+ # Anything returned by this is undocumented and could change at any time, so
30
+ sig { returns(::Mocktail::Cabinet) }
31
+ def cabinet; end
32
+
33
+ # An alias for Mocktail.explain(double).reference.calls
34
+ # Takes an optional second parameter of the method name to filter only
35
+ # calls to that method
36
+ #
37
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#141
38
+ # An alias for Mocktail.explain(double).reference.calls
39
+ # Takes an optional second parameter of the method name to filter only
40
+ sig do
41
+ params(
42
+ double: ::Object,
43
+ method_name: T.nilable(T.any(::String, ::Symbol))
44
+ ).returns(T::Array[::Mocktail::Call])
45
+ end
46
+ def calls(double, method_name = T.unsafe(nil)); end
47
+
48
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#99
49
+ sig { returns(::Mocktail::Matchers::Captor) }
50
+ def captor; end
51
+
52
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#125
53
+ sig { params(thing: ::Object).returns(::Mocktail::Explanation) }
54
+ def explain(thing); end
55
+
56
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#130
57
+ sig { returns(T::Array[::Mocktail::UnsatisfyingCallExplanation]) }
58
+ def explain_nils; end
59
+
60
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#94
61
+ sig { returns(::Mocktail::MatcherPresentation) }
62
+ def matchers; end
63
+
64
+ # Returns an instance of `type` whose implementation is mocked out
65
+ #
66
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#52
67
+ sig do
68
+ type_parameters(:T)
69
+ .params(
70
+ type: T::Class[T.all(::Object, T.type_parameter(:T))]
71
+ ).returns(T.all(::Object, T.type_parameter(:T)))
72
+ end
73
+ def of(type); end
74
+
75
+ # Returns an instance of `klass` whose implementation is mocked out AND
76
+ # stubs its constructor to return that fake the next time klass.new is called
77
+ #
78
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#63
79
+ # Returns an instance of `klass` whose implementation is mocked out AND
80
+ sig do
81
+ type_parameters(:T)
82
+ .params(
83
+ type: T::Class[T.all(::Object, T.type_parameter(:T))],
84
+ count: T.nilable(::Integer)
85
+ ).returns(T.type_parameter(:T))
86
+ end
87
+ def of_next(type, count: T.unsafe(nil)); end
88
+
89
+ # An alias of of_next that always returns an array of fakes
90
+ #
91
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#89
92
+ sig do
93
+ type_parameters(:T)
94
+ .params(
95
+ type: T::Class[T.all(::Object, T.type_parameter(:T))],
96
+ count: ::Integer
97
+ ).returns(T::Array[T.type_parameter(:T)])
98
+ end
99
+ def of_next_with_count(type, count); end
100
+
101
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#104
102
+ sig { params(matcher: T.class_of(Mocktail::Matchers::Base)).void }
103
+ def register_matcher(matcher); end
104
+
105
+ # Replaces every singleton method on `type` with a fake, and when instantiated
106
+ # or included will also fake instance methods
107
+ #
108
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#111
109
+ # Replaces every singleton method on `type` with a fake, and when instantiated
110
+ sig { params(type: T.any(::Module, T::Class[T.anything])).void }
111
+ def replace(type); end
112
+
113
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#117
114
+ sig { void }
115
+ def reset; end
116
+ end
117
+ end
118
+
119
+ # source://mocktail//lib/mocktail/sorbet/mocktail/errors.rb#12
120
+ class Mocktail::AmbiguousDemonstrationError < ::Mocktail::Error; end
121
+
122
+ # source://mocktail//lib/mocktail/sorbet/mocktail.rb#44
123
+ Mocktail::BASE_PATH = T.let(T.unsafe(nil), String)
124
+
125
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/bind.rb#4
126
+ module Mocktail::Bind
127
+ class << self
128
+ # sig intentionally omitted, because the wrapper will cause infinite recursion if certain methods are mocked
129
+ #
130
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/bind.rb#6
131
+ def call(mock, method_name, *args, **kwargs, &blk); end
132
+ end
133
+ end
134
+
135
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#8
136
+ class Mocktail::Cabinet
137
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#24
138
+ sig { void }
139
+ def initialize; end
140
+
141
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#15
142
+ sig { returns(T::Array[::Mocktail::Call]) }
143
+ def calls; end
144
+
145
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#85
146
+ sig { params(double: ::Mocktail::Double).returns(T::Array[::Mocktail::Call]) }
147
+ def calls_for_double(double); end
148
+
149
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#12
150
+ sig { params(demonstration_in_progress: T::Boolean).void }
151
+ def demonstration_in_progress=(demonstration_in_progress); end
152
+
153
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#65
154
+ sig { returns(T::Boolean) }
155
+ def demonstration_in_progress?; end
156
+
157
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#70
158
+ sig { params(thing: T.anything).returns(T.nilable(::Mocktail::Double)) }
159
+ def double_for_instance(thing); end
160
+
161
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#33
162
+ sig { void }
163
+ def reset!; end
164
+
165
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#50
166
+ sig { params(call: ::Mocktail::Call).void }
167
+ def store_call(call); end
168
+
169
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#45
170
+ sig { params(double: ::Mocktail::Double).void }
171
+ def store_double(double); end
172
+
173
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#55
174
+ sig { params(stubbing: Mocktail::Stubbing[T.anything]).void }
175
+ def store_stubbing(stubbing); end
176
+
177
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#60
178
+ sig { params(unsatisfying_call: ::Mocktail::UnsatisfyingCall).void }
179
+ def store_unsatisfying_call(unsatisfying_call); end
180
+
181
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#18
182
+ sig { returns(T::Array[Mocktail::Stubbing[T.anything]]) }
183
+ def stubbings; end
184
+
185
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#78
186
+ sig { params(double: ::Mocktail::Double).returns(T::Array[Mocktail::Stubbing[T.anything]]) }
187
+ def stubbings_for_double(double); end
188
+
189
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/cabinet.rb#21
190
+ sig { returns(T::Array[::Mocktail::UnsatisfyingCall]) }
191
+ def unsatisfying_calls; end
192
+ end
193
+
194
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/call.rb#4
195
+ class Mocktail::Call < ::T::Struct
196
+ const :singleton, T.nilable(T::Boolean)
197
+ const :double, ::Object, default: T.unsafe(nil)
198
+ const :original_type, T.nilable(T.any(::Module, T::Class[T.anything]))
199
+ const :dry_type, T.nilable(T.any(::Module, T::Class[T.anything]))
200
+ const :method, T.nilable(::Symbol)
201
+ const :original_method, T.nilable(T.any(::Method, ::UnboundMethod))
202
+ const :args, T::Array[T.untyped], default: T.unsafe(nil)
203
+ const :kwargs, T::Hash[::Symbol, T.untyped], default: T.unsafe(nil)
204
+ const :block, T.nilable(::Proc)
205
+
206
+ # Because T::Struct compares with referential equality, we need
207
+ # to redefine the equality methods to compare the values of the attributes.
208
+ #
209
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/call.rb#27
210
+ # Because T::Struct compares with referential equality, we need
211
+ sig { params(other: T.nilable(T.anything)).returns(T::Boolean) }
212
+ def ==(other); end
213
+
214
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/call.rb#32
215
+ sig { params(other: T.anything).returns(T::Boolean) }
216
+ def eql?(other); end
217
+
218
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/call.rb#47
219
+ sig { returns(::Integer) }
220
+ def hash; end
221
+
222
+ class << self
223
+ # source://sorbet-runtime/0.5.11971/lib/types/struct.rb#13
224
+ def inherited(s); end
225
+ end
226
+ end
227
+
228
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/cleans_backtrace.rb#4
229
+ class Mocktail::CleansBacktrace
230
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/cleans_backtrace.rb#12
231
+ sig { type_parameters(:T).params(error: T.all(::StandardError, T.type_parameter(:T))).returns(T.type_parameter(:T)) }
232
+ def clean(error); end
233
+ end
234
+
235
+ # source://mocktail//lib/mocktail/sorbet/mocktail/collects_calls.rb#4
236
+ class Mocktail::CollectsCalls
237
+ # source://mocktail//lib/mocktail/sorbet/mocktail/collects_calls.rb#8
238
+ sig { params(double: ::Object, method_name: T.nilable(::Symbol)).returns(T::Array[::Mocktail::Call]) }
239
+ def collect(double, method_name); end
240
+ end
241
+
242
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/creates_identifier.rb#4
243
+ class Mocktail::CreatesIdentifier
244
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/creates_identifier.rb#10
245
+ sig { params(s: T.anything, default: ::String, max_length: ::Integer).returns(::String) }
246
+ def create(s, default: T.unsafe(nil), max_length: T.unsafe(nil)); end
247
+
248
+ private
249
+
250
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/creates_identifier.rb#33
251
+ sig { params(id: ::String, default: ::String).returns(::String) }
252
+ def unreserved(id, default); end
253
+ end
254
+
255
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/creates_identifier.rb#7
256
+ Mocktail::CreatesIdentifier::KEYWORDS = T.let(T.unsafe(nil), Array)
257
+
258
+ # source://mocktail//lib/mocktail/sorbet/mocktail/dsl.rb#4
259
+ module Mocktail::DSL
260
+ # source://mocktail//lib/mocktail/sorbet/mocktail/dsl.rb#18
261
+ sig do
262
+ type_parameters(:T)
263
+ .params(
264
+ ignore_block: T::Boolean,
265
+ ignore_extra_args: T::Boolean,
266
+ ignore_arity: T::Boolean,
267
+ times: T.nilable(::Integer),
268
+ demo: T.proc.params(matchers: ::Mocktail::MatcherPresentation).returns(T.type_parameter(:T))
269
+ ).returns(Mocktail::Stubbing[T.type_parameter(:T)])
270
+ end
271
+ def stubs(ignore_block: T.unsafe(nil), ignore_extra_args: T.unsafe(nil), ignore_arity: T.unsafe(nil), times: T.unsafe(nil), &demo); end
272
+
273
+ # source://mocktail//lib/mocktail/sorbet/mocktail/dsl.rb#37
274
+ sig do
275
+ params(
276
+ ignore_block: T::Boolean,
277
+ ignore_extra_args: T::Boolean,
278
+ ignore_arity: T::Boolean,
279
+ times: T.nilable(::Integer),
280
+ demo: T.proc.params(matchers: ::Mocktail::MatcherPresentation).void
281
+ ).void
282
+ end
283
+ def verify(ignore_block: T.unsafe(nil), ignore_extra_args: T.unsafe(nil), ignore_arity: T.unsafe(nil), times: T.unsafe(nil), &demo); end
284
+ end
285
+
286
+ # source://mocktail//lib/mocktail/sorbet/mocktail/debug.rb#4
287
+ module Mocktail::Debug
288
+ class << self
289
+ # It would be easy and bad for the mocktail lib to call something like
290
+ #
291
+ # double == other_double
292
+ #
293
+ # But if it's a double, that means anyone who stubs that method could change
294
+ # the internal behavior of the library in unexpected ways (as happened here:
295
+ # https://github.com/testdouble/mocktail/issues/7 )
296
+ #
297
+ # For that reason when we run our tests, we also want to blow up if this
298
+ # happens unintentionally. This works in conjunction with the test
299
+ # MockingMethodfulClassesTest, because it mocks every defined method on the
300
+ # mocked BasicObject
301
+ #
302
+ # source://mocktail//lib/mocktail/sorbet/mocktail/debug.rb#20
303
+ # It would be easy and bad for the mocktail lib to call something like
304
+ # double == other_double
305
+ # But if it's a double, that means anyone who stubs that method could change
306
+ # the internal behavior of the library in unexpected ways (as happened here:
307
+ # https://github.com/testdouble/mocktail/issues/7 )
308
+ # For that reason when we run our tests, we also want to blow up if this
309
+ # happens unintentionally. This works in conjunction with the test
310
+ # MockingMethodfulClassesTest, because it mocks every defined method on the
311
+ sig { void }
312
+ def guard_against_mocktail_accidentally_calling_mocks_if_debugging!; end
313
+ end
314
+ end
315
+
316
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class.rb#6
317
+ class Mocktail::DeclaresDryClass
318
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class.rb#12
319
+ sig { void }
320
+ def initialize; end
321
+
322
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class.rb#23
323
+ sig do
324
+ type_parameters(:T)
325
+ .params(
326
+ type: T.all(T.type_parameter(:T), T::Class[::Object]),
327
+ instance_methods: T::Array[::Symbol]
328
+ ).returns(T.type_parameter(:T))
329
+ end
330
+ def declare(type, instance_methods); end
331
+
332
+ private
333
+
334
+ # These have special implementations, but if the user defines
335
+ # any of them on the object itself, then they'll be replaced with normal
336
+ # mocked methods. YMMV
337
+ #
338
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class.rb#55
339
+ # These have special implementations, but if the user defines
340
+ # any of them on the object itself, then they'll be replaced with normal
341
+ sig do
342
+ params(
343
+ dry_class: T::Class[::Object],
344
+ type: T.any(::Module, T::Class[T.anything]),
345
+ instance_methods: T::Array[::Symbol]
346
+ ).void
347
+ end
348
+ def add_more_methods!(dry_class, type, instance_methods); end
349
+
350
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class.rb#94
351
+ sig do
352
+ params(
353
+ dry_class: T::Class[::Object],
354
+ method_name: ::Symbol,
355
+ type: T.any(::Module, T::Class[T.anything]),
356
+ instance_methods: T::Array[::Symbol]
357
+ ).void
358
+ end
359
+ def add_stringify_methods!(dry_class, method_name, type, instance_methods); end
360
+
361
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class.rb#64
362
+ sig do
363
+ params(
364
+ dry_class: T::Class[::Object],
365
+ type: T.any(::Module, T::Class[T.anything]),
366
+ instance_methods: T::Array[::Symbol]
367
+ ).void
368
+ end
369
+ def define_double_methods!(dry_class, type, instance_methods); end
370
+
371
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class.rb#115
372
+ sig do
373
+ params(
374
+ dry_class: T::Class[::Object],
375
+ type: T.any(::Module, T::Class[T.anything]),
376
+ instance_methods: T::Array[::Symbol]
377
+ ).void
378
+ end
379
+ def define_method_missing_errors!(dry_class, type, instance_methods); end
380
+ end
381
+
382
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class.rb#9
383
+ Mocktail::DeclaresDryClass::DEFAULT_ANCESTORS = T.let(T.unsafe(nil), Array)
384
+
385
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/demo_config.rb#4
386
+ class Mocktail::DemoConfig < ::T::Struct
387
+ const :ignore_block, T::Boolean, default: T.unsafe(nil)
388
+ const :ignore_extra_args, T::Boolean, default: T.unsafe(nil)
389
+ const :ignore_arity, T::Boolean, default: T.unsafe(nil)
390
+ const :times, T.nilable(::Integer), default: T.unsafe(nil)
391
+
392
+ class << self
393
+ # source://sorbet-runtime/0.5.11971/lib/types/struct.rb#13
394
+ def inherited(s); end
395
+ end
396
+ end
397
+
398
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing/describes_unsatisfied_stubbing.rb#7
399
+ class Mocktail::DescribesUnsatisfiedStubbing
400
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing/describes_unsatisfied_stubbing.rb#11
401
+ sig { void }
402
+ def initialize; end
403
+
404
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing/describes_unsatisfied_stubbing.rb#16
405
+ sig { params(dry_call: ::Mocktail::Call).returns(::Mocktail::UnsatisfyingCall) }
406
+ def describe(dry_call); end
407
+ end
408
+
409
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/determines_matching_calls.rb#6
410
+ class Mocktail::DeterminesMatchingCalls
411
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/determines_matching_calls.rb#10
412
+ sig do
413
+ params(
414
+ real_call: ::Mocktail::Call,
415
+ demo_call: ::Mocktail::Call,
416
+ demo_config: ::Mocktail::DemoConfig
417
+ ).returns(T::Boolean)
418
+ end
419
+ def determine(real_call, demo_call, demo_config); end
420
+
421
+ private
422
+
423
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/determines_matching_calls.rb#23
424
+ sig do
425
+ params(
426
+ real_args: T::Array[T.untyped],
427
+ demo_args: T::Array[T.untyped],
428
+ ignore_extra_args: T::Boolean
429
+ ).returns(T::Boolean)
430
+ end
431
+ def args_match?(real_args, demo_args, ignore_extra_args); end
432
+
433
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/determines_matching_calls.rb#50
434
+ sig do
435
+ params(
436
+ real_block: T.nilable(::Proc),
437
+ demo_block: T.nilable(::Proc),
438
+ ignore_block: T::Boolean
439
+ ).returns(T::Boolean)
440
+ end
441
+ def blocks_match?(real_block, demo_block, ignore_block); end
442
+
443
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/determines_matching_calls.rb#37
444
+ sig do
445
+ params(
446
+ real_kwargs: T::Hash[::Symbol, T.untyped],
447
+ demo_kwargs: T::Hash[::Symbol, T.untyped],
448
+ ignore_extra_args: T::Boolean
449
+ ).returns(T::Boolean)
450
+ end
451
+ def kwargs_match?(real_kwargs, demo_kwargs, ignore_extra_args); end
452
+
453
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/determines_matching_calls.rb#63
454
+ sig { params(real_arg: T.untyped, demo_arg: T.untyped).returns(T::Boolean) }
455
+ def match?(real_arg, demo_arg); end
456
+ end
457
+
458
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/double.rb#4
459
+ class Mocktail::Double < ::T::Struct
460
+ const :original_type, T.any(::Module, T::Class[T.anything])
461
+ const :dry_type, T::Class[T.anything]
462
+ const :dry_instance, ::Object
463
+ const :dry_methods, T::Array[::Symbol]
464
+
465
+ class << self
466
+ # source://sorbet-runtime/0.5.11971/lib/types/struct.rb#13
467
+ def inherited(s); end
468
+ end
469
+ end
470
+
471
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/double_data.rb#7
472
+ class Mocktail::DoubleData < ::T::Struct
473
+ include ::Mocktail::ExplanationData
474
+
475
+ const :type, T.any(::Module, T::Class[T.anything])
476
+ const :double, ::Object
477
+ const :calls, T::Array[::Mocktail::Call]
478
+ const :stubbings, T::Array[Mocktail::Stubbing[T.anything]]
479
+
480
+ class << self
481
+ # source://sorbet-runtime/0.5.11971/lib/types/struct.rb#13
482
+ def inherited(s); end
483
+ end
484
+ end
485
+
486
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#36
487
+ class Mocktail::DoubleExplanation < ::Mocktail::Explanation
488
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#41
489
+ sig { params(reference: ::Mocktail::DoubleData, message: ::String).void }
490
+ def initialize(reference, message); end
491
+
492
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#38
493
+ sig { override.returns(::Mocktail::DoubleData) }
494
+ def reference; end
495
+ end
496
+
497
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/ensures_imitation_support.rb#4
498
+ class Mocktail::EnsuresImitationSupport
499
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/ensures_imitation_support.rb#8
500
+ sig { params(type: T.any(::Module, T::Class[T.anything])).void }
501
+ def ensure(type); end
502
+ end
503
+
504
+ # source://mocktail//lib/mocktail/sorbet/mocktail/errors.rb#4
505
+ class Mocktail::Error < ::StandardError; end
506
+
507
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_nils.rb#7
508
+ class Mocktail::ExplainsNils
509
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_nils.rb#11
510
+ sig { void }
511
+ def initialize; end
512
+
513
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_nils.rb#17
514
+ sig { returns(T::Array[::Mocktail::UnsatisfyingCallExplanation]) }
515
+ def explain; end
516
+ end
517
+
518
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_thing.rb#7
519
+ class Mocktail::ExplainsThing
520
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_thing.rb#11
521
+ sig { void }
522
+ def initialize; end
523
+
524
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_thing.rb#17
525
+ sig { params(thing: ::Object).returns(::Mocktail::Explanation) }
526
+ def explain(thing); end
527
+
528
+ private
529
+
530
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_thing.rb#54
531
+ sig { params(double: ::Mocktail::Double).returns(::Mocktail::DoubleData) }
532
+ def data_for_double(double); end
533
+
534
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_thing.rb#78
535
+ sig { params(type_replacement: ::Mocktail::TypeReplacement).returns(::Mocktail::TypeReplacementData) }
536
+ def data_for_type_replacement(type_replacement); end
537
+
538
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_thing.rb#106
539
+ sig do
540
+ params(
541
+ double_data: T.any(::Mocktail::DoubleData, ::Mocktail::TypeReplacementData),
542
+ method: ::Symbol
543
+ ).returns(::String)
544
+ end
545
+ def describe_dry_method(double_data, method); end
546
+
547
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_thing.rb#64
548
+ sig { params(double: ::Mocktail::Double).returns(::Mocktail::DoubleExplanation) }
549
+ def double_explanation(double); end
550
+
551
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_thing.rb#33
552
+ sig { params(thing: ::Object).returns(T.nilable(::Mocktail::FakeMethodExplanation)) }
553
+ def fake_method_explanation_for(thing); end
554
+
555
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_thing.rb#132
556
+ sig { params(thing: ::Object).returns(::Mocktail::NoExplanation) }
557
+ def no_explanation(thing); end
558
+
559
+ # source://mocktail//lib/mocktail/sorbet/mocktail/explains_thing.rb#92
560
+ sig { params(type_replacement: ::Mocktail::TypeReplacement).returns(::Mocktail::ReplacedTypeExplanation) }
561
+ def replaced_type_explanation(type_replacement); end
562
+ end
563
+
564
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#4
565
+ class Mocktail::Explanation
566
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#14
567
+ sig { params(reference: ::Mocktail::ExplanationData, message: ::String).void }
568
+ def initialize(reference, message); end
569
+
570
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#11
571
+ sig { returns(::String) }
572
+ def message; end
573
+
574
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#8
575
+ sig { returns(::Mocktail::ExplanationData) }
576
+ def reference; end
577
+
578
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#20
579
+ sig { returns(T.class_of(Mocktail::Explanation)) }
580
+ def type; end
581
+ end
582
+
583
+ # @abstract Subclasses must implement the `abstract` methods below.
584
+ #
585
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation_data.rb#4
586
+ module Mocktail::ExplanationData
587
+ include ::Kernel
588
+
589
+ interface!
590
+
591
+ # @abstract
592
+ #
593
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation_data.rb#12
594
+ sig { abstract.returns(T::Array[::Mocktail::Call]) }
595
+ def calls; end
596
+
597
+ # @abstract
598
+ #
599
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation_data.rb#16
600
+ sig { abstract.returns(T::Array[Mocktail::Stubbing[T.anything]]) }
601
+ def stubbings; end
602
+ end
603
+
604
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/fake_method_data.rb#4
605
+ class Mocktail::FakeMethodData < ::T::Struct
606
+ include ::Mocktail::ExplanationData
607
+
608
+ const :receiver, T.anything
609
+ const :calls, T::Array[::Mocktail::Call]
610
+ const :stubbings, T::Array[Mocktail::Stubbing[T.anything]]
611
+
612
+ class << self
613
+ # source://sorbet-runtime/0.5.11971/lib/types/struct.rb#13
614
+ def inherited(s); end
615
+ end
616
+ end
617
+
618
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#58
619
+ class Mocktail::FakeMethodExplanation < ::Mocktail::Explanation
620
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#63
621
+ sig { params(reference: ::Mocktail::FakeMethodData, message: ::String).void }
622
+ def initialize(reference, message); end
623
+
624
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#60
625
+ sig { override.returns(::Mocktail::FakeMethodData) }
626
+ def reference; end
627
+ end
628
+
629
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing/finds_satisfaction.rb#6
630
+ class Mocktail::FindsSatisfaction
631
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing/finds_satisfaction.rb#10
632
+ sig { void }
633
+ def initialize; end
634
+
635
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing/finds_satisfaction.rb#15
636
+ sig { params(dry_call: ::Mocktail::Call).returns(T.nilable(Mocktail::Stubbing[T.anything])) }
637
+ def find(dry_call); end
638
+ end
639
+
640
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call/finds_verifiable_calls.rb#6
641
+ class Mocktail::FindsVerifiableCalls
642
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call/finds_verifiable_calls.rb#10
643
+ sig { void }
644
+ def initialize; end
645
+
646
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call/finds_verifiable_calls.rb#15
647
+ sig { params(recording: ::Mocktail::Call, demo_config: ::Mocktail::DemoConfig).returns(T::Array[::Mocktail::Call]) }
648
+ def find(recording, demo_config); end
649
+ end
650
+
651
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/folds_keywords_into_options_hash.rb#4
652
+ class Mocktail::FoldsKeywordsIntoOptionsHash
653
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/folds_keywords_into_options_hash.rb#10
654
+ sig { void }
655
+ def initialize; end
656
+
657
+ # Ruby 3 passes keywords to a method with no keyword params as a trailing
658
+ # positional hash, but our generic (*args, **kwargs) lambdas always split
659
+ # them out, so fold them back in to match what the real method would see
660
+ #
661
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/folds_keywords_into_options_hash.rb#18
662
+ # Ruby 3 passes keywords to a method with no keyword params as a trailing
663
+ # positional hash, but our generic (*args, **kwargs) lambdas always split
664
+ sig do
665
+ params(
666
+ original_method: T.nilable(T.any(::Method, ::UnboundMethod)),
667
+ args: T::Array[T.anything],
668
+ kwargs: T::Hash[::Symbol, T.anything]
669
+ ).returns([T::Array[T.anything], T::Hash[::Symbol, T.anything]])
670
+ end
671
+ def fold(original_method, args, kwargs); end
672
+ end
673
+
674
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/folds_keywords_into_options_hash.rb#7
675
+ Mocktail::FoldsKeywordsIntoOptionsHash::KEYWORD_PARAM_TYPES = T.let(T.unsafe(nil), Array)
676
+
677
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing.rb#7
678
+ class Mocktail::FulfillsStubbing
679
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing.rb#11
680
+ sig { void }
681
+ def initialize; end
682
+
683
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing.rb#17
684
+ sig { params(dry_call: ::Mocktail::Call).returns(T.anything) }
685
+ def fulfill(dry_call); end
686
+
687
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing.rb#28
688
+ sig { params(dry_call: ::Mocktail::Call).returns(T.nilable(Mocktail::Stubbing[T.anything])) }
689
+ def satisfaction(dry_call); end
690
+
691
+ private
692
+
693
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/fulfills_stubbing.rb#37
694
+ sig { params(dry_call: ::Mocktail::Call).void }
695
+ def store_unsatisfying_call!(dry_call); end
696
+ end
697
+
698
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call/raises_verification_error/gathers_calls_of_method.rb#4
699
+ class Mocktail::GathersCallsOfMethod
700
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call/raises_verification_error/gathers_calls_of_method.rb#8
701
+ sig { params(dry_call: ::Mocktail::Call).returns(T::Array[::Mocktail::Call]) }
702
+ def gather(dry_call); end
703
+ end
704
+
705
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/gathers_fakeable_instance_methods.rb#4
706
+ class Mocktail::GathersFakeableInstanceMethods
707
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/gathers_fakeable_instance_methods.rb#8
708
+ sig { params(type: T.any(::Module, T::Class[T.anything])).returns(T::Array[::Symbol]) }
709
+ def gather(type); end
710
+
711
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/gathers_fakeable_instance_methods.rb#19
712
+ sig { params(type: T.any(::Module, T::Class[T.anything]), method_name: ::Symbol).returns(T::Boolean) }
713
+ def ignore?(type, method_name); end
714
+
715
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/gathers_fakeable_instance_methods.rb#24
716
+ sig { returns(T::Array[::Module]) }
717
+ def ignored_ancestors; end
718
+ end
719
+
720
+ # source://mocktail//lib/mocktail/sorbet/mocktail/grabs_original_method_parameters.rb#4
721
+ class Mocktail::GrabsOriginalMethodParameters
722
+ # Sorbet wraps the original method in a sig wrapper, so we need to unwrap it.
723
+ # The value returned from `owner.instance_method(method_name)` does not have
724
+ # the real parameters values available, as they'll have been erased
725
+ #
726
+ # If the method isn't wrapped by Sorbet, this will return the #instance_method,
727
+ # per usual
728
+ #
729
+ # source://mocktail//lib/mocktail/sorbet/mocktail/grabs_original_method_parameters.rb#14
730
+ # Sorbet wraps the original method in a sig wrapper, so we need to unwrap it.
731
+ # The value returned from `owner.instance_method(method_name)` does not have
732
+ # the real parameters values available, as they'll have been erased
733
+ # If the method isn't wrapped by Sorbet, this will return the #instance_method,
734
+ sig { params(method: T.nilable(T.any(::Method, ::UnboundMethod))).returns(T::Array[T::Array[::Symbol]]) }
735
+ def grab(method); end
736
+
737
+ private
738
+
739
+ # source://mocktail//lib/mocktail/sorbet/mocktail/grabs_original_method_parameters.rb#27
740
+ sig { params(method: T.any(::Method, ::UnboundMethod)).returns(T.nilable(::T::Private::Methods::Signature)) }
741
+ def sorbet_wrapped_method(method); end
742
+ end
743
+
744
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call.rb#8
745
+ class Mocktail::HandlesDryCall
746
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call.rb#12
747
+ sig { void }
748
+ def initialize; end
749
+
750
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call.rb#19
751
+ sig { params(dry_call: ::Mocktail::Call).returns(T.anything) }
752
+ def handle(dry_call); end
753
+ end
754
+
755
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_new_call.rb#6
756
+ class Mocktail::HandlesDryNewCall
757
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_new_call.rb#10
758
+ sig { void }
759
+ def initialize; end
760
+
761
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_new_call.rb#19
762
+ sig do
763
+ params(
764
+ type: T::Class[T.all(::Object, ::T)],
765
+ args: T::Array[T.anything],
766
+ kwargs: T::Hash[::Symbol, T.anything],
767
+ block: T.nilable(::Proc)
768
+ ).returns(T.anything)
769
+ end
770
+ def handle(type, args, kwargs, block); end
771
+ end
772
+
773
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type.rb#7
774
+ class Mocktail::ImitatesType
775
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type.rb#12
776
+ sig { void }
777
+ def initialize; end
778
+
779
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type.rb#22
780
+ sig do
781
+ type_parameters(:T)
782
+ .params(
783
+ type: T::Class[T.all(::Object, T.type_parameter(:T))]
784
+ ).returns(T.all(::Object, T.type_parameter(:T)))
785
+ end
786
+ def imitate(type); end
787
+ end
788
+
789
+ # source://mocktail//lib/mocktail/sorbet/mocktail/initializes_mocktail.rb#4
790
+ class Mocktail::InitializesMocktail
791
+ # source://mocktail//lib/mocktail/sorbet/mocktail/initializes_mocktail.rb#8
792
+ sig { void }
793
+ def init; end
794
+ end
795
+
796
+ # source://mocktail//lib/mocktail/sorbet/mocktail/errors.rb#14
797
+ class Mocktail::InvalidMatcherError < ::Mocktail::Error; end
798
+
799
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/logs_call.rb#4
800
+ class Mocktail::LogsCall
801
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/logs_call.rb#8
802
+ sig { params(dry_call: ::Mocktail::Call).void }
803
+ def log(dry_call); end
804
+ end
805
+
806
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double.rb#7
807
+ class Mocktail::MakesDouble
808
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double.rb#11
809
+ sig { void }
810
+ def initialize; end
811
+
812
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double.rb#17
813
+ sig { params(type: T::Class[::Object]).returns(::Mocktail::Double) }
814
+ def make(type); end
815
+ end
816
+
817
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matcher_presentation.rb#4
818
+ class Mocktail::MatcherPresentation
819
+ sig { returns(T.untyped) }
820
+ def any; end
821
+
822
+ sig { type_parameters(:T).params(expecteds: T.type_parameter(:T)).returns(T::Array[T.type_parameter(:T)]) }
823
+ def includes(*expecteds); end
824
+
825
+ sig do
826
+ type_parameters(:K, :V)
827
+ .params(
828
+ expecteds: T::Hash[T.type_parameter(:K), T.type_parameter(:V)]
829
+ ).returns(T::Hash[T.type_parameter(:K), T.type_parameter(:V)])
830
+ end
831
+ def includes_hash(*expecteds); end
832
+
833
+ sig do
834
+ type_parameters(:K, :V)
835
+ .params(
836
+ expecteds: T.type_parameter(:K)
837
+ ).returns(T::Hash[T.type_parameter(:K), T.type_parameter(:V)])
838
+ end
839
+ def includes_key(*expecteds); end
840
+
841
+ sig { type_parameters(:T).params(expecteds: T.type_parameter(:T)).returns(T.type_parameter(:T)) }
842
+ def includes_string(*expecteds); end
843
+
844
+ sig { type_parameters(:T).params(expected: T::Class[T.type_parameter(:T)]).returns(T.type_parameter(:T)) }
845
+ def is_a(expected); end
846
+
847
+ sig { params(pattern: T.any(String, Regexp)).returns(String) }
848
+ def matches(pattern); end
849
+
850
+ # standard:disable Style/ArgumentsForwarding
851
+ #
852
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matcher_presentation.rb#13
853
+ sig { params(name: ::Symbol, args: T.anything, kwargs: T.anything, blk: T.nilable(::Proc)).returns(T.anything) }
854
+ def method_missing(name, *args, **kwargs, &blk); end
855
+
856
+ sig { type_parameters(:T).params(unexpected: T.type_parameter(:T)).returns(T.type_parameter(:T)) }
857
+ def not(unexpected); end
858
+
859
+ sig { returns(T.untyped) }
860
+ def numeric; end
861
+
862
+ sig { params(blk: T.proc.params(arg: T.untyped).returns(T::Boolean)).returns(T.untyped) }
863
+ def that(&blk); end
864
+
865
+ private
866
+
867
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matcher_presentation.rb#8
868
+ sig { params(name: ::Symbol, include_private: T::Boolean).returns(T::Boolean) }
869
+ def respond_to_missing?(name, include_private = T.unsafe(nil)); end
870
+ end
871
+
872
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/matcher_registry.rb#4
873
+ class Mocktail::MatcherRegistry
874
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/matcher_registry.rb#13
875
+ sig { void }
876
+ def initialize; end
877
+
878
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/matcher_registry.rb#18
879
+ sig { params(matcher_type: T.class_of(Mocktail::Matchers::Base)).void }
880
+ def add(matcher_type); end
881
+
882
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/matcher_registry.rb#23
883
+ sig { params(name: ::Symbol).returns(T.nilable(T.class_of(Mocktail::Matchers::Base))) }
884
+ def get(name); end
885
+
886
+ class << self
887
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/matcher_registry.rb#8
888
+ sig { returns(::Mocktail::MatcherRegistry) }
889
+ def instance; end
890
+ end
891
+ end
892
+
893
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers.rb#4
894
+ module Mocktail::Matchers; end
895
+
896
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/any.rb#4
897
+ class Mocktail::Matchers::Any < ::Mocktail::Matchers::Base
898
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/any.rb#13
899
+ sig { void }
900
+ def initialize; end
901
+
902
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/any.rb#23
903
+ sig { returns(::String) }
904
+ def inspect; end
905
+
906
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/any.rb#18
907
+ sig { params(actual: T.anything).returns(T::Boolean) }
908
+ def match?(actual); end
909
+
910
+ class << self
911
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/any.rb#8
912
+ sig { returns(::Symbol) }
913
+ def matcher_name; end
914
+ end
915
+ end
916
+
917
+ # @abstract It cannot be directly instantiated. Subclasses must implement the `abstract` methods below.
918
+ #
919
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/base.rb#4
920
+ class Mocktail::Matchers::Base
921
+ # Custom matchers can receive any args, kwargs, or block they want. Usually
922
+ # single-argument, though, so that's defaulted here and in #insepct
923
+ #
924
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/base.rb#15
925
+ # Custom matchers can receive any args, kwargs, or block they want. Usually
926
+ sig { params(expected: ::BasicObject).void }
927
+ def initialize(expected); end
928
+
929
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/base.rb#30
930
+ sig { returns(::String) }
931
+ def inspect; end
932
+
933
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/base.rb#35
934
+ sig { returns(::TrueClass) }
935
+ def is_mocktail_matcher?; end
936
+
937
+ # @raise [Mocktail::InvalidMatcherError]
938
+ #
939
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/base.rb#25
940
+ sig { params(actual: T.untyped).returns(T::Boolean) }
941
+ def match?(actual); end
942
+
943
+ class << self
944
+ # @raise [Mocktail::InvalidMatcherError]
945
+ #
946
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/base.rb#20
947
+ sig { returns(::Symbol) }
948
+ def matcher_name; end
949
+ end
950
+ end
951
+
952
+ # Captors are conceptually complex implementations, but with a simple usage/purpose:
953
+ # They are values the user can create and hold onto that will return a matcher
954
+ # and then "capture" the value made by the real call, for later analysis & assertion.
955
+ #
956
+ # Unlike other matchers, these don't make any useful sense for stubbing, but are
957
+ # very useful when asserting complication call verifications
958
+ #
959
+ # The fact the user will need the reference outside the verification call is
960
+ # why this is a top-level method on Mocktail, and not included in the |m| block
961
+ # arg to stubs/verify
962
+ #
963
+ # See Mockito, which is the earliest implementation I know of:
964
+ # https://javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Captor.html
965
+ #
966
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/captor.rb#17
967
+ # Captors are conceptually complex implementations, but with a simple usage/purpose:
968
+ # They are values the user can create and hold onto that will return a matcher
969
+ # and then "capture" the value made by the real call, for later analysis & assertion.
970
+ # Unlike other matchers, these don't make any useful sense for stubbing, but are
971
+ # very useful when asserting complication call verifications
972
+ # The fact the user will need the reference outside the verification call is
973
+ # why this is a top-level method on Mocktail, and not included in the |m| block
974
+ # arg to stubs/verify
975
+ # See Mockito, which is the earliest implementation I know of:
976
+ class Mocktail::Matchers::Captor
977
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/captor.rb#62
978
+ sig { void }
979
+ def initialize; end
980
+
981
+ # This T.untyped is intentional. Even though a Capture is surely returned,
982
+ # in order for a verification demonstration to pass its own type check,
983
+ # it needs to think it's being returned whatever parameter is expected
984
+ #
985
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/captor.rb#59
986
+ # This T.untyped is intentional. Even though a Capture is surely returned,
987
+ # in order for a verification demonstration to pass its own type check,
988
+ sig { returns(T.untyped) }
989
+ def capture; end
990
+
991
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/captor.rb#67
992
+ sig { returns(T::Boolean) }
993
+ def captured?; end
994
+
995
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/captor.rb#72
996
+ sig { returns(T.untyped) }
997
+ def value; end
998
+ end
999
+
1000
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/captor.rb#20
1001
+ class Mocktail::Matchers::Captor::Capture < ::Mocktail::Matchers::Base
1002
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/captor.rb#32
1003
+ sig { void }
1004
+ def initialize; end
1005
+
1006
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/captor.rb#45
1007
+ sig { returns(T::Boolean) }
1008
+ def captured?; end
1009
+
1010
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/captor.rb#50
1011
+ sig { returns(::String) }
1012
+ def inspect; end
1013
+
1014
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/captor.rb#38
1015
+ sig { params(actual: T.untyped).returns(::TrueClass) }
1016
+ def match?(actual); end
1017
+
1018
+ # Returns the value of attribute value.
1019
+ #
1020
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/captor.rb#29
1021
+ sig { returns(T.untyped) }
1022
+ def value; end
1023
+
1024
+ class << self
1025
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/captor.rb#24
1026
+ sig { returns(::Symbol) }
1027
+ def matcher_name; end
1028
+ end
1029
+ end
1030
+
1031
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/includes.rb#4
1032
+ class Mocktail::Matchers::Includes < ::Mocktail::Matchers::Base
1033
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/includes.rb#13
1034
+ sig { params(expecteds: T.untyped).void }
1035
+ def initialize(*expecteds); end
1036
+
1037
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/includes.rb#28
1038
+ sig { returns(::String) }
1039
+ def inspect; end
1040
+
1041
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/includes.rb#18
1042
+ sig { params(actual: T.untyped).returns(T::Boolean) }
1043
+ def match?(actual); end
1044
+
1045
+ class << self
1046
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/includes.rb#8
1047
+ sig { returns(::Symbol) }
1048
+ def matcher_name; end
1049
+ end
1050
+ end
1051
+
1052
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/includes_hash.rb#4
1053
+ class Mocktail::Matchers::IncludesHash < ::Mocktail::Matchers::Includes
1054
+ class << self
1055
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/includes_hash.rb#8
1056
+ sig { returns(::Symbol) }
1057
+ def matcher_name; end
1058
+ end
1059
+ end
1060
+
1061
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/includes_key.rb#4
1062
+ class Mocktail::Matchers::IncludesKey < ::Mocktail::Matchers::Includes
1063
+ class << self
1064
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/includes_key.rb#8
1065
+ sig { returns(::Symbol) }
1066
+ def matcher_name; end
1067
+ end
1068
+ end
1069
+
1070
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/includes_string.rb#4
1071
+ class Mocktail::Matchers::IncludesString < ::Mocktail::Matchers::Includes
1072
+ class << self
1073
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/includes_string.rb#8
1074
+ sig { returns(::Symbol) }
1075
+ def matcher_name; end
1076
+ end
1077
+ end
1078
+
1079
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/is_a.rb#4
1080
+ class Mocktail::Matchers::IsA < ::Mocktail::Matchers::Base
1081
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/is_a.rb#13
1082
+ sig { params(actual: T.untyped).returns(T::Boolean) }
1083
+ def match?(actual); end
1084
+
1085
+ class << self
1086
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/is_a.rb#8
1087
+ sig { returns(::Symbol) }
1088
+ def matcher_name; end
1089
+ end
1090
+ end
1091
+
1092
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/matches.rb#4
1093
+ class Mocktail::Matchers::Matches < ::Mocktail::Matchers::Base
1094
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/matches.rb#13
1095
+ sig { params(actual: T.untyped).returns(T::Boolean) }
1096
+ def match?(actual); end
1097
+
1098
+ class << self
1099
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/matches.rb#8
1100
+ sig { returns(::Symbol) }
1101
+ def matcher_name; end
1102
+ end
1103
+ end
1104
+
1105
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/not.rb#4
1106
+ class Mocktail::Matchers::Not < ::Mocktail::Matchers::Base
1107
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/not.rb#13
1108
+ sig { params(actual: T.untyped).returns(T::Boolean) }
1109
+ def match?(actual); end
1110
+
1111
+ class << self
1112
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/not.rb#8
1113
+ sig { returns(::Symbol) }
1114
+ def matcher_name; end
1115
+ end
1116
+ end
1117
+
1118
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/numeric.rb#4
1119
+ class Mocktail::Matchers::Numeric < ::Mocktail::Matchers::Base
1120
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/numeric.rb#13
1121
+ sig { void }
1122
+ def initialize; end
1123
+
1124
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/numeric.rb#23
1125
+ sig { returns(::String) }
1126
+ def inspect; end
1127
+
1128
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/numeric.rb#18
1129
+ sig { params(actual: T.untyped).returns(T::Boolean) }
1130
+ def match?(actual); end
1131
+
1132
+ class << self
1133
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/numeric.rb#8
1134
+ sig { returns(::Symbol) }
1135
+ def matcher_name; end
1136
+ end
1137
+ end
1138
+
1139
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/that.rb#4
1140
+ class Mocktail::Matchers::That < ::Mocktail::Matchers::Base
1141
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/that.rb#13
1142
+ sig { params(blk: T.nilable(T.proc.params(actual: T.untyped).returns(T.untyped))).void }
1143
+ def initialize(&blk); end
1144
+
1145
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/that.rb#28
1146
+ sig { returns(::String) }
1147
+ def inspect; end
1148
+
1149
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/that.rb#21
1150
+ sig { params(actual: T.untyped).returns(T::Boolean) }
1151
+ def match?(actual); end
1152
+
1153
+ class << self
1154
+ # source://mocktail//lib/mocktail/sorbet/mocktail/matchers/that.rb#8
1155
+ sig { returns(::Symbol) }
1156
+ def matcher_name; end
1157
+ end
1158
+ end
1159
+
1160
+ # source://mocktail//lib/mocktail/sorbet/mocktail/errors.rb#10
1161
+ class Mocktail::MissingDemonstrationError < ::Mocktail::Error; end
1162
+
1163
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#25
1164
+ class Mocktail::NoExplanation < ::Mocktail::Explanation
1165
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#30
1166
+ sig { params(reference: ::Mocktail::NoExplanationData, message: ::String).void }
1167
+ def initialize(reference, message); end
1168
+
1169
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#27
1170
+ sig { override.returns(::Mocktail::NoExplanationData) }
1171
+ def reference; end
1172
+ end
1173
+
1174
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/no_explanation_data.rb#4
1175
+ class Mocktail::NoExplanationData < ::T::Struct
1176
+ include ::Mocktail::ExplanationData
1177
+
1178
+ const :thing, ::Object
1179
+
1180
+ # @raise [Error]
1181
+ #
1182
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/no_explanation_data.rb#11
1183
+ sig { override.returns(T::Array[::Mocktail::Call]) }
1184
+ def calls; end
1185
+
1186
+ # @raise [Error]
1187
+ #
1188
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/no_explanation_data.rb#16
1189
+ sig { override.returns(T::Array[Mocktail::Stubbing[T.anything]]) }
1190
+ def stubbings; end
1191
+
1192
+ class << self
1193
+ # source://sorbet-runtime/0.5.11971/lib/types/struct.rb#13
1194
+ def inherited(s); end
1195
+ end
1196
+ end
1197
+
1198
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/signature.rb#4
1199
+ class Mocktail::Params < ::T::Struct
1200
+ prop :all, T::Array[::Symbol], default: T.unsafe(nil)
1201
+ prop :required, T::Array[::Symbol], default: T.unsafe(nil)
1202
+ prop :optional, T::Array[::Symbol], default: T.unsafe(nil)
1203
+ prop :rest, T.nilable(::Symbol)
1204
+
1205
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/signature.rb#13
1206
+ sig { returns(T::Array[::Symbol]) }
1207
+ def allowed; end
1208
+
1209
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/signature.rb#18
1210
+ sig { returns(T::Boolean) }
1211
+ def rest?; end
1212
+
1213
+ class << self
1214
+ # source://sorbet-runtime/0.5.11971/lib/types/struct.rb#13
1215
+ def inherited(s); end
1216
+ end
1217
+ end
1218
+
1219
+ # source://mocktail//lib/mocktail/sorbet/mocktail/raises_neato_no_method_error.rb#8
1220
+ class Mocktail::RaisesNeatoNoMethodError
1221
+ # source://mocktail//lib/mocktail/sorbet/mocktail/raises_neato_no_method_error.rb#12
1222
+ sig { void }
1223
+ def initialize; end
1224
+
1225
+ # @raise [NoMethodError]
1226
+ #
1227
+ # source://mocktail//lib/mocktail/sorbet/mocktail/raises_neato_no_method_error.rb#19
1228
+ sig { params(call: ::Mocktail::Call).void }
1229
+ def call(call); end
1230
+
1231
+ private
1232
+
1233
+ # source://mocktail//lib/mocktail/sorbet/mocktail/raises_neato_no_method_error.rb#63
1234
+ sig { params(block: T.nilable(::Proc)).returns(T.nilable(::String)) }
1235
+ def block_param(block); end
1236
+
1237
+ # source://mocktail//lib/mocktail/sorbet/mocktail/raises_neato_no_method_error.rb#81
1238
+ sig { params(call: ::Mocktail::Call).returns(T.nilable(::String)) }
1239
+ def corrections(call); end
1240
+
1241
+ # source://mocktail//lib/mocktail/sorbet/mocktail/raises_neato_no_method_error.rb#70
1242
+ sig { params(identifiers: T::Array[::String]).returns(T::Array[::String]) }
1243
+ def count_repeats(identifiers); end
1244
+
1245
+ # source://mocktail//lib/mocktail/sorbet/mocktail/raises_neato_no_method_error.rb#56
1246
+ sig { params(kwargs: T::Hash[::Symbol, T.anything]).returns(T.nilable(::String)) }
1247
+ def kwparams_list(kwargs); end
1248
+
1249
+ # source://mocktail//lib/mocktail/sorbet/mocktail/raises_neato_no_method_error.rb#36
1250
+ sig { params(call: ::Mocktail::Call).returns(T.nilable(::String)) }
1251
+ def params(call); end
1252
+
1253
+ # source://mocktail//lib/mocktail/sorbet/mocktail/raises_neato_no_method_error.rb#47
1254
+ sig { params(args: T::Array[T.anything]).returns(T.nilable(::String)) }
1255
+ def params_list(args); end
1256
+ end
1257
+
1258
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call/raises_verification_error.rb#8
1259
+ class Mocktail::RaisesVerificationError
1260
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call/raises_verification_error.rb#12
1261
+ sig { void }
1262
+ def initialize; end
1263
+
1264
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call/raises_verification_error.rb#19
1265
+ sig do
1266
+ params(
1267
+ recording: ::Mocktail::Call,
1268
+ verifiable_calls: T::Array[::Mocktail::Call],
1269
+ demo_config: ::Mocktail::DemoConfig
1270
+ ).void
1271
+ end
1272
+ def raise(recording, verifiable_calls, demo_config); end
1273
+
1274
+ private
1275
+
1276
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call/raises_verification_error.rb#50
1277
+ sig do
1278
+ params(
1279
+ recording: ::Mocktail::Call,
1280
+ verifiable_calls: T::Array[::Mocktail::Call],
1281
+ demo_config: ::Mocktail::DemoConfig
1282
+ ).returns(T.nilable(::String))
1283
+ end
1284
+ def describe_other_calls(recording, verifiable_calls, demo_config); end
1285
+
1286
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call/raises_verification_error.rb#39
1287
+ sig { params(demo_config: ::Mocktail::DemoConfig, count: ::Integer).returns(T.nilable(::String)) }
1288
+ def describe_verifiable_times_called(demo_config, count); end
1289
+
1290
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call/raises_verification_error.rb#66
1291
+ sig { params(s: ::String, count: T.nilable(::Integer)).returns(::String) }
1292
+ def pl(s, count); end
1293
+ end
1294
+
1295
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error/reconciles_args_with_params.rb#4
1296
+ class Mocktail::ReconcilesArgsWithParams
1297
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error/reconciles_args_with_params.rb#8
1298
+ sig { params(signature: ::Mocktail::Signature).returns(T::Boolean) }
1299
+ def reconcile(signature); end
1300
+
1301
+ private
1302
+
1303
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error/reconciles_args_with_params.rb#16
1304
+ sig { params(arg_params: ::Mocktail::Params, args: T::Array[T.untyped]).returns(T::Boolean) }
1305
+ def args_match?(arg_params, args); end
1306
+
1307
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error/reconciles_args_with_params.rb#22
1308
+ sig { params(kwarg_params: ::Mocktail::Params, kwargs: T::Hash[::Symbol, T.untyped]).returns(T::Boolean) }
1309
+ def kwargs_match?(kwarg_params, kwargs); end
1310
+ end
1311
+
1312
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class/reconstructs_call.rb#4
1313
+ class Mocktail::ReconstructsCall
1314
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class/reconstructs_call.rb#19
1315
+ sig do
1316
+ params(
1317
+ double: ::Object,
1318
+ call_binding: ::Binding,
1319
+ default_args: T.nilable(T::Hash[::Symbol, T.anything]),
1320
+ dry_class: T::Class[::Object],
1321
+ type: T.any(::Module, T::Class[T.anything]),
1322
+ method: ::Symbol,
1323
+ original_method: T.any(::Method, ::UnboundMethod),
1324
+ signature: ::Mocktail::Signature
1325
+ ).returns(::Mocktail::Call)
1326
+ end
1327
+ def reconstruct(double:, call_binding:, default_args:, dry_class:, type:, method:, original_method:, signature:); end
1328
+
1329
+ private
1330
+
1331
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class/reconstructs_call.rb#39
1332
+ sig do
1333
+ params(
1334
+ signature: ::Mocktail::Signature,
1335
+ call_binding: ::Binding,
1336
+ default_args: T.nilable(T::Hash[::Symbol, T.anything])
1337
+ ).returns(T::Array[T.anything])
1338
+ end
1339
+ def args_for(signature, call_binding, default_args); end
1340
+
1341
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class/reconstructs_call.rb#52
1342
+ sig do
1343
+ params(
1344
+ signature: ::Mocktail::Signature,
1345
+ call_binding: ::Binding,
1346
+ default_args: T.nilable(T::Hash[::Symbol, T.anything])
1347
+ ).returns(T::Hash[::Symbol, T.anything])
1348
+ end
1349
+ def kwargs_for(signature, call_binding, default_args); end
1350
+
1351
+ # source://mocktail//lib/mocktail/sorbet/mocktail/imitates_type/makes_double/declares_dry_class/reconstructs_call.rb#62
1352
+ sig do
1353
+ params(
1354
+ params: ::Mocktail::Params,
1355
+ default_args: T.nilable(T::Hash[::Symbol, T.anything])
1356
+ ).returns([T::Array[::Symbol], T.nilable(::Symbol)])
1357
+ end
1358
+ def non_default_args(params, default_args); end
1359
+ end
1360
+
1361
+ # source://mocktail//lib/mocktail/sorbet/mocktail/records_demonstration.rb#4
1362
+ class Mocktail::RecordsDemonstration
1363
+ # source://mocktail//lib/mocktail/sorbet/mocktail/records_demonstration.rb#14
1364
+ sig do
1365
+ type_parameters(:T)
1366
+ .params(
1367
+ demonstration: T.proc.params(matchers: ::Mocktail::MatcherPresentation).returns(T.type_parameter(:T)),
1368
+ demo_config: ::Mocktail::DemoConfig
1369
+ ).returns(::Mocktail::Call)
1370
+ end
1371
+ def record(demonstration, demo_config); end
1372
+ end
1373
+
1374
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error/recreates_message.rb#4
1375
+ class Mocktail::RecreatesMessage
1376
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error/recreates_message.rb#8
1377
+ sig { params(signature: ::Mocktail::Signature).returns(::String) }
1378
+ def recreate(signature); end
1379
+ end
1380
+
1381
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type/redefines_new.rb#4
1382
+ class Mocktail::RedefinesNew
1383
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type/redefines_new.rb#8
1384
+ sig { void }
1385
+ def initialize; end
1386
+
1387
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type/redefines_new.rb#13
1388
+ sig { params(type: T.any(::Module, T::Class[T.anything])).void }
1389
+ def redefine(type); end
1390
+ end
1391
+
1392
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type/redefines_singleton_methods.rb#6
1393
+ class Mocktail::RedefinesSingletonMethods
1394
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type/redefines_singleton_methods.rb#10
1395
+ sig { void }
1396
+ def initialize; end
1397
+
1398
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type/redefines_singleton_methods.rb#52
1399
+ sig { params(type: T.any(::Module, T::Class[T.anything])).void }
1400
+ def declare_singleton_method_missing_errors!(type); end
1401
+
1402
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type/redefines_singleton_methods.rb#16
1403
+ sig { params(type: T.any(::Module, T::Class[T.anything])).void }
1404
+ def redefine(type); end
1405
+
1406
+ private
1407
+
1408
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type/redefines_singleton_methods.rb#77
1409
+ sig { params(method: ::Method).returns(T::Boolean) }
1410
+ def sorbet_method_hook?(method); end
1411
+ end
1412
+
1413
+ # source://mocktail//lib/mocktail/sorbet/mocktail/registers_matcher.rb#4
1414
+ class Mocktail::RegistersMatcher
1415
+ # source://mocktail//lib/mocktail/sorbet/mocktail/registers_matcher.rb#8
1416
+ sig { void }
1417
+ def initialize; end
1418
+
1419
+ # source://mocktail//lib/mocktail/sorbet/mocktail/registers_matcher.rb#13
1420
+ sig { params(matcher_type: T.class_of(Mocktail::Matchers::Base)).void }
1421
+ def register(matcher_type); end
1422
+
1423
+ private
1424
+
1425
+ # source://mocktail//lib/mocktail/sorbet/mocktail/registers_matcher.rb#59
1426
+ sig { params(matcher_type: T.class_of(Mocktail::Matchers::Base)).returns(T::Boolean) }
1427
+ def invalid_flag?(matcher_type); end
1428
+
1429
+ # source://mocktail//lib/mocktail/sorbet/mocktail/registers_matcher.rb#51
1430
+ sig { params(matcher_type: T.class_of(Mocktail::Matchers::Base)).returns(T::Boolean) }
1431
+ def invalid_match?(matcher_type); end
1432
+
1433
+ # source://mocktail//lib/mocktail/sorbet/mocktail/registers_matcher.rb#43
1434
+ sig { params(matcher_type: T.class_of(Mocktail::Matchers::Base)).returns(T::Boolean) }
1435
+ def invalid_name?(matcher_type); end
1436
+
1437
+ # source://mocktail//lib/mocktail/sorbet/mocktail/registers_matcher.rb#38
1438
+ sig { params(matcher_type: T.class_of(Mocktail::Matchers::Base)).returns(T::Boolean) }
1439
+ def invalid_type?(matcher_type); end
1440
+ end
1441
+
1442
+ # source://mocktail//lib/mocktail/sorbet/mocktail/registers_stubbing.rb#6
1443
+ class Mocktail::RegistersStubbing
1444
+ # source://mocktail//lib/mocktail/sorbet/mocktail/registers_stubbing.rb#10
1445
+ sig { void }
1446
+ def initialize; end
1447
+
1448
+ # source://mocktail//lib/mocktail/sorbet/mocktail/registers_stubbing.rb#21
1449
+ sig do
1450
+ type_parameters(:T)
1451
+ .params(
1452
+ demonstration: T.proc.params(matchers: ::Mocktail::MatcherPresentation).returns(T.type_parameter(:T)),
1453
+ demo_config: ::Mocktail::DemoConfig
1454
+ ).returns(Mocktail::Stubbing[T.type_parameter(:T)])
1455
+ end
1456
+ def register(demonstration, demo_config); end
1457
+ end
1458
+
1459
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#47
1460
+ class Mocktail::ReplacedTypeExplanation < ::Mocktail::Explanation
1461
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#52
1462
+ sig { params(reference: ::Mocktail::TypeReplacementData, message: ::String).void }
1463
+ def initialize(reference, message); end
1464
+
1465
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/explanation.rb#49
1466
+ sig { override.returns(::Mocktail::TypeReplacementData) }
1467
+ def reference; end
1468
+ end
1469
+
1470
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_next.rb#4
1471
+ class Mocktail::ReplacesNext
1472
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_next.rb#8
1473
+ sig { void }
1474
+ def initialize; end
1475
+
1476
+ # @raise [UnsupportedMocktail]
1477
+ #
1478
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_next.rb#28
1479
+ sig do
1480
+ type_parameters(:T)
1481
+ .params(
1482
+ type: T::Class[T.all(::Object, T.type_parameter(:T))],
1483
+ count: ::Integer
1484
+ ).returns(T::Array[T.type_parameter(:T)])
1485
+ end
1486
+ def replace(type, count); end
1487
+
1488
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_next.rb#19
1489
+ sig do
1490
+ type_parameters(:T)
1491
+ .params(
1492
+ type: T::Class[T.all(::Object, T.type_parameter(:T))]
1493
+ ).returns(T.type_parameter(:T))
1494
+ end
1495
+ def replace_once(type); end
1496
+ end
1497
+
1498
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type.rb#8
1499
+ class Mocktail::ReplacesType
1500
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type.rb#12
1501
+ sig { void }
1502
+ def initialize; end
1503
+
1504
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type.rb#20
1505
+ sig { params(type: T.any(::Module, T::Class[T.anything])).void }
1506
+ def replace(type); end
1507
+ end
1508
+
1509
+ # source://mocktail//lib/mocktail/sorbet/mocktail/resets_state.rb#4
1510
+ class Mocktail::ResetsState
1511
+ # source://mocktail//lib/mocktail/sorbet/mocktail/resets_state.rb#8
1512
+ sig { void }
1513
+ def reset; end
1514
+ end
1515
+
1516
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type/runs_sorbet_sig_blocks_before_replacement.rb#4
1517
+ class Mocktail::RunsSorbetSigBlocksBeforeReplacement
1518
+ # This is necessary because when Sorbet runs a sig block of a singleton
1519
+ # method, it has the net effect of unwrapping/redefining the method. If
1520
+ # we try to use Mocktail.replace(Foo) and Foo.bar has a Sorbet sig block,
1521
+ # then we'll end up with three "versions" of the same method and no way
1522
+ # to keep straight which one == which:
1523
+ #
1524
+ # A - Foo.bar, as defined in the original class
1525
+ # B - Foo.bar, as redefined by RedefinesSingletonMethods
1526
+ # C - Foo.bar, as wrapped by sorbet-runtime
1527
+ #
1528
+ # Initially, Foo.method(:bar) would == C, but after the type
1529
+ # replacement, it would == B (with a reference back to C as the original),
1530
+ # but after handling a single dry call, our invocation of
1531
+ # GrabsOriginalMethodParameters.grab(Foo.method(:bar)) would invoke the
1532
+ # Sorbet `sig` block, which has the net effect of redefining the method back
1533
+ # to A.
1534
+ #
1535
+ # It's very fun and confusing and a great time.
1536
+ #
1537
+ # source://mocktail//lib/mocktail/sorbet/mocktail/replaces_type/runs_sorbet_sig_blocks_before_replacement.rb#26
1538
+ # This is necessary because when Sorbet runs a sig block of a singleton
1539
+ # method, it has the net effect of unwrapping/redefining the method. If
1540
+ # we try to use Mocktail.replace(Foo) and Foo.bar has a Sorbet sig block,
1541
+ # then we'll end up with three "versions" of the same method and no way
1542
+ # to keep straight which one == which:
1543
+ # A - Foo.bar, as defined in the original class
1544
+ # B - Foo.bar, as redefined by RedefinesSingletonMethods
1545
+ # C - Foo.bar, as wrapped by sorbet-runtime
1546
+ # Initially, Foo.method(:bar) would == C, but after the type
1547
+ # replacement, it would == B (with a reference back to C as the original),
1548
+ # but after handling a single dry call, our invocation of
1549
+ # GrabsOriginalMethodParameters.grab(Foo.method(:bar)) would invoke the
1550
+ # Sorbet `sig` block, which has the net effect of redefining the method back
1551
+ # to A.
1552
+ sig { params(type: T.any(::Module, T::Class[T.anything])).void }
1553
+ def run(type); end
1554
+ end
1555
+
1556
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/signature.rb#23
1557
+ class Mocktail::Signature < ::T::Struct
1558
+ const :positional_params, ::Mocktail::Params
1559
+ const :positional_args, T::Array[T.anything]
1560
+ const :keyword_params, ::Mocktail::Params
1561
+ const :keyword_args, T::Hash[::Symbol, T.anything]
1562
+ const :block_param, T.nilable(::Symbol)
1563
+ const :block_arg, T.nilable(::Proc), default: T.unsafe(nil)
1564
+
1565
+ class << self
1566
+ # source://sorbet-runtime/0.5.11971/lib/types/struct.rb#13
1567
+ def inherited(s); end
1568
+ end
1569
+ end
1570
+
1571
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/signature.rb#33
1572
+ Mocktail::Signature::DEFAULT_BLOCK_PARAM = T.let(T.unsafe(nil), String)
1573
+
1574
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/signature.rb#31
1575
+ Mocktail::Signature::DEFAULT_REST_ARGS = T.let(T.unsafe(nil), String)
1576
+
1577
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/signature.rb#32
1578
+ Mocktail::Signature::DEFAULT_REST_KWARGS = T.let(T.unsafe(nil), String)
1579
+
1580
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error.rb#10
1581
+ class Mocktail::SimulatesArgumentError
1582
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error.rb#14
1583
+ sig { void }
1584
+ def initialize; end
1585
+
1586
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error.rb#23
1587
+ sig { params(dry_call: ::Mocktail::Call).returns(T.nilable(::ArgumentError)) }
1588
+ def simulate(dry_call); end
1589
+ end
1590
+
1591
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/stringifies_call.rb#4
1592
+ class Mocktail::StringifiesCall
1593
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/stringifies_call.rb#8
1594
+ sig { params(call: ::Mocktail::Call, anonymous_blocks: T::Boolean, always_parens: T::Boolean).returns(::String) }
1595
+ def stringify(call, anonymous_blocks: T.unsafe(nil), always_parens: T.unsafe(nil)); end
1596
+
1597
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/stringifies_call.rb#13
1598
+ sig do
1599
+ params(
1600
+ calls: T::Array[::Mocktail::Call],
1601
+ nonzero_message: ::String,
1602
+ zero_message: ::String,
1603
+ anonymous_blocks: T::Boolean,
1604
+ always_parens: T::Boolean
1605
+ ).returns(::String)
1606
+ end
1607
+ def stringify_multiple(calls, nonzero_message:, zero_message:, anonymous_blocks: T.unsafe(nil), always_parens: T.unsafe(nil)); end
1608
+
1609
+ private
1610
+
1611
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/stringifies_call.rb#46
1612
+ sig { params(args: T::Array[::Object]).returns(T.nilable(::String)) }
1613
+ def argify(args); end
1614
+
1615
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/stringifies_call.rb#29
1616
+ sig { params(call: ::Mocktail::Call, parens: T::Boolean).returns(T.nilable(::String)) }
1617
+ def args_to_s(call, parens: T.unsafe(nil)); end
1618
+
1619
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/stringifies_call.rb#64
1620
+ sig { params(block: T.nilable(::Proc), anonymous: T::Boolean).returns(T.nilable(::String)) }
1621
+ def blockify(block, anonymous:); end
1622
+
1623
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/stringifies_call.rb#52
1624
+ sig { params(kwargs: T::Hash[::Symbol, ::Object]).returns(T.nilable(::String)) }
1625
+ def kwargify(kwargs); end
1626
+
1627
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/stringifies_call.rb#58
1628
+ sig { params(block: T.nilable(::Proc)).returns(T.nilable(::String)) }
1629
+ def lambdafy(block); end
1630
+
1631
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/stringifies_call.rb#75
1632
+ sig { params(block: ::Proc).returns(::String) }
1633
+ def source_locationify(block); end
1634
+
1635
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/stringifies_call.rb#80
1636
+ sig { params(path: ::String).returns(::String) }
1637
+ def strip_pwd(path); end
1638
+ end
1639
+
1640
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/stringifies_method_name.rb#4
1641
+ class Mocktail::StringifiesMethodName
1642
+ # source://mocktail//lib/mocktail/sorbet/mocktail/share/stringifies_method_name.rb#8
1643
+ sig { params(call: ::Mocktail::Call).returns(::String) }
1644
+ def stringify(call); end
1645
+ end
1646
+
1647
+ # source://mocktail//lib/mocktail/sorbet/mocktail/stringifies_method_signature.rb#4
1648
+ class Mocktail::StringifiesMethodSignature
1649
+ # source://mocktail//lib/mocktail/sorbet/mocktail/stringifies_method_signature.rb#8
1650
+ sig { params(signature: ::Mocktail::Signature).returns(::String) }
1651
+ def stringify(signature); end
1652
+
1653
+ private
1654
+
1655
+ # source://mocktail//lib/mocktail/sorbet/mocktail/stringifies_method_signature.rb#45
1656
+ sig { params(signature: ::Mocktail::Signature).returns(::String) }
1657
+ def block(signature); end
1658
+
1659
+ # source://mocktail//lib/mocktail/sorbet/mocktail/stringifies_method_signature.rb#32
1660
+ sig { params(signature: ::Mocktail::Signature).returns(T.nilable(::String)) }
1661
+ def keyword(signature); end
1662
+
1663
+ # source://mocktail//lib/mocktail/sorbet/mocktail/stringifies_method_signature.rb#19
1664
+ sig { params(signature: ::Mocktail::Signature).returns(T.nilable(::String)) }
1665
+ def positional(signature); end
1666
+ end
1667
+
1668
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/stubbing.rb#4
1669
+ class Mocktail::Stubbing < ::T::Struct
1670
+ extend T::Generic
1671
+
1672
+ MethodReturnType = type_member
1673
+
1674
+ const :demonstration, T.proc.params(matchers: ::Mocktail::MatcherPresentation).returns(MethodReturnType)
1675
+ const :demo_config, ::Mocktail::DemoConfig
1676
+ prop :satisfaction_count, ::Integer, default: T.unsafe(nil)
1677
+ const :recording, ::Mocktail::Call
1678
+ prop :effect, T.nilable(T.proc.params(call: ::Mocktail::Call).returns(MethodReturnType))
1679
+
1680
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/stubbing.rb#16
1681
+ sig { void }
1682
+ def satisfied!; end
1683
+
1684
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/stubbing.rb#21
1685
+ sig { params(block: T.proc.params(call: ::Mocktail::Call).returns(MethodReturnType)).void }
1686
+ def with(&block); end
1687
+
1688
+ class << self
1689
+ # source://sorbet-runtime/0.5.11971/lib/types/struct.rb#13
1690
+ def inherited(s); end
1691
+ end
1692
+ end
1693
+
1694
+ # source://mocktail//lib/mocktail/sorbet/mocktail/typed.rb#4
1695
+ Mocktail::TYPED = T.let(T.unsafe(nil), TrueClass)
1696
+
1697
+ # The TopShelf is where we keep all the more global, dangerous state.
1698
+ # In particular, this is where Mocktail manages state related to singleton
1699
+ # method replacements carried out with Mocktail.replace(ClassOrModule)
1700
+ #
1701
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#7
1702
+ # The TopShelf is where we keep all the more global, dangerous state.
1703
+ # In particular, this is where Mocktail manages state related to singleton
1704
+ class Mocktail::TopShelf
1705
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#19
1706
+ sig { void }
1707
+ def initialize; end
1708
+
1709
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#50
1710
+ sig { params(type: T.any(::Module, T::Class[T.anything])).returns(T::Boolean) }
1711
+ def new_replaced?(type); end
1712
+
1713
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#60
1714
+ sig { params(type: T::Class[T.anything]).returns(T::Boolean) }
1715
+ def of_next_registered?(type); end
1716
+
1717
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#45
1718
+ sig { params(type: T.any(::Module, T::Class[T.anything])).void }
1719
+ def register_new_replacement!(type); end
1720
+
1721
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#55
1722
+ sig { params(type: T::Class[T.anything]).void }
1723
+ def register_of_next_replacement!(type); end
1724
+
1725
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#70
1726
+ sig { params(type: T.any(::Module, T::Class[T.anything])).void }
1727
+ def register_singleton_method_replacement!(type); end
1728
+
1729
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#40
1730
+ sig { void }
1731
+ def reset_current_thread!; end
1732
+
1733
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#75
1734
+ sig { params(type: T.any(::Module, T::Class[T.anything])).returns(T::Boolean) }
1735
+ def singleton_methods_replaced?(type); end
1736
+
1737
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#26
1738
+ sig { params(type: T.any(::Module, T::Class[T.anything])).returns(::Mocktail::TypeReplacement) }
1739
+ def type_replacement_for(type); end
1740
+
1741
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#33
1742
+ sig { params(type: T.any(::Module, T::Class[T.anything])).returns(T.nilable(::Mocktail::TypeReplacement)) }
1743
+ def type_replacement_if_exists_for(type); end
1744
+
1745
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#65
1746
+ sig { params(type: T::Class[T.anything]).void }
1747
+ def unregister_of_next_replacement!(type); end
1748
+
1749
+ class << self
1750
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/top_shelf.rb#11
1751
+ sig { returns(::Mocktail::TopShelf) }
1752
+ def instance; end
1753
+ end
1754
+ end
1755
+
1756
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error/transforms_params.rb#6
1757
+ class Mocktail::TransformsParams
1758
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error/transforms_params.rb#10
1759
+ sig { void }
1760
+ def initialize; end
1761
+
1762
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error/transforms_params.rb#15
1763
+ sig do
1764
+ params(
1765
+ dry_call: ::Mocktail::Call,
1766
+ params: T.nilable(T::Array[T::Array[::Symbol]])
1767
+ ).returns(::Mocktail::Signature)
1768
+ end
1769
+ def transform(dry_call, params: T.unsafe(nil)); end
1770
+
1771
+ private
1772
+
1773
+ # source://mocktail//lib/mocktail/sorbet/mocktail/simulates_argument_error/transforms_params.rb#48
1774
+ sig { params(params: T::Array[T::Array[::Symbol]]).returns(T::Array[T::Array[::Symbol]]) }
1775
+ def name_unnamed_params(params); end
1776
+ end
1777
+
1778
+ # source://mocktail//lib/mocktail/sorbet/mocktail/errors.rb#18
1779
+ class Mocktail::TypeCheckingError < ::Mocktail::Error; end
1780
+
1781
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/type_replacement.rb#4
1782
+ class Mocktail::TypeReplacement < ::T::Struct
1783
+ const :type, T.any(::Module, T::Class[T.anything])
1784
+ prop :original_methods, T.nilable(T::Array[::Method])
1785
+ prop :replacement_methods, T.nilable(T::Array[::Method])
1786
+ prop :original_new, T.nilable(::Method)
1787
+ prop :replacement_new, T.nilable(::Method)
1788
+
1789
+ class << self
1790
+ # source://sorbet-runtime/0.5.11971/lib/types/struct.rb#13
1791
+ def inherited(s); end
1792
+ end
1793
+ end
1794
+
1795
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/type_replacement_data.rb#4
1796
+ class Mocktail::TypeReplacementData < ::T::Struct
1797
+ include ::Mocktail::ExplanationData
1798
+
1799
+ const :type, T.any(::Module, T::Class[T.anything])
1800
+ const :replaced_method_names, T::Array[::Symbol]
1801
+ const :calls, T::Array[::Mocktail::Call]
1802
+ const :stubbings, T::Array[Mocktail::Stubbing[T.anything]]
1803
+
1804
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/type_replacement_data.rb#15
1805
+ sig { returns(T.any(::Module, T::Class[T.anything])) }
1806
+ def double; end
1807
+
1808
+ class << self
1809
+ # source://sorbet-runtime/0.5.11971/lib/types/struct.rb#13
1810
+ def inherited(s); end
1811
+ end
1812
+ end
1813
+
1814
+ # source://mocktail//lib/mocktail/sorbet/mocktail/errors.rb#6
1815
+ class Mocktail::UnexpectedError < ::Mocktail::Error; end
1816
+
1817
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/unsatisfying_call.rb#4
1818
+ class Mocktail::UnsatisfyingCall < ::T::Struct
1819
+ const :call, ::Mocktail::Call
1820
+ const :other_stubbings, T::Array[Mocktail::Stubbing[T.anything]]
1821
+ const :backtrace, T::Array[::String]
1822
+
1823
+ class << self
1824
+ # source://sorbet-runtime/0.5.11971/lib/types/struct.rb#13
1825
+ def inherited(s); end
1826
+ end
1827
+ end
1828
+
1829
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/unsatisfying_call_explanation.rb#4
1830
+ class Mocktail::UnsatisfyingCallExplanation
1831
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/unsatisfying_call_explanation.rb#14
1832
+ sig { params(reference: ::Mocktail::UnsatisfyingCall, message: ::String).void }
1833
+ def initialize(reference, message); end
1834
+
1835
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/unsatisfying_call_explanation.rb#11
1836
+ sig { returns(::String) }
1837
+ def message; end
1838
+
1839
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/unsatisfying_call_explanation.rb#8
1840
+ sig { returns(::Mocktail::UnsatisfyingCall) }
1841
+ def reference; end
1842
+
1843
+ # source://mocktail//lib/mocktail/sorbet/mocktail/value/unsatisfying_call_explanation.rb#20
1844
+ sig { returns(T.class_of(Mocktail::UnsatisfyingCallExplanation)) }
1845
+ def type; end
1846
+ end
1847
+
1848
+ # source://mocktail//lib/mocktail/sorbet/mocktail/errors.rb#8
1849
+ class Mocktail::UnsupportedMocktail < ::Mocktail::Error; end
1850
+
1851
+ # source://mocktail//lib/mocktail/sorbet/mocktail/version.rb#11
1852
+ Mocktail::VERSION = T.let(T.unsafe(nil), String)
1853
+
1854
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/validates_arguments.rb#4
1855
+ class Mocktail::ValidatesArguments
1856
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/validates_arguments.rb#35
1857
+ sig { void }
1858
+ def initialize; end
1859
+
1860
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/validates_arguments.rb#40
1861
+ sig { params(dry_call: ::Mocktail::Call).returns(::NilClass) }
1862
+ def validate(dry_call); end
1863
+
1864
+ class << self
1865
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/validates_arguments.rb#7
1866
+ sig { void }
1867
+ def disable!; end
1868
+
1869
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/validates_arguments.rb#17
1870
+ sig { returns(T::Boolean) }
1871
+ def disabled?; end
1872
+
1873
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/validates_arguments.rb#12
1874
+ sig { void }
1875
+ def enable!; end
1876
+
1877
+ # source://mocktail//lib/mocktail/sorbet/mocktail/handles_dry_call/validates_arguments.rb#22
1878
+ sig { params(disable: T.nilable(T::Boolean), blk: T.proc.returns(T.anything)).void }
1879
+ def optional(disable, &blk); end
1880
+ end
1881
+ end
1882
+
1883
+ # source://mocktail//lib/mocktail/sorbet/mocktail/errors.rb#16
1884
+ class Mocktail::VerificationError < ::Mocktail::Error; end
1885
+
1886
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call.rb#8
1887
+ class Mocktail::VerifiesCall
1888
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call.rb#12
1889
+ sig { void }
1890
+ def initialize; end
1891
+
1892
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call.rb#19
1893
+ sig do
1894
+ params(
1895
+ demo: T.proc.params(matchers: ::Mocktail::MatcherPresentation).void,
1896
+ demo_config: ::Mocktail::DemoConfig
1897
+ ).void
1898
+ end
1899
+ def verify(demo, demo_config); end
1900
+
1901
+ private
1902
+
1903
+ # source://mocktail//lib/mocktail/sorbet/mocktail/verifies_call.rb#32
1904
+ sig { params(verifiable_call_count: ::Integer, demo_config: ::Mocktail::DemoConfig).returns(T::Boolean) }
1905
+ def verification_satisfied?(verifiable_call_count, demo_config); end
1906
+ end
1907
+
1908
+ # sorbet gem fails to export some of these constants, so we need to in order to
1909
+ # pass static typecheck
1910
+ module T
1911
+ module Private
1912
+ module Methods
1913
+ module MethodHooks; end
1914
+
1915
+ class Signature
1916
+ sig { returns(T::Array[T::Array[Symbol]]) }
1917
+ def parameters; end
1918
+ end
1919
+
1920
+ module SingletonMethodHooks; end
1921
+ end
1922
+
1923
+ module RuntimeLevels
1924
+ class << self
1925
+ sig { returns(Symbol) }
1926
+ def default_checked_level; end
1927
+ end
1928
+ end
1929
+ end
1930
+ end