rbs-relaxed 3.9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/dependabot.yml +22 -0
- data/.github/workflows/comments.yml +35 -0
- data/.github/workflows/dependabot.yml +30 -0
- data/.github/workflows/ruby.yml +82 -0
- data/.github/workflows/typecheck.yml +38 -0
- data/.github/workflows/windows.yml +43 -0
- data/.gitignore +23 -0
- data/.rubocop.yml +68 -0
- data/BSDL +22 -0
- data/CHANGELOG.md +1868 -0
- data/COPYING +56 -0
- data/README.md +203 -0
- data/Rakefile +417 -0
- data/Steepfile +44 -0
- data/config.yml +313 -0
- data/core/array.rbs +4062 -0
- data/core/basic_object.rbs +375 -0
- data/core/binding.rbs +150 -0
- data/core/builtin.rbs +277 -0
- data/core/class.rbs +220 -0
- data/core/comparable.rbs +171 -0
- data/core/complex.rbs +786 -0
- data/core/constants.rbs +96 -0
- data/core/data.rbs +415 -0
- data/core/dir.rbs +981 -0
- data/core/encoding.rbs +1371 -0
- data/core/enumerable.rbs +2405 -0
- data/core/enumerator/product.rbs +92 -0
- data/core/enumerator.rbs +630 -0
- data/core/env.rbs +6 -0
- data/core/errno.rbs +673 -0
- data/core/errors.rbs +760 -0
- data/core/exception.rbs +485 -0
- data/core/false_class.rbs +82 -0
- data/core/fiber.rbs +550 -0
- data/core/fiber_error.rbs +11 -0
- data/core/file.rbs +2936 -0
- data/core/file_test.rbs +331 -0
- data/core/float.rbs +1151 -0
- data/core/gc.rbs +644 -0
- data/core/global_variables.rbs +184 -0
- data/core/hash.rbs +1861 -0
- data/core/integer.rbs +1413 -0
- data/core/io/buffer.rbs +984 -0
- data/core/io/wait.rbs +70 -0
- data/core/io.rbs +3406 -0
- data/core/kernel.rbs +3096 -0
- data/core/marshal.rbs +207 -0
- data/core/match_data.rbs +635 -0
- data/core/math.rbs +729 -0
- data/core/method.rbs +386 -0
- data/core/module.rbs +1704 -0
- data/core/nil_class.rbs +209 -0
- data/core/numeric.rbs +818 -0
- data/core/object.rbs +110 -0
- data/core/object_space/weak_key_map.rbs +166 -0
- data/core/object_space.rbs +190 -0
- data/core/proc.rbs +868 -0
- data/core/process.rbs +2296 -0
- data/core/ractor.rbs +1068 -0
- data/core/random.rbs +237 -0
- data/core/range.rbs +1107 -0
- data/core/rational.rbs +531 -0
- data/core/rb_config.rbs +88 -0
- data/core/rbs/unnamed/argf.rbs +1229 -0
- data/core/rbs/unnamed/env_class.rbs +1209 -0
- data/core/rbs/unnamed/random.rbs +293 -0
- data/core/refinement.rbs +59 -0
- data/core/regexp.rbs +1930 -0
- data/core/ruby_vm.rbs +765 -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 +176 -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 +1171 -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 +294 -0
- data/core/set.rbs +621 -0
- data/core/signal.rbs +100 -0
- data/core/string.rbs +3583 -0
- data/core/struct.rbs +667 -0
- data/core/symbol.rbs +475 -0
- data/core/thread.rbs +1765 -0
- data/core/thread_group.rbs +79 -0
- data/core/time.rbs +1762 -0
- data/core/trace_point.rbs +477 -0
- data/core/true_class.rbs +98 -0
- data/core/unbound_method.rbs +329 -0
- data/core/warning.rbs +87 -0
- data/docs/CONTRIBUTING.md +106 -0
- data/docs/architecture.md +110 -0
- data/docs/collection.md +192 -0
- data/docs/data_and_struct.md +86 -0
- data/docs/gem.md +57 -0
- data/docs/rbs_by_example.md +309 -0
- data/docs/repo.md +125 -0
- data/docs/sigs.md +167 -0
- data/docs/stdlib.md +147 -0
- data/docs/syntax.md +910 -0
- data/docs/tools.md +17 -0
- data/exe/rbs +7 -0
- data/ext/rbs_extension/extconf.rb +15 -0
- data/ext/rbs_extension/lexer.c +2728 -0
- data/ext/rbs_extension/lexer.h +179 -0
- data/ext/rbs_extension/lexer.re +147 -0
- data/ext/rbs_extension/lexstate.c +175 -0
- data/ext/rbs_extension/location.c +325 -0
- data/ext/rbs_extension/location.h +85 -0
- data/ext/rbs_extension/main.c +33 -0
- data/ext/rbs_extension/parser.c +2973 -0
- data/ext/rbs_extension/parser.h +18 -0
- data/ext/rbs_extension/parserstate.c +397 -0
- data/ext/rbs_extension/parserstate.h +163 -0
- data/ext/rbs_extension/rbs_extension.h +31 -0
- data/ext/rbs_extension/unescape.c +32 -0
- data/goodcheck.yml +91 -0
- data/include/rbs/constants.h +82 -0
- data/include/rbs/ruby_objs.h +72 -0
- data/include/rbs/util/rbs_constant_pool.h +219 -0
- data/include/rbs.h +7 -0
- data/lib/rbs/ancestor_graph.rb +92 -0
- data/lib/rbs/annotate/annotations.rb +199 -0
- data/lib/rbs/annotate/formatter.rb +92 -0
- data/lib/rbs/annotate/rdoc_annotator.rb +400 -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 +467 -0
- data/lib/rbs/ast/directives.rb +49 -0
- data/lib/rbs/ast/members.rb +451 -0
- data/lib/rbs/ast/type_param.rb +225 -0
- data/lib/rbs/ast/visitor.rb +137 -0
- data/lib/rbs/buffer.rb +67 -0
- data/lib/rbs/builtin_names.rb +58 -0
- data/lib/rbs/cli/colored_io.rb +48 -0
- data/lib/rbs/cli/diff.rb +83 -0
- data/lib/rbs/cli/validate.rb +357 -0
- data/lib/rbs/cli.rb +1223 -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 +218 -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 +258 -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 +401 -0
- data/lib/rbs/definition_builder/ancestor_builder.rb +620 -0
- data/lib/rbs/definition_builder/method_builder.rb +254 -0
- data/lib/rbs/definition_builder.rb +845 -0
- data/lib/rbs/diff.rb +125 -0
- data/lib/rbs/environment/use_map.rb +77 -0
- data/lib/rbs/environment.rb +829 -0
- data/lib/rbs/environment_loader.rb +173 -0
- data/lib/rbs/environment_walker.rb +155 -0
- data/lib/rbs/errors.rb +645 -0
- data/lib/rbs/factory.rb +18 -0
- data/lib/rbs/file_finder.rb +28 -0
- data/lib/rbs/location_aux.rb +138 -0
- data/lib/rbs/locator.rb +243 -0
- data/lib/rbs/method_type.rb +143 -0
- data/lib/rbs/namespace.rb +125 -0
- data/lib/rbs/parser/lex_result.rb +15 -0
- data/lib/rbs/parser/token.rb +23 -0
- data/lib/rbs/parser_aux.rb +114 -0
- data/lib/rbs/prototype/helpers.rb +140 -0
- data/lib/rbs/prototype/node_usage.rb +99 -0
- data/lib/rbs/prototype/rb.rb +840 -0
- data/lib/rbs/prototype/rbi.rb +641 -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 +667 -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 +91 -0
- data/lib/rbs/sorter.rb +198 -0
- data/lib/rbs/substitution.rb +83 -0
- data/lib/rbs/subtractor.rb +201 -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 +435 -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 +109 -0
- data/lib/rbs/types.rb +1596 -0
- data/lib/rbs/unit_test/convertibles.rb +176 -0
- data/lib/rbs/unit_test/spy.rb +138 -0
- data/lib/rbs/unit_test/type_assertions.rb +347 -0
- data/lib/rbs/unit_test/with_aliases.rb +143 -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/writer.rb +424 -0
- data/lib/rbs.rb +94 -0
- data/lib/rdoc/discover.rb +20 -0
- data/lib/rdoc_plugin/parser.rb +163 -0
- data/rbs-relaxed.gemspec +48 -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 +36 -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 +82 -0
- data/sig/annotate/rdoc_source.rbs +30 -0
- data/sig/annotation.rbs +27 -0
- data/sig/buffer.rbs +32 -0
- data/sig/builtin_names.rbs +44 -0
- data/sig/cli/colored_io.rbs +15 -0
- data/sig/cli/diff.rbs +21 -0
- data/sig/cli/validate.rbs +43 -0
- data/sig/cli.rbs +87 -0
- data/sig/collection/cleaner.rbs +13 -0
- data/sig/collection/config/lockfile.rbs +74 -0
- data/sig/collection/config/lockfile_generator.rbs +66 -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 +267 -0
- data/sig/definition.rbs +173 -0
- data/sig/definition_builder.rbs +165 -0
- data/sig/diff.rbs +28 -0
- data/sig/directives.rbs +77 -0
- data/sig/environment.rbs +279 -0
- data/sig/environment_loader.rbs +111 -0
- data/sig/environment_walker.rbs +65 -0
- data/sig/errors.rbs +405 -0
- data/sig/factory.rbs +5 -0
- data/sig/file_finder.rbs +28 -0
- data/sig/location.rbs +110 -0
- data/sig/locator.rbs +58 -0
- data/sig/manifest.yaml +7 -0
- data/sig/members.rbs +258 -0
- data/sig/method_builder.rbs +84 -0
- data/sig/method_types.rbs +58 -0
- data/sig/namespace.rbs +146 -0
- data/sig/parser.rbs +100 -0
- data/sig/prototype/helpers.rbs +27 -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 +35 -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/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 +110 -0
- data/sig/typename.rbs +79 -0
- data/sig/types.rbs +579 -0
- data/sig/unit_test/convertibles.rbs +154 -0
- data/sig/unit_test/spy.rbs +30 -0
- data/sig/unit_test/type_assertions.rbs +196 -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/writer.rbs +127 -0
- data/src/constants.c +153 -0
- data/src/ruby_objs.c +795 -0
- data/src/util/rbs_constant_pool.c +342 -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 +1629 -0
- data/stdlib/bigdecimal-math/0/big_math.rbs +119 -0
- data/stdlib/bigdecimal-math/0/manifest.yaml +2 -0
- data/stdlib/cgi/0/core.rbs +1285 -0
- data/stdlib/cgi/0/manifest.yaml +3 -0
- data/stdlib/coverage/0/coverage.rbs +263 -0
- data/stdlib/csv/0/csv.rbs +3776 -0
- data/stdlib/csv/0/manifest.yaml +3 -0
- data/stdlib/date/0/date.rbs +1585 -0
- data/stdlib/date/0/date_time.rbs +616 -0
- data/stdlib/date/0/time.rbs +26 -0
- data/stdlib/dbm/0/dbm.rbs +421 -0
- data/stdlib/delegate/0/delegator.rbs +184 -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 +343 -0
- data/stdlib/digest/0/digest.rbs +577 -0
- data/stdlib/erb/0/erb.rbs +532 -0
- data/stdlib/etc/0/etc.rbs +865 -0
- data/stdlib/fileutils/0/fileutils.rbs +1734 -0
- data/stdlib/find/0/find.rbs +49 -0
- data/stdlib/forwardable/0/forwardable.rbs +268 -0
- data/stdlib/io-console/0/io-console.rbs +414 -0
- data/stdlib/ipaddr/0/ipaddr.rbs +428 -0
- data/stdlib/json/0/json.rbs +1916 -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 +5552 -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 +487 -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 +393 -0
- data/stdlib/open3/0/open3.rbs +147 -0
- data/stdlib/openssl/0/manifest.yaml +3 -0
- data/stdlib/openssl/0/openssl.rbs +12113 -0
- data/stdlib/optparse/0/optparse.rbs +1725 -0
- data/stdlib/pathname/0/pathname.rbs +1406 -0
- data/stdlib/pp/0/manifest.yaml +2 -0
- data/stdlib/pp/0/pp.rbs +300 -0
- data/stdlib/prettyprint/0/prettyprint.rbs +383 -0
- data/stdlib/pstore/0/pstore.rbs +603 -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 +402 -0
- data/stdlib/psych/0/store.rbs +59 -0
- data/stdlib/pty/0/pty.rbs +237 -0
- data/stdlib/rdoc/0/code_object.rbs +51 -0
- data/stdlib/rdoc/0/comment.rbs +59 -0
- data/stdlib/rdoc/0/context.rbs +153 -0
- data/stdlib/rdoc/0/markup.rbs +117 -0
- data/stdlib/rdoc/0/parser.rbs +56 -0
- data/stdlib/rdoc/0/rdoc.rbs +391 -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 +1830 -0
- data/stdlib/ripper/0/ripper.rbs +1648 -0
- data/stdlib/securerandom/0/securerandom.rbs +62 -0
- data/stdlib/shellwords/0/shellwords.rbs +229 -0
- data/stdlib/singleton/0/singleton.rbs +131 -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 +92 -0
- data/stdlib/socket/0/socket.rbs +4157 -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 +79 -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 +567 -0
- data/stdlib/strscan/0/string_scanner.rbs +1627 -0
- data/stdlib/tempfile/0/tempfile.rbs +479 -0
- data/stdlib/time/0/time.rbs +432 -0
- data/stdlib/timeout/0/timeout.rbs +81 -0
- data/stdlib/tmpdir/0/tmpdir.rbs +69 -0
- data/stdlib/tsort/0/cyclic.rbs +5 -0
- data/stdlib/tsort/0/interfaces.rbs +20 -0
- data/stdlib/tsort/0/tsort.rbs +409 -0
- data/stdlib/uri/0/common.rbs +582 -0
- data/stdlib/uri/0/file.rbs +118 -0
- data/stdlib/uri/0/ftp.rbs +13 -0
- data/stdlib/uri/0/generic.rbs +1108 -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 +210 -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 +166 -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 +200 -0
- metadata +532 -0
data/core/ruby_vm.rbs
ADDED
@@ -0,0 +1,765 @@
|
|
1
|
+
# <!-- rdoc-file=vm.c -->
|
2
|
+
# The RubyVM module only exists on MRI. `RubyVM` is not defined in other Ruby
|
3
|
+
# implementations such as JRuby and TruffleRuby.
|
4
|
+
#
|
5
|
+
# The RubyVM module provides some access to MRI internals. This module is for
|
6
|
+
# very limited purposes, such as debugging, prototyping, and research. Normal
|
7
|
+
# users must not use it. This module is not portable between Ruby
|
8
|
+
# implementations.
|
9
|
+
#
|
10
|
+
class RubyVM < Object
|
11
|
+
end
|
12
|
+
|
13
|
+
# <!-- rdoc-file=vm.c -->
|
14
|
+
# ::RubyVM::DEFAULT_PARAMS This constant exposes the VM's default parameters.
|
15
|
+
# Note that changing these values does not affect VM execution. Specification is
|
16
|
+
# not stable and you should not depend on this value. Of course, this constant
|
17
|
+
# is MRI specific.
|
18
|
+
#
|
19
|
+
RubyVM::DEFAULT_PARAMS: Hash[Symbol, Integer]
|
20
|
+
|
21
|
+
# <!-- rdoc-file=vm.c -->
|
22
|
+
# ::RubyVM::INSTRUCTION_NAMES A list of bytecode instruction names in MRI. This
|
23
|
+
# constant is MRI specific.
|
24
|
+
#
|
25
|
+
RubyVM::INSTRUCTION_NAMES: Array[String]
|
26
|
+
|
27
|
+
# <!-- rdoc-file=vm.c -->
|
28
|
+
# ::RubyVM::OPTS An Array of VM build options. This constant is MRI specific.
|
29
|
+
#
|
30
|
+
RubyVM::OPTS: Array[String]
|
31
|
+
|
32
|
+
# <!-- rdoc-file=iseq.c -->
|
33
|
+
# The InstructionSequence class represents a compiled sequence of instructions
|
34
|
+
# for the Virtual Machine used in MRI. Not all implementations of Ruby may
|
35
|
+
# implement this class, and for the implementations that implement it, the
|
36
|
+
# methods defined and behavior of the methods can change in any version.
|
37
|
+
#
|
38
|
+
# With it, you can get a handle to the instructions that make up a method or a
|
39
|
+
# proc, compile strings of Ruby code down to VM instructions, and disassemble
|
40
|
+
# instruction sequences to strings for easy inspection. It is mostly useful if
|
41
|
+
# you want to learn how YARV works, but it also lets you control various
|
42
|
+
# settings for the Ruby iseq compiler.
|
43
|
+
#
|
44
|
+
# You can find the source for the VM instructions in `insns.def` in the Ruby
|
45
|
+
# source.
|
46
|
+
#
|
47
|
+
# The instruction sequence results will almost certainly change as Ruby changes,
|
48
|
+
# so example output in this documentation may be different from what you see.
|
49
|
+
#
|
50
|
+
# Of course, this class is MRI specific.
|
51
|
+
#
|
52
|
+
class RubyVM::InstructionSequence < Object
|
53
|
+
# <!--
|
54
|
+
# rdoc-file=iseq.c
|
55
|
+
# - absolute_path()
|
56
|
+
# -->
|
57
|
+
# Returns the absolute path of this instruction sequence.
|
58
|
+
#
|
59
|
+
# `nil` if the iseq was evaluated from a string.
|
60
|
+
#
|
61
|
+
# For example, using ::compile_file:
|
62
|
+
#
|
63
|
+
# # /tmp/method.rb
|
64
|
+
# def hello
|
65
|
+
# puts "hello, world"
|
66
|
+
# end
|
67
|
+
#
|
68
|
+
# # in irb
|
69
|
+
# > iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
|
70
|
+
# > iseq.absolute_path #=> /tmp/method.rb
|
71
|
+
#
|
72
|
+
def absolute_path: () -> String?
|
73
|
+
|
74
|
+
# <!--
|
75
|
+
# rdoc-file=iseq.c
|
76
|
+
# - base_label()
|
77
|
+
# -->
|
78
|
+
# Returns the base label of this instruction sequence.
|
79
|
+
#
|
80
|
+
# For example, using irb:
|
81
|
+
#
|
82
|
+
# iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
|
83
|
+
# #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
|
84
|
+
# iseq.base_label
|
85
|
+
# #=> "<compiled>"
|
86
|
+
#
|
87
|
+
# Using ::compile_file:
|
88
|
+
#
|
89
|
+
# # /tmp/method.rb
|
90
|
+
# def hello
|
91
|
+
# puts "hello, world"
|
92
|
+
# end
|
93
|
+
#
|
94
|
+
# # in irb
|
95
|
+
# > iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
|
96
|
+
# > iseq.base_label #=> <main>
|
97
|
+
#
|
98
|
+
def base_label: () -> String
|
99
|
+
|
100
|
+
# <!--
|
101
|
+
# rdoc-file=iseq.c
|
102
|
+
# - iseq.disasm -> str
|
103
|
+
# - iseq.disassemble -> str
|
104
|
+
# -->
|
105
|
+
# Returns the instruction sequence as a `String` in human readable form.
|
106
|
+
#
|
107
|
+
# puts RubyVM::InstructionSequence.compile('1 + 2').disasm
|
108
|
+
#
|
109
|
+
# Produces:
|
110
|
+
#
|
111
|
+
# == disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>==========
|
112
|
+
# 0000 trace 1 ( 1)
|
113
|
+
# 0002 putobject 1
|
114
|
+
# 0004 putobject 2
|
115
|
+
# 0006 opt_plus <ic:1>
|
116
|
+
# 0008 leave
|
117
|
+
#
|
118
|
+
def disasm: () -> String
|
119
|
+
|
120
|
+
# <!-- rdoc-file=iseq.c -->
|
121
|
+
# Returns the instruction sequence as a `String` in human readable form.
|
122
|
+
#
|
123
|
+
# puts RubyVM::InstructionSequence.compile('1 + 2').disasm
|
124
|
+
#
|
125
|
+
# Produces:
|
126
|
+
#
|
127
|
+
# == disasm: <RubyVM::InstructionSequence:<compiled>@<compiled>>==========
|
128
|
+
# 0000 trace 1 ( 1)
|
129
|
+
# 0002 putobject 1
|
130
|
+
# 0004 putobject 2
|
131
|
+
# 0006 opt_plus <ic:1>
|
132
|
+
# 0008 leave
|
133
|
+
#
|
134
|
+
def disassemble: () -> String
|
135
|
+
|
136
|
+
# <!--
|
137
|
+
# rdoc-file=iseq.c
|
138
|
+
# - iseq.each_child{|child_iseq| ...} -> iseq
|
139
|
+
# -->
|
140
|
+
# Iterate all direct child instruction sequences. Iteration order is
|
141
|
+
# implementation/version defined so that people should not rely on the order.
|
142
|
+
#
|
143
|
+
def each_child: () -> RubyVM::InstructionSequence
|
144
|
+
|
145
|
+
# <!--
|
146
|
+
# rdoc-file=iseq.c
|
147
|
+
# - iseq.eval -> obj
|
148
|
+
# -->
|
149
|
+
# Evaluates the instruction sequence and returns the result.
|
150
|
+
#
|
151
|
+
# RubyVM::InstructionSequence.compile("1 + 2").eval #=> 3
|
152
|
+
#
|
153
|
+
def eval: () -> untyped
|
154
|
+
|
155
|
+
# <!--
|
156
|
+
# rdoc-file=iseq.c
|
157
|
+
# - first_lineno()
|
158
|
+
# -->
|
159
|
+
# Returns the number of the first source line where the instruction sequence was
|
160
|
+
# loaded from.
|
161
|
+
#
|
162
|
+
# For example, using irb:
|
163
|
+
#
|
164
|
+
# iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
|
165
|
+
# #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
|
166
|
+
# iseq.first_lineno
|
167
|
+
# #=> 1
|
168
|
+
#
|
169
|
+
def first_lineno: () -> Integer
|
170
|
+
|
171
|
+
# <!--
|
172
|
+
# rdoc-file=iseq.c
|
173
|
+
# - inspect()
|
174
|
+
# -->
|
175
|
+
# Returns a human-readable string representation of this instruction sequence,
|
176
|
+
# including the #label and #path.
|
177
|
+
#
|
178
|
+
def inspect: () -> String
|
179
|
+
|
180
|
+
# <!--
|
181
|
+
# rdoc-file=iseq.c
|
182
|
+
# - label()
|
183
|
+
# -->
|
184
|
+
# Returns the label of this instruction sequence.
|
185
|
+
#
|
186
|
+
# `<main>` if it's at the top level, `<compiled>` if it was evaluated from a
|
187
|
+
# string.
|
188
|
+
#
|
189
|
+
# For example, using irb:
|
190
|
+
#
|
191
|
+
# iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
|
192
|
+
# #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
|
193
|
+
# iseq.label
|
194
|
+
# #=> "<compiled>"
|
195
|
+
#
|
196
|
+
# Using ::compile_file:
|
197
|
+
#
|
198
|
+
# # /tmp/method.rb
|
199
|
+
# def hello
|
200
|
+
# puts "hello, world"
|
201
|
+
# end
|
202
|
+
#
|
203
|
+
# # in irb
|
204
|
+
# > iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
|
205
|
+
# > iseq.label #=> <main>
|
206
|
+
#
|
207
|
+
def label: () -> String
|
208
|
+
|
209
|
+
# <!--
|
210
|
+
# rdoc-file=iseq.c
|
211
|
+
# - path()
|
212
|
+
# -->
|
213
|
+
# Returns the path of this instruction sequence.
|
214
|
+
#
|
215
|
+
# `<compiled>` if the iseq was evaluated from a string.
|
216
|
+
#
|
217
|
+
# For example, using irb:
|
218
|
+
#
|
219
|
+
# iseq = RubyVM::InstructionSequence.compile('num = 1 + 2')
|
220
|
+
# #=> <RubyVM::InstructionSequence:<compiled>@<compiled>>
|
221
|
+
# iseq.path
|
222
|
+
# #=> "<compiled>"
|
223
|
+
#
|
224
|
+
# Using ::compile_file:
|
225
|
+
#
|
226
|
+
# # /tmp/method.rb
|
227
|
+
# def hello
|
228
|
+
# puts "hello, world"
|
229
|
+
# end
|
230
|
+
#
|
231
|
+
# # in irb
|
232
|
+
# > iseq = RubyVM::InstructionSequence.compile_file('/tmp/method.rb')
|
233
|
+
# > iseq.path #=> /tmp/method.rb
|
234
|
+
#
|
235
|
+
def path: () -> String
|
236
|
+
|
237
|
+
# <!--
|
238
|
+
# rdoc-file=iseq.c
|
239
|
+
# - iseq.script_lines -> array or nil
|
240
|
+
# -->
|
241
|
+
# It returns recorded script lines if it is available. The script lines are not
|
242
|
+
# limited to the iseq range, but are entire lines of the source file.
|
243
|
+
#
|
244
|
+
# Note that this is an API for ruby internal use, debugging, and research. Do
|
245
|
+
# not use this for any other purpose. The compatibility is not guaranteed.
|
246
|
+
#
|
247
|
+
def script_lines: () -> Array[String]?
|
248
|
+
|
249
|
+
# <!--
|
250
|
+
# rdoc-file=iseq.c
|
251
|
+
# - iseq.to_a -> ary
|
252
|
+
# -->
|
253
|
+
# Returns an Array with 14 elements representing the instruction sequence with
|
254
|
+
# the following data:
|
255
|
+
#
|
256
|
+
# magic
|
257
|
+
# : A string identifying the data format. **Always
|
258
|
+
# `YARVInstructionSequence/SimpleDataFormat`.**
|
259
|
+
#
|
260
|
+
#
|
261
|
+
# major_version
|
262
|
+
# : The major version of the instruction sequence.
|
263
|
+
#
|
264
|
+
#
|
265
|
+
# minor_version
|
266
|
+
# : The minor version of the instruction sequence.
|
267
|
+
#
|
268
|
+
#
|
269
|
+
# format_type
|
270
|
+
# : A number identifying the data format. **Always 1**.
|
271
|
+
#
|
272
|
+
#
|
273
|
+
# misc
|
274
|
+
# : A hash containing:
|
275
|
+
#
|
276
|
+
# `:arg_size`
|
277
|
+
# : the total number of arguments taken by the method or the block (0 if
|
278
|
+
# *iseq* doesn't represent a method or block)
|
279
|
+
#
|
280
|
+
# `:local_size`
|
281
|
+
# : the number of local variables + 1
|
282
|
+
#
|
283
|
+
# `:stack_max`
|
284
|
+
# : used in calculating the stack depth at which a SystemStackError is
|
285
|
+
# thrown.
|
286
|
+
#
|
287
|
+
#
|
288
|
+
#
|
289
|
+
# #label
|
290
|
+
# : The name of the context (block, method, class, module, etc.) that this
|
291
|
+
# instruction sequence belongs to.
|
292
|
+
#
|
293
|
+
# `<main>` if it's at the top level, `<compiled>` if it was evaluated from a
|
294
|
+
# string.
|
295
|
+
#
|
296
|
+
#
|
297
|
+
# #path
|
298
|
+
# : The relative path to the Ruby file where the instruction sequence was
|
299
|
+
# loaded from.
|
300
|
+
#
|
301
|
+
# `<compiled>` if the iseq was evaluated from a string.
|
302
|
+
#
|
303
|
+
#
|
304
|
+
# #absolute_path
|
305
|
+
# : The absolute path to the Ruby file where the instruction sequence was
|
306
|
+
# loaded from.
|
307
|
+
#
|
308
|
+
# `nil` if the iseq was evaluated from a string.
|
309
|
+
#
|
310
|
+
#
|
311
|
+
# #first_lineno
|
312
|
+
# : The number of the first source line where the instruction sequence was
|
313
|
+
# loaded from.
|
314
|
+
#
|
315
|
+
#
|
316
|
+
# type
|
317
|
+
# : The type of the instruction sequence.
|
318
|
+
#
|
319
|
+
# Valid values are `:top`, `:method`, `:block`, `:class`, `:rescue`,
|
320
|
+
# `:ensure`, `:eval`, `:main`, and `plain`.
|
321
|
+
#
|
322
|
+
#
|
323
|
+
# locals
|
324
|
+
# : An array containing the names of all arguments and local variables as
|
325
|
+
# symbols.
|
326
|
+
#
|
327
|
+
#
|
328
|
+
# params
|
329
|
+
# : An Hash object containing parameter information.
|
330
|
+
#
|
331
|
+
# More info about these values can be found in `vm_core.h`.
|
332
|
+
#
|
333
|
+
#
|
334
|
+
# catch_table
|
335
|
+
# : A list of exceptions and control flow operators (rescue, next, redo,
|
336
|
+
# break, etc.).
|
337
|
+
#
|
338
|
+
#
|
339
|
+
# bytecode
|
340
|
+
# : An array of arrays containing the instruction names and operands that make
|
341
|
+
# up the body of the instruction sequence.
|
342
|
+
#
|
343
|
+
#
|
344
|
+
# Note that this format is MRI specific and version dependent.
|
345
|
+
#
|
346
|
+
def to_a: () -> Array[untyped]
|
347
|
+
|
348
|
+
# <!--
|
349
|
+
# rdoc-file=iseq.c
|
350
|
+
# - iseq.to_binary(extra_data = nil) -> binary str
|
351
|
+
# -->
|
352
|
+
# Returns serialized iseq binary format data as a String object. A corresponding
|
353
|
+
# iseq object is created by RubyVM::InstructionSequence.load_from_binary()
|
354
|
+
# method.
|
355
|
+
#
|
356
|
+
# String extra_data will be saved with binary data. You can access this data
|
357
|
+
# with RubyVM::InstructionSequence.load_from_binary_extra_data(binary).
|
358
|
+
#
|
359
|
+
# Note that the translated binary data is not portable. You can not move this
|
360
|
+
# binary data to another machine. You can not use the binary data which is
|
361
|
+
# created by another version/another architecture of Ruby.
|
362
|
+
#
|
363
|
+
def to_binary: () -> String
|
364
|
+
|
365
|
+
# <!--
|
366
|
+
# rdoc-file=iseq.c
|
367
|
+
# - iseq.trace_points -> ary
|
368
|
+
# -->
|
369
|
+
# Return trace points in the instruction sequence. Return an array of [line,
|
370
|
+
# event_symbol] pair.
|
371
|
+
#
|
372
|
+
def trace_points: () -> Array[untyped]
|
373
|
+
end
|
374
|
+
|
375
|
+
# <!-- rdoc-file=ast.rb -->
|
376
|
+
# AbstractSyntaxTree provides methods to parse Ruby code into abstract syntax
|
377
|
+
# trees. The nodes in the tree are instances of
|
378
|
+
# RubyVM::AbstractSyntaxTree::Node.
|
379
|
+
#
|
380
|
+
# This module is MRI specific as it exposes implementation details of the MRI
|
381
|
+
# abstract syntax tree.
|
382
|
+
#
|
383
|
+
# This module is experimental and its API is not stable, therefore it might
|
384
|
+
# change without notice. As examples, the order of children nodes is not
|
385
|
+
# guaranteed, the number of children nodes might change, there is no way to
|
386
|
+
# access children nodes by name, etc.
|
387
|
+
#
|
388
|
+
# If you are looking for a stable API or an API working under multiple Ruby
|
389
|
+
# implementations, consider using the *prism* gem, which is the official Ruby
|
390
|
+
# API to parse Ruby code.
|
391
|
+
#
|
392
|
+
module RubyVM::AbstractSyntaxTree
|
393
|
+
# <!--
|
394
|
+
# rdoc-file=ast.rb
|
395
|
+
# - RubyVM::AbstractSyntaxTree.parse(string, keep_script_lines: RubyVM.keep_script_lines, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
|
396
|
+
# -->
|
397
|
+
# Parses the given *string* into an abstract syntax tree, returning the root
|
398
|
+
# node of that tree.
|
399
|
+
#
|
400
|
+
# RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
|
401
|
+
# # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-1:9>
|
402
|
+
#
|
403
|
+
# If `keep_script_lines: true` option is provided, the text of the parsed source
|
404
|
+
# is associated with nodes and is available via Node#script_lines.
|
405
|
+
#
|
406
|
+
# If `keep_tokens: true` option is provided, Node#tokens are populated.
|
407
|
+
#
|
408
|
+
# SyntaxError is raised if the given *string* is invalid syntax. To overwrite
|
409
|
+
# this behavior, `error_tolerant: true` can be provided. In this case, the
|
410
|
+
# parser will produce a tree where expressions with syntax errors would be
|
411
|
+
# represented by Node with `type=:ERROR`.
|
412
|
+
#
|
413
|
+
# root = RubyVM::AbstractSyntaxTree.parse("x = 1; p(x; y=2")
|
414
|
+
# # <internal:ast>:33:in `parse': syntax error, unexpected ';', expecting ')' (SyntaxError)
|
415
|
+
# # x = 1; p(x; y=2
|
416
|
+
# # ^
|
417
|
+
#
|
418
|
+
# root = RubyVM::AbstractSyntaxTree.parse("x = 1; p(x; y=2", error_tolerant: true)
|
419
|
+
# # (SCOPE@1:0-1:15
|
420
|
+
# # tbl: [:x, :y]
|
421
|
+
# # args: nil
|
422
|
+
# # body: (BLOCK@1:0-1:15 (LASGN@1:0-1:5 :x (LIT@1:4-1:5 1)) (ERROR@1:7-1:11) (LASGN@1:12-1:15 :y (LIT@1:14-1:15 2))))
|
423
|
+
# root.children.last.children
|
424
|
+
# # [(LASGN@1:0-1:5 :x (LIT@1:4-1:5 1)),
|
425
|
+
# # (ERROR@1:7-1:11),
|
426
|
+
# # (LASGN@1:12-1:15 :y (LIT@1:14-1:15 2))]
|
427
|
+
#
|
428
|
+
# Note that parsing continues even after the errored expression.
|
429
|
+
#
|
430
|
+
def self.parse: (String string, ?keep_script_lines: bool, ?error_tolerant: bool, ?keep_tokens: bool) -> Node
|
431
|
+
|
432
|
+
# <!--
|
433
|
+
# rdoc-file=ast.rb
|
434
|
+
# - RubyVM::AbstractSyntaxTree.parse_file(pathname, keep_script_lines: RubyVM.keep_script_lines, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
|
435
|
+
# -->
|
436
|
+
# Reads the file from *pathname*, then parses it like ::parse, returning the
|
437
|
+
# root node of the abstract syntax tree.
|
438
|
+
#
|
439
|
+
# SyntaxError is raised if *pathname*'s contents are not valid Ruby syntax.
|
440
|
+
#
|
441
|
+
# RubyVM::AbstractSyntaxTree.parse_file("my-app/app.rb")
|
442
|
+
# # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-31:3>
|
443
|
+
#
|
444
|
+
# See ::parse for explanation of keyword argument meaning and usage.
|
445
|
+
#
|
446
|
+
def self.parse_file: (String | ::_ToPath string, ?keep_script_lines: bool, ?error_tolerant: bool, ?keep_tokens: bool) -> Node
|
447
|
+
|
448
|
+
# <!--
|
449
|
+
# rdoc-file=ast.rb
|
450
|
+
# - RubyVM::AbstractSyntaxTree.of(proc, keep_script_lines: RubyVM.keep_script_lines, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
|
451
|
+
# - RubyVM::AbstractSyntaxTree.of(method, keep_script_lines: RubyVM.keep_script_lines, error_tolerant: false, keep_tokens: false) -> RubyVM::AbstractSyntaxTree::Node
|
452
|
+
# -->
|
453
|
+
# Returns AST nodes of the given *proc* or *method*.
|
454
|
+
#
|
455
|
+
# RubyVM::AbstractSyntaxTree.of(proc {1 + 2})
|
456
|
+
# # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:35-1:42>
|
457
|
+
#
|
458
|
+
# def hello
|
459
|
+
# puts "hello, world"
|
460
|
+
# end
|
461
|
+
#
|
462
|
+
# RubyVM::AbstractSyntaxTree.of(method(:hello))
|
463
|
+
# # => #<RubyVM::AbstractSyntaxTree::Node:SCOPE@1:0-3:3>
|
464
|
+
#
|
465
|
+
# See ::parse for explanation of keyword argument meaning and usage.
|
466
|
+
#
|
467
|
+
def self.of: (Proc | Method | UnboundMethod body, ?keep_script_lines: bool, ?error_tolerant: bool, ?keep_tokens: bool) -> Node?
|
468
|
+
|
469
|
+
# <!--
|
470
|
+
# rdoc-file=ast.rb
|
471
|
+
# - RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(backtrace_location) -> integer
|
472
|
+
# -->
|
473
|
+
# Returns the node id for the given backtrace location.
|
474
|
+
#
|
475
|
+
# begin
|
476
|
+
# raise
|
477
|
+
# rescue => e
|
478
|
+
# loc = e.backtrace_locations.first
|
479
|
+
# RubyVM::AbstractSyntaxTree.node_id_for_backtrace_location(loc)
|
480
|
+
# end # => 0
|
481
|
+
#
|
482
|
+
def self.node_id_for_backtrace_location: (Thread::Backtrace::Location backtrace_location) -> Integer
|
483
|
+
|
484
|
+
# <!-- rdoc-file=ast.rb -->
|
485
|
+
# RubyVM::AbstractSyntaxTree::Node instances are created by parse methods in
|
486
|
+
# RubyVM::AbstractSyntaxTree.
|
487
|
+
#
|
488
|
+
# This class is MRI specific.
|
489
|
+
#
|
490
|
+
class Node
|
491
|
+
# <!--
|
492
|
+
# rdoc-file=ast.rb
|
493
|
+
# - node.type -> symbol
|
494
|
+
# -->
|
495
|
+
# Returns the type of this node as a symbol.
|
496
|
+
#
|
497
|
+
# root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2")
|
498
|
+
# root.type # => :SCOPE
|
499
|
+
# lasgn = root.children[2]
|
500
|
+
# lasgn.type # => :LASGN
|
501
|
+
# call = lasgn.children[1]
|
502
|
+
# call.type # => :OPCALL
|
503
|
+
#
|
504
|
+
def type: () -> Symbol
|
505
|
+
|
506
|
+
# <!--
|
507
|
+
# rdoc-file=ast.rb
|
508
|
+
# - node.first_lineno -> integer
|
509
|
+
# -->
|
510
|
+
# The line number in the source code where this AST's text began.
|
511
|
+
#
|
512
|
+
def first_lineno: () -> Integer
|
513
|
+
|
514
|
+
# <!--
|
515
|
+
# rdoc-file=ast.rb
|
516
|
+
# - node.first_column -> integer
|
517
|
+
# -->
|
518
|
+
# The column number in the source code where this AST's text began.
|
519
|
+
#
|
520
|
+
def first_column: () -> Integer
|
521
|
+
|
522
|
+
# <!--
|
523
|
+
# rdoc-file=ast.rb
|
524
|
+
# - node.last_lineno -> integer
|
525
|
+
# -->
|
526
|
+
# The line number in the source code where this AST's text ended.
|
527
|
+
#
|
528
|
+
def last_lineno: () -> Integer
|
529
|
+
|
530
|
+
# <!--
|
531
|
+
# rdoc-file=ast.rb
|
532
|
+
# - node.last_column -> integer
|
533
|
+
# -->
|
534
|
+
# The column number in the source code where this AST's text ended.
|
535
|
+
#
|
536
|
+
def last_column: () -> Integer
|
537
|
+
|
538
|
+
# <!--
|
539
|
+
# rdoc-file=ast.rb
|
540
|
+
# - node.locations -> array
|
541
|
+
# -->
|
542
|
+
# Returns location objects associated with the AST node. The returned array
|
543
|
+
# contains RubyVM::AbstractSyntaxTree::Location.
|
544
|
+
#
|
545
|
+
def locations: () -> Array[Location]
|
546
|
+
|
547
|
+
# <!--
|
548
|
+
# rdoc-file=ast.rb
|
549
|
+
# - node.tokens -> array
|
550
|
+
# -->
|
551
|
+
# Returns tokens corresponding to the location of the node. Returns `nil` if
|
552
|
+
# `keep_tokens` is not enabled when #parse method is called.
|
553
|
+
#
|
554
|
+
# root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2", keep_tokens: true)
|
555
|
+
# root.tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
|
556
|
+
# root.tokens.map{_1[2]}.join # => "x = 1 + 2"
|
557
|
+
#
|
558
|
+
# Token is an array of:
|
559
|
+
#
|
560
|
+
# * id
|
561
|
+
# * token type
|
562
|
+
# * source code text
|
563
|
+
# * location [ first_lineno, first_column, last_lineno, last_column ]
|
564
|
+
#
|
565
|
+
def tokens: () -> Array[[Integer, Symbol, String, [Integer, Integer, Integer, Integer]]]?
|
566
|
+
|
567
|
+
# <!--
|
568
|
+
# rdoc-file=ast.rb
|
569
|
+
# - node.all_tokens -> array
|
570
|
+
# -->
|
571
|
+
# Returns all tokens for the input script regardless the receiver node. Returns
|
572
|
+
# `nil` if `keep_tokens` is not enabled when #parse method is called.
|
573
|
+
#
|
574
|
+
# root = RubyVM::AbstractSyntaxTree.parse("x = 1 + 2", keep_tokens: true)
|
575
|
+
# root.all_tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
|
576
|
+
# root.children[-1].all_tokens # => [[0, :tIDENTIFIER, "x", [1, 0, 1, 1]], [1, :tSP, " ", [1, 1, 1, 2]], ...]
|
577
|
+
#
|
578
|
+
def all_tokens: () -> Array[[Integer, Symbol, String, [Integer, Integer, Integer, Integer]]]?
|
579
|
+
|
580
|
+
# <!--
|
581
|
+
# rdoc-file=ast.rb
|
582
|
+
# - node.children -> array
|
583
|
+
# -->
|
584
|
+
# Returns AST nodes under this one. Each kind of node has different children,
|
585
|
+
# depending on what kind of node it is.
|
586
|
+
#
|
587
|
+
# The returned array may contain other nodes or `nil`.
|
588
|
+
#
|
589
|
+
def children: () -> Array[untyped]
|
590
|
+
end
|
591
|
+
|
592
|
+
# <!-- rdoc-file=ast.rb -->
|
593
|
+
# RubyVM::AbstractSyntaxTree::Location instances are created by
|
594
|
+
# RubyVM::AbstractSyntaxTree::Node#locations.
|
595
|
+
#
|
596
|
+
# This class is MRI specific.
|
597
|
+
#
|
598
|
+
class Location
|
599
|
+
# <!--
|
600
|
+
# rdoc-file=ast.rb
|
601
|
+
# - location.first_column -> integer
|
602
|
+
# -->
|
603
|
+
# The column number in the source code where this AST's text began.
|
604
|
+
#
|
605
|
+
def first_column: () -> Integer
|
606
|
+
|
607
|
+
# <!--
|
608
|
+
# rdoc-file=ast.rb
|
609
|
+
# - location.first_lineno -> integer
|
610
|
+
# -->
|
611
|
+
# The line number in the source code where this AST's text began.
|
612
|
+
#
|
613
|
+
def first_lineno: () -> Integer
|
614
|
+
|
615
|
+
# <!--
|
616
|
+
# rdoc-file=ast.rb
|
617
|
+
# - location.inspect -> string
|
618
|
+
# -->
|
619
|
+
# Returns debugging information about this location as a string.
|
620
|
+
#
|
621
|
+
def inspect: () -> String
|
622
|
+
|
623
|
+
# <!--
|
624
|
+
# rdoc-file=ast.rb
|
625
|
+
# - location.last_lineno -> integer
|
626
|
+
# -->
|
627
|
+
# The line number in the source code where this AST's text ended.
|
628
|
+
#
|
629
|
+
def last_lineno: () -> Integer
|
630
|
+
|
631
|
+
# <!--
|
632
|
+
# rdoc-file=ast.rb
|
633
|
+
# - location.last_column -> integer
|
634
|
+
# -->
|
635
|
+
# The column number in the source code where this AST's text ended.
|
636
|
+
#
|
637
|
+
def last_column: () -> Integer
|
638
|
+
end
|
639
|
+
end
|
640
|
+
|
641
|
+
# <!-- rdoc-file=yjit.rb -->
|
642
|
+
# This module allows for introspection of YJIT, CRuby's just-in-time compiler.
|
643
|
+
# Everything in the module is highly implementation specific and the API might
|
644
|
+
# be less stable compared to the standard library.
|
645
|
+
# This module may not exist if YJIT does not support the particular platform
|
646
|
+
# for which CRuby is built.
|
647
|
+
#
|
648
|
+
module RubyVM::YJIT
|
649
|
+
# <!--
|
650
|
+
# rdoc-file=yjit.rb
|
651
|
+
# - code_gc()
|
652
|
+
# -->
|
653
|
+
# Discard existing compiled code to reclaim memory
|
654
|
+
# and allow for recompilations in the future.
|
655
|
+
#
|
656
|
+
def self.code_gc: () -> void
|
657
|
+
|
658
|
+
# <!--
|
659
|
+
# rdoc-file=yjit.rb
|
660
|
+
# - dump_exit_locations(filename)
|
661
|
+
# -->
|
662
|
+
# Marshal dumps exit locations to the given filename.
|
663
|
+
# Usage:
|
664
|
+
# If `--yjit-exit-locations` is passed, a file named
|
665
|
+
# "yjit_exit_locations.dump" will automatically be generated.
|
666
|
+
# If you want to collect traces manually, call `dump_exit_locations`
|
667
|
+
# directly.
|
668
|
+
# Note that calling this in a script will generate stats after the
|
669
|
+
# dump is created, so the stats data may include exits from the
|
670
|
+
# dump itself.
|
671
|
+
# In a script call:
|
672
|
+
# at_exit do
|
673
|
+
# RubyVM::YJIT.dump_exit_locations("my_file.dump")
|
674
|
+
# end
|
675
|
+
#
|
676
|
+
# Then run the file with the following options:
|
677
|
+
# ruby --yjit --yjit-trace-exits test.rb
|
678
|
+
#
|
679
|
+
# Once the code is done running, use Stackprof to read the dump file.
|
680
|
+
# See Stackprof documentation for options.
|
681
|
+
#
|
682
|
+
def self.dump_exit_locations: (untyped filename) -> void
|
683
|
+
|
684
|
+
# <!--
|
685
|
+
# rdoc-file=yjit.rb
|
686
|
+
# - enable(stats: false, log: false)
|
687
|
+
# -->
|
688
|
+
# Enable YJIT compilation. `stats` option decides whether to enable YJIT stats
|
689
|
+
# or not. `compilation_log` decides
|
690
|
+
# whether to enable YJIT compilation logging or not.
|
691
|
+
# * `stats`:
|
692
|
+
# * `false`: Don't enable stats.
|
693
|
+
# * `true`: Enable stats. Print stats at exit.
|
694
|
+
# * `:quiet`: Enable stats. Do not print stats at exit.
|
695
|
+
# * `log`:
|
696
|
+
# * `false`: Don't enable the log.
|
697
|
+
# * `true`: Enable the log. Print log at exit.
|
698
|
+
# * `:quiet`: Enable the log. Do not print log at exit.
|
699
|
+
#
|
700
|
+
def self.enable: (?stats: false | true | :quiet) -> void
|
701
|
+
|
702
|
+
# <!--
|
703
|
+
# rdoc-file=yjit.rb
|
704
|
+
# - enabled?()
|
705
|
+
# -->
|
706
|
+
# Check if YJIT is enabled.
|
707
|
+
#
|
708
|
+
def self.enabled?: () -> bool
|
709
|
+
|
710
|
+
# <!--
|
711
|
+
# rdoc-file=yjit.rb
|
712
|
+
# - format_number(pad, number)
|
713
|
+
# -->
|
714
|
+
# Format large numbers with comma separators for readability
|
715
|
+
#
|
716
|
+
def self.format_number: (untyped pad, untyped number) -> untyped
|
717
|
+
|
718
|
+
# <!--
|
719
|
+
# rdoc-file=yjit.rb
|
720
|
+
# - format_number_pct(pad, number, total)
|
721
|
+
# -->
|
722
|
+
# Format a number along with a percentage over a total value
|
723
|
+
#
|
724
|
+
def self.format_number_pct: (untyped pad, untyped number, untyped total) -> untyped
|
725
|
+
|
726
|
+
# <!--
|
727
|
+
# rdoc-file=yjit.rb
|
728
|
+
# - reset_stats!()
|
729
|
+
# -->
|
730
|
+
# Discard statistics collected for `--yjit-stats`.
|
731
|
+
#
|
732
|
+
def self.reset_stats!: () -> void
|
733
|
+
|
734
|
+
# <!--
|
735
|
+
# rdoc-file=yjit.rb
|
736
|
+
# - runtime_stats(key = nil)
|
737
|
+
# -->
|
738
|
+
# Return a hash for statistics generated for the `--yjit-stats` command line
|
739
|
+
# option.
|
740
|
+
# Return `nil` when option is not passed or unavailable.
|
741
|
+
# If a symbol argument is provided, return only the value for the named stat.
|
742
|
+
# If any other type is provided, raises TypeError.
|
743
|
+
#
|
744
|
+
def self.runtime_stats: (?context: bool) -> Hash[untyped, untyped]?
|
745
|
+
|
746
|
+
# <!--
|
747
|
+
# rdoc-file=yjit.rb
|
748
|
+
# - stats_enabled?()
|
749
|
+
# -->
|
750
|
+
# Check if `--yjit-stats` is used.
|
751
|
+
#
|
752
|
+
def self.stats_enabled?: () -> bool
|
753
|
+
|
754
|
+
# <!--
|
755
|
+
# rdoc-file=yjit.rb
|
756
|
+
# - stats_string()
|
757
|
+
# -->
|
758
|
+
# Format and print out counters as a String. This returns a non-empty
|
759
|
+
# content only when `--yjit-stats` is enabled.
|
760
|
+
#
|
761
|
+
def self.stats_string: () -> String
|
762
|
+
end
|
763
|
+
|
764
|
+
module RubyVM::RJIT
|
765
|
+
end
|