rbs 3.9.4 → 4.1.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 (348) hide show
  1. checksums.yaml +4 -4
  2. data/.clang-format +75 -0
  3. data/.clangd +2 -0
  4. data/.dockerignore +37 -0
  5. data/.github/dependabot.yml +16 -14
  6. data/.github/workflows/bundle-update.yml +63 -0
  7. data/.github/workflows/c-check.yml +66 -0
  8. data/.github/workflows/comments.yml +5 -3
  9. data/.github/workflows/dependabot.yml +2 -2
  10. data/.github/workflows/jruby.yml +79 -0
  11. data/.github/workflows/release-gems.yml +164 -0
  12. data/.github/workflows/ruby.yml +84 -30
  13. data/.github/workflows/rust.yml +186 -0
  14. data/.github/workflows/truffleruby.yml +54 -0
  15. data/.github/workflows/typecheck.yml +5 -2
  16. data/.github/workflows/wasm.yml +55 -0
  17. data/.github/workflows/windows.yml +9 -3
  18. data/.gitignore +16 -0
  19. data/.rubocop.yml +2 -2
  20. data/CHANGELOG.md +430 -0
  21. data/Dockerfile.jruby +53 -0
  22. data/README.md +41 -4
  23. data/Rakefile +777 -60
  24. data/Steepfile +11 -0
  25. data/config.yml +660 -62
  26. data/core/array.rbs +541 -398
  27. data/core/basic_object.rbs +9 -8
  28. data/core/binding.rbs +0 -2
  29. data/core/builtin.rbs +9 -8
  30. data/core/class.rbs +11 -8
  31. data/core/comparable.rbs +55 -34
  32. data/core/complex.rbs +104 -78
  33. data/core/dir.rbs +61 -49
  34. data/core/encoding.rbs +12 -15
  35. data/core/enumerable.rbs +297 -196
  36. data/core/enumerator/arithmetic_sequence.rbs +70 -0
  37. data/core/enumerator/product.rbs +5 -5
  38. data/core/enumerator.rbs +91 -28
  39. data/core/errno.rbs +11 -2
  40. data/core/errors.rbs +58 -29
  41. data/core/exception.rbs +13 -13
  42. data/core/fiber.rbs +74 -54
  43. data/core/file.rbs +260 -1151
  44. data/core/file_constants.rbs +463 -0
  45. data/core/file_stat.rbs +534 -0
  46. data/core/file_test.rbs +3 -3
  47. data/core/float.rbs +257 -116
  48. data/core/gc.rbs +425 -281
  49. data/core/hash.rbs +1151 -829
  50. data/core/integer.rbs +156 -195
  51. data/core/io/buffer.rbs +53 -42
  52. data/core/io/wait.rbs +13 -35
  53. data/core/io.rbs +220 -154
  54. data/core/kernel.rbs +239 -163
  55. data/core/marshal.rbs +4 -4
  56. data/core/match_data.rbs +16 -14
  57. data/core/math.rbs +107 -66
  58. data/core/method.rbs +69 -33
  59. data/core/module.rbs +302 -150
  60. data/core/nil_class.rbs +7 -6
  61. data/core/numeric.rbs +77 -63
  62. data/core/object.rbs +9 -11
  63. data/core/object_space/weak_key_map.rbs +7 -7
  64. data/core/object_space.rbs +30 -23
  65. data/core/pathname.rbs +1312 -0
  66. data/core/proc.rbs +95 -58
  67. data/core/process.rbs +222 -202
  68. data/core/ractor.rbs +364 -518
  69. data/core/random.rbs +21 -3
  70. data/core/range.rbs +181 -79
  71. data/core/rational.rbs +60 -89
  72. data/core/rbs/ops.rbs +154 -0
  73. data/core/rbs/unnamed/argf.rbs +63 -56
  74. data/core/rbs/unnamed/env_class.rbs +19 -14
  75. data/core/rbs/unnamed/main_class.rbs +123 -0
  76. data/core/rbs/unnamed/random.rbs +11 -118
  77. data/core/regexp.rbs +258 -214
  78. data/core/ruby.rbs +53 -0
  79. data/core/ruby_vm.rbs +78 -34
  80. data/core/rubygems/config_file.rbs +5 -5
  81. data/core/rubygems/errors.rbs +6 -70
  82. data/core/rubygems/requirement.rbs +5 -15
  83. data/core/rubygems/rubygems.rbs +18 -81
  84. data/core/rubygems/specification.rbs +8 -0
  85. data/core/rubygems/version.rbs +2 -163
  86. data/core/set.rbs +493 -363
  87. data/core/signal.rbs +26 -16
  88. data/core/string.rbs +3234 -1285
  89. data/core/struct.rbs +43 -42
  90. data/core/symbol.rbs +41 -34
  91. data/core/thread.rbs +139 -83
  92. data/core/time.rbs +81 -50
  93. data/core/trace_point.rbs +41 -35
  94. data/core/true_class.rbs +2 -2
  95. data/core/unbound_method.rbs +24 -16
  96. data/core/warning.rbs +7 -7
  97. data/docs/CONTRIBUTING.md +2 -1
  98. data/docs/aliases.md +79 -0
  99. data/docs/collection.md +3 -3
  100. data/docs/config.md +171 -0
  101. data/docs/encoding.md +56 -0
  102. data/docs/gem.md +0 -1
  103. data/docs/inline.md +634 -0
  104. data/docs/rbs_by_example.md +20 -20
  105. data/docs/release.md +151 -0
  106. data/docs/rust.md +96 -0
  107. data/docs/sigs.md +3 -3
  108. data/docs/syntax.md +48 -18
  109. data/docs/type_fingerprint.md +21 -0
  110. data/docs/wasm_serialization.md +80 -0
  111. data/exe/rbs +1 -1
  112. data/ext/rbs_extension/ast_translation.c +1855 -0
  113. data/ext/rbs_extension/ast_translation.h +41 -0
  114. data/ext/rbs_extension/class_constants.c +187 -0
  115. data/{include/rbs/constants.h → ext/rbs_extension/class_constants.h} +23 -1
  116. data/ext/rbs_extension/compat.h +10 -0
  117. data/ext/rbs_extension/extconf.rb +26 -1
  118. data/ext/rbs_extension/legacy_location.c +299 -0
  119. data/ext/rbs_extension/legacy_location.h +82 -0
  120. data/ext/rbs_extension/main.c +603 -23
  121. data/ext/rbs_extension/rbs_extension.h +6 -21
  122. data/ext/rbs_extension/rbs_string_bridging.c +9 -0
  123. data/ext/rbs_extension/rbs_string_bridging.h +24 -0
  124. data/include/rbs/ast.h +1047 -0
  125. data/include/rbs/defines.h +99 -0
  126. data/include/rbs/lexer.h +207 -0
  127. data/include/rbs/location.h +40 -0
  128. data/include/rbs/parser.h +153 -0
  129. data/include/rbs/serialize.h +39 -0
  130. data/include/rbs/string.h +47 -0
  131. data/include/rbs/util/rbs_allocator.h +59 -0
  132. data/include/rbs/util/rbs_assert.h +20 -0
  133. data/include/rbs/util/rbs_buffer.h +83 -0
  134. data/include/rbs/util/rbs_constant_pool.h +6 -70
  135. data/include/rbs/util/rbs_encoding.h +282 -0
  136. data/include/rbs/util/rbs_unescape.h +24 -0
  137. data/include/rbs.h +9 -2
  138. data/lib/rbs/annotate/formatter.rb +3 -13
  139. data/lib/rbs/annotate/rdoc_annotator.rb +30 -32
  140. data/lib/rbs/annotate/rdoc_source.rb +1 -1
  141. data/lib/rbs/ast/annotation.rb +1 -1
  142. data/lib/rbs/ast/comment.rb +1 -1
  143. data/lib/rbs/ast/declarations.rb +10 -10
  144. data/lib/rbs/ast/members.rb +14 -14
  145. data/lib/rbs/ast/ruby/annotations.rb +451 -0
  146. data/lib/rbs/ast/ruby/comment_block.rb +247 -0
  147. data/lib/rbs/ast/ruby/declarations.rb +291 -0
  148. data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
  149. data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
  150. data/lib/rbs/ast/ruby/members.rb +762 -0
  151. data/lib/rbs/ast/type_param.rb +24 -4
  152. data/lib/rbs/buffer.rb +142 -20
  153. data/lib/rbs/cli/diff.rb +16 -15
  154. data/lib/rbs/cli/validate.rb +63 -126
  155. data/lib/rbs/cli.rb +59 -29
  156. data/lib/rbs/collection/config/lockfile_generator.rb +28 -3
  157. data/lib/rbs/collection/sources/git.rb +7 -0
  158. data/lib/rbs/definition.rb +6 -1
  159. data/lib/rbs/definition_builder/ancestor_builder.rb +121 -65
  160. data/lib/rbs/definition_builder/method_builder.rb +74 -33
  161. data/lib/rbs/definition_builder.rb +177 -20
  162. data/lib/rbs/diff.rb +7 -1
  163. data/lib/rbs/environment/class_entry.rb +69 -0
  164. data/lib/rbs/environment/module_entry.rb +66 -0
  165. data/lib/rbs/environment.rb +410 -215
  166. data/lib/rbs/environment_loader.rb +2 -8
  167. data/lib/rbs/errors.rb +31 -21
  168. data/lib/rbs/inline_parser/comment_association.rb +117 -0
  169. data/lib/rbs/inline_parser.rb +568 -0
  170. data/lib/rbs/location_aux.rb +36 -4
  171. data/lib/rbs/locator.rb +5 -1
  172. data/lib/rbs/method_type.rb +5 -3
  173. data/lib/rbs/namespace.rb +47 -18
  174. data/lib/rbs/parser_aux.rb +37 -7
  175. data/lib/rbs/prototype/helpers.rb +57 -0
  176. data/lib/rbs/prototype/rb.rb +3 -28
  177. data/lib/rbs/prototype/rbi.rb +196 -45
  178. data/lib/rbs/prototype/runtime.rb +12 -2
  179. data/lib/rbs/resolver/constant_resolver.rb +2 -2
  180. data/lib/rbs/resolver/type_name_resolver.rb +120 -44
  181. data/lib/rbs/rewriter.rb +70 -0
  182. data/lib/rbs/source.rb +99 -0
  183. data/lib/rbs/subtractor.rb +7 -4
  184. data/lib/rbs/test/type_check.rb +25 -3
  185. data/lib/rbs/type_name.rb +34 -21
  186. data/lib/rbs/types.rb +91 -79
  187. data/lib/rbs/unit_test/convertibles.rb +1 -0
  188. data/lib/rbs/unit_test/type_assertions.rb +44 -8
  189. data/lib/rbs/validator.rb +2 -2
  190. data/lib/rbs/version.rb +1 -1
  191. data/lib/rbs/wasm/deserializer.rb +213 -0
  192. data/lib/rbs/wasm/location.rb +61 -0
  193. data/lib/rbs/wasm/parser.rb +137 -0
  194. data/lib/rbs/wasm/runtime.rb +196 -0
  195. data/lib/rbs/wasm/serialization_schema.rb +110 -0
  196. data/lib/rbs.rb +25 -2
  197. data/lib/rbs_jars.rb +39 -0
  198. data/lib/rdoc/discover.rb +1 -1
  199. data/lib/rdoc_plugin/parser.rb +8 -3
  200. data/rbs.gemspec +37 -5
  201. data/schema/typeParam.json +17 -1
  202. data/sig/ancestor_builder.rbs +1 -1
  203. data/sig/annotate/formatter.rbs +2 -2
  204. data/sig/annotate/rdoc_annotater.rbs +13 -10
  205. data/sig/ast/ruby/annotations.rbs +470 -0
  206. data/sig/ast/ruby/comment_block.rbs +127 -0
  207. data/sig/ast/ruby/declarations.rbs +158 -0
  208. data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
  209. data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
  210. data/sig/ast/ruby/members.rbs +198 -0
  211. data/sig/buffer.rbs +81 -5
  212. data/sig/cli/diff.rbs +5 -11
  213. data/sig/cli/validate.rbs +12 -8
  214. data/sig/cli.rbs +18 -18
  215. data/sig/collection/config/lockfile_generator.rbs +2 -0
  216. data/sig/definition.rbs +6 -0
  217. data/sig/definition_builder.rbs +3 -1
  218. data/sig/environment/class_entry.rbs +50 -0
  219. data/sig/environment/module_entry.rbs +50 -0
  220. data/sig/environment.rbs +94 -87
  221. data/sig/errors.rbs +26 -20
  222. data/sig/inline_parser/comment_association.rbs +71 -0
  223. data/sig/inline_parser.rbs +126 -0
  224. data/sig/location.rbs +32 -7
  225. data/sig/locator.rbs +0 -2
  226. data/sig/manifest.yaml +0 -2
  227. data/sig/method_builder.rbs +9 -4
  228. data/sig/namespace.rbs +20 -5
  229. data/sig/parser.rbs +77 -13
  230. data/sig/prototype/helpers.rbs +2 -0
  231. data/sig/prototype/rbi.rbs +33 -4
  232. data/sig/resolver/type_name_resolver.rbs +36 -10
  233. data/sig/rewriter.rbs +45 -0
  234. data/sig/source.rbs +48 -0
  235. data/sig/type_param.rbs +13 -8
  236. data/sig/typename.rbs +15 -5
  237. data/sig/types.rbs +10 -8
  238. data/sig/unit_test/spy.rbs +0 -8
  239. data/sig/unit_test/type_assertions.rbs +15 -0
  240. data/sig/wasm/deserializer.rbs +66 -0
  241. data/sig/wasm/serialization_schema.rbs +13 -0
  242. data/src/ast.c +1628 -0
  243. data/src/lexer.c +3221 -0
  244. data/src/lexer.re +155 -0
  245. data/src/lexstate.c +221 -0
  246. data/src/location.c +31 -0
  247. data/src/parser.c +4258 -0
  248. data/src/serialize.c +958 -0
  249. data/src/string.c +41 -0
  250. data/src/util/rbs_allocator.c +171 -0
  251. data/src/util/rbs_assert.c +19 -0
  252. data/src/util/rbs_buffer.c +54 -0
  253. data/src/util/rbs_constant_pool.c +18 -92
  254. data/src/util/rbs_encoding.c +21308 -0
  255. data/src/util/rbs_unescape.c +167 -0
  256. data/stdlib/abbrev/0/array.rbs +1 -1
  257. data/stdlib/bigdecimal/0/big_decimal.rbs +116 -98
  258. data/stdlib/bigdecimal-math/0/big_math.rbs +169 -8
  259. data/stdlib/cgi/0/core.rbs +9 -393
  260. data/stdlib/cgi/0/manifest.yaml +1 -0
  261. data/stdlib/cgi-escape/0/escape.rbs +171 -0
  262. data/stdlib/coverage/0/coverage.rbs +7 -4
  263. data/stdlib/csv/0/csv.rbs +5 -5
  264. data/stdlib/date/0/date.rbs +92 -79
  265. data/stdlib/date/0/date_time.rbs +25 -24
  266. data/stdlib/delegate/0/delegator.rbs +11 -7
  267. data/stdlib/did_you_mean/0/did_you_mean.rbs +17 -16
  268. data/stdlib/digest/0/digest.rbs +117 -1
  269. data/stdlib/erb/0/erb.rbs +748 -347
  270. data/stdlib/etc/0/etc.rbs +73 -54
  271. data/stdlib/fileutils/0/fileutils.rbs +179 -160
  272. data/stdlib/forwardable/0/forwardable.rbs +13 -10
  273. data/stdlib/io-console/0/io-console.rbs +2 -2
  274. data/stdlib/ipaddr/0/ipaddr.rbs +0 -5
  275. data/stdlib/json/0/json.rbs +232 -185
  276. data/stdlib/monitor/0/monitor.rbs +5 -5
  277. data/stdlib/net-http/0/net-http.rbs +162 -134
  278. data/stdlib/objspace/0/objspace.rbs +17 -34
  279. data/stdlib/open-uri/0/open-uri.rbs +48 -8
  280. data/stdlib/open3/0/open3.rbs +469 -10
  281. data/stdlib/openssl/0/openssl.rbs +521 -397
  282. data/stdlib/optparse/0/optparse.rbs +26 -17
  283. data/stdlib/pathname/0/pathname.rbs +11 -1381
  284. data/stdlib/pp/0/pp.rbs +9 -8
  285. data/stdlib/prettyprint/0/prettyprint.rbs +7 -7
  286. data/stdlib/pstore/0/pstore.rbs +35 -30
  287. data/stdlib/psych/0/psych.rbs +65 -12
  288. data/stdlib/psych/0/store.rbs +2 -4
  289. data/stdlib/pty/0/pty.rbs +9 -6
  290. data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
  291. data/stdlib/rdoc/0/code_object.rbs +4 -3
  292. data/stdlib/rdoc/0/comment.rbs +2 -0
  293. data/stdlib/rdoc/0/options.rbs +76 -0
  294. data/stdlib/rdoc/0/parser.rbs +1 -1
  295. data/stdlib/rdoc/0/rdoc.rbs +7 -5
  296. data/stdlib/rdoc/0/store.rbs +2 -2
  297. data/stdlib/resolv/0/resolv.rbs +26 -69
  298. data/stdlib/ripper/0/ripper.rbs +25 -19
  299. data/stdlib/securerandom/0/manifest.yaml +2 -0
  300. data/stdlib/securerandom/0/securerandom.rbs +7 -20
  301. data/stdlib/shellwords/0/shellwords.rbs +3 -3
  302. data/stdlib/singleton/0/singleton.rbs +3 -0
  303. data/stdlib/socket/0/addrinfo.rbs +9 -9
  304. data/stdlib/socket/0/basic_socket.rbs +3 -3
  305. data/stdlib/socket/0/ip_socket.rbs +10 -8
  306. data/stdlib/socket/0/socket.rbs +23 -10
  307. data/stdlib/socket/0/tcp_server.rbs +1 -1
  308. data/stdlib/socket/0/tcp_socket.rbs +11 -3
  309. data/stdlib/socket/0/udp_socket.rbs +1 -1
  310. data/stdlib/socket/0/unix_server.rbs +1 -1
  311. data/stdlib/stringio/0/stringio.rbs +1209 -95
  312. data/stdlib/strscan/0/string_scanner.rbs +101 -80
  313. data/stdlib/tempfile/0/manifest.yaml +3 -0
  314. data/stdlib/tempfile/0/tempfile.rbs +25 -21
  315. data/stdlib/time/0/time.rbs +8 -6
  316. data/stdlib/timeout/0/timeout.rbs +58 -7
  317. data/stdlib/tsort/0/cyclic.rbs +4 -1
  318. data/stdlib/tsort/0/interfaces.rbs +8 -8
  319. data/stdlib/tsort/0/tsort.rbs +16 -15
  320. data/stdlib/uri/0/common.rbs +42 -20
  321. data/stdlib/uri/0/file.rbs +3 -3
  322. data/stdlib/uri/0/generic.rbs +21 -18
  323. data/stdlib/uri/0/http.rbs +2 -2
  324. data/stdlib/uri/0/ldap.rbs +2 -2
  325. data/stdlib/uri/0/mailto.rbs +3 -3
  326. data/stdlib/uri/0/rfc2396_parser.rbs +12 -12
  327. data/stdlib/zlib/0/deflate.rbs +4 -3
  328. data/stdlib/zlib/0/gzip_reader.rbs +8 -8
  329. data/stdlib/zlib/0/gzip_writer.rbs +14 -12
  330. data/stdlib/zlib/0/inflate.rbs +1 -1
  331. data/stdlib/zlib/0/need_dict.rbs +1 -1
  332. data/wasm/README.md +60 -0
  333. data/wasm/rbs_wasm.c +423 -0
  334. metadata +131 -19
  335. data/ext/rbs_extension/lexer.c +0 -2728
  336. data/ext/rbs_extension/lexer.h +0 -179
  337. data/ext/rbs_extension/lexer.re +0 -147
  338. data/ext/rbs_extension/lexstate.c +0 -175
  339. data/ext/rbs_extension/location.c +0 -325
  340. data/ext/rbs_extension/location.h +0 -85
  341. data/ext/rbs_extension/parser.c +0 -2982
  342. data/ext/rbs_extension/parser.h +0 -18
  343. data/ext/rbs_extension/parserstate.c +0 -411
  344. data/ext/rbs_extension/parserstate.h +0 -163
  345. data/ext/rbs_extension/unescape.c +0 -32
  346. data/include/rbs/ruby_objs.h +0 -72
  347. data/src/constants.c +0 -153
  348. data/src/ruby_objs.c +0 -799
data/sig/cli.rbs CHANGED
@@ -46,41 +46,41 @@ module RBS
46
46
 
47
47
  def has_parser?: () -> bool
48
48
 
49
- def run: (Array[String] args) -> void
49
+ def run: (Array[String] args) -> Integer
50
50
 
51
- def run_ast: (Array[String], LibraryOptions) -> void
51
+ def run_ast: (Array[String], LibraryOptions) -> Integer
52
52
 
53
- def run_list: (Array[String], LibraryOptions) -> void
53
+ def run_list: (Array[String], LibraryOptions) -> Integer
54
54
 
55
- def run_ancestors: (Array[String], LibraryOptions) -> void
55
+ def run_ancestors: (Array[String], LibraryOptions) -> Integer
56
56
 
57
- def run_methods: (Array[String], LibraryOptions) -> void
57
+ def run_methods: (Array[String], LibraryOptions) -> Integer
58
58
 
59
- def run_method: (Array[String], LibraryOptions) -> void
59
+ def run_method: (Array[String], LibraryOptions) -> Integer
60
60
 
61
- def run_validate: (Array[String], LibraryOptions) -> void
61
+ def run_validate: (Array[String], LibraryOptions) -> Integer
62
62
 
63
- def run_constant: (Array[String], LibraryOptions) -> void
63
+ def run_constant: (Array[String], LibraryOptions) -> Integer
64
64
 
65
- def run_paths: (Array[String], LibraryOptions) -> void
65
+ def run_paths: (Array[String], LibraryOptions) -> Integer
66
66
 
67
- def run_prototype: (Array[String], LibraryOptions) -> void
67
+ def run_prototype: (Array[String], LibraryOptions) -> Integer
68
68
 
69
- def run_prototype_file: (String format, Array[String]) -> void
69
+ def run_prototype_file: (String format, Array[String]) -> Integer
70
70
 
71
- def run_vendor: (Array[String], LibraryOptions) -> void
71
+ def run_vendor: (Array[String], LibraryOptions) -> Integer
72
72
 
73
- def run_parse: (Array[String], LibraryOptions) -> void
73
+ def run_parse: (Array[String], LibraryOptions) -> Integer
74
74
 
75
- def run_test: (Array[String], LibraryOptions) -> void
75
+ def run_test: (Array[String], LibraryOptions) -> Integer
76
76
 
77
- def run_collection: (Array[String], LibraryOptions) -> void
77
+ def run_collection: (Array[String], LibraryOptions) -> Integer
78
78
 
79
- def run_annotate: (Array[String], top) -> void
79
+ def run_annotate: (Array[String], top) -> Integer
80
80
 
81
- def run_subtract: (Array[String], top) -> void
81
+ def run_subtract: (Array[String], top) -> Integer
82
82
 
83
- def run_diff: (Array[String], LibraryOptions) -> void
83
+ def run_diff: (Array[String], LibraryOptions) -> Integer
84
84
 
85
85
  def test_opt: (LibraryOptions) -> String?
86
86
 
@@ -6,6 +6,8 @@ module RBS
6
6
  #
7
7
  ALUMNI_STDLIBS: Hash[String, String?]
8
8
 
9
+ NONGEM_STDLIBS: Set[String]
10
+
9
11
  class GemfileLockMismatchError < StandardError
10
12
  @expected: Pathname
11
13
 
data/sig/definition.rbs CHANGED
@@ -12,6 +12,10 @@ module RBS
12
12
  | AST::Members::InstanceVariable
13
13
  | AST::Members::ClassVariable
14
14
  | AST::Members::ClassInstanceVariable
15
+ | AST::Ruby::Members::AttrReaderMember
16
+ | AST::Ruby::Members::AttrWriterMember
17
+ | AST::Ruby::Members::AttrAccessorMember
18
+ | AST::Ruby::Members::InstanceVariableMember
15
19
  attr_reader source: source
16
20
 
17
21
  def initialize: (parent_variable: Variable?, type: Types::t, declared_in: TypeName, source: source) -> void
@@ -21,6 +25,7 @@ module RBS
21
25
 
22
26
  class Method
23
27
  type method_member = AST::Members::MethodDefinition | AST::Members::AttrReader | AST::Members::AttrAccessor | AST::Members::AttrWriter
28
+ | AST::Ruby::Members::DefMember | AST::Ruby::Members::AttrReaderMember | AST::Ruby::Members::AttrWriterMember | AST::Ruby::Members::AttrAccessorMember
24
29
 
25
30
  class TypeDef
26
31
  attr_reader type: MethodType
@@ -154,6 +159,7 @@ module RBS
154
159
  type source = :super # Inheritance
155
160
  | nil # Itself
156
161
  | AST::Members::Include | AST::Members::Extend | AST::Members::Prepend # AST
162
+ | AST::Ruby::Members::IncludeMember | AST::Ruby::Members::ExtendMember | AST::Ruby::Members::PrependMember # Ruby AST
157
163
  | AST::Declarations::Module::Self
158
164
 
159
165
  attr_reader name: TypeName
@@ -97,13 +97,15 @@ module RBS
97
97
  #
98
98
  def interface_methods: (Array[Definition::Ancestor::Instance] interface_ancestors) -> interface_methods
99
99
 
100
+ def special_accessibility: (bool, Symbol) -> Definition::accessibility?
101
+
100
102
  def try_cache: (TypeName, cache: Hash[TypeName, Definition | false | nil]) { () -> Definition } -> Definition
101
103
 
102
104
  def validate_params_with: (Array[AST::TypeParam], result: VarianceCalculator::Result) { (AST::TypeParam) -> void } -> void
103
105
 
104
106
  def validate_type_params: (Definition, ancestors: AncestorBuilder::OneAncestors, methods: MethodBuilder::Methods) -> void
105
107
 
106
- def source_location: (Definition::Ancestor::Instance::source, AST::Declarations::t) -> Location[untyped, untyped]?
108
+ def source_location: (Definition::Ancestor::Instance::source, AST::Declarations::t | AST::Ruby::Declarations::t) -> Location[untyped, untyped]?
107
109
 
108
110
  def validate_variable: (Definition::Variable) -> void
109
111
 
@@ -0,0 +1,50 @@
1
+ module RBS
2
+ class Environment
3
+ # Represents a class entry in the environment
4
+ #
5
+ # ```rb
6
+ # entry = ClassEntry.new(TypeName.parse("::String"))
7
+ # entry << [nil, declaration]
8
+ # entry << [[nil, TypeName.parse("::Kernel")], declaration]
9
+ # ```
10
+ class ClassEntry
11
+ attr_reader name: TypeName
12
+
13
+ type declaration = AST::Declarations::Class | AST::Ruby::Declarations::ClassDecl
14
+
15
+ type context_decl = [Resolver::context, declaration]
16
+
17
+ attr_reader context_decls: Array[context_decl]
18
+
19
+ @primary_decl: declaration?
20
+
21
+ def initialize: (TypeName) -> void
22
+
23
+ def <<: (context_decl) -> self
24
+
25
+ def each_decl: { (declaration) -> void } -> void
26
+ | () -> Enumerator[declaration]
27
+
28
+ # Returns true if the entry doesn't have any declaration
29
+ #
30
+ def empty?: () -> bool
31
+
32
+ # Find the *primary* declaration of the class
33
+ #
34
+ # * Returns the first declaration with super class
35
+ # * Returns the first declaration if the declaration doesn't have super class
36
+ #
37
+ %a{pure} def primary_decl: () -> declaration
38
+
39
+ # Returns the generics declaration
40
+ #
41
+ def type_params: () -> Array[AST::TypeParam]
42
+
43
+ # Confirms if the type parameters in the declaration are compatible
44
+ #
45
+ # * Raises `GenericParameterMismatchError` if incompatible declaration is detected.
46
+ #
47
+ def validate_type_params: () -> void
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,50 @@
1
+ module RBS
2
+ class Environment
3
+ # Represents a class entry in the environment
4
+ #
5
+ # ```rb
6
+ # entry = ModuleEntry.new(TypeName.parse("::Kernel"))
7
+ # entry << [nil, declaration]
8
+ # entry << [[nil, TypeName.parse("::Object")], declaration]
9
+ # ```
10
+ #
11
+ class ModuleEntry
12
+ attr_reader name: TypeName
13
+
14
+ type declaration = AST::Declarations::Module | AST::Ruby::Declarations::ModuleDecl
15
+
16
+ type context_decl = [Resolver::context, declaration]
17
+
18
+ attr_reader context_decls: Array[context_decl]
19
+
20
+ def initialize: (TypeName) -> void
21
+
22
+ def <<: (context_decl) -> self
23
+
24
+ def each_decl: { (declaration) -> void } -> void
25
+ | () -> Enumerator[declaration]
26
+
27
+ # Returns true if the entry doesn't have any declaration
28
+ #
29
+ def empty?: () -> bool
30
+
31
+ # Returns the first declaration
32
+ #
33
+ # This method helps using the class with `ClassEntry` objects.
34
+ #
35
+ def primary_decl: () -> declaration
36
+
37
+ # Returns the generics declaration
38
+ #
39
+ def type_params: () -> Array[AST::TypeParam]
40
+
41
+ # Confirms if the type parameters in the declaration are compatible
42
+ #
43
+ # * Raises `GenericParameterMismatchError` if incompatible declaration is detected.
44
+ #
45
+ def validate_type_params: () -> void
46
+
47
+ def self_types: () -> Array[AST::Declarations::Module::Self]
48
+ end
49
+ end
50
+ end
data/sig/environment.rbs CHANGED
@@ -2,81 +2,20 @@ module RBS
2
2
  class Environment
3
3
  type module_decl = AST::Declarations::Class | AST::Declarations::Module
4
4
 
5
- interface _ModuleOrClass
6
- def name: () -> TypeName
7
-
8
- def type_params: () -> Array[AST::TypeParam]
9
- end
10
-
11
- interface _NamedDecl
12
- def name: () -> TypeName
13
- end
14
-
15
- module ContextUtil
16
- def calculate_context: (Array[_NamedDecl]) -> Resolver::context
17
- end
18
-
19
- # Name of object, it's (multiple) declarations with the outer module declarations
20
- #
21
- class MultiEntry[M < _ModuleOrClass]
22
- class D[M < _ModuleOrClass]
23
- attr_reader decl: M
24
- attr_reader outer: Array[module_decl]
25
-
26
- def initialize: (decl: M, outer: Array[module_decl]) -> void
27
-
28
- include ContextUtil
29
-
30
- @context: Resolver::context
31
-
32
- def context: () -> Resolver::context
33
- end
34
-
35
- attr_reader name: TypeName
36
- attr_reader decls: Array[D[M]]
37
-
38
- @primary: D[M]?
39
-
40
- def initialize: (name: TypeName) -> void
41
-
42
- def insert: (decl: M, outer: Array[module_decl]) -> void
43
-
44
- def validate_type_params: () -> void
45
-
46
- def compatible_params?: (Array[AST::TypeParam], Array[AST::TypeParam]) -> boolish
47
-
48
- def type_params: () -> Array[AST::TypeParam]
49
-
50
- def primary: () -> D[M]
51
- end
52
-
53
- class ModuleEntry < MultiEntry[AST::Declarations::Module]
54
- def self_types: () -> Array[AST::Declarations::Module::Self]
55
- end
56
-
57
- class ClassEntry < MultiEntry[AST::Declarations::Class]
58
- end
59
-
60
5
  # Name of object, it's (single) declaration, and the outer module declarations
61
6
  #
62
7
  class SingleEntry[N, D]
63
8
  attr_reader name: N
64
9
  attr_reader decl: D
65
- attr_reader outer: Array[module_decl]
66
-
67
- def initialize: (name: N, decl: D, outer: Array[module_decl]) -> void
10
+ attr_reader context: Resolver::context
68
11
 
69
- include ContextUtil
70
-
71
- @context: Resolver::context
72
-
73
- def context: () -> Resolver::context
12
+ def initialize: (name: N, decl: D, context: Resolver::context) -> void
74
13
  end
75
14
 
76
- class ModuleAliasEntry < SingleEntry[TypeName, AST::Declarations::ModuleAlias]
15
+ class ModuleAliasEntry < SingleEntry[TypeName, AST::Declarations::ModuleAlias | AST::Ruby::Declarations::ClassModuleAliasDecl]
77
16
  end
78
17
 
79
- class ClassAliasEntry < SingleEntry[TypeName, AST::Declarations::ClassAlias]
18
+ class ClassAliasEntry < SingleEntry[TypeName, AST::Declarations::ClassAlias | AST::Ruby::Declarations::ClassModuleAliasDecl]
80
19
  end
81
20
 
82
21
  class InterfaceEntry < SingleEntry[TypeName, AST::Declarations::Interface]
@@ -85,14 +24,18 @@ module RBS
85
24
  class TypeAliasEntry < SingleEntry[TypeName, AST::Declarations::TypeAlias]
86
25
  end
87
26
 
88
- class ConstantEntry < SingleEntry[TypeName, AST::Declarations::Constant]
27
+ class ConstantEntry < SingleEntry[TypeName, AST::Declarations::Constant | AST::Ruby::Declarations::ConstantDecl]
89
28
  end
90
29
 
91
30
  class GlobalEntry < SingleEntry[Symbol, AST::Declarations::Global]
92
31
  end
93
32
 
94
33
  # Top level declarations
95
- attr_reader declarations: Array[AST::Declarations::t]
34
+ def declarations: () -> Array[AST::Ruby::Declarations::t | AST::Declarations::t]
35
+
36
+ # Array of source objects loaded in the environment
37
+ #
38
+ attr_reader sources: Array[Source::t]
96
39
 
97
40
  # Class declarations
98
41
  attr_reader class_decls: Hash[TypeName, ModuleEntry | ClassEntry]
@@ -111,10 +54,6 @@ module RBS
111
54
  # Global declarations
112
55
  attr_reader global_decls: Hash[Symbol, GlobalEntry]
113
56
 
114
- # A hash from Buffer to it's contents
115
- #
116
- attr_reader signatures: Hash[Buffer, [Array[AST::Directives::t], Array[AST::Declarations::t]]]
117
-
118
57
  def initialize: () -> void
119
58
 
120
59
  def initialize_copy: (Environment) -> void
@@ -123,15 +62,21 @@ module RBS
123
62
  #
124
63
  def self.from_loader: (EnvironmentLoader) -> Environment
125
64
 
126
- def add_signature: (buffer: Buffer, directives: Array[AST::Directives::t], decls: Array[AST::Declarations::t]) -> void
65
+ def add_source: (Source::t) -> void
66
+
67
+ def each_rbs_source: () { (Source::RBS) -> void } -> void
68
+ | () -> Enumerator[Source::RBS]
127
69
 
128
- # Insert a toplevel declaration into the environment
70
+ def each_ruby_source: () { (Source::Ruby) -> void } -> void
71
+ | () -> Enumerator[Source::Ruby]
72
+
73
+ # Insert a declaration into the environment
129
74
  #
130
- def <<: (AST::Declarations::t decl) -> self
75
+ private def insert_rbs_decl: (AST::Declarations::t, context: Resolver::context, namespace: Namespace) -> void
131
76
 
132
77
  # Insert a declaration into the environment
133
78
  #
134
- private def insert_decl: (AST::Declarations::t, outer: Array[module_decl], namespace: Namespace) -> void
79
+ private def insert_ruby_decl: (AST::Ruby::Declarations::t, context: Resolver::context, namespace: Namespace) -> void
135
80
 
136
81
  # Resolve all type names in the environment to absolute type names.
137
82
  # Relative type name will be left if absolute type name cannot be found.
@@ -139,9 +84,15 @@ module RBS
139
84
  # When `only` is given, it skips other _top-level_ declarations not included in the collection.
140
85
  # This helps running resolution faster in the case of _partial updates_.
141
86
  #
142
- def resolve_type_names: (?only: Set[AST::Declarations::t]?) -> Environment
87
+ def resolve_type_names: (?only: Set[AST::Declarations::t | AST::Ruby::Declarations::t]?) -> Environment
143
88
 
144
- def resolve_signature: (Resolver::TypeNameResolver, UseMap::Table, Array[AST::Directives::t], Array[AST::Declarations::t], ?only: Set[AST::Declarations::t]?) -> [Array[AST::Directives::t], Array[AST::Declarations::t]]
89
+ def resolve_signature: (
90
+ Resolver::TypeNameResolver,
91
+ UseMap::Table,
92
+ Array[AST::Directives::t],
93
+ Array[AST::Declarations::t],
94
+ ?only: Set[AST::Declarations::t | AST::Ruby::Declarations::t]?
95
+ ) -> [Array[AST::Directives::t], Array[AST::Declarations::t]]
145
96
 
146
97
  def inspect: () -> String
147
98
 
@@ -149,7 +100,8 @@ module RBS
149
100
 
150
101
  # Remove declarations and directives that are loaded from `buffers`
151
102
  #
152
- def unload: (Set[Buffer] buffers) -> Environment
103
+ def unload: (Set[Pathname] paths) -> Environment
104
+ | %a{deprecated: Use pathname version} (Set[Buffer] buffers) -> Environment
153
105
 
154
106
  # Returns true if an interface with the type name is defined
155
107
  #
@@ -190,22 +142,58 @@ module RBS
190
142
  # Returns true if the type name is a class alias
191
143
  def class_alias?: (TypeName) -> bool
192
144
 
193
- def class_entry: (TypeName) -> (ClassEntry | ClassAliasEntry | nil)
145
+ # Returns the entry for the class name
146
+ #
147
+ # Returns `nil` when:
148
+ #
149
+ # * The type name is not found
150
+ # * The type name is not a class
151
+ #
152
+ # It normalizes when `normalized: true` is given -- returns `ClassEntry` or `nil`.
153
+ #
154
+ def class_entry: (TypeName, normalized: true) -> ClassEntry?
155
+ | (TypeName, ?normalized: bool) -> (ClassEntry | ClassAliasEntry | nil)
194
156
 
195
157
  # Returns ClassEntry if the class definition is found, normalized in case of alias
196
158
  #
159
+ %a{deprecated: Use `class_entry(type_name, normalized: true)` instead. }
197
160
  def normalized_class_entry: (TypeName) -> ClassEntry?
198
161
 
199
- def module_entry: (TypeName) -> (ModuleEntry | ModuleAliasEntry | nil)
162
+ # Returns the entry for the module name
163
+ #
164
+ # Returns `nil` when:
165
+ #
166
+ # * The type name is not found
167
+ # * The type name is not a module
168
+ #
169
+ # It normalizes when `normalized: true` is given -- returns `ModuleEntry` or `nil`.
170
+ #
171
+ def module_entry: (TypeName, normalized: true) -> ModuleEntry?
172
+ | (TypeName, ?normalized: bool) -> (ModuleEntry | ModuleAliasEntry | nil)
200
173
 
201
174
  # Returns ModuleEntry if the module definition is found, normalized in case of alias
202
175
  #
176
+ %a{deprecated: Use `module_entry(type_name, normalized: true)` instead. }
203
177
  def normalized_module_entry: (TypeName) -> ModuleEntry?
204
178
 
205
- def constant_entry: (TypeName) -> (ClassEntry | ClassAliasEntry | ModuleEntry | ModuleAliasEntry | ConstantEntry | nil)
179
+ # Returns the entry for the type name
180
+ #
181
+ # The entry is one of ClassEntry, ModuleEntry, ConstantEntry, ClassAliasEntry, or ModuleAliasEntry.
182
+ # When `normalized: true` is given, it returns normalized entry -- one of ClassEntry, ModuleEntry, or ConstantEntry.
183
+ #
184
+ # Returns `nil` if not found.
185
+ #
186
+ def constant_entry: (TypeName, normalized: true) -> (ClassEntry | ModuleEntry | ConstantEntry | nil)
187
+ | (TypeName, ?normalized: bool) -> (ClassEntry | ClassAliasEntry | ModuleEntry | ModuleAliasEntry | ConstantEntry | nil)
206
188
 
207
- def module_class_entry: (TypeName) -> (ClassEntry | ClassAliasEntry | ModuleEntry | ModuleAliasEntry | nil)
189
+ # Returns ClassEntry or ModuleEntry if the class/module definition is found
190
+ #
191
+ # Normalizes when `normalized: true` is given.
192
+ #
193
+ def module_class_entry: (TypeName, normalized: true) -> (ClassEntry | ModuleEntry | nil)
194
+ | (TypeName, ?normalized: bool) -> (ClassEntry | ClassAliasEntry | ModuleEntry | ModuleAliasEntry | nil)
208
195
 
196
+ %a{deprecated: Use `module_class_entry(type_name, normalized: true)` instead. }
209
197
  def normalized_module_class_entry: (TypeName) -> (ClassEntry | ModuleEntry | nil)
210
198
 
211
199
  @normalize_module_name_cache: Hash[TypeName, TypeName | false | nil]
@@ -216,26 +204,39 @@ module RBS
216
204
  # * Returns `nil` if the rhs name cannot be found
217
205
  # * Returns `false` if the name is cyclic
218
206
  #
207
+ # Note that this method assumes the declarations have resolved type names.
208
+ #
219
209
  def normalize_module_name?: (TypeName) -> (TypeName | nil | false)
220
210
 
221
- # Returns the original module name that is defined with `module` declaration
211
+ # Returns the original module name that is defined with `module`/`class` declaration
222
212
  #
223
- # * Raises an error if given type name is not module
213
+ # * Raises an error if given type name is not module/class
224
214
  # * Calls `#absolute!` for relative module names
225
215
  # * Returns the name itself if the name cannot be normalized to a class/module
226
216
  #
217
+ # Note that this method assumes the declarations have resolved type names.
218
+ #
227
219
  def normalize_module_name: (TypeName) -> TypeName
228
220
 
221
+ # Returns the original module name that is defined with `module`/`class` declaration
222
+ #
223
+ # * Raises an error if given type name is not a module/class
224
+ def normalize_module_name!: (TypeName) -> TypeName
225
+
229
226
  # Returns a normalized module/class name or a type name with a normalized namespace
230
227
  #
231
228
  # * Calls `#absolute!` for relative module names
232
229
  # * Returns `nil` if the typename cannot be found
233
230
  # * Returns `false` if the name is cyclic
234
231
  #
232
+ # Note that this method assumes the declarations have resolved type names.
233
+ #
235
234
  def normalize_type_name?: (TypeName) -> (TypeName | nil | false)
236
235
 
237
236
  # Normalize the type name or raises an error
238
237
  #
238
+ # Note that this method assumes the declarations have resolved type names.
239
+ #
239
240
  def normalize_type_name!: (TypeName) -> TypeName
240
241
 
241
242
  # Returns a normalized module/class name or a type name with a normalized namespace
@@ -243,6 +244,8 @@ module RBS
243
244
  # * Calls `#absolute!` for relative module names
244
245
  # * Returns the typename itself if the name cannot be normalized
245
246
  #
247
+ # Note that this method assumes the declarations have resolved type names.
248
+ #
246
249
  def normalize_type_name: (TypeName) -> TypeName
247
250
 
248
251
  # Returns `true` if given type name is normalized
@@ -264,7 +267,7 @@ module RBS
264
267
 
265
268
  def append_context: (Resolver::context, module_decl) -> Resolver::context
266
269
 
267
- def resolve_declaration: (Resolver::TypeNameResolver resolver, UseMap map, AST::Declarations::t decl, outer: Array[module_decl], prefix: Namespace) -> AST::Declarations::t
270
+ def resolve_declaration: (Resolver::TypeNameResolver resolver, UseMap map, AST::Declarations::t decl, context: Resolver::context, prefix: Namespace) -> AST::Declarations::t
268
271
 
269
272
  def resolve_member: (Resolver::TypeNameResolver, UseMap map, AST::Members::t, context: Resolver::context) -> AST::Members::t
270
273
 
@@ -272,8 +275,12 @@ module RBS
272
275
 
273
276
  def resolve_type_params: (Resolver::TypeNameResolver resolver, UseMap map, Array[AST::TypeParam], context: Resolver::context) -> Array[AST::TypeParam]
274
277
 
275
- def absolute_type: (Resolver::TypeNameResolver, UseMap map, Types::t, context: Resolver::context) -> Types::t
278
+ def resolve_ruby_decl: (Resolver::TypeNameResolver, AST::Ruby::Declarations::t, context: Resolver::context, prefix: Namespace) -> AST::Ruby::Declarations::t
279
+
280
+ def resolve_ruby_member: (Resolver::TypeNameResolver, AST::Ruby::Members::t, context: Resolver::context) -> AST::Ruby::Members::t
281
+
282
+ def absolute_type: (Resolver::TypeNameResolver, UseMap? map, Types::t, context: Resolver::context) -> Types::t
276
283
 
277
- def absolute_type_name: (Resolver::TypeNameResolver, UseMap map, TypeName, context: Resolver::context) -> TypeName
284
+ def absolute_type_name: (Resolver::TypeNameResolver, UseMap? map, TypeName, context: Resolver::context) -> TypeName
278
285
  end
279
286
  end
data/sig/errors.rbs CHANGED
@@ -115,14 +115,16 @@ module RBS
115
115
  class NoMixinFoundError < DefinitionError
116
116
  include DetailedMessageable
117
117
 
118
+ type member = AST::Members::t | AST::Ruby::Members::IncludeMember | AST::Ruby::Members::ExtendMember | AST::Ruby::Members::PrependMember
119
+
118
120
  attr_reader type_name: TypeName
119
- attr_reader member: AST::Members::t
121
+ attr_reader member: member
120
122
 
121
- def initialize: (type_name: TypeName, member: AST::Members::t) -> void
123
+ def initialize: (type_name: TypeName, member: member) -> void
122
124
 
123
125
  def location: () -> Location[untyped, untyped]?
124
126
 
125
- def self.check!: (TypeName, env: Environment, member: AST::Members::t) -> void
127
+ def self.check!: (TypeName, env: Environment, member: member) -> void
126
128
  end
127
129
 
128
130
  class DuplicatedMethodDefinitionError < DefinitionError
@@ -226,28 +228,35 @@ module RBS
226
228
  class InvalidOverloadMethodError < DefinitionError
227
229
  include DetailedMessageable
228
230
 
231
+ type member = AST::Members::MethodDefinition | AST::Ruby::Members::DefMember
232
+
229
233
  attr_reader type_name: TypeName
230
234
  attr_reader method_name: Symbol
231
235
  attr_reader kind: :instance | :singleton
232
- attr_reader members: Array[AST::Members::MethodDefinition]
236
+ attr_reader members: Array[member]
233
237
 
234
- def initialize: (type_name: TypeName, method_name: Symbol, kind: :instance | :singleton, members: Array[AST::Members::MethodDefinition]) -> void
238
+ def initialize: (type_name: TypeName, method_name: Symbol, kind: :instance | :singleton, members: Array[member]) -> void
235
239
 
236
240
  def location: () -> AST::Members::MethodDefinition::loc?
237
241
  end
238
242
 
239
243
  class GenericParameterMismatchError < LoadingError
244
+ type decl = AST::Declarations::Class | AST::Declarations::Module
245
+ | AST::Ruby::Declarations::ClassDecl | AST::Ruby::Declarations::ModuleDecl
246
+
240
247
  attr_reader name: TypeName
241
- attr_reader decl: AST::Declarations::Class | AST::Declarations::Module
248
+ attr_reader decl: decl
242
249
 
243
- def initialize: (name: TypeName, decl: AST::Declarations::Class | AST::Declarations::Module) -> void
250
+ def initialize: (name: TypeName, decl: decl, ?location: Location) -> void
244
251
  end
245
252
 
246
253
  class DuplicatedDeclarationError < LoadingError
254
+ type declaration = AST::Declarations::t | AST::Ruby::Declarations::t
255
+
247
256
  attr_reader name: TypeName | Symbol
248
- attr_reader decls: Array[AST::Declarations::t]
257
+ attr_reader decls: Array[declaration]
249
258
 
250
- def initialize: (TypeName | Symbol, *AST::Declarations::t) -> void
259
+ def initialize: (TypeName | Symbol, *declaration) -> void
251
260
  end
252
261
 
253
262
  class InvalidVarianceAnnotationError < DefinitionError
@@ -280,6 +289,7 @@ module RBS
280
289
  include DetailedMessageable
281
290
 
282
291
  type member = AST::Members::Include | AST::Members::Prepend | AST::Members::Extend
292
+ | AST::Ruby::Members::IncludeMember | AST::Ruby::Members::PrependMember | AST::Ruby::Members::ExtendMember
283
293
 
284
294
  attr_reader type_name: TypeName
285
295
  attr_reader member: member
@@ -290,17 +300,21 @@ module RBS
290
300
 
291
301
  def self.check!: (type_name: TypeName, env: Environment, member: member) -> void
292
302
 
303
+ def member_name: (member) -> TypeName
304
+
293
305
  def mixin_name: () -> String
294
306
  end
295
307
 
296
308
  # InheritModuleError is raised if a class definition inherits a module (not a class)
297
309
  #
298
310
  class InheritModuleError < DefinitionError
311
+ type super_class = AST::Declarations::Class::Super | AST::Ruby::Declarations::ClassDecl::SuperClass
312
+
299
313
  include DetailedMessageable
300
314
 
301
- attr_reader super_decl: AST::Declarations::Class::Super
315
+ attr_reader super_decl: super_class
302
316
 
303
- def initialize: (AST::Declarations::Class::Super) -> void
317
+ def initialize: (super_class) -> void
304
318
 
305
319
  def location: () -> Location[untyped, untyped]?
306
320
 
@@ -308,7 +322,7 @@ module RBS
308
322
  #
309
323
  # Automatically normalize the name of super.
310
324
  #
311
- def self.check!: (AST::Declarations::Class::Super, env: Environment) -> void
325
+ def self.check!: (super_class, env: Environment) -> void
312
326
  end
313
327
 
314
328
  class RecursiveTypeAliasError < BaseError
@@ -380,14 +394,6 @@ module RBS
380
394
  def location: () -> AST::Declarations::AliasDecl::loc?
381
395
  end
382
396
 
383
- class WillSyntaxError < BaseError
384
- include RBS::DetailedMessageable
385
-
386
- def initialize: (String message, location: Location[untyped, untyped]?) -> void
387
-
388
- attr_reader location: Location[untyped, untyped]?
389
- end
390
-
391
397
  class TypeParamDefaultReferenceError < BaseError
392
398
  include DetailedMessageable
393
399