rbs 4.1.0.pre.2-java
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.
- checksums.yaml +7 -0
- data/.clang-format +75 -0
- data/.clangd +2 -0
- data/.github/dependabot.yml +24 -0
- data/.github/workflows/bundle-update.yml +63 -0
- data/.github/workflows/c-check.yml +61 -0
- data/.github/workflows/comments.yml +37 -0
- data/.github/workflows/dependabot.yml +30 -0
- data/.github/workflows/jruby.yml +67 -0
- data/.github/workflows/milestone.yml +83 -0
- data/.github/workflows/ruby.yml +158 -0
- data/.github/workflows/rust.yml +184 -0
- data/.github/workflows/truffleruby.yml +54 -0
- data/.github/workflows/typecheck.yml +39 -0
- data/.github/workflows/wasm.yml +53 -0
- data/.github/workflows/windows.yml +49 -0
- data/.gitignore +38 -0
- data/.rubocop.yml +72 -0
- data/BSDL +22 -0
- data/CHANGELOG.md +2292 -0
- data/COPYING +56 -0
- data/README.md +240 -0
- data/Rakefile +869 -0
- data/Steepfile +53 -0
- data/config.yml +913 -0
- data/core/array.rbs +4142 -0
- data/core/basic_object.rbs +376 -0
- data/core/binding.rbs +148 -0
- data/core/builtin.rbs +278 -0
- data/core/class.rbs +223 -0
- data/core/comparable.rbs +192 -0
- data/core/complex.rbs +812 -0
- data/core/constants.rbs +96 -0
- data/core/data.rbs +415 -0
- data/core/dir.rbs +993 -0
- data/core/encoding.rbs +1368 -0
- data/core/enumerable.rbs +2506 -0
- data/core/enumerator/arithmetic_sequence.rbs +70 -0
- data/core/enumerator/product.rbs +92 -0
- data/core/enumerator.rbs +705 -0
- data/core/env.rbs +6 -0
- data/core/errno.rbs +682 -0
- data/core/errors.rbs +789 -0
- data/core/exception.rbs +485 -0
- data/core/false_class.rbs +82 -0
- data/core/fiber.rbs +570 -0
- data/core/fiber_error.rbs +11 -0
- data/core/file.rbs +2045 -0
- data/core/file_constants.rbs +463 -0
- data/core/file_stat.rbs +534 -0
- data/core/file_test.rbs +331 -0
- data/core/float.rbs +1316 -0
- data/core/gc.rbs +788 -0
- data/core/global_variables.rbs +184 -0
- data/core/hash.rbs +2183 -0
- data/core/integer.rbs +1374 -0
- data/core/io/buffer.rbs +995 -0
- data/core/io/wait.rbs +48 -0
- data/core/io.rbs +3472 -0
- data/core/kernel.rbs +3172 -0
- data/core/marshal.rbs +207 -0
- data/core/match_data.rbs +637 -0
- data/core/math.rbs +770 -0
- data/core/method.rbs +422 -0
- data/core/module.rbs +1856 -0
- data/core/nil_class.rbs +210 -0
- data/core/numeric.rbs +832 -0
- data/core/object.rbs +108 -0
- data/core/object_space/weak_key_map.rbs +166 -0
- data/core/object_space.rbs +197 -0
- data/core/pathname.rbs +1322 -0
- data/core/proc.rbs +905 -0
- data/core/process.rbs +2316 -0
- data/core/ractor.rbs +924 -0
- data/core/random.rbs +255 -0
- data/core/range.rbs +1209 -0
- data/core/rational.rbs +502 -0
- data/core/rb_config.rbs +88 -0
- data/core/rbs/ops.rbs +154 -0
- data/core/rbs/unnamed/argf.rbs +1236 -0
- data/core/rbs/unnamed/env_class.rbs +1214 -0
- data/core/rbs/unnamed/main_class.rbs +123 -0
- data/core/rbs/unnamed/random.rbs +186 -0
- data/core/refinement.rbs +59 -0
- data/core/regexp.rbs +1974 -0
- data/core/ruby.rbs +53 -0
- data/core/ruby_vm.rbs +809 -0
- data/core/rubygems/basic_specification.rbs +6 -0
- data/core/rubygems/config_file.rbs +38 -0
- data/core/rubygems/dependency_installer.rbs +6 -0
- data/core/rubygems/errors.rbs +109 -0
- data/core/rubygems/installer.rbs +15 -0
- data/core/rubygems/path_support.rbs +6 -0
- data/core/rubygems/platform.rbs +7 -0
- data/core/rubygems/request_set.rbs +49 -0
- data/core/rubygems/requirement.rbs +148 -0
- data/core/rubygems/rubygems.rbs +1105 -0
- data/core/rubygems/source_list.rbs +15 -0
- data/core/rubygems/specification.rbs +23 -0
- data/core/rubygems/stream_ui.rbs +5 -0
- data/core/rubygems/uninstaller.rbs +10 -0
- data/core/rubygems/version.rbs +293 -0
- data/core/set.rbs +751 -0
- data/core/signal.rbs +110 -0
- data/core/string.rbs +5532 -0
- data/core/struct.rbs +668 -0
- data/core/symbol.rbs +482 -0
- data/core/thread.rbs +1826 -0
- data/core/thread_group.rbs +79 -0
- data/core/time.rbs +1793 -0
- data/core/trace_point.rbs +483 -0
- data/core/true_class.rbs +98 -0
- data/core/unbound_method.rbs +337 -0
- data/core/warning.rbs +87 -0
- data/docs/CONTRIBUTING.md +107 -0
- data/docs/aliases.md +79 -0
- data/docs/architecture.md +110 -0
- data/docs/collection.md +192 -0
- data/docs/config.md +171 -0
- data/docs/data_and_struct.md +86 -0
- data/docs/encoding.md +56 -0
- data/docs/gem.md +56 -0
- data/docs/inline.md +634 -0
- data/docs/rbs_by_example.md +309 -0
- data/docs/repo.md +125 -0
- data/docs/rust.md +96 -0
- data/docs/sigs.md +167 -0
- data/docs/stdlib.md +147 -0
- data/docs/syntax.md +940 -0
- data/docs/tools.md +17 -0
- data/docs/type_fingerprint.md +21 -0
- data/docs/wasm_serialization.md +80 -0
- data/exe/rbs +7 -0
- data/ext/rbs_extension/ast_translation.c +1855 -0
- data/ext/rbs_extension/ast_translation.h +41 -0
- data/ext/rbs_extension/class_constants.c +187 -0
- data/ext/rbs_extension/class_constants.h +104 -0
- data/ext/rbs_extension/compat.h +10 -0
- data/ext/rbs_extension/extconf.rb +40 -0
- data/ext/rbs_extension/legacy_location.c +294 -0
- data/ext/rbs_extension/legacy_location.h +82 -0
- data/ext/rbs_extension/main.c +613 -0
- data/ext/rbs_extension/rbs_extension.h +16 -0
- data/ext/rbs_extension/rbs_string_bridging.c +9 -0
- data/ext/rbs_extension/rbs_string_bridging.h +24 -0
- data/goodcheck.yml +91 -0
- data/include/rbs/ast.h +1047 -0
- data/include/rbs/defines.h +99 -0
- data/include/rbs/lexer.h +207 -0
- data/include/rbs/location.h +40 -0
- data/include/rbs/parser.h +153 -0
- data/include/rbs/serialize.h +39 -0
- data/include/rbs/string.h +47 -0
- data/include/rbs/util/rbs_allocator.h +59 -0
- data/include/rbs/util/rbs_assert.h +20 -0
- data/include/rbs/util/rbs_buffer.h +83 -0
- data/include/rbs/util/rbs_constant_pool.h +155 -0
- data/include/rbs/util/rbs_encoding.h +282 -0
- data/include/rbs/util/rbs_unescape.h +24 -0
- data/include/rbs.h +14 -0
- data/lib/rbs/ancestor_graph.rb +92 -0
- data/lib/rbs/annotate/annotations.rb +199 -0
- data/lib/rbs/annotate/formatter.rb +82 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +398 -0
- data/lib/rbs/annotate/rdoc_source.rb +131 -0
- data/lib/rbs/annotate.rb +8 -0
- data/lib/rbs/ast/annotation.rb +29 -0
- data/lib/rbs/ast/comment.rb +29 -0
- data/lib/rbs/ast/declarations.rb +472 -0
- data/lib/rbs/ast/directives.rb +49 -0
- data/lib/rbs/ast/members.rb +451 -0
- data/lib/rbs/ast/ruby/annotations.rb +451 -0
- data/lib/rbs/ast/ruby/comment_block.rb +247 -0
- data/lib/rbs/ast/ruby/declarations.rb +291 -0
- data/lib/rbs/ast/ruby/helpers/constant_helper.rb +28 -0
- data/lib/rbs/ast/ruby/helpers/location_helper.rb +15 -0
- data/lib/rbs/ast/ruby/members.rb +762 -0
- data/lib/rbs/ast/type_param.rb +235 -0
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/buffer.rb +189 -0
- data/lib/rbs/builtin_names.rb +58 -0
- data/lib/rbs/cli/colored_io.rb +48 -0
- data/lib/rbs/cli/diff.rb +84 -0
- data/lib/rbs/cli/validate.rb +294 -0
- data/lib/rbs/cli.rb +1253 -0
- data/lib/rbs/collection/cleaner.rb +38 -0
- data/lib/rbs/collection/config/lockfile.rb +92 -0
- data/lib/rbs/collection/config/lockfile_generator.rb +269 -0
- data/lib/rbs/collection/config.rb +81 -0
- data/lib/rbs/collection/installer.rb +32 -0
- data/lib/rbs/collection/sources/base.rb +14 -0
- data/lib/rbs/collection/sources/git.rb +265 -0
- data/lib/rbs/collection/sources/local.rb +81 -0
- data/lib/rbs/collection/sources/rubygems.rb +48 -0
- data/lib/rbs/collection/sources/stdlib.rb +50 -0
- data/lib/rbs/collection/sources.rb +38 -0
- data/lib/rbs/collection.rb +16 -0
- data/lib/rbs/constant.rb +28 -0
- data/lib/rbs/definition.rb +415 -0
- data/lib/rbs/definition_builder/ancestor_builder.rb +678 -0
- data/lib/rbs/definition_builder/method_builder.rb +295 -0
- data/lib/rbs/definition_builder.rb +1054 -0
- data/lib/rbs/diff.rb +131 -0
- data/lib/rbs/environment/class_entry.rb +69 -0
- data/lib/rbs/environment/module_entry.rb +66 -0
- data/lib/rbs/environment/use_map.rb +77 -0
- data/lib/rbs/environment.rb +1028 -0
- data/lib/rbs/environment_loader.rb +167 -0
- data/lib/rbs/environment_walker.rb +155 -0
- data/lib/rbs/errors.rb +634 -0
- data/lib/rbs/factory.rb +18 -0
- data/lib/rbs/file_finder.rb +28 -0
- data/lib/rbs/inline_parser/comment_association.rb +117 -0
- data/lib/rbs/inline_parser.rb +568 -0
- data/lib/rbs/location_aux.rb +170 -0
- data/lib/rbs/locator.rb +247 -0
- data/lib/rbs/method_type.rb +145 -0
- data/lib/rbs/namespace.rb +154 -0
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +142 -0
- data/lib/rbs/prototype/helpers.rb +197 -0
- data/lib/rbs/prototype/node_usage.rb +99 -0
- data/lib/rbs/prototype/rb.rb +816 -0
- data/lib/rbs/prototype/rbi.rb +625 -0
- data/lib/rbs/prototype/runtime/helpers.rb +59 -0
- data/lib/rbs/prototype/runtime/reflection.rb +19 -0
- data/lib/rbs/prototype/runtime/value_object_generator.rb +279 -0
- data/lib/rbs/prototype/runtime.rb +680 -0
- data/lib/rbs/repository.rb +127 -0
- data/lib/rbs/resolver/constant_resolver.rb +219 -0
- data/lib/rbs/resolver/type_name_resolver.rb +167 -0
- data/lib/rbs/rewriter.rb +70 -0
- data/lib/rbs/sorter.rb +198 -0
- data/lib/rbs/source.rb +99 -0
- data/lib/rbs/substitution.rb +83 -0
- data/lib/rbs/subtractor.rb +204 -0
- data/lib/rbs/test/errors.rb +80 -0
- data/lib/rbs/test/guaranteed.rb +30 -0
- data/lib/rbs/test/hook.rb +212 -0
- data/lib/rbs/test/observer.rb +19 -0
- data/lib/rbs/test/setup.rb +84 -0
- data/lib/rbs/test/setup_helper.rb +50 -0
- data/lib/rbs/test/tester.rb +167 -0
- data/lib/rbs/test/type_check.rb +457 -0
- data/lib/rbs/test.rb +112 -0
- data/lib/rbs/type_alias_dependency.rb +100 -0
- data/lib/rbs/type_alias_regularity.rb +126 -0
- data/lib/rbs/type_name.rb +122 -0
- data/lib/rbs/types.rb +1604 -0
- data/lib/rbs/unit_test/convertibles.rb +177 -0
- data/lib/rbs/unit_test/spy.rb +138 -0
- data/lib/rbs/unit_test/type_assertions.rb +383 -0
- data/lib/rbs/unit_test/with_aliases.rb +145 -0
- data/lib/rbs/unit_test.rb +6 -0
- data/lib/rbs/validator.rb +186 -0
- data/lib/rbs/variance_calculator.rb +189 -0
- data/lib/rbs/vendorer.rb +71 -0
- data/lib/rbs/version.rb +5 -0
- data/lib/rbs/wasm/deserializer.rb +213 -0
- data/lib/rbs/wasm/jars/asm-analysis.jar +0 -0
- data/lib/rbs/wasm/jars/asm-commons.jar +0 -0
- data/lib/rbs/wasm/jars/asm-tree.jar +0 -0
- data/lib/rbs/wasm/jars/asm-util.jar +0 -0
- data/lib/rbs/wasm/jars/asm.jar +0 -0
- data/lib/rbs/wasm/jars/compiler.jar +0 -0
- data/lib/rbs/wasm/jars/log.jar +0 -0
- data/lib/rbs/wasm/jars/runtime.jar +0 -0
- data/lib/rbs/wasm/jars/wasi.jar +0 -0
- data/lib/rbs/wasm/jars/wasm.jar +0 -0
- data/lib/rbs/wasm/location.rb +61 -0
- data/lib/rbs/wasm/parser.rb +137 -0
- data/lib/rbs/wasm/rbs_parser.wasm +0 -0
- data/lib/rbs/wasm/runtime.rb +217 -0
- data/lib/rbs/wasm/serialization_schema.rb +110 -0
- data/lib/rbs/writer.rb +424 -0
- data/lib/rbs.rb +117 -0
- data/lib/rdoc/discover.rb +20 -0
- data/lib/rdoc_plugin/parser.rb +163 -0
- data/rbs.gemspec +68 -0
- data/schema/annotation.json +14 -0
- data/schema/comment.json +26 -0
- data/schema/decls.json +326 -0
- data/schema/function.json +87 -0
- data/schema/location.json +56 -0
- data/schema/members.json +266 -0
- data/schema/methodType.json +50 -0
- data/schema/typeParam.json +52 -0
- data/schema/types.json +317 -0
- data/sig/ancestor_builder.rbs +163 -0
- data/sig/ancestor_graph.rbs +60 -0
- data/sig/annotate/annotations.rbs +102 -0
- data/sig/annotate/formatter.rbs +24 -0
- data/sig/annotate/rdoc_annotater.rbs +85 -0
- data/sig/annotate/rdoc_source.rbs +32 -0
- data/sig/annotation.rbs +27 -0
- data/sig/ast/ruby/annotations.rbs +470 -0
- data/sig/ast/ruby/comment_block.rbs +127 -0
- data/sig/ast/ruby/declarations.rbs +158 -0
- data/sig/ast/ruby/helpers/constant_helper.rbs +11 -0
- data/sig/ast/ruby/helpers/location_helper.rbs +15 -0
- data/sig/ast/ruby/members.rbs +198 -0
- data/sig/buffer.rbs +108 -0
- data/sig/builtin_names.rbs +44 -0
- data/sig/cli/colored_io.rbs +15 -0
- data/sig/cli/diff.rbs +15 -0
- data/sig/cli/validate.rbs +47 -0
- data/sig/cli.rbs +89 -0
- data/sig/collection/cleaner.rbs +13 -0
- data/sig/collection/config/lockfile.rbs +74 -0
- data/sig/collection/config/lockfile_generator.rbs +68 -0
- data/sig/collection/config.rbs +46 -0
- data/sig/collection/installer.rbs +17 -0
- data/sig/collection/sources.rbs +214 -0
- data/sig/collection.rbs +4 -0
- data/sig/comment.rbs +26 -0
- data/sig/constant.rbs +21 -0
- data/sig/declarations.rbs +274 -0
- data/sig/definition.rbs +232 -0
- data/sig/definition_builder.rbs +181 -0
- data/sig/diff.rbs +28 -0
- data/sig/directives.rbs +77 -0
- data/sig/environment/class_entry.rbs +50 -0
- data/sig/environment/module_entry.rbs +50 -0
- data/sig/environment.rbs +286 -0
- data/sig/environment_loader.rbs +111 -0
- data/sig/environment_walker.rbs +65 -0
- data/sig/errors.rbs +408 -0
- data/sig/factory.rbs +5 -0
- data/sig/file_finder.rbs +28 -0
- data/sig/inline_parser/comment_association.rbs +71 -0
- data/sig/inline_parser.rbs +126 -0
- data/sig/location.rbs +135 -0
- data/sig/locator.rbs +56 -0
- data/sig/manifest.yaml +5 -0
- data/sig/members.rbs +258 -0
- data/sig/method_builder.rbs +89 -0
- data/sig/method_types.rbs +58 -0
- data/sig/namespace.rbs +161 -0
- data/sig/parser.rbs +164 -0
- data/sig/prototype/helpers.rbs +29 -0
- data/sig/prototype/node_usage.rbs +20 -0
- data/sig/prototype/rb.rbs +96 -0
- data/sig/prototype/rbi.rbs +75 -0
- data/sig/prototype/runtime.rbs +182 -0
- data/sig/rbs.rbs +21 -0
- data/sig/rdoc/rbs.rbs +67 -0
- data/sig/repository.rbs +85 -0
- data/sig/resolver/constant_resolver.rbs +92 -0
- data/sig/resolver/context.rbs +34 -0
- data/sig/resolver/type_name_resolver.rbs +61 -0
- data/sig/rewriter.rbs +45 -0
- data/sig/shims/bundler.rbs +38 -0
- data/sig/shims/enumerable.rbs +5 -0
- data/sig/shims/rubygems.rbs +19 -0
- data/sig/sorter.rbs +41 -0
- data/sig/source.rbs +48 -0
- data/sig/substitution.rbs +48 -0
- data/sig/subtractor.rbs +37 -0
- data/sig/test/errors.rbs +52 -0
- data/sig/test/guranteed.rbs +9 -0
- data/sig/test/type_check.rbs +19 -0
- data/sig/test.rbs +82 -0
- data/sig/type_alias_dependency.rbs +53 -0
- data/sig/type_alias_regularity.rbs +98 -0
- data/sig/type_param.rbs +115 -0
- data/sig/typename.rbs +89 -0
- data/sig/types.rbs +578 -0
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +22 -0
- data/sig/unit_test/type_assertions.rbs +211 -0
- data/sig/unit_test/with_aliases.rbs +136 -0
- data/sig/use_map.rbs +35 -0
- data/sig/util.rbs +9 -0
- data/sig/validator.rbs +63 -0
- data/sig/variance_calculator.rbs +87 -0
- data/sig/vendorer.rbs +51 -0
- data/sig/version.rbs +3 -0
- data/sig/visitor.rbs +47 -0
- data/sig/wasm/deserializer.rbs +66 -0
- data/sig/wasm/serialization_schema.rbs +13 -0
- data/sig/writer.rbs +127 -0
- data/src/ast.c +1628 -0
- data/src/lexer.c +3217 -0
- data/src/lexer.re +155 -0
- data/src/lexstate.c +217 -0
- data/src/location.c +31 -0
- data/src/parser.c +4255 -0
- data/src/serialize.c +958 -0
- data/src/string.c +41 -0
- data/src/util/rbs_allocator.c +162 -0
- data/src/util/rbs_assert.c +19 -0
- data/src/util/rbs_buffer.c +54 -0
- data/src/util/rbs_constant_pool.c +268 -0
- data/src/util/rbs_encoding.c +21308 -0
- data/src/util/rbs_unescape.c +167 -0
- data/stdlib/abbrev/0/abbrev.rbs +66 -0
- data/stdlib/abbrev/0/array.rbs +26 -0
- data/stdlib/base64/0/base64.rbs +355 -0
- data/stdlib/benchmark/0/benchmark.rbs +452 -0
- data/stdlib/bigdecimal/0/big_decimal.rbs +1647 -0
- data/stdlib/bigdecimal-math/0/big_math.rbs +280 -0
- data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
- data/stdlib/cgi/0/core.rbs +911 -0
- data/stdlib/cgi/0/manifest.yaml +4 -0
- data/stdlib/cgi-escape/0/escape.rbs +171 -0
- data/stdlib/coverage/0/coverage.rbs +266 -0
- data/stdlib/csv/0/csv.rbs +3776 -0
- data/stdlib/csv/0/manifest.yaml +3 -0
- data/stdlib/date/0/date.rbs +1598 -0
- data/stdlib/date/0/date_time.rbs +617 -0
- data/stdlib/date/0/time.rbs +26 -0
- data/stdlib/dbm/0/dbm.rbs +421 -0
- data/stdlib/delegate/0/delegator.rbs +187 -0
- data/stdlib/delegate/0/kernel.rbs +47 -0
- data/stdlib/delegate/0/simple_delegator.rbs +96 -0
- data/stdlib/did_you_mean/0/did_you_mean.rbs +344 -0
- data/stdlib/digest/0/digest.rbs +687 -0
- data/stdlib/erb/0/erb.rbs +933 -0
- data/stdlib/etc/0/etc.rbs +884 -0
- data/stdlib/fileutils/0/fileutils.rbs +1753 -0
- data/stdlib/find/0/find.rbs +49 -0
- data/stdlib/forwardable/0/forwardable.rbs +271 -0
- data/stdlib/io-console/0/io-console.rbs +414 -0
- data/stdlib/ipaddr/0/ipaddr.rbs +436 -0
- data/stdlib/json/0/json.rbs +1963 -0
- data/stdlib/kconv/0/kconv.rbs +166 -0
- data/stdlib/logger/0/formatter.rbs +45 -0
- data/stdlib/logger/0/log_device.rbs +100 -0
- data/stdlib/logger/0/logger.rbs +796 -0
- data/stdlib/logger/0/manifest.yaml +2 -0
- data/stdlib/logger/0/period.rbs +17 -0
- data/stdlib/logger/0/severity.rbs +34 -0
- data/stdlib/minitest/0/kernel.rbs +42 -0
- data/stdlib/minitest/0/minitest/abstract_reporter.rbs +52 -0
- data/stdlib/minitest/0/minitest/assertion.rbs +17 -0
- data/stdlib/minitest/0/minitest/assertions.rbs +590 -0
- data/stdlib/minitest/0/minitest/backtrace_filter.rbs +23 -0
- data/stdlib/minitest/0/minitest/bench_spec.rbs +102 -0
- data/stdlib/minitest/0/minitest/benchmark.rbs +259 -0
- data/stdlib/minitest/0/minitest/composite_reporter.rbs +25 -0
- data/stdlib/minitest/0/minitest/compress.rbs +13 -0
- data/stdlib/minitest/0/minitest/error_on_warning.rbs +3 -0
- data/stdlib/minitest/0/minitest/expectation.rbs +2 -0
- data/stdlib/minitest/0/minitest/expectations.rbs +21 -0
- data/stdlib/minitest/0/minitest/guard.rbs +64 -0
- data/stdlib/minitest/0/minitest/mock.rbs +64 -0
- data/stdlib/minitest/0/minitest/parallel/executor.rbs +46 -0
- data/stdlib/minitest/0/minitest/parallel/test/class_methods.rbs +5 -0
- data/stdlib/minitest/0/minitest/parallel/test.rbs +3 -0
- data/stdlib/minitest/0/minitest/parallel.rbs +2 -0
- data/stdlib/minitest/0/minitest/pride_io.rbs +62 -0
- data/stdlib/minitest/0/minitest/pride_lol.rbs +19 -0
- data/stdlib/minitest/0/minitest/progress_reporter.rbs +11 -0
- data/stdlib/minitest/0/minitest/reportable.rbs +53 -0
- data/stdlib/minitest/0/minitest/reporter.rbs +5 -0
- data/stdlib/minitest/0/minitest/result.rbs +28 -0
- data/stdlib/minitest/0/minitest/runnable.rbs +163 -0
- data/stdlib/minitest/0/minitest/skip.rbs +6 -0
- data/stdlib/minitest/0/minitest/spec/dsl/instance_methods.rbs +48 -0
- data/stdlib/minitest/0/minitest/spec/dsl.rbs +129 -0
- data/stdlib/minitest/0/minitest/spec.rbs +11 -0
- data/stdlib/minitest/0/minitest/statistics_reporter.rbs +81 -0
- data/stdlib/minitest/0/minitest/summary_reporter.rbs +18 -0
- data/stdlib/minitest/0/minitest/test/lifecycle_hooks.rbs +92 -0
- data/stdlib/minitest/0/minitest/test.rbs +69 -0
- data/stdlib/minitest/0/minitest/unexpected_error.rbs +12 -0
- data/stdlib/minitest/0/minitest/unexpected_warning.rbs +6 -0
- data/stdlib/minitest/0/minitest/unit/test_case.rbs +3 -0
- data/stdlib/minitest/0/minitest/unit.rbs +4 -0
- data/stdlib/minitest/0/minitest.rbs +115 -0
- data/stdlib/monitor/0/monitor.rbs +363 -0
- data/stdlib/mutex_m/0/mutex_m.rbs +104 -0
- data/stdlib/net-http/0/manifest.yaml +3 -0
- data/stdlib/net-http/0/net-http.rbs +5580 -0
- data/stdlib/net-protocol/0/manifest.yaml +2 -0
- data/stdlib/net-protocol/0/net-protocol.rbs +56 -0
- data/stdlib/net-smtp/0/manifest.yaml +2 -0
- data/stdlib/net-smtp/0/net-smtp.rbs +55 -0
- data/stdlib/nkf/0/nkf.rbs +402 -0
- data/stdlib/objspace/0/objspace.rbs +470 -0
- data/stdlib/observable/0/observable.rbs +217 -0
- data/stdlib/open-uri/0/manifest.yaml +4 -0
- data/stdlib/open-uri/0/open-uri.rbs +433 -0
- data/stdlib/open3/0/open3.rbs +606 -0
- data/stdlib/openssl/0/manifest.yaml +3 -0
- data/stdlib/openssl/0/openssl.rbs +12231 -0
- data/stdlib/optparse/0/optparse.rbs +1734 -0
- data/stdlib/pathname/0/pathname.rbs +36 -0
- data/stdlib/pp/0/manifest.yaml +2 -0
- data/stdlib/pp/0/pp.rbs +301 -0
- data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
- data/stdlib/pstore/0/pstore.rbs +608 -0
- data/stdlib/psych/0/core_ext.rbs +12 -0
- data/stdlib/psych/0/dbm.rbs +237 -0
- data/stdlib/psych/0/manifest.yaml +3 -0
- data/stdlib/psych/0/psych.rbs +455 -0
- data/stdlib/psych/0/store.rbs +57 -0
- data/stdlib/pty/0/pty.rbs +240 -0
- data/stdlib/random-formatter/0/random-formatter.rbs +277 -0
- data/stdlib/rdoc/0/code_object.rbs +52 -0
- data/stdlib/rdoc/0/comment.rbs +61 -0
- data/stdlib/rdoc/0/context.rbs +153 -0
- data/stdlib/rdoc/0/markup.rbs +117 -0
- data/stdlib/rdoc/0/options.rbs +76 -0
- data/stdlib/rdoc/0/parser.rbs +56 -0
- data/stdlib/rdoc/0/rdoc.rbs +393 -0
- data/stdlib/rdoc/0/ri.rbs +17 -0
- data/stdlib/rdoc/0/store.rbs +48 -0
- data/stdlib/rdoc/0/top_level.rbs +97 -0
- data/stdlib/resolv/0/manifest.yaml +3 -0
- data/stdlib/resolv/0/resolv.rbs +1787 -0
- data/stdlib/ripper/0/ripper.rbs +1654 -0
- data/stdlib/securerandom/0/manifest.yaml +2 -0
- data/stdlib/securerandom/0/securerandom.rbs +49 -0
- data/stdlib/shellwords/0/shellwords.rbs +229 -0
- data/stdlib/singleton/0/singleton.rbs +134 -0
- data/stdlib/socket/0/addrinfo.rbs +666 -0
- data/stdlib/socket/0/basic_socket.rbs +590 -0
- data/stdlib/socket/0/constants.rbs +2295 -0
- data/stdlib/socket/0/ip_socket.rbs +94 -0
- data/stdlib/socket/0/socket.rbs +4170 -0
- data/stdlib/socket/0/socket_error.rbs +5 -0
- data/stdlib/socket/0/tcp_server.rbs +192 -0
- data/stdlib/socket/0/tcp_socket.rbs +87 -0
- data/stdlib/socket/0/udp_socket.rbs +133 -0
- data/stdlib/socket/0/unix_server.rbs +169 -0
- data/stdlib/socket/0/unix_socket.rbs +172 -0
- data/stdlib/stringio/0/stringio.rbs +1681 -0
- data/stdlib/strscan/0/string_scanner.rbs +1648 -0
- data/stdlib/tempfile/0/tempfile.rbs +483 -0
- data/stdlib/time/0/time.rbs +434 -0
- data/stdlib/timeout/0/timeout.rbs +137 -0
- data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
- data/stdlib/tsort/0/cyclic.rbs +8 -0
- data/stdlib/tsort/0/interfaces.rbs +20 -0
- data/stdlib/tsort/0/tsort.rbs +410 -0
- data/stdlib/uri/0/common.rbs +621 -0
- data/stdlib/uri/0/file.rbs +118 -0
- data/stdlib/uri/0/ftp.rbs +13 -0
- data/stdlib/uri/0/generic.rbs +1116 -0
- data/stdlib/uri/0/http.rbs +104 -0
- data/stdlib/uri/0/https.rbs +14 -0
- data/stdlib/uri/0/ldap.rbs +230 -0
- data/stdlib/uri/0/ldaps.rbs +14 -0
- data/stdlib/uri/0/mailto.rbs +92 -0
- data/stdlib/uri/0/rfc2396_parser.rbs +189 -0
- data/stdlib/uri/0/rfc3986_parser.rbs +2 -0
- data/stdlib/uri/0/ws.rbs +13 -0
- data/stdlib/uri/0/wss.rbs +9 -0
- data/stdlib/yaml/0/manifest.yaml +2 -0
- data/stdlib/yaml/0/yaml.rbs +1 -0
- data/stdlib/zlib/0/buf_error.rbs +10 -0
- data/stdlib/zlib/0/data_error.rbs +10 -0
- data/stdlib/zlib/0/deflate.rbs +211 -0
- data/stdlib/zlib/0/error.rbs +20 -0
- data/stdlib/zlib/0/gzip_file/crc_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/error.rbs +23 -0
- data/stdlib/zlib/0/gzip_file/length_error.rbs +12 -0
- data/stdlib/zlib/0/gzip_file/no_footer.rbs +11 -0
- data/stdlib/zlib/0/gzip_file.rbs +156 -0
- data/stdlib/zlib/0/gzip_reader.rbs +293 -0
- data/stdlib/zlib/0/gzip_writer.rbs +168 -0
- data/stdlib/zlib/0/inflate.rbs +180 -0
- data/stdlib/zlib/0/mem_error.rbs +10 -0
- data/stdlib/zlib/0/need_dict.rbs +13 -0
- data/stdlib/zlib/0/stream_end.rbs +11 -0
- data/stdlib/zlib/0/stream_error.rbs +11 -0
- data/stdlib/zlib/0/version_error.rbs +11 -0
- data/stdlib/zlib/0/zlib.rbs +449 -0
- data/stdlib/zlib/0/zstream.rbs +201 -0
- data/wasm/README.md +59 -0
- data/wasm/rbs_wasm.c +411 -0
- metadata +660 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
#ifndef RBS_LOCATION_H
|
|
2
|
+
#define RBS_LOCATION_H
|
|
3
|
+
|
|
4
|
+
#include "compat.h"
|
|
5
|
+
|
|
6
|
+
SUPPRESS_RUBY_HEADER_DIAGNOSTICS_BEGIN
|
|
7
|
+
#include "ruby.h"
|
|
8
|
+
SUPPRESS_RUBY_HEADER_DIAGNOSTICS_END
|
|
9
|
+
|
|
10
|
+
#include "rbs.h"
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Data structures for implementing RBS::Location class in Ruby.
|
|
14
|
+
*
|
|
15
|
+
* These structs support hierarchical locations, allowing sub-locations (children)
|
|
16
|
+
* to be stored under a main location. Each sub-location is identified by its
|
|
17
|
+
* name (Ruby Symbol ID).
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* RBS::Location class
|
|
22
|
+
* */
|
|
23
|
+
extern VALUE RBS_Location;
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Range of character index for `rbs_loc` locations.
|
|
27
|
+
*/
|
|
28
|
+
typedef struct {
|
|
29
|
+
int start;
|
|
30
|
+
int end;
|
|
31
|
+
} rbs_loc_range;
|
|
32
|
+
|
|
33
|
+
typedef struct {
|
|
34
|
+
ID name; /* Ruby ID for the name of the entry */
|
|
35
|
+
rbs_loc_range rg;
|
|
36
|
+
} rbs_loc_entry;
|
|
37
|
+
|
|
38
|
+
typedef unsigned int rbs_loc_entry_bitmap;
|
|
39
|
+
|
|
40
|
+
// The flexible array always allocates, but it's okay.
|
|
41
|
+
// This struct is not allocated when the `rbs_loc` doesn't have children.
|
|
42
|
+
typedef struct {
|
|
43
|
+
unsigned short len;
|
|
44
|
+
unsigned short cap;
|
|
45
|
+
rbs_loc_entry_bitmap required_p;
|
|
46
|
+
rbs_loc_entry entries[1];
|
|
47
|
+
} rbs_loc_children;
|
|
48
|
+
|
|
49
|
+
typedef struct {
|
|
50
|
+
VALUE buffer;
|
|
51
|
+
rbs_loc_range rg;
|
|
52
|
+
rbs_loc_children *children; // NULL when no children is allocated
|
|
53
|
+
} rbs_loc;
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Returns new RBS::Location object, with given buffer and range.
|
|
57
|
+
* */
|
|
58
|
+
VALUE rbs_new_location(VALUE buffer, rbs_range_t rg);
|
|
59
|
+
|
|
60
|
+
VALUE rbs_new_location2(VALUE buffer, int start_char, int end_char);
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Return rbs_loc associated with the RBS::Location object.
|
|
64
|
+
* */
|
|
65
|
+
rbs_loc *rbs_check_location(VALUE location);
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Allocate memory for child locations.
|
|
69
|
+
*
|
|
70
|
+
* Do not call twice for the same location.
|
|
71
|
+
* */
|
|
72
|
+
void rbs_loc_legacy_alloc_children(rbs_loc *loc, unsigned short cap);
|
|
73
|
+
|
|
74
|
+
void rbs_loc_legacy_add_optional_child(rbs_loc *loc, ID name, rbs_loc_range r);
|
|
75
|
+
void rbs_loc_legacy_add_required_child(rbs_loc *loc, ID name, rbs_loc_range r);
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Define RBS::Location class.
|
|
79
|
+
* */
|
|
80
|
+
void rbs__init_location();
|
|
81
|
+
|
|
82
|
+
#endif
|
|
@@ -0,0 +1,613 @@
|
|
|
1
|
+
#include "rbs_extension.h"
|
|
2
|
+
#include "rbs/util/rbs_assert.h"
|
|
3
|
+
#include "rbs/util/rbs_allocator.h"
|
|
4
|
+
#include "rbs/util/rbs_constant_pool.h"
|
|
5
|
+
#include "rbs/serialize.h"
|
|
6
|
+
#include "ast_translation.h"
|
|
7
|
+
#include "legacy_location.h"
|
|
8
|
+
#include "rbs_string_bridging.h"
|
|
9
|
+
|
|
10
|
+
#include "ruby/vm.h"
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Raises `RBS::ParsingError` or `RuntimeError` on `tok` with message constructed with given `fmt`.
|
|
14
|
+
*
|
|
15
|
+
* ```
|
|
16
|
+
* foo.rbs:11:21...11:25: Syntax error: {message}, token=`{tok source}` ({tok type})
|
|
17
|
+
* ```
|
|
18
|
+
* */
|
|
19
|
+
static NORETURN(void) raise_error(rbs_error_t *error, VALUE buffer) {
|
|
20
|
+
RBS_ASSERT(error != NULL, "raise_error() called with NULL error");
|
|
21
|
+
|
|
22
|
+
if (!error->syntax_error) {
|
|
23
|
+
rb_raise(rb_eRuntimeError, "Unexpected error");
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
VALUE location = rbs_new_location(buffer, error->token.range);
|
|
27
|
+
VALUE type = rb_str_new_cstr(rbs_token_type_str(error->token.type));
|
|
28
|
+
|
|
29
|
+
VALUE rb_error = rb_funcall(
|
|
30
|
+
RBS_ParsingError,
|
|
31
|
+
rb_intern("new"),
|
|
32
|
+
3,
|
|
33
|
+
location,
|
|
34
|
+
rb_str_new_cstr(error->message),
|
|
35
|
+
type
|
|
36
|
+
);
|
|
37
|
+
|
|
38
|
+
rb_exc_raise(rb_error);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
void raise_error_if_any(rbs_parser_t *parser, VALUE buffer) {
|
|
42
|
+
if (parser->error != NULL) {
|
|
43
|
+
raise_error(parser->error, buffer);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Inserts the given array of type variables names into the parser's type variable table.
|
|
49
|
+
* @param parser
|
|
50
|
+
* @param variables A Ruby Array of Symbols, or nil.
|
|
51
|
+
*/
|
|
52
|
+
static void declare_type_variables(rbs_parser_t *parser, VALUE variables, VALUE buffer) {
|
|
53
|
+
if (NIL_P(variables)) return; // Nothing to do.
|
|
54
|
+
|
|
55
|
+
if (!RB_TYPE_P(variables, T_ARRAY)) {
|
|
56
|
+
rbs_parser_free(parser);
|
|
57
|
+
rb_raise(rb_eTypeError, "wrong argument type %" PRIsVALUE " (must be an Array of Symbols or nil)", rb_obj_class(variables));
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
rbs_parser_push_typevar_table(parser, true);
|
|
61
|
+
|
|
62
|
+
for (long i = 0; i < rb_array_len(variables); i++) {
|
|
63
|
+
VALUE symbol = rb_ary_entry(variables, i);
|
|
64
|
+
|
|
65
|
+
if (!RB_TYPE_P(symbol, T_SYMBOL)) {
|
|
66
|
+
rbs_parser_free(parser);
|
|
67
|
+
rb_raise(rb_eTypeError, "Type variables Array contains invalid value %" PRIsVALUE " of type %" PRIsVALUE " (must be an Array of Symbols or nil)", rb_inspect(symbol), rb_obj_class(symbol));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
VALUE name_str = rb_sym2str(symbol);
|
|
71
|
+
uint8_t *copied_name = (uint8_t *) malloc((size_t) RSTRING_LEN(name_str));
|
|
72
|
+
memcpy((void *) copied_name, RSTRING_PTR(name_str), RSTRING_LEN(name_str));
|
|
73
|
+
|
|
74
|
+
rbs_constant_id_t id = rbs_constant_pool_insert_owned(
|
|
75
|
+
&parser->constant_pool,
|
|
76
|
+
copied_name,
|
|
77
|
+
RSTRING_LEN(name_str)
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
if (!rbs_parser_insert_typevar(parser, id)) {
|
|
81
|
+
raise_error(parser->error, buffer);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
struct parse_type_arg {
|
|
87
|
+
VALUE buffer;
|
|
88
|
+
rb_encoding *encoding;
|
|
89
|
+
rbs_parser_t *parser;
|
|
90
|
+
VALUE require_eof;
|
|
91
|
+
VALUE void_allowed;
|
|
92
|
+
VALUE self_allowed;
|
|
93
|
+
VALUE classish_allowed;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
struct parse_method_type_arg {
|
|
97
|
+
VALUE buffer;
|
|
98
|
+
rb_encoding *encoding;
|
|
99
|
+
rbs_parser_t *parser;
|
|
100
|
+
VALUE require_eof;
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
struct parse_signature_arg {
|
|
104
|
+
VALUE buffer;
|
|
105
|
+
rb_encoding *encoding;
|
|
106
|
+
rbs_parser_t *parser;
|
|
107
|
+
VALUE require_eof;
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
static VALUE ensure_free_parser(VALUE parser) {
|
|
111
|
+
rbs_parser_free((rbs_parser_t *) parser);
|
|
112
|
+
return Qnil;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
static VALUE parse_type_try(VALUE a) {
|
|
116
|
+
struct parse_type_arg *arg = (struct parse_type_arg *) a;
|
|
117
|
+
rbs_parser_t *parser = arg->parser;
|
|
118
|
+
|
|
119
|
+
if (parser->next_token.type == pEOF) {
|
|
120
|
+
return Qnil;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
bool void_allowed = RTEST(arg->void_allowed);
|
|
124
|
+
bool self_allowed = RTEST(arg->self_allowed);
|
|
125
|
+
bool classish_allowed = RTEST(arg->classish_allowed);
|
|
126
|
+
|
|
127
|
+
rbs_node_t *type;
|
|
128
|
+
rbs_parse_type(parser, &type, void_allowed, self_allowed, classish_allowed);
|
|
129
|
+
|
|
130
|
+
raise_error_if_any(parser, arg->buffer);
|
|
131
|
+
|
|
132
|
+
if (RB_TEST(arg->require_eof)) {
|
|
133
|
+
rbs_parser_advance(parser);
|
|
134
|
+
if (parser->current_token.type != pEOF) {
|
|
135
|
+
rbs_parser_set_error(parser, parser->current_token, true, "expected a token `%s`", rbs_token_type_str(pEOF));
|
|
136
|
+
raise_error(parser->error, arg->buffer);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
rbs_translation_context_t ctx = rbs_translation_context_create(
|
|
141
|
+
&parser->constant_pool,
|
|
142
|
+
arg->buffer,
|
|
143
|
+
arg->encoding
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
return rbs_struct_to_ruby_value(ctx, type);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
static void validate_position_range(int start_pos, int end_pos) {
|
|
150
|
+
if (start_pos < 0 || end_pos < 0) {
|
|
151
|
+
rb_raise(rb_eArgError, "negative position range: %d...%d", start_pos, end_pos);
|
|
152
|
+
}
|
|
153
|
+
if (start_pos > end_pos) {
|
|
154
|
+
rb_raise(rb_eArgError, "invalid position range: %d...%d", start_pos, end_pos);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
static rbs_lexer_t *alloc_lexer_from_buffer(rbs_allocator_t *allocator, VALUE string, rb_encoding *encoding, int start_pos, int end_pos) {
|
|
159
|
+
validate_position_range(start_pos, end_pos);
|
|
160
|
+
|
|
161
|
+
const char *encoding_name = rb_enc_name(encoding);
|
|
162
|
+
|
|
163
|
+
return rbs_lexer_new(
|
|
164
|
+
allocator,
|
|
165
|
+
rbs_string_from_ruby_string(string),
|
|
166
|
+
rbs_encoding_find((const uint8_t *) encoding_name, (const uint8_t *) (encoding_name + strlen(encoding_name))),
|
|
167
|
+
start_pos,
|
|
168
|
+
end_pos
|
|
169
|
+
);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
static rbs_parser_t *alloc_parser_from_buffer(VALUE buffer, int start_pos, int end_pos) {
|
|
173
|
+
validate_position_range(start_pos, end_pos);
|
|
174
|
+
|
|
175
|
+
VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
|
|
176
|
+
StringValue(string);
|
|
177
|
+
|
|
178
|
+
rb_encoding *encoding = rb_enc_get(string);
|
|
179
|
+
const char *encoding_name = rb_enc_name(encoding);
|
|
180
|
+
|
|
181
|
+
return rbs_parser_new(
|
|
182
|
+
rbs_string_from_ruby_string(string),
|
|
183
|
+
rbs_encoding_find((const uint8_t *) encoding_name, (const uint8_t *) (encoding_name + strlen(encoding_name))),
|
|
184
|
+
start_pos,
|
|
185
|
+
end_pos
|
|
186
|
+
);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
static VALUE rbsparser_parse_type(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos, VALUE variables, VALUE require_eof, VALUE void_allowed, VALUE self_allowed, VALUE classish_allowed) {
|
|
190
|
+
VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
|
|
191
|
+
StringValue(string);
|
|
192
|
+
rb_encoding *encoding = rb_enc_get(string);
|
|
193
|
+
|
|
194
|
+
rbs_parser_t *parser = alloc_parser_from_buffer(buffer, FIX2INT(start_pos), FIX2INT(end_pos));
|
|
195
|
+
declare_type_variables(parser, variables, buffer);
|
|
196
|
+
struct parse_type_arg arg = {
|
|
197
|
+
.buffer = buffer,
|
|
198
|
+
.encoding = encoding,
|
|
199
|
+
.parser = parser,
|
|
200
|
+
.require_eof = require_eof,
|
|
201
|
+
.void_allowed = void_allowed,
|
|
202
|
+
.self_allowed = self_allowed,
|
|
203
|
+
.classish_allowed = classish_allowed
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
VALUE result = rb_ensure(parse_type_try, (VALUE) &arg, ensure_free_parser, (VALUE) parser);
|
|
207
|
+
|
|
208
|
+
RB_GC_GUARD(string);
|
|
209
|
+
|
|
210
|
+
return result;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
static VALUE parse_method_type_try(VALUE a) {
|
|
214
|
+
struct parse_method_type_arg *arg = (struct parse_method_type_arg *) a;
|
|
215
|
+
rbs_parser_t *parser = arg->parser;
|
|
216
|
+
|
|
217
|
+
if (parser->next_token.type == pEOF) {
|
|
218
|
+
return Qnil;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
rbs_method_type_t *method_type = NULL;
|
|
222
|
+
rbs_parse_method_type(parser, &method_type, RB_TEST(arg->require_eof), true);
|
|
223
|
+
|
|
224
|
+
raise_error_if_any(parser, arg->buffer);
|
|
225
|
+
|
|
226
|
+
rbs_translation_context_t ctx = rbs_translation_context_create(
|
|
227
|
+
&parser->constant_pool,
|
|
228
|
+
arg->buffer,
|
|
229
|
+
arg->encoding
|
|
230
|
+
);
|
|
231
|
+
|
|
232
|
+
return rbs_struct_to_ruby_value(ctx, (rbs_node_t *) method_type);
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
static VALUE rbsparser_parse_method_type(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos, VALUE variables, VALUE require_eof) {
|
|
236
|
+
VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
|
|
237
|
+
StringValue(string);
|
|
238
|
+
rb_encoding *encoding = rb_enc_get(string);
|
|
239
|
+
|
|
240
|
+
rbs_parser_t *parser = alloc_parser_from_buffer(buffer, FIX2INT(start_pos), FIX2INT(end_pos));
|
|
241
|
+
declare_type_variables(parser, variables, buffer);
|
|
242
|
+
struct parse_method_type_arg arg = {
|
|
243
|
+
.buffer = buffer,
|
|
244
|
+
.encoding = encoding,
|
|
245
|
+
.parser = parser,
|
|
246
|
+
.require_eof = require_eof
|
|
247
|
+
};
|
|
248
|
+
|
|
249
|
+
VALUE result = rb_ensure(parse_method_type_try, (VALUE) &arg, ensure_free_parser, (VALUE) parser);
|
|
250
|
+
|
|
251
|
+
RB_GC_GUARD(string);
|
|
252
|
+
|
|
253
|
+
return result;
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
static VALUE parse_signature_try(VALUE a) {
|
|
257
|
+
struct parse_signature_arg *arg = (struct parse_signature_arg *) a;
|
|
258
|
+
rbs_parser_t *parser = arg->parser;
|
|
259
|
+
|
|
260
|
+
rbs_signature_t *signature = NULL;
|
|
261
|
+
rbs_parse_signature(parser, &signature);
|
|
262
|
+
|
|
263
|
+
raise_error_if_any(parser, arg->buffer);
|
|
264
|
+
|
|
265
|
+
rbs_translation_context_t ctx = rbs_translation_context_create(
|
|
266
|
+
&parser->constant_pool,
|
|
267
|
+
arg->buffer,
|
|
268
|
+
arg->encoding
|
|
269
|
+
);
|
|
270
|
+
|
|
271
|
+
return rbs_struct_to_ruby_value(ctx, (rbs_node_t *) signature);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
static VALUE rbsparser_parse_signature(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos) {
|
|
275
|
+
VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
|
|
276
|
+
StringValue(string);
|
|
277
|
+
rb_encoding *encoding = rb_enc_get(string);
|
|
278
|
+
|
|
279
|
+
rbs_parser_t *parser = alloc_parser_from_buffer(buffer, FIX2INT(start_pos), FIX2INT(end_pos));
|
|
280
|
+
struct parse_signature_arg arg = {
|
|
281
|
+
.buffer = buffer,
|
|
282
|
+
.encoding = encoding,
|
|
283
|
+
.parser = parser,
|
|
284
|
+
.require_eof = false
|
|
285
|
+
};
|
|
286
|
+
|
|
287
|
+
VALUE result = rb_ensure(parse_signature_try, (VALUE) &arg, ensure_free_parser, (VALUE) parser);
|
|
288
|
+
|
|
289
|
+
RB_GC_GUARD(string);
|
|
290
|
+
|
|
291
|
+
return result;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// Serialize a parsed node into a binary Ruby string using the same encoder the
|
|
295
|
+
// WebAssembly build uses. These `_*_to_bytes` entry points exist so the
|
|
296
|
+
// round-trip (parse -> serialize -> deserialize) can be exercised on CRuby,
|
|
297
|
+
// where it can be compared against the direct C -> Ruby translation.
|
|
298
|
+
static VALUE serialized_node_to_string(rbs_parser_t *parser, rbs_node_t *node) {
|
|
299
|
+
rbs_string_t bytes = rbs_serialize_node(parser->allocator, &parser->constant_pool, node);
|
|
300
|
+
return rb_str_new(bytes.start, (long) rbs_string_len(bytes));
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
static VALUE parse_type_to_bytes_try(VALUE a) {
|
|
304
|
+
struct parse_type_arg *arg = (struct parse_type_arg *) a;
|
|
305
|
+
rbs_parser_t *parser = arg->parser;
|
|
306
|
+
|
|
307
|
+
if (parser->next_token.type == pEOF) {
|
|
308
|
+
return Qnil;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
rbs_node_t *type;
|
|
312
|
+
rbs_parse_type(parser, &type, RTEST(arg->void_allowed), RTEST(arg->self_allowed), RTEST(arg->classish_allowed));
|
|
313
|
+
|
|
314
|
+
raise_error_if_any(parser, arg->buffer);
|
|
315
|
+
|
|
316
|
+
if (RB_TEST(arg->require_eof)) {
|
|
317
|
+
rbs_parser_advance(parser);
|
|
318
|
+
if (parser->current_token.type != pEOF) {
|
|
319
|
+
rbs_parser_set_error(parser, parser->current_token, true, "expected a token `%s`", rbs_token_type_str(pEOF));
|
|
320
|
+
raise_error(parser->error, arg->buffer);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
return serialized_node_to_string(parser, type);
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
static VALUE rbsparser_parse_type_to_bytes(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos, VALUE variables, VALUE require_eof, VALUE void_allowed, VALUE self_allowed, VALUE classish_allowed) {
|
|
328
|
+
VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
|
|
329
|
+
StringValue(string);
|
|
330
|
+
rb_encoding *encoding = rb_enc_get(string);
|
|
331
|
+
|
|
332
|
+
rbs_parser_t *parser = alloc_parser_from_buffer(buffer, FIX2INT(start_pos), FIX2INT(end_pos));
|
|
333
|
+
declare_type_variables(parser, variables, buffer);
|
|
334
|
+
struct parse_type_arg arg = {
|
|
335
|
+
.buffer = buffer,
|
|
336
|
+
.encoding = encoding,
|
|
337
|
+
.parser = parser,
|
|
338
|
+
.require_eof = require_eof,
|
|
339
|
+
.void_allowed = void_allowed,
|
|
340
|
+
.self_allowed = self_allowed,
|
|
341
|
+
.classish_allowed = classish_allowed
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
VALUE result = rb_ensure(parse_type_to_bytes_try, (VALUE) &arg, ensure_free_parser, (VALUE) parser);
|
|
345
|
+
|
|
346
|
+
RB_GC_GUARD(string);
|
|
347
|
+
|
|
348
|
+
return result;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
static VALUE parse_method_type_to_bytes_try(VALUE a) {
|
|
352
|
+
struct parse_method_type_arg *arg = (struct parse_method_type_arg *) a;
|
|
353
|
+
rbs_parser_t *parser = arg->parser;
|
|
354
|
+
|
|
355
|
+
if (parser->next_token.type == pEOF) {
|
|
356
|
+
return Qnil;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
rbs_method_type_t *method_type = NULL;
|
|
360
|
+
rbs_parse_method_type(parser, &method_type, RB_TEST(arg->require_eof), true);
|
|
361
|
+
|
|
362
|
+
raise_error_if_any(parser, arg->buffer);
|
|
363
|
+
|
|
364
|
+
return serialized_node_to_string(parser, (rbs_node_t *) method_type);
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
static VALUE rbsparser_parse_method_type_to_bytes(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos, VALUE variables, VALUE require_eof) {
|
|
368
|
+
VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
|
|
369
|
+
StringValue(string);
|
|
370
|
+
rb_encoding *encoding = rb_enc_get(string);
|
|
371
|
+
|
|
372
|
+
rbs_parser_t *parser = alloc_parser_from_buffer(buffer, FIX2INT(start_pos), FIX2INT(end_pos));
|
|
373
|
+
declare_type_variables(parser, variables, buffer);
|
|
374
|
+
struct parse_method_type_arg arg = {
|
|
375
|
+
.buffer = buffer,
|
|
376
|
+
.encoding = encoding,
|
|
377
|
+
.parser = parser,
|
|
378
|
+
.require_eof = require_eof
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
VALUE result = rb_ensure(parse_method_type_to_bytes_try, (VALUE) &arg, ensure_free_parser, (VALUE) parser);
|
|
382
|
+
|
|
383
|
+
RB_GC_GUARD(string);
|
|
384
|
+
|
|
385
|
+
return result;
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
static VALUE parse_signature_to_bytes_try(VALUE a) {
|
|
389
|
+
struct parse_signature_arg *arg = (struct parse_signature_arg *) a;
|
|
390
|
+
rbs_parser_t *parser = arg->parser;
|
|
391
|
+
|
|
392
|
+
rbs_signature_t *signature = NULL;
|
|
393
|
+
rbs_parse_signature(parser, &signature);
|
|
394
|
+
|
|
395
|
+
raise_error_if_any(parser, arg->buffer);
|
|
396
|
+
|
|
397
|
+
return serialized_node_to_string(parser, (rbs_node_t *) signature);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
static VALUE rbsparser_parse_signature_to_bytes(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos) {
|
|
401
|
+
VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
|
|
402
|
+
StringValue(string);
|
|
403
|
+
rb_encoding *encoding = rb_enc_get(string);
|
|
404
|
+
|
|
405
|
+
rbs_parser_t *parser = alloc_parser_from_buffer(buffer, FIX2INT(start_pos), FIX2INT(end_pos));
|
|
406
|
+
struct parse_signature_arg arg = {
|
|
407
|
+
.buffer = buffer,
|
|
408
|
+
.encoding = encoding,
|
|
409
|
+
.parser = parser,
|
|
410
|
+
.require_eof = false
|
|
411
|
+
};
|
|
412
|
+
|
|
413
|
+
VALUE result = rb_ensure(parse_signature_to_bytes_try, (VALUE) &arg, ensure_free_parser, (VALUE) parser);
|
|
414
|
+
|
|
415
|
+
RB_GC_GUARD(string);
|
|
416
|
+
|
|
417
|
+
return result;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
struct parse_type_params_arg {
|
|
421
|
+
VALUE buffer;
|
|
422
|
+
rb_encoding *encoding;
|
|
423
|
+
rbs_parser_t *parser;
|
|
424
|
+
VALUE module_type_params;
|
|
425
|
+
};
|
|
426
|
+
|
|
427
|
+
static VALUE parse_type_params_try(VALUE a) {
|
|
428
|
+
struct parse_type_params_arg *arg = (struct parse_type_params_arg *) a;
|
|
429
|
+
rbs_parser_t *parser = arg->parser;
|
|
430
|
+
|
|
431
|
+
if (parser->next_token.type == pEOF) {
|
|
432
|
+
return Qnil;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
rbs_node_list_t *params = NULL;
|
|
436
|
+
rbs_parse_type_params(parser, arg->module_type_params, ¶ms);
|
|
437
|
+
|
|
438
|
+
raise_error_if_any(parser, arg->buffer);
|
|
439
|
+
|
|
440
|
+
rbs_translation_context_t ctx = rbs_translation_context_create(
|
|
441
|
+
&parser->constant_pool,
|
|
442
|
+
arg->buffer,
|
|
443
|
+
arg->encoding
|
|
444
|
+
);
|
|
445
|
+
|
|
446
|
+
return rbs_node_list_to_ruby_array(ctx, params);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
static VALUE rbsparser_parse_type_params(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos, VALUE module_type_params) {
|
|
450
|
+
VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
|
|
451
|
+
StringValue(string);
|
|
452
|
+
rb_encoding *encoding = rb_enc_get(string);
|
|
453
|
+
|
|
454
|
+
rbs_parser_t *parser = alloc_parser_from_buffer(buffer, FIX2INT(start_pos), FIX2INT(end_pos));
|
|
455
|
+
struct parse_type_params_arg arg = {
|
|
456
|
+
.buffer = buffer,
|
|
457
|
+
.encoding = encoding,
|
|
458
|
+
.parser = parser,
|
|
459
|
+
.module_type_params = module_type_params
|
|
460
|
+
};
|
|
461
|
+
|
|
462
|
+
VALUE result = rb_ensure(parse_type_params_try, (VALUE) &arg, ensure_free_parser, (VALUE) parser);
|
|
463
|
+
|
|
464
|
+
RB_GC_GUARD(string);
|
|
465
|
+
|
|
466
|
+
return result;
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
static VALUE parse_inline_leading_annotation_try(VALUE a) {
|
|
470
|
+
struct parse_type_arg *arg = (struct parse_type_arg *) a;
|
|
471
|
+
rbs_parser_t *parser = arg->parser;
|
|
472
|
+
|
|
473
|
+
rbs_ast_ruby_annotations_t *annotation = NULL;
|
|
474
|
+
bool success = rbs_parse_inline_leading_annotation(parser, &annotation);
|
|
475
|
+
|
|
476
|
+
raise_error_if_any(parser, arg->buffer);
|
|
477
|
+
|
|
478
|
+
if (!success || annotation == NULL) {
|
|
479
|
+
return Qnil;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
rbs_translation_context_t ctx = rbs_translation_context_create(
|
|
483
|
+
&parser->constant_pool,
|
|
484
|
+
arg->buffer,
|
|
485
|
+
arg->encoding
|
|
486
|
+
);
|
|
487
|
+
|
|
488
|
+
return rbs_struct_to_ruby_value(ctx, (rbs_node_t *) annotation);
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
static VALUE rbsparser_parse_inline_leading_annotation(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos, VALUE variables) {
|
|
492
|
+
VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
|
|
493
|
+
StringValue(string);
|
|
494
|
+
rb_encoding *encoding = rb_enc_get(string);
|
|
495
|
+
|
|
496
|
+
rbs_parser_t *parser = alloc_parser_from_buffer(buffer, FIX2INT(start_pos), FIX2INT(end_pos));
|
|
497
|
+
declare_type_variables(parser, variables, buffer);
|
|
498
|
+
struct parse_type_arg arg = {
|
|
499
|
+
.buffer = buffer,
|
|
500
|
+
.encoding = encoding,
|
|
501
|
+
.parser = parser,
|
|
502
|
+
.require_eof = Qfalse
|
|
503
|
+
};
|
|
504
|
+
|
|
505
|
+
VALUE result = rb_ensure(parse_inline_leading_annotation_try, (VALUE) &arg, ensure_free_parser, (VALUE) parser);
|
|
506
|
+
|
|
507
|
+
RB_GC_GUARD(string);
|
|
508
|
+
|
|
509
|
+
return result;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
static VALUE parse_inline_trailing_annotation_try(VALUE a) {
|
|
513
|
+
struct parse_type_arg *arg = (struct parse_type_arg *) a;
|
|
514
|
+
rbs_parser_t *parser = arg->parser;
|
|
515
|
+
|
|
516
|
+
rbs_ast_ruby_annotations_t *annotation = NULL;
|
|
517
|
+
bool success = rbs_parse_inline_trailing_annotation(parser, &annotation);
|
|
518
|
+
|
|
519
|
+
raise_error_if_any(parser, arg->buffer);
|
|
520
|
+
|
|
521
|
+
if (!success || annotation == NULL) {
|
|
522
|
+
return Qnil;
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
rbs_translation_context_t ctx = rbs_translation_context_create(
|
|
526
|
+
&parser->constant_pool,
|
|
527
|
+
arg->buffer,
|
|
528
|
+
arg->encoding
|
|
529
|
+
);
|
|
530
|
+
|
|
531
|
+
return rbs_struct_to_ruby_value(ctx, (rbs_node_t *) annotation);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
static VALUE rbsparser_parse_inline_trailing_annotation(VALUE self, VALUE buffer, VALUE start_pos, VALUE end_pos, VALUE variables) {
|
|
535
|
+
VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
|
|
536
|
+
StringValue(string);
|
|
537
|
+
rb_encoding *encoding = rb_enc_get(string);
|
|
538
|
+
|
|
539
|
+
rbs_parser_t *parser = alloc_parser_from_buffer(buffer, FIX2INT(start_pos), FIX2INT(end_pos));
|
|
540
|
+
declare_type_variables(parser, variables, buffer);
|
|
541
|
+
struct parse_type_arg arg = {
|
|
542
|
+
.buffer = buffer,
|
|
543
|
+
.encoding = encoding,
|
|
544
|
+
.parser = parser,
|
|
545
|
+
.require_eof = Qfalse
|
|
546
|
+
};
|
|
547
|
+
|
|
548
|
+
VALUE result = rb_ensure(parse_inline_trailing_annotation_try, (VALUE) &arg, ensure_free_parser, (VALUE) parser);
|
|
549
|
+
|
|
550
|
+
RB_GC_GUARD(string);
|
|
551
|
+
|
|
552
|
+
return result;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
static VALUE rbsparser_lex(VALUE self, VALUE buffer, VALUE end_pos) {
|
|
556
|
+
VALUE string = rb_funcall(buffer, rb_intern("content"), 0);
|
|
557
|
+
StringValue(string);
|
|
558
|
+
rb_encoding *encoding = rb_enc_get(string);
|
|
559
|
+
|
|
560
|
+
rbs_allocator_t *allocator = rbs_allocator_init();
|
|
561
|
+
rbs_lexer_t *lexer = alloc_lexer_from_buffer(allocator, string, encoding, 0, FIX2INT(end_pos));
|
|
562
|
+
|
|
563
|
+
VALUE results = rb_ary_new();
|
|
564
|
+
rbs_token_t token = NullToken;
|
|
565
|
+
while (token.type != pEOF) {
|
|
566
|
+
token = rbs_lexer_next_token(lexer);
|
|
567
|
+
VALUE type = ID2SYM(rb_intern(rbs_token_type_str(token.type)));
|
|
568
|
+
VALUE location = rbs_new_location(buffer, token.range);
|
|
569
|
+
VALUE pair = rb_ary_new3(2, type, location);
|
|
570
|
+
rb_ary_push(results, pair);
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
rbs_allocator_free(allocator);
|
|
574
|
+
RB_GC_GUARD(string);
|
|
575
|
+
|
|
576
|
+
return results;
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
void rbs__init_parser(void) {
|
|
580
|
+
RBS_Parser = rb_define_class_under(RBS, "Parser", rb_cObject);
|
|
581
|
+
rb_gc_register_mark_object(RBS_Parser);
|
|
582
|
+
|
|
583
|
+
EMPTY_ARRAY = rb_obj_freeze(rb_ary_new());
|
|
584
|
+
rb_gc_register_mark_object(EMPTY_ARRAY);
|
|
585
|
+
|
|
586
|
+
EMPTY_HASH = rb_obj_freeze(rb_hash_new());
|
|
587
|
+
rb_gc_register_mark_object(EMPTY_HASH);
|
|
588
|
+
|
|
589
|
+
rb_define_singleton_method(RBS_Parser, "_parse_type", rbsparser_parse_type, 8);
|
|
590
|
+
rb_define_singleton_method(RBS_Parser, "_parse_method_type", rbsparser_parse_method_type, 5);
|
|
591
|
+
rb_define_singleton_method(RBS_Parser, "_parse_signature", rbsparser_parse_signature, 3);
|
|
592
|
+
rb_define_singleton_method(RBS_Parser, "_parse_type_to_bytes", rbsparser_parse_type_to_bytes, 8);
|
|
593
|
+
rb_define_singleton_method(RBS_Parser, "_parse_method_type_to_bytes", rbsparser_parse_method_type_to_bytes, 5);
|
|
594
|
+
rb_define_singleton_method(RBS_Parser, "_parse_signature_to_bytes", rbsparser_parse_signature_to_bytes, 3);
|
|
595
|
+
rb_define_singleton_method(RBS_Parser, "_parse_type_params", rbsparser_parse_type_params, 4);
|
|
596
|
+
rb_define_singleton_method(RBS_Parser, "_parse_inline_leading_annotation", rbsparser_parse_inline_leading_annotation, 4);
|
|
597
|
+
rb_define_singleton_method(RBS_Parser, "_parse_inline_trailing_annotation", rbsparser_parse_inline_trailing_annotation, 4);
|
|
598
|
+
rb_define_singleton_method(RBS_Parser, "_lex", rbsparser_lex, 2);
|
|
599
|
+
}
|
|
600
|
+
|
|
601
|
+
static void Deinit_rbs_extension(ruby_vm_t *_) {
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
void Init_rbs_extension(void) {
|
|
605
|
+
#ifdef HAVE_RB_EXT_RACTOR_SAFE
|
|
606
|
+
rb_ext_ractor_safe(true);
|
|
607
|
+
#endif
|
|
608
|
+
rbs__init_constants();
|
|
609
|
+
rbs__init_location();
|
|
610
|
+
rbs__init_parser();
|
|
611
|
+
|
|
612
|
+
ruby_vm_at_exit(Deinit_rbs_extension);
|
|
613
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#include <stdbool.h>
|
|
2
|
+
#include "compat.h"
|
|
3
|
+
|
|
4
|
+
SUPPRESS_RUBY_HEADER_DIAGNOSTICS_BEGIN
|
|
5
|
+
#include "ruby.h"
|
|
6
|
+
#include "ruby/re.h"
|
|
7
|
+
#include "ruby/encoding.h"
|
|
8
|
+
SUPPRESS_RUBY_HEADER_DIAGNOSTICS_END
|
|
9
|
+
|
|
10
|
+
#include "class_constants.h"
|
|
11
|
+
#include "rbs.h"
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* RBS::Parser class
|
|
15
|
+
* */
|
|
16
|
+
extern VALUE RBS_Parser;
|