diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index fb64c4d8fc..f72d791087 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -28,6 +28,7 @@ RUN \ libgmp-dev \ libnewlib-dev\ libyaml-dev \ + minisat \ nodejs \ npm \ parallel \ @@ -36,7 +37,41 @@ RUN \ python3.12-venv \ ruby \ ruby-dev \ - shellcheck + shellcheck \ + zlib1g-dev + +# build/install eqntott +RUN < + sed -i -e 's/#include /#include \n#include /' mcsmus/mcsmus/control.cc + make + install must -m 0777 /usr/bin/must + cd .. + rm -rf mustool +CMDS RUN apt-get clean autoclean RUN apt-get autoremove -y diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml index 7515a9c6e6..eac19f517b 100644 --- a/.github/workflows/container.yml +++ b/.github/workflows/container.yml @@ -6,9 +6,12 @@ on: workflow_dispatch: jobs: publish-singularity-container: - runs-on: ubuntu-latest env: SINGULARITY: 1 + strategy: + matrix: + runner: [ubuntu-24.04, ubuntu-24.04-arm] + runs-on: ${{ matrix.runner }} steps: - name: Clone Github Repo Action uses: actions/checkout@v4 diff --git a/.github/workflows/regress.yml b/.github/workflows/regress.yml index 45420910b2..ab9ab813c3 100755 --- a/.github/workflows/regress.yml +++ b/.github/workflows/regress.yml @@ -44,6 +44,97 @@ jobs: disable_search: true files: tools/ruby-gems/idlc/coverage/coverage.xml flags: idlc + regress-find-configs: + runs-on: ubuntu-latest + + outputs: + configs: ${{ steps.configs.outputs.configs }} + + steps: + - uses: actions/checkout@v5 + - uses: ruby/setup-ruby@v1 + with: + ruby-version: '3.2' + - name: Find configuration files + id: configs + run: | + ruby -e "puts 'configs=[\"' + Dir.glob('cfgs/*.yaml').map { |f| File.basename(f, '.yaml') }.join('\", \"') + '\"]'" >> "$GITHUB_OUTPUT" + regress-udb-validate-configs: + runs-on: ubuntu-latest + + needs: regress-find-configs + strategy: + matrix: + config: ${{ fromJSON(needs.regress-find-configs.outputs.configs) }} + + steps: + - name: Clone Github Repo Action + uses: actions/checkout@v4 + - name: singularity setup + uses: ./.github/actions/singularity-setup + - name: Run udb gem test_${{ matrix.config }} unit test + run: ./bin/ruby tools/ruby-gems/udb/test/test_cfg.rb -n test_cfg_${{ matrix.config }}_valid + - name: Rename coverage file + run: mv tools/ruby-gems/udb/coverage/.resultset.json tools/ruby-gems/udb/coverage/${{ matrix.config }}.resultset.json + - name: Save coverage report + uses: actions/upload-artifact@v4 + with: + name: udb-test-cfg-${{ matrix.config }}-cov + path: tools/ruby-gems/udb/coverage/${{ matrix.config }}.resultset.json + regress-udb-unit-test: + runs-on: ubuntu-latest + env: + SINGULARITY: 1 + strategy: + matrix: + test: + - logic + - conditions + - cli + - yaml_loader + - cfg_arch + steps: + - name: Clone Github Repo Action + uses: actions/checkout@v4 + - name: singularity setup + uses: ./.github/actions/singularity-setup + - name: Run udb gem ${{ matrix.test }} unit tests + run: ./bin/ruby tools/ruby-gems/udb/test/test_${{ matrix.test }}.rb + - name: Rename coverage file + run: mv tools/ruby-gems/udb/coverage/.resultset.json tools/ruby-gems/udb/coverage/${{ matrix.test }}.resultset.json + - name: Save coverage report + uses: actions/upload-artifact@v4 + with: + name: udb-${{ matrix.test }}-cov + path: tools/ruby-gems/udb/coverage/${{ matrix.test }}.resultset.json + regress-udb-cov-report: + runs-on: ubuntu-latest + env: + SINGULARITY: 1 + needs: + - regress-udb-unit-test + - regress-udb-validate-configs + steps: + - name: Clone Github Repo Action + uses: actions/checkout@v4 + - name: singularity setup + uses: ./.github/actions/singularity-setup + - name: download coverage + uses: actions/download-artifact@v5 + with: + pattern: udb-*-cov + path: _cov/udb + merge-multiple: true + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Collate coverage + run: ./do chore:udb:collate_cov[_cov/udb] + - name: Upload udb coverage reports to Codecov + uses: codecov/codecov-action@v5 + with: + token: ${{ secrets.CODECOV_TOKEN }} + disable_search: true + files: tools/ruby-gems/udb/coverage/coverage.xml + flags: udb regress-gen-isa-manual: runs-on: ubuntu-latest env: diff --git a/.vscode/settings.json b/.vscode/settings.json index acb6844585..a868065a70 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,8 +1,9 @@ { - "solargraph.bundlerPath": "bin/bundle", + "solargraph.bundlerPath": "./bin/bundle", "solargraph.useBundler": true, "sorbet.lspConfigs": [ + { "id": "container", "name": "Sorbet (UDB)", @@ -34,13 +35,13 @@ "name": "Sorbet (Host)", "description": "Sorbet on the host", "command": [ - "/usr2/dhower/.rbenv/shims/bundle", + "bundle", "exec", "srb", "typecheck", "--lsp", "--dir", - "tools/gems", + "tools/ruby-gems", "--ignore", "api_doc", "--ignore", @@ -66,5 +67,89 @@ ] } ], - "sorbet.selectedLspConfigId": "host" + "sorbet.selectedLspConfigId": "host", + "rubyTestExplorer.debugCommand": "bundle exec rdebug-ide", + "rubyTestExplorer.minitestCommand": "bundle exec rake", + "rubyTestExplorer.rspecCommand": "bundle exec rspec", + "rubyTestExplorer.testFramework": "minitest", + "rubyTestExplorer.minitestDirectory": "./tools/ruby-gems/idlc/test/", + "ipynb.experimental.serialization": false, + "files.associations": { + "any": "cpp", + "array": "cpp", + "atomic": "cpp", + "bit": "cpp", + "bitset": "cpp", + "cctype": "cpp", + "charconv": "cpp", + "chrono": "cpp", + "clocale": "cpp", + "cmath": "cpp", + "codecvt": "cpp", + "compare": "cpp", + "complex": "cpp", + "concepts": "cpp", + "condition_variable": "cpp", + "csignal": "cpp", + "cstdarg": "cpp", + "cstddef": "cpp", + "cstdint": "cpp", + "cstdio": "cpp", + "cstdlib": "cpp", + "cstring": "cpp", + "ctime": "cpp", + "cwchar": "cpp", + "cwctype": "cpp", + "deque": "cpp", + "forward_list": "cpp", + "list": "cpp", + "map": "cpp", + "set": "cpp", + "string": "cpp", + "unordered_map": "cpp", + "unordered_set": "cpp", + "vector": "cpp", + "exception": "cpp", + "algorithm": "cpp", + "functional": "cpp", + "iterator": "cpp", + "memory": "cpp", + "memory_resource": "cpp", + "numeric": "cpp", + "optional": "cpp", + "random": "cpp", + "ratio": "cpp", + "regex": "cpp", + "source_location": "cpp", + "string_view": "cpp", + "system_error": "cpp", + "tuple": "cpp", + "type_traits": "cpp", + "utility": "cpp", + "fstream": "cpp", + "future": "cpp", + "initializer_list": "cpp", + "iomanip": "cpp", + "iosfwd": "cpp", + "iostream": "cpp", + "istream": "cpp", + "limits": "cpp", + "mutex": "cpp", + "new": "cpp", + "numbers": "cpp", + "ostream": "cpp", + "ranges": "cpp", + "semaphore": "cpp", + "span": "cpp", + "sstream": "cpp", + "stdexcept": "cpp", + "stop_token": "cpp", + "streambuf": "cpp", + "thread": "cpp", + "cinttypes": "cpp", + "typeindex": "cpp", + "typeinfo": "cpp", + "valarray": "cpp", + "variant": "cpp" + } } diff --git a/Gemfile b/Gemfile index 04a3f7fb62..e667bf4719 100644 --- a/Gemfile +++ b/Gemfile @@ -5,8 +5,8 @@ ruby "~> 3.2" # local gems in UDB gem "idlc", path: "tools/ruby-gems/idlc" gem "idl_highlighter", path: "tools/ruby-gems/idl_highlighter" -gem "udb_helpers", path: "tools/ruby-gems/udb_helpers" gem "udb", path: "tools/ruby-gems/udb" +gem "udb_helpers", path: "tools/ruby-gems/udb_helpers" source "https://rubygems.org" @@ -18,12 +18,8 @@ gem "bigdecimal" gem "concurrent-ruby", require: "concurrent" gem "concurrent-ruby-ext" gem "json_schemer", "~> 1.0" -# gem "pygments.rb" gem "rake", "~> 13.0" -#gem "rouge" -gem "ruby-progressbar", "~> 1.13" gem "sorbet-runtime" -#gem "treetop", "1.6.12" gem "ttfunk", "1.7" # needed to avoid having asciidoctor-pdf dependencies pulling in a buggy version of ttunk (1.8) gem "webrick" gem "write_xlsx" diff --git a/Gemfile.lock b/Gemfile.lock index 185117d00d..8e37113834 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -28,17 +28,22 @@ PATH concurrent-ruby idlc json_schemer + numbers_and_words + pastel + ruby-minisat (>= 2.2.0.3) sorbet-runtime terminal-table thor tilt + tty-logger + tty-progressbar udb_helpers GEM remote: https://rubygems.org/ specs: Ascii85 (2.0.1) - activesupport (8.0.2) + activesupport (8.0.3) base64 benchmark (>= 0.3) bigdecimal @@ -53,8 +58,8 @@ GEM uri (>= 0.13.1) addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) - afm (0.2.2) - asciidoctor (2.0.23) + afm (1.0.0) + asciidoctor (2.0.24) asciidoctor-diagram (2.3.2) asciidoctor (>= 1.5.7, < 3.x) asciidoctor-diagram-ditaamini (~> 1.0) @@ -62,11 +67,11 @@ GEM rexml asciidoctor-diagram-batik (1.17) asciidoctor-diagram-ditaamini (1.0.3) - asciidoctor-diagram-plantuml (1.2025.2) + asciidoctor-diagram-plantuml (1.2025.3) asciidoctor-diagram-batik (~> 1.17) - asciidoctor-pdf (2.3.19) + asciidoctor-pdf (2.3.21) asciidoctor (~> 2.0) - concurrent-ruby (~> 1.1) + concurrent-ruby (~> 1.3) matrix (~> 0.4) prawn (~> 2.4.0) prawn-icon (~> 3.0.0) @@ -80,36 +85,36 @@ GEM backport (1.2.0) base64 (0.3.0) benchmark (0.4.1) - bigdecimal (3.2.2) + bigdecimal (3.3.1) commander (5.0.0) highline (~> 3.0.0) concurrent-ruby (1.3.5) concurrent-ruby-ext (1.3.5) concurrent-ruby (= 1.3.5) - connection_pool (2.5.3) + connection_pool (2.5.4) css_parser (1.21.1) addressable date (3.4.1) - debug (1.10.0) + debug (1.11.0) irb (~> 1.10) reline (>= 0.3.8) diff-lcs (1.6.2) docile (1.4.1) drb (2.2.3) - erb (5.0.1) + erb (5.1.1) erubi (1.13.1) hana (1.3.7) hashery (2.1.2) highline (3.0.1) i18n (1.14.7) concurrent-ruby (~> 1.0) - io-console (0.8.0) + io-console (0.8.1) irb (1.15.2) pp (>= 0.6.0) rdoc (>= 4.0.0) reline (>= 0.4.2) jaro_winkler (1.6.1) - json (2.12.2) + json (2.15.1) json_schemer (1.0.3) hana (~> 1.3) regexp_parser (~> 2.0) @@ -121,29 +126,31 @@ GEM language_server-protocol (3.17.0.5) lint_roller (1.1.0) logger (1.7.0) - matrix (0.4.2) - minitest (5.25.5) + matrix (0.4.3) + minitest (5.26.0) netrc (0.11.0) nkf (0.2.0) - nokogiri (1.18.9-aarch64-linux-gnu) - racc (~> 1.4) - nokogiri (1.18.9-x86_64-linux-gnu) + nokogiri (1.18.10-x86_64-linux-gnu) racc (~> 1.4) + numbers_and_words (1.0.2) + i18n (<= 2) observer (0.1.2) - ostruct (0.6.2) + ostruct (0.6.3) parallel (1.27.0) - parser (3.3.8.0) + parser (3.3.9.0) ast (~> 2.4.1) racc + pastel (0.8.0) + tty-color (~> 0.5) pdf-core (0.9.0) - pdf-reader (2.14.1) + pdf-reader (2.15.0) Ascii85 (>= 1.0, < 3.0, != 2.0.0) - afm (~> 0.2.1) + afm (>= 0.2.1, < 2) hashery (~> 2.0) ruby-rc4 ttfunk polyglot (0.3.5) - pp (0.6.2) + pp (0.6.3) prettyprint prawn (2.4.0) pdf-core (~> 0.9.0) @@ -161,34 +168,34 @@ GEM pdf-reader (~> 2.0) prawn (~> 2.2) prettyprint (0.2.0) - prism (1.4.0) + prism (1.5.2) psych (5.2.6) date stringio public_suffix (6.0.2) racc (1.8.1) - rack (3.1.16) + rack (3.2.3) rainbow (3.1.1) rake (13.3.0) - rbi (0.3.3) + rbi (0.3.7) prism (~> 1.0) rbs (>= 3.4.4) - sorbet-runtime (>= 0.5.9204) - rbs (3.9.4) + rbs (3.9.5) logger rdbg (0.1.0) debug (>= 1.2.2) - rdoc (6.14.0) + rdoc (6.15.0) erb psych (>= 4.0.0) - regexp_parser (2.10.0) - reline (0.6.1) + tsort + regexp_parser (2.11.3) + reline (0.6.2) io-console (~> 0.5) reverse_markdown (3.0.0) nokogiri - rexml (3.4.1) - rouge (4.5.2) - rubocop (1.77.0) + rexml (3.4.4) + rouge (4.6.1) + rubocop (1.81.1) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -196,33 +203,34 @@ GEM parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.45.1, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.45.1) + rubocop-ast (1.47.1) parser (>= 3.3.7.2) prism (~> 1.4) rubocop-github (0.26.0) rubocop (>= 1.76) rubocop-performance (>= 1.24) rubocop-rails (>= 2.23) - rubocop-minitest (0.38.1) + rubocop-minitest (0.38.2) lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.38.0, < 2.0) - rubocop-performance (1.25.0) + rubocop-performance (1.26.0) lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) - rubocop-ast (>= 1.38.0, < 2.0) - rubocop-rails (2.32.0) + rubocop-ast (>= 1.44.0, < 2.0) + rubocop-rails (2.33.4) activesupport (>= 4.2.0) lint_roller (~> 1.1) rack (>= 1.1) rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.44.0, < 2.0) - rubocop-sorbet (0.10.2) + rubocop-sorbet (0.11.0) lint_roller rubocop (>= 1.75.2) + ruby-minisat (2.2.0.3) ruby-prof (1.7.2) base64 ruby-progressbar (1.13.0) @@ -233,13 +241,13 @@ GEM docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) - simplecov-cobertura (2.1.0) + simplecov-cobertura (3.1.0) rexml simplecov (~> 0.19) - simplecov-html (0.13.1) + simplecov-html (0.13.2) simplecov_json_formatter (0.1.4) simpleidn (0.2.3) - solargraph (0.56.0) + solargraph (0.57.0) backport (~> 1.2) benchmark (~> 0.4) bundler (~> 2.0) @@ -252,21 +260,21 @@ GEM ostruct (~> 0.6) parser (~> 3.0) prism (~> 1.4) - rbs (~> 3.3) + rbs (>= 3.6.1, <= 4.0.0.dev.4) reverse_markdown (~> 3.0) - rubocop (~> 1.38) + rubocop (~> 1.76) thor (~> 1.0) tilt (~> 2.0) yard (~> 0.9, >= 0.9.24) + yard-activesupport-concern (~> 0.0) yard-solargraph (~> 0.1) - sorbet (0.5.12157) - sorbet-static (= 0.5.12157) - sorbet-runtime (0.5.12157) - sorbet-static (0.5.12157-aarch64-linux) - sorbet-static (0.5.12157-x86_64-linux) - sorbet-static-and-runtime (0.5.12157) - sorbet (= 0.5.12157) - sorbet-runtime (= 0.5.12157) + sorbet (0.6.12645) + sorbet-static (= 0.6.12645) + sorbet-runtime (0.6.12645) + sorbet-static (0.6.12645-x86_64-linux) + sorbet-static-and-runtime (0.6.12645) + sorbet (= 0.6.12645) + sorbet-runtime (= 0.6.12645) spoom (1.6.3) erubi (>= 1.10.0) prism (>= 0.28.0) @@ -287,22 +295,33 @@ GEM yard-sorbet terminal-table (4.0.0) unicode-display_width (>= 1.1.1, < 4) - thor (1.3.2) + thor (1.4.0) tilt (2.6.1) treetop (1.6.12) polyglot (~> 0.3) + tsort (0.2.0) ttfunk (1.7.0) + tty-color (0.6.0) + tty-cursor (0.5.0) + tty-logger (0.6.0) + pastel (~> 0.8) + tty-progressbar (0.14.0) + tty-cursor (~> 0.5.0) + tty-screen (~> 0.6.4) + tty-screen (0.6.5) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - unicode-display_width (3.1.4) - unicode-emoji (~> 4.0, >= 4.0.4) - unicode-emoji (4.0.4) - uri (1.0.3) + unicode-display_width (3.2.0) + unicode-emoji (~> 4.1) + unicode-emoji (4.1.0) + uri (1.0.4) webrick (1.9.1) - write_xlsx (1.12.1) + write_xlsx (1.12.2) nkf - rubyzip (>= 1.0.0) + rubyzip (~> 2.4.0) yard (0.9.37) + yard-activesupport-concern (0.0.1) + yard (>= 0.8) yard-solargraph (0.1.0) yard (~> 0.9) yard-sorbet (0.9.0) @@ -310,7 +329,6 @@ GEM yard PLATFORMS - aarch64-linux-gnu x86_64-linux-gnu DEPENDENCIES @@ -333,7 +351,6 @@ DEPENDENCIES rubocop-performance rubocop-sorbet ruby-prof - ruby-progressbar (~> 1.13) simplecov simplecov-cobertura solargraph diff --git a/Rakefile b/Rakefile index 52c6310961..5ccd2b80a1 100755 --- a/Rakefile +++ b/Rakefile @@ -59,6 +59,7 @@ namespace :chore do task :update_deps do # these should run in order, # so don't change this to use task prereqs, which might run in any order + sh "bundle update --gemfile Gemfile --all" Rake::Task["chore:idlc:update_deps"].invoke Rake::Task["chore:udb:update_deps"].invoke @@ -111,17 +112,17 @@ end sig { params(test_files: T::Array[String]).returns(String) } def make_test_cmd(test_files) - "-Ilib:test -w -e 'require \"minitest/autorun\"; #{test_files.map{ |f| "require \"#{f}\""}.join("; ")}' --" + "-Ilib:test -w -e 'require \"minitest/autorun\"; #{test_files.map { |f| "require \"#{f}\"" }.join("; ")}' --" end namespace :test do # "Run the cross-validation against LLVM" task :llvm do - begin - sh "/opt/venv/bin/python3 -m pytest ext/auto-inst/test_parsing.py -v" - rescue => e - raise unless e.message.include?("status (5)") # don't fail on skipped tests + begin + sh "/opt/venv/bin/python3 -m pytest ext/auto-inst/test_parsing.py -v" + rescue => e + raise unless e.message.include?("status (5)") # don't fail on skipped tests end end # "Run the IDL compiler test suite" @@ -163,9 +164,18 @@ namespace :test do task :inst_encodings do print "Checking for conflicts in instruction encodings.." + failed = T.let(false, T::Boolean) + cfg_arch = $resolver.cfg_arch_for("_") insts = cfg_arch.instructions - failed = T.let(false, T::Boolean) + inst_names = T.let(Set.new, T::Set[String]) + insts.each do |i| + if inst_names.include?(i.name) + warn "Duplicate instruction name: #{i.name}" + failed = true + end + inst_names.add(i.name) + end insts.each_with_index do |inst, idx| [32, 64].each do |xlen| next unless inst.defined_in_base?(xlen) @@ -392,7 +402,7 @@ end namespace :test do task :unit do Rake::Task["test:idlc:unit"].invoke - Rake::Task["test:udb:unit"].invoke + # Rake::Task["test:udb:unit"].invoke Rake::Task["test:udb_helpers:unit"].invoke end desc <<~DESC diff --git a/backends/cfg_html_doc/templates/ext.adoc.erb b/backends/cfg_html_doc/templates/ext.adoc.erb index 721157a617..f47dcb456b 100644 --- a/backends/cfg_html_doc/templates/ext.adoc.erb +++ b/backends/cfg_html_doc/templates/ext.adoc.erb @@ -7,7 +7,7 @@ Implemented Version:: <%= ext_version.version_str %> == Versions <%- ext.versions.each do |v| -%> -<%- implemented = cfg_arch.transitive_implemented_extension_versions.include?(v) -%> +<%- implemented = cfg_arch.implemented_extension_versions.include?(v) -%> <%= v.version_str %>:: Ratification date::: <%= v.ratification_date %> @@ -26,7 +26,7 @@ Implemented Version:: <%= ext_version.version_str %> <%- unless v.implications.empty? -%> Implies::: <%- v.implications.each do |i| -%> - <%- next unless i.cond.satisfied_by? { |ext_req| cfg_arch.transitive_implemented_extension_versions.any? { |ext_ver| ext_req.satisfied_by?(ext_ver)}} -%> + <%- next unless i.cond.satisfied_by_cfg_arch?(cfg_arch) -%> * `<%= i.ext_ver.name %>` version <%= i.ext_ver.version_str %> <%- end -%> <%- end -%> diff --git a/backends/common_templates/adoc/inst.adoc.erb b/backends/common_templates/adoc/inst.adoc.erb index c4403686a7..43be878f97 100644 --- a/backends/common_templates/adoc/inst.adoc.erb +++ b/backends/common_templates/adoc/inst.adoc.erb @@ -106,14 +106,27 @@ Sail:: Included in:: -<%- if inst.defined_by_condition.flat? -%> +<%- if inst.defining_extension_requirements.any? { |cond_ext_req| cond_ext_req.cond.satisfied_by_cfg_arch?(cfg_arch) != SatisfiedResult::Yes } -%> + |=== -| Extension | Version +| Extension | Version | When -<%- inst.defined_by_condition.flat_versions.each do |r| -%> -| *<%= r.name %>* | <%= inst.fix_entities(r.requirement_specs_to_s) %> -<%- end -%> +<%- inst.defining_extension_requirements.each do |cond_ext_req| -%> +| *<%= cond_ext_req.ext_req.to_s_pretty %>* +| <%= inst.fix_entities(cond_ext_req.ext_req.to_s_pretty) %> +| <%= cond_ext_req.cond.to_asciidoc %> +<%- end -%> |=== + <%- else -%> -<%= inst.fix_entities(inst.defined_by_condition.to_asciidoc) %> + +|=== +| Extension | Version + +<%- inst.defining_extension_requirements.each do |cond_ext_req| -%> +| *<%= cond_ext_req.ext_req.to_s_pretty %>* +| <%= inst.fix_entities(cond_ext_req.ext_req.to_s_pretty) %> +<%- end -%> +|=== + <%- end -%> diff --git a/backends/cpp_hart_gen/CMakeLists.txt b/backends/cpp_hart_gen/CMakeLists.txt index fd69846f9f..818c7dacfc 100644 --- a/backends/cpp_hart_gen/CMakeLists.txt +++ b/backends/cpp_hart_gen/CMakeLists.txt @@ -104,7 +104,7 @@ FetchContent_MakeAvailable(compile_time_regular_expressions) set(GENERATED_SRCS "") foreach(config ${CONFIG_LIST}) - list(APPEND GENERATED_SRCS "${CMAKE_SOURCE_DIR}/src/cfgs/${config}/params.cxx") + # list(APPEND GENERATED_SRCS "${CMAKE_SOURCE_DIR}/src/cfgs/${config}/params.cxx") endforeach() add_library(hart diff --git a/backends/cpp_hart_gen/cpp/include/udb/defines.hpp b/backends/cpp_hart_gen/cpp/include/udb/defines.hpp index 208886c92b..bdc8e79b6f 100644 --- a/backends/cpp_hart_gen/cpp/include/udb/defines.hpp +++ b/backends/cpp_hart_gen/cpp/include/udb/defines.hpp @@ -32,24 +32,32 @@ struct TemplateString { #include #include +template +[[noreturn]] static void __udb_assert_fail(const std::source_location& location, const char* cond, const StringType& msg) +{ + fmt::print(stderr, "At {} :\n Assertion failed: {}\n {}\n", + location, cond, (msg)); + std::abort(); +} + +template +[[noreturn]] static void __udb_assert_fail(const char* file, unsigned line, const char* cond, const StringType& msg) +{ + fmt::print(stderr, "At {}:{} :\n Assertion failed: {}\n {}\n", + file, line, cond, (msg)); + std::abort(); +} + #if defined(__cpp_lib_source_location) && __cpp_lib_source_location >= 201907L -#define __udb_assert(cond, msg) \ - do { \ - if (!(cond)) { \ - fmt::print(stderr, "At {} :\n Assertion failed: {}", \ - std::source_location::current(), (msg)); \ - std::abort(); \ - } \ - } while (false) +#define __udb_assert(cond, msg) \ + (static_cast(cond) \ + ? void (0) \ + : __udb_assert_fail(std::source_location::current(), #cond, (msg))); #else -#define __udb_assert(cond, msg) \ - do { \ - if (!(cond)) { \ - fmt::print(stderr, "At {}:{} :\n Assertion failed: {}", __FILE__, \ - __LINE__, msg); \ - std::abort(); \ - } \ - } while (false) +#define __udb_assert(cond, msg) \ + (static_cast(cond) \ + ? void (0) \ + : __udb_assert_fail(__FILE__, __LINE__, #cond, (msg))); #endif #if __has_cpp_attribute(assume) >= 202207L @@ -58,7 +66,7 @@ struct TemplateString { #define udb_assert(cond, msg) [[assume(cond)]] #else #define udb_assert(cond, msg) \ - __udb_assert(cond, msg); \ + __udb_assert((cond), (msg)); \ [[assume(cond)]] #endif @@ -67,7 +75,7 @@ struct TemplateString { #if defined(NDEBUG) #define udb_assert(cond, msg) // do nothing #else -#define udb_assert(cond, msg) __udb_assert(cond, msg) +#define udb_assert(cond, msg) __udb_assert((cond), (msg)) #endif #endif // __has_cpp_attribute( assume ) diff --git a/backends/cpp_hart_gen/cpp/include/udb/hart.hpp b/backends/cpp_hart_gen/cpp/include/udb/hart.hpp index 08aa7a943d..60726df67a 100644 --- a/backends/cpp_hart_gen/cpp/include/udb/hart.hpp +++ b/backends/cpp_hart_gen/cpp/include/udb/hart.hpp @@ -12,6 +12,7 @@ #include "udb/bits.hpp" #include "udb/csr.hpp" +#include "udb/db_data.hxx" #include "udb/enum.hxx" #include "udb/soc_model.hpp" #include "udb/stop_reason.h" @@ -45,9 +46,10 @@ namespace udb { template class HartBase { public: - HartBase(unsigned hart_id, SocType& soc, const nlohmann::json& cfg) + HartBase(unsigned hart_id, SocType& soc, const Config& cfg) : m_hart_id(hart_id), m_soc(soc), + m_cfg(cfg), m_tracer(nullptr), m_current_priv_mode(PrivilegeMode::M), m_exit_requested(false), @@ -331,6 +333,11 @@ namespace udb { throw UnpredictableBehaviorException(); } + [[noreturn]] void unreachable() { + fmt::print(stderr, "FATAL: Executing unreachable IDL line\n"); + std::abort(); + } + Bits<64> hartid() const { return Bits<64>{m_hart_id}; } virtual int run_one() = 0; @@ -355,6 +362,7 @@ namespace udb { protected: const unsigned m_hart_id; SocType& m_soc; + const Config m_cfg; AbstractTracer* m_tracer; PrivilegeMode m_current_priv_mode; diff --git a/backends/cpp_hart_gen/cpp/include/udb/util.hpp b/backends/cpp_hart_gen/cpp/include/udb/util.hpp index 1f15a70843..79d9b5f826 100644 --- a/backends/cpp_hart_gen/cpp/include/udb/util.hpp +++ b/backends/cpp_hart_gen/cpp/include/udb/util.hpp @@ -247,4 +247,11 @@ consteval unsigned __concat_width_static() return __concat>(bits...); } + + template + bool _array_includes(const ArrayType& ary, const ElementType& element) + { + return std::any_of(ary.begin(), ary.end(), [element](const ArrayType::value_type& ary_element) { return element == ary_element; }); + } + } // namespace udb diff --git a/backends/cpp_hart_gen/cpp/include/udb/version.hpp b/backends/cpp_hart_gen/cpp/include/udb/version.hpp index 752900b90e..8a6f35a2d5 100644 --- a/backends/cpp_hart_gen/cpp/include/udb/version.hpp +++ b/backends/cpp_hart_gen/cpp/include/udb/version.hpp @@ -149,7 +149,8 @@ namespace udb { VersionRequirement() : m_op(OpKind::GTE), m_version(0, 0, 0, false) {} constexpr VersionRequirement(const std::string_view& req) - : m_op(op_from_str(req)) { + : m_op(op_from_str(req)) + { set(req); } constexpr VersionRequirement(const OpKind& op_kind, unsigned major, diff --git a/backends/cpp_hart_gen/cpp/test/test_decode.cpp b/backends/cpp_hart_gen/cpp/test/test_decode.cpp index f9b3a3bfd2..3d74134556 100644 --- a/backends/cpp_hart_gen/cpp/test/test_decode.cpp +++ b/backends/cpp_hart_gen/cpp/test/test_decode.cpp @@ -27,7 +27,7 @@ description: For testing MISALIGNED_LDST: true MISALIGNED_LDST_EXCEPTION_PRIORITY: high MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE: 0 - MISALIGNED_SPLIT_STRATEGY: by_byte + MISALIGNED_SPLIT_STRATEGY: sequential_bytes PRECISE_SYNCHRONOUS_EXCEPTIONS: true TRAP_ON_ECAL_FROM_M: true TRAP_ON_EBREAK: true diff --git a/backends/cpp_hart_gen/lib/constexpr_pass.rb b/backends/cpp_hart_gen/lib/constexpr_pass.rb index a48026b01b..7a951efa1a 100644 --- a/backends/cpp_hart_gen/lib/constexpr_pass.rb +++ b/backends/cpp_hart_gen/lib/constexpr_pass.rb @@ -1,3 +1,4 @@ +# typed: false # frozen_string_literal: true module Idl @@ -10,6 +11,12 @@ def constexpr?(symtab) end end end + class TrueExpressionAst < AstNode + def constexpr?(symtab) = true + end + class FalseExpressionAst < AstNode + def constexpr?(symtab) = true + end class IdAst < AstNode def constexpr?(symtab) sym = symtab.get(name) @@ -31,7 +38,9 @@ class PcAssignmentAst < AstNode def constexpr?(symtab) = false end class FunctionCallExpressionAst < AstNode - def constexpr?(symtab) = false # conservative, can do better... + def constexpr?(symtab) + false # conservative, can do better... + end end class CsrFieldReadExpressionAst < AstNode def constexpr?(symtab) = false diff --git a/backends/cpp_hart_gen/lib/decode_tree.rb b/backends/cpp_hart_gen/lib/decode_tree.rb index 2f962e0d11..8bb312dba2 100644 --- a/backends/cpp_hart_gen/lib/decode_tree.rb +++ b/backends/cpp_hart_gen/lib/decode_tree.rb @@ -1,6 +1,11 @@ +# typed: true # frozen_string_literal: true +require "sorbet-runtime" + class DecodeGen + extend T::Sig + class DecodeTreeNode # insts are a group of instructions that share opcode bit positions # up to the most significant bit considered along this path @@ -70,14 +75,14 @@ def mask(extra_range = nil) # returns lowest non opcode bit either: # gte == nil : overall # gte is_a? Integer : greater than or equal to gte - def lowest_non_opcode_bit(gte=nil) + def lowest_non_opcode_bit(gte = nil) if gte.nil? - "0#{mask.to_s(2)}".reverse.index('0') + "0#{mask.to_s(2)}".reverse.index("0") else if gte >= mask.to_s(2).size gte else - "0#{mask.to_s(2)}".reverse[gte..].index('0') + gte + "0#{mask.to_s(2)}".reverse[gte..].index("0") + gte end end end @@ -86,7 +91,7 @@ def opcode_bit?(index) if index >= mask.to_s(2).size false else - mask.to_s(2).reverse[index] == '1' + mask.to_s(2).reverse[index] == "1" end end @@ -115,7 +120,7 @@ def construct_decode_tree(tree, xlen, cur_range, test: false) if inst_format.reverse[cur_range].match?(/^[01]+$/) # puts "#{inst.name} has opcode bit(s) in #{cur_range} (#{inst_format.reverse[cur_range].reverse})" # whole range is opcode bits - if inst_format.gsub('0', '1') == tree.mask(cur_range).to_s(2).gsub('0', '-').rjust(inst.encoding(xlen).size, '-') + if inst_format.gsub("0", "1") == tree.mask(cur_range).to_s(2).gsub("0", "-").rjust(inst.encoding(xlen).size, "-") done_insts[inst_format.reverse[cur_range]] = inst else in_progress_groups[inst_format.reverse[cur_range]] ||= [] @@ -131,20 +136,20 @@ def construct_decode_tree(tree, xlen, cur_range, test: false) return variable_insts.empty? end if !variable_insts.empty? && (!done_insts.empty? || !in_progress_groups.empty?) - raise 'Problem: variable/opcode mix when range size > 1' unless cur_range.size == 1 + raise "Problem: variable/opcode mix when range size > 1" unless cur_range.size == 1 # some instructions have an opcode, while some have hit a variable # that means that the next test needs to come from a higher bit position # we'll have to search for that next position, and then circle back to the current spot next_range = nil loop do - next_range = (cur_range.last+1..cur_range.last+1) + next_range = (cur_range.last + 1..cur_range.last + 1) break unless tree.mask_overlap?(next_range) end # puts "testing range #{next_range} on #{tree.insts.map(&:name)}" while construct_decode_tree(tree, xlen, next_range, test: true) == false loop do - next_range = (next_range.last+1..next_range.last+1) + next_range = (next_range.last + 1..next_range.last + 1) break unless tree.mask_overlap?(next_range) end end @@ -155,10 +160,10 @@ def construct_decode_tree(tree, xlen, cur_range, test: false) if done_insts.empty? && !in_progress_groups.empty? # everything is still in an opcode, so grow the range and try again - next_range = (cur_range.first..cur_range.last+1) + next_range = (cur_range.first..cur_range.last + 1) next_range_out_of_bounds = in_progress_groups.any? { |val, group| group.size > 1 && group.any? { |inst| inst.max_encoding_width <= next_range.last } } # puts "All insts have opcode at #{cur_range}, trying #{next_range}..." - if next_range_out_of_bounds || tree.opcode_bit?(cur_range.last+1) || (construct_decode_tree(tree, xlen, next_range, test: true) == false) + if next_range_out_of_bounds || tree.opcode_bit?(cur_range.last + 1) || (construct_decode_tree(tree, xlen, next_range, test: true) == false) # next bit goes too far, so this is the endpoint in_progress_groups.each do |val, insts| child = DecodeTreeNode.new(tree, insts, cur_range, val, DecodeTreeNode::SELECT_TYPE) @@ -189,12 +194,12 @@ def construct_decode_tree(tree, xlen, cur_range, test: false) construct_decode_tree(child, xlen, (child.lowest_non_opcode_bit..child.lowest_non_opcode_bit)) end else - raise 'unexpected' if variable_insts.empty? + raise "unexpected" if variable_insts.empty? - raise "unexpected: variable when range size > 1 #{cur_range} #{cur_range.size} #{variable_insts.map{ |i| i.name}}" unless cur_range.size == 1 + raise "unexpected: variable when range size > 1 #{cur_range} #{cur_range.size} #{variable_insts.map { |i| i.name }}" unless cur_range.size == 1 # puts "Moving to next variable at #{tree.lowest_non_opcode_bit(cur_range.last+1)}" - construct_decode_tree(tree, xlen, (tree.lowest_non_opcode_bit(cur_range.last+1)..tree.lowest_non_opcode_bit(cur_range.last+1))) + construct_decode_tree(tree, xlen, (tree.lowest_non_opcode_bit(cur_range.last + 1)..tree.lowest_non_opcode_bit(cur_range.last + 1))) end end private :construct_decode_tree @@ -211,7 +216,7 @@ def comment_tree(tree, indent) def extract_dv(dv, encoding_var_name) idx = 0 efs = [] - dv.encoding_fields.reverse.each do |ef| + dv.encoding_fields.reverse_each do |ef| bits = "#{encoding_var_name}.extract<#{ef.range.last}, #{ef.range.first}>()" efs << if idx.zero? @@ -234,19 +239,11 @@ def has_hints?(node, inst_list, xlen) !node.insts[0].hints.select { |hint_inst| hint_inst.defined_in_base?(xlen) && inst_list.include?(hint_inst) }.empty? end + # returns true if the extension defining inst is not gauranteed to be implemented by the config + # (for example, it is an optional extension) + sig { params(inst: Udb::Instruction).returns(T::Boolean) } def needs_to_check_implemented?(inst) - if @cfg_arch.unconfigured? - !inst.defined_by_condition.satisfied_by? { |ext_req| @cfg_arch.extension("I").versions.all? { |i_ver| ext_req.satisfied_by?(i_ver) } } - elsif @cfg_arch.partially_configured? - !inst.defined_by_condition.satisfied_by? do |ext_req| - # this is conservative - @cfg_arch.mandatory_extension_reqs.any? do |ext_req2| - ext_req.satisfied_by?(ext_req2) - end - end - else - false # fully configured, inst_list is already prunned for the config - end + inst.defined_by_condition.satisfied_by_cfg_arch?(@cfg_arch) != Udb::SatisfiedResult::Yes end # can this be handled with a simple case clause at the endpoint? @@ -254,6 +251,7 @@ def needs_to_check_implemented?(inst) # - Need to check if an extension is implemented # - There is a hint with a higher decode priority # - Only certain values of a decode variable are valid + sig { params(node: DecodeTreeNode, inst_list: T::Array[Udb::Instruction], xlen: Integer).returns(T::Boolean) } def needs_long_form?(node, inst_list, xlen) node.children.any? do |child| needs_to_check_dv = child.type == DecodeTreeNode::ENDPOINT_TYPE \ @@ -300,21 +298,55 @@ def decode_c(encoding_var_name, xlen, inst_list, node = nil, indent = 0) end if child.type == DecodeTreeNode::ENDPOINT_TYPE && needs_to_check_implemented?(child.insts[0]) - conds << child.insts[0].defined_by_condition.to_cxx do |ext_name, ext_version_req| - if ext_version_req.nil? - "implemented_Q_(ExtensionName::#{ext_name})" - else - "implemented_version_Q_(ExtensionName::#{ext_name}, \"#{ext_version_req}\"sv)" + conds << child.insts[0].defined_by_condition.to_cxx do |term| + if term.is_a?(Udb::ExtensionTerm) + if term.matches_any_version? + "implemented_Q_(ExtensionName::#{term.name})" + else + "implemented_version_Q_(ExtensionName::#{term.name}, \"#{term.comparison.serialize}#{term.version}\"sv)" + end + elsif term.is_a?(Udb::XlenTerm) + "(xlen() == #{term.xlen}_b)" + elsif term.is_a?(Udb::ParamterTerm) + var = + if cfg_arch.params_with_value.key?(term.name) + "m_params.#{term.name}_VALUE" + else + "m_params.#{term.name}" + end + comparison_type = term.comparison_type + case comparison_type + when Udb::ParamterTerm::ParameterComparisonType::Equal + "(#{var} == #{term.comparison_value})" + when Udb::ParamterTerm::ParameterComparisonType::NotEqual + "(#{var} != #{term.comparison_value})" + when Udb::ParamterTerm::ParameterComparisonType::LessThan + "(#{var} < #{term.comparison_value})" + when Udb::ParamterTerm::ParameterComparisonType::GreaterThan + "(#{var} > #{term.comparison_value})" + when Udb::ParamterTerm::ParameterComparisonType::LessThanOrEqual + "(#{var} <= #{term.comparison_value})" + when Udb::ParamterTerm::ParameterComparisonType::GreaterThanOrEqual + "(#{var} >= #{term.comparison_value})" + when Udb::ParamterTerm::ParameterComparisonType::Includes + "(#{var}.find(#{term.comparison_value}) != #{var}.end())" + when Udb::ParamterTerm::ParameterComparisonType::OneOf + vals = term.comparison_value + tests = vals.map { |v| "(#{var} == #{v})" }.join(" || ") + "(#{tests})" + else + T.absurd(comparison_type) + end end end end if !conds.empty? - code += "#{' '*indent}#{els}if ((#{encoding_var_name}.extract<#{child.range.last}, #{child.range.first}>() == 0b#{child.value.reverse}_b) && #{conds.join(' && ')}) {\n" + code += "#{' ' * indent}#{els}if ((#{encoding_var_name}.extract<#{child.range.last}, #{child.range.first}>() == 0b#{child.value.reverse}_b) && #{conds.join(' && ')}) {\n" else - code += "#{' '*indent}#{els}if (#{encoding_var_name}.extract<#{child.range.last}, #{child.range.first}>() == 0b#{child.value.reverse}_b) {\n" + code += "#{' ' * indent}#{els}if (#{encoding_var_name}.extract<#{child.range.last}, #{child.range.first}>() == 0b#{child.value.reverse}_b) {\n" end code += decode_c(encoding_var_name, xlen, inst_list, child, indent + 2) - code += "#{' '*indent}}\n" + code += "#{' ' * indent}}\n" els = "else " end else @@ -328,7 +360,7 @@ def decode_c(encoding_var_name, xlen, inst_list, node = nil, indent = 0) code += "#{' ' * indent}}\n" end else - raise 'unexpected' unless node.type == DecodeTreeNode::ENDPOINT_TYPE + raise "unexpected" unless node.type == DecodeTreeNode::ENDPOINT_TYPE code += <<~NEW_INST { @@ -368,6 +400,6 @@ def generate(instructions, xlen, indent: 2) root = DecodeTreeNode.new(nil, instructions, nil, nil, DecodeTreeNode::SELECT_TYPE) construct_decode_tree(root, xlen, 0..0) annotate_identical(root, xlen) - decode_c('encoding', xlen, instructions, root, indent) + decode_c("encoding", xlen, instructions, root, indent) end end diff --git a/backends/cpp_hart_gen/lib/gen_cpp.rb b/backends/cpp_hart_gen/lib/gen_cpp.rb index 9fb62c6b73..0783e4add4 100644 --- a/backends/cpp_hart_gen/lib/gen_cpp.rb +++ b/backends/cpp_hart_gen/lib/gen_cpp.rb @@ -138,8 +138,10 @@ def to_cxx module Idl class AstNode - sig { abstract.params(symtab: SymbolTable, indent: Integer, indent_spaces: Integer).returns(String) } - def gen_cpp(symtab, indent = 0, indent_spaces: 2); end + sig { overridable.params(symtab: SymbolTable, indent: Integer, indent_spaces: Integer).returns(String) } + def gen_cpp(symtab, indent = 0, indent_spaces: 2) + raise "Need to implement #{self.class.name}#gen_cpp" + end end class NoopAst < AstNode @@ -147,16 +149,24 @@ class NoopAst < AstNode def gen_cpp(symtab, indent = 0, indent_spaces: 2) = ";" end + class ArrayIncludesAst < AstNode + sig { override.params(symtab: SymbolTable, indent: Integer, indent_spaces: Integer).returns(String) } + def gen_cpp(symtab, indent = 0, indent_spaces: 2) + "#{' ' * indent}_array_includes(#{ary.gen_cpp(symtab, 0, indent_spaces:)}, #{expr.gen_cpp(symtab, 0, indent_spaces:)})" + end + end + class AryRangeAssignmentAst < AstNode sig { override.params(symtab: SymbolTable, indent: Integer, indent_spaces: Integer).returns(String) } def gen_cpp(symtab, indent = 0, indent_spaces: 2) expression = nil value_result = value_try do - # see if msb, lsb is compile-time-known - _ = msb.value(symtab) - _ = lsb.value(symtab) - expression = "bit_insert<#{msb.gen_cpp(symtab)}, #{lsb.gen_cpp(symtab)}>(#{variable.gen_cpp(symtab)}, #{write_value.gen_cpp(symtab)})" + # see if msb and lsb are compile-time-known + msb_val = msb.value(symtab) + lsb_val = lsb.value(symtab) + expression = "#{variable.gen_cpp(symtab, 0, indent_spaces:)} = bit_insert<#{msb_val}, #{lsb_val}, #{variable.type(symtab).width}>(#{variable.gen_cpp(symtab)}, #{write_value.gen_cpp(symtab)})" end + value_else(value_result) do expression = "bit_insert(#{variable.gen_cpp(symtab)}, #{msb.gen_cpp(symtab)}, #{lsb.gen_cpp(symtab)}, #{write_value.gen_cpp(symtab)})" end @@ -575,6 +585,20 @@ def gen_cpp(symtab, indent = 0, indent_spaces: 2) end end + class TrueExpressionAst < AstNode + sig { override.params(symtab: SymbolTable, indent: Integer, indent_spaces: Integer).returns(String) } + def gen_cpp(symtab, indent = 0, indent_spaces: 2) + "#{' ' * indent}true" + end + end + + class FalseExpressionAst < AstNode + sig { override.params(symtab: SymbolTable, indent: Integer, indent_spaces: Integer).returns(String) } + def gen_cpp(symtab, indent = 0, indent_spaces: 2) + "#{' ' * indent}false" + end + end + class IdAst < AstNode sig { params(symtab: SymbolTable).returns(String) } def gen_c(symtab) @@ -945,7 +969,7 @@ class ConditionalStatementAst < AstNode def gen_cpp(symtab, indent = 0, indent_spaces: 2) cpp = <<~IF if (#{condition.gen_cpp(symtab, 0, indent_spaces:)}) { - #{action.gen_cpp(symtab, indent_spaces, indent_spaces:)}; + #{action.gen_cpp(symtab, indent_spaces, indent_spaces:)}; } IF cpp.lines.map { |l| "#{' ' * indent}#{l}" }.join("") @@ -962,16 +986,7 @@ def gen_cpp(symtab, indent = 0, indent_spaces: 2) class FunctionCallExpressionAst < AstNode sig { override.params(symtab: SymbolTable, indent: Integer, indent_spaces: Integer).returns(String) } def gen_cpp(symtab, indent = 0, indent_spaces: 2) - if name == "ary_includes?" - # special case - if arg_nodes[0].type(symtab).width == :unknown - # vector - "__UDB_FUNC_CALL ary_includes_Q_(#{arg_nodes[0].gen_cpp(symtab, 0)}, #{arg_nodes[1].gen_cpp(symtab, 0)})" - else - # array - "__UDB_CONSTEXPR_FUNC_CALL template ary_includes_Q_<#{arg_nodes[0].type(symtab).width}>(#{arg_nodes[0].gen_cpp(symtab, 0)}, #{arg_nodes[1].gen_cpp(symtab, 0)})" - end - elsif name == "implemented?" + if name == "implemented?" "__UDB_FUNC_CALL template _implemented_Q_<#{arg_nodes[0].gen_cpp(symtab, 0)}>()" elsif name == "implemented_version?" "__UDB_FUNC_CALL template _implemented_version_Q_<#{arg_nodes[0].gen_cpp(symtab, 0)}, #{arg_nodes[1].text_value}>()" @@ -999,7 +1014,13 @@ def gen_cpp(symtab, indent = 0, indent_spaces: 2) class ArraySizeAst < AstNode sig { override.params(symtab: SymbolTable, indent: Integer, indent_spaces: Integer).returns(String) } def gen_cpp(symtab, indent = 0, indent_spaces: 2) - "#{' ' * indent}(#{expression.gen_cpp(symtab, 0, indent_spaces:)}).size()" + value_try do + sz = expression.value(symtab).size + return "#{sz}_b" + end + + # size isn't known at compile time. + "#{' ' * indent}_Bits((#{expression.gen_cpp(symtab, 0, indent_spaces:)}).size())" end end diff --git a/backends/cpp_hart_gen/lib/template_helpers.rb b/backends/cpp_hart_gen/lib/template_helpers.rb index 463cf1b832..0d9c5347eb 100644 --- a/backends/cpp_hart_gen/lib/template_helpers.rb +++ b/backends/cpp_hart_gen/lib/template_helpers.rb @@ -1,4 +1,10 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear +# typed: true +# frozen_string_literal: true + +require "sorbet-runtime" class Array def to_cxx @@ -7,63 +13,73 @@ def to_cxx end module Udb -class Instruction - def assembly_fmt(xlen) - fmt = assembly.dup - dvs = encoding(xlen).decode_variables - dvs.each do |dv| - fmt.gsub!(dv.name, "{}") + class Instruction + def assembly_fmt(xlen) + fmt = assembly.dup + dvs = encoding(xlen).decode_variables + dvs.each do |dv| + fmt.gsub!(dv.name, "{}") + end + fmt end - fmt - end - def assembly_fmt_args(xlen) - args = [] - dvs = encoding(xlen).decode_variables - dvs.each do |dv| - if dv.name[0] == "x" || dv.name[0] == "r" - args << "Reg(#{dv.name}()).to_string()" - elsif dv.name[0] == "f" - args << "Reg(#{dv.name}(), true).to_string()" + def assembly_fmt_args(xlen) + args = [] + dvs = encoding(xlen).decode_variables + dvs.each do |dv| + if dv.name[0] == "x" || dv.name[0] == "r" + args << "Reg(#{dv.name}()).to_string()" + elsif dv.name[0] == "f" + args << "Reg(#{dv.name}(), true).to_string()" + else + args << "#{dv.name}()" + end + end + if args.empty? + "" else - args << "#{dv.name}()" + ", #{args.reverse.join(', ')}" end end - if args.empty? - "" - else - ", #{args.reverse.join(', ')}" - end end end -end module Udb - class ExtensionRequirementExpression - - class LogicNode - sig { params(block: T.proc.params(arg0: String, arg1: String).returns(String)).returns(String) } - def to_cxx(&block) - if type == TYPES::Term - yield @children[0].name, @children[0].requirement_specs_to_s - elsif type == TYPES::Not - "!(#{@children[0].to_cxx(&block)})" - elsif type == TYPES::And - "(#{@children[0].to_cxx(&block)} && #{@children[1].to_cxx(&block)})" - elsif type == TYPES::Or - "(#{@children[0].to_cxx(&block)} || #{@children[1].to_cxx(&block)})" - elsif type == TYPES::If - raise "huh?" - else - T.absurd(type) + + class LogicNode + sig { params(block: T.proc.params(arg0: T.any(ExtensionTerm, ParameterTerm, XlenTerm)).returns(String)).returns(String) } + def to_cxx(&block) + if type == LogicNodeType::Term + raise "unexpected" if @children[0].is_a?(FreeTerm) + + yield @children[0] + elsif type == LogicNodeType::Not + "!(#{@children[0].to_cxx(&block)})" + elsif type == LogicNodeType::And + "(#{@children.map { |c| c.to_cxx(&block) }.join(" && ")})" + elsif type == LogicNodeType::Or + "(#{@children.map { |c| c.to_cxx(&block) }.join(" || ")})" + elsif type == LogicNodeType::Xor + sum = [] + @children.size.times do |i| + prod = [] + @children.size.times do |j| + prod << "#{i == j ? "" : "!"}(#{@children.fetch(i).to_cxx(&block)})" + end + sum << prod.join(" && ") end + "(#{sum.join(" || ")})" + else + raise "unexpected logic node type: #{type}" end end + end + + class Condition - sig { params(block: T.proc.params(arg0: String, arg1: String).returns(String)).returns(String) } + sig { params(block: T.proc.params(arg0: T.any(Udb::ExtensionTerm, Udb::ParameterTerm, Udb::XlenTerm)).returns(String)).returns(String) } def to_cxx(&block) raise ArgumentError, "Missing block" unless block_given? - raise ArgumentError, "Block expects two arguments" unless block.arity == 2 to_logic_tree(expand: false).to_cxx(&block) end @@ -72,6 +88,7 @@ def to_cxx(&block) module CppHartGen module TemplateHelpers + extend T::Sig # get the name of a c++ class # @@ -79,6 +96,7 @@ module TemplateHelpers # # name_of(:hart, cfg_arch) # name_of(:params, "rv64") + sig { params(kind: Symbol, cfg_arch_or_config_name: T.any(Udb::ConfiguredArchitecture, String), extras: T.anything).returns(String) } def name_of(kind, cfg_arch_or_config_name, *extras) config_name = cfg_arch_or_config_name.is_a?(Udb::ConfiguredArchitecture) ? cfg_arch.name : cfg_arch_or_config_name config_name = config_name.gsub("-", "_") @@ -87,6 +105,8 @@ def name_of(kind, cfg_arch_or_config_name, *extras) config_name.camelize when :hart "#{config_name.camelize}_Hart" + when :param + "#{extras[0].name}_Parameter" when :params "#{config_name.camelize}_Params" when :csr @@ -115,6 +135,18 @@ def name_of(kind, cfg_arch_or_config_name, *extras) raise "TODO: #{kind}" end end + + # if val is a String, quotes it. Otherwise, returns val + sig { type_parameters(:V).params(val: T.type_parameter(:V)).returns(T.type_parameter(:V)) } + def quot_str(val) + if val.is_a?(String) + "\"#{val}\"" + elsif val.is_a?(Integer) + "#{val}_b" + else + val + end + end end class TemplateEnv diff --git a/backends/cpp_hart_gen/tasks.rake b/backends/cpp_hart_gen/tasks.rake index 1143c39d3d..25f1d3d7b0 100644 --- a/backends/cpp_hart_gen/tasks.rake +++ b/backends/cpp_hart_gen/tasks.rake @@ -1,4 +1,5 @@ +# typed: false require "active_support" require "active_support/core_ext/string/inflections" @@ -82,7 +83,8 @@ rule %r{#{CPP_HART_GEN_DST}/[^/]+/include/udb/[^/]+\.h(xx)?\.unformatted$} => pr [ "#{CPP_HART_GEN_SRC}/templates/#{fname}.erb", __FILE__ - ] + Dir.glob(CPP_HART_GEN_SRC / 'lib' / '**' / '*') + ] + Dir.glob(CPP_HART_GEN_SRC / "lib" / "**" / "*") \ + + FileList[$resolver.resolved_spec_path(configs_build_name[0][0]) / "**" / "*.yaml"] } do |t| configs, = configs_build_name config_name = configs[0] @@ -134,7 +136,8 @@ rule %r{#{CPP_HART_GEN_DST}/.*/include/udb/cfgs/[^/]+/[^/]+\.h(xx)?\.unformatted "#{CPP_HART_GEN_SRC}/lib/template_helpers.rb", "#{CPP_HART_GEN_SRC}/lib/csr_template_helpers.rb", __FILE__ - ] + ] \ + + FileList[$resolver.resolved_spec_path(config_name) / "**" / "*.yaml"] } do |t| parts = t.name.split("/") filename = parts[-1].sub(/\.unformatted$/, "") @@ -296,7 +299,6 @@ namespace :gen do generated_files << "#{CPP_HART_GEN_DST}/#{build_name}/include/udb/cfgs/#{config}/inst.hxx" generated_files << "#{CPP_HART_GEN_DST}/#{build_name}/include/udb/cfgs/#{config}/inst_impl.hxx" generated_files << "#{CPP_HART_GEN_DST}/#{build_name}/include/udb/cfgs/#{config}/params.hxx" - generated_files << "#{CPP_HART_GEN_DST}/#{build_name}/src/cfgs/#{config}/params.cxx" generated_files << "#{CPP_HART_GEN_DST}/#{build_name}/include/udb/cfgs/#{config}/hart.hxx" generated_files << "#{CPP_HART_GEN_DST}/#{build_name}/include/udb/cfgs/#{config}/hart_impl.hxx" generated_files << "#{CPP_HART_GEN_DST}/#{build_name}/include/udb/cfgs/#{config}/csrs.hxx" @@ -410,12 +412,12 @@ namespace :test do sh "#{CPP_HART_GEN_DST}/#{build_name}/build/iss -m rv32 -c #{$root}/cfgs/rv32-riscv-tests.yaml ext/riscv-tests/isa/rv32ui-p-#{t}" end - rv32umTests = [ "div", "divu", "mul", "mulh", "mulhsu", "mulhu", "rem", "remu" ] + rv32umTests = ["div", "divu", "mul", "mulh", "mulhsu", "mulhu", "rem", "remu"] rv32umTests.each do |t| sh "#{CPP_HART_GEN_DST}/#{build_name}/build/iss -m rv32 -c #{$root}/cfgs/rv32-riscv-tests.yaml ext/riscv-tests/isa/rv32um-p-#{t}" end - rv32ucTests = [ "rvc" ] + rv32ucTests = ["rvc"] rv32ucTests.each do |t| sh "#{CPP_HART_GEN_DST}/#{build_name}/build/iss -m rv32 -c #{$root}/cfgs/rv32-riscv-tests.yaml ext/riscv-tests/isa/rv32uc-p-#{t}" end diff --git a/backends/cpp_hart_gen/templates/csrs.hxx.erb b/backends/cpp_hart_gen/templates/csrs.hxx.erb index 61f05f03cc..731cb8d520 100644 --- a/backends/cpp_hart_gen/templates/csrs.hxx.erb +++ b/backends/cpp_hart_gen/templates/csrs.hxx.erb @@ -1,3 +1,6 @@ +// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +// SPDX-License-Identifier: BSD-3-Clause-Clear + #pragma once #include @@ -143,11 +146,6 @@ namespace udb { // void _sw_write(const ValueType &field_write_value); // <%- end -%> - void makeUndefined() { - // default ValueType constructor is all unknown - m_value = ValueType(); - } - CsrFieldType type(const Bits<8>& xlen) const override; private: @@ -215,10 +213,39 @@ namespace udb { bool writable() const override { return <%= csr.writable %>; } bool defined() override { - return <%= csr.defined_by_condition.to_cxx { |ext_name, ext_req| - # check that (1) the extension is implemented and (2) that the implemented version is compatible with the requirement - "(m_parent->m_implemented_exts.find(ExtensionName::#{ext_name}) != m_parent->m_implemented_exts.end()) \ - && (VersionRequirement(\"#{ext_req}\"sv).satisfied_by(m_parent->m_implemented_exts.find(ExtensionName::#{ext_name})->second))" + return <%= csr.defined_by_condition.to_cxx { |term| + if term.is_a?(Udb::ExtensionTerm) + # check that (1) the extension is implemented and (2) that the implemented version is compatible with the requirement + "(m_parent->m_cfg.implemented_exts_hash().find(ExtensionName::#{term.name}) != m_parent->m_cfg.implemented_exts_hash().end()) \ + && (VersionRequirement(\"#{term.comparison.serialize} #{term.version}\"sv).satisfied_by(m_parent->m_cfg.implemented_exts_hash().find(ExtensionName::#{term.name})->second.version))" + elsif term.is_a?(XlenTerm) + "(m_parent->xlen() == #{term.xlen}_b)" + elsif term.is_a?(ParameterTerm) + var = "m_parent->m_params.#{term.name}.value()" + comparison_type = term.comparison_type + case comparison_type + when Udb::ParamterTerm::ParameterComparisonType::Equal + "(#{var} == #{term.comparison_value})" + when Udb::ParamterTerm::ParameterComparisonType::NotEqual + "(#{var} != #{term.comparison_value})" + when Udb::ParamterTerm::ParameterComparisonType::LessThan + "(#{var} < #{term.comparison_value})" + when Udb::ParamterTerm::ParameterComparisonType::GreaterThan + "(#{var} > #{term.comparison_value})" + when Udb::ParamterTerm::ParameterComparisonType::LessThanOrEqual + "(#{var} <= #{term.comparison_value})" + when Udb::ParamterTerm::ParameterComparisonType::GreaterThanOrEqual + "(#{var} >= #{term.comparison_value})" + when Udb::ParamterTerm::ParameterComparisonType::Includes + "(#{var}.find(#{term.comparison_value}) != #{var}.end())" + when Udb::ParamterTerm::ParameterComparisonType::OneOf + vals = term.comparison_value + tests = vals.map { |v| "(#{var} == #{v})" }.join(" || ") + "(#{tests})" + else + T.absurd(comparison_type) + end + end } %>; } diff --git a/backends/cpp_hart_gen/templates/csrs_impl.hxx.erb b/backends/cpp_hart_gen/templates/csrs_impl.hxx.erb index a6562d0973..00d6fc43fb 100644 --- a/backends/cpp_hart_gen/templates/csrs_impl.hxx.erb +++ b/backends/cpp_hart_gen/templates/csrs_impl.hxx.erb @@ -12,8 +12,8 @@ namespace udb { <%- csrs.each do |csr| -%> <%- fields = cfg_arch.fully_configured? ? csr.possible_fields(cfg_arch) : csr.fields.select { |field| field.exists_in_cfg?(cfg_arch) } -%> -#define __UDB_RUNTIME_PARAM(param_name) m_hart->m_params.param_name -#define __UDB_STATIC_PARAM(param_name) <%= name_of(:params, cfg_arch) %>::param_name ## _VALUE +#define __UDB_RUNTIME_PARAM(param_name) m_hart->m_params.param_name.value() +#define __UDB_STATIC_PARAM(param_name) <%= name_of(:params, cfg_arch) %>::param_name.value() #define __UDB_FUNC_CALL m_hart-> #define __UDB_CONSTEXPR_FUNC_CALL <%= name_of(:hart, cfg_arch) %>:: #define __UDB_CSR_BY_NAME(csr_name) m_hart->m_csrs.csr_name @@ -82,8 +82,8 @@ void <%= name_of(:csr_field, cfg_arch, csr.name, field.name) %>::reset( #undef __UDB_STRUCT #undef __UDB_HART -#define __UDB_RUNTIME_PARAM(param_name) m_parent->m_params.param_name -#define __UDB_STATIC_PARAM(param_name) <%= name_of(:params, cfg_arch) %>::param_name +#define __UDB_RUNTIME_PARAM(param_name) m_parent->m_params.param_name.value() +#define __UDB_STATIC_PARAM(param_name) <%= name_of(:params, cfg_arch) %>::param_name.value() #define __UDB_CSR_BY_ADDR(addr) m_parent->csr(addr) #define __UDB_CSR_BY_NAME(csr_name) m_parent->m_csrs.csr_name #define __UDB_CSR_FIELD_READ(field_name) m_##field_name diff --git a/backends/cpp_hart_gen/templates/db_data.cxx.erb b/backends/cpp_hart_gen/templates/db_data.cxx.erb index 182009a999..82e8f055e8 100644 --- a/backends/cpp_hart_gen/templates/db_data.cxx.erb +++ b/backends/cpp_hart_gen/templates/db_data.cxx.erb @@ -1,5 +1,12 @@ +// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +// SPDX-License-Identifier: BSD-3-Clause-Clear + +#include + #include "udb/db_data.hxx" +using namespace udb; + std::map udb::DbData::SCHEMAS = { { "schema_defs.json", R"SCHEMA( @@ -14,3 +21,141 @@ std::map udb::DbData::SCHEMAS = { } <%- end.join(", ") -%> }; + +namespace udb { +template +void to_json(const nlohmann::json& j, _Bits& b) { + j = nlohmann::json { b.get() }; +} + +template +void to_json(const nlohmann::json& j, _PossiblyUnknownBits& b) { + j = nlohmann::json { b.get() }; +} + +template +void from_json(const nlohmann::json& j, _Bits& b) { + b = _Bits{j.get::StorageType>()}; +} + +template +void from_json(const nlohmann::json& j, _PossiblyUnknownBits& b) { + b = _PossiblyUnknownBits{_Bits{j.get::StorageType>()}, 0_b}; +} +} + +static ExtensionName str_to_ext_name(const std::string& ext_name) { + <%- i = 0 -%> + <%- cfg_arch.extensions.each do |ext| -%> + <%= i.zero? ? "" : "else" %> if (ext_name == "<%= ext.name %>") { + return ExtensionName::<%= ext.name %>; + } + <%- i += 1 -%> + <%- end -%> + else { + udb_assert(false, fmt::format("'{}' is not a known extension", ext_name)); + } +} + +Config::Config(const nlohmann::json& implemented_exts, const nlohmann::json& param_values) +{ + for (auto e : implemented_exts) { + ExtensionVersion ext_ver(e[0].get(), e[1].get()); + m_implemented_exts.push_back(ext_ver); + ExtensionName name(str_to_ext_name(ext_ver.name)); + m_implemented_exts_hash.insert(std::pair{name, ext_ver}); + } + + <%- cfg_arch.params.each do |param| -%> + if (param_values.contains("<%= param.name %>")) { + std::any v(param_values["<%= param.name %>"].get<<%= param.idl_type.to_cxx_no_qualifiers %>>()); + m_param_values.emplace("<%= param.name %>", std::move(v)); + } + <%- end -%> +} + +SatisfiedResult Config::ext_req_is_met(const ExtensionName& ext_name, const VersionRequirement& req) const { + auto it = m_implemented_exts_hash.find(ext_name); + if (it == m_implemented_exts_hash.end()) { + return No; + } + + if (req.satisfied_by(it->second.version)) { + return Yes; + } else { + return No; + } +} + +<%- cfg_arch.params.each do |param| -%> +constexpr <%= name_of(:param, cfg_arch, param) %>::<%= name_of(:param, cfg_arch, param) %>(const nlohmann::json& value) + : Parameter("<%= param.name %>") + <%- unless cfg_arch.param_values.key?(param.name) -%> + , m_value(std::in_place, value.get<<%= param.idl_type.to_cxx_no_qualifiers %>>()) + <%- end -%> +{ + <%- if cfg_arch.param_values.key?(param.name) -%> + bool same = value.get<<%= param.idl_type.to_cxx_no_qualifiers %>>() == m_value; + udb_assert(same, "Runtime parameter value must match compile-time value"); + <%- end -%> +} + +SatisfiedResult <%= name_of(:param, cfg_arch, param) %>::defined(const Config& cfg) const { + return <%= + param_cxx_eval = lambda { |term, cxx_val| + type = term.comparison_type + + case type + when Udb::ParameterTerm::ParameterComparisonType::Equal + "#{cxx_val} == #{quot_str(term.comparison_value)}" + when Udb::ParameterTerm::ParameterComparisonType::NotEqual + "#{cxx_val} != #{quot_str(term.comparison_value)}" + when Udb::ParameterTerm::ParameterComparisonType::LessThan + "#{cxx_val} < #{quot_str(term.comparison_value)}" + when Udb::ParameterTerm::ParameterComparisonType::GreaterThan + "#{cxx_val} > #{quot_str(term.comparison_value)}" + when Udb::ParameterTerm::ParameterComparisonType::LessThanOrEqual + "#{cxx_val} <= #{quot_str(term.comparison_value)}" + when Udb::ParameterTerm::ParameterComparisonType::GreaterThanOrEqual + "#{cxx_val} >= #{quot_str(term.comparison_value)}" + when Udb::ParameterTerm::ParameterComparisonType::Includes + "std::find(#{cxx_val}.begin(), #{cxx_val}.end(), #{quot_str(term.comparison_value)}) != #{cxx_val}.end()" + when Udb::ParameterTerm::ParameterComparisonType::OneOf + "(#{T.cast(term.comparison_value, T::Array[T.any(Integer, String)]).map { |v| "#{cxx_val}==#{quot_str(v)}" }.join("||")})" + else + T.absurd(type) + end + } + + param.defined_by_condition.to_cxx do |term| + if term.is_a?(Udb::ExtensionTerm) + "cfg.ext_req_is_met(ExtensionName::#{term.name}, VersionRequirement(\"#{term.comparison.serialize}#{term.version}\"))" + elsif term.is_a?(Udb::ParameterTerm) + cxx_val = + "std::any_cast<#{cfg_arch.param(term.name).idl_type.to_cxx_no_qualifiers}>(cfg.param_value(\"#{term.name}\"))" + res = + if term.array_comparison? + if term.size + param_cxx_eval.call(term, "#{cxx_val}.size()") + elsif term.index + param_cxx_eval.call(term, "#{cxx_val}.at(#{term.index})") + elsif term.comparison_type == Udb::ParameterTerm::ParameterComparisonType::Includes + param_cxx_eval.call(term, cxx_val) + else + raise "unexpected array operation" + end + else + param_cxx_eval.call(term, cxx_val) + + end + + "(cfg.has_param_value(\"#{term.name}\") ? ((#{res}) ? Yes : No) : Maybe)" + elsif term.is_a?(XlenTerm) + raise "XlenTerm is unexpected in a parameter definition condition" + else + T.absurd(term) + end + end + %>; +} +<%- end -%> diff --git a/backends/cpp_hart_gen/templates/db_data.hxx.erb b/backends/cpp_hart_gen/templates/db_data.hxx.erb index a4f3d76697..944669a2b5 100644 --- a/backends/cpp_hart_gen/templates/db_data.hxx.erb +++ b/backends/cpp_hart_gen/templates/db_data.hxx.erb @@ -1,44 +1,182 @@ +// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +// SPDX-License-Identifier: BSD-3-Clause-Clear + #pragma once +#include #include #include #include #include #include +#include + +#include "udb/bits.hpp" +#include "udb/enum.hxx" #include "udb/version.hpp" using namespace std::literals; namespace udb { - class DbData { - DbData() = delete; - + class SatisfiedResult { public: - static std::map SCHEMAS; + enum class Type { + Yes, Maybe, No + }; + + SatisfiedResult() = delete; + constexpr SatisfiedResult(const Type &result) : m_result(result) {} + constexpr SatisfiedResult(const SatisfiedResult&) = default; + constexpr SatisfiedResult(SatisfiedResult&&) = default; - static std::vector params_for(const std::string& ext_name, const udb::Version& ext_ver) - { - <%- i = 0 -%> - <%- cfg_arch.extensions.each do |ext| -%> - <%= i.zero? ? "" : "else " %>if (ext_name == "<%= ext.name %>") { - <%- ext.versions.each do |ext_ver| -%> - if (ext_ver == udb::Version{"<%= ext_ver.version_str %>"sv}) { - return { - <%= ext_ver.params.map { |param| " \"#{param.name}\"" }.join(",\n") %> - }; - } else { - throw std::runtime_error("Bad extension version"); - return {}; - } - <%- end -%> + // define logical operators + SatisfiedResult operator&&(const SatisfiedResult& rhs) const { + if (m_result == Type::No || rhs.m_result == Type::No) { + return Type::No; + } else if (m_result == Type::Yes && rhs.m_result == Type::Maybe) { + return Type::Maybe; + } else if (m_result == Type::Maybe && rhs.m_result == Type::Yes) { + return Type::Maybe; + } else { + udb_assert(m_result == Type::Yes && rhs.m_result == Type::Yes, "missed a case"); + return Type::Yes; } - <%- i += 1 -%> - <%- end -%> - else { - throw std::runtime_error("Bad extension"); - return {}; + } + + SatisfiedResult operator||(const SatisfiedResult& rhs) const { + if (m_result == Type::Yes || rhs.m_result == Type::Yes) { + return Type::Yes; + } else if (m_result == Type::No && rhs.m_result == Type::Maybe) { + return Type::Maybe; + } else if (m_result == Type::Maybe && rhs.m_result == Type::No) { + return Type::Maybe; + } else { + udb_assert(m_result == Type::No && rhs.m_result == Type::No, "missed a case"); + return Type::No; } } + + SatisfiedResult operator!() const { + if (m_result == Type::Yes) { + return Type::No; + } else if (m_result == Type::No) { + return Type::Yes; + } else { + return Type::Maybe; + } + } + + bool operator==(const SatisfiedResult& rhs) const { + return m_result == rhs.m_result; + } + + bool operator!=(const SatisfiedResult& rhs) const { + return m_result != rhs.m_result; + } + + private: + const Type m_result; + }; + + static constexpr SatisfiedResult Yes(SatisfiedResult::Type::Yes); + static constexpr SatisfiedResult Maybe(SatisfiedResult::Type::Maybe); + static constexpr SatisfiedResult No(SatisfiedResult::Type::No); + + class Config; + class Parameter { + public: + constexpr Parameter(const std::string& name) : m_name(name) {} + + const std::string& name() const { return m_name; } + + virtual SatisfiedResult defined(const Config& cfg) const = 0; + + virtual bool has_value() const = 0; + + protected: + const std::string m_name; + }; + + // represents a full UDB config + class Config { + public: + struct ExtensionVersion { + std::string name; + Version version; + + ExtensionVersion(const std::string& _name, const std::string& _version) : name(_name), version(_version) {} + ExtensionVersion(const ExtensionVersion&) = default; + ExtensionVersion(ExtensionVersion&&) = default; + }; + + Config(const nlohmann::json& implemented_exts, const nlohmann::json& param_values); + Config(const Config&) = default; + Config(Config&&) = default; + + SatisfiedResult ext_req_is_met(const ExtensionName& ext_name, const VersionRequirement& req) const; + + const std::vector& implemented_exts() const { return m_implemented_exts; } + const std::map& implemented_exts_hash() const { return m_implemented_exts_hash; } + const ExtensionVersion& implemented_ext(const ExtensionName& name) const { return m_implemented_exts_hash.at(name); } + + bool has_param_value(const std::string& name) const { return m_param_values.contains(name); } + std::any param_value(const std::string& name) const { return m_param_values.at(name); } + + + private: + std::vector m_implemented_exts; + std::map m_implemented_exts_hash; + std::map m_param_values; + }; + + <%- cfg_arch.params.each do |param| -%> + + // <%= param.description.gsub("\n", "\n // ") %> + class <%= name_of(:param, cfg_arch, param) %> : public Parameter { + public: + // constructor without value + constexpr <%= name_of(:param, cfg_arch, param) %>() + : Parameter("<%= param.name %>") + {} + + // constructor with value + constexpr <%= name_of(:param, cfg_arch, param) %>(const nlohmann::json& value); + + SatisfiedResult defined(const Config& cfg) const override; + + <%- if cfg_arch.param_values.key?(param.name) -%> + bool has_value() const override { return true; } + <%- else -%> + bool has_value() const override { return m_value.has_value(); } + <%- end -%> + + <%- unless cfg_arch.param_values.key?(param.name) -%> + void set_value(<%= param.idl_type.to_cxx_no_qualifiers %> val) { + m_value = val; + } + <%- end -%> + + <%- if cfg_arch.param_values.key?(param.name) -%> + <%# we know the value, so it's constexpr %> + static constexpr <%= param.idl_type.to_cxx_no_qualifiers %> value() { return m_value; } + <%- else -%> + const <%= param.idl_type.to_cxx_no_qualifiers %> value() const { return m_value.value(); } + <%- end -%> + + private: + <%- if cfg_arch.param_values.key?(param.name) -%> + static constexpr <%= param.idl_type.to_cxx_no_qualifiers %> m_value = <%= cfg_arch.param_values.fetch(param.name).to_cxx %>; + <%- else -%> + std::optional<<%= param.idl_type.to_cxx_no_qualifiers %>> m_value; + <%- end -%> + }; + <%- end -%> + + class DbData { + DbData() = delete; + + public: + static std::map SCHEMAS; }; } diff --git a/backends/cpp_hart_gen/templates/func_prototypes.hxx.erb b/backends/cpp_hart_gen/templates/func_prototypes.hxx.erb index a67a637bfe..e97d29e81b 100644 --- a/backends/cpp_hart_gen/templates/func_prototypes.hxx.erb +++ b/backends/cpp_hart_gen/templates/func_prototypes.hxx.erb @@ -5,27 +5,18 @@ #define __UDB_CONST_GLOBAL(global_name) <%= name_of(:hart, cfg_arch) %>::global_name #define __UDB_MUTABLE_GLOBAL(global_name) global_name #define __UDB_STRUCT(struct_name) <%= name_of(:cfg, cfg_arch) %>_ ## struct_name ## _Struct -#define __UDB_STATIC_PARAM(param_name) <%= name_of(:params, cfg_arch) %>::param_name ## _VALUE +#define __UDB_STATIC_PARAM(param_name) <%= name_of(:params, cfg_arch) %>::param_name.value() <%# need to get symtab at function scope -%> <%- cfg_arch.reachable_functions.each do |func| -%> <%- next if func.builtin? || func.generated? -%> <%- symtab = cfg_arch.symtab.global_clone.push(nil) -%> -<%- if func.name == "ary_includes?" -%> -template -static constexpr bool ary_includes_Q_(const std::array& ary, const ValueType& value); - -template -bool ary_includes_Q_(const std::vector& ary, const ValueType& value); - -<%- else -%> <%- qualifiers = func.constexpr?(cfg_arch.symtab) ? "static constexpr" : "" -%> // // <%= func.description.gsub("\n", "\n// ") %> <%= func.gen_cpp_prototype(symtab, 0, qualifiers:) %> -<%- end -%> <%- symtab.release -%> <%- end -%> diff --git a/backends/cpp_hart_gen/templates/hart.hxx.erb b/backends/cpp_hart_gen/templates/hart.hxx.erb index 63502081d9..4b91764f14 100644 --- a/backends/cpp_hart_gen/templates/hart.hxx.erb +++ b/backends/cpp_hart_gen/templates/hart.hxx.erb @@ -94,13 +94,13 @@ namespace udb { static constexpr unsigned MXLEN = <%= cfg_arch.mxlen.nil? ? 64 : cfg_arch.mxlen %>; using XReg = Bits; - <%= hart_name -%>(uint64_t hart_id, SocType& soc, const nlohmann::json& cfg) + <%= hart_name -%>(uint64_t hart_id, SocType& soc, const Config& cfg) : HartBase(hart_id, soc, cfg), - m_params(<%= name_of(:params, cfg_arch) %>(cfg)), + m_params(cfg), <%- if cfg_arch.mxlen.nil? -%> m_xregs { <%- 32.times do |i| -%> - { WidthArg(m_params.MXLEN.get()) }, + { WidthArg(m_params.MXLEN.value()) }, <%- end -%> }, <%- end -%> @@ -125,8 +125,7 @@ namespace udb { <%- cfg_arch.not_prohibited_csrs.map do |csr| -%> { "<%= csr.name %>", &m_csrs.<%= csr.name %> }, <%- end -%> - }, - m_implemented_exts(expand_implemented_extensions(cfg["implemented_extensions"])) + } { m_xregs[0] = 0_b; // set x0 } @@ -149,11 +148,11 @@ namespace udb { bool implemented_version_Q_(const ExtensionName& ext, const VersionRequirement& req) const override { - auto ext_ver = this->m_implemented_exts.find(ext); - if (ext_ver == this->m_implemented_exts.end()) { + auto ext_ver = this->m_cfg.implemented_exts_hash().find(ext); + if (ext_ver == this->m_cfg.implemented_exts_hash().end()) { return false; } - return req.satisfied_by(ext_ver->second); + return req.satisfied_by(ext_ver->second.version); } @@ -161,28 +160,28 @@ namespace udb { bool _implemented_version_Q_() const { constexpr VersionRequirement req(ver_req_str.sv()); - <%- cfg_arch.transitive_prohibited_extension_versions.each do |ext_ver| -%> + <%- cfg_arch.prohibited_extension_versions.each do |ext_ver| -%> if constexpr ((ext == ExtensionName::<%= ext_ver.name %>) && (req.satisfied_by({"<%= ext_ver.version_str %>"sv}))) { return false; } <%- end -%> - auto ext_ver = this->m_implemented_exts.find(ext); - if (ext_ver == this->m_implemented_exts.end()) { + auto ext_ver = this->m_cfg.implemented_exts_hash().find(ext); + if (ext_ver == this->m_cfg.implemented_exts_hash().end()) { return false; } - return req.satisfied_by(ext_ver->second); + return req.satisfied_by(ext_ver->second.version); } bool implemented_Q_(const ExtensionName& ext) const override { - return this->m_implemented_exts.find(ext) != this->m_implemented_exts.end(); + return this->m_cfg.implemented_exts_hash().find(ext) != this->m_cfg.implemented_exts_hash().end(); } template bool _implemented_Q_() const { <%- cfg_arch.extensions.each do |ext| -%> - <%- if ext.versions.all? { |ext_ver| cfg_arch.transitive_prohibited_extension_versions.include?(ext_ver) } -%> + <%- if ext.versions.all? { |ext_ver| cfg_arch.prohibited_extension_versions.include?(ext_ver) } -%> if constexpr (ext == ExtensionName::<%= ext.name %>) { return false; } @@ -192,70 +191,10 @@ namespace udb { <%- if cfg_arch.fully_configured? -%> return true; <%- else -%> - return this->m_implemented_exts.find(ext) != this->m_implemented_exts.end(); + return this->m_cfg.implemented_exts_hash().find(ext) != this->m_cfg.implemented_exts_hash().end(); <%- end -%> } - // go through the list of implemented extensions, - // and add implications - std::map expand_implemented_extensions(const nlohmann::json& ext_ver_list) - { - std::deque> implied_exts; - std::map implemented_exts; - - for (auto ext : ext_ver_list) { - implemented_exts.emplace(ExtensionName::from_s(ext[0].get()), ext[1].get()); - } - for (auto ext : ext_ver_list) { - <%- cfg_arch.extensions.each do |ext| -%> - <%- ext.versions.each do |ext_ver| -%> - <%- unless ext_ver.implications.empty? -%> - if ((ext[0] == "<%= ext_ver.name %>") && (Version{ext[1]} == Version{"<%= ext_ver.version_str %>"sv})) { - <%- ext_ver.implications.each do |implied_ext_ver_and_cond| -%> - <%- unless implied_ext_ver_and_cond.cond.empty? -%> - { - auto implemented = [this](const std::string_view& ext_name, const std::string_view& req) -> bool { - for (const auto& pair : this->m_implemented_exts) { - if ((pair.first == ExtensionName::from_s(ext_name)) && (VersionRequirement(req).satisfied_by(Version(pair.second)))) { - return true; - } - } - return false; - }; - if (<%= implied_ext_ver_and_cond.cond.to_cxx { |ext_name, req| "implemented(\"#{ext_name}\"sv, \"#{req}\"sv)" } %>) { - implied_exts.push_back({ExtensionName::<%= implied_ext_ver_and_cond.ext_ver.name %>, Version{"<%= implied_ext_ver_and_cond.ext_ver.version_str %>"sv}}); - } - } - <%- else -%> - implied_exts.push_back({ExtensionName::<%= implied_ext_ver_and_cond.ext_ver.name %>, Version{"<%= implied_ext_ver_and_cond.ext_ver.version_str %>"sv}}); - <%- end -%> - <%- end -%> - } - <%- end -%> - <%- end -%> - <%- end -%> - } - - while (!implied_exts.empty()) { - auto implied_ext = implied_exts.front(); - implemented_exts.emplace(std::get<0>(implied_ext), std::get<1>(implied_ext)); - <%- cfg_arch.extensions.each do |ext| -%> - <%- ext.versions.each do |ext_ver| -%> - <%- unless ext_ver.implications.empty? -%> - if ((std::get<0>(implied_ext) == ExtensionName::<%= ext_ver.name %>) && (std::get<1>(implied_ext) == Version{"<%= ext_ver.version_str %>"sv})) { - <%- ext_ver.implications.each do |implied_ext_ver| -%> - implied_exts.push_back({ExtensionName::<%= ext_ver.name %>, Version{"<%= ext_ver.version_str %>"sv}}); - <%- end -%> - } - <%- end -%> - <%- end -%> - <%- end -%> - implied_exts.pop_front(); - } - - return implemented_exts; - } - bool implemented_csr_Q_(const Bits<12>& csr_addr) { return m_csr_addr_map.count(csr_addr) == 1; } @@ -541,8 +480,6 @@ namespace udb { std::array m_run_one_inst_storage; BasicBlockCache<__MAX_INST_CPP_SIZE> m_bb_cache; - - const std::map m_implemented_exts; }; } diff --git a/backends/cpp_hart_gen/templates/hart_factory.hxx.erb b/backends/cpp_hart_gen/templates/hart_factory.hxx.erb index 94b044e8f6..94a23f795b 100644 --- a/backends/cpp_hart_gen/templates/hart_factory.hxx.erb +++ b/backends/cpp_hart_gen/templates/hart_factory.hxx.erb @@ -95,10 +95,11 @@ namespace udb { { auto yaml = YAML::LoadFile(cfg_path.string()); nlohmann::json json = ConfigValidator::validate(yaml); + Config cfg(json["implemented_extensions"], json["params"]); <%- cfg_list.each do |config| -%> if (config_name == "<%= config %>") { - return new <%= name_of(:hart, config) %>(hart_id, soc, json); + return new <%= name_of(:hart, config) %>(hart_id, soc, cfg); } <%- end %> @@ -112,10 +113,11 @@ namespace udb { { auto yaml = YAML::Load(cfg_yaml); nlohmann::json json = ConfigValidator::validate(yaml); + Config cfg(json["implemented_extensions"], json["params"]); <%- cfg_list.each do |config| -%> if (config_name == "<%= config %>") { - return new <%= name_of(:hart, config) %>(hart_id, soc, json); + return new <%= name_of(:hart, config) %>(hart_id, soc, cfg); } <%- end %> diff --git a/backends/cpp_hart_gen/templates/hart_impl.hxx.erb b/backends/cpp_hart_gen/templates/hart_impl.hxx.erb index 915e1c8e84..70a3161a3d 100644 --- a/backends/cpp_hart_gen/templates/hart_impl.hxx.erb +++ b/backends/cpp_hart_gen/templates/hart_impl.hxx.erb @@ -83,7 +83,7 @@ namespace udb { InstBase* inst = reinterpret_cast(m_run_one_inst_storage.data()); if (_decode(m_pc, enc, inst) == false) { try { - raise(ExceptionCode{ExceptionCode::IllegalInstruction}, mode(), m_params.REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION ? enc : decltype(enc){0}); + raise(ExceptionCode{ExceptionCode::IllegalInstruction}, mode(), m_params.REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION.value() ? enc : decltype(enc){0}); } catch (const AbortInstruction& e) { return StopReason::Exception; } @@ -167,7 +167,7 @@ namespace udb { inst = current_bb->alloc_inst(); if (_decode(m_pc, enc, inst) == false) { - raise(ExceptionCode{ExceptionCode::IllegalInstruction}, mode(), m_params.REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION ? enc : decltype(enc){0}); + raise(ExceptionCode{ExceptionCode::IllegalInstruction}, mode(), m_params.REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION.value() ? enc : decltype(enc){0}); } fmt::print("PC {:x} {}\n", m_pc, inst->disassemble()); diff --git a/backends/cpp_hart_gen/templates/idl_funcs_impl.hxx.erb b/backends/cpp_hart_gen/templates/idl_funcs_impl.hxx.erb index 3119411385..8ad99f6c0c 100644 --- a/backends/cpp_hart_gen/templates/idl_funcs_impl.hxx.erb +++ b/backends/cpp_hart_gen/templates/idl_funcs_impl.hxx.erb @@ -14,8 +14,8 @@ #define __UDB_CONST_GLOBAL(global_name) <%= name_of(:hart, cfg_arch) %>::global_name #define __UDB_MUTABLE_GLOBAL(global_name) global_name #define __UDB_STRUCT(struct_name) <%= name_of(:cfg, cfg_arch) %>_ ## struct_name ## _Struct -#define __UDB_STATIC_PARAM(param_name) <%= name_of(:params, cfg_arch) %>::param_name ## _VALUE -#define __UDB_RUNTIME_PARAM(param_name) m_params.param_name +#define __UDB_STATIC_PARAM(param_name) <%= name_of(:params, cfg_arch) %>::param_name.value() +#define __UDB_RUNTIME_PARAM(param_name) m_params.param_name.value() #define __UDB_CSR_BY_NAME(csr_name) m_csrs.csr_name #define __UDB_CSR_BY_ADDR(csr_addr) (*csr(csr_addr)) #define __UDB_FUNC_CALL this-> @@ -32,18 +32,6 @@ namespace udb { <%# next unless func.templated? || func.constexpr?(cfg_arch.symtab) # non-templated functions come next -%> <%- symtab = cfg_arch.symtab.global_clone.push(func) -%> -<%- if func.name == "ary_includes?" -%> -template -template -constexpr bool <%= name_of(:hart, cfg_arch) %>::ary_includes_Q_(const std::array& ary, const ValueType& value) { - return std::ranges::find(ary, static_cast(value)) != std::ranges::end(ary); -} -template -template -bool <%= name_of(:hart, cfg_arch) %>::ary_includes_Q_(const std::vector& ary, const ValueType& value) { - return std::ranges::find(ary, static_cast(value)) != std::ranges::end(ary); -} -<%- else -%> // // <%= func.description.gsub("\n", "\n// ") %> template @@ -73,7 +61,6 @@ template <%- pruned_func = func.prune(symtab).freeze_tree(symtab) -%> <%= pruned_func.body.gen_cpp(symtab) %> } -<%- end -%> <%- symtab.release -%> <%- end -%> diff --git a/backends/cpp_hart_gen/templates/inst.hxx.erb b/backends/cpp_hart_gen/templates/inst.hxx.erb index 371a4d06f3..14b3a27ee3 100644 --- a/backends/cpp_hart_gen/templates/inst.hxx.erb +++ b/backends/cpp_hart_gen/templates/inst.hxx.erb @@ -47,8 +47,8 @@ namespace udb { #define __UDB_CSR_BY_ADDR(addr) (*(m_parent->csr(addr))) #define __UDB_CSR_BY_NAME(csr_name) m_parent->m_csrs.csr_name #define __UDB_ENCODING this->_encoding() -#define __UDB_RUNTIME_PARAM(field) m_parent->params().field -#define __UDB_STATIC_PARAM(param_name) <%= name_of(:params, cfg_arch) %>::param_name ## _VALUE +#define __UDB_RUNTIME_PARAM(param_name) m_parent->params().param_name.value() +#define __UDB_STATIC_PARAM(param_name) <%= name_of(:params, cfg_arch) %>::param_name.value() #define __UDB_STRUCT(type) <%= name_of(:cfg, cfg_arch) %>_ ## type ##_Struct #define __UDB_SET_PC(new_pc) m_parent->set_next_pc(new_pc) #define __UDB_PC m_parent->m_pc diff --git a/backends/cpp_hart_gen/templates/params.cxx.erb b/backends/cpp_hart_gen/templates/params.cxx.erb deleted file mode 100644 index 343b371cb2..0000000000 --- a/backends/cpp_hart_gen/templates/params.cxx.erb +++ /dev/null @@ -1,114 +0,0 @@ - -#include - -#include "udb/bits.hpp" -#include "udb/db_data.hxx" -#include "udb/cfgs/<%= cfg_arch.name %>/params.hxx" - -namespace udb { - template - void to_json(const nlohmann::json& j, _Bits& b) { - j = nlohmann::json { b.get() }; - } - - template - void to_json(const nlohmann::json& j, _PossiblyUnknownBits& b) { - j = nlohmann::json { b.get() }; - } - - template - void from_json(const nlohmann::json& j, _Bits& b) { - b = _Bits{j.get::StorageType>()}; - } - - template - void from_json(const nlohmann::json& j, _PossiblyUnknownBits& b) { - b = _PossiblyUnknownBits{_Bits{j.get::StorageType>()}, 0_b}; - } -} - -void udb::<%= name_of(:params, cfg_arch) %>::set_param(const std::string& param_name, const nlohmann::json& json) -{ - <%- i = 0 -%> - <%- cfg_arch.params_without_value.each do |param| -%> - <%= i.zero? ? "" : "else "%>if (param_name == "<%= param.name %>") { - <%= param.name %> = json; - } - <%- i += 1 -%> - <%- end -%> - else { - throw Error(fmt::format("{} is not a settable parameter", param_name)); - } -} - -void udb::<%= name_of(:params, cfg_arch) %>::set_param_default(const std::string& param_name) -{ - <%- i = 0 -%> - <%- cfg_arch.params_without_value.each do |param| -%> - <%- unless param.default.nil? -%> - <%= i.zero? ? "" : "else "%>if (param_name == "<%= param.name %>") { - <%- if param.default.is_a?(Integer) -%> - <%= param.name %> = <%= param.default %>_b; - <%- else -%> - <%= param.name %> = <%= param.default.to_cxx %>; - <%- end -%> - } - <%- i += 1 -%> - <%- end -%> - <%- end -%> - else { - throw Error(fmt::format("Missing required parameter '{}'", param_name)); - } -} - -static bool builtin_param(const std::string& param_name) -{ - <%- cfg_arch.params_with_value.each do |param| -%> - if (param_name == "<%= param.name %>") { - return true; - } - <%- end -%> - return false; -} - -void udb::<%= name_of(:params, cfg_arch) %>::init(const nlohmann::json& cfg) -{ - nlohmann::json params = cfg["params"]; - nlohmann::json exts = cfg["implemented_extensions"]; - - // first, check that any provided built-in parameters match the built-in value - <%- cfg_arch.params_with_value.each do |param| -%> - if (params.contains("<%= param.name %>")) { - if (params["<%= param.name %>"].get<<%= param.idl_type.to_cxx_no_qualifiers %>>() != <%= param.value.to_cxx %>) { - throw Error("Parameter '<%= param.name %>' must be '<%= param.value %>'"); - } - }; - <%- end -%> - - std::vector assigned_params; - // now check that we have values for all required non-built-in parameters - for (auto ext : exts) { - for (auto param_name : DbData::params_for(ext[0].get(), ext[1].get())) { - if (builtin_param(param_name)) { - continue; - } - if (!params.contains(param_name)) { - set_param_default(param_name); - } else { - set_param(param_name, params[param_name]); - } - assigned_params.emplace_back(param_name); - } - } - - // now make sure there isn't a parameter in the config that doesn't belong - for (auto& param : params.items()) { - bool was_assigned = - std::find(assigned_params.begin(), assigned_params.end(), param.key()) != assigned_params.end(); - bool is_builtin = builtin_param(param.key()); - - if (!(was_assigned || is_builtin)) { - throw Error(fmt::format("Parameter '{}' is not a parameter for model '<%= cfg_arch.name %>'", param.key())); - } - } -} diff --git a/backends/cpp_hart_gen/templates/params.hxx.erb b/backends/cpp_hart_gen/templates/params.hxx.erb index 6df7483564..84910b33a9 100644 --- a/backends/cpp_hart_gen/templates/params.hxx.erb +++ b/backends/cpp_hart_gen/templates/params.hxx.erb @@ -12,6 +12,8 @@ #include "udb/bits-yaml.hpp" +#include "udb/db_data.hxx" + namespace udb { struct <%= name_of(:params, cfg_arch) %> { @@ -21,30 +23,35 @@ namespace udb { explicit Error(const char* msg) : std::runtime_error(msg) {} }; - // all the compile-time-known parameters - <%- cfg_arch.params_with_value.each do |param| -%> - static constexpr <%= param.idl_type.to_cxx_no_qualifiers %> <%= param.name %>_VALUE = <%= param.value.to_cxx %>; + <%- cfg_arch.params.each do |param| -%> + + // <%= param.description.gsub("\n", "\n // ") %> + <%- if cfg_arch.param_values.key?(param.name) -%> + static constexpr <%= name_of(:param, cfg_arch, param) %> <%= param.name %> = {}; + <%- else -%> + <%= name_of(:param, cfg_arch, param) %> <%= param.name %>; + <%- end -%> + <%- end -%> // read parameters out of a YAML (or JSON) config file - <%= name_of(:params, cfg_arch) %>(const nlohmann::json& cfg) + <%= name_of(:params, cfg_arch) %>(const Config& cfg) { - init(cfg); + <%- cfg_arch.params.each do |param| -%> + <%- if cfg_arch.param_values.key?(param.name) -%> + udb_assert( + (std::any_cast<<%= param.idl_type.to_cxx_no_qualifiers %>>(cfg.param_value("<%= param.name %>")) == <%= param.name %>.value()), + fmt::format("Paramter '<%= param.name %>' has built-in value '<%= cfg_arch.param_values.fetch(param.name) %>', but was given a run-time value of '{}'", std::any_cast<<%= param.idl_type.to_cxx_no_qualifiers %>>(cfg.param_value("<%= param.name %>"))) + ); + <%- else -%> + if (<%= param.name %>.defined(cfg) == Yes) { + udb_assert(cfg.has_param_value("<%= param.name %>"), "Required parameter value for '<%= param.name %>' is missing"); + <%= param.name %>.set_value(std::any_cast<<%= param.idl_type.to_cxx_no_qualifiers %>>(cfg.param_value("<%= param.name %>"))); + } else { + udb_assert(!cfg.has_param_value("<%= param.name %>"), "'<%= param.name %>' is given a value in the config, but should not be defined"); + } + <%- end -%> + <%- end -%> } - - void init(const nlohmann::json& params); - - <%- declared_params = Set.new -%> - <%- cfg_arch.params_without_value.each do |param| -%> - <%- next if declared_params.include?(param.name) -%> - <%- declared_params << param.name -%> - - // <%= param.desc.gsub("\n", "\n // ") %> - <%= param.idl_type.to_cxx_no_qualifiers %> <%= param.name %>; - <%- end -%> - - private: - void set_param(const std::string& param_name, const nlohmann::json& json); - void set_param_default(const std::string& param_name); }; } diff --git a/backends/cpp_hart_gen/templates/structs.hxx.erb b/backends/cpp_hart_gen/templates/structs.hxx.erb index ab3eb2966c..3391664bd4 100644 --- a/backends/cpp_hart_gen/templates/structs.hxx.erb +++ b/backends/cpp_hart_gen/templates/structs.hxx.erb @@ -10,8 +10,8 @@ namespace udb { #define __UDB_STRUCT(name) <%= name_of(:cfg, cfg_arch) %>_ ## name ## _Struct -#define __UDB_STATIC_PARAM(param_name) <%= name_of(:params, cfg_arch) %>::param_name ## _VALUE -#define __UDB_RUNTIME_PARAM(param_name) hart->params().param_name +#define __UDB_STATIC_PARAM(param_name) <%= name_of(:params, cfg_arch) %>::param_name.value() +#define __UDB_RUNTIME_PARAM(param_name) hart->params().param_name.value() #define __UDB_HART hart <%- cfg_arch.global_ast.structs.each do |struct| -%> diff --git a/backends/ext_pdf_doc/templates/ext_pdf.adoc.erb b/backends/ext_pdf_doc/templates/ext_pdf.adoc.erb index 227c74b671..f4de7bf125 100644 --- a/backends/ext_pdf_doc/templates/ext_pdf.adoc.erb +++ b/backends/ext_pdf_doc/templates/ext_pdf.adoc.erb @@ -219,9 +219,9 @@ Version requirements are specified as conditions using the following operators: <%= version.name %> defines a single sub-extension: <%- end -%> -<%- version.implications.each do |implication_hsh| -%> -<%- sub_ext = implication_hsh.ext_ver -%> -<%- cond = implication_hsh.cond -%> +<%- version.implications.each do |cond_ext_ver| -%> +<%- sub_ext = cond_ext_ver.ext_ver -%> +<%- cond = cond_ext_ver.cond -%> ==== <%= sub_ext.name %> (<%= sub_ext.version_spec %>) <%= "if #{cond.to_asciidoc(join: ', ')}" unless cond.empty? %> <%= cfg_arch.extension(sub_ext.name).description %> @@ -246,14 +246,14 @@ The following <%= ext.instructions.size %> instructions are affected by this ext |=== | RV32 | RV64 | Mnemonic | Instruction <%- if versions.size > 1 -%>| <%= versions.map { |v| "v#{v.version}" }.join(" | ") %><%- end -%> -<%- inst_list = ext.instructions.select { |inst| versions.any? { |ext_ver| inst.defined_by_condition.possibly_satisfied_by?(ext_ver) } } -%> +<%- inst_list = ext.instructions -%> <%- inst_list.each do |i| -%> | <%= i.rv32? ? "✓" : "" %> | <%= i.rv64? ? "✓" : "" %> | `<%= i.name %> <%= i.assembly.gsub("x", "r").strip %>` | xref:insns-<%= i.name.gsub('.', '_') %>[<%= i.long_name %>] <%- if versions.size > 1 -%> -| <%= ext.versions.map { |v| i.defined_by_condition.possibly_satisfied_by?(v) ? "✓" : "" }.join(" | ") %> +| <%= ext.versions.map { |v| v.instructions.include?(i) ? "✓" : "" }.join(" | ") %> <%- end -%> <%- end -%> |=== @@ -261,7 +261,7 @@ The following <%= ext.instructions.size %> instructions are affected by this ext <%- if has_implications -%> === Instructions by sub-extension -<%- implications = versions.map { |v| v.implications.to_a }.flatten -%> +<%- implications = versions.map { |v| v.implications }.flatten -%> [%autowidth] |=== @@ -269,7 +269,7 @@ The following <%= ext.instructions.size %> instructions are affected by this ext <%- inst_list.each do |i| -%> | `<%= i.name %>` -| <%= implications.map { |e| i.defined_by_condition.possibly_satisfied_by?(e.ext_ver) ? "✓" : "" }.join(" | ") %> +| <%= implications.map { |e| i.defined_by_condition.satisfiability_depends_on_ext_req?(ExtensionRequirement.new(e.ext_ver.name, "~> #{e.ext_ver.version}", arch: cfg_arch)) ? "✓" : "" }.join(" | ") %> <%- end -%> |=== diff --git a/backends/instructions_appendix/templates/instructions.adoc.erb b/backends/instructions_appendix/templates/instructions.adoc.erb index d1e7c79142..2bf17b8851 100755 --- a/backends/instructions_appendix/templates/instructions.adoc.erb +++ b/backends/instructions_appendix/templates/instructions.adoc.erb @@ -81,16 +81,29 @@ Decode Variables:: <%- end -%> Included in:: -<%- if inst.defined_by_condition.flat? -%> -[options="autowrap,autowidth"] + +<%- if inst.defining_extension_requirements.any? { |cond_ext_req| cond_ext_req.cond.satisfied_by_cfg_arch?(cfg_arch) != Udb::SatisfiedResult::Yes } -%> + |=== -| Extension | Version -<% inst.defined_by_condition.flat_versions.each do |r| %> -| *<%= r.name %>* | <%= inst.fix_entities(r.requirement_specs_to_s) %> -<% end %> +| Extension | Version | When + +<%- inst.defining_extension_requirements.each do |cond_ext_req| -%> +| *<%= cond_ext_req.ext_req.to_s_pretty %>* +| <%= inst.fix_entities(cond_ext_req.ext_req.to_s_pretty) %> +| <%= cond_ext_req.cond.to_asciidoc %> +<%- end -%> |=== + <%- else -%> -<%= inst.fix_entities(inst.defined_by_condition.to_asciidoc) %> -<%- end -%> -<% end %> +|=== +| Extension | Version + +<%- inst.defining_extension_requirements.each do |cond_ext_req| -%> +| *<%= cond_ext_req.ext_req.to_s_pretty %>* +| <%= inst.fix_entities(cond_ext_req.ext_req.to_s_pretty) %> +<%- end -%> +|=== + +<%- end -%> +<%- end -%> diff --git a/backends/isa_explorer/isa_explorer.rb b/backends/isa_explorer/isa_explorer.rb index 6a9888c073..a781e48501 100644 --- a/backends/isa_explorer/isa_explorer.rb +++ b/backends/isa_explorer/isa_explorer.rb @@ -5,10 +5,15 @@ # Generate require "sorbet-runtime" +require "tty-progressbar" require "write_xlsx" +require "sorbet-runtime" + require "udb/architecture" +extend T::Sig + # @param presence [String] Can be nil # @return [String] m=mandatory, o=optional, n=not present def presence2char(presence) @@ -18,7 +23,7 @@ def presence2char(presence) "m" elsif presence == Udb::Presence.optional "o" - elsif presence == '-' + elsif presence == "-" "n" else raise ArgumentError, "Unknown presence of #{presence}" @@ -35,21 +40,22 @@ def arch2ext_table(arch) ext_table = { # Array of hashes "columns" => [ - {name: "Extension Name", formatter: "link", sorter: "alphanum", headerFilter: true, frozen: true, formatterParams: + { name: "Extension Name", formatter: "link", sorter: "alphanum", headerFilter: true, frozen: true, formatterParams: { - labelField:"Extension Name", + labelField: "Extension Name", urlPrefix: "https://riscv-software-src.github.io/riscv-unified-db/manual/html/isa/isa_20240411/exts/" } }, - {name: "Description", formatter: "textarea", sorter: "alphanum", headerFilter: true}, - {name: "IC", formatter: "textarea", sorter: "alphanum", headerFilter: true}, - {name: "Implies\n(Exts)", formatter: "textarea", sorter: "alphanum"}, - {name: "Requires\n(Ext Reqs)", formatter: "textarea", sorter: "alphanum"}, - {name: "Incompatible\n(Ext Reqs)", formatter: "textarea", sorter: "alphanum"}, - {name: "Ratified", formatter: "textarea", sorter: "boolean", headerFilter: true}, - {name: "Ratification\nDate", formatter: "textarea", sorter: "alphanum", headerFilter: true}, + { name: "Description", formatter: "textarea", sorter: "alphanum", headerFilter: true }, + { name: "IC", formatter: "textarea", sorter: "alphanum", headerFilter: true }, + { name: "Requires\n(Exts)", formatter: "textarea", sorter: "alphanum" }, + { name: "Transitive Requires\n(Ext)", formatter: "textarea", sorter: "alphanum" }, + { name: "Incompatible\n(Ext Reqs)", formatter: "textarea", sorter: "alphanum" }, + { name: "Transitive Incompatible\n(Ext Ver)", formatter: "textarea", sorter: "alphanum" }, + { name: "Ratified", formatter: "textarea", sorter: "boolean", headerFilter: true }, + { name: "Ratification\nDate", formatter: "textarea", sorter: "alphanum", headerFilter: true }, sorted_profile_releases.map do |pr| - {name: "#{pr.name}", formatter: "textarea", sorter: "alphanum", headerFilter: true} + { name: "#{pr.name}", formatter: "textarea", sorter: "alphanum", headerFilter: true } end ].flatten, @@ -58,13 +64,35 @@ def arch2ext_table(arch) } arch.extensions.sort_by!(&:name).each do |ext| + next if ext.name == "Shcounterenw" + next if ext.name == "Sscounterenw" + next if ext.name == "Sha" row = [ ext.name, # Name ext.long_name, # Description ext.compact_priv_type, # IC - ext.max_version.implications.map{|cond_ext_ver| cond_ext_ver.ext_ver.name}.uniq, # Implies - ext.max_version.requirement_condition.empty? ? "" : ext.max_version.requirement_condition.to_logic_tree.to_s, # Requires - ext.conflicts_condition.empty? ? "" : ext.conflicts_condition.to_logic_tree.to_s, # Incompatible + ext.max_version.ext_requirements(expand: false).map do |cond_ext_req| + if cond_ext_req.cond.empty? + cond_ext_req.ext_req.name + else + "#{cond_ext_req.ext_req.name} if #{cond_ext_req.cond}" + end + end.uniq, # Requires + ext.max_version.ext_requirements(expand: true).map do |cond_ext_req| + if cond_ext_req.cond.empty? + cond_ext_req.ext_req.name + else + "#{cond_ext_req.ext_req.name} if #{cond_ext_req.cond}" + end + end.uniq, # Transitive Requires + ext.max_version.ext_conflicts(expand: false).map do |cond_ext_req| + if cond_ext_req.cond.empty? + cond_ext_req.ext_req.name + else + "#{cond_ext_req.ext_req.name} unless #{cond_ext_req.cond.to_asciidoc}" + end + end.uniq, # Conlifct + ext.max_version.unconditional_extension_version_conflicts.map(&:to_s), # Transitive Conlifct ext.ratified, if ext.ratified if ext.min_ratified_version.ratification_date.nil? || ext.min_ratified_version.ratification_date.empty? @@ -96,16 +124,16 @@ def arch2inst_table(arch) inst_table = { # Array of hashes "columns" => [ - {name: "Instruction Name", formatter: "link", sorter: "alphanum", headerFilter: true, frozen: true, formatterParams: + { name: "Instruction Name", formatter: "link", sorter: "alphanum", headerFilter: true, frozen: true, formatterParams: { - labelField:"Instruction Name", + labelField: "Instruction Name", urlPrefix: "https://riscv-software-src.github.io/riscv-unified-db/manual/html/isa/isa_20240411/insts/" } }, - {name: "Description", formatter: "textarea", sorter: "alphanum", headerFilter: true}, - {name: "Assembly", formatter: "textarea", sorter: "alphanum", headerFilter: true}, + { name: "Description", formatter: "textarea", sorter: "alphanum", headerFilter: true }, + { name: "Assembly", formatter: "textarea", sorter: "alphanum", headerFilter: true }, sorted_profile_releases.map do |pr| - {name: "#{pr.name}", formatter: "textarea", sorter: "alphanum", headerFilter: true} + { name: "#{pr.name}", formatter: "textarea", sorter: "alphanum", headerFilter: true } end ].flatten, @@ -114,15 +142,15 @@ def arch2inst_table(arch) } insts = arch.instructions.sort_by!(&:name) - progressbar = ProgressBar.create(title: "Instruction Table", total: insts.size) + progressbar = TTY::ProgressBar.new("Instruction Table [:bar]", total: insts.size, output: $stdout) insts.each do |inst| - progressbar.increment + progressbar.advance row = [ inst.name, inst.long_name, - inst.name + " " + inst.assembly.gsub('x', 'r') + inst.name + " " + inst.assembly.gsub("x", "r") ] sorted_profile_releases.each do |pr| @@ -144,16 +172,16 @@ def arch2csr_table(arch) csr_table = { # Array of hashes "columns" => [ - {name: "CSR Name", formatter: "link", sorter: "alphanum", headerFilter: true, frozen: true, formatterParams: + { name: "CSR Name", formatter: "link", sorter: "alphanum", headerFilter: true, frozen: true, formatterParams: { - labelField:"CSR Name", + labelField: "CSR Name", urlPrefix: "https://riscv-software-src.github.io/riscv-unified-db/manual/html/isa/isa_20240411/csrs/" } }, - {name: "Address", formatter: "textarea", sorter: "number", headerFilter: true}, - {name: "Description", formatter: "textarea", sorter: "alphanum", headerFilter: true}, + { name: "Address", formatter: "textarea", sorter: "number", headerFilter: true }, + { name: "Description", formatter: "textarea", sorter: "alphanum", headerFilter: true }, sorted_profile_releases.map do |pr| - {name: "#{pr.name}", formatter: "textarea", sorter: "alphanum", headerFilter: true} + { name: "#{pr.name}", formatter: "textarea", sorter: "alphanum", headerFilter: true } end ].flatten, @@ -162,10 +190,10 @@ def arch2csr_table(arch) } csrs = arch.csrs.sort_by!(&:name) - progressbar = ProgressBar.create(title: "CSR Table", total: csrs.size) + progressbar = TTY::ProgressBar.new("CSR Table [:bar]", total: csrs.size, output: $stdout) csrs.each do |csr| - progressbar.increment + progressbar.advance raise "Indirect CSRs not yet supported for CSR #{csr.name}" if csr.address.nil? @@ -194,7 +222,7 @@ def gen_xlsx_table(table, workbook, worksheet) # Add and define a header format header_format = workbook.add_format header_format.set_bold - header_format.set_align('center') + header_format.set_align("center") # Add column names in 1st row (row 0). col_num = 0 @@ -292,19 +320,19 @@ def gen_js_table(table, div_name, output_pname) rows.each do |row| items = [] columns.each_index do |i| - column = columns[i] - column_name = column[:name].gsub("\n", " ") - cell = row[i] - if cell.is_a?(String) - cell_fmt = '"' + row[i].gsub("\n", "\\n") + '"' - elsif cell.is_a?(TrueClass) || cell.is_a?(FalseClass) || cell.is_a?(Integer) - cell_fmt = "#{cell}" - elsif cell.is_a?(Array) - cell_fmt = '"'+ cell.join("\\n") + '"' - else - raise ArgumentError, "Unknown cell class of #{cell.class} for '#{cell}'" - end - items.append('"' + column_name + '":' + cell_fmt) + column = columns[i] + column_name = column[:name].gsub("\n", " ") + cell = row[i] + if cell.is_a?(String) + cell_fmt = '"' + row[i].gsub("\n", "\\n") + '"' + elsif cell.is_a?(TrueClass) || cell.is_a?(FalseClass) || cell.is_a?(Integer) + cell_fmt = "#{cell}" + elsif cell.is_a?(Array) + cell_fmt = '"' + cell.join("\\n") + '"' + else + raise ArgumentError, "Unknown cell class of #{cell.class} for '#{cell}'" + end + items.append('"' + column_name + '":' + cell_fmt) end fp.write " {" + items.join(", ") + "},\n" end @@ -412,12 +440,12 @@ def get_sorted_profile_releases(arch) sorted_profile_releases = arch.profile_releases.sort_by(&:name) # Remove Mock profile release if present. - sorted_profile_releases.delete_if {|pr| pr.name == "Mock" } + sorted_profile_releases.delete_if { |pr| pr.name == "Mock" } # Move RVI20 to the beginning of the array if it exists. - if sorted_profile_releases.any? {|pr| pr.name == "RVI20" } - sorted_profile_releases.delete_if {|pr| pr.name == "RVI20" } - sorted_profile_releases.unshift(arch.profile_release("RVI20")) + if sorted_profile_releases.any? { |pr| pr.name == "RVI20" } + sorted_profile_releases.delete_if { |pr| pr.name == "RVI20" } + sorted_profile_releases.unshift(T.must(arch.profile_release("RVI20"))) end return sorted_profile_releases diff --git a/backends/manual/templates/ext.adoc.erb b/backends/manual/templates/ext.adoc.erb index b5818a9b7a..cd4f6bf121 100644 --- a/backends/manual/templates/ext.adoc.erb +++ b/backends/manual/templates/ext.adoc.erb @@ -4,39 +4,48 @@ == Versions -<%- ext.versions.each do |v| -%> -<%= v.canonical_version %>:: - State::: - <%= v.state %> - <%- if v.state == "ratified" -%> - Ratification date::: - <%= v.ratification_date %> - <%- end -%> - <%- unless v.changes.empty? -%> - Changes::: - - <%- v.changes.each do |change| %> - * <%= change %> - <%- end -%> - - <%- end -%> - <%- unless v.url.nil? -%> - Ratification document::: - <%= v.url %> - <%- end -%> - <%- unless v.implications -%> - Implies::: - <%- v.implications.each do |i| -%> - * `<%= i.name %>` version <%= i.version %> - <%- end -%> - <%- end -%> +<% ext.versions.each do |v| -%> +[frame="none",grid="none",cols="1,3"] +|=== +2+^| Version <%= v.canonical_version %> + +h| State | <%= v.state %> +<% if v.state == "ratified" && !v.ratification_date.nil? -%> +h| Ratification date | <%= v.ratification_date %> +<% end # if %> +<% unless v.changes.empty? -%> +h| Changes a| + + <% v.changes.each do |c| -%> + * <%= c %> + <% end -%> + +<% end -%> +<% unless v.url.nil? -%> +h| Ratification document | <%= v.url %> +<% end -%> +<% unless v.defining_extension_requirements.empty? -%> +h| Requirements a| + +!=== +! Extension ! Version ! When + +<%- v.defining_extension_requirements.each do |cond_ext_req| -%> +! <%= cond_ext_req.ext_req.name %> +! <%= cond_ext_req.ext_req.requirement_specs_to_s_pretty %> +! <%= cond_ext_req.cond.empty? ? "always" : cond_ext_req.cond.to_asciidoc %> <%- end -%> +!=== +<% end -%> +|=== +<% end -%> + == Synopsis <%= ext.description %> -<%- insts = ext.instructions.select { |inst| ext.versions.any? { |ext_ver| inst.defined_by_condition.possibly_satisfied_by?(ext_ver) } } -%> +<%- insts = ext.instructions -%> <%- unless insts.empty? -%> == Instructions @@ -61,9 +70,27 @@ This extension has the following implementation options (AKA parameters): + -- |=== -h| Type | <%= param.schema.type_pretty %> -h| Valid Values | <%= param.schema.to_pretty_s %> -h| Description a| <%= param.desc %> +h| Type +<%- if param.schema_known? -%> +| <%= param.schema.type_pretty %> +<%- else -%> +| +<%- param.schemas.each do |cond_schema| -%> +<%- next unless cond_schema.cond.could_be_satisfied_by_cfg_arch?(cfg_arch) -%> +<%= cond_schema.schema.type_pretty %> when <%= cond_schema.cond.to_asciidoc %> +<%- end-%> +<%- end -%> +h| Valid Values +<%- if param.schema_known? -%> +| <%= param.schema.to_pretty_s %> +<%- else -%> +| +<%- param.schemas.each do |cond_schema| -%> +<%- next unless cond_schema.cond.could_be_satisfied_by_cfg_arch?(cfg_arch) -%> +<%= cond_schema.schema.to_pretty_s %> when <%= cond_schema.cond.to_asciidoc %> +<%- end-%> +<%- end-%> +h| Description a| <%= param.description %> |=== -- <%- end -%> diff --git a/backends/manual/templates/instruction.adoc.erb b/backends/manual/templates/instruction.adoc.erb index 4f7b7f504d..c9275936c3 100644 --- a/backends/manual/templates/instruction.adoc.erb +++ b/backends/manual/templates/instruction.adoc.erb @@ -173,25 +173,5 @@ RV64:: == Containing profiles -<%- inst_mandatory_ext = [] -%> -<%- inst_optional_ext = [] -%> -<%- cfg_arch.profiles.each do |profile| -%> -<%- - in_profile_mandatory = profile.mandatory_ext_reqs.any? do |ext_req| - ext_versions = ext_req.satisfying_versions - ext_versions.any? { |ext_ver| inst.defined_by_condition.possibly_satisfied_by?(ext_ver) } - end - in_profile_optional = !in_profile_mandatory && profile.optional_ext_reqs.any? do |ext_req| - ext_versions = ext_req.satisfying_versions - ext_versions.any? { |ext_ver| inst.defined_by_condition.possibly_satisfied_by?(ext_ver) } - end - if in_profile_mandatory --%> -<%- inst_mandatory_ext.push(profile.marketing_name) -%> -<%- elsif in_profile_optional -%> -<%- inst_optional_ext.push(profile.marketing_name) -%> -<%- end -%> -<%- end -%> - -* Mandatory: <%= inst_mandatory_ext.join(", ") %> -* Optional: <%= inst_optional_ext.join(", ") %> +* Mandatory: <%= inst.profiles_mandating_inst.empty? ? 'None' : inst.profiles_mandating_inst.map(&:marketing_name).join(", ") %> +* Optional: <%= inst.profiles_optioning_inst.empty? ? 'None' : inst.profiles_optioning_inst.map(&:marketing_name).join(", ") %> diff --git a/backends/manual/templates/param_list.adoc.erb b/backends/manual/templates/param_list.adoc.erb index 21a2a70d5f..d6408d4f5c 100644 --- a/backends/manual/templates/param_list.adoc.erb +++ b/backends/manual/templates/param_list.adoc.erb @@ -1,18 +1,25 @@ = Architectural Parameters <%- - params = manual_version.extensions.map{ |e| e.params }.flatten.uniq(&:name).sort_by!(&:name) + params = manual_version.extensions.map{ |e| e.params }.flatten.sort_by!(&:name) -%> The following <%= params.size %> parameters are defined in this manual: |=== -| Name | Type | Extension(s) | Description +| Name | Type | Existence | Description <%- params.each do |param| -%> | <%= param.name %> +<%- if param.schema_known? -%> | <%= param.schema.to_pretty_s %> -| <%= param.exts.map { |ext| link_to_udb_doc_ext_param(ext.name, param.name, ext.name) }.join(", ") %> -a| <%= param.desc %> +<%- else -%> +<%- param.schemas.each do |cond_schema| -%> +<%- next unless cond_schema.cond.could_be_satisfied_by_cfg_arch?(cfg_arch) -%> +a| <%= cond_schema.schema.to_pretty_s %> when <%= cond_schema.cond.to_asciidoc %> +<%- end -%> +<%- end -%> +a| <%= param.defined_by_condition.to_asciidoc -%> +a| <%= param.description %> <%- end -%> |=== diff --git a/backends/portfolio/templates/ext_appendix.adoc.erb b/backends/portfolio/templates/ext_appendix.adoc.erb index e389aa0cd4..5792c41f64 100644 --- a/backends/portfolio/templates/ext_appendix.adoc.erb +++ b/backends/portfolio/templates/ext_appendix.adoc.erb @@ -21,33 +21,43 @@ |=== <% end # portfolios.size > 1 -%> -<% ext.versions.each do |v| -%> -<%= v.canonical_version %>:: - State::: - <%= v.state %> - <% if v.state == "ratified" && !v.ratification_date.nil? -%> - Ratification date::: - <%= v.ratification_date %> - <% end # if %> - <% unless v.changes.empty? -%> - Changes::: +==== Available Versions + +<% ext.versions.select { |ext_ver| ext_req.satisfied_by?(ext_ver) }.each do |v| -%> +[frame="none",grid="none",cols="1,3"] +|=== +2+^| Version <%= v.canonical_version %> + +h| State | <%= v.state %> +<% if v.state == "ratified" && !v.ratification_date.nil? -%> +h| Ratification date | <%= v.ratification_date %> +<% end # if %> +<% unless v.changes.empty? -%> +h| Changes a| <% v.changes.each do |c| -%> * <%= c %> <% end -%> - <% end -%> - <% unless v.url.nil? -%> - Ratification document::: - <%= v.url %> - <% end -%> - <% unless v.implications.empty? -%> - Implies::: - <%- v.implications.each do |i| -%> - <%- next unless i.cond.satisfied_by? { |ext_req| portfolio_design.cfg_arch.possible_extension_versions.any? { |ext_ver| ext_req.satisfied_by?(ext_ver)}} -%> - * `<%= i.ext_ver.name %>` version <%= i.ext_ver.version_str %> - <%- end -%> - <% end -%> +<% end -%> +<% unless v.url.nil? -%> +h| Ratification document | <%= v.url %> +<% end -%> +<% unless v.defining_extension_requirements.empty? -%> +h| Requirements a| + +!=== +! Extension ! Version ! When + +<%- v.defining_extension_requirements.each do |cond_ext_req| -%> +! <%= cond_ext_req.ext_req.name %> +! <%= cond_ext_req.ext_req.requirement_specs_to_s_pretty %> +! <%= cond_ext_req.cond.empty? ? "always" : cond_ext_req.cond.to_asciidoc %> +<%- end -%> + +!=== +<% end -%> +|=== <% end -%> ==== Synopsis @@ -105,13 +115,13 @@ The following <%= csrs.size %> CSRs are added by extension version <%= min_ext_v <% if portfolio_design.in_scope_params(ext_req).empty? && portfolio_design.out_of_scope_params(ext_req.name).empty? -%> ==== Parameters -This extension has the following parameters (AKA implementation options): +The following parameters (implementation options) may affect the operation of this extension: <% ext.params.sort_by { |p| p.name }.each do |param| -%> <%= param.name %>:: + -- -<%= param.desc %> +<%= param.description %> -- <% end # do param -%> diff --git a/backends/profile/templates/profile.adoc.erb b/backends/profile/templates/profile.adoc.erb index bc08e6d777..e8cb4202bf 100644 --- a/backends/profile/templates/profile.adoc.erb +++ b/backends/profile/templates/profile.adoc.erb @@ -339,7 +339,7 @@ associated implementation-defined parameters. <%= param.name %>:: + -- -<%= param.desc %> +<%= param.description %> -- <% end -%> <% end -%> diff --git a/bin/.container-tag b/bin/.container-tag index 68c123cf10..51176c7c89 100644 --- a/bin/.container-tag +++ b/bin/.container-tag @@ -1 +1 @@ -0.10 +0.11 diff --git a/bin/setup b/bin/setup index 1e340e4986..a623456c7c 100755 --- a/bin/setup +++ b/bin/setup @@ -175,9 +175,6 @@ if [ ! -d $ROOT/.home ]; then fi if [ $PRESERVE_CONFIG -eq 0 ] || [ ! -f $ROOT/.bundle/config ]; then - if [ -f $ROOT/.bundle/config ] && [ $PRESERVE_CONFIG -eq 0 ]; then - echo "Recreating bundle config..." - fi OLDDIR=$PWD cd $ROOT ${RUN} bundle config set --local path ${ROOT}/.home/.gems diff --git a/cfgs/MC100-32.yaml b/cfgs/MC100-32.yaml index 1a2f023aee..bcbf790b31 100644 --- a/cfgs/MC100-32.yaml +++ b/cfgs/MC100-32.yaml @@ -15,7 +15,8 @@ mandatory_extensions: additional_extensions: false params: MXLEN: 32 - MISALIGNED_SPLIT_STRATEGY: by_byte + MISALIGNED_LDST: true + MISALIGNED_SPLIT_STRATEGY: sequential_bytes PRECISE_SYNCHRONOUS_EXCEPTIONS: true TRAP_ON_ECALL_FROM_M: true TRAP_ON_EBREAK: true diff --git a/cfgs/example_rv64_with_overlay.yaml b/cfgs/example_rv64_with_overlay.yaml index 4cbf9ea21a..c65fb75edf 100644 --- a/cfgs/example_rv64_with_overlay.yaml +++ b/cfgs/example_rv64_with_overlay.yaml @@ -43,10 +43,10 @@ params: NAME: example_rv64_with_overlay # vendor-specific architecture ID in marchid - ARCH_ID: 0x1000000000000000 + ARCH_ID_VALUE: 0x1000000000000000 # vendor-specific implementation ID in mimpid - IMP_ID: 0x0 + IMP_ID_VALUE: 0x0 # JEDEC Vendor ID bank VENDOR_ID_BANK: 0x0 @@ -62,7 +62,7 @@ params: MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE: 0 - MISALIGNED_SPLIT_STRATEGY: by_byte + MISALIGNED_SPLIT_STRATEGY: sequential_bytes # whether or not the implementation supports misaligned atomics MISALIGNED_AMO: false @@ -457,29 +457,29 @@ params: # # * 32: SXLEN is always 32 # * 64: SXLEN is always 64 - # * 3264: SXLEN can be changed (via mstatus.SXL) between 32 and 64 - SXLEN: 64 + # * [32, 64]: SXLEN can be changed (via mstatus.SXL) between 32 and 64 + SXLEN: [64] # XLENs supported in U-mode. Can be one of: # # * 32: SXLEN is always 32 # * 64: SXLEN is always 64 - # * 3264: SXLEN can be changed (via mstatus.SXL) between 32 and 64 - UXLEN: 64 + # * [32, 64]: SXLEN can be changed (via mstatus.SXL) between 32 and 64 + UXLEN: [64] # XLENs supported in VS-mode. Can be one of: # # * 32: VSXLEN is always 32 # * 64: VSXLEN is always 64 - # * 3264: VSXLEN can be changed (via hstatus.VSXL) between 32 and 64 - VSXLEN: 64 + # * [32, 64]: VSXLEN can be changed (via hstatus.VSXL) between 32 and 64 + VSXLEN: [64] # XLENs supported in VS-mode. Can be one of: # # * 32: VSXLEN is always 32 # * 64: VSXLEN is always 64 - # * 3264: VSXLEN can be changed (via hstatus.VSXL) between 32 and 64 - VUXLEN: 64 + # * [32, 64]: VSXLEN can be changed (via hstatus.VSXL) between 32 and 64 + VUXLEN: [64] # Strategy used to handle reservation sets # @@ -547,7 +547,6 @@ params: MTVEC_BASE_ALIGNMENT_DIRECT: 4 MTVEC_BASE_ALIGNMENT_VECTORED: 4 MSTATUS_FS_LEGAL_VALUES: [0, 1, 2, 3] - MSTATUS_FS_WRITABLE: true MSTATUS_TVM_IMPLEMENTED: true HW_MSTATUS_FS_DIRTY_UPDATE: precise MSTATUS_VS_WRITABLE: true diff --git a/cfgs/mc100-32-full-example.yaml b/cfgs/mc100-32-full-example.yaml index 592c23e49b..38030f6464 100644 --- a/cfgs/mc100-32-full-example.yaml +++ b/cfgs/mc100-32-full-example.yaml @@ -15,14 +15,14 @@ implemented_extensions: - [Smrnmi, "1.0"] params: MXLEN: 32 - ARCH_ID: 0 - IMP_ID: 0 + ARCH_ID_VALUE: 0 + IMP_ID_VALUE: 0 VENDOR_ID_BANK: 1 VENDOR_ID_OFFSET: 1 MISALIGNED_LDST: true MISALIGNED_LDST_EXCEPTION_PRIORITY: low MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE: 4 - MISALIGNED_SPLIT_STRATEGY: by_byte + MISALIGNED_SPLIT_STRATEGY: sequential_bytes PRECISE_SYNCHRONOUS_EXCEPTIONS: true TRAP_ON_ECALL_FROM_M: true TRAP_ON_EBREAK: true diff --git a/cfgs/qc_iu.yaml b/cfgs/qc_iu.yaml index 6ce8246ee3..f58185b4c3 100644 --- a/cfgs/qc_iu.yaml +++ b/cfgs/qc_iu.yaml @@ -7,24 +7,24 @@ name: qc_iu arch_overlay: qc_iu description: Configuration with the Xqci and Xqccmp custom extensions. implemented_extensions: - - { name: Sm, version: "1.13" } - - { name: Smhpm, version: "1.13" } - - { name: Smrnmi, version: "1.0" } - - { name: Smdbltrp, version: "1.0" } - - { name: I, version: "2.1" } - - { name: M, version: "2.0" } - - { name: B, version: "1.0" } - - { name: Zca, version: "1.0" } - - { name: Zcb, version: "1.0" } - - { name: Zicntr, version: "2.0" } - - { name: Zicsr, version: "2.0" } - - { name: Zihpm, version: "2.0" } - - { name: Xqccmp, version: "0.3" } - - { name: Xqci, version: "0.8" } + - { name: Sm, version: "= 1.13" } + - { name: Smhpm, version: "= 1.13" } + - { name: Smrnmi, version: "= 1.0" } + - { name: Smdbltrp, version: "= 1.0" } + - { name: I, version: "= 2.1" } + - { name: M, version: "= 2.0" } + - { name: B, version: "= 1.0" } + - { name: Zca, version: "= 1.0" } + - { name: Zcb, version: "= 1.0" } + - { name: Zicntr, version: "= 2.0" } + - { name: Zicsr, version: "= 2.0" } + - { name: Zihpm, version: "= 2.0" } + - { name: Xqccmp, version: "= 0.3" } + - { name: Xqci, version: "= 0.8" } params: MXLEN: 32 PHYS_ADDR_WIDTH: 32 - ARCH_ID: 0 + ARCH_ID_VALUE: 0 CONFIG_PTR_ADDRESS: 0 HPM_EVENTS: [] MTVEC_MODES: [0, 1] @@ -132,13 +132,13 @@ params: PRECISE_SYNCHRONOUS_EXCEPTIONS: true TRAP_ON_ECALL_FROM_M: true TRAP_ON_EBREAK: true - IMP_ID: 0 # TODO + IMP_ID_VALUE: 0 # TODO VENDOR_ID_BANK: 0 # TODO VENDOR_ID_OFFSET: 0 # TODO MISALIGNED_LDST: false MISALIGNED_LDST_EXCEPTION_PRIORITY: low MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE: 0 - MISALIGNED_SPLIT_STRATEGY: by_byte + MISALIGNED_SPLIT_STRATEGY: sequential_bytes TRAP_ON_ILLEGAL_WLRL: true TRAP_ON_UNIMPLEMENTED_INSTRUCTION: true TRAP_ON_RESERVED_INSTRUCTION: true diff --git a/cfgs/rv32-riscv-tests.yaml b/cfgs/rv32-riscv-tests.yaml index a7eac07de2..b9e9a38fe4 100644 --- a/cfgs/rv32-riscv-tests.yaml +++ b/cfgs/rv32-riscv-tests.yaml @@ -7,8 +7,10 @@ name: rv32-riscv-tests description: A compliant full config for rv32 riscv-tests implemented_extensions: - [Sm, "1.11.0"] + - ["Smstateen", "1.0.0"] - [I, "2.1"] - [C, "2.0"] + - [Zca, "1.0.0"] - [M, "2.0"] - [Zicsr, "2.0"] - [Zicntr, "2.0"] @@ -21,16 +23,19 @@ implemented_extensions: params: MXLEN: 32 - ARCH_ID: 0 - IMP_ID: 0 + MARCHID_IMPLEMENTED: true + ARCH_ID_VALUE: 1 + MIMPID_IMPLEMENTED: true + IMP_ID_VALUE: 0 VENDOR_ID_BANK: 1 VENDOR_ID_OFFSET: 1 MISALIGNED_LDST: true MISALIGNED_LDST_EXCEPTION_PRIORITY: low MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE: 4 - MISALIGNED_SPLIT_STRATEGY: by_byte + MISALIGNED_SPLIT_STRATEGY: sequential_bytes PRECISE_SYNCHRONOUS_EXCEPTIONS: true TRAP_ON_ECALL_FROM_M: true + TRAP_ON_ECALL_FROM_U: true TRAP_ON_EBREAK: true M_MODE_ENDIANNESS: little TRAP_ON_ILLEGAL_WLRL: true @@ -49,16 +54,18 @@ params: PMA_GRANULARITY: 12 PHYS_ADDR_WIDTH: 34 MISA_CSR_IMPLEMENTED: true + MTVEC_ACCESS: read-write MTVEC_MODES: [0, 1] MTVEC_BASE_ALIGNMENT_DIRECT: 4 MTVEC_BASE_ALIGNMENT_VECTORED: 4 + MTVEC_ILLEGAL_WRITE_BEHAVIOR: retain MUTABLE_MISA_C: false MUTABLE_MISA_M: false TIME_CSR_IMPLEMENTED: false MUTABLE_MISA_S: false ASID_WIDTH: 5 S_MODE_ENDIANNESS: little - SXLEN: 32 + SXLEN: [32] REPORT_VA_IN_MTVAL_ON_LOAD_PAGE_FAULT: true REPORT_VA_IN_MTVAL_ON_STORE_AMO_PAGE_FAULT: true REPORT_VA_IN_MTVAL_ON_INSTRUCTION_PAGE_FAULT: true @@ -74,6 +81,76 @@ params: REPORT_VA_IN_STVAL_ON_INSTRUCTION_PAGE_FAULT: true REPORT_ENCODING_IN_STVAL_ON_ILLEGAL_INSTRUCTION: true STVAL_WIDTH: 32 + COUNTINHIBIT_EN: + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + ] + MCOUNTENABLE_EN: + [ + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + ] SCOUNTENABLE_EN: [ false, @@ -114,8 +191,6 @@ params: SATP_MODE_BARE: true TRAP_ON_ECALL_FROM_S: true TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY: false - MSTATUS_FS_WRITABLE: false - MSTATUS_VS_WRITABLE: false MSTATUS_VS_LEGAL_VALUES: [0] MSTATUS_FS_LEGAL_VALUES: [0] MSTATUS_TVM_IMPLEMENTED: false @@ -123,6 +198,11 @@ params: PMP_GRANULARITY: 12 MUTABLE_MISA_U: false U_MODE_ENDIANNESS: little - UXLEN: 32 + UXLEN: [32] MSTATEEN_ENVCFG_TYPE: rw - HSTATEEN_ENVCFG_TYPE: rw + # HSTATEEN_ENVCFG_TYPE: rw + # MSTATEEN_AIA_TYPE: rw + # MSTATEEN_CONTEXT_TYPE: rw + # MSTATEEN_CSRIND_TYPE: rw + # MSTATEEN_IMSIC_TYPE: rw + # MSTATEEN_JVT_TYPE: rw diff --git a/cfgs/rv32.yaml b/cfgs/rv32.yaml index ca748d1213..85f031a7eb 100644 --- a/cfgs/rv32.yaml +++ b/cfgs/rv32.yaml @@ -7,6 +7,7 @@ name: rv32 description: A generic RV32 system; only MXLEN is known params: MXLEN: 32 + mandatory_extensions: - name: "I" version: ">= 0" diff --git a/container.def b/container.def index 8091370c5d..46cd3757d3 100644 --- a/container.def +++ b/container.def @@ -4,7 +4,6 @@ From: ubuntu:24.04 %files requirements.txt /opt/requirements.txt package.json /opt/node/package.json - package-lock.json /opt/node/package-lock.json %post export DEBIAN_FRONTEND=noninteractive @@ -31,6 +30,7 @@ From: ubuntu:24.04 libgmp-dev \ libnewlib-dev \ libyaml-dev \ + minisat \ nodejs \ npm \ parallel \ @@ -39,12 +39,35 @@ From: ubuntu:24.04 python3.12-venv \ ruby \ ruby-dev \ - shellcheck + shellcheck \ + zlib1g-dev -# cleanup - apt-get clean autoclean - apt-get autoremove -y - rm -rf /var/lib/{apt, dpkg, cache, log} + # build/install eqntott + git clone --depth=1 https://github.com/TheProjecter/eqntott.git + cd eqntott + ./configure + make && make install + cd .. + rm -rf eqntott + + # build/install espresso + git clone --depth=1 https://github.com/psksvp/espresso-ab-1.0.git + cd espresso-ab-1.0 + ./configure + make && make install + cd .. + rm -rf espresso-ab-1.0 + + # build / install must + git clone https://github.com/jar-ben/mustool.git + cd mustool + git checkout 17fa9f9542a9ce05328dfccd1cd410f05f741ab3 + # mcsmus/mcsmus/control.cc is missing #include + sed -i -e 's/#include /#include \n#include /' mcsmus/mcsmus/control.cc + make + install must -m 0777 /usr/bin/must + cd .. + rm -rf mustool # Create Python virtual environment and install packages /usr/bin/python3 -m venv /opt/venv @@ -53,9 +76,14 @@ From: ubuntu:24.04 # Install npm packages globally in the container cd /opt/node - /usr/bin/npm ci + /usr/bin/npm i rm /opt/node/package.json /opt/node/package-lock.json + # cleanup + apt-get clean autoclean + apt-get autoremove -y + rm -rf /var/lib/{apt, dpkg, cache, log} + # cd $HOME # bundle install diff --git a/doc/idl.adoc b/doc/idl.adoc index 1fb2ba2e3b..769019d12e 100644 --- a/doc/idl.adoc +++ b/doc/idl.adoc @@ -512,6 +512,32 @@ The result of a binary operation is signed if both operands are signed; otherwis `c` must be boolean, and `t` and `f` must be identical types. |=== +=== Implications + +Implications are used to specify dependencies that must hold among data. +Implications cannot appear in general IDL code, and are used in specific contexts, for example when expression link:schema/conditions.adoc#_generic_constraints[generic constraints] in RISC-V Unified Database. + +An implication takes the form: + +[source,idl] +---- +ANTECEDENT -> CONSEQUENT +---- + +The antecedent and consequent can be any expression with a boolean type. + +The implication passes whenever (1) the antecedent is false or (2) both the antecedent and consequent are true. + +For example: + +[source,idl] +---- +false -> true; # passes +false -> false; # passes +true -> true; # passes +true -> false; # fails +---- + == Variables and constants === Mutable variables diff --git a/doc/schema/conditions.adoc b/doc/schema/conditions.adoc new file mode 100644 index 0000000000..f9155b223f --- /dev/null +++ b/doc/schema/conditions.adoc @@ -0,0 +1,456 @@ +// Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +// SPDX-License-Identifier: CC-BY-4.0 + += Expressing Conditions in UDB Data + +There are many instances where there is a conditional relation among data in UDB. +For example: + +* the `Zfinx` extension is only allowed if the `F` extension is not implemented. +* the `C` extension only implies the `Zcd` extension if the `D` extension is also implemented. +* the `MTVEC_BASE_ALIGNMENT_DIRECT` parameter only applies when `MTVEC_MODES` indicates support for 'direct'. +* ... and many more + +Boolean conditions are consistently represented using a common subschema throughout UDB, regardless of the context that they appear. + +Conditions can be represented in one of two, equivalent, forms. +First, a condition can be specified using YAML as described in <>. +Second, a condition can be specified using a _subset_ of link:../idl.adoc[IDL] as described in <>. +The two forms are interchangable; a YAML condition can be converted to an IDL condition and _vice versa_. +Unresolved conditions (those appearing in the top-level specification, usually hand-written) can use either, but not both, condition forms. +During resolution, both forms are generated and placed in the resolved file so that downstream users can exclusively use one form or the other. + +[NOTE] +UDB supports mixing and matching conditions so that hand-written data can use whichever form is easiest to produce by hand. +By generating both forms in the resolved data, downstream users only need to interpret one form for +machine-driven use of the data. + +== Examples + +The following are real examples from the database: + +.mstatus CSR is defined by the Sm extension +[source,yaml] +---- +# mstatus.yaml +# the mstatus CSR is defined whenever any version of the `Sm` extension is implemented +definedBy: # definedBy: takes a condition + extension: + name: Sm +---- + +.C implies Zcf/d only if F/D are implemented +[source,yaml] +---- +# C.yaml +versions: + - version: "2.0.0" + state: ratified + ratification_date: 2019-12 + requirements: + idl(): | + -> implemented_version?(ExtensionName::Zca, "= 1.0.0") && + (!implemented?(ExtensionName::F) || implemented_version?(ExtensionName::Zcf, "= 1.0.0")) && + (!implemented?(ExtensionName::D) || implemented_version?(ExtensionName::Zcd, "= 1.0.0")); + reason: | + Zca is the non-FP subset of C. "C" + "F" implies Zcf. "C" + "D" implies Zcd. + C@2.0.0 requires Zca@1.0.0, Zcf@1.0.0, and/or Zcd@1.0.0 +---- + + +.Specifying a condition using IDL +[source,yaml] +---- +# Shcounterenw.yaml +# if Shcounterenw is implemented, `requirements` must evaluate to true or else the configuration is invalid +requirements: # requirements: takes a condition + idl(): | + # HPM_COUNTER_EN and HCOUNTENALE_EN are both parameters that are a 32-entry array of booleans + for (U32 i = 3; i < 32; i++){ + HPM_COUNTER_EN[i] -> HCOUNTENABLE_EN[i]; + } + reason: + Shcounterenw requires that all non-read-only-0 counters can enabled with hcounteren. +---- + +== Terms + +There are two types of terms in UDB conditions: + +* an *extension requirement* +** For example, extension `Sm`, version `>= 1.12` +* a *parameter requirement* +** For example, `MXLEN` equals `32` + +Terms can combined using boolean operations (AND, OR, etc.) to form arbitrarily complex conditions, +as described in <>. + +[#ext_reqs] +=== Extension Requirements + +==== YAML Form + +In YAML, an extension requirement is identified by the key `extension`. +It expects an extension `name` and an optional `version`. +If no `version` is given, then it defaults to all versions (`>= 0`). + +The `version` is a list of one or more range specifiers, using the following operators: + +.Version specifiers +[cols="l,d,l"] +|=== +| op | Meaning | Example + +| = | Exactly equals | = 1.0 +| > | Greater than | > 1.0 +| < | Less than | < 1.0 +| >= | Greater than or equal | >= 1.0 +| <= | Less than or equal | <= 1.0 +| ~> | Compatible with | ~> 1.0 +|=== + +When only one range specifier is needed (common), the version key can be a string instead of an array: + + +[[a-ext-req]] +[source,yaml] +---- +# the following are interpreted equivalently +extension: + name: A + version: ">= 1.0" + +extension: + name: A + version: + - ">= 1.0" +---- + +Note that RISC-V does not follow semantic versioning, so `2.0` may be compatible with `1.0` for a given extension as long as `2.0` (or any version between `1.0` and `2.0`) is not marked as a breaking version +when it was defined. + +For example: + +[source,yaml] +---- +# require C, version >= 0 +extension: + name: C +---- + +[source,yaml] +---- +# require D, version == 1.0 +extension: + name: D + version: = 1.0 +---- + +[source,yaml] +---- +# require D, version _compatible with_ 1.0 +extension: + name: D + version: ~> 1.0 +---- + +[source,yaml] +---- +# require D, version greater than or equal to 1.0 and less than 2.0 +extension: + name: D + version: [">= 1.0", "< 2.0"] +---- + +Extension requirements can also take logic expression of multiple requrements using the `allOf`, `anyOf`, `noneOf`, or `not` operators. See <> and <>. + +==== IDL Form + +Extension requirements in IDL are expressed using one of two functions, depending on whether or not +a version restriction is required. + +The following is equivalent to <>. + +[source,yaml] +---- +idl(): | + -> implemented?(ExtensionName::A); + +idl(): | + -> implemented_version?(ExtensionName::A, ">= 1.0"); +---- + +[#param_reqs] +=== Parameter Requirements + +=== YAML Form + +A parameter requirement is identified by the key `param`. +It expects a parameter `name`, a single comparison, a `reason` description, and an optional `index` when the parameter is an array and the comparison is for a single array element. + +The comparison is one of: + +[cols="m,d,m"] +|=== +| Key | Meaning | Example + +| `equal` | Parameter value equals | equal: 5 + + equal: "string value" + + equal: true +| not_equal | Parameter value is not equal to | not_equal: 5 + + not_equal: "string value" + + not_equal: true +| less_than | Parameter value is less than | less_than: 5 +| greater_than | Parameter value is greater than | greater_than: 5 +| less_than_or_equal | Parameter value is less than or equal to | less_than: 5 +| greater_than_or_equal | Parameter value is greater than or equal to | greater_than: 5 +| includes | Array parameter includes a value | includes: 5 + + includes: "string value" + + includes: true +| oneOf | Parameter value is equal to one element of an array | oneOf: [5, 7] +|=== + +For example: + +[source,yaml] +---- +param: + name: MXLEN + equal: 32 + reason: Extension is only defined in RV32 +---- + +[source,yaml] +---- +param: + name: MTVEC_MODES + includes: 0 + reason: Only relevant when direct mode is supported +---- + +Like <>, parameter requirements can be combined aribtrarily using boolean logic operations. See <> and <> + +==== IDL Form + +All parameters are in global scope when evaluating an IDL condition, and any legal operator or function as described in <> can be used. + +Examples: + +[source,yaml] +---- +idl(): | + -> MXLEN == 32; +reason: Extension is only defined in RV32 +---- + +[source,yaml] +---- +idl(): | + -> $array_includes?(MTVEC_MODES, 0); +reason: Only relevant when direct mode is supported +---- + +[#bool_ops] +== Boolean Operators + +UDB is inspired by the schema used by link:https://json-schema.org[JSON Schema] for boolean logic. +The logic can be applied either at the top level of a condition (before an `extension` or `param` key) or within a particular term type (after an `extension` or `param` key). + +The following operators are supported: + +[cols="m,d,a,a"] +|=== +| Op | Meaning | Example (Block style) | Example (Flow style) + +| allOf | Logical AND | +[source,yaml] +---- +allOf: + - name: C + - name: D +---- +| +[source,yaml] +---- +allOf: [ + { name: C }, + { name: D } +] +---- +| anyOf | Logical OR | +[source,yaml] +---- +anyOf: + - name: C + - name: D +---- +| +[source,yaml] +---- +anyOf: [ + { name: C }, + { name: D } +] +---- +| noneOf | Logical NOR | +[source,yaml] +---- +noneOf: + - name: C + - name: D +---- +| +[source,yaml] +---- +noneOf: [ + { name: C }, + { name: D } +] +---- +| oneOf | Logical XOR | +[source,yaml] +---- +oneOf: + - name: C + - name: D +---- +| +[source,yaml] +---- +oneOf: [ + { name: C }, + { name: D } +] +---- +| not | Logical NOT | +[source,yaml] +---- +not: + name: C +---- +| +[source,yaml] +---- +not: { name: C } +---- +| if, then | Logical implicaiton + +(satisfied unless `if` is true and `then` if false) | +[source,yaml] +---- +if: + extension: + name: C +then: + name: D +---- +| +[source,yaml] +---- +if: { name: C }, then: { name: D } +---- +|=== + +Note that the target of an `if` takes a new condition, and so one or more term specifiers +(`extension` or `param`) _must_ appear within it. +The `then` target continues the context already established, so, for example, both `then` targets +below specify the `D` extension. + +[cols="a,a"] +|=== +| +[source,yaml] +---- +# targets the D extension +extension: + if: + extension: + name: C + then: + name: D +---- +| +[source,yaml] +---- +# also targets D extension +extension: + if: + param: + name: MXLEN + equal: 32 + reason: because 64 bits is too big + then: + name: D +---- +|=== + +For example: + +.Require C and D extensions +[source,yaml] +---- +extension: + allOf: + - name: C + - name: D +---- + +.Require the C extension and MXLEN == 32 +[source,yaml] +---- +allOf: + - extension: + name: C + - param: + name: MXLEN + equal: 32 + reason: Only applies with RV32 +---- + +.Require Zcf, version 1.0.0 if F is implemented +[source,yaml] +---- +extension: + if: + extension: + name: F + version: ~> 2.2 + then: + name: Zcf + version: = 1.0.0 +---- + +[[idl-subset]] +=== IDL Subset for Conditions + +Only a subset of IDL is available for use in conditions. + +==== In-scope variables + +All parameters are in scope. +Globals defined in IDL files that are normally in scope in other contexts (_e.g._, current_mode) are not in scope for conditions. +This is true whether or not the global is constant. + +==== Statements + +The only allowed statements in a condition are: + +* link:../idl.adoc#implications[Implications] +* For loops + +Notably, if/else statements are permitted. Implications should be used instead. + +==== Expressions + +In the limited set of statements available in a condition, expressions appear on either side of an implication or in the bounds of a for loop. +Generally, expressions are only limited by the fact that only a small set of built-in functions are available, and no user-defined functions are available. + +The available functions are: + +* `implemented?(ExtensionName::A)` +** True if ExtensionName::A is either listed as an implemented extension in the config, or if A is implied by an implemented extension. +* `implemented_version?(ExtensionName::A, ">= 1.0")` +** True if ExtensionName::A, version greater than or equal to 1.0 is either listed as an implemented extension in the config, or if A, version greater than or equal to 1.0 is implied by an implemented extension. +* `$array_includes?(ARY_PARAM, 1)` +** True if ARY_PARAM includes the value 1 +* `$ary_size(ARY_PARAM)` +** Returns the number of elements in ARY_PARAM diff --git a/doc/schemas.adoc b/doc/schemas.adoc index d322574013..e4c0faf1e3 100644 --- a/doc/schemas.adoc +++ b/doc/schemas.adoc @@ -8,3 +8,7 @@ Many UDB data objects share common field types, including: * xref:prose-schema.adoc[Schema for Prose] TODO + +== Conditions + +All conditions are represented using the same schema. diff --git a/ext/rbi-central b/ext/rbi-central index d5626e66a6..dcd9266d90 160000 --- a/ext/rbi-central +++ b/ext/rbi-central @@ -1 +1 @@ -Subproject commit d5626e66a619dc19ec2f3e4aab49f6b147b15f08 +Subproject commit dcd9266d90d04059cb75f7d65a1c4a2b44c1d4bb diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index e6d4c59923..0000000000 --- a/package-lock.json +++ /dev/null @@ -1,5049 +0,0 @@ -{ - "name": "spec-generator", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "spec-generator", - "dependencies": { - "@antora/cli": "3.1.7", - "@antora/lunr-extension": "1.0.0-alpha.8", - "@antora/site-generator": "3.1.7", - "@asciidoctor/tabs": "v1.0.0-beta.6", - "@commitlint/cli": "19.8.0", - "@commitlint/config-conventional": "19.8.0", - "asciidoctor-kroki": "0.17.0", - "asciidoctor-mathjax": "^0.0.5", - "bytefield-svg": "^1.8.0", - "prettier": "3.4.2", - "wavedrom-cli": "^3.1.1" - } - }, - "node_modules/@antora/asciidoc-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.1.7.tgz", - "integrity": "sha512-sM/poPtAi8Cx0g2oLGHoEYjTdE9pvIYLgbHW07fGf6c9wQYMd2DMsevtbhNKWp+xqxj/QinToz4JOaNLoy1nfg==", - "dependencies": { - "@antora/logger": "3.1.7", - "@antora/user-require-helper": "~2.0", - "@asciidoctor/core": "~2.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/cli": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.1.7.tgz", - "integrity": "sha512-yHo30VmiLLsZU4JW8VZR6fql9m5lIxocA2d0tduKQ+r4YSD1kt+bbwX3You3iMwW7oLoNo62zfU76F8CQBnm2g==", - "dependencies": { - "@antora/logger": "3.1.7", - "@antora/playbook-builder": "3.1.7", - "@antora/user-require-helper": "~2.0", - "commander": "~10.0" - }, - "bin": { - "antora": "bin/antora" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/content-aggregator": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.1.7.tgz", - "integrity": "sha512-2gBbxaDxqY4QRw9Vut0IbKNqI9zAAohxjT0zcA5Am10kE3ywvzXaBa3tvb+A7vUl/vRcCC0LPM7pO37RVrbsGA==", - "dependencies": { - "@antora/expand-path-helper": "~2.0", - "@antora/logger": "3.1.7", - "@antora/user-require-helper": "~2.0", - "braces": "~3.0", - "cache-directory": "~2.0", - "glob-stream": "~7.0", - "hpagent": "~1.2", - "isomorphic-git": "~1.25", - "js-yaml": "~4.1", - "multi-progress": "~4.0", - "picomatch": "~2.3", - "progress": "~2.0", - "should-proxy": "~1.0", - "simple-get": "~4.0", - "vinyl": "~2.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/content-classifier": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.1.7.tgz", - "integrity": "sha512-94XwJ35pkWJU6dJqQg5oreJRCkaXwU6yw9XSyB731o4i/0romkazKnu7deHugqdgvzqn92AlMRG6R0clhJLEsw==", - "dependencies": { - "@antora/asciidoc-loader": "3.1.7", - "@antora/logger": "3.1.7", - "mime-types": "~2.1", - "vinyl": "~2.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/document-converter": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.1.7.tgz", - "integrity": "sha512-cRVJf7QyclxjWbA0gWz7hncZYThIREikkwaxaa26LsRCfBNlw7wxs7lWejvIvEl1LVshupbinJwKUPPQPOsHhw==", - "dependencies": { - "@antora/asciidoc-loader": "3.1.7" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/expand-path-helper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@antora/expand-path-helper/-/expand-path-helper-2.0.0.tgz", - "integrity": "sha512-CSMBGC+tI21VS2kGW3PV7T2kQTM5eT3f2GTPVLttwaNYbNxDve08en/huzszHJfxo11CcEs26Ostr0F2c1QqeA==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/@antora/file-publisher": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.1.7.tgz", - "integrity": "sha512-UH2o0DJuv9BJvWgn+QSE3MhtHB3oN3lG5lJkV3fQi1jAV+qPIHoiTIYhbw02mj5KQ3Qbt7YWWAKZKuGl3rEdjg==", - "dependencies": { - "@antora/expand-path-helper": "~2.0", - "@antora/user-require-helper": "~2.0", - "@vscode/gulp-vinyl-zip": "~2.5", - "vinyl": "~2.2", - "vinyl-fs": "~3.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/logger": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.1.7.tgz", - "integrity": "sha512-Z2tfNIi9G4BnAZq26Kp30974FxCVCtvH46FOi6ClnkJg6Uf2gTrVlJERmtsDTsHjWsf1qKbnj/4b99/AU31iQg==", - "dependencies": { - "@antora/expand-path-helper": "~2.0", - "pino": "~8.14", - "pino-pretty": "~10.0", - "sonic-boom": "~3.3" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/lunr-extension": { - "version": "1.0.0-alpha.8", - "resolved": "https://registry.npmjs.org/@antora/lunr-extension/-/lunr-extension-1.0.0-alpha.8.tgz", - "integrity": "sha512-vdBgW3rsvbnmA236kT2Dckh9n0Db5za2/WxiLnFLgZ05ZO1KJQa9+R2WHaIFuGE7bKKbY+lqfM/i3KiezbL9YQ==", - "dependencies": { - "cheerio": "1.0.0-rc.10", - "html-entities": "~2.3", - "lunr": "~2.3", - "lunr-languages": "~1.9" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/navigation-builder": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.1.7.tgz", - "integrity": "sha512-QvMPb0qY1zfgyLCfuEhJOpO5qSVjaVe5X/bQjSii9vDGgpIEiC2yt/hgqER37E/3zsBGEZvCH5lSLk1c7x0+EQ==", - "dependencies": { - "@antora/asciidoc-loader": "3.1.7" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/page-composer": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.1.7.tgz", - "integrity": "sha512-zJMzYznPT6Vd59nEXio/2rolkX070Nup6g4a8d4RCz0WoE8dmMidw6XFgjAHr0Lyh14/FHgBPlYXfhkDFR16Mw==", - "dependencies": { - "@antora/logger": "3.1.7", - "handlebars": "~4.7", - "require-from-string": "~2.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/playbook-builder": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.1.7.tgz", - "integrity": "sha512-lU80S1BqUy9DvqziEzRwpYTaWhOshxgrGAjf/F5VjAIaHCGVx0rZgfoI2rgFFkbVaH94kauOngdtTXDPXC1fPQ==", - "dependencies": { - "@iarna/toml": "~2.2", - "convict": "~6.2", - "js-yaml": "~4.1", - "json5": "~2.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/redirect-producer": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.1.7.tgz", - "integrity": "sha512-6zAHfcOb0v0829nAbn/3HMilbactjbjU7zBT9Iy6JHQfbqXT/g/mUT9N13Lj/wbq/nm0qKQJweB0Mi6BS2fbMw==", - "dependencies": { - "vinyl": "~2.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/site-generator": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.1.7.tgz", - "integrity": "sha512-39KWip9bLdQ+4ssyqjI+O0COquKHxoeznxY2/3w5pNZEoeTg8cD7kOsnWfbocw0R3Rj+kJV5MnqICFNq0nuPeA==", - "dependencies": { - "@antora/asciidoc-loader": "3.1.7", - "@antora/content-aggregator": "3.1.7", - "@antora/content-classifier": "3.1.7", - "@antora/document-converter": "3.1.7", - "@antora/file-publisher": "3.1.7", - "@antora/logger": "3.1.7", - "@antora/navigation-builder": "3.1.7", - "@antora/page-composer": "3.1.7", - "@antora/playbook-builder": "3.1.7", - "@antora/redirect-producer": "3.1.7", - "@antora/site-mapper": "3.1.7", - "@antora/site-publisher": "3.1.7", - "@antora/ui-loader": "3.1.7", - "@antora/user-require-helper": "~2.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/site-mapper": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.1.7.tgz", - "integrity": "sha512-x++89btbwk8FxyU2+H/RHQMnsC9sdvQvXcwXwNt11eXN1qj7t8TPiQZTalg7gkf0/osY4l7JRpGBY5JJfOJVig==", - "dependencies": { - "@antora/content-classifier": "3.1.7", - "vinyl": "~2.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/site-publisher": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.1.7.tgz", - "integrity": "sha512-zHaJc7UeBfFSIhBbQ5U5Ud4u671M84oqSJb3pPxlUiJDP7iVJlSl+0GNm0NAIoDizjPtVksUI88fzqCy5rfSUQ==", - "dependencies": { - "@antora/file-publisher": "3.1.7" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/ui-loader": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.1.7.tgz", - "integrity": "sha512-79QuZB0c91dveoESa3RcE18ZZFJo0rDZX9aJKHVc20dInQBGCgfURPqB2OytkzaXD3lNtDJ41yjKNYZqsAQy1Q==", - "dependencies": { - "@antora/expand-path-helper": "~2.0", - "@vscode/gulp-vinyl-zip": "~2.5", - "braces": "~3.0", - "cache-directory": "~2.0", - "glob-stream": "~7.0", - "hpagent": "~1.2", - "js-yaml": "~4.1", - "picomatch": "~2.3", - "should-proxy": "~1.0", - "simple-get": "~4.0", - "vinyl": "~2.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@antora/user-require-helper": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@antora/user-require-helper/-/user-require-helper-2.0.0.tgz", - "integrity": "sha512-5fMfBZfw4zLoFdDAPMQX6Frik90uvfD8rXOA4UpXPOUikkX4uT1Rk6m0/4oi8oS3fcjiIl0k/7Nc+eTxW5TcQQ==", - "dependencies": { - "@antora/expand-path-helper": "~2.0" - }, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/@asciidoctor/core": { - "version": "2.2.8", - "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-2.2.8.tgz", - "integrity": "sha512-oozXk7ZO1RAd/KLFLkKOhqTcG4GO3CV44WwOFg2gMcCsqCUTarvMT7xERIoWW2WurKbB0/ce+98r01p8xPOlBw==", - "dependencies": { - "asciidoctor-opal-runtime": "0.3.3", - "unxhr": "1.0.1" - }, - "engines": { - "node": ">=8.11", - "npm": ">=5.0.0", - "yarn": ">=1.1.0" - } - }, - "node_modules/@asciidoctor/tabs": { - "version": "1.0.0-beta.6", - "resolved": "https://registry.npmjs.org/@asciidoctor/tabs/-/tabs-1.0.0-beta.6.tgz", - "integrity": "sha512-gGZnW7UfRXnbiyKNd9PpGKtSuD8+DsqaaTSbQ1dHVkZ76NaolLhdQg8RW6/xqN3pX1vWZEcF4e81+Oe9rNRWxg==", - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.26.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.9.tgz", - "integrity": "sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime/node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" - }, - "node_modules/@commitlint/cli": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.8.0.tgz", - "integrity": "sha512-t/fCrLVu+Ru01h0DtlgHZXbHV2Y8gKocTR5elDOqIRUzQd0/6hpt2VIWOj9b3NDo7y4/gfxeR2zRtXq/qO6iUg==", - "dependencies": { - "@commitlint/format": "^19.8.0", - "@commitlint/lint": "^19.8.0", - "@commitlint/load": "^19.8.0", - "@commitlint/read": "^19.8.0", - "@commitlint/types": "^19.8.0", - "tinyexec": "^0.3.0", - "yargs": "^17.0.0" - }, - "bin": { - "commitlint": "cli.js" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/config-conventional": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.8.0.tgz", - "integrity": "sha512-9I2kKJwcAPwMoAj38hwqFXG0CzS2Kj+SAByPUQ0SlHTfb7VUhYVmo7G2w2tBrqmOf7PFd6MpZ/a1GQJo8na8kw==", - "dependencies": { - "@commitlint/types": "^19.8.0", - "conventional-changelog-conventionalcommits": "^7.0.2" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/config-validator": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.8.0.tgz", - "integrity": "sha512-+r5ZvD/0hQC3w5VOHJhGcCooiAVdynFlCe2d6I9dU+PvXdV3O+fU4vipVg+6hyLbQUuCH82mz3HnT/cBQTYYuA==", - "dependencies": { - "@commitlint/types": "^19.8.0", - "ajv": "^8.11.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/ensure": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.8.0.tgz", - "integrity": "sha512-kNiNU4/bhEQ/wutI1tp1pVW1mQ0QbAjfPRo5v8SaxoVV+ARhkB8Wjg3BSseNYECPzWWfg/WDqQGIfV1RaBFQZg==", - "dependencies": { - "@commitlint/types": "^19.8.0", - "lodash.camelcase": "^4.3.0", - "lodash.kebabcase": "^4.1.1", - "lodash.snakecase": "^4.1.1", - "lodash.startcase": "^4.4.0", - "lodash.upperfirst": "^4.3.1" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/execute-rule": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.8.0.tgz", - "integrity": "sha512-fuLeI+EZ9x2v/+TXKAjplBJWI9CNrHnyi5nvUQGQt4WRkww/d95oVRsc9ajpt4xFrFmqMZkd/xBQHZDvALIY7A==", - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/format": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.8.0.tgz", - "integrity": "sha512-EOpA8IERpQstxwp/WGnDArA7S+wlZDeTeKi98WMOvaDLKbjptuHWdOYYr790iO7kTCif/z971PKPI2PkWMfOxg==", - "dependencies": { - "@commitlint/types": "^19.8.0", - "chalk": "^5.3.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/is-ignored": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.8.0.tgz", - "integrity": "sha512-L2Jv9yUg/I+jF3zikOV0rdiHUul9X3a/oU5HIXhAJLE2+TXTnEBfqYP9G5yMw/Yb40SnR764g4fyDK6WR2xtpw==", - "dependencies": { - "@commitlint/types": "^19.8.0", - "semver": "^7.6.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/lint": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.8.0.tgz", - "integrity": "sha512-+/NZKyWKSf39FeNpqhfMebmaLa1P90i1Nrb1SrA7oSU5GNN/lksA4z6+ZTnsft01YfhRZSYMbgGsARXvkr/VLQ==", - "dependencies": { - "@commitlint/is-ignored": "^19.8.0", - "@commitlint/parse": "^19.8.0", - "@commitlint/rules": "^19.8.0", - "@commitlint/types": "^19.8.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/load": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.8.0.tgz", - "integrity": "sha512-4rvmm3ff81Sfb+mcWT5WKlyOa+Hd33WSbirTVUer0wjS1Hv/Hzr07Uv1ULIV9DkimZKNyOwXn593c+h8lsDQPQ==", - "dependencies": { - "@commitlint/config-validator": "^19.8.0", - "@commitlint/execute-rule": "^19.8.0", - "@commitlint/resolve-extends": "^19.8.0", - "@commitlint/types": "^19.8.0", - "chalk": "^5.3.0", - "cosmiconfig": "^9.0.0", - "cosmiconfig-typescript-loader": "^6.1.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "lodash.uniq": "^4.5.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/message": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.8.0.tgz", - "integrity": "sha512-qs/5Vi9bYjf+ZV40bvdCyBn5DvbuelhR6qewLE8Bh476F7KnNyLfdM/ETJ4cp96WgeeHo6tesA2TMXS0sh5X4A==", - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/parse": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.8.0.tgz", - "integrity": "sha512-YNIKAc4EXvNeAvyeEnzgvm1VyAe0/b3Wax7pjJSwXuhqIQ1/t2hD3OYRXb6D5/GffIvaX82RbjD+nWtMZCLL7Q==", - "dependencies": { - "@commitlint/types": "^19.8.0", - "conventional-changelog-angular": "^7.0.0", - "conventional-commits-parser": "^5.0.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/read": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.8.0.tgz", - "integrity": "sha512-6ywxOGYajcxK1y1MfzrOnwsXO6nnErna88gRWEl3qqOOP8MDu/DTeRkGLXBFIZuRZ7mm5yyxU5BmeUvMpNte5w==", - "dependencies": { - "@commitlint/top-level": "^19.8.0", - "@commitlint/types": "^19.8.0", - "git-raw-commits": "^4.0.0", - "minimist": "^1.2.8", - "tinyexec": "^0.3.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/resolve-extends": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.8.0.tgz", - "integrity": "sha512-CLanRQwuG2LPfFVvrkTrBR/L/DMy3+ETsgBqW1OvRxmzp/bbVJW0Xw23LnnExgYcsaFtos967lul1CsbsnJlzQ==", - "dependencies": { - "@commitlint/config-validator": "^19.8.0", - "@commitlint/types": "^19.8.0", - "global-directory": "^4.0.1", - "import-meta-resolve": "^4.0.0", - "lodash.mergewith": "^4.6.2", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/rules": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.8.0.tgz", - "integrity": "sha512-IZ5IE90h6DSWNuNK/cwjABLAKdy8tP8OgGVGbXe1noBEX5hSsu00uRlLu6JuruiXjWJz2dZc+YSw3H0UZyl/mA==", - "dependencies": { - "@commitlint/ensure": "^19.8.0", - "@commitlint/message": "^19.8.0", - "@commitlint/to-lines": "^19.8.0", - "@commitlint/types": "^19.8.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/to-lines": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.8.0.tgz", - "integrity": "sha512-3CKLUw41Cur8VMjh16y8LcsOaKbmQjAKCWlXx6B0vOUREplp6em9uIVhI8Cv934qiwkbi2+uv+mVZPnXJi1o9A==", - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/top-level": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.8.0.tgz", - "integrity": "sha512-Rphgoc/omYZisoNkcfaBRPQr4myZEHhLPx2/vTXNLjiCw4RgfPR1wEgUpJ9OOmDCiv5ZyIExhprNLhteqH4FuQ==", - "dependencies": { - "find-up": "^7.0.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/types": { - "version": "19.8.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.8.0.tgz", - "integrity": "sha512-LRjP623jPyf3Poyfb0ohMj8I3ORyBDOwXAgxxVPbSD0unJuW2mJWeiRfaQinjtccMqC5Wy1HOMfa4btKjbNxbg==", - "dependencies": { - "@types/conventional-commits-parser": "^5.0.0", - "chalk": "^5.3.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==" - }, - "node_modules/@jimp/bmp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/bmp/-/bmp-0.16.13.tgz", - "integrity": "sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "bmp-js": "^0.1.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/core": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/core/-/core-0.16.13.tgz", - "integrity": "sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "any-base": "^1.1.0", - "buffer": "^5.2.0", - "exif-parser": "^0.1.12", - "file-type": "^16.5.4", - "load-bmfont": "^1.3.1", - "mkdirp": "^0.5.1", - "phin": "^2.9.1", - "pixelmatch": "^4.0.2", - "tinycolor2": "^1.4.1" - } - }, - "node_modules/@jimp/core/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/@jimp/custom": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/custom/-/custom-0.16.13.tgz", - "integrity": "sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/core": "^0.16.13" - } - }, - "node_modules/@jimp/gif": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/gif/-/gif-0.16.13.tgz", - "integrity": "sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "gifwrap": "^0.9.2", - "omggif": "^1.0.9" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/jpeg": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/jpeg/-/jpeg-0.16.13.tgz", - "integrity": "sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "jpeg-js": "^0.4.2" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-blit": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blit/-/plugin-blit-0.16.13.tgz", - "integrity": "sha512-8Z1k96ZFxlhK2bgrY1JNWNwvaBeI/bciLM0yDOni2+aZwfIIiC7Y6PeWHTAvjHNjphz+XCt01WQmOYWCn0ML6g==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-blur": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-blur/-/plugin-blur-0.16.13.tgz", - "integrity": "sha512-PvLrfa8vkej3qinlebyhLpksJgCF5aiysDMSVhOZqwH5nQLLtDE9WYbnsofGw4r0VVpyw3H/ANCIzYTyCtP9Cg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-circle": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-circle/-/plugin-circle-0.16.13.tgz", - "integrity": "sha512-RNave7EFgZrb5V5EpdvJGAEHMnDAJuwv05hKscNfIYxf0kR3KhViBTDy+MoTnMlIvaKFULfwIgaZWzyhuINMzA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-color": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-color/-/plugin-color-0.16.13.tgz", - "integrity": "sha512-xW+9BtEvoIkkH/Wde9ql4nAFbYLkVINhpgAE7VcBUsuuB34WUbcBl/taOuUYQrPEFQJ4jfXiAJZ2H/rvKjCVnQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "tinycolor2": "^1.4.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-contain": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-contain/-/plugin-contain-0.16.13.tgz", - "integrity": "sha512-QayTXw4tXMwU6q6acNTQrTTFTXpNRBe+MgTGMDU0lk+23PjlFCO/9sacflelG8lsp7vNHhAxFeHptDMAksEYzg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-cover": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-cover/-/plugin-cover-0.16.13.tgz", - "integrity": "sha512-BSsP71GTNaqWRcvkbWuIVH+zK7b3TSNebbhDkFK0fVaUTzHuKMS/mgY4hDZIEVt7Rf5FjadAYtsujHN9w0iSYA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5", - "@jimp/plugin-scale": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-crop": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-crop/-/plugin-crop-0.16.13.tgz", - "integrity": "sha512-WEl2tPVYwzYL8OKme6Go2xqiWgKsgxlMwyHabdAU4tXaRwOCnOI7v4021gCcBb9zn/oWwguHuKHmK30Fw2Z/PA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-displace": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-displace/-/plugin-displace-0.16.13.tgz", - "integrity": "sha512-qt9WKq8vWrcjySa9DyQ0x/RBMHQeiVjdVSY1SJsMjssPUf0pS74qorcuAkGi89biN3YoGUgPkpqECnAWnYwgGA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-dither": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-dither/-/plugin-dither-0.16.13.tgz", - "integrity": "sha512-5/N3yJggbWQTlGZHQYJPmQXEwR52qaXjEzkp1yRBbtdaekXE3BG/suo0fqeoV/csf8ooI78sJzYmIrxNoWVtgQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-fisheye": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-fisheye/-/plugin-fisheye-0.16.13.tgz", - "integrity": "sha512-2rZmTdFbT/cF9lEZIkXCYO0TsT114Q27AX5IAo0Sju6jVQbvIk1dFUTnwLDadTo8wkJlFzGqMQ24Cs8cHWOliA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-flip": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-flip/-/plugin-flip-0.16.13.tgz", - "integrity": "sha512-EmcgAA74FTc5u7Z+hUO/sRjWwfPPLuOQP5O64x5g4j0T12Bd29IgsYZxoutZo/rb3579+JNa/3wsSEmyVv1EpA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-rotate": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-gaussian": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-gaussian/-/plugin-gaussian-0.16.13.tgz", - "integrity": "sha512-A1XKfGQD0iDdIiKqFYi8nZMv4dDVYdxbrmgR7y/CzUHhSYdcmoljLIIsZZM3Iks/Wa353W3vtvkWLuDbQbch1w==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-invert": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-invert/-/plugin-invert-0.16.13.tgz", - "integrity": "sha512-xFMrIn7czEZbdbMzZWuaZFnlLGJDVJ82y5vlsKsXRTG2kcxRsMPXvZRWHV57nSs1YFsNqXSbrC8B98n0E32njQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-mask": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-mask/-/plugin-mask-0.16.13.tgz", - "integrity": "sha512-wLRYKVBXql2GAYgt6FkTnCfE+q5NomM7Dlh0oIPGAoMBWDyTx0eYutRK6PlUrRK2yMHuroAJCglICTbxqGzowQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-normalize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-normalize/-/plugin-normalize-0.16.13.tgz", - "integrity": "sha512-3tfad0n9soRna4IfW9NzQdQ2Z3ijkmo21DREHbE6CGcMIxOSvfRdSvf1qQPApxjTSo8LTU4MCi/fidx/NZ0GqQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-print": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-print/-/plugin-print-0.16.13.tgz", - "integrity": "sha512-0m6i3p01PGRkGAK9r53hDYrkyMq+tlhLOIbsSTmZyh6HLshUKlTB7eXskF5OpVd5ZUHoltlNc6R+ggvKIzxRFw==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "load-bmfont": "^1.4.0" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-resize": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz", - "integrity": "sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-rotate": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-rotate/-/plugin-rotate-0.16.13.tgz", - "integrity": "sha512-Ev+Jjmj1nHYw897z9C3R9dYsPv7S2/nxdgfFb/h8hOwK0Ovd1k/+yYS46A0uj/JCKK0pQk8wOslYBkPwdnLorw==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blit": ">=0.3.5", - "@jimp/plugin-crop": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-scale": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-scale/-/plugin-scale-0.16.13.tgz", - "integrity": "sha512-05POQaEJVucjTiSGMoH68ZiELc7QqpIpuQlZ2JBbhCV+WCbPFUBcGSmE7w4Jd0E2GvCho/NoMODLwgcVGQA97A==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-shadow": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-shadow/-/plugin-shadow-0.16.13.tgz", - "integrity": "sha512-nmu5VSZ9hsB1JchTKhnnCY+paRBnwzSyK5fhkhtQHHoFD5ArBQ/5wU8y6tCr7k/GQhhGq1OrixsECeMjPoc8Zw==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-blur": ">=0.3.5", - "@jimp/plugin-resize": ">=0.3.5" - } - }, - "node_modules/@jimp/plugin-threshold": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugin-threshold/-/plugin-threshold-0.16.13.tgz", - "integrity": "sha512-+3zArBH0OE3Rhjm4HyAokMsZlIq5gpQec33CncyoSwxtRBM2WAhUVmCUKuBo+Lr/2/4ISoY4BWpHKhMLDix6cA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5", - "@jimp/plugin-color": ">=0.8.0", - "@jimp/plugin-resize": ">=0.8.0" - } - }, - "node_modules/@jimp/plugins": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/plugins/-/plugins-0.16.13.tgz", - "integrity": "sha512-CJLdqODEhEVs4MgWCxpWL5l95sCBlkuSLz65cxEm56X5akIsn4LOlwnKoSEZioYcZUBvHhCheH67AyPTudfnQQ==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/plugin-blit": "^0.16.13", - "@jimp/plugin-blur": "^0.16.13", - "@jimp/plugin-circle": "^0.16.13", - "@jimp/plugin-color": "^0.16.13", - "@jimp/plugin-contain": "^0.16.13", - "@jimp/plugin-cover": "^0.16.13", - "@jimp/plugin-crop": "^0.16.13", - "@jimp/plugin-displace": "^0.16.13", - "@jimp/plugin-dither": "^0.16.13", - "@jimp/plugin-fisheye": "^0.16.13", - "@jimp/plugin-flip": "^0.16.13", - "@jimp/plugin-gaussian": "^0.16.13", - "@jimp/plugin-invert": "^0.16.13", - "@jimp/plugin-mask": "^0.16.13", - "@jimp/plugin-normalize": "^0.16.13", - "@jimp/plugin-print": "^0.16.13", - "@jimp/plugin-resize": "^0.16.13", - "@jimp/plugin-rotate": "^0.16.13", - "@jimp/plugin-scale": "^0.16.13", - "@jimp/plugin-shadow": "^0.16.13", - "@jimp/plugin-threshold": "^0.16.13", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/png": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/png/-/png-0.16.13.tgz", - "integrity": "sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/utils": "^0.16.13", - "pngjs": "^3.3.3" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/tiff": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/tiff/-/tiff-0.16.13.tgz", - "integrity": "sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "utif": "^2.0.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/types": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/types/-/types-0.16.13.tgz", - "integrity": "sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/bmp": "^0.16.13", - "@jimp/gif": "^0.16.13", - "@jimp/jpeg": "^0.16.13", - "@jimp/png": "^0.16.13", - "@jimp/tiff": "^0.16.13", - "timm": "^1.6.1" - }, - "peerDependencies": { - "@jimp/custom": ">=0.3.5" - } - }, - "node_modules/@jimp/utils": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/@jimp/utils/-/utils-0.16.13.tgz", - "integrity": "sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/@resvg/resvg-js": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js/-/resvg-js-2.6.2.tgz", - "integrity": "sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==", - "engines": { - "node": ">= 10" - }, - "optionalDependencies": { - "@resvg/resvg-js-android-arm-eabi": "2.6.2", - "@resvg/resvg-js-android-arm64": "2.6.2", - "@resvg/resvg-js-darwin-arm64": "2.6.2", - "@resvg/resvg-js-darwin-x64": "2.6.2", - "@resvg/resvg-js-linux-arm-gnueabihf": "2.6.2", - "@resvg/resvg-js-linux-arm64-gnu": "2.6.2", - "@resvg/resvg-js-linux-arm64-musl": "2.6.2", - "@resvg/resvg-js-linux-x64-gnu": "2.6.2", - "@resvg/resvg-js-linux-x64-musl": "2.6.2", - "@resvg/resvg-js-win32-arm64-msvc": "2.6.2", - "@resvg/resvg-js-win32-ia32-msvc": "2.6.2", - "@resvg/resvg-js-win32-x64-msvc": "2.6.2" - } - }, - "node_modules/@resvg/resvg-js-android-arm-eabi": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm-eabi/-/resvg-js-android-arm-eabi-2.6.2.tgz", - "integrity": "sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@resvg/resvg-js-android-arm64": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js-android-arm64/-/resvg-js-android-arm64-2.6.2.tgz", - "integrity": "sha512-VcOKezEhm2VqzXpcIJoITuvUS/fcjIw5NA/w3tjzWyzmvoCdd+QXIqy3FBGulWdClvp4g+IfUemigrkLThSjAQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@resvg/resvg-js-darwin-arm64": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-arm64/-/resvg-js-darwin-arm64-2.6.2.tgz", - "integrity": "sha512-nmok2LnAd6nLUKI16aEB9ydMC6Lidiiq2m1nEBDR1LaaP7FGs4AJ90qDraxX+CWlVuRlvNjyYJTNv8qFjtL9+A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@resvg/resvg-js-darwin-x64": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js-darwin-x64/-/resvg-js-darwin-x64-2.6.2.tgz", - "integrity": "sha512-GInyZLjgWDfsVT6+SHxQVRwNzV0AuA1uqGsOAW+0th56J7Nh6bHHKXHBWzUrihxMetcFDmQMAX1tZ1fZDYSRsw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@resvg/resvg-js-linux-arm-gnueabihf": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm-gnueabihf/-/resvg-js-linux-arm-gnueabihf-2.6.2.tgz", - "integrity": "sha512-YIV3u/R9zJbpqTTNwTZM5/ocWetDKGsro0SWp70eGEM9eV2MerWyBRZnQIgzU3YBnSBQ1RcxRZvY/UxwESfZIw==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@resvg/resvg-js-linux-arm64-gnu": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-gnu/-/resvg-js-linux-arm64-gnu-2.6.2.tgz", - "integrity": "sha512-zc2BlJSim7YR4FZDQ8OUoJg5holYzdiYMeobb9pJuGDidGL9KZUv7SbiD4E8oZogtYY42UZEap7dqkkYuA91pg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@resvg/resvg-js-linux-arm64-musl": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-arm64-musl/-/resvg-js-linux-arm64-musl-2.6.2.tgz", - "integrity": "sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@resvg/resvg-js-linux-x64-gnu": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-gnu/-/resvg-js-linux-x64-gnu-2.6.2.tgz", - "integrity": "sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@resvg/resvg-js-linux-x64-musl": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js-linux-x64-musl/-/resvg-js-linux-x64-musl-2.6.2.tgz", - "integrity": "sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@resvg/resvg-js-win32-arm64-msvc": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-arm64-msvc/-/resvg-js-win32-arm64-msvc-2.6.2.tgz", - "integrity": "sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@resvg/resvg-js-win32-ia32-msvc": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-ia32-msvc/-/resvg-js-win32-ia32-msvc-2.6.2.tgz", - "integrity": "sha512-har4aPAlvjnLcil40AC77YDIk6loMawuJwFINEM7n0pZviwMkMvjb2W5ZirsNOZY4aDbo5tLx0wNMREp5Brk+w==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@resvg/resvg-js-win32-x64-msvc": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/@resvg/resvg-js-win32-x64-msvc/-/resvg-js-win32-x64-msvc-2.6.2.tgz", - "integrity": "sha512-ZXtYhtUr5SSaBrUDq7DiyjOFJqBVL/dOBN7N/qmi/pO0IgiWW/f/ue3nbvu9joWE5aAKDoIzy/CxsY0suwGosQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" - }, - "node_modules/@types/conventional-commits-parser": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.1.tgz", - "integrity": "sha512-7uz5EHdzz2TqoMfV7ee61Egf5y6NkcO4FB/1iCCQnbeiI1F3xzv3vK5dBCXUCLQgGYS+mUeigK1iKQzvED+QnQ==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "16.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.9.1.tgz", - "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" - }, - "node_modules/@vscode/gulp-vinyl-zip": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@vscode/gulp-vinyl-zip/-/gulp-vinyl-zip-2.5.0.tgz", - "integrity": "sha512-PP/xkOoLBSY3V04HmzRxF+NOxkRJ/m2D0YwWpfx1FCFv5G8+sZUGPvxX+LRgdJ5vQcR1RHck5x1IkHi75Qjdbw==", - "dependencies": { - "queue": "^4.2.1", - "through": "^2.3.8", - "through2": "^2.0.3", - "vinyl": "^2.0.2", - "vinyl-fs": "^3.0.3", - "yauzl": "^2.2.1", - "yazl": "^2.2.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@xmldom/xmldom": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", - "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==", - "engines": { - "node": ">=14.6" - } - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/any-base": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/any-base/-/any-base-1.1.0.tgz", - "integrity": "sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==" - }, - "node_modules/append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==", - "dependencies": { - "buffer-equal": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==" - }, - "node_modules/asciidoctor-kroki": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/asciidoctor-kroki/-/asciidoctor-kroki-0.17.0.tgz", - "integrity": "sha512-aObUUfAtcfUTjhAP32bgrcoKXLRta57o3V5k+t73FXDKiLi+QfkHE+9+H4mGPTnghXBtiRYzsu7BbVGfTHoQzQ==", - "dependencies": { - "json5": "2.2.3", - "mkdirp": "2.1.3", - "pako": "2.1.0", - "rusha": "0.8.14", - "unxhr": "1.2.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@asciidoctor/core": "~2.2" - } - }, - "node_modules/asciidoctor-kroki/node_modules/unxhr": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.2.0.tgz", - "integrity": "sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==", - "engines": { - "node": ">=8.11" - } - }, - "node_modules/asciidoctor-mathjax": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/asciidoctor-mathjax/-/asciidoctor-mathjax-0.0.5.tgz", - "integrity": "sha512-mrqgfm6L04dvvaYqDXeCu7PfL31sj65R2gISOL6vXI93vwzRRTeQwDi0OiyVzdYPzZMF4JJtJvrKiPiCk6Vv/g==", - "dependencies": { - "mathjax-full": "^3.0.1" - } - }, - "node_modules/asciidoctor-opal-runtime": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/asciidoctor-opal-runtime/-/asciidoctor-opal-runtime-0.3.3.tgz", - "integrity": "sha512-/CEVNiOia8E5BMO9FLooo+Kv18K4+4JBFRJp8vUy/N5dMRAg+fRNV4HA+o6aoSC79jVU/aT5XvUpxSxSsTS8FQ==", - "dependencies": { - "glob": "7.1.3", - "unxhr": "1.0.1" - }, - "engines": { - "node": ">=8.11" - } - }, - "node_modules/async-lock": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/async-lock/-/async-lock-1.4.1.tgz", - "integrity": "sha512-Az2ZTpuytrtqENulXwO3GGv1Bztugx6TT37NIo7imr/Qo0gsYiGtSdBa2B6fsXhTpVZDNfu1Qn3pk531e3q+nQ==" - }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/atomic-sleep": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/atomic-sleep/-/atomic-sleep-1.0.0.tgz", - "integrity": "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/bit-field": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/bit-field/-/bit-field-1.9.0.tgz", - "integrity": "sha512-/rVbn/yK2UBwfrlwUnNFM/MtYC5zsX+5fq8kC4J9uAPPVFWJW332TFjFlD9qMeWxwtHR014Rg5JyrLbSI9Vrlw==", - "dependencies": { - "fs-extra": "^11.2.0", - "onml": "^2.1.0", - "tspan": "^0.4.0", - "yargs": "^17.7.2" - }, - "bin": { - "bitfield": "bin/bitfield.js" - } - }, - "node_modules/bmp-js": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/bmp-js/-/bmp-js-0.1.0.tgz", - "integrity": "sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw==" - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/btoa": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", - "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", - "bin": { - "btoa": "bin/btoa.js" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.1.tgz", - "integrity": "sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==", - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/bytefield-svg": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/bytefield-svg/-/bytefield-svg-1.11.0.tgz", - "integrity": "sha512-eUcxViwwra998zolmC5fhWmpV1Axhv4zdhgWGo4tlcDpu0uwCe8ant4uohUIET+gQKMu9vbZy/al3y1qKK6H7Q==", - "dependencies": { - "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.3" - }, - "bin": { - "bytefield-svg": "cli.js" - } - }, - "node_modules/cache-directory": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cache-directory/-/cache-directory-2.0.0.tgz", - "integrity": "sha512-7YKEapH+2Uikde8hySyfobXBqPKULDyHNl/lhKm7cKf/GJFdG/tU/WpLrOg2y9aUrQrWUilYqawFIiGJPS6gDA==", - "dependencies": { - "xdg-basedir": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/centra": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", - "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", - "dependencies": { - "follow-redirects": "^1.15.6" - } - }, - "node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", - "dependencies": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.6.0.tgz", - "integrity": "sha512-eq0GdBvxVFbqWgmCm7M3XGs1I8oLy/nExUnh6oLqmBditPO9AqQJrkslDpMun/hZ0yyTs8L0m85OHp4ho6Qm9g==", - "dependencies": { - "css-select": "^4.3.0", - "css-what": "^6.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.3.1", - "domutils": "^2.8.0" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/clean-git-ref": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/clean-git-ref/-/clean-git-ref-2.0.1.tgz", - "integrity": "sha512-bLSptAy2P0s6hU4PzuIMKmMJJSE6gLXGH1cntDu7bWJUksvuM+7ReOK61mozULErYvP6a15rnYl0zFDef+pyPw==" - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==" - }, - "node_modules/cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", - "dependencies": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" - } - }, - "node_modules/cloneable-readable/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/cloneable-readable/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/cloneable-readable/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==" - }, - "node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/command-line-usage": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", - "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", - "dependencies": { - "array-back": "^4.0.2", - "chalk": "^2.4.2", - "table-layout": "^1.0.2", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/command-line-usage/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/command-line-usage/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/command-line-usage/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/command-line-usage/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/command-line-usage/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "engines": { - "node": ">=14" - } - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", - "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", - "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.mjs" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/convict": { - "version": "6.2.4", - "resolved": "https://registry.npmjs.org/convict/-/convict-6.2.4.tgz", - "integrity": "sha512-qN60BAwdMVdofckX7AlohVJ2x9UvjTNoKVXCL2LxFk1l7757EJqf1nySdMkPQer0bt8kQ5lQiyZ9/2NvrFBuwQ==", - "dependencies": { - "lodash.clonedeep": "^4.5.0", - "yargs-parser": "^20.2.7" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", - "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.1.0.tgz", - "integrity": "sha512-tJ1w35ZRUiM5FeTzT7DtYWAFFv37ZLqSRkGi2oeCK1gPhvaWjkAtfXvLmvE1pRfxxp9aQo6ba/Pvg1dKj05D4g==", - "dependencies": { - "jiti": "^2.4.1" - }, - "engines": { - "node": ">=v18" - }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=9", - "typescript": ">=5" - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/dargs": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", - "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dateformat": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz", - "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==", - "engines": { - "node": "*" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/diff3": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/diff3/-/diff3-0.0.3.tgz", - "integrity": "sha512-iSq8ngPOt0K53A6eVr4d5Kn6GNrM2nQZtC740pzIriHtn4pOQ2lyzEXQMBeVcWERN0ye7fhBsk9PbLLQOnUx/g==" - }, - "node_modules/dom-serializer": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/dom-walk": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", - "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/duplexify": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz", - "integrity": "sha512-M3BmBhwJRZsSx38lZyhE53Csddgzl5R7xGJNk7CVddZD6CcmwMCH8J+7AprIrQKH7TonKxaCjcv27Qmf+sQ+oA==", - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.2" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/exif-parser": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/exif-parser/-/exif-parser-0.1.12.tgz", - "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/fast-copy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-copy/-/fast-copy-3.0.2.tgz", - "integrity": "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-redact": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", - "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" - }, - "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ] - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/file-type": { - "version": "16.5.4", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", - "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", - "dependencies": { - "readable-web-to-node-stream": "^3.0.0", - "strtok3": "^6.2.4", - "token-types": "^4.1.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", - "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", - "dependencies": { - "locate-path": "^7.2.0", - "path-exists": "^5.0.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "node_modules/flush-write-stream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/flush-write-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/flush-write-stream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==", - "dependencies": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/gifwrap": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.9.4.tgz", - "integrity": "sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ==", - "dependencies": { - "image-q": "^4.0.0", - "omggif": "^1.0.10" - } - }, - "node_modules/git-raw-commits": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", - "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", - "dependencies": { - "dargs": "^8.0.0", - "meow": "^12.0.1", - "split2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.mjs" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-stream": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-7.0.0.tgz", - "integrity": "sha512-evR4kvr6s0Yo5t4CD4H171n4T8XcnPFznvsbeN8K9FPzc0Q0wYqcOWyGtck2qcvJSLXKnU6DnDyfmbDDabYvRQ==", - "dependencies": { - "extend": "^3.0.2", - "glob": "^7.2.0", - "glob-parent": "^6.0.2", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.1", - "pumpify": "^2.0.1", - "readable-stream": "^3.6.0", - "remove-trailing-separator": "^1.1.0", - "to-absolute-glob": "^2.0.2", - "unique-stream": "^2.3.1" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-stream/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/global": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", - "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", - "dependencies": { - "min-document": "^2.19.0", - "process": "^0.11.10" - } - }, - "node_modules/global-directory": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", - "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", - "dependencies": { - "ini": "4.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/help-me": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/help-me/-/help-me-4.2.0.tgz", - "integrity": "sha512-TAOnTB8Tz5Dw8penUuzHVrKNKlCIbwwbHnXraNJxPwf8LRtE2HlM84RYuezMFcwOJmoYOCWVDyJ8TQGxn9PgxA==", - "dependencies": { - "glob": "^8.0.0", - "readable-stream": "^3.6.0" - } - }, - "node_modules/help-me/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/help-me/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/help-me/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hpagent": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", - "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", - "engines": { - "node": ">=14" - } - }, - "node_modules/html-entities": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.6.tgz", - "integrity": "sha512-9o0+dcpIw2/HxkNuYKxSJUF/MMRZQECK4GnF+oQOmJ83yCVHTWgCH5aOXxK5bozNRmM8wtgryjHD3uloPBDEGw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ] - }, - "node_modules/htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/image-q": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/image-q/-/image-q-4.0.0.tgz", - "integrity": "sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw==", - "dependencies": { - "@types/node": "16.9.1" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-meta-resolve": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", - "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "dependencies": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-function": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", - "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==" - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-text-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", - "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", - "dependencies": { - "text-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==" - }, - "node_modules/is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "node_modules/isomorphic-git": { - "version": "1.25.10", - "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.25.10.tgz", - "integrity": "sha512-IxGiaKBwAdcgBXwIcxJU6rHLk+NrzYaaPKXXQffcA0GW3IUrQXdUPDXDo+hkGVcYruuz/7JlGBiuaeTCgIgivQ==", - "dependencies": { - "async-lock": "^1.4.1", - "clean-git-ref": "^2.0.1", - "crc-32": "^1.2.0", - "diff3": "0.0.3", - "ignore": "^5.1.4", - "minimisted": "^2.0.0", - "pako": "^1.0.10", - "pify": "^4.0.1", - "readable-stream": "^3.4.0", - "sha.js": "^2.4.9", - "simple-get": "^4.0.1" - }, - "bin": { - "isogit": "cli.cjs" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/isomorphic-git/node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/jimp": { - "version": "0.16.13", - "resolved": "https://registry.npmjs.org/jimp/-/jimp-0.16.13.tgz", - "integrity": "sha512-Bxz8q7V4rnCky9A0ktTNGA9SkNFVWRHodddI/DaAWZJzF7sVUlFYKQ60y9JGqrKpi48ECA/TnfMzzc5C70VByA==", - "dependencies": { - "@babel/runtime": "^7.7.2", - "@jimp/custom": "^0.16.13", - "@jimp/plugins": "^0.16.13", - "@jimp/types": "^0.16.13", - "regenerator-runtime": "^0.13.3" - } - }, - "node_modules/jiti": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", - "integrity": "sha512-rg9zJN+G4n2nfJl5MW3BMygZX56zKPNVEYYqq7adpmMh4Jn2QNEwhvQlFy6jPVdcod7txZtKHWnyZiA3a0zP7A==", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/joycon": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", - "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", - "engines": { - "node": ">=10" - } - }, - "node_modules/jpeg-js": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.4.tgz", - "integrity": "sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg==" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/lazystream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/lazystream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==", - "dependencies": { - "flush-write-stream": "^1.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/load-bmfont": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", - "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", - "dependencies": { - "buffer-equal": "0.0.1", - "mime": "^1.3.4", - "parse-bmfont-ascii": "^1.0.3", - "parse-bmfont-binary": "^1.0.5", - "parse-bmfont-xml": "^1.1.4", - "phin": "^3.7.1", - "xhr": "^2.0.1", - "xtend": "^4.0.0" - } - }, - "node_modules/load-bmfont/node_modules/buffer-equal": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", - "integrity": "sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/load-bmfont/node_modules/phin": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", - "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", - "dependencies": { - "centra": "^2.7.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", - "dependencies": { - "p-locate": "^6.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.kebabcase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", - "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/lodash.mergewith": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", - "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==" - }, - "node_modules/lodash.snakecase": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", - "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" - }, - "node_modules/lodash.startcase": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", - "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" - }, - "node_modules/lodash.upperfirst": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", - "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==" - }, - "node_modules/logidrom": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/logidrom/-/logidrom-0.3.1.tgz", - "integrity": "sha512-B1Rjay3Ye/JcythUjMt+KLiLIwOjnMJN1M5BRbDgNMsJhmn7yApbx6n1rw7cT3Fi/NA77HDM+y3y1nXvKQVB9Q==", - "dependencies": { - "estraverse": "^5.1.0", - "tspan": "^0.4.0" - } - }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==" - }, - "node_modules/lunr-languages": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/lunr-languages/-/lunr-languages-1.9.0.tgz", - "integrity": "sha512-Be5vFuc8NAheOIjviCRms3ZqFFBlzns3u9DXpPSZvALetgnydAN0poV71pVLFn0keYy/s4VblMMkqewTLe+KPg==" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mathjax-full": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", - "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==", - "dependencies": { - "esm": "^3.2.25", - "mhchemparser": "^4.1.0", - "mj-context-menu": "^0.6.1", - "speech-rule-engine": "^4.0.6" - } - }, - "node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", - "engines": { - "node": ">=16.10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mhchemparser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", - "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==" - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/min-document": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", - "integrity": "sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ==", - "dependencies": { - "dom-walk": "^0.1.0" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minimisted": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minimisted/-/minimisted-2.0.1.tgz", - "integrity": "sha512-1oPjfuLQa2caorJUM8HV8lGgWCc0qqAO1MNv/k05G4qslmsndV/5WdNZrqCiyqiz3wohia2Ij2B7w2Dr7/IyrA==", - "dependencies": { - "minimist": "^1.2.5" - } - }, - "node_modules/mj-context-menu": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", - "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" - }, - "node_modules/mkdirp": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.3.tgz", - "integrity": "sha512-sjAkg21peAG9HS+Dkx7hlG9Ztx7HLeKnvB3NQRcu/mltCVmvkF0pisbiTSfDVYTT86XEfZrTUosLdZLStquZUw==", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/multi-progress": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/multi-progress/-/multi-progress-4.0.0.tgz", - "integrity": "sha512-9zcjyOou3FFCKPXsmkbC3ethv51SFPoA4dJD6TscIp2pUmy26kBDZW6h9XofPELrzseSkuD7r0V+emGEeo39Pg==", - "peerDependencies": { - "progress": "^2.0.0" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" - }, - "node_modules/normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", - "dependencies": { - "remove-trailing-separator": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "dependencies": { - "once": "^1.3.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/omggif": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/omggif/-/omggif-1.0.10.tgz", - "integrity": "sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==" - }, - "node_modules/on-exit-leak-free": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-2.1.2.tgz", - "integrity": "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onml": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/onml/-/onml-2.1.0.tgz", - "integrity": "sha512-fvaSZRzprpwLFge/mcwE0CItfniNisVNamDdMK1FQUjh4ArQZ8ZWSkDaJbZc3XaANKZHq0xIa8NJpZ2HSe3oXA==", - "dependencies": { - "sax": "^1.2.1" - } - }, - "node_modules/ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==", - "dependencies": { - "readable-stream": "^2.0.1" - } - }, - "node_modules/ordered-read-streams/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/ordered-read-streams/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/ordered-read-streams/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", - "dependencies": { - "p-limit": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pako": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", - "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-bmfont-ascii": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz", - "integrity": "sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA==" - }, - "node_modules/parse-bmfont-binary": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz", - "integrity": "sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA==" - }, - "node_modules/parse-bmfont-xml": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", - "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", - "dependencies": { - "xml-parse-from-string": "^1.0.0", - "xml2js": "^0.5.0" - } - }, - "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==" - }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==" - }, - "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/peek-readable": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", - "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, - "node_modules/phin": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz", - "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info." - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "engines": { - "node": ">=6" - } - }, - "node_modules/pino": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/pino/-/pino-8.14.2.tgz", - "integrity": "sha512-zKu9aWeSWTy1JgvxIpZveJKKsAr4+6uNMZ0Vf0KRwzl/UNZA3XjHiIl/0WwqLMkDwuHuDkT5xAgPA2jpKq4whA==", - "dependencies": { - "atomic-sleep": "^1.0.0", - "fast-redact": "^3.1.1", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "v1.0.0", - "pino-std-serializers": "^6.0.0", - "process-warning": "^2.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^3.1.0", - "thread-stream": "^2.0.0" - }, - "bin": { - "pino": "bin.js" - } - }, - "node_modules/pino-abstract-transport": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-1.0.0.tgz", - "integrity": "sha512-c7vo5OpW4wIS42hUVcT5REsL8ZljsUfBjqV/e2sFxmFEFZiq1XLUp5EYLtuDH6PEHq9W1egWqRbnLUP5FuZmOA==", - "dependencies": { - "readable-stream": "^4.0.0", - "split2": "^4.0.0" - } - }, - "node_modules/pino-abstract-transport/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/pino-abstract-transport/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/pino-pretty": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/pino-pretty/-/pino-pretty-10.0.1.tgz", - "integrity": "sha512-yrn00+jNpkvZX/NrPVCPIVHAfTDy3ahF0PND9tKqZk4j9s+loK8dpzrJj4dGb7i+WLuR50ussuTAiWoMWU+qeA==", - "dependencies": { - "colorette": "^2.0.7", - "dateformat": "^4.6.3", - "fast-copy": "^3.0.0", - "fast-safe-stringify": "^2.1.1", - "help-me": "^4.0.1", - "joycon": "^3.1.1", - "minimist": "^1.2.6", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^1.0.0", - "pump": "^3.0.0", - "readable-stream": "^4.0.0", - "secure-json-parse": "^2.4.0", - "sonic-boom": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "bin": { - "pino-pretty": "bin.js" - } - }, - "node_modules/pino-pretty/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/pino-pretty/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/pino-std-serializers": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-6.2.2.tgz", - "integrity": "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==" - }, - "node_modules/pixelmatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/pixelmatch/-/pixelmatch-4.0.2.tgz", - "integrity": "sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==", - "dependencies": { - "pngjs": "^3.0.0" - }, - "bin": { - "pixelmatch": "bin/pixelmatch" - } - }, - "node_modules/pngjs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz", - "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "node_modules/process-warning": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-2.3.2.tgz", - "integrity": "sha512-n9wh8tvBe5sFmsqlg+XQhaQLumwpqoAUruLwjCopgTmUBjJ/fjtBsJzKleCaIGBOMXYEhp1YfKl4d7rJ5ZKJGA==" - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/pump": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", - "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-2.0.1.tgz", - "integrity": "sha512-m7KOje7jZxrmutanlkS1daj1dS6z6BgslzOXmcSEpIlCxM3VJH7lG5QLeck/6hgF6F4crFf01UtQmNsJfweTAw==", - "dependencies": { - "duplexify": "^4.1.1", - "inherits": "^2.0.3", - "pump": "^3.0.0" - } - }, - "node_modules/queue": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/queue/-/queue-4.5.1.tgz", - "integrity": "sha512-AMD7w5hRXcFSb8s9u38acBZ+309u6GsiibP4/0YacJeaurRshogB7v/ZcVPxP5gD5+zIw6ixRHdutiYUJfwKHw==", - "dependencies": { - "inherits": "~2.0.0" - } - }, - "node_modules/quick-format-unescaped": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/quick-format-unescaped/-/quick-format-unescaped-4.0.4.tgz", - "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==" - }, - "node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.4.tgz", - "integrity": "sha512-9nX56alTf5bwXQ3ZDipHJhusu9NTQJ/CVPtb/XHAJCXihZeitfJvIRS4GqQ/mfIoOE3IelHMrpayVrosdHBuLw==", - "dependencies": { - "readable-stream": "^4.7.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/readable-web-to-node-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/real-require": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/real-require/-/real-require-0.2.0.tgz", - "integrity": "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==", - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "engines": { - "node": ">=6" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "node_modules/remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", - "dependencies": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==", - "dependencies": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==" - }, - "node_modules/replace-ext": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", - "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==", - "dependencies": { - "value-or-function": "^3.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/rusha": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.14.tgz", - "integrity": "sha512-cLgakCUf6PedEu15t8kbsjnwIFFR2D4RfL+W3iWFJ4iac7z4B0ZI8fxy4R3J956kAI68HclCFGL8MPoUVC3qVA==" - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-stable-stringify": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", - "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/sax": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", - "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" - }, - "node_modules/secure-json-parse": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", - "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" - }, - "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "node_modules/should-proxy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/should-proxy/-/should-proxy-1.0.4.tgz", - "integrity": "sha512-RPQhIndEIVUCjkfkQ6rs6sOR6pkxJWCNdxtfG5pP0RVgUYbK5911kLTF0TNcCC0G3YCGd492rMollFT2aTd9iQ==" - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/sonic-boom": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-3.3.0.tgz", - "integrity": "sha512-LYxp34KlZ1a2Jb8ZQgFCK3niIHzibdwtwNUWKg0qQRzsDoJ3Gfgkf8KdBTFU3SkejDEIlWwnSnpVdOZIhFMl/g==", - "dependencies": { - "atomic-sleep": "^1.0.0" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/speech-rule-engine": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.2.tgz", - "integrity": "sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==", - "dependencies": { - "@xmldom/xmldom": "0.9.8", - "commander": "13.1.0", - "wicked-good-xpath": "1.3.0" - }, - "bin": { - "sre": "bin/sre" - } - }, - "node_modules/speech-rule-engine/node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", - "engines": { - "node": ">=18" - } - }, - "node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strtok3": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", - "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/svg2img": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/svg2img/-/svg2img-1.0.0-beta.2.tgz", - "integrity": "sha512-Tq05Q0HTXDJZM+9ub9HCPPDbui2VavugF+/H9b1Ur9ykXbPsSUPFeXFZdDlutvDsVWZO8JjHKRdT3grpNSwwSg==", - "dependencies": { - "@resvg/resvg-js": "^2.0.0", - "atob": "^2.0.0", - "btoa": "^1.1.2", - "jimp": "^0.16.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", - "dependencies": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/table-layout/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/table-layout/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/text-extensions": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", - "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/thread-stream": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-2.7.0.tgz", - "integrity": "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==", - "dependencies": { - "real-require": "^0.2.0" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "dependencies": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/through2/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/through2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/timm": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/timm/-/timm-1.7.1.tgz", - "integrity": "sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw==" - }, - "node_modules/tinycolor2": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", - "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" - }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" - }, - "node_modules/to-absolute-glob": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==", - "dependencies": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==", - "dependencies": { - "through2": "^2.0.3" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/token-types": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", - "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, - "node_modules/tspan": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/tspan/-/tspan-0.4.0.tgz", - "integrity": "sha512-0ELL9tpLpTqLliFyQySaxgCO43buCML+j3TI4E1LuSI8wkzITGEVhZCyMvv/A+3ek9KpgALhhgnZESRLTbN+iw==" - }, - "node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/uglify-js": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", - "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "dependencies": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/unxhr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.0.1.tgz", - "integrity": "sha512-MAhukhVHyaLGDjyDYhy8gVjWJyhTECCdNsLwlMoGFoNJ3o79fpQhtQuzmAE4IxCMDwraF4cW8ZjpAV0m9CRQbg==", - "engines": { - "node": ">=8.11" - } - }, - "node_modules/utif": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/utif/-/utif-2.0.1.tgz", - "integrity": "sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg==", - "dependencies": { - "pako": "^1.0.5" - } - }, - "node_modules/utif/node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.1.tgz", - "integrity": "sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==", - "dependencies": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "dependencies": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs/node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/vinyl-fs/node_modules/glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", - "dependencies": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - } - }, - "node_modules/vinyl-fs/node_modules/glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==", - "dependencies": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/vinyl-fs/node_modules/is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", - "dependencies": { - "is-extglob": "^2.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/vinyl-fs/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/vinyl-fs/node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/vinyl-fs/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/vinyl-fs/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/vinyl-fs/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==", - "dependencies": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/wavedrom": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/wavedrom/-/wavedrom-3.5.0.tgz", - "integrity": "sha512-UFStUpq8cbyd1KCYd9HnLpCEy1ZQtzDX72GHZTICQVZVL04JSz7+PG1DxcaSxMAEpdmW4gqGnOzs3zPrKFVO8Q==", - "dependencies": { - "bit-field": "^1.9.0", - "logidrom": "^0.3.1", - "onml": "^2.1.0", - "tspan": "^0.4.0" - } - }, - "node_modules/wavedrom-cli": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/wavedrom-cli/-/wavedrom-cli-3.2.0.tgz", - "integrity": "sha512-KX07T/WHnXfmoo2wvjLlx0eKeGIotB0C5GnfWVHylPfSa7BuNo0bktRCL2+zJ3g72IKc1psuRIGZIn7/soexag==", - "dependencies": { - "fs-extra": "^11.2.0", - "json5": "^2.2.3", - "onml": "^2.1.0", - "svg2img": "^1.0.0-beta.2", - "wavedrom": "^3.5.0", - "yargs": "^17.7.2" - }, - "bin": { - "wavedrom-cli": "wavedrom-cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/wicked-good-xpath": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", - "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==" - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" - }, - "node_modules/wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", - "dependencies": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/wordwrapjs/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha512-1Dly4xqlulvPD3fZUQJLY+FUIeqN3N2MM3uqe4rCJftAvOjFa3jFGfctOgluGx4ahPbUCsZkmJILiP0Vi4T6lQ==", - "engines": { - "node": ">=4" - } - }, - "node_modules/xhr": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", - "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", - "dependencies": { - "global": "~4.4.0", - "is-function": "^1.0.1", - "parse-headers": "^2.0.0", - "xtend": "^4.0.0" - } - }, - "node_modules/xml-parse-from-string": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz", - "integrity": "sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g==" - }, - "node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "engines": { - "node": ">=12" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yazl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", - "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", - "dependencies": { - "buffer-crc32": "~0.2.3" - } - }, - "node_modules/yocto-queue": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", - "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/package.json b/package.json index 009ac7b964..7302fa65d3 100644 --- a/package.json +++ b/package.json @@ -4,13 +4,16 @@ "@antora/cli": "3.1.7", "@antora/lunr-extension": "1.0.0-alpha.8", "@antora/site-generator": "3.1.7", - "asciidoctor-kroki": "0.17.0", "@asciidoctor/tabs": "v1.0.0-beta.6", + "@cloudflare/doca": "^0.1.3", + "@cloudflare/doca-default-theme": "^0.1.1", "@commitlint/cli": "19.8.0", "@commitlint/config-conventional": "19.8.0", + "asciidoctor-kroki": "0.17.0", "asciidoctor-mathjax": "^0.0.5", + "bytefield-svg": "^1.8.0", + "corepack": "^0.34.0", "prettier": "3.4.2", - "wavedrom-cli": "^3.1.1", - "bytefield-svg": "^1.8.0" + "wavedrom-cli": "^3.1.1" } } diff --git a/spec/custom/isa/example/csr/mcustom0.yaml b/spec/custom/isa/example/csr/mcustom0.yaml index 3f24b4faca..6e3f00b9b5 100644 --- a/spec/custom/isa/example/csr/mcustom0.yaml +++ b/spec/custom/isa/example/csr/mcustom0.yaml @@ -10,7 +10,9 @@ long_name: Custom CSR 0 address: 0xfc0 length: 64 priv_mode: M -definedBy: Xcustom +definedBy: + extension: + name: Xcustom writable: true description: An example custom CSR fields: {} diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mcause.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mcause.yaml index 0d16d9c02b..f1caabd8e8 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mcause.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mcause.yaml @@ -15,11 +15,12 @@ writable: true description: | Machine Mode Custom Cause Register / Interrupt context register. definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" fields: INT: location: 31 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie0.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie0.yaml index ff6666ad36..ba19a07a91 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie0.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie0.yaml @@ -12,9 +12,10 @@ length: 32 base: 32 priv_mode: M definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Enable bits for IRQs 0-31 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie1.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie1.yaml index d8a8b4e65b..b2cd9822fb 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie1.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie1.yaml @@ -12,9 +12,10 @@ length: 32 base: 32 priv_mode: M definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Enable bits for IRQs 32-63 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie2.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie2.yaml index 38fb1f63c5..14b32a3e1c 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie2.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie2.yaml @@ -12,9 +12,10 @@ length: 32 base: 32 priv_mode: M definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Enable bits for IRQs 64-95 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie3.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie3.yaml index fc6afbed66..e558e4163b 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie3.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie3.yaml @@ -12,9 +12,10 @@ length: 32 base: 32 priv_mode: M definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Enable bits for IRQs 96-127 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie4.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie4.yaml index a0729aae79..c1b466c8fa 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie4.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie4.yaml @@ -12,9 +12,10 @@ length: 32 base: 32 priv_mode: M definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Enable bits for IRQs 128-159 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie5.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie5.yaml index d5f3459e47..247bce0720 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie5.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie5.yaml @@ -12,9 +12,10 @@ length: 32 base: 32 priv_mode: M definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Enable bits for IRQs 160-191 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie6.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie6.yaml index b04acf194b..121403e25f 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie6.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie6.yaml @@ -12,9 +12,10 @@ length: 32 base: 32 priv_mode: M definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Enable bits for IRQs 192-223 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie7.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie7.yaml index 962b8afe89..68225f4235 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie7.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicie7.yaml @@ -12,9 +12,10 @@ length: 32 base: 32 priv_mode: M definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Enable bits for IRQs 224-255 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl00.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl00.yaml index c643307af2..2840b68644 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl00.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl00.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 0-7 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl01.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl01.yaml index 403c305c11..0a2ae25a9e 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl01.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl01.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 8-15 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl02.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl02.yaml index 145ec8e9a6..d5ebe0329c 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl02.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl02.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 16-23 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl03.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl03.yaml index cd524a29a1..b58922849c 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl03.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl03.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 24-31 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl04.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl04.yaml index f126e2792a..8d56c866ea 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl04.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl04.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 32-39 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl05.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl05.yaml index d9125ae654..a2c6ed1b88 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl05.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl05.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 40-47 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl06.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl06.yaml index 32e89a2c36..8d97e33da3 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl06.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl06.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 48-55 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl07.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl07.yaml index e2e5ed1375..c984432e26 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl07.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl07.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 56-63 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl08.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl08.yaml index b3b015cf80..6153c1469d 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl08.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl08.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 64-71 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl09.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl09.yaml index bb09e14f8e..4e0387a2c2 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl09.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl09.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 72-79 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl10.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl10.yaml index 5edca658bb..1cdc9031d7 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl10.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl10.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 80-87 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl11.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl11.yaml index bafe801ae3..40c49adbcc 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl11.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl11.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 88-95 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl12.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl12.yaml index 3291b1c75d..32393af40a 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl12.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl12.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 96-103 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl13.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl13.yaml index b17ce24139..177dcae516 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl13.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl13.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 104-111 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl14.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl14.yaml index b8184b9cef..a0876b4af0 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl14.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl14.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 112-119 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl15.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl15.yaml index cd34789091..d7072f00d3 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl15.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl15.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 120-127 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl16.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl16.yaml index bf35c64deb..ef226d9ce8 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl16.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl16.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 128-135 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl17.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl17.yaml index 023737da9a..e13eb305c3 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl17.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl17.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 136-143 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl18.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl18.yaml index feaadfeb49..23437f0950 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl18.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl18.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 144-151 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl19.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl19.yaml index c046673a18..85de87cfb8 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl19.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl19.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 152-159 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl20.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl20.yaml index d11703880d..9eabfa32a4 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl20.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl20.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 160-167 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl21.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl21.yaml index 3bedffb2eb..77d7b01303 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl21.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl21.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 168-175 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl22.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl22.yaml index b0f4e880be..f85ec3b53c 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl22.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl22.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 176-183 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl23.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl23.yaml index 99792c6722..881a0bb573 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl23.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl23.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 184-191 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl24.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl24.yaml index 655b451c34..0cec5f6525 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl24.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl24.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 192-199 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl25.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl25.yaml index 510749725a..d95f0712c4 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl25.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl25.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 200-207 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl26.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl26.yaml index 7c20f3fafa..f54fc6af17 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl26.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl26.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 208-215 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl27.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl27.yaml index fe22104776..13843f3123 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl27.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl27.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 216-223 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl28.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl28.yaml index 56e3286c2e..59154cae87 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl28.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl28.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 224-231 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl29.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl29.yaml index abce3ea95e..76e3fb8dda 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl29.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl29.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 232-239 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl30.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl30.yaml index 2440c7939c..3c98e05950 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl30.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl30.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 240-247 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl31.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl31.yaml index 3f7d94ec70..075c4251f3 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl31.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicilvl31.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Level bits for IRQs 248-255 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip0.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip0.yaml index dcf51a8565..829a1e95b1 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip0.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip0.yaml @@ -12,9 +12,10 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Pending bits for IRQs 0-31 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip1.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip1.yaml index d9328107ac..765b5ee458 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip1.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip1.yaml @@ -12,9 +12,10 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Pending bits for IRQs 32-63 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip2.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip2.yaml index 37d868b273..f56600207d 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip2.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip2.yaml @@ -12,9 +12,10 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Pending bits for IRQs 64-95 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip3.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip3.yaml index 0934d63986..0eaaca3f18 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip3.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip3.yaml @@ -12,9 +12,10 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Pending bits for IRQs 96-127 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip4.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip4.yaml index dafd30b064..b603ed86ab 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip4.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip4.yaml @@ -12,9 +12,10 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Pending bits for IRQs 128-159 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip5.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip5.yaml index 829a761d53..775f1cbd81 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip5.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip5.yaml @@ -12,9 +12,10 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Pending bits for IRQs 160-191 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip6.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip6.yaml index bdb5cc6817..5d1fc65c8d 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip6.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip6.yaml @@ -12,9 +12,10 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Pending bits for IRQs 192-223 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip7.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip7.yaml index 4b64270049..29de31cf9d 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip7.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mclicip7.yaml @@ -12,9 +12,10 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint writable: true description: | Pending bits for IRQs 224-255 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mmcr.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mmcr.yaml index 5d80778244..890d7463cf 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mmcr.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mmcr.yaml @@ -15,11 +15,12 @@ writable: true description: | Machine Mode Control Register. definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" fields: WP_EXEC: type: RW diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mntvec.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mntvec.yaml index a9c6516f8c..3f58af53e6 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mntvec.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mntvec.yaml @@ -14,9 +14,10 @@ length: MXLEN writable: true description: Controls where NMI jump. definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint fields: BASE: location: 31-2 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mstkbottomaddr.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mstkbottomaddr.yaml index 052c8d42d8..ada3a44b13 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mstkbottomaddr.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mstkbottomaddr.yaml @@ -15,11 +15,12 @@ writable: true description: | Stack bottom limit register. If the stack pointer (sp == x2) lesser then its value - SpOutOfRange exception occurs definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" fields: STKADDR: location: 31-4 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mstktopaddr.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mstktopaddr.yaml index 98180314e7..f3c76995bf 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mstktopaddr.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mstktopaddr.yaml @@ -15,11 +15,12 @@ writable: true description: | Stack top limit register. If the stack pointer (sp == x2) greater then its value - SpOutOfRange exception occurs definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" fields: STKADDR: location: 31-4 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mthreadptr.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mthreadptr.yaml index 13f571160c..7707b911b9 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mthreadptr.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mthreadptr.yaml @@ -15,11 +15,12 @@ writable: true description: | Thread pointer register for software use in RTOS. Bits are not interpreted by hardware. definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" fields: THREADPTR: location: 31-0 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr0.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr0.yaml index 72e67a2562..c8ec8f010b 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr0.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr0.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Watchpoint end address for region 0 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr1.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr1.yaml index 0de845685b..135d339d8f 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr1.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr1.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Watchpoint end address for region 1 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr2.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr2.yaml index 14b9477c2e..ef00d65fc6 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr2.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr2.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Watchpoint end address for region 2 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr3.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr3.yaml index b8cab0dbb0..7f890bdf19 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr3.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpendaddr3.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Watchpoint end address for region 3 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr0.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr0.yaml index dccaff7641..27b80b3282 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr0.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr0.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Watchpoint start address for region 0 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr1.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr1.yaml index c2852ebd2f..604a57a354 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr1.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr1.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Watchpoint start address for region 1 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr2.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr2.yaml index 0c258547d0..5381afe75a 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr2.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr2.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Watchpoint start address for region 2 diff --git a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr3.yaml b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr3.yaml index 6f90d09e91..56ecb4d839 100644 --- a/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr3.yaml +++ b/spec/custom/isa/qc_iu/csr/Xqci/qc.mwpstartaddr3.yaml @@ -12,11 +12,12 @@ length: 32 priv_mode: M base: 32 definedBy: - anyOf: - - name: Xqci - version: ">=0.7" - - name: Xqciint - version: ">=0.4" + extension: + anyOf: + - name: Xqci + version: ">=0.7" + - name: Xqciint + version: ">=0.4" writable: true description: | Watchpoint start address for region 3 diff --git a/spec/custom/isa/qc_iu/exception_code/ExecWatchpoint.yaml b/spec/custom/isa/qc_iu/exception_code/ExecWatchpoint.yaml new file mode 100644 index 0000000000..22e93e16e7 --- /dev/null +++ b/spec/custom/isa/qc_iu/exception_code/ExecWatchpoint.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: ExecWatchpoint +num: 29 +display_name: Execution watchpoint +definedBy: + extension: + name: Xqciint diff --git a/spec/custom/isa/qc_iu/exception_code/IllegalStackPointer.yaml b/spec/custom/isa/qc_iu/exception_code/IllegalStackPointer.yaml new file mode 100644 index 0000000000..1d6eadefc9 --- /dev/null +++ b/spec/custom/isa/qc_iu/exception_code/IllegalStackPointer.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: IllegalStackPointer +num: 27 +display_name: Illegal stack pointer +definedBy: + extension: + name: Xqciint diff --git a/spec/custom/isa/qc_iu/exception_code/ReadWatchpoint.yaml b/spec/custom/isa/qc_iu/exception_code/ReadWatchpoint.yaml new file mode 100644 index 0000000000..b3d6b926c4 --- /dev/null +++ b/spec/custom/isa/qc_iu/exception_code/ReadWatchpoint.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: ReadWatchpoint +num: 30 +display_name: Read watchpoint +definedBy: + extension: + name: Xqciint diff --git a/spec/custom/isa/qc_iu/exception_code/SpOutOfRange.yaml b/spec/custom/isa/qc_iu/exception_code/SpOutOfRange.yaml new file mode 100644 index 0000000000..6ae7775f49 --- /dev/null +++ b/spec/custom/isa/qc_iu/exception_code/SpOutOfRange.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: SpOutOfRange +num: 28 +display_name: Stack Pointer Out-Of-Range +definedBy: + extension: + name: Xqciint diff --git a/spec/custom/isa/qc_iu/exception_code/WriteWatchpoint.yaml b/spec/custom/isa/qc_iu/exception_code/WriteWatchpoint.yaml new file mode 100644 index 0000000000..fd2bbb2369 --- /dev/null +++ b/spec/custom/isa/qc_iu/exception_code/WriteWatchpoint.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: WriteWatchpoint +num: 31 +display_name: Write watchpoint +definedBy: + extension: + name: Xqciint diff --git a/spec/custom/isa/qc_iu/ext/Xqccmp.yaml b/spec/custom/isa/qc_iu/ext/Xqccmp.yaml index 59c9a484c7..4d765ecc4e 100644 --- a/spec/custom/isa/qc_iu/ext/Xqccmp.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqccmp.yaml @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../schemas/ext_schema.json +# yaml-language-server: $schema=../../../../schemas/ext_schema.json $schema: ext_schema.json# kind: extension @@ -25,9 +25,10 @@ versions: - name: James Ball company: Qualcomm Technologies, Inc. email: jameball@qti.qualcomm.com - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + name: Zca + version: ">= 1.0.0" - version: "0.2.0" state: development ratification_date: null @@ -50,9 +51,10 @@ versions: - Add CSRs qc.mstkbottomaddr and qc.mstktopaddr to support cache range checking - Add list of supported custom exceptions - stack alignment check and stack range check - Add stack exception checks in all push/pop instructions - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + name: Zca + version: ">= 1.0.0" - version: "0.3.0" state: frozen ratification_date: null @@ -72,9 +74,10 @@ versions: changes: - Fix all push and pop instructions IDL code to take in consideration that xlen() returns bits and not bytes - Declare state of extension as "frozen" - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + name: Zca + version: ">= 1.0.0" description: | The Xqccmp extension is a set of instructions which may be executed as a series of existing 32-bit RISC-V instructions. @@ -148,8 +151,13 @@ doc_license: company: name: Qualcomm Technologies, Inc. url: https://qualcomm.com -conflicts: - anyOf: - - allOf: [C, D] - - Zcd - - Zcmp +# cannot be implemented with Zcd or Zcmp +requirements: + not: + extension: + anyOf: + - allOf: + - name: C + - name: D + - name: Zcd + - name: Zcmp diff --git a/spec/custom/isa/qc_iu/ext/Xqci.yaml b/spec/custom/isa/qc_iu/ext/Xqci.yaml index 1e16156f49..48913622a4 100644 --- a/spec/custom/isa/qc_iu/ext/Xqci.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqci.yaml @@ -46,22 +46,24 @@ versions: - Rename extension and sub extensions to match toolchain guidelines - Rename mnemonics to match toolchain guidelines - Ensure every instruction belongs to at least one sub extension - implies: - - { name: Xqcia, version: "0.1.0" } - - { name: Xqciac, version: "0.1.0" } - - { name: Xqcibi, version: "0.1.0" } - - { name: Xqcibm, version: "0.1.0" } - - { name: Xqcicli, version: "0.1.0" } - - { name: Xqcicm, version: "0.1.0" } - - { name: Xqcics, version: "0.1.0" } - - { name: Xqcicsr, version: "0.1.0" } - - { name: Xqciint, version: "0.1.0" } - - { name: Xqcilb, version: "0.1.0" } - - { name: Xqcili, version: "0.1.0" } - - { name: Xqcilia, version: "0.1.0" } - - { name: Xqcilo, version: "0.1.0" } - - { name: Xqcilsm, version: "0.1.0" } - - { name: Xqcisls, version: "0.1.0" } + requirements: + extension: + allOf: + - { name: Xqcia, version: "= 0.1.0" } + - { name: Xqciac, version: "= 0.1.0" } + - { name: Xqcibi, version: "= 0.1.0" } + - { name: Xqcibm, version: "= 0.1.0" } + - { name: Xqcicli, version: "= 0.1.0" } + - { name: Xqcicm, version: "= 0.1.0" } + - { name: Xqcics, version: "= 0.1.0" } + - { name: Xqcicsr, version: "= 0.1.0" } + - { name: Xqciint, version: "= 0.1.0" } + - { name: Xqcilb, version: "= 0.1.0" } + - { name: Xqcili, version: "= 0.1.0" } + - { name: Xqcilia, version: "= 0.1.0" } + - { name: Xqcilo, version: "= 0.1.0" } + - { name: Xqcilsm, version: "= 0.1.0" } + - { name: Xqcisls, version: "= 0.1.0" } - version: "0.4.0" state: frozen ratification_date: null @@ -76,25 +78,26 @@ versions: - Add information about instruction formats of each instruction - Fix description and functionality of qc.c.extu instruction - Fix description and functionality of qc.shladd instruction - implies: - - { name: Xqcia, version: "0.2.0" } - - { name: Xqciac, version: "0.2.0" } - - { name: Xqcibi, version: "0.2.0" } - - { name: Xqcibm, version: "0.2.0" } - - { name: Xqcicli, version: "0.2.0" } - - { name: Xqcicm, version: "0.2.0" } - - { name: Xqcics, version: "0.2.0" } - - { name: Xqcicsr, version: "0.2.0" } - - { name: Xqciint, version: "0.2.0" } - - { name: Xqcilb, version: "0.2.0" } - - { name: Xqcili, version: "0.2.0" } - - { name: Xqcilia, version: "0.2.0" } - - { name: Xqcilo, version: "0.2.0" } - - { name: Xqcilsm, version: "0.2.0" } - - { name: Xqcisls, version: "0.2.0" } - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + allOf: + - name: Zca + version: ">= 1.0.0" + - { name: Xqcia, version: "= 0.2.0" } + - { name: Xqciac, version: "= 0.2.0" } + - { name: Xqcibi, version: "= 0.2.0" } + - { name: Xqcibm, version: "= 0.2.0" } + - { name: Xqcicli, version: "= 0.2.0" } + - { name: Xqcicm, version: "= 0.2.0" } + - { name: Xqcics, version: "= 0.2.0" } + - { name: Xqcicsr, version: "= 0.2.0" } + - { name: Xqciint, version: "= 0.2.0" } + - { name: Xqcilb, version: "= 0.2.0" } + - { name: Xqcili, version: "= 0.2.0" } + - { name: Xqcilia, version: "= 0.2.0" } + - { name: Xqcilo, version: "= 0.2.0" } + - { name: Xqcilsm, version: "= 0.2.0" } + - { name: Xqcisls, version: "= 0.2.0" } - version: "0.5.0" state: frozen ratification_date: null @@ -118,28 +121,29 @@ versions: - Fix description of qc.mclici* CSRs to reflect being part of Xqciint custom extension - Fix description of qc.setinti and qc.clrinti instructions - Fix to make qc.c.mret and qc.c.mnret visible - implies: - - { name: Xqcia, version: "0.3.0" } - - { name: Xqciac, version: "0.3.0" } - - { name: Xqcibi, version: "0.2.0" } - - { name: Xqcibm, version: "0.3.0" } - - { name: Xqcicli, version: "0.2.0" } - - { name: Xqcicm, version: "0.2.0" } - - { name: Xqcics, version: "0.2.0" } - - { name: Xqcicsr, version: "0.2.0" } - - { name: Xqciint, version: "0.3.0" } - - { name: Xqciio, version: "0.1.0" } - - { name: Xqcilb, version: "0.2.0" } - - { name: Xqcili, version: "0.2.0" } - - { name: Xqcilia, version: "0.2.0" } - - { name: Xqcilo, version: "0.2.0" } - - { name: Xqcilsm, version: "0.3.0" } - - { name: Xqcisim, version: "0.1.0" } - - { name: Xqcisls, version: "0.2.0" } - - { name: Xqcisync, version: "0.1.0" } - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + allOf: + - name: Zca + version: ">= 1.0.0" + - { name: Xqcia, version: "= 0.3.0" } + - { name: Xqciac, version: "= 0.3.0" } + - { name: Xqcibi, version: "= 0.2.0" } + - { name: Xqcibm, version: "= 0.3.0" } + - { name: Xqcicli, version: "= 0.2.0" } + - { name: Xqcicm, version: "= 0.2.0" } + - { name: Xqcics, version: "= 0.2.0" } + - { name: Xqcicsr, version: "= 0.2.0" } + - { name: Xqciint, version: "= 0.3.0" } + - { name: Xqciio, version: "= 0.1.0" } + - { name: Xqcilb, version: "= 0.2.0" } + - { name: Xqcili, version: "= 0.2.0" } + - { name: Xqcilia, version: "= 0.2.0" } + - { name: Xqcilo, version: "= 0.2.0" } + - { name: Xqcilsm, version: "= 0.3.0" } + - { name: Xqcisim, version: "= 0.1.0" } + - { name: Xqcisls, version: "= 0.2.0" } + - { name: Xqcisync, version: "= 0.1.0" } - version: "0.6.0" state: frozen ratification_date: null @@ -160,28 +164,29 @@ versions: - Add requirement to include Zca extension for Xqcisim since it has 16-bit instructions - Add requirement to include Zca extension for Xqcisync since it has 16-bit instructions - Remove qc.flags CSR - implies: - - { name: Xqcia, version: "0.4.0" } - - { name: Xqciac, version: "0.3.0" } - - { name: Xqcibi, version: "0.2.0" } - - { name: Xqcibm, version: "0.4.0" } - - { name: Xqcicli, version: "0.2.0" } - - { name: Xqcicm, version: "0.2.0" } - - { name: Xqcics, version: "0.2.0" } - - { name: Xqcicsr, version: "0.3.0" } - - { name: Xqciint, version: "0.3.0" } - - { name: Xqciio, version: "0.1.0" } - - { name: Xqcilb, version: "0.2.0" } - - { name: Xqcili, version: "0.2.0" } - - { name: Xqcilia, version: "0.2.0" } - - { name: Xqcilo, version: "0.2.0" } - - { name: Xqcilsm, version: "0.4.0" } - - { name: Xqcisim, version: "0.2.0" } - - { name: Xqcisls, version: "0.2.0" } - - { name: Xqcisync, version: "0.2.0" } - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + allOf: + - name: Zca + version: ">= 1.0.0" + - { name: Xqcia, version: "= 0.4.0" } + - { name: Xqciac, version: "= 0.3.0" } + - { name: Xqcibi, version: "= 0.2.0" } + - { name: Xqcibm, version: "= 0.4.0" } + - { name: Xqcicli, version: "= 0.2.0" } + - { name: Xqcicm, version: "= 0.2.0" } + - { name: Xqcics, version: "= 0.2.0" } + - { name: Xqcicsr, version: "= 0.3.0" } + - { name: Xqciint, version: "= 0.3.0" } + - { name: Xqciio, version: "= 0.1.0" } + - { name: Xqcilb, version: "= 0.2.0" } + - { name: Xqcili, version: "= 0.2.0" } + - { name: Xqcilia, version: "= 0.2.0" } + - { name: Xqcilo, version: "= 0.2.0" } + - { name: Xqcilsm, version: "= 0.4.0" } + - { name: Xqcisim, version: "= 0.2.0" } + - { name: Xqcisls, version: "= 0.2.0" } + - { name: Xqcisync, version: "= 0.2.0" } - version: "0.7.0" state: frozen ratification_date: null @@ -209,28 +214,29 @@ versions: - Fix qc.cto instruction IDL code - Change width calculations for qc.extdpr, qc.extdprh, qc.extdr, qc.extdupr, qc.extduprh, qc.extdur, - Change width calculations for qc.insbhr, qc.insbpr, qc.insbprh, qc.insbr, qc.insbri - implies: - - { name: Xqcia, version: "0.5.0" } - - { name: Xqciac, version: "0.3.0" } - - { name: Xqcibi, version: "0.2.0" } - - { name: Xqcibm, version: "0.5.0" } - - { name: Xqcicli, version: "0.2.0" } - - { name: Xqcicm, version: "0.2.0" } - - { name: Xqcics, version: "0.2.0" } - - { name: Xqcicsr, version: "0.3.0" } - - { name: Xqciint, version: "0.4.0" } - - { name: Xqciio, version: "0.1.0" } - - { name: Xqcilb, version: "0.2.0" } - - { name: Xqcili, version: "0.2.0" } - - { name: Xqcilia, version: "0.2.0" } - - { name: Xqcilo, version: "0.2.0" } - - { name: Xqcilsm, version: "0.4.0" } - - { name: Xqcisim, version: "0.2.0" } - - { name: Xqcisls, version: "0.2.0" } - - { name: Xqcisync, version: "0.2.0" } - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + allOf: + - name: Zca + version: ">= 1.0.0" + - { name: Xqcia, version: "= 0.5.0" } + - { name: Xqciac, version: "= 0.3.0" } + - { name: Xqcibi, version: "= 0.2.0" } + - { name: Xqcibm, version: "= 0.5.0" } + - { name: Xqcicli, version: "= 0.2.0" } + - { name: Xqcicm, version: "= 0.2.0" } + - { name: Xqcics, version: "= 0.2.0" } + - { name: Xqcicsr, version: "= 0.3.0" } + - { name: Xqciint, version: "= 0.4.0" } + - { name: Xqciio, version: "= 0.1.0" } + - { name: Xqcilb, version: "= 0.2.0" } + - { name: Xqcili, version: "= 0.2.0" } + - { name: Xqcilia, version: "= 0.2.0" } + - { name: Xqcilo, version: "= 0.2.0" } + - { name: Xqcilsm, version: "= 0.4.0" } + - { name: Xqcisim, version: "= 0.2.0" } + - { name: Xqcisls, version: "= 0.2.0" } + - { name: Xqcisync, version: "= 0.2.0" } - version: "0.8.0" state: frozen ratification_date: null @@ -249,28 +255,29 @@ versions: - Fix Xqci extension description to reflect correct 48-bit format field names - Fix IDL code to to match description for qc.insbr instruction - Add stack checks to qc.c.mienter, qc.c.mienter.nest, qc.c.mileaveret - implies: - - { name: Xqcia, version: "0.5.0" } - - { name: Xqciac, version: "0.3.0" } - - { name: Xqcibi, version: "0.2.0" } - - { name: Xqcibm, version: "0.6.0" } - - { name: Xqcicli, version: "0.2.0" } - - { name: Xqcicm, version: "0.2.0" } - - { name: Xqcics, version: "0.2.0" } - - { name: Xqcicsr, version: "0.3.0" } - - { name: Xqciint, version: "0.5.0" } - - { name: Xqciio, version: "0.1.0" } - - { name: Xqcilb, version: "0.2.0" } - - { name: Xqcili, version: "0.2.0" } - - { name: Xqcilia, version: "0.2.0" } - - { name: Xqcilo, version: "0.2.0" } - - { name: Xqcilsm, version: "0.4.0" } - - { name: Xqcisim, version: "0.2.0" } - - { name: Xqcisls, version: "0.2.0" } - - { name: Xqcisync, version: "0.2.0" } - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + allOf: + - name: Zca + version: ">= 1.0.0" + - { name: Xqcia, version: "= 0.5.0" } + - { name: Xqciac, version: "= 0.3.0" } + - { name: Xqcibi, version: "= 0.2.0" } + - { name: Xqcibm, version: "= 0.6.0" } + - { name: Xqcicli, version: "= 0.2.0" } + - { name: Xqcicm, version: "= 0.2.0" } + - { name: Xqcics, version: "= 0.2.0" } + - { name: Xqcicsr, version: "= 0.3.0" } + - { name: Xqciint, version: "= 0.5.0" } + - { name: Xqciio, version: "= 0.1.0" } + - { name: Xqcilb, version: "= 0.2.0" } + - { name: Xqcili, version: "= 0.2.0" } + - { name: Xqcilia, version: "= 0.2.0" } + - { name: Xqcilo, version: "= 0.2.0" } + - { name: Xqcilsm, version: "= 0.4.0" } + - { name: Xqcisim, version: "= 0.2.0" } + - { name: Xqcisls, version: "= 0.2.0" } + - { name: Xqcisync, version: "= 0.2.0" } - version: "0.9.0" state: frozen ratification_date: null @@ -293,28 +300,29 @@ versions: - Fix wrong exponent calculation in qc.normeu instruction - Fix IDL code and description of qc.setwm instruction to state that number of words written 0..31. - Fix IDL code for Smdbltrp and Smrnmi spec compatibility for qc.c.mret and qc.c.mnret instructions - implies: - - { name: Xqcia, version: "0.6.0" } - - { name: Xqciac, version: "0.3.0" } - - { name: Xqcibi, version: "0.2.0" } - - { name: Xqcibm, version: "0.7.0" } - - { name: Xqcicli, version: "0.3.0" } - - { name: Xqcicm, version: "0.2.0" } - - { name: Xqcics, version: "0.2.0" } - - { name: Xqcicsr, version: "0.3.0" } - - { name: Xqciint, version: "0.6.0" } - - { name: Xqciio, version: "0.1.0" } - - { name: Xqcilb, version: "0.2.0" } - - { name: Xqcili, version: "0.2.0" } - - { name: Xqcilia, version: "0.2.0" } - - { name: Xqcilo, version: "0.3.0" } - - { name: Xqcilsm, version: "0.5.0" } - - { name: Xqcisim, version: "0.2.0" } - - { name: Xqcisls, version: "0.2.0" } - - { name: Xqcisync, version: "0.2.0" } - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + allOf: + - name: Zca + version: ">= 1.0.0" + - { name: Xqcia, version: "= 0.6.0" } + - { name: Xqciac, version: "= 0.3.0" } + - { name: Xqcibi, version: "= 0.2.0" } + - { name: Xqcibm, version: "= 0.7.0" } + - { name: Xqcicli, version: "= 0.3.0" } + - { name: Xqcicm, version: "= 0.2.0" } + - { name: Xqcics, version: "= 0.2.0" } + - { name: Xqcicsr, version: "= 0.3.0" } + - { name: Xqciint, version: "= 0.6.0" } + - { name: Xqciio, version: "= 0.1.0" } + - { name: Xqcilb, version: "= 0.2.0" } + - { name: Xqcili, version: "= 0.2.0" } + - { name: Xqcilia, version: "= 0.2.0" } + - { name: Xqcilo, version: "= 0.3.0" } + - { name: Xqcilsm, version: "= 0.5.0" } + - { name: Xqcisim, version: "= 0.2.0" } + - { name: Xqcisls, version: "= 0.2.0" } + - { name: Xqcisync, version: "= 0.2.0" } - version: "0.10.0" state: frozen ratification_date: null @@ -327,28 +335,29 @@ versions: email: dhower@qti.qualcomm.com changes: - Fix IDL code for Smdbltrp and Smrnmi spec compatibility for qc.c.mileaveret instruction - implies: - - { name: Xqcia, version: "0.6.0" } - - { name: Xqciac, version: "0.3.0" } - - { name: Xqcibi, version: "0.2.0" } - - { name: Xqcibm, version: "0.7.0" } - - { name: Xqcicli, version: "0.3.0" } - - { name: Xqcicm, version: "0.2.0" } - - { name: Xqcics, version: "0.2.0" } - - { name: Xqcicsr, version: "0.3.0" } - - { name: Xqciint, version: "0.7.0" } - - { name: Xqciio, version: "0.1.0" } - - { name: Xqcilb, version: "0.2.0" } - - { name: Xqcili, version: "0.2.0" } - - { name: Xqcilia, version: "0.2.0" } - - { name: Xqcilo, version: "0.3.0" } - - { name: Xqcilsm, version: "0.5.0" } - - { name: Xqcisim, version: "0.2.0" } - - { name: Xqcisls, version: "0.2.0" } - - { name: Xqcisync, version: "0.2.0" } - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + allOf: + - name: Zca + version: ">= 1.0.0" + - { name: Xqcia, version: "= 0.6.0" } + - { name: Xqciac, version: "= 0.3.0" } + - { name: Xqcibi, version: "= 0.2.0" } + - { name: Xqcibm, version: "= 0.7.0" } + - { name: Xqcicli, version: "= 0.3.0" } + - { name: Xqcicm, version: "= 0.2.0" } + - { name: Xqcics, version: "= 0.2.0" } + - { name: Xqcicsr, version: "= 0.3.0" } + - { name: Xqciint, version: "= 0.7.0" } + - { name: Xqciio, version: "= 0.1.0" } + - { name: Xqcilb, version: "= 0.2.0" } + - { name: Xqcili, version: "= 0.2.0" } + - { name: Xqcilia, version: "= 0.2.0" } + - { name: Xqcilo, version: "= 0.3.0" } + - { name: Xqcilsm, version: "= 0.5.0" } + - { name: Xqcisim, version: "= 0.2.0" } + - { name: Xqcisls, version: "= 0.2.0" } + - { name: Xqcisync, version: "= 0.2.0" } - version: "0.11.0" state: frozen ratification_date: null @@ -373,28 +382,29 @@ versions: - Fix IDL code for qc.extdpr, qc.extdprh, qc.extdupr and qc.extduprh instructions because change in IDL '<<' operator - Fix IDL code for qc.insb, qc.insbi, qc.insbr and qc.insbri instructions because change in IDL '<<' operator - Fix IDL code for qc.insbh, qc.insbhr, qc.insbpr and qc.insbprh instructions because change in IDL '<<' operator - implies: - - { name: Xqcia, version: "0.7.0" } - - { name: Xqciac, version: "0.3.0" } - - { name: Xqcibi, version: "0.2.0" } - - { name: Xqcibm, version: "0.8.0" } - - { name: Xqcicli, version: "0.3.0" } - - { name: Xqcicm, version: "0.2.0" } - - { name: Xqcics, version: "0.2.0" } - - { name: Xqcicsr, version: "0.3.0" } - - { name: Xqciint, version: "0.8.0" } - - { name: Xqciio, version: "0.1.0" } - - { name: Xqcilb, version: "0.2.0" } - - { name: Xqcili, version: "0.2.0" } - - { name: Xqcilia, version: "0.2.0" } - - { name: Xqcilo, version: "0.3.0" } - - { name: Xqcilsm, version: "0.5.0" } - - { name: Xqcisim, version: "0.2.0" } - - { name: Xqcisls, version: "0.2.0" } - - { name: Xqcisync, version: "0.3.0" } - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + allOf: + - name: Zca + version: ">= 1.0.0" + - { name: Xqcia, version: "= 0.7.0" } + - { name: Xqciac, version: "= 0.3.0" } + - { name: Xqcibi, version: "= 0.2.0" } + - { name: Xqcibm, version: "= 0.8.0" } + - { name: Xqcicli, version: "= 0.3.0" } + - { name: Xqcicm, version: "= 0.2.0" } + - { name: Xqcics, version: "= 0.2.0" } + - { name: Xqcicsr, version: "= 0.3.0" } + - { name: Xqciint, version: "= 0.8.0" } + - { name: Xqciio, version: "= 0.1.0" } + - { name: Xqcilb, version: "= 0.2.0" } + - { name: Xqcili, version: "= 0.2.0" } + - { name: Xqcilia, version: "= 0.2.0" } + - { name: Xqcilo, version: "= 0.3.0" } + - { name: Xqcilsm, version: "= 0.5.0" } + - { name: Xqcisim, version: "= 0.2.0" } + - { name: Xqcisls, version: "= 0.2.0" } + - { name: Xqcisync, version: "= 0.3.0" } - version: "0.12.0" state: frozen ratification_date: null @@ -409,28 +419,29 @@ versions: - Fix desciption of qc.c.eir instruction to match IDL code and functionality - Fix encoding of qc.swm and qc.swmi instructions to state that rs3 cannot be x0 - Fix description and IDL code of qc.swm and qc.lwm instructions to state that length is in rs2[4:0] - implies: - - { name: Xqcia, version: "0.7.0" } - - { name: Xqciac, version: "0.3.0" } - - { name: Xqcibi, version: "0.2.0" } - - { name: Xqcibm, version: "0.8.0" } - - { name: Xqcicli, version: "0.3.0" } - - { name: Xqcicm, version: "0.2.0" } - - { name: Xqcics, version: "0.2.0" } - - { name: Xqcicsr, version: "0.3.0" } - - { name: Xqciint, version: "0.9.0" } - - { name: Xqciio, version: "0.1.0" } - - { name: Xqcilb, version: "0.2.0" } - - { name: Xqcili, version: "0.2.0" } - - { name: Xqcilia, version: "0.2.0" } - - { name: Xqcilo, version: "0.3.0" } - - { name: Xqcilsm, version: "0.6.0" } - - { name: Xqcisim, version: "0.2.0" } - - { name: Xqcisls, version: "0.2.0" } - - { name: Xqcisync, version: "0.3.0" } - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + allOf: + - name: Zca + version: ">= 1.0.0" + - { name: Xqcia, version: "= 0.7.0" } + - { name: Xqciac, version: "= 0.3.0" } + - { name: Xqcibi, version: "= 0.2.0" } + - { name: Xqcibm, version: "= 0.8.0" } + - { name: Xqcicli, version: "= 0.3.0" } + - { name: Xqcicm, version: "= 0.2.0" } + - { name: Xqcics, version: "= 0.2.0" } + - { name: Xqcicsr, version: "= 0.3.0" } + - { name: Xqciint, version: "= 0.9.0" } + - { name: Xqciio, version: "= 0.1.0" } + - { name: Xqcilb, version: "= 0.2.0" } + - { name: Xqcili, version: "= 0.2.0" } + - { name: Xqcilia, version: "= 0.2.0" } + - { name: Xqcilo, version: "= 0.3.0" } + - { name: Xqcilsm, version: "= 0.6.0" } + - { name: Xqcisim, version: "= 0.2.0" } + - { name: Xqcisls, version: "= 0.2.0" } + - { name: Xqcisync, version: "= 0.3.0" } - version: "0.13.0" state: frozen ratification_date: null @@ -445,28 +456,29 @@ versions: - Fix version history of releases v0.11.0 and v0.12.0 - Fix description and IDL code of qc.csrrwr instruction to allow just read CSR - Fix IDL code of qc.c.mileaveret instruction to avoid restoring from stack NMIP and EXCP bits - implies: - - { name: Xqcia, version: "0.7.0" } - - { name: Xqciac, version: "0.3.0" } - - { name: Xqcibi, version: "0.2.0" } - - { name: Xqcibm, version: "0.8.0" } - - { name: Xqcicli, version: "0.3.0" } - - { name: Xqcicm, version: "0.2.0" } - - { name: Xqcics, version: "0.2.0" } - - { name: Xqcicsr, version: "0.4.0" } - - { name: Xqciint, version: "0.10.0" } - - { name: Xqciio, version: "0.1.0" } - - { name: Xqcilb, version: "0.2.0" } - - { name: Xqcili, version: "0.2.0" } - - { name: Xqcilia, version: "0.2.0" } - - { name: Xqcilo, version: "0.3.0" } - - { name: Xqcilsm, version: "0.6.0" } - - { name: Xqcisim, version: "0.2.0" } - - { name: Xqcisls, version: "0.2.0" } - - { name: Xqcisync, version: "0.3.0" } - requires: - name: Zca - version: ">= 1.0.0" + requirements: + extension: + allOf: + - name: Zca + version: ">= 1.0.0" + - { name: Xqcia, version: "= 0.7.0" } + - { name: Xqciac, version: "= 0.3.0" } + - { name: Xqcibi, version: "= 0.2.0" } + - { name: Xqcibm, version: "= 0.8.0" } + - { name: Xqcicli, version: "= 0.3.0" } + - { name: Xqcicm, version: "= 0.2.0" } + - { name: Xqcics, version: "= 0.2.0" } + - { name: Xqcicsr, version: "= 0.4.0" } + - { name: Xqciint, version: "= 0.10.0" } + - { name: Xqciio, version: "= 0.1.0" } + - { name: Xqcilb, version: "= 0.2.0" } + - { name: Xqcili, version: "= 0.2.0" } + - { name: Xqcilia, version: "= 0.2.0" } + - { name: Xqcilo, version: "= 0.3.0" } + - { name: Xqcilsm, version: "= 0.6.0" } + - { name: Xqcisim, version: "= 0.2.0" } + - { name: Xqcisls, version: "= 0.2.0" } + - { name: Xqcisync, version: "= 0.3.0" } description: | The Xqci extension includes a set of instructions that improve RISC-V code density and performance in microcontrollers. It fills several gaps: @@ -762,4 +774,7 @@ doc_license: company: name: Qualcomm Technologies, Inc. url: https://qualcomm.com -conflicts: D +requirements: + not: + extension: + name: D diff --git a/spec/custom/isa/qc_iu/ext/Xqciac.yaml b/spec/custom/isa/qc_iu/ext/Xqciac.yaml index a6a5213794..3f93dfbc27 100644 --- a/spec/custom/isa/qc_iu/ext/Xqciac.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqciac.yaml @@ -32,7 +32,8 @@ versions: changes: - Add information about instruction formats of each instruction - Fix description and functionality of qc.shladd instruction - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.3.0" state: frozen ratification_date: null @@ -46,14 +47,19 @@ versions: changes: - Fix description and functionality of qc.shladd instruction - Renaming instructions qc.muladdi to qc.muliadd and qc.c.muladdi to qc.c.muliadd - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } description: | The Xqciac extension includes three instructions to accelerate common address calculations. -conflicts: - anyOf: - - allOf: [C, D] - - Zcd +requirements: + not: + extension: + anyOf: + - allOf: + - name: C + - name: D + - name: Zcd doc_license: name: Creative Commons Attribution 4.0 International License url: https://creativecommons.org/licenses/by/4.0/ diff --git a/spec/custom/isa/qc_iu/ext/Xqcibi.yaml b/spec/custom/isa/qc_iu/ext/Xqcibi.yaml index 78898fe776..2571512ed9 100644 --- a/spec/custom/isa/qc_iu/ext/Xqcibi.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqcibi.yaml @@ -31,7 +31,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Add information about instruction formats of each instruction - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } description: | The Xqcibi extension includes twelve conditional branch instructions that use an immediate operand for a source. diff --git a/spec/custom/isa/qc_iu/ext/Xqcibm.yaml b/spec/custom/isa/qc_iu/ext/Xqcibm.yaml index bd1db20884..92883ec673 100644 --- a/spec/custom/isa/qc_iu/ext/Xqcibm.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqcibm.yaml @@ -32,7 +32,8 @@ versions: changes: - Add information about instruction formats of each instruction - Fix description and functionality of qc.c.extu instruction - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.3.0" state: frozen ratification_date: null @@ -45,7 +46,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Fix description and functionality of qc.c.extu instruction - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.4.0" state: frozen ratification_date: null @@ -58,7 +60,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Fix encoding for qc.c.extu - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.5.0" state: frozen ratification_date: null @@ -73,7 +76,8 @@ versions: - Fix qc.cto instruction IDL code - Change width calculations for qc.extdpr, qc.extdprh, qc.extdr, qc.extdupr, qc.extduprh, qc.extdur, - Change width calculations for qc.insbhr, qc.insbpr, qc.insbprh, qc.insbr, qc.insbri - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.6.0" state: frozen ratification_date: null @@ -90,7 +94,8 @@ versions: - Fix typos in IDL code (missing ')' ) for qc.extdpr, qc.extdr instructions - Fix IDL code and description to look correct in PDF for qc.insbhr and qc.insbh instructions - Fix IDL code to to match description for qc.insbr instruction - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.7.0" state: frozen ratification_date: null @@ -107,7 +112,8 @@ versions: - Fix IDL code and description increasing shift to 6 bit for qc.extdr and qc.extdur instructions - Fix IDL code and description increasing shift to 6 bit for qc.extdpr and qc.extdprh instructions - Fix IDL code and description increasing shift to 6 bit for qc.extdupr and qc.extduprh instructions - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.8.0" state: frozen ratification_date: null @@ -124,7 +130,8 @@ versions: - Fix IDL code for qc.extdpr, qc.extdprh, qc.extdupr and qc.extduprh instructions because change in IDL '<<' operator - Fix IDL code for qc.insb, qc.insbi, qc.insbr and qc.insbri instructions because change in IDL '<<' operator - Fix IDL code for qc.insbh, qc.insbhr, qc.insbpr and qc.insbprh instructions because change in IDL '<<' operator - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } description: | The Xqcibm extension includes thirty eight instructions that perform bit manipulation, include insertion and extraction. diff --git a/spec/custom/isa/qc_iu/ext/Xqcicm.yaml b/spec/custom/isa/qc_iu/ext/Xqcicm.yaml index a259cc380e..287e9f7e24 100644 --- a/spec/custom/isa/qc_iu/ext/Xqcicm.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqcicm.yaml @@ -31,14 +31,19 @@ versions: email: dhower@qti.qualcomm.com changes: - Add information about instruction formats of each instruction - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } description: | The Xqcicm extension includes thirteen conditional move instructions. -conflicts: - anyOf: - - allOf: [C, D] - - Zcd +requirements: + not: + extension: + anyOf: + - allOf: + - name: C + - name: D + - name: Zcd doc_license: name: Creative Commons Attribution 4.0 International License url: https://creativecommons.org/licenses/by/4.0/ diff --git a/spec/custom/isa/qc_iu/ext/Xqciint.yaml b/spec/custom/isa/qc_iu/ext/Xqciint.yaml index c4e1beeb92..7fa7542b4c 100644 --- a/spec/custom/isa/qc_iu/ext/Xqciint.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqciint.yaml @@ -31,7 +31,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Add information about instruction formats of each instruction - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.3.0" state: frozen ratification_date: null @@ -46,7 +47,8 @@ versions: - Fix description of qc.mclici* CSRs to reflect being part of Xqciint custom extension - Fix description of qc.setinti and qc.clrinti instructions - Fix to make qc.c.mret and qc.c.mnret visible - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.4.0" state: frozen ratification_date: null @@ -69,7 +71,8 @@ versions: - Fix IDL code for qc.c.ei, qc.c.eir, qc.c.di, qc.c.dir - Add list of supported custom exceptions - Add dependency on Smrnmi extension - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.5.0" state: frozen ratification_date: null @@ -82,7 +85,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Add stack checks to qc.c.mienter, qc.c.mienter.nest, qc.c.mileaveret - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.6.0" state: frozen ratification_date: null @@ -95,7 +99,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Fix IDL code for Smdbltrp and Smrnmi spec compatibility for qc.c.mret and qc.c.mnret instructions - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.7.0" state: frozen ratification_date: null @@ -108,7 +113,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Fix IDL code for Smdbltrp and Smrnmi spec compatibility for qc.c.mileaveret instruction - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.8.0" state: frozen ratification_date: null @@ -123,7 +129,8 @@ versions: - Fix IDL code for qc.c.mileaveret, qc.c.mnret and qc.c.mret instructions because change in IDL '<<' operator - Fix IDL code for qc.c.clrint, qc.c.setint, qc.clrinti and qc.setinti instructions because change in IDL '<<' operator - Fix IDL code for qc.c.di, qc.c.dir, qc.c.ei, qc.c.eir and qc.c.mienter.nest instructions because change in IDL '<<' operator - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.9.0" state: frozen ratification_date: null @@ -136,7 +143,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Fix desciption of qc.c.eir instruction to match IDL code and functionality - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.10.0" state: frozen ratification_date: null @@ -149,7 +157,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Fix IDL code of qc.c.mileaveret instruction to avoid restoring from stack NMIP and EXCP bits - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } description: | The Xqciint extension includes eleven instructions to accelerate interrupt servicing by performing common actions during ISR prologue/epilogue. @@ -160,20 +169,3 @@ doc_license: company: name: Qualcomm Technologies, Inc. url: https://qualcomm.com - -exception_codes: - - num: 27 - name: Illegal Stack Pointer - var: IllegalStackPointer - - num: 28 - name: Stack Pointer Out-Of-Range - var: SpOutOfRange - - num: 29 - name: Execution Watchpoint - var: ExecWatchpoint - - num: 30 - name: Read Watchpoint - var: ReadWatchpoint - - num: 31 - name: Write Watchpoint - var: WriteWatchpoint diff --git a/spec/custom/isa/qc_iu/ext/Xqcilb.yaml b/spec/custom/isa/qc_iu/ext/Xqcilb.yaml index 25eb1faba9..3d024ae6a1 100644 --- a/spec/custom/isa/qc_iu/ext/Xqcilb.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqcilb.yaml @@ -31,7 +31,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Add information about instruction formats of each instruction - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } description: | The Xqcilb extension includes two 48-bit instructions to encode a long branch. diff --git a/spec/custom/isa/qc_iu/ext/Xqcili.yaml b/spec/custom/isa/qc_iu/ext/Xqcili.yaml index afa0bf4102..07f1ee9db5 100644 --- a/spec/custom/isa/qc_iu/ext/Xqcili.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqcili.yaml @@ -19,7 +19,8 @@ versions: - name: Derek Hower company: Qualcomm Technologies, Inc. email: dhower@qti.qualcomm.com - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.2.0" state: frozen ratification_date: null @@ -32,7 +33,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Add information about instruction formats of each instruction - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } description: | The Xqcili extension includes a two instructions that load large immediates than is available with the base RISC-V ISA. diff --git a/spec/custom/isa/qc_iu/ext/Xqcilia.yaml b/spec/custom/isa/qc_iu/ext/Xqcilia.yaml index 29a46e224b..10d5509196 100644 --- a/spec/custom/isa/qc_iu/ext/Xqcilia.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqcilia.yaml @@ -31,7 +31,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Add information about instruction formats of each instruction - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } description: | The Xqcilia extension includes eight 48-bit instructions that perform arithmetic using large immediates. diff --git a/spec/custom/isa/qc_iu/ext/Xqcilo.yaml b/spec/custom/isa/qc_iu/ext/Xqcilo.yaml index 21ac06fc92..ec807de902 100644 --- a/spec/custom/isa/qc_iu/ext/Xqcilo.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqcilo.yaml @@ -31,7 +31,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Add information about instruction formats of each instruction - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.3.0" state: frozen ratification_date: null diff --git a/spec/custom/isa/qc_iu/ext/Xqcisim.yaml b/spec/custom/isa/qc_iu/ext/Xqcisim.yaml index 62bdcc13cb..443346adf6 100644 --- a/spec/custom/isa/qc_iu/ext/Xqcisim.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqcisim.yaml @@ -32,7 +32,8 @@ versions: changes: - Fix decoding of qc.pputci instruction - Add requirement to include Zca extension since has 16-bit instructions - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } description: | The Xqcisim extension includes ten hint instructions to interface simulation environment. On real target any instruction from this extension executed as "no-operation" and have no effect. diff --git a/spec/custom/isa/qc_iu/ext/Xqcisync.yaml b/spec/custom/isa/qc_iu/ext/Xqcisync.yaml index dab5b995b9..d1033a63a5 100644 --- a/spec/custom/isa/qc_iu/ext/Xqcisync.yaml +++ b/spec/custom/isa/qc_iu/ext/Xqcisync.yaml @@ -32,7 +32,8 @@ versions: changes: - Fix decoding of qc.c.delay instruction (state that immediate cannot be 0) - Add requirement to include Zca extension since has 16-bit instructions - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } - version: "0.3.0" state: frozen ratification_date: null @@ -45,7 +46,8 @@ versions: email: dhower@qti.qualcomm.com changes: - Fix IDL code for qc.c.sync, qc.c.syncr, qc.c.syncwf and qc.c.syncwl instructions because change in IDL '<<' operator - requires: { name: Zca, version: ">= 1.0.0" } + requirements: + extension: { name: Zca, version: ">= 1.0.0" } description: | The Xqcisync extension includes nine instructions, eight for non-memory-mapped devices synchronization and delay instruction. Synchronization instructions are kind of IO fences that work with special devices synchronization signals. diff --git a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.mva01s.yaml b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.mva01s.yaml index a291cdc69f..d84c47646a 100644 --- a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.mva01s.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.mva01s.yaml @@ -10,7 +10,9 @@ long_name: Move two s0-s7 registers into a0-a1 description: | This instruction moves r1s' into a0 and r2s' into a1. The execution is atomic, so it is not possible to observe state where only one of a0 or a1 have been updated. The encoding uses sreg number specifiers instead of xreg number specifiers to save encoding space. The mapping between them is specified in the pseudo-code below. -definedBy: Xqccmp +definedBy: + extension: + name: Xqccmp assembly: r1s, r2s encoding: match: 101011---11---10 diff --git a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.mvsa01.yaml b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.mvsa01.yaml index eb49cc967c..12a83ced26 100644 --- a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.mvsa01.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.mvsa01.yaml @@ -12,7 +12,9 @@ description: | The execution is atomic, so it is not possible to observe state where only one of r1s' or r2s' has been updated. The encoding uses sreg number specifiers instead of xreg number specifiers to save encoding space. The mapping between them is specified in the pseudo-code below. -definedBy: Xqccmp +definedBy: + extension: + name: Xqccmp assembly: r1s, r2s encoding: match: 101011---01---10 diff --git a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.pop.yaml b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.pop.yaml index 4de84b79af..e9bc5f7372 100644 --- a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.pop.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.pop.yaml @@ -17,7 +17,9 @@ description: | * it must be a multiple of 16 (bytes): ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112 ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160 -definedBy: Xqccmp +definedBy: + extension: + name: Xqccmp assembly: reg_list, stack_adj encoding: match: 10111010------10 diff --git a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.popret.yaml b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.popret.yaml index 3ef90eacbe..1a2aedf734 100644 --- a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.popret.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.popret.yaml @@ -17,7 +17,9 @@ description: | * it must be a multiple of 16 (bytes): ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112 ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160 -definedBy: Xqccmp +definedBy: + extension: + name: Xqccmp assembly: reg_list, stack_adj encoding: match: 10111110------10 diff --git a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.popretz.yaml b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.popretz.yaml index 917b07f847..f2111805e4 100644 --- a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.popretz.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.popretz.yaml @@ -17,7 +17,9 @@ description: | * it must be a multiple of 16 (bytes): ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112 ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160 -definedBy: Xqccmp +definedBy: + extension: + name: Xqccmp assembly: reg_list, stack_adj encoding: match: 10111100------10 diff --git a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.push.yaml b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.push.yaml index 426ad2651f..9f93c70250 100644 --- a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.push.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.push.yaml @@ -18,7 +18,9 @@ description: | * it must be a multiple of 16 (bytes): ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112 ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160 -definedBy: Xqccmp +definedBy: + extension: + name: Xqccmp assembly: reg_list, -stack_adj encoding: match: 10111000------10 diff --git a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.pushfp.yaml b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.pushfp.yaml index a41a15410c..3306cddf1e 100644 --- a/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.pushfp.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqccmp/qc.cm.pushfp.yaml @@ -19,7 +19,9 @@ description: | * it must be a multiple of 16 (bytes): ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112 ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160 -definedBy: Xqccmp +definedBy: + extension: + name: Xqccmp assembly: reg_list, -stack_adj encoding: match: 10111001------10 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.addsat.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.addsat.yaml index 645181cb85..e73b9ab6c7 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.addsat.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.addsat.yaml @@ -11,9 +11,10 @@ description: | Add signed values `rs1` and `rs2`, saturate the signed result, and write to `rd`. Instruction encoded in R instruction format definedBy: - anyOf: - - Xqci - - Xqcia + extension: + anyOf: + - name: Xqci + - name: Xqcia base: 32 encoding: match: 0001110----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.addusat.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.addusat.yaml index dae48adb05..c8d809d45c 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.addusat.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.addusat.yaml @@ -11,9 +11,10 @@ description: | Add unsigned values `rs1` and `rs2`, saturate the unsigned result, and write to `rd`. Instruction encoded in R instruction format definedBy: - anyOf: - - Xqci - - Xqcia + extension: + anyOf: + - name: Xqci + - name: Xqcia base: 32 encoding: match: 0001111----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.beqi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.beqi.yaml index d391245d3b..7ae6a2a319 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.beqi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.beqi.yaml @@ -11,9 +11,10 @@ description: | Branches to `PC` + `offset` if the value in `rs1` is equal to the signed immediate Instruction encoded in BI instruction format definedBy: - anyOf: - - Xqci - - Xqcibi + extension: + anyOf: + - name: Xqci + - name: Xqcibi base: 32 encoding: match: -----------------000-----1111011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.bgei.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.bgei.yaml index a4dd691fc7..7f4cb2e38d 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.bgei.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.bgei.yaml @@ -11,9 +11,10 @@ description: | Branches to `PC` + `offset` if the value in `rs1` is greater than or equal to the immediate. Instruction encoded in BI instruction format definedBy: - anyOf: - - Xqci - - Xqcibi + extension: + anyOf: + - name: Xqci + - name: Xqcibi base: 32 encoding: match: -----------------101-----1111011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.bgeui.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.bgeui.yaml index 2ad60c4361..118e35631c 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.bgeui.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.bgeui.yaml @@ -11,9 +11,10 @@ description: | Branches to `PC` + `offset` if the unsigned value in `rs1` is greater than or equal to the unsigned immediate. Instruction encoded in BI instruction format definedBy: - anyOf: - - Xqci - - Xqcibi + extension: + anyOf: + - name: Xqci + - name: Xqcibi base: 32 encoding: match: -----------------111-----1111011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.blti.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.blti.yaml index 79b2e1c0ea..889db6c335 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.blti.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.blti.yaml @@ -11,9 +11,10 @@ description: | Branches to `PC` + `offset` if the value in `rs1` is less than the immediate. Instruction encoded in BI instruction format definedBy: - anyOf: - - Xqci - - Xqcibi + extension: + anyOf: + - name: Xqci + - name: Xqcibi base: 32 encoding: match: -----------------100-----1111011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.bltui.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.bltui.yaml index a5ce0c12ad..c018c85f33 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.bltui.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.bltui.yaml @@ -11,9 +11,10 @@ description: | Branches to `PC` + `offset` if the unsigned value in `rs1` is less than the unsigned immediate. Instruction encoded in BI instruction format definedBy: - anyOf: - - Xqci - - Xqcibi + extension: + anyOf: + - name: Xqci + - name: Xqcibi base: 32 encoding: match: -----------------110-----1111011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.bnei.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.bnei.yaml index dd98783f6b..4ba0239d59 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.bnei.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.bnei.yaml @@ -11,9 +11,10 @@ description: | Branches to `PC` + `offset` if the value in `rs1` is not equal to the signed immediate. Instruction encoded in BI instruction format. definedBy: - anyOf: - - Xqci - - Xqcibi + extension: + anyOf: + - name: Xqci + - name: Xqcibi base: 32 encoding: match: -----------------001-----1111011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.brev32.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.brev32.yaml index f4f1c07839..3bf0601929 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.brev32.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.brev32.yaml @@ -11,9 +11,10 @@ description: | Reverses the bit order of `rs1` and writes the result to `rd`. Instruction encoded in I instruction format definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 000011000000-----011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.bexti.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.bexti.yaml index 0525f56688..66aefb89f7 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.bexti.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.bexti.yaml @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../schemas/inst_schema.json +# yaml-language-server: $schema=../../../../../schemas/inst_schema.json $schema: inst_schema.json# kind: instruction @@ -12,9 +12,10 @@ description: | The index is read from the lower log2(XLEN) bits of `shamt`. Instruction encoded in CB instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm assembly: " xd, shamt" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.bseti.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.bseti.yaml index 2c45f26c83..3bab0fb83b 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.bseti.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.bseti.yaml @@ -12,9 +12,10 @@ description: | The index is read from the lower log2(XLEN) bits of `shamt`. Instruction encoded in CB instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm assembly: " xd, shamt" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.clrint.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.clrint.yaml index 7b0dff62ef..fc6325b0f9 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.clrint.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.clrint.yaml @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../schemas/inst_schema.json +# yaml-language-server: $schema=../../../../../schemas/inst_schema.json $schema: inst_schema.json# kind: instruction @@ -11,9 +11,10 @@ description: | Clear interrupt, interrupt number is in `rs1`. Instruction encoded in CI instruction format. definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint assembly: " xs1" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.delay.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.delay.yaml index 7be9c4ada6..40ccbee905 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.delay.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.delay.yaml @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../schemas/inst_schema.json +# yaml-language-server: $schema=../../../../../schemas/inst_schema.json $schema: inst_schema.json# kind: instruction @@ -11,9 +11,10 @@ description: | Delay execution for amount of cycles provided as immediate argument Instruction encoded in CI instruction format. definedBy: - anyOf: - - Xqci - - Xqcisync + extension: + anyOf: + - name: Xqci + - name: Xqcisync assembly: "" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.di.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.di.yaml index 07b4c6d726..8164230c34 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.di.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.di.yaml @@ -12,9 +12,10 @@ description: | Equivalent to "csrrci `zero`, `mstatus`, 8". Instruction encoded in CI instruction format. definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint assembly: "" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.dir.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.dir.yaml index 546a92a924..fafe6dc2b5 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.dir.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.dir.yaml @@ -12,9 +12,10 @@ description: | Equivalent to "csrrci `rd`, `mstatus`, 8". Instruction encoded in CI instruction format. definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint assembly: " xd" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.ei.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.ei.yaml index 7ea946dcf6..e55af5fec1 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.ei.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.ei.yaml @@ -12,9 +12,10 @@ description: | Equivalent to "csrrsi `zero`, `mstatus`, 8". Instruction encoded in CI instruction format. definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint assembly: "" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.eir.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.eir.yaml index ab74cf449b..97f3d3b900 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.eir.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.eir.yaml @@ -11,9 +11,10 @@ description: | Globally restore interrupts, write bit 3 of rs1 to `mstatus.MIE` and `qc.mcause.MIE`. Instruction encoded in CI instruction format. definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint assembly: " xs1" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.extu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.extu.yaml index 01fe5d6c9f..1e63bddb6a 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.extu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.extu.yaml @@ -12,9 +12,10 @@ description: | The width of the subset is determined by (`width_minus1`[4:0] + 1) (1..32). Instruction encoded in CI instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm assembly: " xd, width" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.nest.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.nest.yaml index eb5bb308ce..b5fe379054 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.nest.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.nest.yaml @@ -12,9 +12,10 @@ description: | Instruction encoded in CI instruction format. assembly: "" definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint access: s: never u: never diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.yaml index 1fd585d1b8..e782c7c215 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mienter.yaml @@ -14,9 +14,10 @@ description: | Instruction encoded in CI instruction format. assembly: "" definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint access: s: never u: never diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mileaveret.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mileaveret.yaml index c7d5d7436e..c2e6c081d0 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mileaveret.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mileaveret.yaml @@ -13,9 +13,10 @@ description: | Instruction encoded in CI instruction format. assembly: "" definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint access: s: never u: never diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mnret.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mnret.yaml index f6122c519f..8be22d26fc 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mnret.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mnret.yaml @@ -12,9 +12,10 @@ description: | Instruction encoded in CI instruction format. assembly: "" definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint access: s: never u: never diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mret.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mret.yaml index f09cc89bd2..c7aaa82503 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mret.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mret.yaml @@ -12,9 +12,10 @@ description: | Instruction encoded in CI instruction format. assembly: "" definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint access: s: never u: never diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.muliadd.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.muliadd.yaml index 5c8fd53860..ed60d0fee2 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.muliadd.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.muliadd.yaml @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../../schemas/inst_schema.json +# yaml-language-server: $schema=../../../../../schemas/inst_schema.json $schema: inst_schema.json# kind: instruction @@ -11,9 +11,10 @@ description: | Increments `rd` by the multiplication of `rs1` and an unsigned immediate Instruction encoded in CL instruction format. definedBy: - anyOf: - - Xqci - - Xqciac + extension: + anyOf: + - name: Xqci + - name: Xqciac base: 32 encoding: match: 001-----------10 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mveqz.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mveqz.yaml index 8e869ffb66..f5105e426e 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mveqz.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.mveqz.yaml @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../../schemas/inst_schema.json +# yaml-language-server: $schema=../../../../../schemas/inst_schema.json $schema: inst_schema.json# kind: instruction @@ -11,9 +11,10 @@ description: | Move `rs1` to `rd` if `rd` == 0, keep `rd` value otherwise Instruction encoded in CL instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: 101011---00---10 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.ptrace.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.ptrace.yaml index 77615cbe5d..76831bb6a1 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.ptrace.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.ptrace.yaml @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../schemas/inst_schema.json +# yaml-language-server: $schema=../../../../../schemas/inst_schema.json $schema: inst_schema.json# kind: instruction @@ -13,9 +13,10 @@ description: | Instruction is used to signal simulator to collect some tracing information. Instruction encoded in CI instruction format. definedBy: - anyOf: - - Xqci - - Xqcisim + extension: + anyOf: + - name: Xqci + - name: Xqcisim assembly: "" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.setint.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.setint.yaml index 345e142cc2..186c5cab5e 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.setint.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.setint.yaml @@ -11,9 +11,10 @@ description: | Set interrupt, interrupt number is in `rs1`. Instruction encoded in CI instruction format. definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint assembly: " xs1" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.sync.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.sync.yaml index ade9c00a09..376db04e71 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.sync.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.sync.yaml @@ -16,9 +16,10 @@ description: | Values of bitmask encoding supported: 0,1,2,4,8,16,15,31 Instruction encoded in CB instruction format. definedBy: - anyOf: - - Xqci - - Xqcisync + extension: + anyOf: + - name: Xqci + - name: Xqcisync assembly: " slist" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncr.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncr.yaml index 6e9660e7d3..7d7e1e95f8 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncr.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncr.yaml @@ -16,9 +16,10 @@ description: | Values of bitmask encoding supported: 0,1,2,4,8,16,15,31 Instruction encoded in CB instruction format. definedBy: - anyOf: - - Xqci - - Xqcisync + extension: + anyOf: + - name: Xqci + - name: Xqcisync assembly: " slist" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncwf.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncwf.yaml index bc4cd5da9e..6f9efa124d 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncwf.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncwf.yaml @@ -16,9 +16,10 @@ description: | Values of bitmask encoding supported: 0,1,2,4,8,16,15,31 Instruction encoded in CB instruction format. definedBy: - anyOf: - - Xqci - - Xqcisync + extension: + anyOf: + - name: Xqci + - name: Xqcisync assembly: " slist" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncwl.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncwl.yaml index 6d6d708015..b09ebadb11 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncwl.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.c.syncwl.yaml @@ -16,9 +16,10 @@ description: | Values of bitmask encoding supported: 0,1,2,4,8,16,15,31 Instruction encoded in CB instruction format. definedBy: - anyOf: - - Xqci - - Xqcisync + extension: + anyOf: + - name: Xqci + - name: Xqcisync assembly: " slist" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.clo.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.clo.yaml index 7708e2e308..b944088143 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.clo.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.clo.yaml @@ -15,9 +15,10 @@ description: | output written to the `rd` Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 000010000000-----011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.clrinti.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.clrinti.yaml index ef401d94d1..3521587630 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.clrinti.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.clrinti.yaml @@ -11,9 +11,10 @@ description: | Clear interrupt, interrupt number is in `imm` (0 - 1023). Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint assembly: " imm" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.compress2.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.compress2.yaml index e2e4e29a19..55fc810182 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.compress2.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.compress2.yaml @@ -12,9 +12,10 @@ description: | Write result to `rd`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 000000000000-----011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.compress3.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.compress3.yaml index c891ca1d29..2dfc0bbb2f 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.compress3.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.compress3.yaml @@ -12,9 +12,10 @@ description: | Write result to `rd`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 000000100000-----011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.csrrwr.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.csrrwr.yaml index 647776c36f..ed6d2630ad 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.csrrwr.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.csrrwr.yaml @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../schemas/inst_schema.json +# yaml-language-server: $schema=../../../../../schemas/inst_schema.json $schema: inst_schema.json# kind: instruction @@ -19,9 +19,10 @@ description: | cause any of the side effects that might occur on a CSR write. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcicsr + extension: + anyOf: + - name: Xqci + - name: Xqcicsr assembly: xd, xs1, xs2 base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.csrrwri.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.csrrwri.yaml index cc5ea45ba7..b8da388416 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.csrrwri.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.csrrwri.yaml @@ -17,9 +17,10 @@ description: | cause any of the side effects that might occur on a CSR read. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcicsr + extension: + anyOf: + - name: Xqci + - name: Xqcicsr assembly: " xd, imm, xs2" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.cto.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.cto.yaml index 6125da35e1..407105f550 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.cto.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.cto.yaml @@ -15,9 +15,10 @@ description: | Output written to `rd`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 000010100000-----011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.addai.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.addai.yaml index e876afb789..927e609bf9 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.addai.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.addai.yaml @@ -11,9 +11,10 @@ description: | Add a 32-bit immediate `imm` to the value in `rd`, and store the result back in `rd`. Instruction encoded in QC.EAI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilia + extension: + anyOf: + - name: Xqci + - name: Xqcilia base: 32 encoding: match: --------------------------------0010-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.addi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.addi.yaml index 00b4ea6cd7..e327849cbd 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.addi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.addi.yaml @@ -12,9 +12,10 @@ description: | and store the result in `rd`. Instruction encoded in QC.EI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilia + extension: + anyOf: + - name: Xqci + - name: Xqcilia base: 32 encoding: match: ----------------10---------------011-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.andai.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.andai.yaml index cb7f1f0eb4..b8ecd35ce0 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.andai.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.andai.yaml @@ -11,9 +11,10 @@ description: | And a 32-bit immediate `imm` to the value in `rd`, and store the result back in `rd`. Instruction encoded in QC.EAI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilia + extension: + anyOf: + - name: Xqci + - name: Xqcilia base: 32 encoding: match: --------------------------------1010-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.andi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.andi.yaml index 7cc3ef2dcc..3fa9cd721e 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.andi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.andi.yaml @@ -12,9 +12,10 @@ description: | and store the result in `rd`. Instruction encoded in QC.EI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilia + extension: + anyOf: + - name: Xqci + - name: Xqcilia base: 32 encoding: match: ----------------11---------------011-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.beqi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.beqi.yaml index 402b894a22..f22c7ceb37 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.beqi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.beqi.yaml @@ -11,9 +11,10 @@ description: | Branches to `PC` + `offset` if the value in `rs1` is equal to the signed immediate `imm` Instruction encoded in QC.EB instruction format. definedBy: - anyOf: - - Xqci - - Xqcibi + extension: + anyOf: + - name: Xqci + - name: Xqcibi base: 32 encoding: match: -----------------------11000-----100-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bgei.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bgei.yaml index a3bf9e903e..6f4d3ac365 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bgei.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bgei.yaml @@ -11,9 +11,10 @@ description: | Branches to `PC` + `offset` if the value in `rs1` is greater than or equal to the immediate `imm`. Instruction encoded in QC.EB instruction format. definedBy: - anyOf: - - Xqci - - Xqcibi + extension: + anyOf: + - name: Xqci + - name: Xqcibi base: 32 encoding: match: -----------------------11101-----100-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bgeui.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bgeui.yaml index 04fb5c9ac4..c96b909d8a 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bgeui.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bgeui.yaml @@ -11,9 +11,10 @@ description: | Branches to `PC` + `offset` if the unsigned value in `rs1` is greater than or equal to the unsigned immediate `imm`. Instruction encoded in QC.EB instruction format. definedBy: - anyOf: - - Xqci - - Xqcibi + extension: + anyOf: + - name: Xqci + - name: Xqcibi base: 32 encoding: match: -----------------------11111-----100-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.blti.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.blti.yaml index 2bcc728ffe..f18d99144d 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.blti.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.blti.yaml @@ -11,9 +11,10 @@ description: | Branches to `PC` + `offset` if the value in `rs1` is less than the immediate `imm`. Instruction encoded in QC.EB instruction format. definedBy: - anyOf: - - Xqci - - Xqcibi + extension: + anyOf: + - name: Xqci + - name: Xqcibi base: 32 encoding: match: -----------------------11100-----100-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bltui.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bltui.yaml index 7736b36986..6119e415da 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bltui.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bltui.yaml @@ -11,9 +11,10 @@ description: | Branches to `PC` + `offset` if the unsigned value in `rs1` is less than the unsigned immediate `imm`. Instruction encoded in QC.EB instruction format. definedBy: - anyOf: - - Xqci - - Xqcibi + extension: + anyOf: + - name: Xqci + - name: Xqcibi base: 32 encoding: match: -----------------------11110-----100-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bnei.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bnei.yaml index ebaa2b86fb..e0c1f8d77f 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bnei.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.bnei.yaml @@ -11,9 +11,10 @@ description: | Branches to `PC` + `offset` if the value in `rs1` is not equal to the signed immediate `imm`. Instruction encoded in QC.EB instruction format. definedBy: - anyOf: - - Xqci - - Xqcibi + extension: + anyOf: + - name: Xqci + - name: Xqcibi base: 32 encoding: match: -----------------------11001-----100-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.j.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.j.yaml index 12e61cb0b5..a6e5211e3e 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.j.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.j.yaml @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../schemas/inst_schema.json +# yaml-language-server: $schema=../../../../../schemas/inst_schema.json $schema: inst_schema.json# kind: instruction @@ -11,9 +11,10 @@ description: | Jump to a PC-relative offset. Instruction encoded in QC.EJ instruction format. definedBy: - anyOf: - - Xqci - - Xqcilb + extension: + anyOf: + - name: Xqci + - name: Xqcilb assembly: " imm" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.jal.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.jal.yaml index e8e5e87522..04e74f62b3 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.jal.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.jal.yaml @@ -12,9 +12,10 @@ description: | Instruction encoded in QC.EJ instruction format. address in x1. definedBy: - anyOf: - - Xqci - - Xqcilb + extension: + anyOf: + - name: Xqci + - name: Xqcilb assembly: " imm" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lb.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lb.yaml index ada552d58e..9a951ebccf 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lb.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lb.yaml @@ -13,9 +13,10 @@ description: | Sign extend the result. Instruction encoded in QC.EI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilo + extension: + anyOf: + - name: Xqci + - name: Xqcilo assembly: " xd, imm(xs1)" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lbu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lbu.yaml index 394b2c675b..f759280dee 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lbu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lbu.yaml @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../schemas/inst_schema.json +# yaml-language-server: $schema=../../../../../schemas/inst_schema.json $schema: inst_schema.json# kind: instruction @@ -13,9 +13,10 @@ description: | Zero extend the result. Instruction encoded in QC.EI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilo + extension: + anyOf: + - name: Xqci + - name: Xqcilo assembly: " xd, imm(xs1)" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lh.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lh.yaml index 4b024a3a99..87da7d4347 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lh.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lh.yaml @@ -13,9 +13,10 @@ description: | Sign extend the result. Instruction encoded in QC.EI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilo + extension: + anyOf: + - name: Xqci + - name: Xqcilo assembly: " xd, imm(xs1)" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lhu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lhu.yaml index 90e5e7bae8..ac6e8bbe03 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lhu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lhu.yaml @@ -13,9 +13,10 @@ description: | Zero extend the result. Instruction encoded in QC.EI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilo + extension: + anyOf: + - name: Xqci + - name: Xqcilo assembly: " xd, imm(xs1)" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.li.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.li.yaml index 541d71d03a..b31ff5fed4 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.li.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.li.yaml @@ -11,9 +11,10 @@ description: | Loads the 32-bit immediate `imm` into `rd`. Instruction encoded in QC.EAI instruction format. definedBy: - anyOf: - - Xqci - - Xqcili + extension: + anyOf: + - name: Xqci + - name: Xqcili base: 32 encoding: match: --------------------------------0000-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lw.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lw.yaml index 50ca5aab66..eb24c3d077 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lw.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.lw.yaml @@ -13,9 +13,10 @@ description: | Sign extend the result. Instruction encoded in QC.EI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilo + extension: + anyOf: + - name: Xqci + - name: Xqcilo assembly: " xd, imm(xs1)" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.orai.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.orai.yaml index 646471d289..f0325491e7 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.orai.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.orai.yaml @@ -11,9 +11,10 @@ description: | Or a 32-bit immediate `imm` to the value in `rd`, and store the result back in `rd`. Instruction encoded in QC.EAI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilia + extension: + anyOf: + - name: Xqci + - name: Xqcilia base: 32 encoding: match: --------------------------------1001-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.ori.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.ori.yaml index 1c86e6d9fd..14505d79e7 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.ori.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.ori.yaml @@ -12,9 +12,10 @@ description: | and store the result in `rd`. Instruction encoded in QC.EI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilia + extension: + anyOf: + - name: Xqci + - name: Xqcilia base: 32 encoding: match: ----------------01---------------011-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sb.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sb.yaml index b61da303e3..c087b0150b 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sb.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sb.yaml @@ -12,9 +12,10 @@ description: | address formed by adding `rs1` to a signed offset `imm`. Instruction encoded in QC.ES instruction format. definedBy: - anyOf: - - Xqci - - Xqcilo + extension: + anyOf: + - name: Xqci + - name: Xqcilo assembly: " xs2, imm(xs1)" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sh.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sh.yaml index 9ed51ba382..7b34555e8e 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sh.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sh.yaml @@ -12,9 +12,10 @@ description: | address formed by adding `rs1` to a signed offset `imm`. Instruction encoded in QC.ES instruction format. definedBy: - anyOf: - - Xqci - - Xqcilo + extension: + anyOf: + - name: Xqci + - name: Xqcilo assembly: " xs2, imm(xs1)" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sw.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sw.yaml index e5104fa5f4..226e574c74 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sw.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.sw.yaml @@ -12,9 +12,10 @@ description: | address formed by adding `rs1` to a signed offset `imm`. Instruction encoded in QC.ES instruction format. definedBy: - anyOf: - - Xqci - - Xqcilo + extension: + anyOf: + - name: Xqci + - name: Xqcilo assembly: " xs2, imm(xs1)" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.xorai.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.xorai.yaml index 59f58fcaf7..81c9a68bd1 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.xorai.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.xorai.yaml @@ -11,9 +11,10 @@ description: | Exclusive or a 32-bit immediate `imm` to the value in `rd`, and store the result back in `rd`. Instruction encoded in QC.EAI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilia + extension: + anyOf: + - name: Xqci + - name: Xqcilia base: 32 encoding: match: --------------------------------0001-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.xori.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.xori.yaml index 709db2c5ab..cd845348a1 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.e.xori.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.e.xori.yaml @@ -12,9 +12,10 @@ description: | and store the result in `rd`. Instruction encoded in QC.EI instruction format. definedBy: - anyOf: - - Xqci - - Xqcilia + extension: + anyOf: + - name: Xqci + - name: Xqcilia base: 32 encoding: match: ----------------00---------------011-----0011111 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.expand2.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.expand2.yaml index a93e9e07a2..b131f1af5c 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.expand2.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.expand2.yaml @@ -12,9 +12,10 @@ description: | Write result to `rd`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 000001000000-----011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.expand3.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.expand3.yaml index dca9d0ff18..940db96309 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.expand3.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.expand3.yaml @@ -12,9 +12,10 @@ description: | Write result to `rd`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 000001100000-----011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.ext.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.ext.yaml index 4c127bced2..d41093705e 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.ext.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.ext.yaml @@ -13,9 +13,10 @@ description: | and the offset of the subset is determined by `shamt`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 01---------------010-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.extd.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.extd.yaml index b0d82053e1..ded0a5dc3a 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.extd.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.extd.yaml @@ -13,9 +13,10 @@ description: | and the offset (into the pair) of the subset is determined by `shamt`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 11---------------010-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.extdpr.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.extdpr.yaml index f167307669..4b3163b3d1 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.extdpr.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.extdpr.yaml @@ -15,9 +15,10 @@ description: | In case when width == 0, to the destination register written 0. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 0001000----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.extdprh.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.extdprh.yaml index bdb0610625..6edbe745ec 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.extdprh.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.extdprh.yaml @@ -15,9 +15,10 @@ description: | In case when width == 0, to the destination register written 0. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 0001001----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.extdr.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.extdr.yaml index bcd185e71b..8c49bd70a6 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.extdr.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.extdr.yaml @@ -15,9 +15,10 @@ description: | In case when width == 0, to the destination register written 0. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 0000101----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.extdu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.extdu.yaml index 6265c97b05..8414515f02 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.extdu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.extdu.yaml @@ -13,9 +13,10 @@ description: | and the offset (into the pair) of the subset is determined by `shamt`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 10---------------010-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.extdupr.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.extdupr.yaml index caeb53d7d3..f23c3db23c 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.extdupr.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.extdupr.yaml @@ -15,9 +15,10 @@ description: | In case when width == 0, to the destination register written 0. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 0000110----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.extduprh.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.extduprh.yaml index c52b288098..8dda43f657 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.extduprh.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.extduprh.yaml @@ -15,9 +15,10 @@ description: | In case when width == 0, to the destination register written 0. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 0000111----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.extdur.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.extdur.yaml index a6bd6f13d6..ea945980f0 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.extdur.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.extdur.yaml @@ -15,9 +15,10 @@ description: | In case when width == 0, to the destination register written 0. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 0000100----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.extu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.extu.yaml index ccd98e65ea..5ef8d5943a 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.extu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.extu.yaml @@ -13,9 +13,10 @@ description: | and the offset of the subset is determined by `shamt`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 00---------------010-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.insb.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.insb.yaml index 02b6e2124d..63409b74c5 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.insb.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.insb.yaml @@ -13,9 +13,10 @@ description: | and the offset of the subset is determined by `shamt`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 01---------------001-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbh.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbh.yaml index 1af5f1b366..a1d80967ef 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbh.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbh.yaml @@ -18,9 +18,10 @@ description: | In case when width + offset < 33, the destination register is left unchanged. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 10---------------001-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbhr.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbhr.yaml index 3219bcb02d..f4082e197c 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbhr.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbhr.yaml @@ -19,9 +19,10 @@ description: | In case when `rs2` bit [21] == 1 width is enforced to 32. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 0000001----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbi.yaml index 16ffd29540..871e6602dd 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbi.yaml @@ -13,9 +13,10 @@ description: | and the offset of the subset is determined by `shamt`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 00---------------001-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbpr.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbpr.yaml index 3233eaa70a..50452a9667 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbpr.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbpr.yaml @@ -15,9 +15,10 @@ description: | In case when `rs2` bit [13] == 1 width is enforced to 32. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 0000010----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbprh.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbprh.yaml index ea45581855..a8ae0c856c 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbprh.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbprh.yaml @@ -15,9 +15,10 @@ description: | In case when `rs2` bit [29] == 1 width is enforced to 32. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 0000011----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbr.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbr.yaml index d37995307e..10648e686d 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbr.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbr.yaml @@ -15,9 +15,10 @@ description: | In case when `rs2` bit [21] == 1 width is enforced to 32. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 0000000----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbri.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbri.yaml index 89ac8f3333..28780498ad 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.insbri.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.insbri.yaml @@ -15,9 +15,10 @@ description: | In case when `rs1` bit [21] == 1 width is enforced to 32. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcibm + extension: + anyOf: + - name: Xqci + - name: Xqcibm base: 32 encoding: match: 1----------------000-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.inw.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.inw.yaml index 581654cef1..53a4516bad 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.inw.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.inw.yaml @@ -13,9 +13,10 @@ description: | Device space address formed by adding `rs1` to to a unsigned offset `imm`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqciio + extension: + anyOf: + - name: Xqci + - name: Xqciio assembly: xd, imm(xs1) base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.li.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.li.yaml index 32aa393a5f..561ca10bf6 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.li.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.li.yaml @@ -11,9 +11,10 @@ description: | Loads the 20-bit immediate `imm` into `rd`. Instruction encoded in U instruction format. definedBy: - anyOf: - - Xqci - - Xqcili + extension: + anyOf: + - name: Xqci + - name: Xqcili base: 32 encoding: match: -------------------------0011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.lieq.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.lieq.yaml index 1df5212ea3..040526781d 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.lieq.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.lieq.yaml @@ -11,9 +11,10 @@ description: | Move `simm` to `rd` if the value in `rs1` is equal to value `rs2`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcicli + extension: + anyOf: + - name: Xqci + - name: Xqcicli base: 32 encoding: match: -----01----------000-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.lieqi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.lieqi.yaml index 60e219fc9d..c6aca800f5 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.lieqi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.lieqi.yaml @@ -11,9 +11,10 @@ description: | Move `simm` to `rd` if the value in `rs1` is equal to value `imm`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcicli + extension: + anyOf: + - name: Xqci + - name: Xqcicli base: 32 encoding: match: -----11----------000-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.lige.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.lige.yaml index f70d10c68a..a865e6e1d5 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.lige.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.lige.yaml @@ -11,9 +11,10 @@ description: | Move `simm` to `rd` if the value in `rs1` is great or equal than value `rs2`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcicli + extension: + anyOf: + - name: Xqci + - name: Xqcicli base: 32 encoding: match: -----01----------101-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.ligei.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.ligei.yaml index 0532c32f6a..e7911fa42a 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.ligei.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.ligei.yaml @@ -11,9 +11,10 @@ description: | Move `simm` to `rd` if the value in `rs1` is great or equal than value `imm`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcicli + extension: + anyOf: + - name: Xqci + - name: Xqcicli base: 32 encoding: match: -----11----------101-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.ligeu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.ligeu.yaml index f46848a433..6b1c74ddec 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.ligeu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.ligeu.yaml @@ -11,9 +11,10 @@ description: | Move `simm` to `rd` if the unsigned value in `rs1` is great or equal than unsigned value `rs2`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcicli + extension: + anyOf: + - name: Xqci + - name: Xqcicli base: 32 encoding: match: -----01----------111-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.ligeui.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.ligeui.yaml index 624379f60f..0bf90ce160 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.ligeui.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.ligeui.yaml @@ -11,9 +11,10 @@ description: | Move `simm` to `rd` if the unsigned value in `rs1` is great or equal than unsigned value `imm`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcicli + extension: + anyOf: + - name: Xqci + - name: Xqcicli base: 32 encoding: match: -----11----------111-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.lilt.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.lilt.yaml index cc773f4c1f..ca617236e2 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.lilt.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.lilt.yaml @@ -11,9 +11,10 @@ description: | Move `simm` to `rd` if the value in `rs1` is less than value `rs2`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcicli + extension: + anyOf: + - name: Xqci + - name: Xqcicli base: 32 encoding: match: -----01----------100-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.lilti.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.lilti.yaml index 453b7aec48..d867ca9b3a 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.lilti.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.lilti.yaml @@ -11,9 +11,10 @@ description: | Move `simm` to `rd` if the value in `rs1` is less than value `imm`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcicli + extension: + anyOf: + - name: Xqci + - name: Xqcicli base: 32 encoding: match: -----11----------100-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.liltu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.liltu.yaml index 700e3723bf..1453b37d66 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.liltu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.liltu.yaml @@ -11,9 +11,10 @@ description: | Move `simm` to `rd` if the unsigned value in `rs1` is less than unsigned value `rs2`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcicli + extension: + anyOf: + - name: Xqci + - name: Xqcicli base: 32 encoding: match: -----01----------110-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.liltui.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.liltui.yaml index 650b7846e6..614652e477 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.liltui.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.liltui.yaml @@ -11,9 +11,10 @@ description: | Move `simm` to `rd` if the unsigned value in `rs1` is less than unsigned value `imm`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcicli + extension: + anyOf: + - name: Xqci + - name: Xqcicli base: 32 encoding: match: -----11----------110-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.line.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.line.yaml index 86a3a10264..850258bf25 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.line.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.line.yaml @@ -11,9 +11,10 @@ description: | Move `simm` to `rd` if the value in `rs1` is not equal to value `rs2`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcicli + extension: + anyOf: + - name: Xqci + - name: Xqcicli base: 32 encoding: match: -----01----------001-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.linei.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.linei.yaml index 442fd731a2..0da780c01f 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.linei.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.linei.yaml @@ -11,9 +11,10 @@ description: | Move `simm` to `rd` if the value in `rs1` is not equal to value `imm`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcicli + extension: + anyOf: + - name: Xqci + - name: Xqcicli base: 32 encoding: match: -----11----------001-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.lrb.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.lrb.yaml index adcb1f0b96..9c640dd303 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.lrb.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.lrb.yaml @@ -13,9 +13,10 @@ description: | Sign extend the result. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcisls + extension: + anyOf: + - name: Xqci + - name: Xqcisls assembly: " xd, xs1, xs2, shamt" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.lrbu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.lrbu.yaml index 9d598911ae..3d83375a6d 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.lrbu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.lrbu.yaml @@ -12,9 +12,10 @@ description: | address formed by adding `rs1` to `rs2`, shifted by `shamt`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcisls + extension: + anyOf: + - name: Xqci + - name: Xqcisls assembly: " xd, xs1, xs2, shamt" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.lrh.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.lrh.yaml index 8335ab499e..4b3cd23917 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.lrh.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.lrh.yaml @@ -13,9 +13,10 @@ description: | Sign extend the result. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcisls + extension: + anyOf: + - name: Xqci + - name: Xqcisls assembly: " xd, xs1, xs2, shamt" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.lrhu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.lrhu.yaml index 92a98edb3b..eb55bc6f0f 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.lrhu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.lrhu.yaml @@ -12,9 +12,10 @@ description: | address formed by adding `rs1` to `rs2`, shifted by `shamt`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcisls + extension: + anyOf: + - name: Xqci + - name: Xqcisls assembly: " xd, xs1, xs2, shamt" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.lrw.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.lrw.yaml index b78d165aca..0b6fc6a697 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.lrw.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.lrw.yaml @@ -12,9 +12,10 @@ description: | address formed by adding `rs1` to `rs2`, shifted by `shamt`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcisls + extension: + anyOf: + - name: Xqci + - name: Xqcisls assembly: xd, xs1, xs2, shamt base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.lwm.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.lwm.yaml index 1907890070..194e460645 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.lwm.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.lwm.yaml @@ -12,9 +12,10 @@ description: | The number of words is in `rs2` bits [4:0]. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcilsm + extension: + anyOf: + - name: Xqci + - name: Xqcilsm base: 32 encoding: match: 00---------------111-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.lwmi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.lwmi.yaml index 290b34756f..6ddc60af9b 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.lwmi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.lwmi.yaml @@ -12,9 +12,10 @@ description: | The number of words is in the `length` immediate. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcilsm + extension: + anyOf: + - name: Xqci + - name: Xqcilsm base: 32 encoding: match: 01---------------111-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.muliadd.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.muliadd.yaml index c7b4696514..ced3eb4833 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.muliadd.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.muliadd.yaml @@ -11,9 +11,10 @@ description: | Increments `rd` by the multiplication of `rs1` and a signed immediate `imm`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqciac + extension: + anyOf: + - name: Xqci + - name: Xqciac base: 32 encoding: match: -----------------110-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.mveq.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.mveq.yaml index bf61db9639..87589f5537 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.mveq.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.mveq.yaml @@ -11,9 +11,10 @@ description: | Move `rs3` to `rd` if the value in `rs1` is equal to value `rs2`. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: -----00----------000-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.mveqi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.mveqi.yaml index f2a0992f40..051f4b9f44 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.mveqi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.mveqi.yaml @@ -11,9 +11,10 @@ description: | Move `rs3` to `rd` if the value in `rs1` is equal to value of `imm`. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: -----10----------000-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvge.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvge.yaml index 62dae950b2..483e907b98 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvge.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvge.yaml @@ -11,9 +11,10 @@ description: | Move `rs3` to `rd` if the value in `rs1` is great or equal than value `rs2`. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: -----00----------101-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgei.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgei.yaml index e95fa469d0..d1767ad495 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgei.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgei.yaml @@ -11,9 +11,10 @@ description: | Move `rs3` to `rd` if the value in `rs1` is great or equal than value of `imm`. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: -----10----------101-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgeu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgeu.yaml index 2482a3b4e7..3053578380 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgeu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgeu.yaml @@ -11,9 +11,10 @@ description: | Move `rs3` to `rd` if the unsigned value in `rs1` is great or equal than unsigned value `rs2`. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: -----00----------111-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgeui.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgeui.yaml index 3ccfee9be9..f6a2fc4e31 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgeui.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvgeui.yaml @@ -11,9 +11,10 @@ description: | Move `rs3` to `rd` if the unsigned value in `rs1` is great or equal than unsigned value of `imm`. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: -----10----------111-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvlt.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvlt.yaml index 87facb5dde..5bbeb180d2 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvlt.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvlt.yaml @@ -11,9 +11,10 @@ description: | Move `rs3` to `rd` if the value in `rs1` is less than value `rs2`. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: -----00----------100-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvlti.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvlti.yaml index dcdc063c52..eee8d2ec9c 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvlti.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvlti.yaml @@ -11,9 +11,10 @@ description: | Move `rs3` to `rd` if the value in `rs1` is less than value of `imm`. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: -----10----------100-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvltu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvltu.yaml index 7cc5405fd9..b5987cdf48 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvltu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvltu.yaml @@ -11,9 +11,10 @@ description: | Move `rs3` to `rd` if the unsigned value in `rs1` is less than unsigned value `rs2`. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: -----00----------110-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvltui.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvltui.yaml index a7f15ee1dd..9333d8d775 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvltui.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvltui.yaml @@ -11,9 +11,10 @@ description: | Move `rs3` to `rd` if the unsigned value in `rs1` is less than unsigned value of `imm`. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: -----10----------110-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvne.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvne.yaml index 324249d32e..587e79975c 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvne.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvne.yaml @@ -11,9 +11,10 @@ description: | Move `rs3` to `rd` if the value in `rs1` is not equal to value `rs2`. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: -----00----------001-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvnei.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvnei.yaml index 24622bf683..9647dfd376 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.mvnei.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.mvnei.yaml @@ -11,9 +11,10 @@ description: | Move `rs3` to `rd` if the value in `rs1` is not equal to value `imm`. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcicm + extension: + anyOf: + - name: Xqci + - name: Xqcicm base: 32 encoding: match: -----10----------001-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.norm.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.norm.yaml index 6f450e63a8..eb5caddf35 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.norm.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.norm.yaml @@ -14,9 +14,10 @@ description: | Write result to `rd`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcia + extension: + anyOf: + - name: Xqci + - name: Xqcia base: 32 encoding: match: 000011100000-----011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.normeu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.normeu.yaml index 8abc8fbbdd..70b2ddfb93 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.normeu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.normeu.yaml @@ -14,9 +14,10 @@ description: | Write result to `rd`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcia + extension: + anyOf: + - name: Xqci + - name: Xqcia base: 32 encoding: match: 000100100000-----011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.normu.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.normu.yaml index 07d734df35..473da8ec20 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.normu.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.normu.yaml @@ -14,9 +14,10 @@ description: | Write result to `rd`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcia + extension: + anyOf: + - name: Xqci + - name: Xqcia base: 32 encoding: match: 000100000000-----011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.outw.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.outw.yaml index f8b21eb47c..babdfcfee0 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.outw.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.outw.yaml @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../schemas/inst_schema.json +# yaml-language-server: $schema=../../../../../schemas/inst_schema.json $schema: inst_schema.json# kind: instruction @@ -13,9 +13,10 @@ description: | Device space address formed by adding `rs1` to to a unsigned offset `imm`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqciio + extension: + anyOf: + - name: Xqci + - name: Xqciio assembly: xs2, imm(xs1) base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.pcoredump.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.pcoredump.yaml index 23a5229580..7564140fc2 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.pcoredump.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.pcoredump.yaml @@ -14,9 +14,10 @@ description: | The core dump format and content are defined by simulation environment. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisim + extension: + anyOf: + - name: Xqci + - name: Xqcisim assembly: "" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.pexit.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.pexit.yaml index de90072707..a2a1c82aee 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.pexit.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.pexit.yaml @@ -12,9 +12,10 @@ description: | Simulation environment is expected to complete its execution and return to the system with exit code provided in `rs1`. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisim + extension: + anyOf: + - name: Xqci + - name: Xqcisim assembly: " xs1" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.ppreg.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.ppreg.yaml index 408e87e7e9..0ef0e02213 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.ppreg.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.ppreg.yaml @@ -12,9 +12,10 @@ description: | Simulation environment expected to print the register value on its console or standard output. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisim + extension: + anyOf: + - name: Xqci + - name: Xqcisim assembly: " xs1" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.ppregs.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.ppregs.yaml index 29847966bf..f159562442 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.ppregs.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.ppregs.yaml @@ -13,9 +13,10 @@ description: | Simulation environment expected to print the all registers value on its console or standard output. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisim + extension: + anyOf: + - name: Xqci + - name: Xqcisim assembly: "" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.pputc.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.pputc.yaml index 7fc911378e..3daf65839a 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.pputc.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.pputc.yaml @@ -12,9 +12,10 @@ description: | Simulation environment expected to print the character on its console or standard output. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisim + extension: + anyOf: + - name: Xqci + - name: Xqcisim assembly: " xs1" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.pputci.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.pputci.yaml index b64b4f1256..8b2834ca80 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.pputci.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.pputci.yaml @@ -12,9 +12,10 @@ description: | Simulation environment expected to print the 8-bit character on its console or standard output. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisim + extension: + anyOf: + - name: Xqci + - name: Xqcisim assembly: " imm" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.pputs.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.pputs.yaml index ff6b2a24d7..0956c8918c 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.pputs.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.pputs.yaml @@ -13,9 +13,10 @@ description: | Simulation environment expected to print the string on its console or standard output. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisim + extension: + anyOf: + - name: Xqci + - name: Xqcisim assembly: " xs1" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.psyscall.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.psyscall.yaml index 527ca923de..8c8989d773 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.psyscall.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.psyscall.yaml @@ -13,9 +13,10 @@ description: | Instruction is used to call simulator to execute function according to the argument. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisim + extension: + anyOf: + - name: Xqci + - name: Xqcisim assembly: " xs1" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.psyscalli.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.psyscalli.yaml index 4938995484..927f8585b8 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.psyscalli.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.psyscalli.yaml @@ -13,9 +13,10 @@ description: | Instruction is used to call simulator to execute function according to the argument. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisim + extension: + anyOf: + - name: Xqci + - name: Xqcisim assembly: " imm" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.selecteqi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.selecteqi.yaml index df9d584278..b032095ce3 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.selecteqi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.selecteqi.yaml @@ -12,9 +12,10 @@ description: | move `rs3` to `rd` otherwise. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcics + extension: + anyOf: + - name: Xqci + - name: Xqcics base: 32 encoding: match: -----10----------010-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectieq.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectieq.yaml index 3d4fdeedf5..37eee8a2c1 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectieq.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectieq.yaml @@ -12,9 +12,10 @@ description: | move `simm2` to `rd` otherwise. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcics + extension: + anyOf: + - name: Xqci + - name: Xqcics base: 32 encoding: match: -----01----------010-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectieqi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectieqi.yaml index 0ed2817772..be8e4a8b86 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectieqi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectieqi.yaml @@ -12,9 +12,10 @@ description: | move `simm2` to `rd` otherwise. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcics + extension: + anyOf: + - name: Xqci + - name: Xqcics base: 32 encoding: match: -----11----------010-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectiieq.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectiieq.yaml index 107c951d0b..5750bdd3b8 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectiieq.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectiieq.yaml @@ -12,9 +12,10 @@ description: | move `simm2` to `rd` otherwise. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcics + extension: + anyOf: + - name: Xqci + - name: Xqcics base: 32 encoding: match: -----00----------010-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectiine.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectiine.yaml index 469ab5b6df..63880a8324 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectiine.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectiine.yaml @@ -12,9 +12,10 @@ description: | move `simm2` to `rd` otherwise. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcics + extension: + anyOf: + - name: Xqci + - name: Xqcics base: 32 encoding: match: -----00----------011-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectine.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectine.yaml index 56c41bd0e2..8e96614cc0 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectine.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectine.yaml @@ -12,9 +12,10 @@ description: | move `simm2` to `rd` otherwise. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcics + extension: + anyOf: + - name: Xqci + - name: Xqcics base: 32 encoding: match: -----01----------011-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectinei.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectinei.yaml index 8b3afba350..1dcd01ea30 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectinei.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectinei.yaml @@ -12,9 +12,10 @@ description: | move `simm2` to `rd` otherwise. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcics + extension: + anyOf: + - name: Xqci + - name: Xqcics base: 32 encoding: match: -----11----------011-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectnei.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectnei.yaml index b36ce6b855..0cc096a9f2 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.selectnei.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.selectnei.yaml @@ -12,9 +12,10 @@ description: | move `rs3` to `rd` otherwise. Instruction encoded in R4 instruction format. definedBy: - anyOf: - - Xqci - - Xqcics + extension: + anyOf: + - name: Xqci + - name: Xqcics base: 32 encoding: match: -----10----------011-----1011011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.setinti.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.setinti.yaml index 398e4348f8..0a28f6c511 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.setinti.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.setinti.yaml @@ -11,9 +11,10 @@ description: | Set interrupt, interrupt number is in `imm` (0 - 1023). Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqciint + extension: + anyOf: + - name: Xqci + - name: Xqciint assembly: " imm" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.setwm.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.setwm.yaml index 4e964138df..73305ebb27 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.setwm.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.setwm.yaml @@ -12,9 +12,10 @@ description: | The number of writes is in `rs2` bits [4:0] (0..31). Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcilsm + extension: + anyOf: + - name: Xqci + - name: Xqcilsm base: 32 encoding: match: 10---------------111-----0101011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.setwmi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.setwmi.yaml index 7c169eb588..9f50399f73 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.setwmi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.setwmi.yaml @@ -12,9 +12,10 @@ description: | The number of writes is in length. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcilsm + extension: + anyOf: + - name: Xqci + - name: Xqcilsm base: 32 encoding: match: 11---------------111-----0101011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.shladd.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.shladd.yaml index 3fdd9a5f16..b5609d8ff8 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.shladd.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.shladd.yaml @@ -11,10 +11,11 @@ description: | Left shift _rs1_ by _shamt_ and add the value in _rs2_. Instruction encoded in R instruction format. definedBy: - anyOf: - - name: Xqci - version: ">= 0.2" - - Xqciac + extension: + anyOf: + - name: Xqci + version: ">= 0.2" + - name: Xqciac base: 32 encoding: match: 01---------------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.shlsat.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.shlsat.yaml index 1c5fc03b7f..cf46455804 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.shlsat.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.shlsat.yaml @@ -11,9 +11,10 @@ description: | Left shift `rs1` by the value of `rs2`, and saturate the signed result. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcia + extension: + anyOf: + - name: Xqci + - name: Xqcia base: 32 encoding: match: 0001010----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.shlusat.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.shlusat.yaml index 12fba1ba58..1926666fe4 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.shlusat.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.shlusat.yaml @@ -11,9 +11,10 @@ description: | Left shift `rs1` by the value of `rs2`, and saturate the unsigned result. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcia + extension: + anyOf: + - name: Xqci + - name: Xqcia base: 32 encoding: match: 0001100----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.srb.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.srb.yaml index d8b1b7be98..a0dd0ca53c 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.srb.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.srb.yaml @@ -12,9 +12,10 @@ description: | address formed by adding `rs1` to `rs2`, shifted by `shamt`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcisls + extension: + anyOf: + - name: Xqci + - name: Xqcisls assembly: " xs3, xs1, xs2, shamt" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.srh.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.srh.yaml index 60832823d9..20d11b1ccd 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.srh.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.srh.yaml @@ -12,9 +12,10 @@ description: | address formed by adding `rs1` to `rs2`, shifted by `shamt`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcisls + extension: + anyOf: + - name: Xqci + - name: Xqcisls assembly: " xs3, xs1, xs2, shamt" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.srw.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.srw.yaml index 1b6a4c590d..222f8993b5 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.srw.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.srw.yaml @@ -12,9 +12,10 @@ description: | address formed by adding `rs1` to `rs2`, shifted by `shamt`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcisls + extension: + anyOf: + - name: Xqci + - name: Xqcisls assembly: " xs3, xs1, xs2, shamt" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.subsat.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.subsat.yaml index 96341f89a3..4f74798fa6 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.subsat.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.subsat.yaml @@ -11,9 +11,10 @@ description: | Subtract signed values `rs1` and `rs2`, saturate the signed result, and write to `rd`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcia + extension: + anyOf: + - name: Xqci + - name: Xqcia base: 32 encoding: match: 0010000----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.subusat.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.subusat.yaml index 2f373613de..b3cdb46d5a 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.subusat.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.subusat.yaml @@ -11,9 +11,10 @@ description: | Subtract unsigned values `rs1` and `rs2`, saturate the unsigned result, and write to `rd`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcia + extension: + anyOf: + - name: Xqci + - name: Xqcia base: 32 encoding: match: 0010001----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.swm.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.swm.yaml index 9174bde1a6..293e12ad86 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.swm.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.swm.yaml @@ -12,9 +12,10 @@ description: | The number of words is in `rs2` bits [4:0]. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcilsm + extension: + anyOf: + - name: Xqci + - name: Xqcilsm base: 32 encoding: match: 00---------------111-----0101011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.swmi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.swmi.yaml index 5b2c15b166..877e470640 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.swmi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.swmi.yaml @@ -12,9 +12,10 @@ description: | The number of words is in `length` immediate. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcilsm + extension: + anyOf: + - name: Xqci + - name: Xqcilsm base: 32 encoding: match: 01---------------111-----0101011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.sync.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.sync.yaml index ccdda705da..1da6409d4a 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.sync.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.sync.yaml @@ -14,9 +14,10 @@ description: | Immediate argument is 5-bit bitmask field that specifies up to five pre-defined devices. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisync + extension: + anyOf: + - name: Xqci + - name: Xqcisync assembly: " imm" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.syncr.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.syncr.yaml index 6cb5a4dfea..37676143d3 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.syncr.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.syncr.yaml @@ -14,9 +14,10 @@ description: | Immediate argument is 5-bit bitmask field that specifies up to five pre-defined devices. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisync + extension: + anyOf: + - name: Xqci + - name: Xqcisync assembly: " imm" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.syncwf.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.syncwf.yaml index 9937c7a674..dce7c0e7be 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.syncwf.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.syncwf.yaml @@ -14,9 +14,10 @@ description: | Immediate argument is 5-bit bitmask field that specifies up to five pre-defined devices. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisync + extension: + anyOf: + - name: Xqci + - name: Xqcisync assembly: " imm" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.syncwl.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.syncwl.yaml index c31a789c39..7e4abcd918 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.syncwl.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.syncwl.yaml @@ -14,9 +14,10 @@ description: | Immediate argument is 5-bit bitmask field that specifies up to five pre-defined devices. Instruction encoded in I instruction format. definedBy: - anyOf: - - Xqci - - Xqcisync + extension: + anyOf: + - name: Xqci + - name: Xqcisync assembly: " imm" base: 32 encoding: diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.wrap.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.wrap.yaml index 556e1e8c9e..eaec5490ac 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.wrap.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.wrap.yaml @@ -13,9 +13,10 @@ description: | else, select `rs1`. The result is stored in `rd`. Instruction encoded in R instruction format. definedBy: - anyOf: - - Xqci - - Xqcia + extension: + anyOf: + - name: Xqci + - name: Xqcia base: 32 encoding: match: 0010010----------011-----0001011 diff --git a/spec/custom/isa/qc_iu/inst/Xqci/qc.wrapi.yaml b/spec/custom/isa/qc_iu/inst/Xqci/qc.wrapi.yaml index 0f7fa9d756..5fd2514ab9 100644 --- a/spec/custom/isa/qc_iu/inst/Xqci/qc.wrapi.yaml +++ b/spec/custom/isa/qc_iu/inst/Xqci/qc.wrapi.yaml @@ -14,9 +14,10 @@ description: | Instruction encoded in I instruction format. The `imm` is an unsigned immediate. definedBy: - anyOf: - - Xqci - - Xqcia + extension: + anyOf: + - name: Xqci + - name: Xqcia base: 32 encoding: match: 0----------------000-----0001011 diff --git a/spec/schemas/csr_schema.json b/spec/schemas/csr_schema.json index 43c26b3002..be0c501ae7 100644 --- a/spec/schemas/csr_schema.json +++ b/spec/schemas/csr_schema.json @@ -99,7 +99,7 @@ "description": "When specified, indicates that this field aliases (a portion of) another CSR field" }, "definedBy": { - "$ref": "schema_defs.json#/$defs/requires_entry", + "$ref": "schema_defs.json#/$defs/condition", "description": "Where this field is defined: indicates that the field is only present if the extension(s) are implemented. If definedBy is not given, defaults to the definedBy field of the parent CSR" }, "affectedBy": { @@ -223,7 +223,7 @@ "description": "Function of the field" }, "definedBy": { - "$ref": "schema_defs.json#/$defs/requires_entry", + "$ref": "schema_defs.json#/$defs/condition", "description": "Extension(s) that define the CSR" }, "address": { diff --git a/spec/schemas/exception_code_schema.json b/spec/schemas/exception_code_schema.json new file mode 100644 index 0000000000..643a1f7c07 --- /dev/null +++ b/spec/schemas/exception_code_schema.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + + "type": "object", + "additionalProperties": false, + "required": ["$schema", "kind", "num", "name", "display_name", "definedBy"], + "properties": { + "$schema": { "const": "exception_code_schema.json#" }, + "kind": { "const": "exception_code" }, + "name": { + "type": "string", + "description": "Name of the exception, as a legal IDL variable name" + }, + "display_name": { + "type": "string", + "description": "Pretty display version of the name" + }, + "num": { + "type": "integer", + "description": "Exception number, as reported in the `*cause` CSRs" + }, + "definedBy": { "$ref": "schema_defs.json#/$defs/condition" }, + "$source": { + "$ref": "schema_defs.json#/$defs/$source" + } + } +} diff --git a/spec/schemas/ext_schema.json b/spec/schemas/ext_schema.json index e13d233b4f..bd82cca227 100644 --- a/spec/schemas/ext_schema.json +++ b/spec/schemas/ext_schema.json @@ -1,333 +1,166 @@ { "$schema": "http://json-schema.org/draft-07/schema#", - "$defs": { - "implies_entry": { - "oneOf": [ - { - "$ref": "schema_defs.json#/$defs/extension_with_version" - }, - { - "type": "object", - "required": ["if", "then"], - "additionalProperties": false, + "type": "object", + "required": [ + "$schema", + "kind", + "name", + "type", + "description", + "long_name", + "versions" + ], + "properties": { + "$schema": { + "type": "string", + "format": "uri-reference", + "const": "ext_schema.json#", + "description": "Path to schema, relative to /schemas" + }, + "kind": { + "type": "string", + "const": "extension", + "description": "Object type" + }, + "name": { "$ref": "schema_defs.json#/$defs/extension_name" }, + "long_name": { + "type": "string", + "description": "One line description for the extension" + }, + "description": { + "$ref": "schema_defs.json#/$defs/spec_text", + "description": "Full documentation of the extension" + }, + "rvi_jira_issue": { + "type": "string", + "description": "JIRA issue number for the RVI issue that tracks this extension" + }, + "company": { + "description": "The company that developed this extension", + "$ref": "schema_defs.json#/$defs/company" + }, + "doc_license": { + "$ref": "schema_defs.json#/$defs/license" + }, + "type": { + "enum": ["unprivileged", "privileged"], + "description": "Either unprivileged or privileged" + }, + "requirements": { + "description": "Condition represeting requirements of this extension. If the condition is false, the extension cannot be implemented", + "$ref": "schema_defs.json#/$defs/condition" + }, + "versions": { + "type": "array", + "items": { + "type": "object", + "required": ["version", "state"], + "if": { "properties": { - "if": { - "$ref": "schema_defs.json#/$defs/requires_entry" - }, - "then": { - "oneOf": [ - { - "$ref": "schema_defs.json#/$defs/extension_with_version" - }, - { - "type": "array", - "items": { - "$ref": "schema_defs.json#/$defs/extension_with_version" - } - } - ] + "state": { + "const": "ratified" } } - } - ] - }, - "param_data": { - "type": "object", - "required": ["description", "schema"], - "properties": { - "description": { - "$ref": "schema_defs.json#/$defs/spec_text", - "description": "Parameter description, including list of valid values" - }, - "also_defined_in": { - "oneOf": [ - { - "$ref": "schema_defs.json#/$defs/extension_name" - }, - { - "type": "array", - "items": { - "$ref": "schema_defs.json#/$defs/extension_name" - } - } - ], - "description": "When a parameter is defined by multiple extensions, declare the other extensions here. The parameter *must* mean the same thing in all extensions." }, - "schema": { - "$ref": "json-schema-draft-07.json#" + "then": { + "required": ["ratification_date"] }, - "when": { - "description": "Extension requirement condition that must be met for parameter to exist. The condition that the defining extension is implemented is implicit, and does not need to be explicitly listed", - "$ref": "schema_defs.json#/$defs/requires_entry" - }, - "extra_validation": { - "description": "Ruby code to perform extra validation, when it is not easily expressed with JSON Schema (_e.g._, because it depends on the value of another parameter)", - "type": "string" - } - }, - "additionalProperties": false - }, - "ext_data": { - "type": "object", - "required": [ - "$schema", - "kind", - "name", - "type", - "description", - "long_name", - "versions" - ], - "properties": { - "$schema": { - "type": "string", - "format": "uri-reference", - "const": "ext_schema.json#", - "description": "Path to schema, relative to /schemas" - }, - "kind": { - "type": "string", - "const": "extension", - "description": "Object type" - }, - "name": { "$ref": "schema_defs.json#/$defs/extension_name" }, - "long_name": { - "type": "string", - "description": "One line description for the extension" - }, - "description": { - "$ref": "schema_defs.json#/$defs/spec_text", - "description": "Full documentation of the extension" - }, - "rvi_jira_issue": { - "type": "string", - "description": "JIRA issue number for the RVI issue that tracks this extension" - }, - "company": { - "description": "The company that developed this extension", - "$ref": "schema_defs.json#/$defs/company" - }, - "doc_license": { - "$ref": "schema_defs.json#/$defs/license" - }, - "type": { - "enum": ["unprivileged", "privileged"], - "description": "Either unprivileged or privileged" - }, - "conflicts": { - "description": "Extension(s) that conflict with this extension; both cannot be implemented at the same time", - "$ref": "schema_defs.json#/$defs/requires_entry" - }, - "versions": { - "type": "array", - "items": { - "type": "object", - "required": ["version", "state"], - "if": { + "properties": { + "version": { + "$ref": "schema_defs.json#/$defs/extension_version" + }, + "state": { + "$ref": "schema_defs.json#/$defs/spec_state", + "description": "Current state of this version" + }, + "repositories": { + "description": "Repositories associated with this extension", + "type": "array", + "items": { + "type": "object", "properties": { - "state": { - "const": "ratified" - } - } - }, - "then": { - "required": ["ratification_date"] - }, - "properties": { - "version": { - "$ref": "schema_defs.json#/$defs/extension_version" - }, - "state": { - "$ref": "schema_defs.json#/$defs/spec_state", - "description": "Current state of this version" - }, - "repositories": { - "description": "Repositories associated with this extension", - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { - "type": "string", - "format": "uri" - }, - "branch": { - "type": "string", - "description": "Branch/tag where the work is done" - } - }, - "additionalProperties": false - } - }, - "ratification_date": { - "oneOf": [ - { - "type": "string", - "pattern": "^20[0-9][0-9]-(0[1-9]|1[0-2])$", - "$comment": "When ratification date is known", - "description": "A specific year and month in YYYY-MM format", - "examples": ["2019-01", "2024-12"] - }, - { - "type": "string", - "pattern": "^unknown$", - "$comment": "When ratification date is unknown" - }, - { "type": "null", "$comment": "When version isn't ratified" } - ] - }, - "changes": { - "type": "array", - "items": { - "type": "string" + "url": { + "type": "string", + "format": "uri" }, - "description": "Changes since last version" - }, - "url": { - "type": "string", - "format": "uri", - "description": "Link to ratified document" - }, - "implies": { - "description": "Extension(s) implied by this extension (i.e., any subextensions)", - "oneOf": [ - { - "$ref": "#/$defs/implies_entry" - }, - { - "type": "array", - "items": { - "$ref": "#/$defs/implies_entry" - } - } - ] - }, - "requires": { - "description": "Extension(s) required by this extension", - "$ref": "schema_defs.json#/$defs/requires_entry" - }, - "contributors": { - "description": "List of contributors to this version of the extension", - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Contributor name, in 'GIVEN_NAME SURNAME' format" - }, - "company": { - "type": "string", - "description": "Company the contributor worked for, or 'Individual'" - }, - "email": { - "type": "string", - "format": "email", - "description": "E-mail address for the contributor" - } - } + "branch": { + "type": "string", + "description": "Branch/tag where the work is done" } }, - "param_constraints": { - "type": "object", - "patternProperties": { - "[A-Z][a-zA-Z0-9_]": { - "type": "object", - "properties": { - "schema": { - "$ref": "json-schema-draft-07.json#", - "description": "Extra schema constraints for the parameter" - }, - "extra_validation": { - "type": "string", - "description": "Extra validation to be performed in Ruby after JSON schema validation. Useful for complex conditions JSON Schema cannot handle (e.g., cross-parameter, data-dependent validation)" - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "additionalProperties": false - } - }, - "exception_codes": { - "type": "array", - "items": { - "type": "object", - "description": "Exceptions defined by this extension", - "required": ["num", "name", "var"], - "properties": { - "num": { - "type": "integer" - }, - "name": { + "additionalProperties": false + } + }, + "ratification_date": { + "oneOf": [ + { "type": "string", - "description": "Long-form name (can have special characters)" + "pattern": "^20[0-9][0-9]-(0[1-9]|1[0-2])$", + "$comment": "When ratification date is known", + "description": "A specific year and month in YYYY-MM format", + "examples": ["2019-01", "2024-12"] }, - "var": { + { "type": "string", - "description": "Field name for the InterruptCode enum in IDL" + "pattern": "^unknown$", + "$comment": "When ratification date is unknown" }, - "when": { - "type": "object", - "properties": { - "version": { - "$ref": "schema_defs.json#/$defs/version_requirements" - } - }, - "additionalProperties": false - } + { "type": "null", "$comment": "When version isn't ratified" } + ] + }, + "changes": { + "type": "array", + "items": { + "type": "string" }, - "additionalProperties": false - } - }, - "interrupt_codes": { - "type": "array", - "items": { - "type": "object", - "description": "Interrupts defined by this extension", - "properties": { - "num": { - "type": "integer" - }, - "name": { - "type": "string", - "description": "Long-form name (can have special characters)" - }, - "var": { - "type": "string", - "description": "Field name for the InterruptCode enum in IDL" + "description": "Changes since last version" + }, + "url": { + "type": "string", + "format": "uri", + "description": "Link to ratified document" + }, + "contributors": { + "description": "List of contributors to this version of the extension", + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Contributor name, in 'GIVEN_NAME SURNAME' format" + }, + "company": { + "type": "string", + "description": "Company the contributor worked for, or 'Individual'" + }, + "email": { + "type": "string", + "format": "email", + "description": "E-mail address for the contributor" + } } - }, - "additionalProperties": false - } - }, - "params": { - "type": "object", - "patternProperties": { - "^[A-Z][A-Z_0-9]*$": { - "$ref": "#/$defs/param_data" } }, - "additionalProperties": false - }, - "$source": { - "type": "string", - "description": "Source file where this extension was defined" - }, - "cert_normative_rules": { - "$ref": "schema_defs.json#/$defs/cert_normative_rules" + "requirements": { + "description": "Condition represeting requirements of this extension version _in addition to any specified for the extension overall_. If the condition is false, the extension version cannot be implemented", + "$ref": "schema_defs.json#/$defs/condition" + } }, - "cert_test_procedures": { - "$ref": "schema_defs.json#/$defs/cert_test_procedures" - } - }, - "additionalProperties": false + "additionalProperties": false + } + }, + "$source": { + "type": "string", + "description": "Source file where this extension was defined" + }, + "cert_normative_rules": { + "$ref": "schema_defs.json#/$defs/cert_normative_rules" + }, + "cert_test_procedures": { + "$ref": "schema_defs.json#/$defs/cert_test_procedures" } }, - - "$ref": "#/$defs/ext_data" + "additionalProperties": false } diff --git a/spec/schemas/inst_schema.json b/spec/schemas/inst_schema.json index f31871a136..6f8044c187 100644 --- a/spec/schemas/inst_schema.json +++ b/spec/schemas/inst_schema.json @@ -330,7 +330,7 @@ "description": "Detailed description of the instruction" }, "definedBy": { - "$ref": "schema_defs.json#/$defs/requires_entry", + "$ref": "schema_defs.json#/$defs/condition", "description": "Extension(s) that defines the instruction" }, diff --git a/spec/schemas/interrupt_code_schema.json b/spec/schemas/interrupt_code_schema.json new file mode 100644 index 0000000000..b74bc70d80 --- /dev/null +++ b/spec/schemas/interrupt_code_schema.json @@ -0,0 +1,27 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + + "type": "object", + "additionalProperties": false, + "required": ["$schema", "kind", "num", "name", "display_name", "definedBy"], + "properties": { + "$schema": { "const": "interrupt_code_schema.json#" }, + "kind": { "const": "interrupt_code" }, + "name": { + "type": "string", + "description": "Name of the interrupt, as a legal IDL variable name" + }, + "display_name": { + "type": "string", + "description": "Pretty display version of the name" + }, + "num": { + "type": "integer", + "description": "Interrupt number, as reported in the `*cause` CSRs (not including the leading INT bit)" + }, + "definedBy": { "$ref": "schema_defs.json#/$defs/condition" }, + "$source": { + "$ref": "schema_defs.json#/$defs/$source" + } + } +} diff --git a/spec/schemas/param_schema.json b/spec/schemas/param_schema.json new file mode 100644 index 0000000000..62cea5e225 --- /dev/null +++ b/spec/schemas/param_schema.json @@ -0,0 +1,67 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + + "required": [ + "$schema", + "kind", + "description", + "long_name", + "definedBy", + "schema" + ], + "properties": { + "$schema": { + "const": "param_schema.json#" + }, + "kind": { + "const": "parameter" + }, + "name": { + "$ref": "schema_defs.json#/$defs/param_name" + }, + "long_name": { + "description": "Short description of the parameter", + "type": "string" + }, + "description": { + "$ref": "schema_defs.json#/$defs/spec_text", + "description": "Parameter description, including list of valid values" + }, + "definedBy": { + "description": "Extension requirement condition that must be met for parameter to exist. The condition that the defining extension is implemented is implicit, and does not need to be explicitly listed", + "$ref": "schema_defs.json#/$defs/condition" + }, + "schema": { + "oneOf": [ + { + "type": "object", + "required": ["rv32", "rv64"], + "additionalProperties": false, + "properties": { + "rv32": { + "$ref": "json-schema-draft-07.json#", + "additionalProperties": false + }, + "rv64": { + "$ref": "json-schema-draft-07.json#", + "additionalProperties": false + } + } + }, + { + "$ref": "json-schema-draft-07.json#", + "additionalProperties": false + } + ] + }, + "requirements": { + "$ref": "schema_defs.json#/$defs/condition" + }, + "$source": { + "type": "string", + "description": "Source file where this parameter was defined" + } + }, + "additionalProperties": false +} diff --git a/spec/schemas/schema_defs.json b/spec/schemas/schema_defs.json index 3b2ed7d73b..97c31746cc 100644 --- a/spec/schemas/schema_defs.json +++ b/spec/schemas/schema_defs.json @@ -221,22 +221,34 @@ }, "extension_requirement": { "description": "A requirement on an extension. Can either specify just an extension name, in which case version '>= 0' is implied, or both a name and a requirement", - "oneOf": [ - { "$ref": "#/$defs/extension_name" }, - { - "type": "object", - "properties": { - "name": { - "$ref": "#/$defs/extension_name" - }, - "version": { - "$ref": "#/$defs/version_requirements" - } - }, - "required": ["name"], - "additionalProperties": false + "type": "object", + "properties": { + "name": { + "$ref": "#/$defs/extension_name" + }, + "version": { + "$ref": "#/$defs/version_requirements" } - ] + }, + "required": ["name"], + "additionalProperties": false + }, + "param_name": { + "type": "string", + "pattern": "^[A-Z][A-Z_0-9]*$" + }, + "param_requirement": { + "type": "object", + "required": ["name", "schema"], + "properties": { + "name": { + "$ref": "#/$defs/param_name" + }, + "schema": { + "$ref": "json-schema-draft-07.json#" + } + }, + "additionalProperties": false }, "requires_entry": { "oneOf": [ @@ -455,6 +467,414 @@ } } ] + }, + "extension_condition": { + "description": "A logic condition specifying certain extension version requirements", + "type": "object", + "required": ["extension"], + "properties": { + "extension": { + "oneOf": [ + { + "$ref": "#/$defs/extension_requirement" + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "allOf": { + "type": "array", + "items": { + "$ref": "schema_defs.json#/$defs/extension_condition/properties/extension" + }, + "minItems": 2 + }, + "anyOf": { + "type": "array", + "items": { + "$ref": "schema_defs.json#/$defs/extension_condition/properties/extension" + }, + "minItems": 2 + }, + "oneOf": { + "type": "array", + "items": { + "$ref": "schema_defs.json#/$defs/extension_condition/properties/extension" + }, + "minItems": 2 + }, + "noneOf": { + "type": "array", + "items": { + "$ref": "schema_defs.json#/$defs/extension_condition/properties/extension" + }, + "minItems": 2 + }, + "not": { + "$ref": "schema_defs.json#/$defs/extension_condition/properties/extension" + } + }, + "minProperties": 1, + "maxProperties": 1 + }, + { + "type": "object", + "required": ["if", "then"], + "properties": { + "if": { + "$ref": "schema_defs.json#/$defs/condition" + }, + "then": { + "$ref": "schema_defs.json#/$defs/extension_condition/properties/extension" + } + }, + "additionalProperties": false + } + ] + } + }, + "additionalProperties": false + }, + "param_condition": { + "type": "object", + "required": ["param"], + "properties": { + "param": { + "oneOf": [ + { + "type": "object", + "additionalProperties": false, + "required": ["name"], + "properties": { + "name": { + "$ref": "#/$defs/param_name" + }, + "range": { + "$ref": "#/$defs/field_location" + }, + "index": { + "type": "integer" + }, + "size": { + "type": "boolean" + }, + "equal": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string" + }, + { + "type": "boolean" + } + ] + }, + "oneOf": { + "type": "array", + "minItems": 2, + "oneOf": [ + { + "items": { + "type": "integer" + } + }, + { + "items": { + "type": "string" + } + }, + { + "items": { + "type": "array", + "items": { + "type": "integer" + }, + "minItems": 1 + } + }, + { + "items": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + } + ] + }, + "not_equal": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string" + }, + { + "type": "boolean" + } + ] + }, + "greater_than": { + "type": "integer" + }, + "less_than": { + "type": "integer" + }, + "greater_than_or_equal": { + "type": "integer" + }, + "less_than_or_equal": { + "type": "integer" + }, + "includes": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ] + }, + "reason": { + "description": "Why the param condition exists", + "type": "string" + } + }, + "$comment": "Mandating 2-3 properties, depending on if reason is given", + "minProperties": 2, + "maxProperties": 3 + }, + { + "type": "object", + "additionalProperties": false, + "properties": { + "allOf": { + "type": "array", + "items": { + "$ref": "schema_defs.json#/$defs/param_condition/properties/param" + }, + "minItems": 2 + }, + "anyOf": { + "type": "array", + "items": { + "$ref": "schema_defs.json#/$defs/param_condition/properties/param" + }, + "minItems": 2 + }, + "oneOf": { + "type": "array", + "items": { + "$ref": "schema_defs.json#/$defs/param_condition/properties/param" + }, + "minItems": 2 + }, + "noneOf": { + "type": "array", + "items": { + "$ref": "schema_defs.json#/$defs/param_condition/properties/param" + }, + "minItems": 2 + }, + "not": { + "$ref": "schema_defs.json#/$defs/param_condition/properties/param" + } + }, + "minProperties": 1, + "maxProperties": 1 + } + ] + } + }, + "additionalProperties": false + }, + + "idl": { + "description": "IDL code", + "type": "string" + }, + + "idl_condition": { + "description": "A condition expressed with IDL", + "type": "object", + "required": ["idl()"], + "properties": { + "idl()": { + "description": "IDL function containing one or more implications (e.g., A -> B).", + "$ref": "#/$defs/idl" + }, + "reason": { + "description": "Why the constraint exists", + "type": "string" + } + }, + "additionalProperties": false + }, + + "yaml_condition": { + "oneOf": [ + { + "type": "object", + "properties": { + "allOf": { + "type": "array", + "items": { + "$ref": "#/$defs/yaml_condition" + }, + "minItems": 2 + }, + "anyOf": { + "type": "array", + "items": { + "$ref": "#/$defs/yaml_condition" + }, + "minItems": 2 + }, + "oneOf": { + "type": "array", + "items": { + "$ref": "#/$defs/yaml_condition" + }, + "minItems": 2 + }, + "noneOf": { + "type": "array", + "items": { + "$ref": "#/$defs/yaml_condition" + }, + "minItems": 2 + }, + "not": { + "$ref": "#/$defs/yaml_condition" + } + }, + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": false + }, + { + "$ref": "#/$defs/extension_condition" + }, + { + "$ref": "#/$defs/param_condition" + }, + { + "$ref": "#/$defs/xlen_condition" + } + ] + }, + + "xlen_condition": { + "type": "object", + "required": ["xlen"], + "properties": { + "xlen": { + "enum": [32, 64] + } + }, + "additionalProperties": false + }, + + "condition": { + "oneOf": [ + { + "$ref": "#/$defs/yaml_condition" + }, + { + "$ref": "#/$defs/idl_condition" + } + ] + }, + + "extension_requirement_list_item": { + "description": "A list of extension requirements, possibly with a condition", + "oneOf": [ + { + "$ref": "#/$defs/extension_requirement" + }, + { + "description": "A conditional extension requirement", + "type": "object", + "properties": { + "name": { + "$ref": "#/$defs/extension_name" + }, + "version": { + "$ref": "#/$defs/version_requirements" + }, + "when": { + "$comment": "Using 'when' instead of 'if' to distinguish it from 'if' in a condition", + "$ref": "#/$defs/condition" + } + }, + "required": ["name", "when"], + "additionalProperties": false + } + ] + }, + "extension_requirement_list": { + "oneOf": [ + { + "type": "object", + "properties": { + "allOf": { + "type": "array", + "items": { + "$ref": "#/$defs/extension_requirement_list_item" + }, + "minItems": 1 + } + }, + "additionalProperties": false + }, + { + "$ref": "#/$defs/extension_requirement_list_item" + } + ] + }, + + "uint32": { + "type": "integer", + "minimum": 0, + "maximum": 4294967295 + }, + "uint64": { + "type": "integer", + "minimum": 0, + "maximum": 18446744073709551615 + }, + "32bit_unsigned_pow2": { + "description": "An unsigned power of 2 that fits in 32 bits", + "type": "integer", + "enum": [ + 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4095, 8192, 16384, + 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, + 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, + 1073741824, 2147483648 + ] + }, + "64bit_unsigned_pow2": { + "description": "An unsigned power of 2 that fits in 64 bits", + "type": "integer", + "enum": [ + 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4095, 8192, 16384, + 32768, 65536, 131072, 262144, 524288, 1048576, 2097152, 4194304, + 8388608, 16777216, 33554432, 67108864, 134217728, 268435456, 536870912, + 1073741824, 2147483648, 4294967296, 8589934592, 17179869184, + 34359738368, 68719476736, 137438953472, 274877906944, 549755813888, + 1099511627776, 2199023255552, 4398046511104, 8796093022208, + 17592186044416, 35184372088832, 70368744177664, 140737488355328, + 281474976710656, 562949953421312, 1125899906842624, 2251799813685248, + 4503599627370496, 9007199254740992, 18014398509481984, + 36028797018963968, 72057594037927936, 144115188075855872, + 288230376151711744, 576460752303423488, 1152921504606846976, + 2305843009213693952, 4611686018427387904, 9223372036854775808 + ] } } } diff --git a/spec/std/isa/csr/F/fcsr.yaml b/spec/std/isa/csr/F/fcsr.yaml index fc0aa0cc3c..c48d68cf6b 100644 --- a/spec/std/isa/csr/F/fcsr.yaml +++ b/spec/std/isa/csr/F/fcsr.yaml @@ -97,7 +97,9 @@ description: | priv_mode: U length: 32 -definedBy: F +definedBy: + extension: + name: F fields: FRM: location: 7-5 diff --git a/spec/std/isa/csr/F/fflags.yaml b/spec/std/isa/csr/F/fflags.yaml index 66fabeb4b5..1c6a80281d 100644 --- a/spec/std/isa/csr/F/fflags.yaml +++ b/spec/std/isa/csr/F/fflags.yaml @@ -17,7 +17,9 @@ description: instruction since the field was last reset by software. - id: csr-fflags-fptrap normative: false - text: The base RISC-V ISA does not support generating a trap on the setting of a floating-point exception flag. + text: + The base RISC-V ISA does not support generating a trap on the setting of a + floating-point exception flag. - id: csr-fflags-reasoning normative: false text: | @@ -28,7 +30,9 @@ description: priv_mode: U length: 32 -definedBy: F +definedBy: + extension: + name: F fields: NV: alias: fcsr.NV diff --git a/spec/std/isa/csr/F/frm.yaml b/spec/std/isa/csr/F/frm.yaml index ce9e881779..2d4e8b4a78 100644 --- a/spec/std/isa/csr/F/frm.yaml +++ b/spec/std/isa/csr/F/frm.yaml @@ -45,7 +45,9 @@ description: priv_mode: U length: 32 -definedBy: F +definedBy: + extension: + name: F fields: ROUNDINGMODE: alias: fcsr.FRM diff --git a/spec/std/isa/csr/H/hcounteren.layout b/spec/std/isa/csr/H/hcounteren.layout index 72fd6fab3b..d6fe6b3924 100644 --- a/spec/std/isa/csr/H/hcounteren.layout +++ b/spec/std/isa/csr/H/hcounteren.layout @@ -16,7 +16,9 @@ description: | to VS/VU-mode See `cycle` for a table describing how exceptions occur. -definedBy: H +definedBy: + extension: + name: H fields: CY: location: 0 @@ -43,7 +45,9 @@ fields: ! 1 ! 1 ! 0 ! allowed ! `VirtualInstruction` ! 1 ! 1 ! 1 ! allowed ! allowed !=== - definedBy: Zicntr + definedBy: + extension: + name: Zicntr type(): | if (HCOUNTENABLE_EN[0]) { return CsrFieldType::RW; @@ -81,7 +85,9 @@ fields: ! 1 ! 1 ! 0 ! allowed ! `VirtualInstruction` ! 1 ! 1 ! 1 ! allowed ! allowed !=== - definedBy: Zicntr + definedBy: + extension: + name: Zicntr type(): | if (HCOUNTENABLE_EN[1]) { return CsrFieldType::RW; diff --git a/spec/std/isa/csr/H/hcounteren.yaml b/spec/std/isa/csr/H/hcounteren.yaml index 42fddeb105..e9881a8a4b 100644 --- a/spec/std/isa/csr/H/hcounteren.yaml +++ b/spec/std/isa/csr/H/hcounteren.yaml @@ -17,7 +17,9 @@ description: | to VS/VU-mode See `cycle` for a table describing how exceptions occur. -definedBy: H +definedBy: + extension: + name: H fields: CY: location: 0 @@ -44,7 +46,9 @@ fields: ! 1 ! 1 ! 0 ! allowed ! `VirtualInstruction` ! 1 ! 1 ! 1 ! allowed ! allowed !=== - definedBy: Zicntr + definedBy: + extension: + name: Zicntr type(): | if (HCOUNTENABLE_EN[0]) { return CsrFieldType::RW; @@ -82,7 +86,9 @@ fields: ! 1 ! 1 ! 0 ! allowed ! `VirtualInstruction` ! 1 ! 1 ! 1 ! allowed ! allowed !=== - definedBy: Zicntr + definedBy: + extension: + name: Zicntr type(): | if (HCOUNTENABLE_EN[1]) { return CsrFieldType::RW; diff --git a/spec/std/isa/csr/H/henvcfg.yaml b/spec/std/isa/csr/H/henvcfg.yaml index 26804aede8..99489742f1 100644 --- a/spec/std/isa/csr/H/henvcfg.yaml +++ b/spec/std/isa/csr/H/henvcfg.yaml @@ -96,10 +96,11 @@ description: | priv_mode: S length: 64 definedBy: - allOf: - - name: Sm - version: ">=1.12" - - name: H + extension: + allOf: + - name: Sm + version: ">=1.12" + - name: H fields: STCE: location: 63 @@ -119,7 +120,9 @@ fields: * `hip.VSTIP` reverts to its defined behavior as if Sstc is not implemented. * VS-mode timer interrupts will not be generated - definedBy: Sstc + definedBy: + extension: + name: Sstc type(): | return (implemented?(ExtensionName::Sstc)) ? CsrFieldType::RO : CsrFieldType::RW; reset_value(): | @@ -159,7 +162,9 @@ fields: `vsatp` but before writing the new `vsatp` value, obviating the need to execute an `hfence.vvma` instruction. -- - definedBy: Svpbmt + definedBy: + extension: + name: Svpbmt type(): | return (implemented?(ExtensionName::Svpbmt)) ? CsrFieldType::RO : CsrFieldType::RW; reset_value(): | @@ -181,7 +186,9 @@ fields: Furthermore, for implementations with the hypervisor extension, henvcfg.ADUE is read-only zero if menvcfg.ADUE is zero. - definedBy: Svadu + definedBy: + extension: + name: Svadu type(): | return (implemented?(ExtensionName::Svadu)) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | @@ -201,7 +208,9 @@ fields: * `0`: The instruction raises an illegal instruction or virtual instruction exception * `1`: The instruction is executed - definedBy: Zicboz + definedBy: + extension: + name: Zicboz type: RW reset_value: UNDEFINED_LEGAL CBCFE: @@ -220,7 +229,9 @@ fields: * `0`: The instruction raises an illegal instruction or virtual instruction exception * `1`: The instruction is executed - definedBy: Zicbom + definedBy: + extension: + name: Zicbom type: RW reset_value: UNDEFINED_LEGAL CBIE: @@ -239,7 +250,9 @@ fields: * `01`: The instruction is executed and performs a flush operation * `10`: _Reserved_ * `11`: The instruction is executed and performs an invalidate operation - definedBy: Zicbom + definedBy: + extension: + name: Zicbom type: RW-R sw_write(csr_value): | if (csr_value.CBIE == 0 || csr_value.CBIE == 1 || csr_value.CBIE == 3) { diff --git a/spec/std/isa/csr/H/henvcfgh.yaml b/spec/std/isa/csr/H/henvcfgh.yaml index 6e33bb6eba..18f3a63c4c 100644 --- a/spec/std/isa/csr/H/henvcfgh.yaml +++ b/spec/std/isa/csr/H/henvcfgh.yaml @@ -15,10 +15,11 @@ description: | priv_mode: S length: 32 definedBy: - allOf: - - name: Sm - version: ">=1.12" - - name: H + extension: + allOf: + - name: Sm + version: ">=1.12" + - name: H fields: STCE: location: 31 @@ -39,7 +40,9 @@ fields: * `hip.VSTIP` reverts to its defined behavior as if Sstc is not implemented. * VS-mode timer interrupts will not be generated - definedBy: Sstc + definedBy: + extension: + name: Sstc type(): | return (implemented?(ExtensionName::Sstc)) ? CsrFieldType::RO : CsrFieldType::RW; reset_value(): | @@ -80,7 +83,9 @@ fields: `vsatp` but before writing the new `vsatp` value, obviating the need to execute an `hfence.vvma` instruction. -- - definedBy: Svpbmt + definedBy: + extension: + name: Svpbmt type(): | return (implemented?(ExtensionName::Svpbmt)) ? CsrFieldType::RO : CsrFieldType::RW; reset_value(): | @@ -103,7 +108,9 @@ fields: Furthermore, for implementations with the hypervisor extension, henvcfg.ADUE is read-only zero if menvcfg.ADUE is zero. - definedBy: Svadu + definedBy: + extension: + name: Svadu type(): | return (implemented?(ExtensionName::Svadu)) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | diff --git a/spec/std/isa/csr/H/hgatp.yaml b/spec/std/isa/csr/H/hgatp.yaml index ab49dbbc2d..137acf0391 100644 --- a/spec/std/isa/csr/H/hgatp.yaml +++ b/spec/std/isa/csr/H/hgatp.yaml @@ -107,7 +107,9 @@ description: | address: 0x680 writable: true priv_mode: S -definedBy: H +definedBy: + extension: + name: H length: SXLEN fields: MODE: diff --git a/spec/std/isa/csr/H/htimedelta.yaml b/spec/std/isa/csr/H/htimedelta.yaml index 3314817010..f2dd4c67f8 100644 --- a/spec/std/isa/csr/H/htimedelta.yaml +++ b/spec/std/isa/csr/H/htimedelta.yaml @@ -20,7 +20,9 @@ description: | address: 0x605 writable: true priv_mode: S -definedBy: H +definedBy: + extension: + name: H length: 64 fields: DELTA: diff --git a/spec/std/isa/csr/H/htimedeltah.yaml b/spec/std/isa/csr/H/htimedeltah.yaml index ca1ff35d24..b8c3a9901e 100644 --- a/spec/std/isa/csr/H/htimedeltah.yaml +++ b/spec/std/isa/csr/H/htimedeltah.yaml @@ -13,7 +13,9 @@ description: | address: 0x615 writable: true priv_mode: S -definedBy: H +definedBy: + extension: + name: H length: 32 base: 32 fields: diff --git a/spec/std/isa/csr/H/htinst.yaml b/spec/std/isa/csr/H/htinst.yaml index ac1043d9f1..87511ebfe0 100644 --- a/spec/std/isa/csr/H/htinst.yaml +++ b/spec/std/isa/csr/H/htinst.yaml @@ -17,7 +17,9 @@ description: | htinst is a WARL register that need only be able to hold the values that the implementation may automatically write to it on a trap. priv_mode: S length: SXLEN -definedBy: H +definedBy: + extension: + name: H fields: VALUE: location_rv64: 63-0 diff --git a/spec/std/isa/csr/H/htval.yaml b/spec/std/isa/csr/H/htval.yaml index 931260aad7..5ea05b2c1d 100644 --- a/spec/std/isa/csr/H/htval.yaml +++ b/spec/std/isa/csr/H/htval.yaml @@ -21,7 +21,9 @@ description: | htval is a WARL register that must be able to hold zero and may be capable of holding only an arbitrary subset of other 2-bit-shifted guest physical addresses, if any. priv_mode: M length: MXLEN -definedBy: H +definedBy: + extension: + name: H fields: VALUE: location_rv64: 63-0 diff --git a/spec/std/isa/csr/H/mtinst.yaml b/spec/std/isa/csr/H/mtinst.yaml index e8aa3f37c0..a25b1edb69 100644 --- a/spec/std/isa/csr/H/mtinst.yaml +++ b/spec/std/isa/csr/H/mtinst.yaml @@ -17,7 +17,9 @@ description: | mtinst is a WARL register that need only be able to hold the values that the implementation may automatically write to it on a trap. priv_mode: M length: MXLEN -definedBy: H +definedBy: + extension: + name: H fields: VALUE: location_rv64: 63-0 diff --git a/spec/std/isa/csr/H/mtval2.yaml b/spec/std/isa/csr/H/mtval2.yaml index d4af3709bb..5b5ab8b4d8 100644 --- a/spec/std/isa/csr/H/mtval2.yaml +++ b/spec/std/isa/csr/H/mtval2.yaml @@ -22,7 +22,9 @@ description: | mtval2 is a WARL register that must be able to hold zero and may be capable of holding only an arbitrary subset of other 2-bit-shifted guest physical addresses, if any. priv_mode: M length: MXLEN -definedBy: H +definedBy: + extension: + name: H fields: VALUE: location_rv64: 63-0 diff --git a/spec/std/isa/csr/H/vsatp.yaml b/spec/std/isa/csr/H/vsatp.yaml index 22d8f2dae3..ea84a30f70 100644 --- a/spec/std/isa/csr/H/vsatp.yaml +++ b/spec/std/isa/csr/H/vsatp.yaml @@ -33,7 +33,9 @@ description: | `vsatp` is effected. priv_mode: VS length: VSXLEN -definedBy: H +definedBy: + extension: + name: H fields: MODE: location_rv64: 63-60 diff --git a/spec/std/isa/csr/I/mcounteren.layout b/spec/std/isa/csr/I/mcounteren.layout index d84b642bdd..d3c1bf46a7 100644 --- a/spec/std/isa/csr/I/mcounteren.layout +++ b/spec/std/isa/csr/I/mcounteren.layout @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../schemas/csr_schema.json +# yaml-language-server: $schema=../../../../schemas/csr_schema.json $schema: csr_schema.json# kind: csr @@ -84,7 +84,9 @@ description: | <%%- end -%> . <%%- end -%> -definedBy: U # actually, defined by RV64, but must implement U-mode for this CSR to exist +definedBy: + extension: + name: U # actually, defined by RV64, but must implement U-mode for this CSR to exist fields: CY: location: 0 diff --git a/spec/std/isa/csr/I/mcounteren.yaml b/spec/std/isa/csr/I/mcounteren.yaml index 35f9c39e98..06dad89e55 100644 --- a/spec/std/isa/csr/I/mcounteren.yaml +++ b/spec/std/isa/csr/I/mcounteren.yaml @@ -85,7 +85,9 @@ description: | <%- end -%> . <%- end -%> -definedBy: U # actually, defined by RV64, but must implement U-mode for this CSR to exist +definedBy: + extension: + name: U # actually, defined by RV64, but must implement U-mode for this CSR to exist fields: CY: location: 0 diff --git a/spec/std/isa/csr/I/pmpaddr0.yaml b/spec/std/isa/csr/I/pmpaddr0.yaml index d61bc0aea2..b0fb9147ab 100644 --- a/spec/std/isa/csr/I/pmpaddr0.yaml +++ b/spec/std/isa/csr/I/pmpaddr0.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr1.yaml b/spec/std/isa/csr/I/pmpaddr1.yaml index 5a7ad39586..66064b1933 100644 --- a/spec/std/isa/csr/I/pmpaddr1.yaml +++ b/spec/std/isa/csr/I/pmpaddr1.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr10.yaml b/spec/std/isa/csr/I/pmpaddr10.yaml index 3dece6e3f8..10d9dfcb15 100644 --- a/spec/std/isa/csr/I/pmpaddr10.yaml +++ b/spec/std/isa/csr/I/pmpaddr10.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr11.yaml b/spec/std/isa/csr/I/pmpaddr11.yaml index c881414366..9392bc555e 100644 --- a/spec/std/isa/csr/I/pmpaddr11.yaml +++ b/spec/std/isa/csr/I/pmpaddr11.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr12.yaml b/spec/std/isa/csr/I/pmpaddr12.yaml index 00105781c6..ecf69c0402 100644 --- a/spec/std/isa/csr/I/pmpaddr12.yaml +++ b/spec/std/isa/csr/I/pmpaddr12.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr13.yaml b/spec/std/isa/csr/I/pmpaddr13.yaml index 198163dcee..07fc806948 100644 --- a/spec/std/isa/csr/I/pmpaddr13.yaml +++ b/spec/std/isa/csr/I/pmpaddr13.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr14.yaml b/spec/std/isa/csr/I/pmpaddr14.yaml index 0671236afa..0765df34b1 100644 --- a/spec/std/isa/csr/I/pmpaddr14.yaml +++ b/spec/std/isa/csr/I/pmpaddr14.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr15.yaml b/spec/std/isa/csr/I/pmpaddr15.yaml index dbe32794e0..03c7489365 100644 --- a/spec/std/isa/csr/I/pmpaddr15.yaml +++ b/spec/std/isa/csr/I/pmpaddr15.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr16.yaml b/spec/std/isa/csr/I/pmpaddr16.yaml index 01756e044d..869aa7cdfd 100644 --- a/spec/std/isa/csr/I/pmpaddr16.yaml +++ b/spec/std/isa/csr/I/pmpaddr16.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr17.yaml b/spec/std/isa/csr/I/pmpaddr17.yaml index 520d7a3278..c866b58b44 100644 --- a/spec/std/isa/csr/I/pmpaddr17.yaml +++ b/spec/std/isa/csr/I/pmpaddr17.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr18.yaml b/spec/std/isa/csr/I/pmpaddr18.yaml index 1f51eae52f..1a20e79c3c 100644 --- a/spec/std/isa/csr/I/pmpaddr18.yaml +++ b/spec/std/isa/csr/I/pmpaddr18.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr19.yaml b/spec/std/isa/csr/I/pmpaddr19.yaml index 6c8e8525e7..a88d3cb2ef 100644 --- a/spec/std/isa/csr/I/pmpaddr19.yaml +++ b/spec/std/isa/csr/I/pmpaddr19.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr2.yaml b/spec/std/isa/csr/I/pmpaddr2.yaml index 760d58e47e..7789064a5b 100644 --- a/spec/std/isa/csr/I/pmpaddr2.yaml +++ b/spec/std/isa/csr/I/pmpaddr2.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr20.yaml b/spec/std/isa/csr/I/pmpaddr20.yaml index 2c3b8c382a..ca79f34d3d 100644 --- a/spec/std/isa/csr/I/pmpaddr20.yaml +++ b/spec/std/isa/csr/I/pmpaddr20.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr21.yaml b/spec/std/isa/csr/I/pmpaddr21.yaml index 12d57de6ce..baeca6b3d1 100644 --- a/spec/std/isa/csr/I/pmpaddr21.yaml +++ b/spec/std/isa/csr/I/pmpaddr21.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr22.yaml b/spec/std/isa/csr/I/pmpaddr22.yaml index 947881b853..119632ffa6 100644 --- a/spec/std/isa/csr/I/pmpaddr22.yaml +++ b/spec/std/isa/csr/I/pmpaddr22.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr23.yaml b/spec/std/isa/csr/I/pmpaddr23.yaml index e94c85d979..f57cbd50e6 100644 --- a/spec/std/isa/csr/I/pmpaddr23.yaml +++ b/spec/std/isa/csr/I/pmpaddr23.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr24.yaml b/spec/std/isa/csr/I/pmpaddr24.yaml index 8cfaba3f6b..edb476e513 100644 --- a/spec/std/isa/csr/I/pmpaddr24.yaml +++ b/spec/std/isa/csr/I/pmpaddr24.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr25.yaml b/spec/std/isa/csr/I/pmpaddr25.yaml index 1430b6170b..453779e560 100644 --- a/spec/std/isa/csr/I/pmpaddr25.yaml +++ b/spec/std/isa/csr/I/pmpaddr25.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr26.yaml b/spec/std/isa/csr/I/pmpaddr26.yaml index fffc71e278..ce99acecae 100644 --- a/spec/std/isa/csr/I/pmpaddr26.yaml +++ b/spec/std/isa/csr/I/pmpaddr26.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr27.yaml b/spec/std/isa/csr/I/pmpaddr27.yaml index 3686d17017..448449ee9a 100644 --- a/spec/std/isa/csr/I/pmpaddr27.yaml +++ b/spec/std/isa/csr/I/pmpaddr27.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr28.yaml b/spec/std/isa/csr/I/pmpaddr28.yaml index 856d5c5c3d..0f13cd6a58 100644 --- a/spec/std/isa/csr/I/pmpaddr28.yaml +++ b/spec/std/isa/csr/I/pmpaddr28.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr29.yaml b/spec/std/isa/csr/I/pmpaddr29.yaml index 763a2f9606..8441353b32 100644 --- a/spec/std/isa/csr/I/pmpaddr29.yaml +++ b/spec/std/isa/csr/I/pmpaddr29.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr3.yaml b/spec/std/isa/csr/I/pmpaddr3.yaml index c448e5965b..731ff4ed13 100644 --- a/spec/std/isa/csr/I/pmpaddr3.yaml +++ b/spec/std/isa/csr/I/pmpaddr3.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr30.yaml b/spec/std/isa/csr/I/pmpaddr30.yaml index 8dd303f5b8..55aec62925 100644 --- a/spec/std/isa/csr/I/pmpaddr30.yaml +++ b/spec/std/isa/csr/I/pmpaddr30.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr31.yaml b/spec/std/isa/csr/I/pmpaddr31.yaml index 679d610e43..8cb1383038 100644 --- a/spec/std/isa/csr/I/pmpaddr31.yaml +++ b/spec/std/isa/csr/I/pmpaddr31.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr32.yaml b/spec/std/isa/csr/I/pmpaddr32.yaml index 2355b73981..882a90833d 100644 --- a/spec/std/isa/csr/I/pmpaddr32.yaml +++ b/spec/std/isa/csr/I/pmpaddr32.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr33.yaml b/spec/std/isa/csr/I/pmpaddr33.yaml index 30611f0ae1..c8c668b432 100644 --- a/spec/std/isa/csr/I/pmpaddr33.yaml +++ b/spec/std/isa/csr/I/pmpaddr33.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr34.yaml b/spec/std/isa/csr/I/pmpaddr34.yaml index 8737191632..0ce102133a 100644 --- a/spec/std/isa/csr/I/pmpaddr34.yaml +++ b/spec/std/isa/csr/I/pmpaddr34.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr35.yaml b/spec/std/isa/csr/I/pmpaddr35.yaml index ffe211579c..5301e8801d 100644 --- a/spec/std/isa/csr/I/pmpaddr35.yaml +++ b/spec/std/isa/csr/I/pmpaddr35.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr36.yaml b/spec/std/isa/csr/I/pmpaddr36.yaml index e53771f0e6..25d2088f5e 100644 --- a/spec/std/isa/csr/I/pmpaddr36.yaml +++ b/spec/std/isa/csr/I/pmpaddr36.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr37.yaml b/spec/std/isa/csr/I/pmpaddr37.yaml index 2d493ebddc..ce2d479414 100644 --- a/spec/std/isa/csr/I/pmpaddr37.yaml +++ b/spec/std/isa/csr/I/pmpaddr37.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr38.yaml b/spec/std/isa/csr/I/pmpaddr38.yaml index d013812870..70c86b3a35 100644 --- a/spec/std/isa/csr/I/pmpaddr38.yaml +++ b/spec/std/isa/csr/I/pmpaddr38.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr39.yaml b/spec/std/isa/csr/I/pmpaddr39.yaml index cc9ecc30ab..3d56243f58 100644 --- a/spec/std/isa/csr/I/pmpaddr39.yaml +++ b/spec/std/isa/csr/I/pmpaddr39.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr4.yaml b/spec/std/isa/csr/I/pmpaddr4.yaml index 7d0d958c5d..7959fb90cf 100644 --- a/spec/std/isa/csr/I/pmpaddr4.yaml +++ b/spec/std/isa/csr/I/pmpaddr4.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr40.yaml b/spec/std/isa/csr/I/pmpaddr40.yaml index bde93d1bc7..9d2a90e692 100644 --- a/spec/std/isa/csr/I/pmpaddr40.yaml +++ b/spec/std/isa/csr/I/pmpaddr40.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr41.yaml b/spec/std/isa/csr/I/pmpaddr41.yaml index afc4a5c311..0577aad062 100644 --- a/spec/std/isa/csr/I/pmpaddr41.yaml +++ b/spec/std/isa/csr/I/pmpaddr41.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr42.yaml b/spec/std/isa/csr/I/pmpaddr42.yaml index 2607aa4178..c535f5a1c2 100644 --- a/spec/std/isa/csr/I/pmpaddr42.yaml +++ b/spec/std/isa/csr/I/pmpaddr42.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr43.yaml b/spec/std/isa/csr/I/pmpaddr43.yaml index 8e12c4f646..ea5493418b 100644 --- a/spec/std/isa/csr/I/pmpaddr43.yaml +++ b/spec/std/isa/csr/I/pmpaddr43.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr44.yaml b/spec/std/isa/csr/I/pmpaddr44.yaml index b6f2af99f4..672a3122e3 100644 --- a/spec/std/isa/csr/I/pmpaddr44.yaml +++ b/spec/std/isa/csr/I/pmpaddr44.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr45.yaml b/spec/std/isa/csr/I/pmpaddr45.yaml index 982a57fe74..609cd60a62 100644 --- a/spec/std/isa/csr/I/pmpaddr45.yaml +++ b/spec/std/isa/csr/I/pmpaddr45.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr46.yaml b/spec/std/isa/csr/I/pmpaddr46.yaml index 6d4c329fad..c3c3b98a11 100644 --- a/spec/std/isa/csr/I/pmpaddr46.yaml +++ b/spec/std/isa/csr/I/pmpaddr46.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr47.yaml b/spec/std/isa/csr/I/pmpaddr47.yaml index 55fbd410a2..505c8d2dba 100644 --- a/spec/std/isa/csr/I/pmpaddr47.yaml +++ b/spec/std/isa/csr/I/pmpaddr47.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr48.yaml b/spec/std/isa/csr/I/pmpaddr48.yaml index d20dbaf7ab..cc03992e8f 100644 --- a/spec/std/isa/csr/I/pmpaddr48.yaml +++ b/spec/std/isa/csr/I/pmpaddr48.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr49.yaml b/spec/std/isa/csr/I/pmpaddr49.yaml index b88d417e50..6c059db236 100644 --- a/spec/std/isa/csr/I/pmpaddr49.yaml +++ b/spec/std/isa/csr/I/pmpaddr49.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr5.yaml b/spec/std/isa/csr/I/pmpaddr5.yaml index 1da70ec77b..55982a4bd3 100644 --- a/spec/std/isa/csr/I/pmpaddr5.yaml +++ b/spec/std/isa/csr/I/pmpaddr5.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr50.yaml b/spec/std/isa/csr/I/pmpaddr50.yaml index e86eb77167..63a02fae52 100644 --- a/spec/std/isa/csr/I/pmpaddr50.yaml +++ b/spec/std/isa/csr/I/pmpaddr50.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr51.yaml b/spec/std/isa/csr/I/pmpaddr51.yaml index 5a045ca027..8f60881e75 100644 --- a/spec/std/isa/csr/I/pmpaddr51.yaml +++ b/spec/std/isa/csr/I/pmpaddr51.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr52.yaml b/spec/std/isa/csr/I/pmpaddr52.yaml index 57ac91fb52..1a245a81f9 100644 --- a/spec/std/isa/csr/I/pmpaddr52.yaml +++ b/spec/std/isa/csr/I/pmpaddr52.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr53.yaml b/spec/std/isa/csr/I/pmpaddr53.yaml index 54885171a7..48f471ca1c 100644 --- a/spec/std/isa/csr/I/pmpaddr53.yaml +++ b/spec/std/isa/csr/I/pmpaddr53.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr54.yaml b/spec/std/isa/csr/I/pmpaddr54.yaml index 9f9d030014..0903b1856a 100644 --- a/spec/std/isa/csr/I/pmpaddr54.yaml +++ b/spec/std/isa/csr/I/pmpaddr54.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr55.yaml b/spec/std/isa/csr/I/pmpaddr55.yaml index e904b19a3e..47e4a44717 100644 --- a/spec/std/isa/csr/I/pmpaddr55.yaml +++ b/spec/std/isa/csr/I/pmpaddr55.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr56.yaml b/spec/std/isa/csr/I/pmpaddr56.yaml index 20988d3a8d..4461c5f997 100644 --- a/spec/std/isa/csr/I/pmpaddr56.yaml +++ b/spec/std/isa/csr/I/pmpaddr56.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr57.yaml b/spec/std/isa/csr/I/pmpaddr57.yaml index 92ee8a8e4e..155766c16d 100644 --- a/spec/std/isa/csr/I/pmpaddr57.yaml +++ b/spec/std/isa/csr/I/pmpaddr57.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr58.yaml b/spec/std/isa/csr/I/pmpaddr58.yaml index a6b8d25b67..213c1f3282 100644 --- a/spec/std/isa/csr/I/pmpaddr58.yaml +++ b/spec/std/isa/csr/I/pmpaddr58.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr59.yaml b/spec/std/isa/csr/I/pmpaddr59.yaml index a870ee6537..cd1bfd1396 100644 --- a/spec/std/isa/csr/I/pmpaddr59.yaml +++ b/spec/std/isa/csr/I/pmpaddr59.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr6.yaml b/spec/std/isa/csr/I/pmpaddr6.yaml index ed72f9fb71..d532a6d607 100644 --- a/spec/std/isa/csr/I/pmpaddr6.yaml +++ b/spec/std/isa/csr/I/pmpaddr6.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr60.yaml b/spec/std/isa/csr/I/pmpaddr60.yaml index 201954ff35..ad82229c58 100644 --- a/spec/std/isa/csr/I/pmpaddr60.yaml +++ b/spec/std/isa/csr/I/pmpaddr60.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr61.yaml b/spec/std/isa/csr/I/pmpaddr61.yaml index 808723355a..b60304e308 100644 --- a/spec/std/isa/csr/I/pmpaddr61.yaml +++ b/spec/std/isa/csr/I/pmpaddr61.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr62.yaml b/spec/std/isa/csr/I/pmpaddr62.yaml index 9991859151..2f97c41c69 100644 --- a/spec/std/isa/csr/I/pmpaddr62.yaml +++ b/spec/std/isa/csr/I/pmpaddr62.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr63.yaml b/spec/std/isa/csr/I/pmpaddr63.yaml index 2dd33c3a95..443481d481 100644 --- a/spec/std/isa/csr/I/pmpaddr63.yaml +++ b/spec/std/isa/csr/I/pmpaddr63.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr7.yaml b/spec/std/isa/csr/I/pmpaddr7.yaml index 31241eaee5..f811edbd20 100644 --- a/spec/std/isa/csr/I/pmpaddr7.yaml +++ b/spec/std/isa/csr/I/pmpaddr7.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr8.yaml b/spec/std/isa/csr/I/pmpaddr8.yaml index e4fd57abba..49eae86727 100644 --- a/spec/std/isa/csr/I/pmpaddr8.yaml +++ b/spec/std/isa/csr/I/pmpaddr8.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddr9.yaml b/spec/std/isa/csr/I/pmpaddr9.yaml index c270ef6016..1b37629e84 100644 --- a/spec/std/isa/csr/I/pmpaddr9.yaml +++ b/spec/std/isa/csr/I/pmpaddr9.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpaddrN.layout b/spec/std/isa/csr/I/pmpaddrN.layout index eb5776c445..dd57f6eb88 100644 --- a/spec/std/isa/csr/I/pmpaddrN.layout +++ b/spec/std/isa/csr/I/pmpaddrN.layout @@ -17,7 +17,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry address -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: ADDR: location_rv32: 31-0 diff --git a/spec/std/isa/csr/I/pmpcfg0.yaml b/spec/std/isa/csr/I/pmpcfg0.yaml index 95a4119f9e..3e1151bf6d 100644 --- a/spec/std/isa/csr/I/pmpcfg0.yaml +++ b/spec/std/isa/csr/I/pmpcfg0.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp0cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg1.yaml b/spec/std/isa/csr/I/pmpcfg1.yaml index 24e3aad325..f0f9a386bf 100644 --- a/spec/std/isa/csr/I/pmpcfg1.yaml +++ b/spec/std/isa/csr/I/pmpcfg1.yaml @@ -14,7 +14,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp4cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg10.yaml b/spec/std/isa/csr/I/pmpcfg10.yaml index b0c5c43e1f..3fbb504245 100644 --- a/spec/std/isa/csr/I/pmpcfg10.yaml +++ b/spec/std/isa/csr/I/pmpcfg10.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp40cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg11.yaml b/spec/std/isa/csr/I/pmpcfg11.yaml index 3f019ba10b..b6039f47f7 100644 --- a/spec/std/isa/csr/I/pmpcfg11.yaml +++ b/spec/std/isa/csr/I/pmpcfg11.yaml @@ -14,7 +14,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp44cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg12.yaml b/spec/std/isa/csr/I/pmpcfg12.yaml index 58984f1366..05c31aee8a 100644 --- a/spec/std/isa/csr/I/pmpcfg12.yaml +++ b/spec/std/isa/csr/I/pmpcfg12.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp48cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg13.yaml b/spec/std/isa/csr/I/pmpcfg13.yaml index f360852406..2e6977354b 100644 --- a/spec/std/isa/csr/I/pmpcfg13.yaml +++ b/spec/std/isa/csr/I/pmpcfg13.yaml @@ -14,7 +14,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp52cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg14.yaml b/spec/std/isa/csr/I/pmpcfg14.yaml index ee073e6e4d..36ffa7bf49 100644 --- a/spec/std/isa/csr/I/pmpcfg14.yaml +++ b/spec/std/isa/csr/I/pmpcfg14.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp56cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg15.yaml b/spec/std/isa/csr/I/pmpcfg15.yaml index a2090f8463..d3fbb8cbc4 100644 --- a/spec/std/isa/csr/I/pmpcfg15.yaml +++ b/spec/std/isa/csr/I/pmpcfg15.yaml @@ -14,7 +14,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp60cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg2.yaml b/spec/std/isa/csr/I/pmpcfg2.yaml index 6bcb8b2f86..d5c5b6205a 100644 --- a/spec/std/isa/csr/I/pmpcfg2.yaml +++ b/spec/std/isa/csr/I/pmpcfg2.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp8cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg3.yaml b/spec/std/isa/csr/I/pmpcfg3.yaml index 4cb89dee73..17b3ff3122 100644 --- a/spec/std/isa/csr/I/pmpcfg3.yaml +++ b/spec/std/isa/csr/I/pmpcfg3.yaml @@ -14,7 +14,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp12cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg4.yaml b/spec/std/isa/csr/I/pmpcfg4.yaml index f97b4ba669..e369d0cd3a 100644 --- a/spec/std/isa/csr/I/pmpcfg4.yaml +++ b/spec/std/isa/csr/I/pmpcfg4.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp16cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg5.yaml b/spec/std/isa/csr/I/pmpcfg5.yaml index f48fa4d494..847846af83 100644 --- a/spec/std/isa/csr/I/pmpcfg5.yaml +++ b/spec/std/isa/csr/I/pmpcfg5.yaml @@ -14,7 +14,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp20cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg6.yaml b/spec/std/isa/csr/I/pmpcfg6.yaml index aa9afbdaba..6f5570d6c8 100644 --- a/spec/std/isa/csr/I/pmpcfg6.yaml +++ b/spec/std/isa/csr/I/pmpcfg6.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp24cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg7.yaml b/spec/std/isa/csr/I/pmpcfg7.yaml index 18f2a08ebf..299646b24b 100644 --- a/spec/std/isa/csr/I/pmpcfg7.yaml +++ b/spec/std/isa/csr/I/pmpcfg7.yaml @@ -14,7 +14,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp28cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg8.yaml b/spec/std/isa/csr/I/pmpcfg8.yaml index 69b791372b..ae311e8f87 100644 --- a/spec/std/isa/csr/I/pmpcfg8.yaml +++ b/spec/std/isa/csr/I/pmpcfg8.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp32cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfg9.yaml b/spec/std/isa/csr/I/pmpcfg9.yaml index 8beb8acac1..8f144ade49 100644 --- a/spec/std/isa/csr/I/pmpcfg9.yaml +++ b/spec/std/isa/csr/I/pmpcfg9.yaml @@ -14,7 +14,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: pmp36cfg: location: 7-0 diff --git a/spec/std/isa/csr/I/pmpcfgN.layout b/spec/std/isa/csr/I/pmpcfgN.layout index 11151416b0..c62573a53f 100644 --- a/spec/std/isa/csr/I/pmpcfgN.layout +++ b/spec/std/isa/csr/I/pmpcfgN.layout @@ -16,7 +16,9 @@ writable: true priv_mode: M length: MXLEN description: PMP entry configuration -definedBy: Smpmp +definedBy: + extension: + name: Smpmp fields: <%- (pmpcfg_num.odd? ? 4 : 8).times do |i| -%> pmp<%= pmpcfg_num*4 + i %>cfg: diff --git a/spec/std/isa/csr/S/scounteren.layout b/spec/std/isa/csr/S/scounteren.layout index f3a625894d..385331e894 100644 --- a/spec/std/isa/csr/S/scounteren.layout +++ b/spec/std/isa/csr/S/scounteren.layout @@ -14,14 +14,18 @@ length: 32 description: | Delegates control of the hardware performance-monitoring counters to U-mode -definedBy: S +definedBy: + extension: + name: S fields: CY: location: 0 description: | When both `scounteren.CY` and `mcounteren.CY` are set, the `cycle` CSR (an alias of `mcycle`) is accessible to U-mode <%% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.CY`)<%% end %>. - definedBy: Zicntr + definedBy: + extension: + name: Zicntr type(): | if (SCOUNTENABLE_EN[0]) { return CsrFieldType::RW; @@ -39,7 +43,9 @@ fields: description: | When both `scounteren.TM` and `mcounteren.TM` are set, the `time` CSR (an alias of `mtime` memory-mapped CSR) is accessible to U-mode <%% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.TM`)<%% end %>. - definedBy: Zicntr + definedBy: + extension: + name: Zicntr type(): | if (SCOUNTENABLE_EN[1]) { return CsrFieldType::RW; @@ -57,7 +63,9 @@ fields: description: | When both `scounteren.IR` and `mcounteren.IR` are set, the `instret` CSR (an alias of memory-mapped `minstret`) is accessible to U-mode <%% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.IR`)<%% end %>. - definedBy: Zicntr + definedBy: + extension: + name: Zicntr type(): | if (SCOUNTENABLE_EN[2]) { return CsrFieldType::RW; @@ -77,7 +85,9 @@ fields: When both `scounteren.HPM<%= hpm_num %>` and `mcounteren.HPM<%= hpm_num %>` are set, the `hpmcounter<%= hpm_num %>` CSR (an alias of `mhpmcounter<%= hpm_num %>`) is accessible to U-mode <%% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM<%= hpm_num %>`)<%% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[<%= hpm_num %>]) { return CsrFieldType::RW; diff --git a/spec/std/isa/csr/S/scounteren.yaml b/spec/std/isa/csr/S/scounteren.yaml index 2edc9d0e90..9f65db6ab9 100644 --- a/spec/std/isa/csr/S/scounteren.yaml +++ b/spec/std/isa/csr/S/scounteren.yaml @@ -2,7 +2,7 @@ # WARNING: This file is auto-generated from spec/std/isa/csr/S/scounteren.layout# SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../../schemas/csr_schema.json +# yaml-language-server: $schema=../../schemas/csr_schema.json $schema: csr_schema.json# kind: csr @@ -15,14 +15,18 @@ length: 32 description: | Delegates control of the hardware performance-monitoring counters to U-mode -definedBy: S +definedBy: + extension: + name: S fields: CY: location: 0 description: | When both `scounteren.CY` and `mcounteren.CY` are set, the `cycle` CSR (an alias of `mcycle`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.CY`)<% end %>. - definedBy: Zicntr + definedBy: + extension: + name: Zicntr type(): | if (SCOUNTENABLE_EN[0]) { return CsrFieldType::RW; @@ -40,7 +44,9 @@ fields: description: | When both `scounteren.TM` and `mcounteren.TM` are set, the `time` CSR (an alias of `mtime` memory-mapped CSR) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.TM`)<% end %>. - definedBy: Zicntr + definedBy: + extension: + name: Zicntr type(): | if (SCOUNTENABLE_EN[1]) { return CsrFieldType::RW; @@ -58,7 +64,9 @@ fields: description: | When both `scounteren.IR` and `mcounteren.IR` are set, the `instret` CSR (an alias of memory-mapped `minstret`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.IR`)<% end %>. - definedBy: Zicntr + definedBy: + extension: + name: Zicntr type(): | if (SCOUNTENABLE_EN[2]) { return CsrFieldType::RW; @@ -77,7 +85,9 @@ fields: When both `scounteren.HPM3` and `mcounteren.HPM3` are set, the `hpmcounter3` CSR (an alias of `mhpmcounter3`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM3`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[3]) { return CsrFieldType::RW; @@ -96,7 +106,9 @@ fields: When both `scounteren.HPM4` and `mcounteren.HPM4` are set, the `hpmcounter4` CSR (an alias of `mhpmcounter4`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM4`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[4]) { return CsrFieldType::RW; @@ -115,7 +127,9 @@ fields: When both `scounteren.HPM5` and `mcounteren.HPM5` are set, the `hpmcounter5` CSR (an alias of `mhpmcounter5`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM5`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[5]) { return CsrFieldType::RW; @@ -134,7 +148,9 @@ fields: When both `scounteren.HPM6` and `mcounteren.HPM6` are set, the `hpmcounter6` CSR (an alias of `mhpmcounter6`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM6`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[6]) { return CsrFieldType::RW; @@ -153,7 +169,9 @@ fields: When both `scounteren.HPM7` and `mcounteren.HPM7` are set, the `hpmcounter7` CSR (an alias of `mhpmcounter7`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM7`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[7]) { return CsrFieldType::RW; @@ -172,7 +190,9 @@ fields: When both `scounteren.HPM8` and `mcounteren.HPM8` are set, the `hpmcounter8` CSR (an alias of `mhpmcounter8`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM8`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[8]) { return CsrFieldType::RW; @@ -191,7 +211,9 @@ fields: When both `scounteren.HPM9` and `mcounteren.HPM9` are set, the `hpmcounter9` CSR (an alias of `mhpmcounter9`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM9`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[9]) { return CsrFieldType::RW; @@ -210,7 +232,9 @@ fields: When both `scounteren.HPM10` and `mcounteren.HPM10` are set, the `hpmcounter10` CSR (an alias of `mhpmcounter10`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM10`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[10]) { return CsrFieldType::RW; @@ -229,7 +253,9 @@ fields: When both `scounteren.HPM11` and `mcounteren.HPM11` are set, the `hpmcounter11` CSR (an alias of `mhpmcounter11`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM11`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[11]) { return CsrFieldType::RW; @@ -248,7 +274,9 @@ fields: When both `scounteren.HPM12` and `mcounteren.HPM12` are set, the `hpmcounter12` CSR (an alias of `mhpmcounter12`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM12`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[12]) { return CsrFieldType::RW; @@ -267,7 +295,9 @@ fields: When both `scounteren.HPM13` and `mcounteren.HPM13` are set, the `hpmcounter13` CSR (an alias of `mhpmcounter13`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM13`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[13]) { return CsrFieldType::RW; @@ -286,7 +316,9 @@ fields: When both `scounteren.HPM14` and `mcounteren.HPM14` are set, the `hpmcounter14` CSR (an alias of `mhpmcounter14`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM14`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[14]) { return CsrFieldType::RW; @@ -305,7 +337,9 @@ fields: When both `scounteren.HPM15` and `mcounteren.HPM15` are set, the `hpmcounter15` CSR (an alias of `mhpmcounter15`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM15`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[15]) { return CsrFieldType::RW; @@ -324,7 +358,9 @@ fields: When both `scounteren.HPM16` and `mcounteren.HPM16` are set, the `hpmcounter16` CSR (an alias of `mhpmcounter16`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM16`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[16]) { return CsrFieldType::RW; @@ -343,7 +379,9 @@ fields: When both `scounteren.HPM17` and `mcounteren.HPM17` are set, the `hpmcounter17` CSR (an alias of `mhpmcounter17`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM17`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[17]) { return CsrFieldType::RW; @@ -362,7 +400,9 @@ fields: When both `scounteren.HPM18` and `mcounteren.HPM18` are set, the `hpmcounter18` CSR (an alias of `mhpmcounter18`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM18`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[18]) { return CsrFieldType::RW; @@ -381,7 +421,9 @@ fields: When both `scounteren.HPM19` and `mcounteren.HPM19` are set, the `hpmcounter19` CSR (an alias of `mhpmcounter19`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM19`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[19]) { return CsrFieldType::RW; @@ -400,7 +442,9 @@ fields: When both `scounteren.HPM20` and `mcounteren.HPM20` are set, the `hpmcounter20` CSR (an alias of `mhpmcounter20`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM20`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[20]) { return CsrFieldType::RW; @@ -419,7 +463,9 @@ fields: When both `scounteren.HPM21` and `mcounteren.HPM21` are set, the `hpmcounter21` CSR (an alias of `mhpmcounter21`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM21`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[21]) { return CsrFieldType::RW; @@ -438,7 +484,9 @@ fields: When both `scounteren.HPM22` and `mcounteren.HPM22` are set, the `hpmcounter22` CSR (an alias of `mhpmcounter22`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM22`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[22]) { return CsrFieldType::RW; @@ -457,7 +505,9 @@ fields: When both `scounteren.HPM23` and `mcounteren.HPM23` are set, the `hpmcounter23` CSR (an alias of `mhpmcounter23`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM23`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[23]) { return CsrFieldType::RW; @@ -476,7 +526,9 @@ fields: When both `scounteren.HPM24` and `mcounteren.HPM24` are set, the `hpmcounter24` CSR (an alias of `mhpmcounter24`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM24`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[24]) { return CsrFieldType::RW; @@ -495,7 +547,9 @@ fields: When both `scounteren.HPM25` and `mcounteren.HPM25` are set, the `hpmcounter25` CSR (an alias of `mhpmcounter25`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM25`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[25]) { return CsrFieldType::RW; @@ -514,7 +568,9 @@ fields: When both `scounteren.HPM26` and `mcounteren.HPM26` are set, the `hpmcounter26` CSR (an alias of `mhpmcounter26`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM26`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[26]) { return CsrFieldType::RW; @@ -533,7 +589,9 @@ fields: When both `scounteren.HPM27` and `mcounteren.HPM27` are set, the `hpmcounter27` CSR (an alias of `mhpmcounter27`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM27`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[27]) { return CsrFieldType::RW; @@ -552,7 +610,9 @@ fields: When both `scounteren.HPM28` and `mcounteren.HPM28` are set, the `hpmcounter28` CSR (an alias of `mhpmcounter28`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM28`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[28]) { return CsrFieldType::RW; @@ -571,7 +631,9 @@ fields: When both `scounteren.HPM29` and `mcounteren.HPM29` are set, the `hpmcounter29` CSR (an alias of `mhpmcounter29`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM29`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[29]) { return CsrFieldType::RW; @@ -590,7 +652,9 @@ fields: When both `scounteren.HPM30` and `mcounteren.HPM30` are set, the `hpmcounter30` CSR (an alias of `mhpmcounter30`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM30`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[30]) { return CsrFieldType::RW; @@ -609,7 +673,9 @@ fields: When both `scounteren.HPM31` and `mcounteren.HPM31` are set, the `hpmcounter31` CSR (an alias of `mhpmcounter31`) is accessible to U-mode <% if ext?(:H) %>(delegation to VS/VU mode is further handled by `hcounteren.HPM31`)<% end %>. - definedBy: Zihpm + definedBy: + extension: + name: Zihpm type(): | if (SCOUNTENABLE_EN[31]) { return CsrFieldType::RW; diff --git a/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml b/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml index 9918f21491..8db51afc7b 100644 --- a/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml +++ b/spec/std/isa/csr/Smcntrpmf/mcyclecfg.yaml @@ -10,7 +10,9 @@ address: 0x321 writable: true priv_mode: M length: 64 -definedBy: Smcntrpmf +definedBy: + extension: + name: Smcntrpmf description: | The `mcyclecfg` CSR is a 64-bit machine-level register that configures privilege mode filtering for the cycle counter. Each inhibit bit (xINH) suppresses @@ -43,7 +45,9 @@ fields: location: 62 base: 64 type: RW - definedBy: M + definedBy: + extension: + name: M description: If set, then counting of events in M-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -51,7 +55,9 @@ fields: location: 61 base: 64 type: RW - definedBy: S + definedBy: + extension: + name: S description: If set, then counting of events in S/HS-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -59,7 +65,9 @@ fields: location: 60 base: 64 type: RW - definedBy: U + definedBy: + extension: + name: U description: If set, then counting of events in U-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -67,7 +75,9 @@ fields: location: 59 base: 64 type: RW - definedBy: H + definedBy: + extension: + name: H description: If set, then counting of events in VS-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -75,6 +85,8 @@ fields: location: 58 base: 64 type: RW - definedBy: H + definedBy: + extension: + name: H description: If set, then counting of events in VU-mode is inhibited. reset_value: UNDEFINED_LEGAL diff --git a/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml b/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml index f2dec08905..f94a1501b2 100644 --- a/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml +++ b/spec/std/isa/csr/Smcntrpmf/mcyclecfgh.yaml @@ -10,7 +10,9 @@ address: 0x721 writable: true priv_mode: M length: 32 -definedBy: Smcntrpmf +definedBy: + extension: + name: Smcntrpmf description: | Upper 32 bits of the 64-bit `mcyclecfg` CSR, used for RV32 systems to access the privilege mode filtering inhibit bits. @@ -20,7 +22,9 @@ fields: alias: mcyclecfg.MINH location: 30 type: RW - definedBy: M + definedBy: + extension: + name: M description: If set, then counting of events in M-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -28,7 +32,9 @@ fields: alias: mcyclecfg.SINH location: 29 type: RW - definedBy: S + definedBy: + extension: + name: S description: If set, then counting of events in S/HS-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -36,7 +42,9 @@ fields: alias: mcyclecfg.UINH location: 28 type: RW - definedBy: U + definedBy: + extension: + name: U description: If set, then counting of events in U-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -44,7 +52,9 @@ fields: alias: mcyclecfg.VSINH location: 27 type: RW - definedBy: H + definedBy: + extension: + name: H description: If set, then counting of events in VS-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -52,6 +62,8 @@ fields: alias: mcyclecfg.VUINH location: 26 type: RW - definedBy: H + definedBy: + extension: + name: H description: If set, then counting of events in VU-mode is inhibited. reset_value: UNDEFINED_LEGAL diff --git a/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml b/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml index 29253c013d..7e38c3f7d3 100644 --- a/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml +++ b/spec/std/isa/csr/Smcntrpmf/minstretcfg.yaml @@ -11,7 +11,9 @@ address: 0x322 writable: true priv_mode: M length: 64 -definedBy: Smcntrpmf +definedBy: + extension: + name: Smcntrpmf description: | The `minstretcfg` CSR is a 64-bit machine-level register that configures privilege mode filtering for the `minstret` (Machine Instructions-Retired Counter). Each inhibit bit (xINH) @@ -40,7 +42,9 @@ fields: location: 62 base: 64 type: RW - definedBy: M + definedBy: + extension: + name: M description: If set, then counting of events in M-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -48,7 +52,9 @@ fields: location: 61 base: 64 type: RW - definedBy: S + definedBy: + extension: + name: S description: If set, then counting of events in S/HS-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -56,7 +62,9 @@ fields: location: 60 base: 64 type: RW - definedBy: U + definedBy: + extension: + name: U description: If set, then counting of events in U-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -64,7 +72,9 @@ fields: location: 59 base: 64 type: RW - definedBy: H + definedBy: + extension: + name: H description: If set, then counting of events in VS-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -72,6 +82,8 @@ fields: location: 58 base: 64 type: RW - definedBy: H + definedBy: + extension: + name: H description: If set, then counting of events in VU-mode is inhibited. reset_value: UNDEFINED_LEGAL diff --git a/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml b/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml index 54de55f022..9f6bcca7a8 100644 --- a/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml +++ b/spec/std/isa/csr/Smcntrpmf/minstretcfgh.yaml @@ -10,7 +10,9 @@ address: 0x722 writable: true priv_mode: M length: 32 -definedBy: Smcntrpmf +definedBy: + extension: + name: Smcntrpmf description: | Upper 32 bits of the 64-bit `minstretcfg` CSR, used on RV32 systems to access privilege mode filtering inhibit bits for instruction retirement. @@ -20,7 +22,9 @@ fields: alias: minstretcfg.MINH location: 30 type: RW - definedBy: M + definedBy: + extension: + name: M description: If set, then counting of events in M-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -28,7 +32,9 @@ fields: alias: minstretcfg.SINH location: 29 type: RW - definedBy: S + definedBy: + extension: + name: S description: If set, then counting of events in S/HS-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -36,7 +42,9 @@ fields: alias: minstretcfg.UINH location: 28 type: RW - definedBy: U + definedBy: + extension: + name: U description: If set, then counting of events in U-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -44,7 +52,9 @@ fields: alias: minstretcfg.VSINH location: 27 type: RW - definedBy: H + definedBy: + extension: + name: H description: If set, then counting of events in VS-mode is inhibited. reset_value: UNDEFINED_LEGAL @@ -52,6 +62,8 @@ fields: alias: minstretcfg.VUINH location: 26 type: RW - definedBy: H + definedBy: + extension: + name: H description: If set, then counting of events in VU-mode is inhibited. reset_value: UNDEFINED_LEGAL diff --git a/spec/std/isa/csr/Smcsrind/mireg.yaml b/spec/std/isa/csr/Smcsrind/mireg.yaml index 1dc878a51e..44063e17a1 100644 --- a/spec/std/isa/csr/Smcsrind/mireg.yaml +++ b/spec/std/isa/csr/Smcsrind/mireg.yaml @@ -10,7 +10,9 @@ address: 0x351 writable: true priv_mode: M length: MXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-mireg-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/mireg2.yaml b/spec/std/isa/csr/Smcsrind/mireg2.yaml index e88f834c13..22701f9819 100644 --- a/spec/std/isa/csr/Smcsrind/mireg2.yaml +++ b/spec/std/isa/csr/Smcsrind/mireg2.yaml @@ -10,7 +10,9 @@ address: 0x352 writable: true priv_mode: M length: MXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-mireg2-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/mireg3.yaml b/spec/std/isa/csr/Smcsrind/mireg3.yaml index a3282664dc..19cc5992a6 100644 --- a/spec/std/isa/csr/Smcsrind/mireg3.yaml +++ b/spec/std/isa/csr/Smcsrind/mireg3.yaml @@ -10,7 +10,9 @@ address: 0x353 writable: true priv_mode: M length: MXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-mireg3-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/mireg4.yaml b/spec/std/isa/csr/Smcsrind/mireg4.yaml index 9fc214b1cd..0d0c360564 100644 --- a/spec/std/isa/csr/Smcsrind/mireg4.yaml +++ b/spec/std/isa/csr/Smcsrind/mireg4.yaml @@ -10,7 +10,9 @@ address: 0x355 writable: true priv_mode: M length: MXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-mireg4-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/mireg5.yaml b/spec/std/isa/csr/Smcsrind/mireg5.yaml index b45ee56bdd..fcb614606a 100644 --- a/spec/std/isa/csr/Smcsrind/mireg5.yaml +++ b/spec/std/isa/csr/Smcsrind/mireg5.yaml @@ -10,7 +10,9 @@ address: 0x356 writable: true priv_mode: M length: MXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-mireg5-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/mireg6.yaml b/spec/std/isa/csr/Smcsrind/mireg6.yaml index b983675c8a..f05548b813 100644 --- a/spec/std/isa/csr/Smcsrind/mireg6.yaml +++ b/spec/std/isa/csr/Smcsrind/mireg6.yaml @@ -10,7 +10,9 @@ address: 0x357 writable: true priv_mode: M length: MXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-mireg6-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/miselect.yaml b/spec/std/isa/csr/Smcsrind/miselect.yaml index 93eaccc64b..44cad815a3 100644 --- a/spec/std/isa/csr/Smcsrind/miselect.yaml +++ b/spec/std/isa/csr/Smcsrind/miselect.yaml @@ -10,7 +10,9 @@ address: 0x350 writable: true priv_mode: M length: MXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-miselect-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/sireg.yaml b/spec/std/isa/csr/Smcsrind/sireg.yaml index 91e57259d5..b426d4041d 100644 --- a/spec/std/isa/csr/Smcsrind/sireg.yaml +++ b/spec/std/isa/csr/Smcsrind/sireg.yaml @@ -10,7 +10,9 @@ address: 0x151 writable: true priv_mode: S length: SXLEN -definedBy: Sscsrind +definedBy: + extension: + name: Sscsrind description: - id: csr-sireg-behavior-implemented normative: true @@ -61,7 +63,9 @@ fields: description: - id: csr-sireg-value-desc normative: true - text: The data read from or written to the register selected by the current `siselect` value. + text: + The data read from or written to the register selected by the current + `siselect` value. reset_value: UNDEFINED_LEGAL sw_write(csr_value): | Csr handle = indirect_csr_lookup(CSR[siselect].VALUE, 1); diff --git a/spec/std/isa/csr/Smcsrind/sireg2.yaml b/spec/std/isa/csr/Smcsrind/sireg2.yaml index 9f36c46d4b..bd0c1d29b8 100644 --- a/spec/std/isa/csr/Smcsrind/sireg2.yaml +++ b/spec/std/isa/csr/Smcsrind/sireg2.yaml @@ -10,7 +10,9 @@ address: 0x152 writable: true priv_mode: S length: SXLEN -definedBy: Sscsrind +definedBy: + extension: + name: Sscsrind description: - id: csr-sireg2-behavior-implemented normative: true @@ -61,7 +63,9 @@ fields: description: - id: csr-sireg2-value-desc normative: true - text: The data read from or written to the register selected by the current `siselect` value. + text: + The data read from or written to the register selected by the current + `siselect` value. reset_value: UNDEFINED_LEGAL sw_write(csr_value): | Csr handle = indirect_csr_lookup(CSR[siselect].VALUE, 2); diff --git a/spec/std/isa/csr/Smcsrind/sireg3.yaml b/spec/std/isa/csr/Smcsrind/sireg3.yaml index 80260854a8..c9e3ae4df2 100644 --- a/spec/std/isa/csr/Smcsrind/sireg3.yaml +++ b/spec/std/isa/csr/Smcsrind/sireg3.yaml @@ -10,7 +10,9 @@ address: 0x153 writable: true priv_mode: S length: SXLEN -definedBy: Sscsrind +definedBy: + extension: + name: Sscsrind description: - id: csr-sireg3-behavior-implemented normative: true @@ -61,7 +63,9 @@ fields: description: - id: csr-sireg3-value-desc normative: true - text: The data read from or written to the register selected by the current `siselect` value. + text: + The data read from or written to the register selected by the current + `siselect` value. reset_value: UNDEFINED_LEGAL sw_write(csr_value): | Csr handle = indirect_csr_lookup(CSR[siselect].VALUE, 3); diff --git a/spec/std/isa/csr/Smcsrind/sireg4.yaml b/spec/std/isa/csr/Smcsrind/sireg4.yaml index ec6de98888..094601017b 100644 --- a/spec/std/isa/csr/Smcsrind/sireg4.yaml +++ b/spec/std/isa/csr/Smcsrind/sireg4.yaml @@ -10,7 +10,9 @@ address: 0x155 writable: true priv_mode: S length: SXLEN -definedBy: Sscsrind +definedBy: + extension: + name: Sscsrind description: - id: csr-sireg4-behavior-implemented normative: true @@ -61,7 +63,9 @@ fields: description: - id: csr-sireg4-value-desc normative: true - text: The data read from or written to the register selected by the current `siselect` value. + text: + The data read from or written to the register selected by the current + `siselect` value. reset_value: UNDEFINED_LEGAL sw_write(csr_value): | Csr handle = indirect_csr_lookup(CSR[siselect].VALUE, 4); diff --git a/spec/std/isa/csr/Smcsrind/sireg5.yaml b/spec/std/isa/csr/Smcsrind/sireg5.yaml index d71114e582..00e1680fbd 100644 --- a/spec/std/isa/csr/Smcsrind/sireg5.yaml +++ b/spec/std/isa/csr/Smcsrind/sireg5.yaml @@ -10,7 +10,9 @@ address: 0x156 writable: true priv_mode: S length: SXLEN -definedBy: Sscsrind +definedBy: + extension: + name: Sscsrind description: - id: csr-sireg5-behavior-implemented normative: true @@ -61,7 +63,9 @@ fields: description: - id: csr-sireg5-value-desc normative: true - text: The data read from or written to the register selected by the current `siselect` value. + text: + The data read from or written to the register selected by the current + `siselect` value. reset_value: UNDEFINED_LEGAL sw_write(csr_value): | Csr handle = indirect_csr_lookup(CSR[siselect].VALUE, 5); diff --git a/spec/std/isa/csr/Smcsrind/sireg6.yaml b/spec/std/isa/csr/Smcsrind/sireg6.yaml index 4cdeb131a9..2ad941cb4d 100644 --- a/spec/std/isa/csr/Smcsrind/sireg6.yaml +++ b/spec/std/isa/csr/Smcsrind/sireg6.yaml @@ -10,7 +10,9 @@ address: 0x157 writable: true priv_mode: S length: SXLEN -definedBy: Sscsrind +definedBy: + extension: + name: Sscsrind description: - id: csr-sireg6-behavior-implemented normative: true @@ -61,7 +63,9 @@ fields: description: - id: csr-sireg6-value-desc normative: true - text: The data read from or written to the register selected by the current `siselect` value. + text: + The data read from or written to the register selected by the current + `siselect` value. reset_value: UNDEFINED_LEGAL sw_write(csr_value): | Csr handle = indirect_csr_lookup(CSR[siselect].VALUE, 6); diff --git a/spec/std/isa/csr/Smcsrind/siselect.yaml b/spec/std/isa/csr/Smcsrind/siselect.yaml index ff93f28831..c22de130c3 100644 --- a/spec/std/isa/csr/Smcsrind/siselect.yaml +++ b/spec/std/isa/csr/Smcsrind/siselect.yaml @@ -10,7 +10,9 @@ address: 0x150 writable: true priv_mode: S length: SXLEN -definedBy: Sscsrind +definedBy: + extension: + name: Sscsrind description: - id: csr-siselect-value-range normative: true diff --git a/spec/std/isa/csr/Smcsrind/vsireg.yaml b/spec/std/isa/csr/Smcsrind/vsireg.yaml index 9ea709e347..2522089665 100644 --- a/spec/std/isa/csr/Smcsrind/vsireg.yaml +++ b/spec/std/isa/csr/Smcsrind/vsireg.yaml @@ -11,7 +11,9 @@ virtual_address: 0x251 writable: true priv_mode: VS length: VSXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-vsireg-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/vsireg2.yaml b/spec/std/isa/csr/Smcsrind/vsireg2.yaml index 5db742ccec..9abaad94a1 100644 --- a/spec/std/isa/csr/Smcsrind/vsireg2.yaml +++ b/spec/std/isa/csr/Smcsrind/vsireg2.yaml @@ -11,7 +11,9 @@ virtual_address: 0x252 writable: true priv_mode: VS length: VSXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-vsireg2-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/vsireg3.yaml b/spec/std/isa/csr/Smcsrind/vsireg3.yaml index 93b32212e1..1d98a11991 100644 --- a/spec/std/isa/csr/Smcsrind/vsireg3.yaml +++ b/spec/std/isa/csr/Smcsrind/vsireg3.yaml @@ -11,7 +11,9 @@ virtual_address: 0x253 writable: true priv_mode: VS length: VSXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-vsireg3-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/vsireg4.yaml b/spec/std/isa/csr/Smcsrind/vsireg4.yaml index 7da8145364..6a82fc3c03 100644 --- a/spec/std/isa/csr/Smcsrind/vsireg4.yaml +++ b/spec/std/isa/csr/Smcsrind/vsireg4.yaml @@ -11,7 +11,9 @@ virtual_address: 0x255 writable: true priv_mode: VS length: VSXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-vsireg4-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/vsireg5.yaml b/spec/std/isa/csr/Smcsrind/vsireg5.yaml index 1e003f7935..8d665c3e43 100644 --- a/spec/std/isa/csr/Smcsrind/vsireg5.yaml +++ b/spec/std/isa/csr/Smcsrind/vsireg5.yaml @@ -11,7 +11,9 @@ virtual_address: 0x256 writable: true priv_mode: VS length: VSXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-vsireg5-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/vsireg6.yaml b/spec/std/isa/csr/Smcsrind/vsireg6.yaml index 4d9c9e2f0a..c9b7747fe9 100644 --- a/spec/std/isa/csr/Smcsrind/vsireg6.yaml +++ b/spec/std/isa/csr/Smcsrind/vsireg6.yaml @@ -11,7 +11,9 @@ virtual_address: 0x257 writable: true priv_mode: VS length: VSXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-vsireg6-purpose normative: true diff --git a/spec/std/isa/csr/Smcsrind/vsiselect.yaml b/spec/std/isa/csr/Smcsrind/vsiselect.yaml index 40f48af448..dae1d7bd7f 100644 --- a/spec/std/isa/csr/Smcsrind/vsiselect.yaml +++ b/spec/std/isa/csr/Smcsrind/vsiselect.yaml @@ -11,7 +11,9 @@ virtual_address: 0x250 writable: true priv_mode: VS length: VSXLEN -definedBy: Smcsrind +definedBy: + extension: + name: Smcsrind description: - id: csr-vsiselect-range-minimum normative: true diff --git a/spec/std/isa/csr/Smrnmi/mncause.yaml b/spec/std/isa/csr/Smrnmi/mncause.yaml index 46c8f70f42..4fdd02dc4e 100644 --- a/spec/std/isa/csr/Smrnmi/mncause.yaml +++ b/spec/std/isa/csr/Smrnmi/mncause.yaml @@ -11,7 +11,9 @@ address: 0x742 writable: true priv_mode: M length: MXLEN -definedBy: Smrnmi +definedBy: + extension: + name: Smrnmi description: | The mncause CSR holds the reason for the NMI. If the reason is an interrupt, bit MXLEN-1 is set to 1, and the NMI cause is encoded in diff --git a/spec/std/isa/csr/Smrnmi/mnepc.yaml b/spec/std/isa/csr/Smrnmi/mnepc.yaml index 6fb1bcba42..e60abd764d 100644 --- a/spec/std/isa/csr/Smrnmi/mnepc.yaml +++ b/spec/std/isa/csr/Smrnmi/mnepc.yaml @@ -15,7 +15,9 @@ description: | Written with the PC of an instruction on an exception or interrupt taken in M-mode. Also controls where the hart jumps on an exception return from M-mode. -definedBy: Sm +definedBy: + extension: + name: Sm fields: PC: location_rv32: 31-0 diff --git a/spec/std/isa/csr/Smrnmi/mnscratch.yaml b/spec/std/isa/csr/Smrnmi/mnscratch.yaml index 9886468d1c..9a5ae0e5d3 100644 --- a/spec/std/isa/csr/Smrnmi/mnscratch.yaml +++ b/spec/std/isa/csr/Smrnmi/mnscratch.yaml @@ -14,7 +14,9 @@ length: MXLEN description: Scratch register for software use in NMI / double trap. Bits are not interpreted by hardware. -definedBy: Smrnmi +definedBy: + extension: + name: Smrnmi fields: SCRATCH: location_rv32: 31-0 diff --git a/spec/std/isa/csr/Smrnmi/mnstatus.yaml b/spec/std/isa/csr/Smrnmi/mnstatus.yaml index 881f7921c2..c22cdc505c 100644 --- a/spec/std/isa/csr/Smrnmi/mnstatus.yaml +++ b/spec/std/isa/csr/Smrnmi/mnstatus.yaml @@ -16,7 +16,9 @@ length: MXLEN description: The mnstatus register tracks and controls the hart's current NMI operating state. -definedBy: Smrnmi +definedBy: + extension: + name: Smrnmi fields: MNPP: location: 12-11 @@ -69,7 +71,9 @@ fields: Can also be written by software. type: RW-H reset_value: UNDEFINED_LEGAL - definedBy: H + definedBy: + extension: + name: H NMIE: location: 3 description: | diff --git a/spec/std/isa/csr/Sscofpmf/scountovf.layout b/spec/std/isa/csr/Sscofpmf/scountovf.layout index dce5afd045..a62e00dc84 100644 --- a/spec/std/isa/csr/Sscofpmf/scountovf.layout +++ b/spec/std/isa/csr/Sscofpmf/scountovf.layout @@ -11,7 +11,9 @@ address: 0xDA0 writable: false priv_mode: S length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf description: | A 32-bit read-only register that contains shadow copies of the OF bits in the 29 `mhpmevent` CSRs (`mhpmevent3` - `mhpmevent31`) — where `scountovf` bit X corresponds to `mhpmeventX`. diff --git a/spec/std/isa/csr/Sscofpmf/scountovf.yaml b/spec/std/isa/csr/Sscofpmf/scountovf.yaml index bb257d4a8e..530135fb1d 100644 --- a/spec/std/isa/csr/Sscofpmf/scountovf.yaml +++ b/spec/std/isa/csr/Sscofpmf/scountovf.yaml @@ -2,7 +2,7 @@ # WARNING: This file is auto-generated from spec/std/isa/csr/Sscofpmf/scountovf.layout# SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../../schemas/csr_schema.json +# yaml-language-server: $schema=../../../schemas/csr_schema.json $schema: csr_schema.json# kind: csr @@ -12,7 +12,9 @@ address: 0xDA0 writable: false priv_mode: S length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf description: | A 32-bit read-only register that contains shadow copies of the OF bits in the 29 `mhpmevent` CSRs (`mhpmevent3` - `mhpmevent31`) — where `scountovf` bit X corresponds to `mhpmeventX`. diff --git a/spec/std/isa/csr/Ssqosid/srmcfg.yaml b/spec/std/isa/csr/Ssqosid/srmcfg.yaml index bb51612f60..7288c2cf93 100644 --- a/spec/std/isa/csr/Ssqosid/srmcfg.yaml +++ b/spec/std/isa/csr/Ssqosid/srmcfg.yaml @@ -10,7 +10,9 @@ address: 0x181 writable: true priv_mode: S length: SXLEN -definedBy: Ssqosid +definedBy: + extension: + name: Ssqosid description: - id: csr-srmcfg-purpose normative: true diff --git a/spec/std/isa/csr/Zicntr/mcountinhibit.layout b/spec/std/isa/csr/Zicntr/mcountinhibit.layout index c942573014..c3ececafdc 100644 --- a/spec/std/isa/csr/Zicntr/mcountinhibit.layout +++ b/spec/std/isa/csr/Zicntr/mcountinhibit.layout @@ -44,13 +44,14 @@ description: | ==== definedBy: - anyOf: - - name: Sm - - name: Smhpm + extension: + name: Sm fields: CY: location: 0 - definedBy: Sm + definedBy: + extension: + name: Sm description: When set, `mcycle.COUNT` stops counting in all privilege modes. type(): | return COUNTINHIBIT_EN[0] ? CsrFieldType::RW : CsrFieldType::RO; @@ -58,7 +59,9 @@ fields: return COUNTINHIBIT_EN[0] ? UNDEFINED_LEGAL : 0; IR: location: 2 - definedBy: Sm + definedBy: + extension: + name: Sm description: When set, `minstret.COUNT` stops counting in all privilege modes. type(): | return COUNTINHIBIT_EN[2] ? CsrFieldType::RW : CsrFieldType::RO; @@ -67,7 +70,9 @@ fields: <%- (3..31).each do |hpm_num| -%> HPM<%= hpm_num %>: location: <%= hpm_num %> - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[<%= hpm_num %>] == true"] When set, `hpmcounter<%= hpm_num %>.COUNT` stops counting in all privilege modes. diff --git a/spec/std/isa/csr/Zicntr/mcountinhibit.yaml b/spec/std/isa/csr/Zicntr/mcountinhibit.yaml index 41e849ad78..9e39c839e5 100644 --- a/spec/std/isa/csr/Zicntr/mcountinhibit.yaml +++ b/spec/std/isa/csr/Zicntr/mcountinhibit.yaml @@ -45,13 +45,14 @@ description: | ==== definedBy: - anyOf: - - name: Sm - - name: Smhpm + extension: + name: Sm fields: CY: location: 0 - definedBy: Sm + definedBy: + extension: + name: Sm description: When set, `mcycle.COUNT` stops counting in all privilege modes. type(): | return COUNTINHIBIT_EN[0] ? CsrFieldType::RW : CsrFieldType::RO; @@ -59,7 +60,9 @@ fields: return COUNTINHIBIT_EN[0] ? UNDEFINED_LEGAL : 0; IR: location: 2 - definedBy: Sm + definedBy: + extension: + name: Sm description: When set, `minstret.COUNT` stops counting in all privilege modes. type(): | return COUNTINHIBIT_EN[2] ? CsrFieldType::RW : CsrFieldType::RO; @@ -67,7 +70,9 @@ fields: return COUNTINHIBIT_EN[2] ? UNDEFINED_LEGAL : 0; HPM3: location: 3 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[3] == true"] When set, `hpmcounter3.COUNT` stops counting in all privilege modes. @@ -80,7 +85,9 @@ fields: return COUNTINHIBIT_EN[3] ? UNDEFINED_LEGAL : 0; HPM4: location: 4 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[4] == true"] When set, `hpmcounter4.COUNT` stops counting in all privilege modes. @@ -93,7 +100,9 @@ fields: return COUNTINHIBIT_EN[4] ? UNDEFINED_LEGAL : 0; HPM5: location: 5 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[5] == true"] When set, `hpmcounter5.COUNT` stops counting in all privilege modes. @@ -106,7 +115,9 @@ fields: return COUNTINHIBIT_EN[5] ? UNDEFINED_LEGAL : 0; HPM6: location: 6 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[6] == true"] When set, `hpmcounter6.COUNT` stops counting in all privilege modes. @@ -119,7 +130,9 @@ fields: return COUNTINHIBIT_EN[6] ? UNDEFINED_LEGAL : 0; HPM7: location: 7 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[7] == true"] When set, `hpmcounter7.COUNT` stops counting in all privilege modes. @@ -132,7 +145,9 @@ fields: return COUNTINHIBIT_EN[7] ? UNDEFINED_LEGAL : 0; HPM8: location: 8 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[8] == true"] When set, `hpmcounter8.COUNT` stops counting in all privilege modes. @@ -145,7 +160,9 @@ fields: return COUNTINHIBIT_EN[8] ? UNDEFINED_LEGAL : 0; HPM9: location: 9 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[9] == true"] When set, `hpmcounter9.COUNT` stops counting in all privilege modes. @@ -158,7 +175,9 @@ fields: return COUNTINHIBIT_EN[9] ? UNDEFINED_LEGAL : 0; HPM10: location: 10 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[10] == true"] When set, `hpmcounter10.COUNT` stops counting in all privilege modes. @@ -171,7 +190,9 @@ fields: return COUNTINHIBIT_EN[10] ? UNDEFINED_LEGAL : 0; HPM11: location: 11 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[11] == true"] When set, `hpmcounter11.COUNT` stops counting in all privilege modes. @@ -184,7 +205,9 @@ fields: return COUNTINHIBIT_EN[11] ? UNDEFINED_LEGAL : 0; HPM12: location: 12 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[12] == true"] When set, `hpmcounter12.COUNT` stops counting in all privilege modes. @@ -197,7 +220,9 @@ fields: return COUNTINHIBIT_EN[12] ? UNDEFINED_LEGAL : 0; HPM13: location: 13 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[13] == true"] When set, `hpmcounter13.COUNT` stops counting in all privilege modes. @@ -210,7 +235,9 @@ fields: return COUNTINHIBIT_EN[13] ? UNDEFINED_LEGAL : 0; HPM14: location: 14 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[14] == true"] When set, `hpmcounter14.COUNT` stops counting in all privilege modes. @@ -223,7 +250,9 @@ fields: return COUNTINHIBIT_EN[14] ? UNDEFINED_LEGAL : 0; HPM15: location: 15 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[15] == true"] When set, `hpmcounter15.COUNT` stops counting in all privilege modes. @@ -236,7 +265,9 @@ fields: return COUNTINHIBIT_EN[15] ? UNDEFINED_LEGAL : 0; HPM16: location: 16 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[16] == true"] When set, `hpmcounter16.COUNT` stops counting in all privilege modes. @@ -249,7 +280,9 @@ fields: return COUNTINHIBIT_EN[16] ? UNDEFINED_LEGAL : 0; HPM17: location: 17 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[17] == true"] When set, `hpmcounter17.COUNT` stops counting in all privilege modes. @@ -262,7 +295,9 @@ fields: return COUNTINHIBIT_EN[17] ? UNDEFINED_LEGAL : 0; HPM18: location: 18 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[18] == true"] When set, `hpmcounter18.COUNT` stops counting in all privilege modes. @@ -275,7 +310,9 @@ fields: return COUNTINHIBIT_EN[18] ? UNDEFINED_LEGAL : 0; HPM19: location: 19 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[19] == true"] When set, `hpmcounter19.COUNT` stops counting in all privilege modes. @@ -288,7 +325,9 @@ fields: return COUNTINHIBIT_EN[19] ? UNDEFINED_LEGAL : 0; HPM20: location: 20 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[20] == true"] When set, `hpmcounter20.COUNT` stops counting in all privilege modes. @@ -301,7 +340,9 @@ fields: return COUNTINHIBIT_EN[20] ? UNDEFINED_LEGAL : 0; HPM21: location: 21 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[21] == true"] When set, `hpmcounter21.COUNT` stops counting in all privilege modes. @@ -314,7 +355,9 @@ fields: return COUNTINHIBIT_EN[21] ? UNDEFINED_LEGAL : 0; HPM22: location: 22 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[22] == true"] When set, `hpmcounter22.COUNT` stops counting in all privilege modes. @@ -327,7 +370,9 @@ fields: return COUNTINHIBIT_EN[22] ? UNDEFINED_LEGAL : 0; HPM23: location: 23 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[23] == true"] When set, `hpmcounter23.COUNT` stops counting in all privilege modes. @@ -340,7 +385,9 @@ fields: return COUNTINHIBIT_EN[23] ? UNDEFINED_LEGAL : 0; HPM24: location: 24 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[24] == true"] When set, `hpmcounter24.COUNT` stops counting in all privilege modes. @@ -353,7 +400,9 @@ fields: return COUNTINHIBIT_EN[24] ? UNDEFINED_LEGAL : 0; HPM25: location: 25 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[25] == true"] When set, `hpmcounter25.COUNT` stops counting in all privilege modes. @@ -366,7 +415,9 @@ fields: return COUNTINHIBIT_EN[25] ? UNDEFINED_LEGAL : 0; HPM26: location: 26 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[26] == true"] When set, `hpmcounter26.COUNT` stops counting in all privilege modes. @@ -379,7 +430,9 @@ fields: return COUNTINHIBIT_EN[26] ? UNDEFINED_LEGAL : 0; HPM27: location: 27 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[27] == true"] When set, `hpmcounter27.COUNT` stops counting in all privilege modes. @@ -392,7 +445,9 @@ fields: return COUNTINHIBIT_EN[27] ? UNDEFINED_LEGAL : 0; HPM28: location: 28 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[28] == true"] When set, `hpmcounter28.COUNT` stops counting in all privilege modes. @@ -405,7 +460,9 @@ fields: return COUNTINHIBIT_EN[28] ? UNDEFINED_LEGAL : 0; HPM29: location: 29 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[29] == true"] When set, `hpmcounter29.COUNT` stops counting in all privilege modes. @@ -418,7 +475,9 @@ fields: return COUNTINHIBIT_EN[29] ? UNDEFINED_LEGAL : 0; HPM30: location: 30 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[30] == true"] When set, `hpmcounter30.COUNT` stops counting in all privilege modes. @@ -431,7 +490,9 @@ fields: return COUNTINHIBIT_EN[30] ? UNDEFINED_LEGAL : 0; HPM31: location: 31 - definedBy: Smhpm + definedBy: + extension: + name: Smhpm description: | [when="COUNTINHIBIT_EN[31] == true"] When set, `hpmcounter31.COUNT` stops counting in all privilege modes. diff --git a/spec/std/isa/csr/Zihpm/hpmcounter10.yaml b/spec/std/isa/csr/Zihpm/hpmcounter10.yaml index d215287c64..5cf1f8546b 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter10.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter10.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter10h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter10h.yaml index 81e3b6f834..8a818d37d3 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter10h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter10h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter11.yaml b/spec/std/isa/csr/Zihpm/hpmcounter11.yaml index ae8599a5a4..cf5328be2b 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter11.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter11.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter11h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter11h.yaml index 243a28cc50..fc89bbf2de 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter11h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter11h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter12.yaml b/spec/std/isa/csr/Zihpm/hpmcounter12.yaml index 7b639ae3de..7b0c986a9a 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter12.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter12.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter12h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter12h.yaml index dfb6863509..3f8d09eb5f 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter12h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter12h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter13.yaml b/spec/std/isa/csr/Zihpm/hpmcounter13.yaml index a554512037..427431654a 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter13.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter13.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter13h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter13h.yaml index 1c047c335f..40f9a5a7d6 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter13h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter13h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter14.yaml b/spec/std/isa/csr/Zihpm/hpmcounter14.yaml index ec93ff155f..4313290229 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter14.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter14.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter14h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter14h.yaml index a5247d9c0f..a8da7b810e 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter14h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter14h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter15.yaml b/spec/std/isa/csr/Zihpm/hpmcounter15.yaml index 11a8377b2b..25e9e43371 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter15.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter15.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter15h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter15h.yaml index 5d1e40af4d..e33496b89b 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter15h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter15h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter16.yaml b/spec/std/isa/csr/Zihpm/hpmcounter16.yaml index 54b89782b0..c73a18ca89 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter16.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter16.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter16h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter16h.yaml index 05dedd21b5..0df473f242 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter16h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter16h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter17.yaml b/spec/std/isa/csr/Zihpm/hpmcounter17.yaml index fb2b3837bc..33ced12dbf 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter17.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter17.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter17h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter17h.yaml index 6492e6aa67..4030ee007c 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter17h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter17h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter18.yaml b/spec/std/isa/csr/Zihpm/hpmcounter18.yaml index 4e19726506..a79a02c194 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter18.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter18.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter18h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter18h.yaml index eed9750441..e89f8f4e35 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter18h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter18h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter19.yaml b/spec/std/isa/csr/Zihpm/hpmcounter19.yaml index bea7c58a64..ff18087b58 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter19.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter19.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter19h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter19h.yaml index 00435cf6da..e0c44de2fa 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter19h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter19h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter20.yaml b/spec/std/isa/csr/Zihpm/hpmcounter20.yaml index 0e2296839d..287749b362 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter20.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter20.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter20h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter20h.yaml index 5edaaeaba0..270d98a6d7 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter20h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter20h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter21.yaml b/spec/std/isa/csr/Zihpm/hpmcounter21.yaml index 6236979320..7955089086 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter21.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter21.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter21h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter21h.yaml index feea28a4b9..b3cf843047 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter21h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter21h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter22.yaml b/spec/std/isa/csr/Zihpm/hpmcounter22.yaml index 6e7f5882c8..e27cde7e62 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter22.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter22.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter22h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter22h.yaml index 6b26845865..0b49cd0703 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter22h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter22h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter23.yaml b/spec/std/isa/csr/Zihpm/hpmcounter23.yaml index 203a2cdd29..fd7bbacd65 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter23.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter23.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter23h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter23h.yaml index 0b7db79a83..9340b07adf 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter23h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter23h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter24.yaml b/spec/std/isa/csr/Zihpm/hpmcounter24.yaml index e40be6a346..131d55617e 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter24.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter24.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter24h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter24h.yaml index 4b34b9c73c..3a9743424e 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter24h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter24h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter25.yaml b/spec/std/isa/csr/Zihpm/hpmcounter25.yaml index 5f8cbda382..c6dc12a48d 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter25.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter25.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter25h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter25h.yaml index 44a8a1b6f2..ff701138ec 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter25h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter25h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter26.yaml b/spec/std/isa/csr/Zihpm/hpmcounter26.yaml index 634f8f5049..3f10c563cc 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter26.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter26.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter26h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter26h.yaml index 77301ce444..41b11d7be3 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter26h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter26h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter27.yaml b/spec/std/isa/csr/Zihpm/hpmcounter27.yaml index 5407bc0cab..88498acec5 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter27.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter27.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter27h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter27h.yaml index 4b5073a7e5..1eac1aa6c8 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter27h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter27h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter28.yaml b/spec/std/isa/csr/Zihpm/hpmcounter28.yaml index 24081275b8..27f01ed517 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter28.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter28.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter28h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter28h.yaml index 740fff2074..75c7a353ce 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter28h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter28h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter29.yaml b/spec/std/isa/csr/Zihpm/hpmcounter29.yaml index 989fdca9d4..3a16732c42 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter29.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter29.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter29h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter29h.yaml index a3e07c35a9..e424ad6202 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter29h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter29h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter3.yaml b/spec/std/isa/csr/Zihpm/hpmcounter3.yaml index 598fa048f4..6060ef6bdf 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter3.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter3.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter30.yaml b/spec/std/isa/csr/Zihpm/hpmcounter30.yaml index ab123cd4f6..486481552d 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter30.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter30.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter30h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter30h.yaml index 73b26fb135..0332401333 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter30h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter30h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter31.yaml b/spec/std/isa/csr/Zihpm/hpmcounter31.yaml index 65cd2c7136..9ca9385291 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter31.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter31.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter31h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter31h.yaml index 18d5e66379..cb9c9f0033 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter31h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter31h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter3h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter3h.yaml index fd4a5b8eaf..c37ce80e06 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter3h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter3h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter4.yaml b/spec/std/isa/csr/Zihpm/hpmcounter4.yaml index cd7814de56..0a4ee2e98a 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter4.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter4.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter4h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter4h.yaml index c9058cd9fc..6db87b75ea 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter4h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter4h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter5.yaml b/spec/std/isa/csr/Zihpm/hpmcounter5.yaml index 03b4c0f4ce..ed7f1275c3 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter5.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter5.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter5h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter5h.yaml index bbdfa53265..90d8fd6b3b 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter5h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter5h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter6.yaml b/spec/std/isa/csr/Zihpm/hpmcounter6.yaml index c951df3602..a734d367ea 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter6.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter6.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter6h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter6h.yaml index 8b98b5bf2c..56e397ab54 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter6h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter6h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter7.yaml b/spec/std/isa/csr/Zihpm/hpmcounter7.yaml index 36b0a4a7b5..0a6b31f5ce 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter7.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter7.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter7h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter7h.yaml index 4c5e1af405..3680fd9bd3 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter7h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter7h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter8.yaml b/spec/std/isa/csr/Zihpm/hpmcounter8.yaml index 3374e87f8c..4e612f2ff4 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter8.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter8.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter8h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter8h.yaml index 59af7baffe..26c1914048 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter8h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter8h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter9.yaml b/spec/std/isa/csr/Zihpm/hpmcounter9.yaml index 1f8380b7ab..84080fc90d 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter9.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter9.yaml @@ -59,7 +59,9 @@ description: | <%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounter9h.yaml b/spec/std/isa/csr/Zihpm/hpmcounter9h.yaml index 56f3799673..d96f03747e 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounter9h.yaml +++ b/spec/std/isa/csr/Zihpm/hpmcounter9h.yaml @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounterN.layout b/spec/std/isa/csr/Zihpm/hpmcounterN.layout index 1a88abedb5..99336b536c 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounterN.layout +++ b/spec/std/isa/csr/Zihpm/hpmcounterN.layout @@ -59,7 +59,9 @@ description: | <%%- end -%> priv_mode: U length: 64 -definedBy: Zihpm +definedBy: + extension: + name: Zihpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/hpmcounterNh.layout b/spec/std/isa/csr/Zihpm/hpmcounterNh.layout index 608f75e546..23a7ad07f9 100644 --- a/spec/std/isa/csr/Zihpm/hpmcounterNh.layout +++ b/spec/std/isa/csr/Zihpm/hpmcounterNh.layout @@ -30,7 +30,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml index 540e9b8ea2..dda4e7c6c5 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter10.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml index cc10b27b46..858b3416e7 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter10h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter10. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml index d4a9871953..643884f121 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter11.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml index 5b0bce13eb..af1d64c098 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter11h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter11. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml index 03d20840db..5f081ac4b9 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter12.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml index 5f94f5ef4c..5c9f641a64 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter12h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter12. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml index 84ef3e02ab..d5fde3b8e7 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter13.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml index 9504f9334f..36754d535e 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter13h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter13. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml index 5f5a80d33d..a2c3077f9a 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter14.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml index 509777e4d1..9d61550638 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter14h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter14. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml index c392859120..c5383cab19 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter15.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml index 7385a3c691..3fe5a9b482 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter15h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter15. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml index 857f092f72..a42f91fe0c 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter16.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml index ddf2ed6a26..e9a0efb240 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter16h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter16. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml index a01c7c52f3..84a5e9ba56 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter17.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml index a844a8cadd..e1c99f7bbf 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter17h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter17. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml index 138ae6910d..813c1eafa4 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter18.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml index 6f8f80cde9..9d00299d7a 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter18h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter18. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml index 13491a7c23..a5a7870479 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter19.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml index 1d4185d4a0..cda01936fe 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter19h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter19. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml index d9413a7d4a..b035134b68 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter20.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml index f9206a9876..26122f19b2 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter20h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter20. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml index ffb609ac3d..b8d32cd5cb 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter21.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml index c66bcf1007..a946c435bb 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter21h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter21. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml index a5cdd3592b..9a3d962e6d 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter22.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml index 2561532aa0..3740dc515d 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter22h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter22. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml index 8a4c0f930e..2d73d28d2b 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter23.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml index 2cd6cc20ec..cf86ebe9a8 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter23h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter23. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml index 67e0b991c5..25042e016e 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter24.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml index 7a95d339f5..571dbab8f4 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter24h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter24. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml index 6f36cdfee8..06dbaf3650 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter25.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml index 1bee8e0d71..d01abefee7 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter25h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter25. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml index f56440fc43..cdf3d72638 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter26.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml index a8b6969184..cf7a8628cb 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter26h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter26. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml index 395f7aa353..90ec34080b 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter27.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml index 3f627925b4..30d2ab5d81 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter27h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter27. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml index f66e2c6bfb..01e463288a 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter28.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml index f76b3b067b..b458143302 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter28h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter28. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml index 6ce775a309..627effce0d 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter29.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml index 2c526ca990..4a8e754384 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter29h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter29. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml index 4452f902b7..0927ee8e2c 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter3.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml index a90e1bb569..5b9ce04897 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter30.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml index 8ab98f1aaf..0bc3ddf9f6 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter30h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter30. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml index 03a35e58c0..7eb221904e 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter31.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml index f1afb30412..f217631abd 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter31h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter31. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml index 9e607ea35d..0f68f52bd5 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter3h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter3. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml index 2319c2b3c4..3a254f417b 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter4.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml index eda94d45fa..65580f1d13 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter4h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter4. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml index 51671cc1ca..756a063291 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter5.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml index 13fa555307..cdca9544d9 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter5h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter5. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml index bc01f7e3da..75cd147ac9 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter6.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml index caa4b0ae04..ce46d2c975 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter6h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter6. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml index ff14eb44a5..30927677d6 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter7.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml index 9b1548bfb1..ea4194fabd 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter7h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter7. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml index 54b069c590..8b41a2a165 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter8.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml index 86cdfb2add..2bda79e486 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter8h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter8. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml index 1812235b2e..48df4e9371 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter9.yaml @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml b/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml index cb12351b57..82a156b27a 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmcounter9h.yaml @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter9. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounterN.layout b/spec/std/isa/csr/Zihpm/mhpmcounterN.layout index 0699f503a2..d040723825 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounterN.layout +++ b/spec/std/isa/csr/Zihpm/mhpmcounterN.layout @@ -13,7 +13,9 @@ writable: true priv_mode: M length: 64 description: Programmable hardware performance counter. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout b/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout index 5f760306a2..bf602a9cac 100644 --- a/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout +++ b/spec/std/isa/csr/Zihpm/mhpmcounterNh.layout @@ -15,7 +15,9 @@ length: 32 base: 32 description: | Upper half of mhpmcounter<%= hpm_num %>. -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/Zihpm/mhpmevent10.yaml b/spec/std/isa/csr/Zihpm/mhpmevent10.yaml index 2d9475f91d..29c016c791 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent10.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent10.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter10 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter10 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter10 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter10 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter10 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter10`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent10h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent10h.yaml index 0451bcbcf6..8b79b8c4e0 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent10h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent10h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent10.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent10.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent10.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent10.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent10.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter10`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent11.yaml b/spec/std/isa/csr/Zihpm/mhpmevent11.yaml index c56a66f4e0..b973cbbfc0 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent11.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent11.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter11 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter11 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter11 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter11 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter11 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter11`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent11h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent11h.yaml index 012725a07b..e000c6a5ea 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent11h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent11h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent11.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent11.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent11.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent11.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent11.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter11`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent12.yaml b/spec/std/isa/csr/Zihpm/mhpmevent12.yaml index 7d10c7a05f..d40bd7906f 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent12.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent12.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter12 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter12 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter12 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter12 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter12 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter12`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent12h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent12h.yaml index a96af4f72e..60d4d630d4 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent12h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent12h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent12.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent12.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent12.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent12.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent12.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter12`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent13.yaml b/spec/std/isa/csr/Zihpm/mhpmevent13.yaml index 37a08491c6..0ee255a06b 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent13.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent13.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter13 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter13 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter13 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter13 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter13 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter13`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent13h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent13h.yaml index 098b803792..6730b8723e 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent13h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent13h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent13.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent13.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent13.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent13.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent13.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter13`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent14.yaml b/spec/std/isa/csr/Zihpm/mhpmevent14.yaml index ea0f96097f..9f57656d72 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent14.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent14.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter14 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter14 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter14 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter14 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter14 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter14`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent14h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent14h.yaml index f83760cec4..530ecf2691 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent14h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent14h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent14.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent14.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent14.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent14.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent14.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter14`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent15.yaml b/spec/std/isa/csr/Zihpm/mhpmevent15.yaml index 9990d36316..225442841a 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent15.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent15.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter15 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter15 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter15 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter15 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter15 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter15`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent15h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent15h.yaml index a4a73d8c14..679f1e0b0e 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent15h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent15h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent15.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent15.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent15.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent15.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent15.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter15`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent16.yaml b/spec/std/isa/csr/Zihpm/mhpmevent16.yaml index 99d261f7f8..7f1badcf04 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent16.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent16.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter16 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter16 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter16 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter16 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter16 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter16`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent16h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent16h.yaml index ccc28d5ec5..ece89be4ee 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent16h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent16h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent16.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent16.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent16.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent16.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent16.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter16`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent17.yaml b/spec/std/isa/csr/Zihpm/mhpmevent17.yaml index 4aa887d001..394f8ccd4e 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent17.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent17.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter17 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter17 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter17 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter17 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter17 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter17`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent17h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent17h.yaml index 65c0adb150..a220e6ccf4 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent17h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent17h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent17.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent17.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent17.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent17.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent17.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter17`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent18.yaml b/spec/std/isa/csr/Zihpm/mhpmevent18.yaml index edd6018aeb..35f4202f40 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent18.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent18.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter18 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter18 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter18 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter18 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter18 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter18`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent18h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent18h.yaml index b032adbc1e..edfcc1cff2 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent18h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent18h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent18.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent18.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent18.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent18.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent18.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter18`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent19.yaml b/spec/std/isa/csr/Zihpm/mhpmevent19.yaml index c932c77aee..0d349b6b9e 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent19.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent19.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter19 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter19 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter19 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter19 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter19 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter19`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent19h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent19h.yaml index 863396f463..945c6597ef 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent19h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent19h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent19.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent19.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent19.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent19.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent19.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter19`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent20.yaml b/spec/std/isa/csr/Zihpm/mhpmevent20.yaml index 1a27b3955c..8dbf0b02a0 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent20.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent20.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter20 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter20 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter20 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter20 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter20 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter20`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent20h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent20h.yaml index 8eda452012..9c7b41b9eb 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent20h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent20h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent20.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent20.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent20.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent20.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent20.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter20`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent21.yaml b/spec/std/isa/csr/Zihpm/mhpmevent21.yaml index ca1a4f2e64..c5a3d19015 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent21.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent21.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter21 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter21 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter21 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter21 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter21 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter21`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent21h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent21h.yaml index ecf250b3d8..0919f56cf7 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent21h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent21h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent21.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent21.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent21.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent21.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent21.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter21`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent22.yaml b/spec/std/isa/csr/Zihpm/mhpmevent22.yaml index dfa99b38d6..49d4b6f3f5 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent22.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent22.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter22 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter22 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter22 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter22 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter22 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter22`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent22h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent22h.yaml index 71c43c8743..1c9e8a2461 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent22h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent22h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent22.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent22.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent22.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent22.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent22.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter22`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent23.yaml b/spec/std/isa/csr/Zihpm/mhpmevent23.yaml index e72a301310..26d948542b 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent23.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent23.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter23 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter23 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter23 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter23 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter23 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter23`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent23h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent23h.yaml index 369dee0bab..9f73d0f4cc 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent23h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent23h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent23.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent23.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent23.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent23.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent23.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter23`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent24.yaml b/spec/std/isa/csr/Zihpm/mhpmevent24.yaml index 9990909222..76ea7b1647 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent24.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent24.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter24 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter24 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter24 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter24 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter24 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter24`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent24h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent24h.yaml index f02d319d69..5513a23a00 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent24h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent24h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent24.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent24.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent24.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent24.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent24.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter24`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent25.yaml b/spec/std/isa/csr/Zihpm/mhpmevent25.yaml index 6152cfe53b..746f4b5e31 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent25.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent25.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter25 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter25 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter25 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter25 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter25 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter25`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent25h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent25h.yaml index 48110095f3..eda0c1844d 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent25h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent25h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent25.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent25.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent25.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent25.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent25.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter25`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent26.yaml b/spec/std/isa/csr/Zihpm/mhpmevent26.yaml index a4d9b38e6f..dad04c5cc6 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent26.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent26.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter26 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter26 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter26 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter26 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter26 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter26`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent26h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent26h.yaml index 2a68874b1e..1444610089 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent26h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent26h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent26.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent26.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent26.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent26.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent26.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter26`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent27.yaml b/spec/std/isa/csr/Zihpm/mhpmevent27.yaml index 7bf3031fcb..6ac881e413 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent27.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent27.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter27 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter27 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter27 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter27 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter27 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter27`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent27h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent27h.yaml index 6350fd0012..6d71951fbd 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent27h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent27h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent27.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent27.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent27.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent27.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent27.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter27`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent28.yaml b/spec/std/isa/csr/Zihpm/mhpmevent28.yaml index c95fac81b1..be632fc4f0 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent28.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent28.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter28 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter28 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter28 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter28 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter28 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter28`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent28h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent28h.yaml index 568e25f262..9b800ef715 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent28h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent28h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent28.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent28.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent28.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent28.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent28.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter28`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent29.yaml b/spec/std/isa/csr/Zihpm/mhpmevent29.yaml index 01338578ae..044268903b 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent29.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent29.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter29 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter29 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter29 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter29 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter29 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter29`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent29h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent29h.yaml index 71bc1d4102..af94e630f4 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent29h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent29h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent29.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent29.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent29.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent29.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent29.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter29`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent3.yaml b/spec/std/isa/csr/Zihpm/mhpmevent3.yaml index 8246efdff6..7c826f2958 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent3.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent3.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter3 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter3 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter3 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter3 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter3 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter3`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent30.yaml b/spec/std/isa/csr/Zihpm/mhpmevent30.yaml index ec6ce52e39..b0c2ff27ec 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent30.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent30.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter30 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter30 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter30 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter30 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter30 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter30`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent30h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent30h.yaml index 3cdd2fdd22..f1c0b7b738 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent30h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent30h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent30.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent30.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent30.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent30.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent30.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter30`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent31.yaml b/spec/std/isa/csr/Zihpm/mhpmevent31.yaml index 68433f01c8..afcde695b8 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent31.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent31.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter31 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter31 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter31 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter31 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter31 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter31`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent31h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent31h.yaml index 6b8828379f..766ccf0365 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent31h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent31h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent31.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent31.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent31.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent31.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent31.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter31`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent3h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent3h.yaml index aea629b905..b229171ff0 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent3h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent3h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent3.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent3.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent3.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent3.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent3.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter3`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent4.yaml b/spec/std/isa/csr/Zihpm/mhpmevent4.yaml index ca583acbf3..c3f5835c13 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent4.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent4.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter4 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter4 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter4 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter4 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter4 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter4`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent4h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent4h.yaml index 55e72c98fa..a5d6ae47d2 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent4h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent4h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent4.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent4.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent4.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent4.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent4.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter4`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent5.yaml b/spec/std/isa/csr/Zihpm/mhpmevent5.yaml index 7360ebf8cf..c52057b681 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent5.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent5.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter5 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter5 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter5 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter5 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter5 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter5`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent5h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent5h.yaml index 697ae8484c..79b257aa82 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent5h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent5h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent5.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent5.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent5.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent5.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent5.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter5`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent6.yaml b/spec/std/isa/csr/Zihpm/mhpmevent6.yaml index 261beaa4f5..87c7989d49 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent6.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent6.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter6 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter6 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter6 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter6 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter6 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter6`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent6h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent6h.yaml index 763faccde5..663852122b 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent6h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent6h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent6.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent6.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent6.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent6.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent6.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter6`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent7.yaml b/spec/std/isa/csr/Zihpm/mhpmevent7.yaml index 9564667dc8..168b681633 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent7.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent7.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter7 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter7 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter7 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter7 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter7 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter7`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent7h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent7h.yaml index b3dedf7829..89aae69ff8 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent7h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent7h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent7.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent7.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent7.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent7.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent7.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter7`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent8.yaml b/spec/std/isa/csr/Zihpm/mhpmevent8.yaml index 2ce8525e79..186830b16f 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent8.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent8.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter8 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter8 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter8 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter8 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter8 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter8`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent8h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent8h.yaml index e104f461a4..46e5d6b9a3 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent8h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent8h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent8.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent8.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent8.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent8.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent8.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter8`. diff --git a/spec/std/isa/csr/Zihpm/mhpmevent9.yaml b/spec/std/isa/csr/Zihpm/mhpmevent9.yaml index a7c02c5c35..b8dc9534d1 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent9.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent9.yaml @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter9 does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter9 does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter9 does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter9 does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter9 does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter9`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmevent9h.yaml b/spec/std/isa/csr/Zihpm/mhpmevent9h.yaml index 24d738bff3..7d350389f2 100644 --- a/spec/std/isa/csr/Zihpm/mhpmevent9h.yaml +++ b/spec/std/isa/csr/Zihpm/mhpmevent9h.yaml @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent9.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent9.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent9.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent9.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent9.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter9`. diff --git a/spec/std/isa/csr/Zihpm/mhpmeventN.layout b/spec/std/isa/csr/Zihpm/mhpmeventN.layout index bc69088a7e..b4c4538474 100644 --- a/spec/std/isa/csr/Zihpm/mhpmeventN.layout +++ b/spec/std/isa/csr/Zihpm/mhpmeventN.layout @@ -15,7 +15,9 @@ length: 64 description: | Programmable hardware performance counter event selector <%% if ext?(:Sscofpmf) %> and overflow/filtering control<%% end %> -definedBy: Smhpm +definedBy: + extension: + name: Smhpm fields: OF: location: 63 @@ -42,7 +44,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 62 description: When set, mhpmcounter<%= hpm_num %> does not increment while the hart in operating in M-mode. @@ -58,7 +62,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 61 description: When set, mhpmcounter<%= hpm_num %> does not increment while the hart in operating in (H)S-mode. @@ -75,7 +81,10 @@ fields: return 0; } definedBy: - allOf: [S, Sscofpmf] + extension: + allOf: + - name: S + - name: Sscofpmf UINH: location: 60 description: When set, mhpmcounter<%= hpm_num %> does not increment while the hart in operating in U-mode. @@ -92,7 +101,10 @@ fields: return 0; } definedBy: - allOf: [U, Sscofpmf] + extension: + allOf: + - name: U + - name: Sscofpmf VSINH: location: 59 description: When set, mhpmcounter<%= hpm_num %> does not increment while the hart in operating in VS-mode. @@ -109,7 +121,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf VUINH: location: 58 description: When set, mhpmcounter<%= hpm_num %> does not increment while the hart in operating in VU-mode. @@ -126,7 +141,10 @@ fields: return 0; } definedBy: - allOf: [H, Sscofpmf] + extension: + allOf: + - name: H + - name: Sscofpmf EVENT: location: 57-0 description: Event selector for performance counter `mhpmcounter<%= hpm_num %>`. @@ -143,7 +161,7 @@ fields: return 0; } sw_write(csr_value): | - if (ary_includes?<$array_size(HPM_EVENTS), 58>(HPM_EVENTS, csr_value.EVENT)) { + if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) { return csr_value.EVENT; } else { return UNDEFINED_LEGAL_DETERMINISTIC; diff --git a/spec/std/isa/csr/Zihpm/mhpmeventNh.layout b/spec/std/isa/csr/Zihpm/mhpmeventNh.layout index 7054e6f408..56e339aa54 100644 --- a/spec/std/isa/csr/Zihpm/mhpmeventNh.layout +++ b/spec/std/isa/csr/Zihpm/mhpmeventNh.layout @@ -18,7 +18,9 @@ description: | Introduced with the `Sscofpmf` extension. Prior to that, there was no way to access the upper 32-bits of `mhpmevent#{hpm_num}`. -definedBy: Sscofpmf +definedBy: + extension: + name: Sscofpmf fields: OF: location: 31 @@ -37,7 +39,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf MINH: location: 30 alias: mhpmevent<%= hpm_num %>.MINH @@ -55,7 +59,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf SINH: location: 29 alias: mhpmevent<%= hpm_num %>.SINH @@ -73,7 +79,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf UINH: location: 28 alias: mhpmevent<%= hpm_num %>.UINH @@ -91,7 +99,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VSINH: location: 27 alias: mhpmevent<%= hpm_num %>.VSINH @@ -109,7 +119,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf VUINH: location: 26 alias: mhpmevent<%= hpm_num %>.VUINH @@ -127,7 +139,9 @@ fields: } else { return 0; } - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf EVENT: location: 25-0 description: High part of event selector for performance counter `mhpmcounter<%= hpm_num %>`. diff --git a/spec/std/isa/csr/cycle.yaml b/spec/std/isa/csr/cycle.yaml index 5f4de14d7d..7982f146a9 100644 --- a/spec/std/isa/csr/cycle.yaml +++ b/spec/std/isa/csr/cycle.yaml @@ -28,7 +28,9 @@ description: | !=== priv_mode: U length: 64 -definedBy: Zicntr +definedBy: + extension: + name: Zicntr fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/cycleh.yaml b/spec/std/isa/csr/cycleh.yaml index 96e54932ea..c71f779177 100644 --- a/spec/std/isa/csr/cycleh.yaml +++ b/spec/std/isa/csr/cycleh.yaml @@ -29,7 +29,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Zicntr +definedBy: + extension: + name: Zicntr fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/dcsr.yaml b/spec/std/isa/csr/dcsr.yaml index 329fb62067..3258b20af2 100644 --- a/spec/std/isa/csr/dcsr.yaml +++ b/spec/std/isa/csr/dcsr.yaml @@ -1,7 +1,7 @@ # Copyright (c) Katherine Hsu # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../schemas/csr_schema.json +# yaml-language-server: $schema=../../../schemas/csr_schema.json $schema: "csr_schema.json#" kind: csr @@ -31,7 +31,9 @@ description: | This CSR is read/write. -definedBy: Sdext +definedBy: + extension: + name: Sdext fields: DEBUGVER: location: 31-28 @@ -55,7 +57,9 @@ fields: CETRIG: location: 19 type: RW - definedBy: Smdbltrp + definedBy: + extension: + name: Smdbltrp description: | This bit is part of Smdbltrp and only exists when that extension is implemented. 0 (disabled):: A hart in a critical error state does not enter @@ -80,7 +84,9 @@ fields: PELP: location: 18 type: RW - definedBy: Zicfilp + definedBy: + extension: + name: Zicfilp description: | This bit is part of Zicfilp and only exists when that extension is implemented. 0 (NO_LP_EXPECTED):: No landing pad instruction expected. @@ -89,7 +95,9 @@ fields: EBREAKVS: location: 17 type: RW - definedBy: H + definedBy: + extension: + name: H description: | 0 (exception):: ebreak instructions in VS-mode behave as described in the Privileged Spec. 1 (debug mode):: ebreak instructions in VS-mode enter Debug Mode. @@ -98,7 +106,9 @@ fields: EBREAKVU: location: 16 type: RW - definedBy: H + definedBy: + extension: + name: H description: | 0 (exception):: ebreak instructions in VU-mode behave as described in the Privileged Spec. 1 (debug mode):: ebreak instructions in VU-mode enter Debug Mode. @@ -114,7 +124,9 @@ fields: EBREAKS: location: 13 type: RW - definedBy: S + definedBy: + extension: + name: S description: | 0 (exception):: ebreak instructions in S-mode behave as described in the Privileged Spec. 1 (debug mode):: ebreak instructions in S-mode enter Debug Mode. @@ -123,7 +135,9 @@ fields: EBREAKU: location: 12 type: RW - definedBy: U + definedBy: + extension: + name: U description: | 0 (exception):: ebreak instructions in U-mode behave as described in the Privileged Spec. 1 (debug mode):: ebreak instructions in U-mode enter Debug Mode. @@ -220,7 +234,9 @@ fields: V: location: 5 type: RW - definedBy: H + definedBy: + extension: + name: H description: | Extends the prv field with the virtualization mode the hart was operating in when Debug Mode was entered. A debugger can change this value to change the diff --git a/spec/std/isa/csr/dpc.yaml b/spec/std/isa/csr/dpc.yaml index 6366e19c6c..5e4c3cc0d3 100644 --- a/spec/std/isa/csr/dpc.yaml +++ b/spec/std/isa/csr/dpc.yaml @@ -1,7 +1,7 @@ # Copyright (c) Katherine Hsu # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../schemas/csr_schema.json +# yaml-language-server: $schema=../../../schemas/csr_schema.json $schema: "csr_schema.json#" kind: csr @@ -33,7 +33,9 @@ description: | dpc to change where the hart resumes. This CSR is read/write. -definedBy: Sdext +definedBy: + extension: + name: Sdext fields: DPC: location_rv32: 31-0 diff --git a/spec/std/isa/csr/hcontext.yaml b/spec/std/isa/csr/hcontext.yaml index f15a2a770a..2e0d2758f6 100644 --- a/spec/std/isa/csr/hcontext.yaml +++ b/spec/std/isa/csr/hcontext.yaml @@ -21,9 +21,10 @@ description: | This register is an alias of the `mcontext` register, providing access to the HCONTEXT field from HS-Mode. definedBy: - allOf: - - Sdtrig - - H + extension: + allOf: + - name: Sdtrig + - name: H fields: HCONTEXT: alias: mcontext.HCONTEXT diff --git a/spec/std/isa/csr/hedeleg.yaml b/spec/std/isa/csr/hedeleg.yaml index 338547350a..950f73a895 100644 --- a/spec/std/isa/csr/hedeleg.yaml +++ b/spec/std/isa/csr/hedeleg.yaml @@ -37,7 +37,9 @@ description: | that aliases bits 63:32 of `hedeleg`. Register `hedelegh` does not exist when XLEN=64. -definedBy: H +definedBy: + extension: + name: H fields: IAM: location: 0 diff --git a/spec/std/isa/csr/hedelegh.yaml b/spec/std/isa/csr/hedelegh.yaml index e4832ed011..a1b95747fc 100644 --- a/spec/std/isa/csr/hedelegh.yaml +++ b/spec/std/isa/csr/hedelegh.yaml @@ -16,5 +16,7 @@ description: | Controls exception delegation from HS-mode to VS-mode. Alias of upper bits of `hedeleg`[63:32]. -definedBy: H +definedBy: + extension: + name: H fields: {} diff --git a/spec/std/isa/csr/hstateen0.yaml b/spec/std/isa/csr/hstateen0.yaml index dfa590dd26..3c017f3610 100644 --- a/spec/std/isa/csr/hstateen0.yaml +++ b/spec/std/isa/csr/hstateen0.yaml @@ -58,10 +58,11 @@ description: in the matching `mstateen` CSR. definedBy: - allOf: - - H - - Smstateen - - Ssstateen + extension: + allOf: + - name: H + - name: Smstateen + - name: Ssstateen fields: SE0: long_name: sstateen0 access control @@ -79,8 +80,9 @@ fields: long_name: senvcfg access control location: 62 definedBy: - name: S - version: ">= 1.11" + extension: + name: S + version: ">= 1.11" description: | The ENVCFG bit in `hstateen0` controls access to the `senvcfg` CSRs. type: RW @@ -93,7 +95,9 @@ fields: CSRIND: long_name: siselect and sireg* access control location: 60 - definedBy: Sscsrind + definedBy: + extension: + name: Sscsrind description: | The CSRIND bit in `hstateen0` controls access to the `siselect` and the `sireg*`, (really `vsiselect` and `vsireg*`) CSRs provided by the Sscsrind @@ -108,7 +112,9 @@ fields: AIA: long_name: Ssaia state access control location: 59 - definedBy: Ssaia + definedBy: + extension: + name: Ssaia description: | The AIA bit in `hstateen0` controls access to all state introduced by the Ssaia extension and is not controlled by either the CSRIND or the @@ -123,7 +129,9 @@ fields: IMSIC: long_name: IMSIC state access control location: 58 - definedBy: Ssaia + definedBy: + extension: + name: Ssaia description: | The IMSIC bit in `hstateen0` controls access to the guest IMSIC state, including CSRs `stopei` (really `vstopei`), provided by the Ssaia extension. @@ -140,7 +148,9 @@ fields: CONTEXT: long_name: scontext access control location: 57 - definedBy: Sdtrig + definedBy: + extension: + name: Sdtrig description: | The CONTEXT bit in `hstateen0` controls access to the `scontext` CSR provided by the Sdtrig extension. @@ -169,7 +179,9 @@ fields: JVT: long_name: jvt access control location: 2 - definedBy: Zcmt + definedBy: + extension: + name: Zcmt description: | The JVT bit controls access to the `jvt` CSR provided by the Zcmt extension. type: RW diff --git a/spec/std/isa/csr/hstateen0h.yaml b/spec/std/isa/csr/hstateen0h.yaml index e1a780dbbe..7ff15b6f0d 100644 --- a/spec/std/isa/csr/hstateen0h.yaml +++ b/spec/std/isa/csr/hstateen0h.yaml @@ -26,10 +26,11 @@ description: `hstateen1h`, `hstateen2h`, and `hstateen3h`. definedBy: - allOf: - - H - - Smstateen - - Ssstateen + extension: + allOf: + - name: H + - name: Smstateen + - name: Ssstateen fields: SE0: long_name: sstateen0 access control @@ -49,8 +50,9 @@ fields: long_name: senvcfg access control location: 30 definedBy: - name: S - version: ">= 1.11" + extension: + name: S + version: ">= 1.11" alias: hstateen0.ENVCFG sw_write(csr_value): | if (CSR[mstateen0].ENVCFG == 1'b0){ @@ -65,7 +67,9 @@ fields: CSRIND: long_name: siselect and sireg* access control location: 28 - definedBy: Sscsrind + definedBy: + extension: + name: Sscsrind alias: hstateen0.CSRIND sw_write(csr_value): | if (CSR[mstateen0].CSRIND == 1'b0){ @@ -82,7 +86,9 @@ fields: AIA: long_name: Ssaia state access control location: 27 - definedBy: Ssaia + definedBy: + extension: + name: Ssaia alias: hstateen0.AIA sw_write(csr_value): | if (CSR[mstateen0].AIA == 1'b0){ @@ -99,7 +105,9 @@ fields: IMSIC: long_name: IMSIC state access control location: 26 - definedBy: Ssaia + definedBy: + extension: + name: Ssaia alias: hstateen0.IMSIC sw_write(csr_value): | if (CSR[mstateen0].IMSIC == 1'b0){ @@ -118,7 +126,9 @@ fields: CONTEXT: long_name: scontext access control location: 25 - definedBy: Sdtrig + definedBy: + extension: + name: Sdtrig alias: hstateen0.CONTEXT sw_write(csr_value): | if (CSR[mstateen0].CONTEXT == 1'b0){ diff --git a/spec/std/isa/csr/hstateen1.yaml b/spec/std/isa/csr/hstateen1.yaml index a5e211dff6..36a10fa743 100644 --- a/spec/std/isa/csr/hstateen1.yaml +++ b/spec/std/isa/csr/hstateen1.yaml @@ -58,10 +58,11 @@ description: in the matching `mstateen` CSR. definedBy: - allOf: - - H - - Smstateen - - Ssstateen + extension: + allOf: + - name: H + - name: Smstateen + - name: Ssstateen fields: SE0: long_name: sstateen1 access control diff --git a/spec/std/isa/csr/hstateen1h.yaml b/spec/std/isa/csr/hstateen1h.yaml index 7a59a65633..fabf3a4859 100644 --- a/spec/std/isa/csr/hstateen1h.yaml +++ b/spec/std/isa/csr/hstateen1h.yaml @@ -26,10 +26,11 @@ description: `hstateen1h`, `hstateen2h`, and `hstateen3h`. definedBy: - allOf: - - H - - Smstateen - - Ssstateen + extension: + allOf: + - name: H + - name: Smstateen + - name: Ssstateen fields: SE0: long_name: sstateen1 access control diff --git a/spec/std/isa/csr/hstateen2.yaml b/spec/std/isa/csr/hstateen2.yaml index 1d848eacc7..f18acfa12c 100644 --- a/spec/std/isa/csr/hstateen2.yaml +++ b/spec/std/isa/csr/hstateen2.yaml @@ -58,10 +58,11 @@ description: in the matching `mstateen` CSR. definedBy: - allOf: - - H - - Smstateen - - Ssstateen + extension: + allOf: + - name: H + - name: Smstateen + - name: Ssstateen fields: SE0: long_name: sstateen2 access control diff --git a/spec/std/isa/csr/hstateen2h.yaml b/spec/std/isa/csr/hstateen2h.yaml index e3d1f6d458..9cdf1ab21d 100644 --- a/spec/std/isa/csr/hstateen2h.yaml +++ b/spec/std/isa/csr/hstateen2h.yaml @@ -26,10 +26,11 @@ description: `hstateen1h`, `hstateen2h`, and `hstateen3h`. definedBy: - allOf: - - H - - Smstateen - - Ssstateen + extension: + allOf: + - name: H + - name: Smstateen + - name: Ssstateen fields: SE0: long_name: sstateen2 access control diff --git a/spec/std/isa/csr/hstateen3.yaml b/spec/std/isa/csr/hstateen3.yaml index 90304c3f01..216fccd562 100644 --- a/spec/std/isa/csr/hstateen3.yaml +++ b/spec/std/isa/csr/hstateen3.yaml @@ -58,10 +58,11 @@ description: in the matching `mstateen` CSR. definedBy: - allOf: - - H - - Smstateen - - Ssstateen + extension: + allOf: + - name: H + - name: Smstateen + - name: Ssstateen fields: SE0: long_name: sstateen3 access control diff --git a/spec/std/isa/csr/hstateen3h.yaml b/spec/std/isa/csr/hstateen3h.yaml index 3659c1c99f..08e288932c 100644 --- a/spec/std/isa/csr/hstateen3h.yaml +++ b/spec/std/isa/csr/hstateen3h.yaml @@ -26,10 +26,11 @@ description: `hstateen1h`, `hstateen2h`, and `hstateen3h`. definedBy: - allOf: - - H - - Smstateen - - Ssstateen + extension: + allOf: + - name: H + - name: Smstateen + - name: Ssstateen fields: SE0: long_name: sstateen3 access control diff --git a/spec/std/isa/csr/hstatus.yaml b/spec/std/isa/csr/hstatus.yaml index b65947ad8d..3d80fff63c 100644 --- a/spec/std/isa/csr/hstatus.yaml +++ b/spec/std/isa/csr/hstatus.yaml @@ -16,7 +16,9 @@ description: | Unlike fields in `sstatus`, which are all aliases of fields `mstatus`, bits in `hstatus` are independent bits and do not have aliases. -definedBy: H +definedBy: + extension: + name: H fields: VSXL: long_name: VS-mode XLen @@ -35,29 +37,29 @@ fields: ! 0 ! 32 ! 1 ! 64 !=== - when(): return VSXLEN == 3264; + when(): return $array_size(VSXLEN) > 1; - id: csr-hstatus-vsxl-rv32 normative: false text: | Because the implementation only supports a single VSXLEN == 32, this field is read-only-0. - when(): return VSXLEN == 32; + when(): return $array_size(VSXLEN) > 1; - id: csr-hstatus-vsxl-rv64 normative: false text: | Because the implementation only supports a single VSXLEN == 64, this field is read-only-1. - when(): return VSXLEN == 64; + when(): return $array_size(VSXLEN) > 1; type(): | - if ((VSXLEN == 32) || (VSXLEN == 64)) { + if ($array_size(VSXLEN) == 1) { return CsrFieldType::RO; } else { return CsrFieldType::RW; } reset_value(): | - if (VSXLEN == 32) { + if ($array_size(VSXLEN) == 1 && VSXLEN[0] == 32) { # immutable, always 0 return 0; - } else if (VSXLEN == 64) { + } else if ($array_size(VSXLEN) == 1 && VSXLEN[0] == 64) { # immutable, always 1 return 1; } else { diff --git a/spec/std/isa/csr/instret.yaml b/spec/std/isa/csr/instret.yaml index 7015bac39f..ba3aab2d37 100644 --- a/spec/std/isa/csr/instret.yaml +++ b/spec/std/isa/csr/instret.yaml @@ -28,7 +28,9 @@ description: | !=== priv_mode: U length: 64 -definedBy: Zicntr +definedBy: + extension: + name: Zicntr fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/instreth.yaml b/spec/std/isa/csr/instreth.yaml index ef09ee7f9a..060f2b232d 100644 --- a/spec/std/isa/csr/instreth.yaml +++ b/spec/std/isa/csr/instreth.yaml @@ -29,7 +29,9 @@ description: | !=== priv_mode: U length: 32 -definedBy: Zicntr +definedBy: + extension: + name: Zicntr fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/jvt.yaml b/spec/std/isa/csr/jvt.yaml index 890bdfc06e..0ee3bf4335 100644 --- a/spec/std/isa/csr/jvt.yaml +++ b/spec/std/isa/csr/jvt.yaml @@ -1,7 +1,7 @@ # Copyright (c) Katherine Hsu # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../schemas/csr_schema.json +# yaml-language-server: $schema=../../../schemas/csr_schema.json $schema: "csr_schema.json#" kind: csr @@ -22,7 +22,9 @@ description: must be saved/restored on context switches. priv_mode: U length: XLEN -definedBy: Zcmt +definedBy: + extension: + name: Zcmt fields: BASE: location_rv64: 63-6 @@ -119,3 +121,5 @@ sw_read(): | raise(ExceptionCode::VirtualInstruction, mode(), $encoding); } } + + return $bits(CSR[jvt]); diff --git a/spec/std/isa/csr/marchid.yaml b/spec/std/isa/csr/marchid.yaml index d2844cebec..7c9274543e 100644 --- a/spec/std/isa/csr/marchid.yaml +++ b/spec/std/isa/csr/marchid.yaml @@ -46,11 +46,13 @@ description: | variants of a design. ==== -definedBy: Sm +definedBy: + extension: + name: Sm fields: Architecture: location_rv32: 31-0 location_rv64: 63-0 type: RO description: Vendor-specific microarchitecture ID. - reset_value(): return ARCH_ID; + reset_value(): return ARCH_ID_VALUE; diff --git a/spec/std/isa/csr/mcause.yaml b/spec/std/isa/csr/mcause.yaml index e2a9ae3cd0..b2675e590d 100644 --- a/spec/std/isa/csr/mcause.yaml +++ b/spec/std/isa/csr/mcause.yaml @@ -12,7 +12,9 @@ writable: true priv_mode: M length: MXLEN description: Reports the cause of the latest exception. -definedBy: Sm +definedBy: + extension: + name: Sm fields: INT: location_rv32: 31 diff --git a/spec/std/isa/csr/mconfigptr.yaml b/spec/std/isa/csr/mconfigptr.yaml index 041dfac3ae..955d0e2407 100644 --- a/spec/std/isa/csr/mconfigptr.yaml +++ b/spec/std/isa/csr/mconfigptr.yaml @@ -43,8 +43,9 @@ description: | priv_mode: M length: MXLEN definedBy: - name: Sm - version: ">=1.12" + extension: + name: Sm + version: ">=1.12" fields: ADDRESS: location_rv32: 31-0 diff --git a/spec/std/isa/csr/mcontext.yaml b/spec/std/isa/csr/mcontext.yaml index 08b371eae3..a301617a34 100644 --- a/spec/std/isa/csr/mcontext.yaml +++ b/spec/std/isa/csr/mcontext.yaml @@ -19,7 +19,9 @@ description: | given VM is executing. It is also useful in systems where M-Mode implements something like a hypervisor directly. -definedBy: Sdtrig +definedBy: + extension: + name: Sdtrig fields: HCONTEXT: location: 13-0 @@ -50,3 +52,4 @@ sw_read(): | if (!MCONTEXT_AVAILABLE) { unimplemented_csr($encoding); } + return $bits(CSR[mcontext]); diff --git a/spec/std/isa/csr/mcycle.yaml b/spec/std/isa/csr/mcycle.yaml index 16cef547e7..f68c454e60 100644 --- a/spec/std/isa/csr/mcycle.yaml +++ b/spec/std/isa/csr/mcycle.yaml @@ -7,7 +7,9 @@ $schema: "csr_schema.json#" kind: csr name: mcycle long_name: Machine Cycle Counter -definedBy: Zicntr +definedBy: + extension: + name: Zicntr address: 0xB00 writable: true description: | diff --git a/spec/std/isa/csr/mcycleh.yaml b/spec/std/isa/csr/mcycleh.yaml index 9505444373..3ff31328c8 100644 --- a/spec/std/isa/csr/mcycleh.yaml +++ b/spec/std/isa/csr/mcycleh.yaml @@ -7,7 +7,9 @@ $schema: "csr_schema.json#" kind: csr name: mcycleh long_name: High-half machine Cycle Counter -definedBy: Zicntr +definedBy: + extension: + name: Zicntr address: 0xB80 writable: true description: | diff --git a/spec/std/isa/csr/medeleg.yaml b/spec/std/isa/csr/medeleg.yaml index 9ade37f960..59425a323d 100644 --- a/spec/std/isa/csr/medeleg.yaml +++ b/spec/std/isa/csr/medeleg.yaml @@ -37,7 +37,9 @@ description: | Otherwise, an exception cause is handled by M-mode. See xref:prose:interrupts.adoc[interrupt documentation] for more details. -definedBy: S # medeleg does not exist when S-mode is not implemented +definedBy: # medeleg does not exist when S-mode is not implemented + extension: + name: S fields: IAM: location: 0 @@ -433,7 +435,9 @@ fields: !=== type: RW reset_value: UNDEFINED_LEGAL - definedBy: H + definedBy: + extension: + name: H EM: location: 11 description: | @@ -580,7 +584,9 @@ fields: !=== type: RW reset_value: UNDEFINED_LEGAL - definedBy: H + definedBy: + extension: + name: H LGPF: location: 21 description: | @@ -606,7 +612,9 @@ fields: type: RW reset_value: UNDEFINED_LEGAL - definedBy: H + definedBy: + extension: + name: H VI: location: 22 description: | @@ -632,7 +640,9 @@ fields: type: RW reset_value: UNDEFINED_LEGAL - definedBy: H + definedBy: + extension: + name: H SGPF: location: 23 description: | @@ -657,4 +667,6 @@ fields: !=== type: RW reset_value: UNDEFINED_LEGAL - definedBy: H + definedBy: + extension: + name: H diff --git a/spec/std/isa/csr/medelegh.yaml b/spec/std/isa/csr/medelegh.yaml index cb85bbd84f..cf5f32da5a 100644 --- a/spec/std/isa/csr/medelegh.yaml +++ b/spec/std/isa/csr/medelegh.yaml @@ -15,6 +15,7 @@ base: 32 description: | Alias of the upper 32 bits of `medeleg`. definedBy: - name: S - version: ">= 1.13" + extension: + name: S + version: ">= 1.13" fields: {} diff --git a/spec/std/isa/csr/menvcfg.yaml b/spec/std/isa/csr/menvcfg.yaml index 188ef1ed75..f3a118fd57 100644 --- a/spec/std/isa/csr/menvcfg.yaml +++ b/spec/std/isa/csr/menvcfg.yaml @@ -134,10 +134,11 @@ description: | priv_mode: M length: 64 definedBy: - allOf: - - name: Sm - version: ">=1.12" - - name: U + extension: + allOf: + - name: Sm + version: ">=1.12" + - name: U fields: STCE: location: 63 @@ -148,7 +149,9 @@ fields: When clear, `stimecmp` access in a mode other than M-mode raises an `Illegal Instruction` trap. S-mode timer interrupts will not be generated when clear, and `mip` and `sip` revert to their prior behavior without `Sstc`. - definedBy: Sstc + definedBy: + extension: + name: Sstc type: RW reset_value: UNDEFINED_LEGAL PBMTE: @@ -170,7 +173,9 @@ fields: _rs2_=_x0_ suffices to synchronize address-translation caches with respect to the altered interpretation of page-table entries' PBMT fields. - definedBy: Svpbmt + definedBy: + extension: + name: Svpbmt type: RW reset_value: UNDEFINED_LEGAL ADUE: @@ -192,7 +197,9 @@ fields: Furthermore, for implementations with the hypervisor extension, henvcfg.ADUE is read-only zero if menvcfg.ADUE is zero. - definedBy: Svadu + definedBy: + extension: + name: Svadu type(): | return (implemented?(ExtensionName::Svadu)) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | @@ -212,7 +219,9 @@ fields: * `0`: The instruction raises an illegal instruction or virtual instruction exception * `1`: The instruction is executed - definedBy: Zicboz + definedBy: + extension: + name: Zicboz type: RW reset_value: UNDEFINED_LEGAL CBCFE: @@ -231,7 +240,9 @@ fields: * `0`: The instruction raises an illegal instruction or virtual instruction exception * `1`: The instruction is executed - definedBy: Zicbom + definedBy: + extension: + name: Zicbom type: RW reset_value: UNDEFINED_LEGAL CBIE: @@ -250,7 +261,9 @@ fields: * `01`: The instruction is executed and performs a flush operation * `10`: _Reserved_ * `11`: The instruction is executed and performs an invalidate operation - definedBy: Zicbom + definedBy: + extension: + name: Zicbom type: RW-R sw_write(csr_value): | if ((csr_value.CBIE == 0) || diff --git a/spec/std/isa/csr/menvcfgh.yaml b/spec/std/isa/csr/menvcfgh.yaml index af6492ff47..ef558b5197 100644 --- a/spec/std/isa/csr/menvcfgh.yaml +++ b/spec/std/isa/csr/menvcfgh.yaml @@ -14,10 +14,11 @@ description: Contains bits to enable/disable extensions priv_mode: M length: 32 definedBy: - allOf: - - name: Sm - version: ">=1.12" - - name: U + extension: + allOf: + - name: Sm + version: ">=1.12" + - name: U fields: STCE: location: 31 @@ -26,7 +27,9 @@ fields: *STimecmp Enable* Alias of `menvcfg.STCE` - definedBy: Sstc + definedBy: + extension: + name: Sstc type: RW reset_value: UNDEFINED_LEGAL PBMTE: @@ -36,7 +39,9 @@ fields: *Page Based Memory Type Enable* Alias of `menvcfg.PBMTE` - definedBy: Svpbmt + definedBy: + extension: + name: Svpbmt type: RW reset_value: UNDEFINED_LEGAL ADUE: @@ -44,7 +49,9 @@ fields: alias: menvcfg.ADUE description: | Alias of `menvcfg.ADUE` - definedBy: Svadu + definedBy: + extension: + name: Svadu type(): | return (implemented?(ExtensionName::Svadu)) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | diff --git a/spec/std/isa/csr/mepc.yaml b/spec/std/isa/csr/mepc.yaml index 734eff8a2f..66ad532fcf 100644 --- a/spec/std/isa/csr/mepc.yaml +++ b/spec/std/isa/csr/mepc.yaml @@ -15,7 +15,9 @@ description: | Written with the PC of an instruction on an exception or interrupt taken in M-mode. Also controls where the hart jumps on an exception return from M-mode. -definedBy: Sm +definedBy: + extension: + name: Sm fields: PC: location_rv32: 31-0 diff --git a/spec/std/isa/csr/mhartid.yaml b/spec/std/isa/csr/mhartid.yaml index 1b46fa6869..3ae19881f0 100644 --- a/spec/std/isa/csr/mhartid.yaml +++ b/spec/std/isa/csr/mhartid.yaml @@ -12,7 +12,9 @@ writable: false priv_mode: M length: MXLEN description: Reports the unique hart-specific ID in the system. -definedBy: Sm +definedBy: + extension: + name: Sm fields: ID: location_rv32: 31-0 diff --git a/spec/std/isa/csr/mideleg.yaml b/spec/std/isa/csr/mideleg.yaml index 14b3d3be3c..2844eaf2ca 100644 --- a/spec/std/isa/csr/mideleg.yaml +++ b/spec/std/isa/csr/mideleg.yaml @@ -15,14 +15,15 @@ definedBy: # "In harts without S-mode, the medeleg and mideleg registers should not exist." -- priv # after 1.9.1, mideleg does not exist when S-mode is not implemented # we can represent that by making mideleg an S extension CSR post 1.9.1 - oneOf: - - name: Sm - version: "<= 1.9.1" - - allOf: - - name: S - version: "> 1.9.1" - - name: Sm - version: "> 1.9.1" + extension: + anyOf: + - name: Sm + version: "<= 1.9.1" + - allOf: + - name: S + version: "> 1.9.1" + - name: Sm + version: "> 1.9.1" description: | Controls exception delegation from M-mode to HS/S-mode @@ -112,7 +113,9 @@ fields: Virtual Supervisor Software Interrupts are always delegated to HS-mode, so this field is read-only one. type: RO reset_value: 1 - definedBy: H + definedBy: + extension: + name: H MSI: location: 3 description: | @@ -139,7 +142,9 @@ fields: Virtual Supervisor Time Interrupts are always delegated to HS-mode, so this field is read-only one. type: RO reset_value: 1 - definedBy: H + definedBy: + extension: + name: H MTI: location: 7 description: | @@ -164,7 +169,9 @@ fields: Virtual Supervisor External Interrupts are always delegated to HS-mode, so this field is read-only one. type: RO reset_value: 1 - definedBy: H + definedBy: + extension: + name: H MEI: location: 11 description: | @@ -181,7 +188,9 @@ fields: Supervisor Guest External interrupts are always delegated to HS-mode, so this field is read-only one. type: RO reset_value: 1 - definedBy: H + definedBy: + extension: + name: H LCOFI: location: 13 description: | @@ -190,4 +199,6 @@ fields: When 1, local counter overflow interrupts are delegated to (H)S-mode. type: RW reset_value: 0 - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf diff --git a/spec/std/isa/csr/mie.yaml b/spec/std/isa/csr/mie.yaml index 0fc9e0a06e..f2924a32bf 100644 --- a/spec/std/isa/csr/mie.yaml +++ b/spec/std/isa/csr/mie.yaml @@ -11,7 +11,9 @@ address: 0x304 writable: true priv_mode: M length: MXLEN -definedBy: Sm +definedBy: + extension: + name: Sm description: "mip.yaml#/description" fields: SSIE: @@ -23,7 +25,9 @@ fields: Alias of `sie.SSIE` when `mideleg.SSI` is set. Otherwise, `sie.SSIE` is read-only 0. type: RW - definedBy: S + definedBy: + extension: + name: S reset_value: 0 VSSIE: location: 2 @@ -41,7 +45,9 @@ fields: Alias of `sie.SSIE` when `hideleg.VSSI` is set and the current mode is VS or VU (Because `mie` is inaccessible in VS or VU mode, this alias can never be observed by software). type: RW - definedBy: H + definedBy: + extension: + name: H reset_value: 0 MSIE: location: 3 @@ -56,7 +62,9 @@ fields: Alias of `sip.STIE` when `mideleg.STI` is set. Otherwise, `sip.STIE` is read-only 0. type: RW - definedBy: S + definedBy: + extension: + name: S reset_value: 0 VSTIE: location: 6 @@ -74,7 +82,9 @@ fields: Alias of `sie.STIE` when `hideleg.VSTI` is set and the current mode is VS or VU (Because `mie` is inaccessible in VS or VU mode, this alias can never be observed by software). type: RW - definedBy: H + definedBy: + extension: + name: H reset_value: 0 MTIE: location: 7 @@ -89,7 +99,9 @@ fields: Alias of `sie.SEIE` when `mideleg.SEI` is set. Otherwise, `sie.SEIE` is read-only 0. type: RW - definedBy: S + definedBy: + extension: + name: S reset_value: 0 VSEIE: location: 10 @@ -107,7 +119,9 @@ fields: Alias of `sie.SEIE` when `hideleg.VSEI` is set and the current mode is VS or VU (Because `mie` is inaccessible in VS or VU mode, this alias can never be observed by software). type: RW - definedBy: H + definedBy: + extension: + name: H reset_value: 0 MEIE: location: 11 @@ -122,7 +136,9 @@ fields: Alias of `hie.SGEIE`. type: RW - definedBy: H + definedBy: + extension: + name: H reset_value: 0 LCOFIE: location: 13 @@ -136,5 +152,7 @@ fields: Alias of `vsip.LCOFIE` when `hideleg.LCOFI` is set. Otherwise, `vsip.LCOFIE` is read-only 0. type: RW - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf reset_value: 0 diff --git a/spec/std/isa/csr/mimpid.yaml b/spec/std/isa/csr/mimpid.yaml index 9656f609cf..4231014a70 100644 --- a/spec/std/isa/csr/mimpid.yaml +++ b/spec/std/isa/csr/mimpid.yaml @@ -29,11 +29,13 @@ description: | most-significant nibble down) with subfields aligned on nibble boundaries to ease human readability. ==== -definedBy: Sm +definedBy: + extension: + name: Sm fields: Implementation: location_rv32: 31-0 location_rv64: 63-0 type: RO description: Vendor-specific implementation ID. - reset_value(): return IMP_ID; + reset_value(): return IMP_ID_VALUE; diff --git a/spec/std/isa/csr/minstret.yaml b/spec/std/isa/csr/minstret.yaml index b01c724eeb..37039b065c 100644 --- a/spec/std/isa/csr/minstret.yaml +++ b/spec/std/isa/csr/minstret.yaml @@ -49,4 +49,6 @@ fields: does not retire and does not cause `minstret.COUNT` to increment. reset_value: UNDEFINED_LEGAL affectedBy: [Zicntr, Smcntrpmf, Smcdeleg, Ssccfg] -definedBy: Zicntr +definedBy: + extension: + name: Zicntr diff --git a/spec/std/isa/csr/minstreth.yaml b/spec/std/isa/csr/minstreth.yaml index e41608152a..4188ea2b43 100644 --- a/spec/std/isa/csr/minstreth.yaml +++ b/spec/std/isa/csr/minstreth.yaml @@ -31,6 +31,8 @@ fields: sw_write(csr_value): | CSR[mcycle].COUNT = {csr_value.COUNT[31:0], CSR[minstret].COUNT[31:0]}; return csr_value.COUNT; -definedBy: Zicntr +definedBy: + extension: + name: Zicntr sw_read(): | return CSR[minstret].COUNT[63:32]; diff --git a/spec/std/isa/csr/mip.yaml b/spec/std/isa/csr/mip.yaml index 189426667c..c259616131 100644 --- a/spec/std/isa/csr/mip.yaml +++ b/spec/std/isa/csr/mip.yaml @@ -158,7 +158,9 @@ description: | in the `sip` register and is maskable using the `sie` register. Otherwise, the corresponding bits in `sip` and `sie` are read-only zero. length: MXLEN -definedBy: Sm +definedBy: + extension: + name: Sm fields: SSIP: location: 1 @@ -185,7 +187,9 @@ fields: <%- end -%> type: RW reset_value: 0 - definedBy: S + definedBy: + extension: + name: S affectedBy: Smaia VSSIP: location: 2 @@ -212,7 +216,9 @@ fields: * `vsip.SSIP` when `hideleg.VSSI` is set type: RW reset_value: 0 - definedBy: H + definedBy: + extension: + name: H affectedBy: Smaia MSIP: location: 3 @@ -257,7 +263,9 @@ fields: type: RW reset_value: 0 - definedBy: S + definedBy: + extension: + name: S affectedBy: Sstc VSTIP: location: 6 @@ -292,7 +300,9 @@ fields: * `hvip.VSTIP` <% if ext?(:Sstc) %>when `menvcfg.STCE` is clear<% end %> (though `hvip.VSTIP` is writable) type: RO-H reset_value: 0 - definedBy: H + definedBy: + extension: + name: H affectedBy: Sstc MTIP: location: 7 @@ -325,7 +335,9 @@ fields: * `sip.SEIP` when `mideleg.SEI` is set (though `sip.SEIP` is read-only) type: RW-H - definedBy: S + definedBy: + extension: + name: S affectedBy: Smaia reset_value: 0 VSEIP: @@ -353,7 +365,9 @@ fields: * `vsip.SEIP` when `hideleg.VSEI` is set type: RO-H reset_value: 0 - definedBy: H + definedBy: + extension: + name: H affectedBy: Smaia MEIP: location: 11 @@ -380,7 +394,9 @@ fields: * `hip.SGEIP` type: RO-H reset_value: 0 - definedBy: H + definedBy: + extension: + name: H LCOFIP: location: 13 alias: @@ -406,7 +422,9 @@ fields: <%- end -%> type: RW-H reset_value: 0 - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf sw_read(): | # OR in the hidden smode external interrupt return diff --git a/spec/std/isa/csr/misa.yaml b/spec/std/isa/csr/misa.yaml index c7a18ba819..25971eef66 100644 --- a/spec/std/isa/csr/misa.yaml +++ b/spec/std/isa/csr/misa.yaml @@ -12,7 +12,9 @@ writable: true priv_mode: M length: MXLEN description: Reports the XLEN and "major" extensions supported by the ISA. -definedBy: Sm +definedBy: + extension: + name: Sm fields: MXL: location_rv32: 31-30 @@ -32,7 +34,9 @@ fields: return (implemented?(ExtensionName::A) && MUTABLE_MISA_A) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | return implemented?(ExtensionName::A) ? 1 : 0; - definedBy: A + definedBy: + extension: + name: A B: location: 1 description: | @@ -44,7 +48,9 @@ fields: return (implemented?(ExtensionName::B) && MUTABLE_MISA_B) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | return implemented?(ExtensionName::B) ? 1 : 0; - definedBy: B + definedBy: + extension: + name: B C: location: 2 description: | @@ -57,7 +63,9 @@ fields: return (implemented?(ExtensionName::C) && MUTABLE_MISA_C) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | return implemented?(ExtensionName::C) ? 1 : 0; - definedBy: C + definedBy: + extension: + name: C D: location: 3 description: | @@ -73,7 +81,9 @@ fields: return (implemented?(ExtensionName::D) && MUTABLE_MISA_D) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | return implemented?(ExtensionName::D) ? 1 : 0; - definedBy: D + definedBy: + extension: + name: D F: location: 5 description: | @@ -89,7 +99,9 @@ fields: return (implemented?(ExtensionName::F) && MUTABLE_MISA_F) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | return implemented?(ExtensionName::F) ? 1 : 0; - definedBy: F + definedBy: + extension: + name: F sw_write(csr_value): | if (csr_value.F == 0 && csr_value.D == 1) { return UNDEFINED_LEGAL_DETERMINISTIC; @@ -127,7 +139,9 @@ fields: Writing 0 to this field will cause all attempts to enter VS- or VU- mode, execute a hypervisor instruction, or access a hypervisor CSR to raise an `IllegalInstruction` fault. type(): | return (implemented?(ExtensionName::H) && MUTABLE_MISA_H) ? CsrFieldType::RW : CsrFieldType::RO; - definedBy: H + definedBy: + extension: + name: H reset_value(): | return implemented?(ExtensionName::H) ? 1 : 0; I: @@ -135,7 +149,9 @@ fields: description: | Indicates support for the `I` (base) extension. type: RO - definedBy: I + definedBy: + extension: + name: I reset_value: 1 M: location: 12 @@ -148,7 +164,9 @@ fields: return (implemented?(ExtensionName::M) && MUTABLE_MISA_M) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | return implemented?(ExtensionName::M) ? 1 : 0; - definedBy: M + definedBy: + extension: + name: M cert_normative_rules: - id: csr_field.misa.M.disabled name: Disabling `misa.M` bit @@ -184,7 +202,9 @@ fields: type(): | return MUTABLE_MISA_Q ? CsrFieldType::RW : CsrFieldType::RO; reset_value: 1 - definedBy: Q + definedBy: + extension: + name: Q sw_write(csr_value): | if ((csr_value.F == 0 || csr_value.D == 0) && csr_value.Q == 1) { return UNDEFINED_LEGAL_DETERMINISTIC; @@ -205,7 +225,9 @@ fields: return (implemented?(ExtensionName::S) && MUTABLE_MISA_S) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | return implemented?(ExtensionName::S) ? 1 : 0; - definedBy: S + definedBy: + extension: + name: S U: location: 20 description: | @@ -217,7 +239,9 @@ fields: return (implemented?(ExtensionName::U) && MUTABLE_MISA_U) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | return implemented?(ExtensionName::U) ? 1 : 0; - definedBy: U + definedBy: + extension: + name: U V: location: 21 description: | @@ -229,7 +253,9 @@ fields: return (implemented?(ExtensionName::V) && MUTABLE_MISA_V) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | return implemented?(ExtensionName::V) ? 1 : 0; - definedBy: V + definedBy: + extension: + name: V sw_read(): | return ( (CSR[misa].MXL << (xlen() - 2)) | diff --git a/spec/std/isa/csr/mscontext.yaml b/spec/std/isa/csr/mscontext.yaml index e3ef258399..7bf29fbd1e 100644 --- a/spec/std/isa/csr/mscontext.yaml +++ b/spec/std/isa/csr/mscontext.yaml @@ -22,9 +22,10 @@ description: | debuggers will not use this CSR if `scontext` is available. definedBy: - allOf: - - Sdtrig - - S + extension: + allOf: + - name: Sdtrig + - name: S fields: DATA: location_rv32: 31-0 diff --git a/spec/std/isa/csr/mscratch.yaml b/spec/std/isa/csr/mscratch.yaml index d09c622f19..56c20d0b67 100644 --- a/spec/std/isa/csr/mscratch.yaml +++ b/spec/std/isa/csr/mscratch.yaml @@ -12,7 +12,9 @@ writable: true priv_mode: M length: MXLEN description: Scratch register for software use. Bits are not interpreted by hardware. -definedBy: Sm +definedBy: + extension: + name: Sm fields: SCRATCH: location_rv32: 31-0 diff --git a/spec/std/isa/csr/mseccfg.yaml b/spec/std/isa/csr/mseccfg.yaml index 0329d08a12..c7af4e1593 100644 --- a/spec/std/isa/csr/mseccfg.yaml +++ b/spec/std/isa/csr/mseccfg.yaml @@ -13,6 +13,7 @@ priv_mode: M length: 64 description: Machine Security Configuration definedBy: - name: Sm - version: ">= 1.12" + extension: + name: Sm + version: ">= 1.12" fields: {} diff --git a/spec/std/isa/csr/mseccfgh.yaml b/spec/std/isa/csr/mseccfgh.yaml index 63daf6f407..7682caf4b2 100644 --- a/spec/std/isa/csr/mseccfgh.yaml +++ b/spec/std/isa/csr/mseccfgh.yaml @@ -14,6 +14,7 @@ priv_mode: M length: 32 description: Machine Security Configuration definedBy: - name: Sm - version: ">= 1.12" + extension: + name: Sm + version: ">= 1.12" fields: {} diff --git a/spec/std/isa/csr/mstateen0.yaml b/spec/std/isa/csr/mstateen0.yaml index e9fe5ba3df..1c79616b11 100644 --- a/spec/std/isa/csr/mstateen0.yaml +++ b/spec/std/isa/csr/mstateen0.yaml @@ -67,7 +67,9 @@ description: the same bit is read-only one in the matching `mstateen` CSR. Bit 63 of each `mstateen` CSR may be read-only zero only if the hypervisor extension is not implemented and the matching supervisor-level `sstateen` CSR is all read-only zeros. -definedBy: Smstateen +definedBy: + extension: + name: Smstateen fields: SE0: long_name: hstateen0, hstateen0h, and sstateen0 access control @@ -80,8 +82,9 @@ fields: long_name: henvcfg, henvcfgh, and senvcfg access control location: 62 definedBy: - name: S - version: ">= 1.11" + extension: + name: S + version: ">= 1.11" description: | The ENVCFG bit in `mstateen0` controls access to the `henvcfg`, `henvcfgh`, and the `senvcfg` CSRs. type: RW @@ -89,7 +92,9 @@ fields: CSRIND: long_name: siselect, sireg*, vsiselect, and vsireg* access control location: 60 - definedBy: Sscsrind + definedBy: + extension: + name: Sscsrind description: | The CSRIND bit in `mstateen0` controls access to the `siselect`, `sireg*`, `vsiselect`, and the `vsireg*` CSRs provided by the Sscsrind extensions. @@ -98,7 +103,9 @@ fields: AIA: long_name: Ssaia state access control location: 59 - definedBy: Ssaia + definedBy: + extension: + name: Ssaia description: | The AIA bit in `mstateen0` controls access to all state introduced by the Ssaia extension and is not controlled by either the CSRIND or the IMSIC bits. @@ -107,7 +114,9 @@ fields: IMSIC: long_name: IMSIC state access control location: 58 - definedBy: Ssaia + definedBy: + extension: + name: Ssaia description: | The IMSIC bit in `mstateen0` controls access to the IMSIC state, including CSRs `stopei` and `vstopei`, provided by the Ssaia extension. @@ -116,7 +125,9 @@ fields: CONTEXT: long_name: scontext and hcontext access control location: 57 - definedBy: Sdtrig + definedBy: + extension: + name: Sdtrig description: | The CONTEXT bit in `mstateen0` controls access to the `scontext` and `hcontext` CSRs provided by the Sdtrig extension. @@ -133,7 +144,9 @@ fields: SRMCFG: long_name: srmcfg access control location: 55 - definedBy: Ssqosid + definedBy: + extension: + name: Ssqosid description: | The SRMCFG bit in `mstateen0` controls access to the `srmcfg`` CSR introduced by the Ssqosid Chapter 18 extension. @@ -150,7 +163,9 @@ fields: JVT: long_name: jvt access control location: 2 - definedBy: Zcmt + definedBy: + extension: + name: Zcmt description: | The JVT bit controls access to the `jvt` CSR provided by the Zcmt extension. type: RW diff --git a/spec/std/isa/csr/mstateen0h.yaml b/spec/std/isa/csr/mstateen0h.yaml index 1906a7f5c8..61649a6a73 100644 --- a/spec/std/isa/csr/mstateen0h.yaml +++ b/spec/std/isa/csr/mstateen0h.yaml @@ -21,7 +21,9 @@ description: machine-level CSRs there is a corresponding set of high-half CSRs for the upper 32 bits of each register: `mstateen0h`, `mstateen1h`, `mstateen2h`, `mstateen3h`. -definedBy: Smstateen +definedBy: + extension: + name: Smstateen fields: SE0: long_name: hstateen0, hstateen0h, and sstateen0 access control @@ -38,8 +40,9 @@ fields: long_name: henvcfg, henvcfgh, and senvcfg access control location: 30 definedBy: - name: S - version: ">= 1.11" + extension: + name: S + version: ">= 1.11" alias: mstateen0.ENVCFG sw_write(csr_value): | CSR[mstateen0].ENVCFG = csr_value.ENVCFG; @@ -51,7 +54,9 @@ fields: CSRIND: long_name: siselect, sireg*, vsiselect, and vsireg* access control location: 28 - definedBy: Sscsrind + definedBy: + extension: + name: Sscsrind alias: mstateen0.CSRIND sw_write(csr_value): | CSR[mstateen0].CSRIND = csr_value.CSRIND; @@ -64,7 +69,9 @@ fields: AIA: long_name: Ssaia state access control location: 27 - definedBy: Ssaia + definedBy: + extension: + name: Ssaia alias: mstateen0.AIA sw_write(csr_value): | CSR[mstateen0].AIA = csr_value.AIA; @@ -77,7 +84,9 @@ fields: IMSIC: long_name: IMSIC state access control location: 26 - definedBy: Ssaia + definedBy: + extension: + name: Ssaia alias: mstateen0.IMSIC sw_write(csr_value): | CSR[mstateen0].IMSIC = csr_value.IMSIC; @@ -90,7 +99,9 @@ fields: CONTEXT: long_name: scontext and hcontext access control location: 25 - definedBy: Sdtrig + definedBy: + extension: + name: Sdtrig alias: mstateen0.CONTEXT sw_write(csr_value): | CSR[mstateen0].CONTEXT = csr_value.CONTEXT; @@ -115,7 +126,9 @@ fields: SRMCFG: long_name: srmcfg access control location: 23 - definedBy: Ssqosid + definedBy: + extension: + name: Ssqosid alias: mstateen0.SRMCFG sw_write(csr_value): | CSR[mstateen0].SRMCFG = csr_value.SRMCFG; diff --git a/spec/std/isa/csr/mstateen1.yaml b/spec/std/isa/csr/mstateen1.yaml index e83dfc9198..e62e5f561a 100644 --- a/spec/std/isa/csr/mstateen1.yaml +++ b/spec/std/isa/csr/mstateen1.yaml @@ -67,7 +67,9 @@ description: the same bit is read-only one in the matching `mstateen` CSR. Bit 63 of each `mstateen` CSR may be read-only zero only if the hypervisor extension is not implemented and the matching supervisor-level `sstateen` CSR is all read-only zeros. -definedBy: Smstateen +definedBy: + extension: + name: Smstateen fields: SE0: long_name: hstateen1, hstateen1h, and sstateen1 access control diff --git a/spec/std/isa/csr/mstateen1h.yaml b/spec/std/isa/csr/mstateen1h.yaml index ee82fcd9c4..a75f91c21c 100644 --- a/spec/std/isa/csr/mstateen1h.yaml +++ b/spec/std/isa/csr/mstateen1h.yaml @@ -21,7 +21,9 @@ description: machine-level CSRs there is a corresponding set of high-half CSRs for the upper 32 bits of each register: `mstateen0h`, `mstateen1h`, `mstateen2h`, `mstateen3h`. -definedBy: Smstateen +definedBy: + extension: + name: Smstateen fields: SE0: long_name: hstateen1, hstateen1h, and sstateen1 access control diff --git a/spec/std/isa/csr/mstateen2.yaml b/spec/std/isa/csr/mstateen2.yaml index 4f34a31c40..9188664858 100644 --- a/spec/std/isa/csr/mstateen2.yaml +++ b/spec/std/isa/csr/mstateen2.yaml @@ -67,7 +67,9 @@ description: the same bit is read-only one in the matching `mstateen` CSR. Bit 63 of each `mstateen` CSR may be read-only zero only if the hypervisor extension is not implemented and the matching supervisor-level `sstateen` CSR is all read-only zeros. -definedBy: Smstateen +definedBy: + extension: + name: Smstateen fields: SE0: long_name: hstateen2, hstateen2h, and sstateen2 access control diff --git a/spec/std/isa/csr/mstateen2h.yaml b/spec/std/isa/csr/mstateen2h.yaml index 906434ff00..7c8c588faf 100644 --- a/spec/std/isa/csr/mstateen2h.yaml +++ b/spec/std/isa/csr/mstateen2h.yaml @@ -21,7 +21,9 @@ description: machine-level CSRs there is a corresponding set of high-half CSRs for the upper 32 bits of each register: `mstateen0h`, `mstateen1h`, `mstateen2h`, `mstateen3h`. -definedBy: Smstateen +definedBy: + extension: + name: Smstateen fields: SE0: long_name: hstateen2, hstateen2h, and sstateen2 access control diff --git a/spec/std/isa/csr/mstateen3.yaml b/spec/std/isa/csr/mstateen3.yaml index 824b9c517a..d9f3e8422d 100644 --- a/spec/std/isa/csr/mstateen3.yaml +++ b/spec/std/isa/csr/mstateen3.yaml @@ -67,7 +67,9 @@ description: the same bit is read-only one in the matching `mstateen` CSR. Bit 63 of each `mstateen` CSR may be read-only zero only if the hypervisor extension is not implemented and the matching supervisor-level `sstateen` CSR is all read-only zeros. -definedBy: Smstateen +definedBy: + extension: + name: Smstateen fields: SE0: long_name: hstateen3, hstateen3h, and sstateen3 access control diff --git a/spec/std/isa/csr/mstateen3h.yaml b/spec/std/isa/csr/mstateen3h.yaml index 13c5bfa087..571d4c166d 100644 --- a/spec/std/isa/csr/mstateen3h.yaml +++ b/spec/std/isa/csr/mstateen3h.yaml @@ -21,7 +21,9 @@ description: machine-level CSRs there is a corresponding set of high-half CSRs for the upper 32 bits of each register: `mstateen0h`, `mstateen1h`, `mstateen2h`, `mstateen3h`. -definedBy: Smstateen +definedBy: + extension: + name: Smstateen fields: SE0: long_name: hstateen3, hstateen3h, and sstateen3 access control diff --git a/spec/std/isa/csr/mstatus.yaml b/spec/std/isa/csr/mstatus.yaml index 877d646e0a..25da562c22 100644 --- a/spec/std/isa/csr/mstatus.yaml +++ b/spec/std/isa/csr/mstatus.yaml @@ -19,18 +19,23 @@ length: MXLEN description: The mstatus register tracks and controls the hart's current operating state. -definedBy: Sm +definedBy: + extension: + name: Sm fields: SD: location_rv32: 31 location_rv64: 63 + long_name: State Dirty description: | - State Dirty. - Read-only bit that summarizes whether either the FS, XS, or VS fields signal the presence of some dirty state. definedBy: - anyOf: [F, V] # NOTE: if you implement a custom extension overlay that writes to XS, then you need to add your extension here in the overlay as well + extension: + anyOf: + - name: F + - name: V + # NOTE: if you implement a custom extension overlay that writes to XS, then you need to add your extension here in the overlay as well type(): | # this is read-only if FS and VS are both read-only # otherwise, it is read-only with hardware update @@ -55,45 +60,47 @@ fields: MDT: location: 42 base: 64 + long_name: Machine Disable Trap description: | - *Machine Disable Trap* - Written to 1 when entering M-mode from an exception/interrupt. When returning via an MRET instruction, the bit is written to 0. On reset in set to 1, and software should write it to 0 when boot sequence is done. When mstatus.MDT=1, direct write by CSR instruction cannot set mstatus.MIE to 1, if not written together. - definedBy: Smdbltrp + definedBy: + extension: + name: Smdbltrp type: RW-H reset_value: UNDEFINED_LEGAL MPV: location: 39 base: 64 + long_name: Machine Previous Virtualization mode description: | - *Machine Previous Virtualization mode* - Written with the prior virtualization mode when entering M-mode from an exception/interrupt. When returning via an MRET instruction, the virtualization mode becomes the value of MPV unless MPP=3, in which case the virtualization mode is always 0. Can also be written by software. type: RW-H reset_value: UNDEFINED_LEGAL - definedBy: H + definedBy: + extension: + name: H GVA: location: 38 base: 64 + long_name: Guest Virtual Address description: | - *Guest Virtual Address* - When a trap is taken and a guest virtual address is written into mtval, GVA is set. When a trap is taken and a guest virtual address is written into mtval, GVA is cleared. type: RW-H reset_value: 0 - definedBy: H + definedBy: + extension: + name: H MBE: location: 37 base: 64 + long_name: M-mode Big Endian description: | - *M-mode Big Endian* - Controls the endianness of data M-mode (0 = little, 1 = big). Instructions are always little endian, regardless of the data setting. @@ -112,10 +119,11 @@ fields: SBE: location: 36 base: 64 - definedBy: S + definedBy: + extension: + name: S + long_name: S-mode Big Endian description: | - *S-mode Big Endian* - Controls the endianness of S-mode (0 = little, 1 = big). Instructions are always little endian, regardless of the data setting. @@ -127,22 +135,22 @@ fields: type(): | return (S_MODE_ENDIANNESS == "dynamic") ? CsrFieldType::RW : CsrFieldType::RO; - # if endianness is mutable, MBE comes out of reset in little-endian mode reset_value(): | if (S_MODE_ENDIANNESS == "little") { return 0; } else if (S_MODE_ENDIANNESS == "big") { return 1; } else { - return UNDEFINED_LEGAL; + return 0; # little endian } SXL: location: 35-34 base: 64 - definedBy: S + definedBy: + extension: + name: S + long_name: S-mode XLEN description: | - *S-mode XLEN* - Sets the effective XLEN for S-mode (0 = 32-bit, 1 = 64-bit, 2 = 128-bit [reserved]). [when,"SXLEN==32"] @@ -160,19 +168,7 @@ fields: It is UNDEFINED_LEGAL to set the MSB of SXL. -- type(): | - return (implemented?(ExtensionName::S) && SXLEN == 3264) ? CsrFieldType::RW : CsrFieldType::RO; - - legal?(csr_value): | - if (SXLEN == 32) { - # SXLEN == 32 is encoded as 0 - return csr_value.SXL == 0; - } else if (SXLEN == 64) { - # SXLEN == 64 is encoded as 1 - return csr_value.SXL == 1; - } else { - # SXLEN could be 32 or 64 - return csr_value.SXL <= 1; - } + return (implemented?(ExtensionName::S) && $array_size(SXLEN) > 1) ? CsrFieldType::RW : CsrFieldType::RO; sw_write(csr_value): | if (csr_value.SXL < csr_value.UXL) { @@ -188,7 +184,10 @@ fields: UXL: location: 33-32 base: 64 - definedBy: U + definedBy: + extension: + name: U + long_name: U-mode XLEN description: | U-mode XLEN. @@ -210,7 +209,7 @@ fields: It is UNDEFINED_LEGAL to set the MSB of UXL. -- type(): | - return (UXLEN == 3264) ? CsrFieldType::RW : CsrFieldType::RO; + return ($array_size(UXLEN) > 1) ? CsrFieldType::RW : CsrFieldType::RO; sw_write(csr_value): | if (csr_value.SXL < csr_value.UXL) { @@ -222,19 +221,10 @@ fields: return csr_value.UXL; } - legal?(csr_value): | - if (UXLEN == 32) { - return csr_value.UXL == 0; - } else if (UXLEN == 64) { - return csr_value.UXL == 1; - } else { - return csr_value.UXL <= 1; - } - reset_value(): | - if (UXLEN == 32) { + if ($array_size(UXLEN) == 1 && UXLEN[0] == 32) { return 0; - } else if (UXLEN == 64) { + } else if ($array_size(UXLEN) == 1 && UXLEN[0] == 64) { return 1; } else { return UNDEFINED_LEGAL; @@ -242,35 +232,36 @@ fields: TSR: location: 22 + long_name: Trap SRET description: | - *Trap SRET* - When 1, attempts to execute the `sret` instruction while executing in HS/S-mode will raise an Illegal Instruction exception. [when,"ext?(:H)"] Does not affect the behavior of `sret` in VS_mode (see `hstatus.VTSR`). type: RW - definedBy: S + definedBy: + extension: + name: S reset_value: UNDEFINED_LEGAL TW: location: 21 + long_name: Timeout Wait description: | - *Timeout Wait* - When 1, the WFI instruction will raise an Illegal Instruction trap after an implementaion-defined wait period when executed in a mode other than M-mode. When 0, the `wfi` instruction is permitted to wait forever in (H)S-mode but must trap after an implementation-defined wait period in U-mode. type: RW - definedBy: S + definedBy: + extension: + name: S reset_value: UNDEFINED_LEGAL TVM: location: 20 + long_name: Trap Virtual Memory description: | - Trap Virtual Memory. - When 1, an `Illegal Instruction` trap occurs when * writing the `satp` CSR, executing an `sfence.vma`, or executing an `sinval.vma` while in (H)S-mode (but not VS-mode) @@ -287,7 +278,9 @@ fields: } else { return CsrFieldType::RW; } - definedBy: S + definedBy: + extension: + name: S reset_value(): | if (CSR[misa].S == 1'b0) { return 0; @@ -306,22 +299,24 @@ fields: } MXR: location: 19 + long_name: Make eXecutable Readable description: | - Make eXecutable Readable. - When 1, loads from pages marked readable *or executable* are allowed. When 0, loads from pages marked executable raise a Page Fault exception. - definedBy: S + definedBy: + extension: + name: S type: RW reset_value: UNDEFINED_LEGAL SUM: location: 18 + long_name: permit Supervisor Memory Access description: | - permit Supervisor Memory Access. - When 0, an S-mode read or an M-mode read with mstatus.MPRV=1 and mstatus.MPP=01 to a 'U' (user) page will cause an ILLEGAL INSTRUCTION exception. - definedBy: S + definedBy: + extension: + name: S type(): | # only writable if there is some translation supported if (has_virt_mem?()) { @@ -338,22 +333,22 @@ fields: } MPRV: location: 17 + long_name: Modify PRiVilege description: | - Modify PRiVilege. - When 1, loads and stores behave as if the current virtualization mode:privilege level was `mstatus.MPV`:`mstatus.MPP`. `mstatus.MPRV` is cleared on any exception return (`mret` or `sret` instruction, regardless of the trap handler privilege mode). - definedBy: U + definedBy: + extension: + name: U type(): | return (CSR[misa].U == 1'b1) ? CsrFieldType::RWH : CsrFieldType::RO; reset_value: 0 XS: location: 16-15 + long_name: custom (X) extension context Status description: | - *Custom (X) extension context Status* - Summarizes the current state of any custom extension state. Either 0 - Off, 1 - Initial, 2 - Clean, 3 - Dirty. Since there are no custom extensions in the base spec, this field is read-only 0. @@ -361,51 +356,42 @@ fields: reset_value: 0 FS: location: 14-13 + long_name: Floating point context Status description: | - Floating point context status. - When 0, floating point instructions (from F and D extensions) are disabled, and cause `ILLEGAL INSTRUCTION` exceptions. When a floating point register, or the fCSR register is written, FS obtains the value 3. Values 1 and 2 are valid write values for software, but are not interpreted by hardware other than to possibly enable a previously-disabled floating point unit. type(): | - if (CSR[misa].F == 1'b1){ + if (implemented?(ExtensionName::F) && (!MISA_CSR_IMPLEMENTED || CSR[misa].F == 1'b1)) { + # "If the F extension is implemented, the FS field shall not be read-only zero." return CsrFieldType::RWH; - } else if ((CSR[misa].S == 1'b0) && (CSR[misa].F == 1'b0)) { - # must be read-only-0 + } else if (MISA_CSR_IMPLEMENTED && (CSR[misa].S == 1'b0) && (CSR[misa].F == 1'b0)) { + # "If neither the F extension nor S-mode is implemented, then FS is read-only zero" return CsrFieldType::RO; } else { + # " If S-mode is implemented but the F extension is not, FS may optionally be read-only zero." # there will be no hardware update in this case because we know the F extension isn't implemented - return MSTATUS_FS_WRITABLE ? CsrFieldType::RW : CsrFieldType::RO; + return $array_size(MSTATUS_FS_LEGAL_VALUES) == 1 ? CsrFieldType::RO : CsrFieldType::RW; } definedBy: - anyOf: [F, S] + extension: + anyOf: + - name: F + - name: S reset_value(): | - if (CSR[misa].F == 1'b1){ - return UNDEFINED_LEGAL; - } else if ((CSR[misa].S == 1'b0) && (CSR[misa].F == 1'b0)) { - # must be read-only-0 - return 0; - } else { - # there will be no hardware update in this case because we know the F extension isn't implemented - return MSTATUS_FS_WRITABLE ? UNDEFINED_LEGAL : 0; - } + return $array_size(MSTATUS_FS_LEGAL_VALUES) == 1 ? MSTATUS_FS_LEGAL_VALUES[0] : UNDEFINED_LEGAL; sw_write(csr_value): | - if (CSR[misa].F == 1'b1){ - return ary_includes?<$array_size(MSTATUS_FS_LEGAL_VALUES), 2>(MSTATUS_FS_LEGAL_VALUES, csr_value.FS) ? csr_value.FS : UNDEFINED_LEGAL_DETERMINISTIC; - } else if ((CSR[misa].S == 1'b0) && (CSR[misa].F == 1'b0)) { + if (MISA_CSR_IMPLEMENTED && (CSR[misa].S == 1'b0) && (CSR[misa].F == 1'b0)) { # must be read-only-0 return 0; - } else { - # there will be no hardware update in this case because we know the F extension isn't implemented - return ary_includes?<$array_size(MSTATUS_FS_LEGAL_VALUES), 2>(MSTATUS_FS_LEGAL_VALUES, csr_value.FS) ? csr_value.FS : UNDEFINED_LEGAL_DETERMINISTIC; } + return $array_includes?(MSTATUS_FS_LEGAL_VALUES, csr_value.FS) ? csr_value.FS : UNDEFINED_LEGAL_DETERMINISTIC; MPP: location: 12-11 + long_name: M-mode Previous Privilege description: | - M-mode Previous Privilege. - Written by hardware in two cases: * Written with the prior nominal privilege level when entering M-mode from an exception/interrupt. @@ -445,24 +431,28 @@ fields: } VS: location: 10-9 + long_name: Vector context Status description: | - Vector context status. - When 0, vector instructions (from the V extension) are disabled, and cause ILLEGAL INSTRUCTION exceptions. When a vector register or vector CSR is written, VS obtains the value 3. Values 1 and 2 are valid write values for software, but are not interpreted by hardware other than to possibly enable a previously-disabled vector unit. definedBy: - anyOf: [V, S] + extension: + anyOf: + - name: V + - name: S type(): | - if (CSR[misa].V == 1'b1){ + if (implemented?(ExtensionName::V) && (!MISA_CSR_IMPLEMENTED || CSR[misa].V == 1'b1)) { + # "If the V extension is implemented, the VS field shall not be read-only zero." return CsrFieldType::RWH; - } else if ((CSR[misa].S == 1'b0) && (CSR[misa].V == 1'b0)) { - # must be read-only-0 + } else if (MISA_CSR_IMPLEMENTED && (CSR[misa].S == 1'b0) && (CSR[misa].V == 1'b0)) { + # "If neither the V extension nor S-mode is implemented, then VS is read-only zero" return CsrFieldType::RO; } else { + # " If S-mode is implemented but the V extension is not, VS may optionally be read-only zero." # there will be no hardware update in this case because we know the V extension isn't implemented - return MSTATUS_VS_WRITABLE ? CsrFieldType::RW : CsrFieldType::RO; + return $array_size(MSTATUS_VS_LEGAL_VALUES) == 1 ? CsrFieldType::RO : CsrFieldType::RW; } reset_value(): | if (CSR[misa].V == 1'b1){ @@ -472,23 +462,28 @@ fields: return 0; } else { # there will be no hardware update in this case because we know the V extension isn't implemented - return MSTATUS_VS_WRITABLE ? UNDEFINED_LEGAL : 0; + if ($array_size(MSTATUS_VS_LEGAL_VALUES) == 0) { + return 0; + } else if ($array_size(MSTATUS_VS_LEGAL_VALUES) == 1) { + return MSTATUS_VS_LEGAL_VALUES[0]; + } else { + return UNDEFINED_LEGAL; + } } sw_write(csr_value): | - if (CSR[misa].V == 1'b1){ - return ary_includes?<$array_size(MSTATUS_VS_LEGAL_VALUES), 2>(MSTATUS_VS_LEGAL_VALUES, csr_value.VS) ? csr_value.VS : UNDEFINED_LEGAL_DETERMINISTIC; - } else if ((CSR[misa].S == 1'b0) && (CSR[misa].V == 1'b0)) { + if (implemented?(ExtensionName::V) && CSR[misa].V == 1'b1){ + return $array_includes?(MSTATUS_VS_LEGAL_VALUES, csr_value.VS) ? csr_value.VS : UNDEFINED_LEGAL_DETERMINISTIC; + } else if (!implemented?(ExtensionName::S) && !implemented?(ExtensionName::V)) { # must be read-only-0 return 0; } else { # there will be no hardware update in this case because we know the V extension isn't implemented - return ary_includes?<$array_size(MSTATUS_VS_LEGAL_VALUES), 2>(MSTATUS_VS_LEGAL_VALUES, csr_value.VS) ? csr_value.VS : UNDEFINED_LEGAL_DETERMINISTIC; + return $array_includes?(MSTATUS_VS_LEGAL_VALUES, csr_value.VS) ? csr_value.VS : UNDEFINED_LEGAL_DETERMINISTIC; } SPP: location: 8 + long_name: S-mode Previous Privilege description: | - *S-mode Previous Privilege* - Written by hardware in two cases: * Written with the prior nominal privilege level when entering (H)S-mode from an exception/interrupt. @@ -504,7 +499,9 @@ fields: Notably, `mstatus.SPP` does not affect exception return in VS-mode (see `vsstatus.SPP`). type: RW-H - definedBy: S + definedBy: + extension: + name: S reset_value: UNDEFINED_LEGAL sw_write(csr_value): | if (csr_value.SPP == 2'b10) { @@ -516,9 +513,8 @@ fields: return csr_value.SPP != 2'b10; MPIE: location: 7 + long_name: M-mode Previous Interrupt Enable description: | - *M-mode Previous Interrupt Enable* - Written by hardware in two cases: * Written with prior value of `mstatus.MIE` when entering M-mode from an exception/interrupt. @@ -532,10 +528,11 @@ fields: reset_value: UNDEFINED_LEGAL UBE: location: 6 - definedBy: U + definedBy: + extension: + name: U + long_name: U-mode Big Endian description: | - *U-mode Big Endian* - Controls the endianness of U-mode (0 = little, 1 = big). Instructions are always little endian, regardless of the data setting. @@ -558,9 +555,8 @@ fields: SPIE: location: 5 + long_name: S-mode Previous Interrupt Enable description: | - *S-mode Previous Interrupt Enable* - Written by hardware in two cases: * Written with prior value of `mstatus.SIE` when entering (H)S-mode from an exception/interrupt. @@ -571,14 +567,15 @@ fields: Other than serving as a record of nested traps as described above, `mstatus.SPIE` does not affect execution. type(): | return (CSR[misa].S == 1'b1) ? CsrFieldType::RWH : CsrFieldType::RO; - definedBy: S + definedBy: + extension: + name: S reset_value(): | return (CSR[misa].S == 1'b1) ? UNDEFINED_LEGAL : 0; MIE: location: 3 + long_name: M-mode Interrupt Enable description: | - *M-mode Interrupt Enable* - Written by hardware in two cases: * Written with the value 0 when entering M-mode from an exception/interrupt. @@ -593,9 +590,8 @@ fields: reset_value: 0 SIE: location: 1 + long_name: S-mode Interrupt Enable description: | - *S-mode Interrupt Enable* - Written by hardware in two cases: * Written with the value 0 when entering (H)S-mode from an exception/interrupt. @@ -608,6 +604,8 @@ fields: type(): | return (CSR[misa].S == 1'b1) ? CsrFieldType::RWH : CsrFieldType::RO; - definedBy: S + definedBy: + extension: + name: S reset_value(): | return (CSR[misa].S == 1'b1) ? UNDEFINED_LEGAL : 0; diff --git a/spec/std/isa/csr/mstatush.yaml b/spec/std/isa/csr/mstatush.yaml index 3a4f2a316d..bd72301cb5 100644 --- a/spec/std/isa/csr/mstatush.yaml +++ b/spec/std/isa/csr/mstatush.yaml @@ -16,8 +16,9 @@ description: The mstatus register tracks and controls the hart's current operating state. definedBy: - name: Sm - version: ">= 1.12" + extension: + name: Sm + version: ">= 1.12" fields: MDT: location: 10 @@ -28,7 +29,9 @@ fields: When returning via an MRET instruction, the bit is written to 0. On reset in set to 1, and software should write it to 0 when boot sequence is done. When mstatush.MDT=1, direct write by CSR instruction cannot set mstatus.MIE to 1. - definedBy: Smdbltrp + definedBy: + extension: + name: Smdbltrp type: RW-H reset_value: UNDEFINED_LEGAL MPV: @@ -41,7 +44,9 @@ fields: Can also be written by software. type: RW-H reset_value: UNDEFINED_LEGAL - definedBy: H + definedBy: + extension: + name: H GVA: location: 6 description: | @@ -51,7 +56,9 @@ fields: When a trap is taken and a guest virtual address is written into mtval, GVA is cleared. type: RW-H reset_value: 0 - definedBy: H + definedBy: + extension: + name: H MBE: location: 5 description: | @@ -61,7 +68,9 @@ fields: alias: mstatus.MBE SBE: location: 4 - definedBy: S + definedBy: + extension: + name: S description: | see `mstatus.SBE` type(): 'return (S_MODE_ENDIANNESS == "dynamic") ? CsrFieldType::RW : CsrFieldType::RO;' diff --git a/spec/std/isa/csr/mtval.yaml b/spec/std/isa/csr/mtval.yaml index 09430f8c5a..f55f96f167 100644 --- a/spec/std/isa/csr/mtval.yaml +++ b/spec/std/isa/csr/mtval.yaml @@ -12,7 +12,9 @@ writable: true description: Holds trap-specific information priv_mode: M length: MXLEN -definedBy: Sm +definedBy: + extension: + name: Sm fields: VALUE: location_rv32: 31-0 diff --git a/spec/std/isa/csr/mtvec.yaml b/spec/std/isa/csr/mtvec.yaml index 1eeec83956..0bfeea733d 100644 --- a/spec/std/isa/csr/mtvec.yaml +++ b/spec/std/isa/csr/mtvec.yaml @@ -12,7 +12,9 @@ writable: true priv_mode: M length: MXLEN description: Controls where traps jump. -definedBy: Sm +definedBy: + extension: + name: Sm fields: BASE: location_rv64: 63-2 @@ -21,12 +23,45 @@ fields: Bits [MXLEN-1:2] of the exception vector physical address for any trap taken in M-mode. The implementation physical memory map may resitrict which values are legal in this field. - type: RW-R + type(): | + return MTVEC_ACCESS == "read-only" ? CsrFieldType::RO : CsrFieldType::RWR; sw_write(csr_value): | # Base spec says that BASE must be 4-byte aligned, which will always be the case # implementations may put further constraints on BASE when MODE != Direct # If that is the case, stvec should have an override for the implementation - return csr_value.BASE; + if (csr_value.MODE == 0) { + if ($array_includes?(MTVEC_MODES, 0)) { + return csr_value.BASE; + } else { + if (MTVEC_ILLEGAL_WRITE_BEHAVIOR == "retain") { + return CSR[mtvec].BASE; + } else if (MTVEC_ILLEGAL_WRITE_BEHAVIOR == "custom") { + return UNDEFINED_LEGAL_DETERMINISTIC; + } else { + unreachable(); + } + } + } else if (csr_value.MODE == 1) { + if ($array_includes?(MTVEC_MODES, 1)) { + return csr_value.BASE; + } else { + if (MTVEC_ILLEGAL_WRITE_BEHAVIOR == "retain") { + return CSR[mtvec].BASE; + } else if (MTVEC_ILLEGAL_WRITE_BEHAVIOR == "custom") { + return UNDEFINED_LEGAL_DETERMINISTIC; + } else { + unreachable(); + } + } + } else { + if (MTVEC_ILLEGAL_WRITE_BEHAVIOR == "retain") { + return CSR[mtvec].BASE; + } else if (MTVEC_ILLEGAL_WRITE_BEHAVIOR == "custom") { + return UNDEFINED_LEGAL_DETERMINISTIC; + } else { + unreachable(); + } + } reset_value: 0 MODE: location: 1-0 @@ -39,22 +74,38 @@ fields: When Vectored, asynchronous interrupts jump to (`mtvec.BASE` << 2 + `mcause.CAUSE`*4) while synchronous exceptions continue to jump to (`mtvec.BASE` << 2). type(): | - return ($array_size(MTVEC_MODES) == 1) ? CsrFieldType::RO : CsrFieldType::RWR; + if (MTVEC_ACCESS == "read-only") { + return CsrFieldType::RO; + } else { + return ($array_size(MTVEC_MODES) == 1) ? CsrFieldType::RO : CsrFieldType::RWR; + } sw_write(csr_value): | if (csr_value.MODE == 0) { - if (ary_includes?<$array_size(MTVEC_MODES), 2>(MTVEC_MODES, 0)) { + if ($array_includes?(MTVEC_MODES, 0)) { return csr_value.MODE; } else { - return UNDEFINED_LEGAL_DETERMINISTIC; + if (MTVEC_ILLEGAL_WRITE_BEHAVIOR == "retain") { + return CSR[mtvec].MODE; + } else if (MTVEC_ILLEGAL_WRITE_BEHAVIOR == "custom") { + return UNDEFINED_LEGAL_DETERMINISTIC; + } } } else if (csr_value.MODE == 1) { - if (ary_includes?<$array_size(MTVEC_MODES), 2>(MTVEC_MODES, 1)) { + if ($array_includes?(MTVEC_MODES, 1)) { return csr_value.MODE; } else { - return UNDEFINED_LEGAL_DETERMINISTIC; + if (MTVEC_ILLEGAL_WRITE_BEHAVIOR == "retain") { + return CSR[mtvec].MODE; + } else if (MTVEC_ILLEGAL_WRITE_BEHAVIOR == "custom") { + return UNDEFINED_LEGAL_DETERMINISTIC; + } } } else { - return UNDEFINED_LEGAL_DETERMINISTIC; + if (MTVEC_ILLEGAL_WRITE_BEHAVIOR == "retain") { + return CSR[mtvec].MODE; + } else if (MTVEC_ILLEGAL_WRITE_BEHAVIOR == "custom") { + return UNDEFINED_LEGAL_DETERMINISTIC; + } } reset_value(): | return ($array_size(MTVEC_MODES) == 1) ? MTVEC_MODES[0] : UNDEFINED_LEGAL; diff --git a/spec/std/isa/csr/mvendorid.yaml b/spec/std/isa/csr/mvendorid.yaml index adb82ccddc..9fbf31105d 100644 --- a/spec/std/isa/csr/mvendorid.yaml +++ b/spec/std/isa/csr/mvendorid.yaml @@ -23,4 +23,6 @@ fields: location: 6-0 type: RO reset_value(): return VENDOR_ID_OFFSET; -definedBy: Sm +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/csr/satp.yaml b/spec/std/isa/csr/satp.yaml index 66518f558b..37a3654eac 100644 --- a/spec/std/isa/csr/satp.yaml +++ b/spec/std/isa/csr/satp.yaml @@ -14,7 +14,9 @@ description: current ASID and page table base pointer. priv_mode: S length: SXLEN -definedBy: S +definedBy: + extension: + name: S fields: MODE: location_rv64: 63-60 diff --git a/spec/std/isa/csr/scause.yaml b/spec/std/isa/csr/scause.yaml index 5e6ec6b9d6..a68506fc49 100644 --- a/spec/std/isa/csr/scause.yaml +++ b/spec/std/isa/csr/scause.yaml @@ -12,7 +12,9 @@ writable: true priv_mode: S length: SXLEN description: Reports the cause of the latest exception. -definedBy: S +definedBy: + extension: + name: S fields: INT: location_rv32: 31 diff --git a/spec/std/isa/csr/scontext.yaml b/spec/std/isa/csr/scontext.yaml index 009b97e07d..1615fc7279 100644 --- a/spec/std/isa/csr/scontext.yaml +++ b/spec/std/isa/csr/scontext.yaml @@ -18,9 +18,10 @@ description: | with a hypervisor that does not swap `scontext`. definedBy: - allOf: - - Sdtrig - - S + extension: + allOf: + - name: Sdtrig + - name: S fields: DATA: location: 31-0 @@ -48,3 +49,4 @@ sw_read(): | if (implemented?(ExtensionName::Smstateen) && ((CSR[mstateen0].CONTEXT != 0) || (CSR[hstateen0].CONTEXT != 0))) { unimplemented_csr($encoding); } + return $bits(CSR[scontext]); diff --git a/spec/std/isa/csr/senvcfg.yaml b/spec/std/isa/csr/senvcfg.yaml index 843e02470c..e6d5064bbb 100644 --- a/spec/std/isa/csr/senvcfg.yaml +++ b/spec/std/isa/csr/senvcfg.yaml @@ -14,10 +14,11 @@ description: | priv_mode: S length: 64 definedBy: - allOf: - - name: S - version: ">=1.12" - - name: U + extension: + allOf: + - name: S + version: ">=1.12" + - name: U fields: CBZE: location: 7 @@ -44,7 +45,9 @@ fields: See `cbo.zero` for a summary of the effect. - definedBy: Zicboz + definedBy: + extension: + name: Zicboz type: RW reset_value: UNDEFINED_LEGAL CBCFE: @@ -75,7 +78,9 @@ fields: See `cbo.clean` and/or `cbo.flush` for a summary of the effect. - definedBy: Zicbom + definedBy: + extension: + name: Zicbom type: RW reset_value: UNDEFINED_LEGAL CBIE: @@ -108,7 +113,9 @@ fields: * `11`: The instruction is executed and performs an invalidate operation See `cbo.inval` for more details. - definedBy: Zicbom + definedBy: + extension: + name: Zicbom type: RW-R sw_write(csr_value): | if (csr_value.CBIE == 0 || csr_value.CBIE == 1 || csr_value.CBIE == 3) { diff --git a/spec/std/isa/csr/sepc.yaml b/spec/std/isa/csr/sepc.yaml index 0b4f417f1b..0c8d91481a 100644 --- a/spec/std/isa/csr/sepc.yaml +++ b/spec/std/isa/csr/sepc.yaml @@ -15,7 +15,9 @@ description: | Written with the PC of an instruction on an exception or interrupt taken in (H)S-mode. Also controls where the hart jumps on an exception return from (H)S-mode. -definedBy: S +definedBy: + extension: + name: S fields: PC: location: 63-0 diff --git a/spec/std/isa/csr/sip.yaml b/spec/std/isa/csr/sip.yaml index 427ea50505..3292efe286 100644 --- a/spec/std/isa/csr/sip.yaml +++ b/spec/std/isa/csr/sip.yaml @@ -16,7 +16,9 @@ description: | Hypervisor-related interrupts (VS-mode interrupts and Supervisor Guest interrupts) are not reflected in `sip` even though those interrupts can be taken in HS-mode. Instead, they are reported through `hip`. length: 64 -definedBy: S +definedBy: + extension: + name: S fields: SSIP: location: 1 @@ -59,7 +61,9 @@ fields: !=== type: RW reset_value: UNDEFINED_LEGAL - definedBy: S + definedBy: + extension: + name: S affectedBy: Smaia STIP: location: 5 @@ -92,7 +96,9 @@ fields: !=== type: RO-H reset_value: UNDEFINED_LEGAL - definedBy: S + definedBy: + extension: + name: S affectedBy: Sstc SEIP: location: 9 @@ -117,7 +123,9 @@ fields: !=== type: RO-H - definedBy: S + definedBy: + extension: + name: S affectedBy: Smaia reset_value: UNDEFINED_LEGAL LCOFIP: @@ -147,4 +155,6 @@ fields: !=== type: RW-H reset_value: UNDEFINED_LEGAL - definedBy: Sscofpmf + definedBy: + extension: + name: Sscofpmf diff --git a/spec/std/isa/csr/sscratch.yaml b/spec/std/isa/csr/sscratch.yaml index 7ecc889450..b2314f0b8b 100644 --- a/spec/std/isa/csr/sscratch.yaml +++ b/spec/std/isa/csr/sscratch.yaml @@ -12,7 +12,9 @@ writable: true priv_mode: S length: 64 description: Scratch register for software use. Bits are not interpreted by hardware. -definedBy: S # actually, defined by RV64, but must implement U-mode for this CSR to exist +definedBy: # actually, defined by RV64, but must implement U-mode for this CSR to exist + extension: + name: S fields: SCRATCH: location: 63-0 diff --git a/spec/std/isa/csr/sstateen0.yaml b/spec/std/isa/csr/sstateen0.yaml index b9639bc1f0..b0a543848e 100644 --- a/spec/std/isa/csr/sstateen0.yaml +++ b/spec/std/isa/csr/sstateen0.yaml @@ -69,14 +69,17 @@ description: only if the hypervisor extension is not implemented and the matching supervisor-level `sstateen` CSR is all read-only zeros. definedBy: - allOf: - - Smstateen - - Ssstateen + extension: + allOf: + - name: Smstateen + - name: Ssstateen fields: JVT: long_name: jvt access control location: 2 - definedBy: Zcmt + definedBy: + extension: + name: Zcmt description: | The JVT bit controls access to the `jvt` CSR provided by the Zcmt extension. type: RW diff --git a/spec/std/isa/csr/sstateen1.yaml b/spec/std/isa/csr/sstateen1.yaml index df26666abc..debbb14154 100644 --- a/spec/std/isa/csr/sstateen1.yaml +++ b/spec/std/isa/csr/sstateen1.yaml @@ -69,9 +69,10 @@ description: only if the hypervisor extension is not implemented and the matching supervisor-level `sstateen` CSR is all read-only zeros. definedBy: - allOf: - - Smstateen - - Ssstateen + extension: + allOf: + - name: Smstateen + - name: Ssstateen fields: DATA: diff --git a/spec/std/isa/csr/sstateen2.yaml b/spec/std/isa/csr/sstateen2.yaml index a362131eea..c76dc81b3d 100644 --- a/spec/std/isa/csr/sstateen2.yaml +++ b/spec/std/isa/csr/sstateen2.yaml @@ -69,9 +69,10 @@ description: only if the hypervisor extension is not implemented and the matching supervisor-level `sstateen` CSR is all read-only zeros. definedBy: - allOf: - - Smstateen - - Ssstateen + extension: + allOf: + - name: Smstateen + - name: Ssstateen fields: DATA: diff --git a/spec/std/isa/csr/sstateen3.yaml b/spec/std/isa/csr/sstateen3.yaml index 963016ef56..fa147d7d7b 100644 --- a/spec/std/isa/csr/sstateen3.yaml +++ b/spec/std/isa/csr/sstateen3.yaml @@ -69,9 +69,10 @@ description: only if the hypervisor extension is not implemented and the matching supervisor-level `sstateen` CSR is all read-only zeros. definedBy: - allOf: - - Smstateen - - Ssstateen + extension: + allOf: + - name: Smstateen + - name: Ssstateen fields: DATA: diff --git a/spec/std/isa/csr/sstatus.yaml b/spec/std/isa/csr/sstatus.yaml index 5505be7a2d..2f617ecd79 100644 --- a/spec/std/isa/csr/sstatus.yaml +++ b/spec/std/isa/csr/sstatus.yaml @@ -15,7 +15,9 @@ description: | The sstatus register tracks and controls the hart's current operating state. All fields in sstatus are aliases of the same field in mstatus. -definedBy: S +definedBy: + extension: + name: S fields: SD: # The *position* of SD changes when SXLEN changes (yuck^[TM]) @@ -80,7 +82,9 @@ fields: Alias of `mstatus.FS`. type: RW-H - definedBy: F + definedBy: + extension: + name: F reset_value: UNDEFINED_LEGAL VS: alias: mstatus.VS @@ -92,7 +96,9 @@ fields: type: RW-H reset_value: UNDEFINED_LEGAL - definedBy: V + definedBy: + extension: + name: V SPP: alias: mstatus.SPP location: 8 @@ -101,7 +107,9 @@ fields: Alias of `mstatus.SPP`. type: RW-H - definedBy: S + definedBy: + extension: + name: S reset_value: UNDEFINED_LEGAL UBE: alias: mstatus.UBE @@ -111,7 +119,9 @@ fields: Alias of `mstatus.UBE`. type: RO - definedBy: S + definedBy: + extension: + name: S reset_value: UNDEFINED_LEGAL SPIE: alias: mstatus.SPIE @@ -122,7 +132,9 @@ fields: Alias of `mstatus.SPIE`. type: RW-H - definedBy: S + definedBy: + extension: + name: S reset_value: UNDEFINED_LEGAL SIE: alias: mstatus.SIE diff --git a/spec/std/isa/csr/stval.yaml b/spec/std/isa/csr/stval.yaml index 66247abebd..e1b4d550e0 100644 --- a/spec/std/isa/csr/stval.yaml +++ b/spec/std/isa/csr/stval.yaml @@ -12,7 +12,9 @@ writable: true description: Holds trap-specific information priv_mode: S length: 64 -definedBy: S +definedBy: + extension: + name: S fields: VALUE: location: 63-0 diff --git a/spec/std/isa/csr/stvec.yaml b/spec/std/isa/csr/stvec.yaml index c7bb3d58d2..9bb118a8b8 100644 --- a/spec/std/isa/csr/stvec.yaml +++ b/spec/std/isa/csr/stvec.yaml @@ -12,7 +12,9 @@ writable: true priv_mode: S length: 64 description: Controls where traps jump. -definedBy: S +definedBy: + extension: + name: S fields: BASE: location: 63-2 diff --git a/spec/std/isa/csr/tdata1.yaml b/spec/std/isa/csr/tdata1.yaml index 2ced5d19ef..85cfdc644a 100644 --- a/spec/std/isa/csr/tdata1.yaml +++ b/spec/std/isa/csr/tdata1.yaml @@ -20,7 +20,9 @@ description: | If this trigger supports multiple types, then the hardware should disable it by changing type to 15. -definedBy: Sdtrig +definedBy: + extension: + name: Sdtrig fields: TYPE: location_rv32: 31-28 diff --git a/spec/std/isa/csr/tdata2.yaml b/spec/std/isa/csr/tdata2.yaml index 68f2f1680e..486942cebe 100644 --- a/spec/std/isa/csr/tdata2.yaml +++ b/spec/std/isa/csr/tdata2.yaml @@ -20,7 +20,9 @@ description: | supported by any of the trigger types supported by this trigger. If XLEN is less than DXLEN, writes to this register are sign-extended. -definedBy: Sdtrig +definedBy: + extension: + name: Sdtrig fields: DATA: location_rv32: 31-0 diff --git a/spec/std/isa/csr/tdata3.yaml b/spec/std/isa/csr/tdata3.yaml index a8634ce26d..c72e7015d5 100644 --- a/spec/std/isa/csr/tdata3.yaml +++ b/spec/std/isa/csr/tdata3.yaml @@ -20,7 +20,9 @@ description: | supported by any of the trigger types supported by this trigger. If XLEN is less than DXLEN, writes to this register are sign-extended. -definedBy: Sdtrig +definedBy: + extension: + name: Sdtrig fields: DATA: location_rv32: 31-0 diff --git a/spec/std/isa/csr/time.yaml b/spec/std/isa/csr/time.yaml index 09237168a3..16a86157a5 100644 --- a/spec/std/isa/csr/time.yaml +++ b/spec/std/isa/csr/time.yaml @@ -34,7 +34,9 @@ description: | -- priv_mode: U length: 64 -definedBy: Zicntr +definedBy: + extension: + name: Zicntr fields: COUNT: location: 63-0 diff --git a/spec/std/isa/csr/timeh.yaml b/spec/std/isa/csr/timeh.yaml index 9ef7f2adf9..157f08fb64 100644 --- a/spec/std/isa/csr/timeh.yaml +++ b/spec/std/isa/csr/timeh.yaml @@ -35,7 +35,9 @@ description: | -- priv_mode: U length: 32 -definedBy: Zicntr +definedBy: + extension: + name: Zicntr fields: COUNT: location: 31-0 diff --git a/spec/std/isa/csr/tselect.yaml b/spec/std/isa/csr/tselect.yaml index 03c321bb14..b3ffdbfa44 100644 --- a/spec/std/isa/csr/tselect.yaml +++ b/spec/std/isa/csr/tselect.yaml @@ -24,7 +24,9 @@ description: | is non-zero. Since triggers can be used both by Debug Mode and M-mode, the external debugger must restore this register if it modifies it. -definedBy: Sdtrig +definedBy: + extension: + name: Sdtrig fields: INDEX: location_rv32: 31-0 diff --git a/spec/std/isa/csr/vscause.yaml b/spec/std/isa/csr/vscause.yaml index 1b703fc6d2..c751423e86 100644 --- a/spec/std/isa/csr/vscause.yaml +++ b/spec/std/isa/csr/vscause.yaml @@ -13,7 +13,9 @@ virtual_address: 0x142 priv_mode: VS length: VSXLEN description: Reports the cause of the latest exception taken in VS-mode. -definedBy: H +definedBy: + extension: + name: H fields: INT: location_rv64: 63 diff --git a/spec/std/isa/csr/vsepc.yaml b/spec/std/isa/csr/vsepc.yaml index 9395f080a3..c37640bd18 100644 --- a/spec/std/isa/csr/vsepc.yaml +++ b/spec/std/isa/csr/vsepc.yaml @@ -16,7 +16,9 @@ description: | Written with the PC of an instruction on an exception or interrupt taken in VS-mode. Also controls where the hart jumps on an exception return from VS-mode. -definedBy: H +definedBy: + extension: + name: H fields: PC: location: 63-0 diff --git a/spec/std/isa/csr/vsstatus.yaml b/spec/std/isa/csr/vsstatus.yaml index e009055855..9fde5cd68b 100644 --- a/spec/std/isa/csr/vsstatus.yaml +++ b/spec/std/isa/csr/vsstatus.yaml @@ -20,7 +20,9 @@ description: | Unlike the relationship between `sstatus` and `mstatus`, none of the bits in `vsstatus` are aliases of another field. -definedBy: H +definedBy: + extension: + name: H fields: SD: location_rv64: 63 @@ -54,9 +56,9 @@ fields: Since the hart only supports VUXLEN==64, this is hardwired to 1. type(): | - return (VUXLEN == 3264) ? CsrFieldType::RW : CsrFieldType::RO; + return ($array_size(VUXLEN) > 1) ? CsrFieldType::RW : CsrFieldType::RO; reset_value(): | - return (VUXLEN == 3264) ? UNDEFINED_LEGAL : VUXLEN; + return ($array_size(VUXLEN) > 1) ? UNDEFINED_LEGAL : VUXLEN[0]; MXR: alias: mstatus.MXR location: 19 @@ -80,7 +82,9 @@ fields: * Loads generated by one of the `hlv.*` instructions. type: RW - definedBy: S + definedBy: + extension: + name: S reset_value: UNDEFINED_LEGAL SUM: location: 18 @@ -101,7 +105,9 @@ fields: during VS-level translation. type: RW - definedBy: S + definedBy: + extension: + name: S reset_value: UNDEFINED_LEGAL XS: alias: mstatus.XS @@ -130,7 +136,9 @@ fields: Values 1 and 2 are valid write values for software, but are not interpreted by hardware other than to possibly enable a previously-disabled floating point unit. type: RW-H - definedBy: F + definedBy: + extension: + name: F reset_value: UNDEFINED_LEGAL VS: location: 10-9 @@ -143,7 +151,9 @@ fields: other than to possibly enable a previously-disabled vector unit. type: RW-H reset_value: UNDEFINED_LEGAL - definedBy: V + definedBy: + extension: + name: V SPP: location: 8 description: | @@ -171,7 +181,9 @@ fields: Since the CPU does not support big endian, this is hardwired to 1. type(): | return (VU_MODE_ENDIANNESS == "dynamic") ? CsrFieldType::RW : CsrFieldType::RO; - definedBy: S + definedBy: + extension: + name: S reset_value(): | if (VU_MODE_ENDIANNESS == "little") { # little endian @@ -197,7 +209,9 @@ fields: Other than serving as a record of nested traps as described above, `vsstatus.SPIE` does not affect execution. type: RW-H - definedBy: S + definedBy: + extension: + name: S reset_value: UNDEFINED_LEGAL SIE: location: 1 diff --git a/spec/std/isa/csr/vstval.yaml b/spec/std/isa/csr/vstval.yaml index 82fa1b04a4..bbf8072974 100644 --- a/spec/std/isa/csr/vstval.yaml +++ b/spec/std/isa/csr/vstval.yaml @@ -13,7 +13,9 @@ virtual_address: 0x143 description: Holds trap-specific information priv_mode: S length: VSXLEN -definedBy: H +definedBy: + extension: + name: H fields: VALUE: location_rv32: 31-0 diff --git a/spec/std/isa/csr/vstvec.yaml b/spec/std/isa/csr/vstvec.yaml index 4a8a6c7ae0..bd91732553 100644 --- a/spec/std/isa/csr/vstvec.yaml +++ b/spec/std/isa/csr/vstvec.yaml @@ -13,7 +13,9 @@ virtual_address: 0x105 priv_mode: S length: 64 description: Controls where traps jump. -definedBy: H +definedBy: + extension: + name: H fields: BASE: location: 63-2 diff --git a/spec/std/isa/exception_code/Breakpoint.yaml b/spec/std/isa/exception_code/Breakpoint.yaml new file mode 100644 index 0000000000..1663fa1ac8 --- /dev/null +++ b/spec/std/isa/exception_code/Breakpoint.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: Breakpoint +num: 3 +display_name: Breakpoint +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/IllegalInstruction.yaml b/spec/std/isa/exception_code/IllegalInstruction.yaml new file mode 100644 index 0000000000..0ee988c9c5 --- /dev/null +++ b/spec/std/isa/exception_code/IllegalInstruction.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: IllegalInstruction +num: 2 +display_name: Illegal instruction +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/InstructionAccessFault.yaml b/spec/std/isa/exception_code/InstructionAccessFault.yaml new file mode 100644 index 0000000000..66012870db --- /dev/null +++ b/spec/std/isa/exception_code/InstructionAccessFault.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: InstructionAccessFault +num: 1 +display_name: Instruction access fault +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/InstructionAddressMisaligned.yaml b/spec/std/isa/exception_code/InstructionAddressMisaligned.yaml new file mode 100644 index 0000000000..ed787feb36 --- /dev/null +++ b/spec/std/isa/exception_code/InstructionAddressMisaligned.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: InstructionAddressMisaligned +num: 0 +display_name: Instruction address misaligned +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/InstructionGuestPageFault.yaml b/spec/std/isa/exception_code/InstructionGuestPageFault.yaml new file mode 100644 index 0000000000..f74eeb0bd9 --- /dev/null +++ b/spec/std/isa/exception_code/InstructionGuestPageFault.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: InstructionGuestPageFault +num: 20 +display_name: Instruction guest page fault +definedBy: + extension: + name: H diff --git a/spec/std/isa/exception_code/InstructionPageFault.yaml b/spec/std/isa/exception_code/InstructionPageFault.yaml new file mode 100644 index 0000000000..a0c0abbbf4 --- /dev/null +++ b/spec/std/isa/exception_code/InstructionPageFault.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: InstructionPageFault +num: 13 +display_name: Instruction page fault +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/LoadAccessFault.yaml b/spec/std/isa/exception_code/LoadAccessFault.yaml new file mode 100644 index 0000000000..d4364758bb --- /dev/null +++ b/spec/std/isa/exception_code/LoadAccessFault.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: LoadAccessFault +num: 5 +display_name: Load access fault +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/LoadAddressMisaligned.yaml b/spec/std/isa/exception_code/LoadAddressMisaligned.yaml new file mode 100644 index 0000000000..1d4440d351 --- /dev/null +++ b/spec/std/isa/exception_code/LoadAddressMisaligned.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: LoadAddressMisaligned +num: 4 +display_name: Load address misaligned +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/LoadGuestPageFault.yaml b/spec/std/isa/exception_code/LoadGuestPageFault.yaml new file mode 100644 index 0000000000..e17b6477bb --- /dev/null +++ b/spec/std/isa/exception_code/LoadGuestPageFault.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: LoadGuestPageFault +num: 21 +display_name: Load guest page fault +definedBy: + extension: + name: H diff --git a/spec/std/isa/exception_code/LoadPageFault.yaml b/spec/std/isa/exception_code/LoadPageFault.yaml new file mode 100644 index 0000000000..58bbf58442 --- /dev/null +++ b/spec/std/isa/exception_code/LoadPageFault.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: LoadPageFault +num: 13 +display_name: Load page fault +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/Mcall.yaml b/spec/std/isa/exception_code/Mcall.yaml new file mode 100644 index 0000000000..a1a7f54704 --- /dev/null +++ b/spec/std/isa/exception_code/Mcall.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: Mcall +num: 12 +display_name: Environment call from M-mode +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/Scall.yaml b/spec/std/isa/exception_code/Scall.yaml new file mode 100644 index 0000000000..d301fba2cb --- /dev/null +++ b/spec/std/isa/exception_code/Scall.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: Scall +num: 11 +display_name: Environment call from S-mode +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/SoftwareCheck.yaml b/spec/std/isa/exception_code/SoftwareCheck.yaml new file mode 100644 index 0000000000..9669b9bd0c --- /dev/null +++ b/spec/std/isa/exception_code/SoftwareCheck.yaml @@ -0,0 +1,14 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: SoftwareCheck +num: 18 +display_name: Software check +definedBy: + extension: + name: Sm + version: ">= 1.13.0" diff --git a/spec/std/isa/exception_code/StoreAmoAccessFault.yaml b/spec/std/isa/exception_code/StoreAmoAccessFault.yaml new file mode 100644 index 0000000000..7baa0b9a16 --- /dev/null +++ b/spec/std/isa/exception_code/StoreAmoAccessFault.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: StoreAmoAccessFault +num: 7 +display_name: Store/Amo acess fault +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/StoreAmoAddressMisaligned.yaml b/spec/std/isa/exception_code/StoreAmoAddressMisaligned.yaml new file mode 100644 index 0000000000..655c991f88 --- /dev/null +++ b/spec/std/isa/exception_code/StoreAmoAddressMisaligned.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: StoreAmoAddressMisaligned +num: 6 +display_name: Store/AMO address misaligned +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/StoreAmoGuestPageFault.yaml b/spec/std/isa/exception_code/StoreAmoGuestPageFault.yaml new file mode 100644 index 0000000000..b56c32f1ee --- /dev/null +++ b/spec/std/isa/exception_code/StoreAmoGuestPageFault.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: StoreAmoGuestPageFault +num: 23 +display_name: Store/AMO guest page fault +definedBy: + extension: + name: H diff --git a/spec/std/isa/exception_code/StoreAmoPageFault.yaml b/spec/std/isa/exception_code/StoreAmoPageFault.yaml new file mode 100644 index 0000000000..e39d76445a --- /dev/null +++ b/spec/std/isa/exception_code/StoreAmoPageFault.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: StoreAmoPageFault +num: 15 +display_name: Store/AMO page fault +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/Ucall.yaml b/spec/std/isa/exception_code/Ucall.yaml new file mode 100644 index 0000000000..9c9f6ad500 --- /dev/null +++ b/spec/std/isa/exception_code/Ucall.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: Ucall +num: 8 +display_name: Environment call from U-mode +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/exception_code/VScall.yaml b/spec/std/isa/exception_code/VScall.yaml new file mode 100644 index 0000000000..703caabf37 --- /dev/null +++ b/spec/std/isa/exception_code/VScall.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: VScall +num: 10 +display_name: Environment call from VS-mode +definedBy: + extension: + name: H diff --git a/spec/std/isa/exception_code/VirtualInstruction.yaml b/spec/std/isa/exception_code/VirtualInstruction.yaml new file mode 100644 index 0000000000..37470db834 --- /dev/null +++ b/spec/std/isa/exception_code/VirtualInstruction.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/exception_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: VirtualInstruction +num: 22 +display_name: Virtual instruction +definedBy: + extension: + name: H diff --git a/spec/std/isa/ext/A.yaml b/spec/std/isa/ext/A.yaml index 6b3b30e35e..8f48d6ca06 100644 --- a/spec/std/isa/ext/A.yaml +++ b/spec/std/isa/ext/A.yaml @@ -19,11 +19,13 @@ versions: - name: Unknown email: unknown@void.segfault company: Unknown - implies: - - name: Zaamo - version: "1.0.0" - - name: Zalrsc - version: "1.0.0" + requirements: + extension: + allOf: + - name: Zaamo + version: "= 1.0.0" + - name: Zalrsc + version: "= 1.0.0" description: | The atomic-instruction extension, named `A`, contains @@ -75,56 +77,3 @@ description: | and cannot be observed to happen before any earlier memory operations or after any later memory operations in the same RISC-V hart and to the same address domain. -params: - MISALIGNED_AMO: - description: | - whether or not the implementation supports misaligned atomics in main memory - schema: - type: boolean - LRSC_RESERVATION_STRATEGY: - description: | - Strategy used to handle reservation sets. - - * "reserve naturally-aligned 64-byte region": Always reserve the 64-byte block containing the LR/SC address - * "reserve naturally-aligned 128-byte region": Always reserve the 128-byte block containing the LR/SC address - * "reserve exactly enough to cover the access": Always reserve exactly the LR/SC access, and no more - * "custom": Custom behavior, leading to an 'unpredictable' call on any LR/SC - schema: - type: string - enum: - - reserve naturally-aligned 64-byte region - - reserve naturally-aligned 128-byte region - - reserve exactly enough to cover the access - - custom - LRSC_FAIL_ON_VA_SYNONYM: - description: | - Whether or not an `sc.l`/`sc.d` will fail if its VA does not match the VA of the prior - `lr.l`/`lr.d`, even if the physical address of the SC and LR are the same - schema: - type: boolean - LRSC_MISALIGNED_BEHAVIOR: - description: | - What to do when an LR/SC address is misaligned and MISALIGNED_AMO == false. - - * 'always raise misaligned exception': self-explainitory - * 'always raise access fault': self-explainitory - * 'custom': Custom behavior; misaligned LR/SC may sometimes raise a misaligned exception and sometimes raise a access fault. Will lead to an 'unpredictable' call on any misaligned LR/SC access - schema: - type: string - enum: - - always raise misaligned exception - - always raise access fault - - custom - LRSC_FAIL_ON_NON_EXACT_LRSC: - description: | - Whether or not a Store Conditional fails if its physical address and size do not - exactly match the physical address and size of the last Load Reserved in program order - (independent of whether or not the SC is in the current reservation set) - schema: - type: boolean - MUTABLE_MISA_A: - description: | - When the `A` extensions is supported, indicates whether or not - the extension can be disabled in the `misa.A` bit. - schema: - type: boolean diff --git a/spec/std/isa/ext/B.yaml b/spec/std/isa/ext/B.yaml index 1bb642ba0f..7f446e55fa 100644 --- a/spec/std/isa/ext/B.yaml +++ b/spec/std/isa/ext/B.yaml @@ -23,13 +23,15 @@ versions: email: ved@rivosinc.com company: Rivos, Inc. url: https://drive.google.com/file/d/1SgLoasaBjs5WboQMaU3wpHkjUwV71UZn/view - implies: - - name: Zba - version: "1.0.0" - - name: Zbb - version: "1.0.0" - - name: Zbs - version: "1.0.0" + requirements: + extension: + allOf: + - name: Zba + version: "= 1.0.0" + - name: Zbb + version: "= 1.0.0" + - name: Zbs + version: "= 1.0.0" description: | The B standard extension comprises instructions provided by the `Zba`, `Zbb`, and `Zbs` extensions. @@ -37,9 +39,3 @@ description: | the implementation supports the instructions provided by the `Zba`, `Zbb`, and `Zbs` extensions. When `misa.B` is 0, it indicates that the implementation may not support one or more of the `Zba`, `Zbb`, or `Zbs` extensions. -params: - MUTABLE_MISA_B: - description: | - Indicates whether or not the `B` extension can be disabled with the `misa.B` bit. - schema: - type: boolean diff --git a/spec/std/isa/ext/C.yaml b/spec/std/isa/ext/C.yaml index be6ccd2466..55a2a9fbc1 100644 --- a/spec/std/isa/ext/C.yaml +++ b/spec/std/isa/ext/C.yaml @@ -18,21 +18,13 @@ versions: - version: "2.0.0" state: ratified ratification_date: 2019-12 - implies: - - name: Zca - version: "1.0.0" - - if: - name: F - version: ~> 2.2 - then: - name: Zcf - version: "1.0.0" - - if: - name: D - version: ~> 2.2 - then: - name: Zcd - version: "1.0.0" + requirements: + idl(): | + -> implemented_version?(ExtensionName::Zca, "= 1.0.0") && + (!implemented?(ExtensionName::F) || implemented_version?(ExtensionName::Zcf, "= 1.0.0")) && + (!implemented?(ExtensionName::D) || implemented_version?(ExtensionName::Zcd, "= 1.0.0")); + reason: | + Zca is the non-FP subset of C. "C" + "F" implies Zcf. "C" + "D" implies Zcd. description: | The `C` extension reduces static and dynamic code size by adding short 16-bit instruction encodings for common operations. The C @@ -313,9 +305,3 @@ description: | !`fs0` !`fs1` !`fa0` !`fa1` !`fa2`!`fa3` !`fa4` !`fa5` !=== |=== -params: - MUTABLE_MISA_C: - description: | - Indicates whether or not the `C` extension can be disabled with the `misa.C` bit. - schema: - type: boolean diff --git a/spec/std/isa/ext/D.yaml b/spec/std/isa/ext/D.yaml index 506bbaf7d1..4362105563 100644 --- a/spec/std/isa/ext/D.yaml +++ b/spec/std/isa/ext/D.yaml @@ -14,9 +14,10 @@ versions: ratification_date: 2019-12 changes: - Define NaN-boxing scheme, changed definition of FMAX and FMIN - implies: - name: F - version: "2.2.0" + requirements: + extension: + name: F + version: = 2.2.0 description: | The `D` extension adds double-precision floating-point computational instructions compliant @@ -106,9 +107,3 @@ description: | normalization except for skipping over leading-1 bits instead of skipping over leading-0 bits, allowing the datapath muxing to be shared. ==== -params: - MUTABLE_MISA_D: - description: | - Indicates whether or not the `D` extension can be disabled with the `misa.D` bit. - schema: - type: boolean diff --git a/spec/std/isa/ext/F.yaml b/spec/std/isa/ext/F.yaml index 6ef0052448..4e058ff33a 100644 --- a/spec/std/isa/ext/F.yaml +++ b/spec/std/isa/ext/F.yaml @@ -14,7 +14,9 @@ versions: ratification_date: 2019-12 changes: - Define NaN-boxing scheme, changed definition of FMAX and FMIN - requires: Zicsr +requirements: + extension: + name: Zicsr description: | This chapter describes the standard instruction-set extension for single-precision floating-point, which is named "F" and adds @@ -239,39 +241,3 @@ description: | Detecting tininess after rounding results in fewer spurious underflow signals. ==== -params: - MUTABLE_MISA_F: - description: | - Indicates whether or not the `F` extension can be disabled with the `misa.F` bit. - schema: - type: boolean - HW_MSTATUS_FS_DIRTY_UPDATE: - description: | - Indicates whether or not hardware will write to `mstatus.FS` - - Values are: - [separator="!"] - !=== - h! never ! Hardware never writes `mstatus.FS` - h! precise ! Hardware writes `mstatus.FS` to the Dirty (3) state precisely when F registers are modified - h! imprecise ! Hardware writes `mstatus.FS` imprecisely. This will result in a call to unpredictable() on any attempt to read `mstatus` or write FP state. - !=== - schema: - type: string - enum: ["never", "precise", "imprecise"] - MSTATUS_FS_LEGAL_VALUES: - description: | - The set of values that mstatus.FS will accept from a software write. - schema: - type: array - items: - type: integer - enum: [0, 1, 2, 3] - maxItems: 4 - uniqueItems: true - also_defined_in: S - extra_validation: | - assert MSTATUS_FS_LEGAL_VALUES.include?(0) && MSTATUS_FS_LEGAL_VALUES.include?(3) if ext?(:F) - - # if HW is writing FS, then Dirty (3) better be a supported value - assert MSTATUS_FS_LEGAL_VALUES.include?(3) if ext?(:F) && (HW_MSTATUS_FS_DIRTY_UPDATE != "never") diff --git a/spec/std/isa/ext/H.yaml b/spec/std/isa/ext/H.yaml index e66b54c4bc..b3ad8b0d75 100644 --- a/spec/std/isa/ext/H.yaml +++ b/spec/std/isa/ext/H.yaml @@ -12,38 +12,11 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2019-12 - requires: - name: S - version: ">= 1.12.0" -interrupt_codes: - - num: 2 - name: Virtual supervisor software interrupt - var: VirtualSupervisorSoftware - - num: 6 - name: Virtual supervisor timer interrupt - var: VirtualSupervisorTimer - - num: 10 - name: Virtual supervisor external interrupt - var: VirtualSupervisorExternal - - num: 12 - name: Supervisor guest external interrupt - var: SupervisorGuestExternal -exception_codes: - - num: 10 - name: Environment call from VS-mode - var: VScall - - num: 20 - name: Instruction guest page fault - var: InstructionGuestPageFault - - num: 21 - name: Load guest page fault - var: LoadGuestPageFault - - num: 22 - name: Virtual instruction - var: VirtualInstruction - - num: 23 - name: Store/AMO guest page fault - var: StoreAmoGuestPageFault +requirements: + extension: + name: S + version: ">= 1.12.0" + description: | This chapter describes the RISC-V hypervisor extension, which virtualizes the supervisor-level architecture to support the efficient @@ -151,515 +124,3 @@ description: | interrupts and will be revised if an extension for user-level interrupts is adopted. ==== -params: - MUTABLE_MISA_H: - description: | - Indicates whether or not the `H` extension can be disabled with the `misa.H` bit. - schema: - type: boolean - extra_validation: | - # If S mode can be disabled, then H mode must also be disabled since you can't - # be in H mode without S mode - assert MUTABLE_MISA_H if MUTABLE_MISA_S - NUM_EXTERNAL_GUEST_INTERRUPTS: - description: | - Number of supported virtualized guest interrupts - - Corresponds to the `GEILEN` parameter in the RVI specs - schema: - type: integer - minimum: 1 - maximum: 63 - extra_validation: | - # GEILEN must be <= 31 for RV32 - assert NUM_EXTERNAL_GUEST_INTERRUPTS <= 31 if SXLEN == 32 - VS_MODE_ENDIANNESS: - description: | - Endianness of data in VS-mode. Can be one of: - - * little: VS-mode data is always little endian - * big: VS-mode data is always big endian - * dynamic: VS-mode data can be either little or big endian, - depending on the CSR field `hstatus.VSBE` - schema: - type: string - enum: [little, big, dynamic] - VU_MODE_ENDIANNESS: - description: | - Endianness of data in VU-mode. Can be one of: - - * little: VU-mode data is always little endian - * big: VU-mode data is always big endian - * dynamic: VU-mode data can be either little or big endian, - depending on the CSR field `vsstatus.UBE` - schema: - type: string - enum: [little, big, dynamic] - VUXLEN: - description: | - Set of XLENs supported in VU-mode. Can be one of: - - * 32: VUXLEN is always 32 - * 64: VUXLEN is always 64 - * 3264: VUXLEN can be changed (via `vsstatus.UXL`) between 32 and 64 - schema: - type: integer - enum: [32, 64, 3264] - extra_validation: | - assert VUXLEN == 32 if XLEN == 32 - assert (SXLEN != 32) if VUXLEN != 32 - assert (VSXLEN != 32) if VUXLEN != 32 - VSXLEN: - description: | - Set of XLENs supported in VS-mode. Can be one of: - - * 32: VSXLEN is always 32 - * 64: VSXLEN is always 64 - * 3264: VSXLEN can be changed (via `hstatus.VSXL`) between 32 and 64 - schema: - type: integer - enum: [32, 64, 3264] - extra_validation: | - assert VSXLEN == 32 if XLEN == 32 - assert (SXLEN != 32) if VSXLEN != 32 - REPORT_VA_IN_VSTVAL_ON_BREAKPOINT: - description: | - When true, `vstval` is written with the virtual PC of the EBREAK instruction (same information as `mepc`). - - When false, `vstval` is written with 0 on an EBREAK instruction. - - Regardless, `vstval` is always written with a virtual PC when an external breakpoint is generated - schema: - type: boolean - REPORT_VA_IN_VSTVAL_ON_LOAD_MISALIGNED: - description: | - When true, `vstval` is written with the virtual address of a load instruction when the - address is misaligned and MISALIGNED_LDST is false. - - When false, `vstval` is written with 0 when a load address is misaligned and - MISALIGNED_LDST is false. - schema: - type: boolean - REPORT_VA_IN_VSTVAL_ON_STORE_AMO_MISALIGNED: - description: | - When true, `vstval` is written with the virtual address of a store instruction when the - address is misaligned and MISALIGNED_LDST is false. - - When false, `vstval` is written with 0 when a store address is misaligned and - MISALIGNED_LDST is false. - schema: - type: boolean - REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_MISALIGNED: - description: | - When true, `vstval` is written with the virtual PC when an instruction fetch is misaligned. - - When false, `vstval` is written with 0 when an instruction fetch is misaligned. - - Note that when IALIGN=16 (i.e., when the `C` or one of the `Zc*` extensions are implemented), - it is impossible to generate a misaligned fetch, and so this parameter has no effect. - schema: - type: boolean - REPORT_VA_IN_VSTVAL_ON_LOAD_ACCESS_FAULT: - description: | - When true, `vstval` is written with the virtual address of a load when it causes a - `LoadAccessFault`. - - WHen false, `vstval` is written with 0 when a load causes a `LoadAccessFault`. - schema: - type: boolean - REPORT_VA_IN_VSTVAL_ON_STORE_AMO_ACCESS_FAULT: - description: | - When true, `vstval` is written with the virtual address of a store when it causes a - `StoreAmoAccessFault`. - - WHen false, `vstval` is written with 0 when a store causes a `StoreAmoAccessFault`. - schema: - type: boolean - REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_ACCESS_FAULT: - description: | - When true, `vstval` is written with the virtual PC of an instructino when fetch causes an - `InstructionAccessFault`. - - WHen false, `vstval` is written with 0 when an instruction fetch causes an - `InstructionAccessFault`. - schema: - type: boolean - REPORT_VA_IN_VSTVAL_ON_LOAD_PAGE_FAULT: - description: | - When true, `vstval` is written with the virtual address of a load when it causes a - `LoadPageFault`. - - WHen false, `vstval` is written with 0 when a load causes a `LoadPageFault`. - schema: - type: boolean - REPORT_VA_IN_VSTVAL_ON_STORE_AMO_PAGE_FAULT: - description: | - When true, `vstval` is written with the virtual address of a store when it causes a - `StoreAmoPageFault`. - - WHen false, `vstval` is written with 0 when a store causes a `StoreAmoPageFault`. - schema: - type: boolean - REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_PAGE_FAULT: - description: | - When true, `vstval` is written with the virtual PC of an instructino when fetch causes an - `InstructionPageFault`. - - WHen false, `vstval` is written with 0 when an instruction fetch causes an - `InstructionPageFault`. - schema: - type: boolean - REPORT_ENCODING_IN_VSTVAL_ON_ILLEGAL_INSTRUCTION: - description: | - When true, `vstval` is written with the encoding of an instruction that causes an - `IllegalInstruction` exception. - - When false `vstval` is written with 0 when an `IllegalInstruction` exception occurs. - schema: - type: boolean - REPORT_GPA_IN_HTVAL_ON_GUEST_PAGE_FAULT: - description: | - When true, `htval` is written with the Guest Physical Address, shifted right by 2, that - caused a `GuestPageFault` exception. - - When false, `htval` is written with0 when a `GuestPageFault` exception occurs. - schema: - type: boolean - HCOUNTENABLE_EN: - description: | - Indicates which counters can delegated via `hcounteren` - - An unimplemented counter cannot be specified, i.e., if - HPM_COUNTER_EN[3] is false, it would be illegal to set - HCOUNTENABLE_EN[3] to true. - - HCOUNTENABLE_EN[0:2] must all be false if `Zicntr` is not implemented. - HCOUNTENABLE_EN[3:31] must all be false if `Zihpm` is not implemented. - schema: - type: array - items: - type: boolean - maxItems: 32 - minItems: 32 - IGNORE_INVALID_VSATP_MODE_WRITES_WHEN_V_EQ_ZERO: - description: | - Whether writes from M-mode, U-mode, or S-mode to vsatp with an illegal mode setting are - ignored (as they are with satp), or if they are treated as WARL, leading to undpredictable - behavior. - schema: - type: boolean - GSTAGE_MODE_BARE: - description: | - Whether or not writing mode=Bare is supported in the `hgatp` register. - schema: - type: boolean - SV32_VSMODE_TRANSLATION: - description: | - Whether or not Sv32 translation is supported in first-stage (VS-stage) - translation. - schema: - type: boolean - extra_validation: | - # Sv32 is only valid if VS-mode can get into XLEN=32 mode - assert (VSXLEN == 32 || VSXLEN == 3264) if SV32_VSMODE_TRANSLATION - SV39_VSMODE_TRANSLATION: - description: | - Whether or not Sv39 translation is supported in first-stage (VS-stage) - translation. - schema: - type: boolean - extra_validation: | - # Sv39 is only valid if VS-mode can get into XLEN=64 mode - assert (VSXLEN == 64 || VSXLEN == 3264) if SV39_VSMODE_TRANSLATION - SV48_VSMODE_TRANSLATION: - description: | - Whether or not Sv48 translation is supported in first-stage (VS-stage) - translation. - schema: - type: boolean - extra_validation: | - # Sv48 is only valid if VS-mode can get into XLEN=64 mode - assert (VSXLEN == 64 || VSXLEN == 3264) if SV48_VSMODE_TRANSLATION - SV57_VSMODE_TRANSLATION: - description: | - Whether or not Sv57 translation is supported in first-stage (VS-stage) - translation. - schema: - type: boolean - extra_validation: | - # Sv57 is only valid if VS-mode can get into XLEN=64 mode - assert (VSXLEN == 64 || VSXLEN == 3264) if SV57_VSMODE_TRANSLATION - SV32X4_TRANSLATION: - description: | - Whether or not Sv32x4 translation mode is supported. - schema: - type: boolean - extra_validation: | - # Sv32x4 is only valid if S-mode can get into XLEN=32 mode - assert SXLEN == 32 || SXLEN == 3264 if SV32X4_TRANSLATION - SV39X4_TRANSLATION: - description: | - Whether or not Sv39x4 translation mode is supported. - schema: - type: boolean - extra_validation: | - # Sv39x4 is only valid if S-mode can get into XLEN=64 mode - assert SXLEN == 64 || SXLEN == 3264 if SV39X4_TRANSLATION - SV48X4_TRANSLATION: - description: | - Whether or not Sv48x4 translation mode is supported. - schema: - type: boolean - extra_validation: | - # Sv48x4 is only valid if S-mode can get into XLEN=64 mode - assert SXLEN == 64 || SXLEN == 3264 if SV48X4_TRANSLATION - SV57X4_TRANSLATION: - description: | - Whether or not Sv57x4 translation mode is supported. - schema: - type: boolean - extra_validation: | - # Sv57x4 is only valid if S-mode can get into XLEN=64 mode - assert SXLEN == 64 || SXLEN == 3264 if SV57X4_TRANSLATION - VMID_WIDTH: - description: | - Number of bits supported in `hgatp.VMID` (i.e., the supported width of a virtual machine ID). - schema: - type: integer - minimum: 0 - maximum: 14 - extra_validation: | - # if XLEN = 32, then VMID MAX is actually 7 - assert VMID_WIDTH <= 7 if SXLEN == 32 - REPORT_GPA_IN_TVAL_ON_LOAD_GUEST_PAGE_FAULT: - description: | - Whether or not GPA >> 2 is written into htval/mtval2 when a load guest page fault occurs. - - If false, 0 will be written into htval/mtval2 on a load guest page fault. - schema: - type: boolean - REPORT_GPA_IN_TVAL_ON_STORE_AMO_GUEST_PAGE_FAULT: - description: | - Whether or not GPA >> 2 is written into htval/mtval2 when a store/amo guest page fault occurs. - - If false, 0 will be written into htval/mtval2 on a store/amo guest page fault. - schema: - type: boolean - REPORT_GPA_IN_TVAL_ON_INSTRUCTION_GUEST_PAGE_FAULT: - description: | - Whether or not GPA >> 2 is written into htval/mtval2 when an instruction guest page fault occurs. - - If false, 0 will be written into htval/mtval2 on an instruction guest page fault. - schema: - type: boolean - REPORT_GPA_IN_TVAL_ON_INTERMEDIATE_GUEST_PAGE_FAULT: - description: | - Whether or not GPA >> 2 is written into htval/mtval2 when a guest page fault occurs while - walking a VS-mode page table. - - If false, 0 will be written into htval/mtval2 on an intermediate guest page fault. - schema: - type: boolean - TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT: - description: | - Value to write into htval/mtval2 when there is a guest page fault on a final translation. - - Possible values: - * "always zero": Always write the value zero - * "always pseudoinstruction": Always write the pseudoinstruction - * "always transformed standard instruction": Always write the transformation of the standard instruction encoding - * "custom": A custom value, which will cause an UNPREDICTABLE event. - schema: - type: string - enum: - - "always zero" - - "always pseudoinstruction" - - "always transformed standard instruction" - - "custom" - TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT: - description: | - Value to write into htval/mtval2 when there is a guest page fault on a final translation. - - Possible values: - * "always zero": Always write the value zero - * "always pseudoinstruction": Always write the pseudoinstruction - * "always transformed standard instruction": Always write the transformation of the standard instruction encoding - * "custom": A custom value, which will cause an UNPREDICTABLE event. - schema: - type: string - enum: - - "always zero" - - "always pseudoinstruction" - - "always transformed standard instruction" - - "custom" - TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT: - description: | - Value to write into htval/mtval2 when there is a guest page fault on a final translation. - - Possible values: - * "always zero": Always write the value zero - * "always pseudoinstruction": Always write the pseudoinstruction - schema: - type: string - enum: - - "always zero" - - "always pseudoinstruction" - TINST_VALUE_ON_INSTRUCTION_ADDRESS_MISALIGNED: - description: | - Value written into htinst/mtinst when there is an instruction address misaligned exception. - - Possible values: - * "always zero": Always write the value zero - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: - - "always zero" - - "custom" - TINST_VALUE_ON_BREAKPOINT: - description: | - Value written into htinst/mtinst on a Breakpoint exception from VU/VS-mode. - - Possible values: - * "always zero": Always write the value zero - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: ["always zero", "custom"] - TINST_VALUE_ON_VIRTUAL_INSTRUCTION: - description: | - Value written into htinst/mtinst on a VirtualInstruction exception from VU/VS-mode. - - Possible values: - * "always zero": Always write the value zero - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: ["always zero", "custom"] - TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED: - description: | - Value written into htinst/mtinst on a VirtualInstruction exception from VU/VS-mode. - - Possible values: - * "always zero": Always write the value zero - * "always transformed standard instruction": Always write a transformed standard instruction as defined by H - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: ["always zero", "always transformed standard instruction", "custom"] - TINST_VALUE_ON_LOAD_ACCESS_FAULT: - description: | - Value written into htinst/mtinst on an AccessFault exception from VU/VS-mode. - - Possible values: - * "always zero": Always write the value zero - * "always transformed standard instruction": Always write a transformed standard instruction as defined by H - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: ["always zero", "always transformed standard instruction", "custom"] - TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED: - description: | - Value written into htinst/mtinst on a VirtualInstruction exception from VU/VS-mode. - - Possible values: - * "always zero": Always write the value zero - * "always transformed standard instruction": Always write a transformed standard instruction as defined by H - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: ["always zero", "always transformed standard instruction", "custom"] - TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT: - description: | - Value written into htinst/mtinst on an AccessFault exception from VU/VS-mode. - - Possible values: - * "always zero": Always write the value zero - * "always transformed standard instruction": Always write a transformed standard instruction as defined by H - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: ["always zero", "always transformed standard instruction", "custom"] - TINST_VALUE_ON_UCALL: - description: | - Value written into htinst/mtinst on a UCall exception from VU/VS-mode. - - Possible values: - * "always zero": Always write the value zero - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: ["always zero", "custom"] - TINST_VALUE_ON_SCALL: - description: | - Value written into htinst/mtinst on a SCall exception from VU/VS-mode. - - Possible values: - * "always zero": Always write the value zero - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: ["always zero", "custom"] - TINST_VALUE_ON_MCALL: - description: | - Value written into htinst/mtinst on a MCall exception from VU/VS-mode. - - Possible values: - * "always zero": Always write the value zero - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: ["always zero", "custom"] - TINST_VALUE_ON_VSCALL: - description: | - Value written into htinst/mtinst on a VSCall exception from VU/VS-mode. - - Possible values: - * "always zero": Always write the value zero - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: ["always zero", "custom"] - TINST_VALUE_ON_LOAD_PAGE_FAULT: - description: | - Value written into htinst/mtinst on a LoadPageFault exception from VU/VS-mode. - - Possible values: - * "always zero": Always write the value zero - * "always transformed standard instruction": Always write a transformed standard instruction as defined by H - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: ["always zero", "always transformed standard instruction", "custom"] - TINST_VALUE_ON_STORE_AMO_PAGE_FAULT: - description: | - Value written into htinst/mtinst on a StoreAmoPageFault exception from VU/VS-mode. - - Possible values: - * "always zero": Always write the value zero - * "always transformed standard instruction": Always write a transformed standard instruction as defined by H - * "custom": Write a custom value, which results in UNPREDICTABLE - schema: - type: string - enum: ["always zero", "always transformed standard instruction", "custom"] - TRAP_ON_ECALL_FROM_VS: - description: | - Whether or not an ECALL-from-VS-mode causes a synchronous exception. - - The spec states that implementations may handle ECALLs transparently - without raising a trap, in which case the EEI must provide a builtin. - schema: - type: boolean - default: true - VSTVEC_MODE_DIRECT: - description: | - Whether or not `vstvec.MODE` supports Direct (0). - schema: - type: boolean - extra_validation: assert STVEC_MODE_DIRECT || STVEC_MODE_VECTORED - VSTVEC_MODE_VECTORED: - description: | - Whether or not `stvec.MODE` supports Vectored (1). - schema: - type: boolean - extra_validation: assert STVEC_MODE_DIRECT || STVEC_MODE_VECTORED diff --git a/spec/std/isa/ext/M.yaml b/spec/std/isa/ext/M.yaml index 2791f4a46a..6b4400a959 100644 --- a/spec/std/isa/ext/M.yaml +++ b/spec/std/isa/ext/M.yaml @@ -24,9 +24,3 @@ description: | divide operations are either infrequent or better handled in attached accelerators. ==== -params: - MUTABLE_MISA_M: - description: | - Indicates whether or not the `M` extension can be disabled with the `misa.M` bit. - schema: - type: boolean diff --git a/spec/std/isa/ext/Q.yaml b/spec/std/isa/ext/Q.yaml index ccd6d607df..dc741912d9 100644 --- a/spec/std/isa/ext/Q.yaml +++ b/spec/std/isa/ext/Q.yaml @@ -20,10 +20,7 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - requires: D -params: - MUTABLE_MISA_Q: - description: | - Indicates whether or not the `Q` extension can be disabled with the `misa.Q` bit. - schema: - type: boolean + requirements: + extension: + name: D + version: = 2.2.0 diff --git a/spec/std/isa/ext/S.yaml b/spec/std/isa/ext/S.yaml index 8a01206e54..01220e5b93 100644 --- a/spec/std/isa/ext/S.yaml +++ b/spec/std/isa/ext/S.yaml @@ -12,19 +12,14 @@ versions: - version: "1.11.0" state: ratified ratification_date: 2019-06 - requires: - name: U - version: "= 1.0.0" - version: "1.12.0" state: ratified ratification_date: 2021-12 - requires: - name: U - version: "= 1.0.0" - version: "1.13.0" state: ratified ratification_date: null - requires: +requirements: + extension: name: U version: "= 1.0.0" description: | @@ -44,322 +39,3 @@ description: | interface (SBI). Other systems supply these facilities directly, through some other implementation-defined mechanism. ==== -params: - MUTABLE_MISA_S: - description: | - Indicates whether or not the `S` extension can be disabled with the `misa.S` bit. - schema: - type: boolean - extra_validation: | - # If U mode can be disabled, then S mode must also be disabled since you can't - # be in S mode without U mode - assert MUTABLE_MISA_S if MUTABLE_MISA_U - ASID_WIDTH: - description: | - Number of implemented ASID bits. Maximum is 16 for XLEN==64, and 9 for XLEN==32 - schema: - type: integer - minimum: 0 - maximum: 16 - extra_validation: | - assert ASID_WIDTH <= 9 if XLEN == 32 - S_MODE_ENDIANNESS: - description: | - Endianness of data in S-mode. Can be one of: - - * little: S-mode data is always little endian - * big: S-mode data is always big endian - * dynamic: S-mode data can be either little or big endian, - depending on the CSR field `mstatus.SBE` - schema: - type: string - enum: [little, big, dynamic] - SXLEN: - description: | - Set of XLENs supported in S-mode. Can be one of: - - * 32: SXLEN is always 32 - * 64: SXLEN is always 64 - * 3264: SXLEN can be changed (via mstatus.SXL) between 32 and 64 - schema: - type: integer - enum: [32, 64, 3264] - extra_validation: | - assert SXLEN == 32 if XLEN == 32 - assert (SXLEN != 32) if UXLEN != 32 - REPORT_VA_IN_MTVAL_ON_LOAD_PAGE_FAULT: - description: | - When true, `mtval` is written with the virtual address of a load when it causes a - `LoadPageFault`. - - WHen false, `mtval` is written with 0 when a load causes a `LoadPageFault`. - schema: - type: boolean - REPORT_VA_IN_MTVAL_ON_STORE_AMO_PAGE_FAULT: - description: | - When true, `mtval` is written with the virtual address of a store when it causes a - `StoreAmoPageFault`. - - WHen false, `mtval` is written with 0 when a store causes a `StoreAmoPageFault`. - schema: - type: boolean - REPORT_VA_IN_MTVAL_ON_INSTRUCTION_PAGE_FAULT: - description: | - When true, `mtval` is written with the virtual PC of an instructino when fetch causes an - `InstructionPageFault`. - - WHen false, `mtval` is written with 0 when an instruction fetch causes an - `InstructionPageFault`. - schema: - type: boolean - REPORT_VA_IN_STVAL_ON_BREAKPOINT: - description: | - When true, `stval` is written with the virtual PC of the EBREAK instruction (same information as `mepc`). - - When false, `stval` is written with 0 on an EBREAK instruction. - - Regardless, `stval` is always written with a virtual PC when an external breakpoint is generated - schema: - type: boolean - REPORT_VA_IN_STVAL_ON_LOAD_MISALIGNED: - description: | - When true, `stval` is written with the virtual address of a load instruction when the - address is misaligned and MISALIGNED_LDST is false. - - When false, `stval` is written with 0 when a load address is misaligned and - MISALIGNED_LDST is false. - schema: - type: boolean - REPORT_VA_IN_STVAL_ON_STORE_AMO_MISALIGNED: - description: | - When true, `stval` is written with the virtual address of a store instruction when the - address is misaligned and MISALIGNED_LDST is false. - - When false, `stval` is written with 0 when a store address is misaligned and - MISALIGNED_LDST is false. - schema: - type: boolean - REPORT_VA_IN_STVAL_ON_INSTRUCTION_MISALIGNED: - description: | - When true, `stval` is written with the virtual PC when an instruction fetch is misaligned. - - When false, `stval` is written with 0 when an instruction fetch is misaligned. - - Note that when IALIGN=16 (i.e., when the `C` or one of the `Zc*` extensions are implemented), - it is impossible to generate a misaligned fetch, and so this parameter has no effect. - schema: - type: boolean - REPORT_VA_IN_STVAL_ON_LOAD_ACCESS_FAULT: - description: | - When true, `stval` is written with the virtual address of a load when it causes a - `LoadAccessFault`. - - WHen false, `stval` is written with 0 when a load causes a `LoadAccessFault`. - schema: - type: boolean - REPORT_VA_IN_STVAL_ON_STORE_AMO_ACCESS_FAULT: - description: | - When true, `stval` is written with the virtual address of a store when it causes a - `StoreAmoAccessFault`. - - WHen false, `stval` is written with 0 when a store causes a `StoreAmoAccessFault`. - schema: - type: boolean - REPORT_VA_IN_STVAL_ON_INSTRUCTION_ACCESS_FAULT: - description: | - When true, `stval` is written with the virtual PC of an instructino when fetch causes an - `InstructionAccessFault`. - - WHen false, `stval` is written with 0 when an instruction fetch causes an - `InstructionAccessFault`. - schema: - type: boolean - REPORT_VA_IN_STVAL_ON_LOAD_PAGE_FAULT: - description: | - When true, `stval` is written with the virtual address of a load when it causes a - `LoadPageFault`. - - WHen false, `stval` is written with 0 when a load causes a `LoadPageFault`. - schema: - type: boolean - REPORT_VA_IN_STVAL_ON_STORE_AMO_PAGE_FAULT: - description: | - When true, `stval` is written with the virtual address of a store when it causes a - `StoreAmoPageFault`. - - WHen false, `stval` is written with 0 when a store causes a `StoreAmoPageFault`. - schema: - type: boolean - REPORT_VA_IN_STVAL_ON_INSTRUCTION_PAGE_FAULT: - description: | - When true, `stval` is written with the virtual PC of an instructino when fetch causes an - `InstructionPageFault`. - - WHen false, `stval` is written with 0 when an instruction fetch causes an - `InstructionPageFault`. - schema: - type: boolean - REPORT_ENCODING_IN_STVAL_ON_ILLEGAL_INSTRUCTION: - description: | - When true, `stval` is written with the encoding of an instruction that causes an - `IllegalInstruction` exception. - - When false `stval` is written with 0 when an `IllegalInstruction` exception occurs. - schema: - type: boolean - STVAL_WIDTH: - description: | - The number of implemented bits in `stval`. - - Must be greater than or equal to _max_(`PHYS_ADDR_WIDTH`, `VA_SIZE`) - schema: - type: integer - maximum: 0xffffffffffffffff - SCOUNTENABLE_EN: - description: | - Indicates which counters can delegated via `scounteren` - - An unimplemented counter cannot be specified, i.e., if - HPM_COUNTER_EN[3] is false, it would be illegal to set - SCOUNTENABLE_EN[3] to true. - - SCOUNTENABLE_EN[0:2] must all be false if `Zicntr` is not implemented. - SCOUNTENABLE_EN[3:31] must all be false if `Zihpm` is not implemented. - schema: - type: array - items: - type: boolean - maxItems: 32 - minItems: 32 - extra_validation: | - SCOUNTENABLE_EN[0..2].all? { |en| !en } unless ext?(:Zicntr) - SCOUNTENABLE_EN[3..].all? { |en| !en } unless ext?(:Zihpm) - - # SCOUNTEN_EN can only be writable if the hpm counter exists - SCOUNTENABLE_EN.each_with_index { |scounten, idx| next if idx < 3; assert (!scounten || HPM_COUNTER_EN[idx]) } - STVEC_MODE_DIRECT: - description: | - Whether or not `stvec.MODE` supports Direct (0). - schema: - type: boolean - extra_validation: assert STVEC_MODE_DIRECT || STVEC_MODE_VECTORED - STVEC_MODE_VECTORED: - description: | - Whether or not `stvec.MODE` supports Vectored (1). - schema: - type: boolean - extra_validation: assert STVEC_MODE_DIRECT || STVEC_MODE_VECTORED - SATP_MODE_BARE: - description: | - Whether or not satp.MODE == Bare is supported. - schema: - type: boolean - TRAP_ON_ECALL_FROM_S: - description: | - Whether or not an ECALL-from-S-mode causes a synchronous exception. - - The spec states that implementations may handle ECALLs transparently - without raising a trap, in which case the EEI must provide a builtin. - schema: - type: boolean - default: true - TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY: - description: | - For implementations that make `satp`.MODE read-only zero - (always Bare, _i.e._, no virtual translation is implemented), - attempts to execute an SFENCE.VMA instruction might raise an - illegal-instruction exception. - - TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY indicates whether - or not that exception occurs. - - TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY has no effect when - some virtual translation mode is supported. - schema: - type: boolean - default: false - extra_validation: assert TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY == false if ext?(:Sv32) || ext?(:Sv39) || ext?(:Sv48) || ext?(:Sv57) - MSTATUS_FS_WRITABLE: - description: | - When `S` is enabled but `F` is not, mstatus.FS is optionally writable. - schema: - type: boolean - extra_validation: | - assert MSTATUS_FS_WRITABLE == true if ext?(:F) - assert MSTATUS_FS_WRITABLE == false if (!ext?(:S) && !ext?(:F)) - MSTATUS_VS_WRITABLE: - description: | - When `S` is enabled but `V` is not, mstatus.VS is optionally writable. - schema: - type: boolean - extra_validation: | - assert MSTATUS_VS_WRITABLE == true if ext?(:V) - assert MSTATUS_VS_WRITABLE == false if (!ext?(:S) && !ext?(:V)) - MSTATUS_FS_LEGAL_VALUES: - description: | - The set of values that mstatus.FS will accept from a software write. - schema: - type: array - items: - type: integer - enum: [0, 1, 2, 3] - maxItems: 4 - uniqueItems: true - also_defined_in: F - extra_validation: | - assert MSTATUS_FS_LEGAL_VALUES.include?(0) && MSTATUS_FS_LEGAL_VALUES.include?(3) if ext?(:F) - MSTATUS_VS_LEGAL_VALUES: - description: | - The set of values that mstatus.VS will accept from a software write. - schema: - type: array - items: - type: integer - enum: [0, 1, 2, 3] - maxItems: 4 - uniqueItems: true - also_defined_in: V - extra_validation: | - assert MSTATUS_VS_LEGAL_VALUES.include?(0) && MSTATUS_VS_LEGAL_VALUES.include?(3) if ext?(:V) - - # if HW is writing VS, then Dirty (3) better be a supported value - assert MSTATUS_VS_LEGAL_VALUES.include?(3) if ext?(:V) && (HW_MSTATUS_VS_DIRTY_UPDATE != "never") - MSTATUS_TVM_IMPLEMENTED: - description: | - Whether or not mstatus.TVM is implemented. - - When not implemented mstatus.TVM will be read-only-zero. - schema: - type: boolean - MSTATEEN_ENVCFG_TYPE: - when: - name: Smstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - description: | - Behavior of the mstateen0.ENVCFG bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - HSTATEEN_ENVCFG_TYPE: - when: - allOf: - - name: H - version: ~> 1.0 - - name: Ssstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - description: | - Behavior of the hstateen0.ENVCFG bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - extra_validation: | - assert HSTATEEN_ENVCFG_TYPE == 'read-only-0' if MSTATEEN_ENVCFG_TYPE == 'read-only-0' - assert HSTATEEN_ENVCFG_TYPE == 'read-only-1' if MSTATEEN_ENVCFG_TYPE == 'read-only-1' diff --git a/spec/std/isa/ext/Sdext.yaml b/spec/std/isa/ext/Sdext.yaml index 618bdfb697..2394e26efd 100644 --- a/spec/std/isa/ext/Sdext.yaml +++ b/spec/std/isa/ext/Sdext.yaml @@ -14,52 +14,3 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2025-02 -params: - DCSR_MPRVEN_TYPE: - schema: - type: string - enum: [read-only-0, read-only-1, rw] - description: | - Implementation of dcsr.MPRVEN is optional. - It may be tied to either 0 or 1. - - Behavior of the dcsr.MPRVEN bit: - * 'read-only-0': tied to 0 - * 'read-only-1': tied to 1 - * 'rw': read-write - DCSR_STEPIE_TYPE: - schema: - type: string - enum: [read-only-0, read-only-1, rw] - description: | - Implementation of dcsr.STEPIE is optional. - It may be tied to either 0 or 1. - - Behavior of the dcsr.STEPIE bit: - * 'read-only-0': tied to 0 - * 'read-only-1': tied to 1 - * 'rw': read-write - DCSR_STOPCOUNT_TYPE: - schema: - type: string - enum: [read-only-0, read-only-1, rw] - description: | - Implementation of dcsr.STOPCOUNT is optional. - It may be tied to either 0 or 1. - - Behavior of the dcsr.STOPCOUNT bit: - * 'read-only-0': tied to 0 - * 'read-only-1': tied to 1 - * 'rw': read-write - DCSR_STOPTIME_TYPE: - schema: - type: string - enum: [read-only-0, read-only-1, rw] - description: | - Implementation of dcsr.STOPTIME is optional. - It may be tied to either 0 or 1. - - Behavior of the dcsr.STOPTIME bit: - * 'read-only-0': tied to 0 - * 'read-only-1': tied to 1 - * 'rw': read-write diff --git a/spec/std/isa/ext/Sdtrig.yaml b/spec/std/isa/ext/Sdtrig.yaml index 0555435452..291d3b923c 100644 --- a/spec/std/isa/ext/Sdtrig.yaml +++ b/spec/std/isa/ext/Sdtrig.yaml @@ -26,64 +26,6 @@ description: | matches performs the action configured for that trigger. Triggers do not fire while in Debug Mode. -params: - DBG_HCONTEXT_WIDTH: - schema: - type: integer - minimum: 0 - maximum: 14 - description: Specifies the size of HCONTEXT - DBG_SCONTEXT_WIDTH: - schema: - type: integer - minimum: 0 - maximum: 32 - description: Specifies the size of SCONTEXT - MCONTEXT_AVAILABLE: - schema: - type: boolean - description: Specifies if MCONTEXT is available - HCONTEXT_AVAILABLE: - schema: - type: boolean - description: Specifies if HCONTEXT is available - extra_validation: | - # MCONTEXT must exist if HCONTEXT does - assert (MCONTEXT_AVAILABLE) if HCONTEXT_AVAILABLE - MSTATEEN_CONTEXT_TYPE: - when: - name: Smstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - default: rw - description: | - Behavior of the mstateen0.CONTEXT bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - HSTATEEN_CONTEXT_TYPE: - when: - allOf: - - name: H - version: ~> 1.0 - - name: Ssstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - default: rw - description: | - Behavior of the hstateen0.CONTEXT bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - extra_validation: | - assert HSTATEEN_CONTEXT_TYPE == 'read-only-0' if MSTATEEN_CONTEXT_TYPE == 'read-only-0' - assert HSTATEEN_CONTEXT_TYPE == 'read-only-1' if MSTATEEN_CONTEXT_TYPE == 'read-only-1' type: privileged versions: - version: "1.0.0" diff --git a/spec/std/isa/ext/Sha.yaml b/spec/std/isa/ext/Sha.yaml index 3d6a188111..88bff8ec09 100644 --- a/spec/std/isa/ext/Sha.yaml +++ b/spec/std/isa/ext/Sha.yaml @@ -48,20 +48,22 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - implies: - - name: H - version: "1.0.0" - - name: Ssstateen - version: "1.0.0" - - name: Shcounterenw - version: "1.0.0" - - name: Shvstvala - version: "1.0.0" - - name: Shtvala - version: "1.0.0" - - name: Shvstvecd - version: "1.0.0" - - name: Shvsatpa - version: "1.0.0" - - name: Shgatpa - version: "1.0.0" + requirements: + extension: + allOf: + - name: H + version: "= 1.0.0" + - name: Ssstateen + version: "= 1.0.0" + - name: Shcounterenw + version: "= 1.0.0" + - name: Shvstvala + version: "= 1.0.0" + - name: Shtvala + version: "= 1.0.0" + - name: Shvstvecd + version: "= 1.0.0" + - name: Shvsatpa + version: "= 1.0.0" + - name: Shgatpa + version: "= 1.0.0" diff --git a/spec/std/isa/ext/Shcounterenw.yaml b/spec/std/isa/ext/Shcounterenw.yaml index 83c7e77fef..6bb6930617 100644 --- a/spec/std/isa/ext/Shcounterenw.yaml +++ b/spec/std/isa/ext/Shcounterenw.yaml @@ -18,7 +18,12 @@ versions: state: ratified ratification_date: 2023-08 url: https://drive.google.com/file/d/1KcjgbLM5L1ZKY8934aJl8aQwGlMz6Cbo/view?usp=drive_link - param_constraints: - HCOUNTENABLE_EN: - extra_validation: | - HPM_COUNTER_EN.each_with_index { |hpm_exists, idx| assert(!hpm_exists || HCOUNTENABLE_EN[idx]) } +requirements: + idl(): | + -> implemented?(ExtensionName::H); + + for (U32 i = 3; i < 32; i++){ + HPM_COUNTER_EN[i] -> HCOUNTENABLE_EN[i]; + } + reason: + Shcounterenw requires that all non-read-only-0 counters can enabled with hcounteren. diff --git a/spec/std/isa/ext/Shgatpa.yaml b/spec/std/isa/ext/Shgatpa.yaml index c7dc68a0e8..0651991895 100644 --- a/spec/std/isa/ext/Shgatpa.yaml +++ b/spec/std/isa/ext/Shgatpa.yaml @@ -6,7 +6,7 @@ $schema: "ext_schema.json#" kind: extension name: Shgatpa -long_name: hgtap profile requirements +long_name: hgatp profile requirements description: | For each supported virtual memory scheme SvNN supported in `satp`, the corresponding hgatp SvNNx4 mode must be supported. The @@ -19,19 +19,24 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - param_constraints: - SV32X4_TRANSLATION: - extra_validation: | - (SV32X4_TRANSLATION && ext?(:Sv32)) || (!SV32X4_TRANSLATION && !ext?(:Sv32)) - SV39X4_TRANSLATION: - extra_validation: | - (SV39X4_TRANSLATION && ext?(:Sv39)) || (!SV39X4_TRANSLATION && !ext?(:Sv39)) - SV48X4_TRANSLATION: - extra_validation: | - (SV48X4_TRANSLATION && ext?(:Sv48)) || (!SV48X4_TRANSLATION && !ext?(:Sv48)) - SV57X4_TRANSLATION: - extra_validation: | - (SV57X4_TRANSLATION && ext?(:Sv57)) || (!SV57X4_TRANSLATION && !ext?(:Sv57)) - GSTAGE_MODE_BARE: - schema: - const: true +requirements: + idl(): | + -> implemented?(ExtensionName::H); + implemented?(ExtensionName::Sv32) -> SV32X4_TRANSLATION; + implemented?(ExtensionName::Sv39) -> SV39X4_TRANSLATION; + implemented?(ExtensionName::Sv48) -> SV48X4_TRANSLATION; + implemented?(ExtensionName::Sv57) -> SV57X4_TRANSLATION; + reason: | + Shgatpa mandates that or each supported virtual memory scheme SvNN supported in + `satp`, the corresponding hgatp SvNNx4 mode must be supported. + + Shgatpa mandates that or each supported virtual memory scheme SvNN supported in + `satp`, the corresponding hgatp SvNNx4 mode must be supported. + + Shgatpa mandates that or each supported virtual memory scheme SvNN supported in + `satp`, the corresponding hgatp SvNNx4 mode must be supported. + + Shgatpa mandates that or each supported virtual memory scheme SvNN supported in + `satp`, the corresponding hgatp SvNNx4 mode must be supported. + + Shgatpa mandates that `hgatp` mode Bare must also be supported. diff --git a/spec/std/isa/ext/Shtvala.yaml b/spec/std/isa/ext/Shtvala.yaml index 4adab88347..e444d65221 100644 --- a/spec/std/isa/ext/Shtvala.yaml +++ b/spec/std/isa/ext/Shtvala.yaml @@ -8,12 +8,8 @@ kind: extension name: Shtvala long_name: htval profile requirements description: | - htval must be written with the faulting virtual address - for load, store, and instruction page-fault, access-fault, and - misaligned exceptions, and for breakpoint exceptions other than - those caused by execution of the `ebreak` or `c.ebreak` instructions. - For virtual-instruction and illegal-instruction exceptions, htval must be written with the - faulting instruction. + htval must be written with the faulting guest physical address in all circumstances permitted by + the ISA. [NOTE] This extension was ratified with the RVA22 profiles. @@ -22,7 +18,11 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - param_constraints: - REPORT_GPA_IN_HTVAL_ON_GUEST_PAGE_FAULT: - schema: - const: true +requirements: + idl(): | + -> implemented?(ExtensionName::H); + + -> REPORT_GPA_IN_HTVAL_ON_GUEST_PAGE_FAULT; + reason: | + When Shtvala is implemented, htval must be written with the faulting guest physical address in all circumstances permitted by + the ISA. diff --git a/spec/std/isa/ext/Shvstvala.yaml b/spec/std/isa/ext/Shvstvala.yaml index d4b71dc493..6f610c2ea4 100644 --- a/spec/std/isa/ext/Shvstvala.yaml +++ b/spec/std/isa/ext/Shvstvala.yaml @@ -22,37 +22,27 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - param_constraints: - REPORT_VA_IN_VSTVAL_ON_BREAKPOINT: - schema: - const: true - REPORT_VA_IN_VSTVAL_ON_LOAD_MISALIGNED: - schema: - const: true - REPORT_VA_IN_VSTVAL_ON_STORE_AMO_MISALIGNED: - schema: - const: true - REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_MISALIGNED: - schema: - const: true - REPORT_VA_IN_VSTVAL_ON_LOAD_ACCESS_FAULT: - schema: - const: true - REPORT_VA_IN_VSTVAL_ON_STORE_AMO_ACCESS_FAULT: - schema: - const: true - REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_ACCESS_FAULT: - schema: - const: true - REPORT_VA_IN_VSTVAL_ON_LOAD_PAGE_FAULT: - schema: - const: true - REPORT_VA_IN_VSTVAL_ON_STORE_AMO_PAGE_FAULT: - schema: - const: true - REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_PAGE_FAULT: - schema: - const: true - REPORT_ENCODING_IN_VSTVAL_ON_ILLEGAL_INSTRUCTION: - schema: - const: true +requirements: + idl(): | + -> implemented?(ExtensionName::H); + -> + REPORT_VA_IN_VSTVAL_ON_BREAKPOINT && + REPORT_VA_IN_VSTVAL_ON_LOAD_MISALIGNED && + REPORT_VA_IN_VSTVAL_ON_STORE_AMO_MISALIGNED && + REPORT_VA_IN_VSTVAL_ON_STORE_AMO_MISALIGNED && + REPORT_VA_IN_VSTVAL_ON_LOAD_ACCESS_FAULT && + REPORT_VA_IN_VSTVAL_ON_STORE_AMO_ACCESS_FAULT && + REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_ACCESS_FAULT && + REPORT_VA_IN_VSTVAL_ON_LOAD_PAGE_FAULT && + REPORT_VA_IN_VSTVAL_ON_STORE_AMO_PAGE_FAULT && + REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_PAGE_FAULT && + REPORT_ENCODING_IN_VSTVAL_ON_VIRTUAL_INSTRUCTION && + REPORT_ENCODING_IN_VSTVAL_ON_ILLEGAL_INSTRUCTION; + reason: | + Shvstvala mandates that vstval must be written with the faulting virtual address + for load, store, and instruction page-fault, access-fault, and + misaligned exceptions, and for breakpoint exceptions other than + those caused by execution of the `ebreak` or `c.ebreak` instructions. + + For virtual-instruction and illegal-instruction exceptions, + vstval must be written with the faulting instruction. diff --git a/spec/std/isa/ext/Shvstvecd.yaml b/spec/std/isa/ext/Shvstvecd.yaml index a60eac9f4a..f7af3bc031 100644 --- a/spec/std/isa/ext/Shvstvecd.yaml +++ b/spec/std/isa/ext/Shvstvecd.yaml @@ -19,7 +19,8 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - param_constraints: - VSTVEC_MODE_DIRECT: - schema: - const: true +requirements: + idl(): | + -> VSTVEC_MODE_DIRECT; + reason: + Shvstvecd mandates that `vstvec.MODE` must be capable of holding the value 0 (Direct). diff --git a/spec/std/isa/ext/Sm.yaml b/spec/std/isa/ext/Sm.yaml index ecf9ecf6eb..ea82ed348a 100644 --- a/spec/std/isa/ext/Sm.yaml +++ b/spec/std/isa/ext/Sm.yaml @@ -103,391 +103,3 @@ description: | This chapter describes the RISC-V machine-level architecture, which contains a common core that is used with various supervisor-level address translation and protection schemes. -interrupt_codes: - - num: 1 - name: Supervisor software interrupt - var: SupervisorSoftware - - num: 3 - name: Machine software interrupt - var: MachineSoftware - - num: 5 - name: Supervisor timer interrupt - var: SupervisorTimer - - num: 7 - name: Machine timer interrupt - var: MachineTimer - - num: 9 - name: Supervisor external interrupt - var: SupervisorExternal - - num: 11 - name: Machine external interrupt - var: MachineExternal -exception_codes: - - num: 0 - name: Instruction address misaligned - var: InstructionAddressMisaligned - - num: 1 - name: Instruction access fault - var: InstructionAccessFault - - num: 2 - name: Illegal instruction - var: IllegalInstruction - - num: 3 - name: Breakpoint - var: Breakpoint - - num: 4 - name: Load address misaligned - var: LoadAddressMisaligned - - num: 5 - name: Load access fault - var: LoadAccessFault - - num: 6 - name: Store/AMO address misaligned - var: StoreAmoAddressMisaligned - - num: 7 - name: Store/AMO access fault - var: StoreAmoAccessFault - - num: 8 - name: Environment call from <%- if ext?(:H) -%>V<%- end -%>U-mode - var: Ucall - - num: 9 - name: Environment call from <%- if ext?(:H) -%>H<%- end -%>S-mode - var: Scall - - num: 11 - name: Environment call from M-mode - var: Mcall - - num: 12 - name: Instruction page fault - var: InstructionPageFault - - num: 13 - name: Load page fault - var: LoadPageFault - - num: 15 - name: Store/AMO page fault - var: StoreAmoPageFault - - num: 18 - name: Software Check - var: SoftwareCheck - when: - version: ">= 1.13.0" -params: - MXLEN: - description: | - XLEN in M-mode - schema: - type: integer - enum: [32, 64] - PRECISE_SYNCHRONOUS_EXCEPTIONS: - description: | - Whether or not all synchronous exceptions are precise. - - If false, any exception not otherwise mandated to precise (e.g., PMP violation) - will cause execution to enter an unpredictable state. - schema: - type: boolean - default: true - TRAP_ON_ECALL_FROM_M: - description: | - Whether or not an ECALL-from-M-mode causes a synchronous exception. - - The spec states that implementations may handle ECALLs transparently - without raising a trap, in which case the EEI must provide a builtin. - schema: - type: boolean - default: true - TRAP_ON_EBREAK: - description: | - Whether or not an EBREAK causes a synchronous exception. - - The spec states that implementations may handle EBREAKs transparently - without raising a trap, in which case the EEI must provide a builtin. - schema: - type: boolean - default: true - ARCH_ID: - description: | - Vendor-specific architecture ID in `marchid` - schema: - type: integer - minimum: 0 - maximum: 0xffffffffffffffff - IMP_ID: - description: | - Vendor-specific implementation ID in `mimpid` - schema: - type: integer - minimum: 0 - maximum: 0xffffffffffffffff - VENDOR_ID_BANK: - description: | - JEDEC Vendor ID bank, for `mvendorid` - schema: - type: integer - minimum: 0 - maximum: 33554431 - VENDOR_ID_OFFSET: - description: | - Vendor JEDEC code offset, for `mvendorid` - schema: - type: integer - minimum: 0 - maximum: 127 - MISALIGNED_LDST: - description: | - Does the implementation perform non-atomic misaligned loads and stores to main memory - (does *not* affect misaligned support to device memory)? - If not, the implementation always throws a misaligned exception. - schema: - type: boolean - MISALIGNED_LDST_EXCEPTION_PRIORITY: - description: | - The relative priority of a load/store/AMO exception vs. load/store/AMO page-fault - or access-fault exceptions. - - May be one of: - - [separator="!"] - !=== - ! low ! Misaligned load/store/AMO exceptions are always lower priority than load/store/AMO page-fault and access-fault exceptions. - ! high ! Misaligned load/store/AMO exceptions are always higher priority than load/store/AMO page-fault and access-fault exceptions. - !=== - - MISALIGNED_LDST_EXCEPTION_PRIORITY cannot be "high" when MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE - is non-zero, since the atomicity of an access cannot be determined in that case until after - address translation. - schema: - type: string - enum: ["low", "high"] - extra_validation: | - assert (MISALIGNED_LDST_EXCEPTION_PRIORITY == "low") if MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE.positive? - MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE: - description: | - The maximum granule size, in bytes, that the hart can atomically perform a - misaligned load/store/AMO without raising a Misaligned exception. When MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE is 0, the hart - cannot atomically perform a misaligned load/store/AMO. When a power of two, the hart can - atomically load/store/AMO a misaligned access that is fully contained in a - MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE-aligned region. - - [NOTE] - Even if the hart is capable of performing a misaligned load/store/AMO atomically, - a misaligned exception may still occur if the access does not have the appropriate - Misaligned Atomicity Granule PMA set. - schema: - type: integer - # can't be larger than a page, since there is no way to reconcile that with virtual memory - enum: [0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096] - MISALIGNED_SPLIT_STRATEGY: - description: | - When misaligned accesses are supported, this determines the *order* in the implementation appears - to process the load/store, which determines how/which exceptions will be reported - - Options: - - * by_byte: The load/store appears to be broken into byte-sized accesses that processed sequentially from smallest address to largest address - * custom: Something else. Will result in a call to unpredictable() in the execution - schema: - type: string - enum: ["by_byte", "custom"] - TRAP_ON_ILLEGAL_WLRL: - description: | - When true, writing an illegal value to a WLRL CSR field raises an `IllegalInstruction` exception. - - When false, writing an illegal value to a WLRL CSR field is `unpredictable`. - schema: - type: boolean - TRAP_ON_UNIMPLEMENTED_INSTRUCTION: - description: | - When true, fetching an unimplemented instruction from the custom encoding space will cause - an `IllegalInstruction` exception. - - When false, fetching an unimplemented instruction is `UNPREDICTABLE`. - schema: - type: boolean - TRAP_ON_RESERVED_INSTRUCTION: - description: | - When true, fetching an unimplemented and/or undefined instruction from the standard/reserved - encoding space will cause an `IllegalInstruction` exception. - - When false, fetching such an instruction is `UNPREDICTABLE`. - schema: - type: boolean - TRAP_ON_UNIMPLEMENTED_CSR: - description: | - When true, accessing an unimplemented CSR (via a `Zicsr` instruction) will cause an `IllegalInstruction` exception. - - When false, accessing an unimplemented CSR (via a `Zicsr` instruction) is `unpredictable`. - schema: - type: boolean - REPORT_VA_IN_MTVAL_ON_BREAKPOINT: - description: | - When true, `mtval` is written with the virtual PC of the EBREAK instruction (same information as `mepc`). - - When false, `mtval` is written with 0 on an EBREAK instruction. - - Regardless, `mtval` is always written with a virtual PC when an external breakpoint is generated - schema: - type: boolean - REPORT_VA_IN_MTVAL_ON_LOAD_MISALIGNED: - description: | - When true, `mtval` is written with the virtual address of a load instruction when the - address is misaligned and MISALIGNED_LDST is false. - - When false, `mtval` is written with 0 when a load address is misaligned and - MISALIGNED_LDST is false. - schema: - type: boolean - REPORT_VA_IN_MTVAL_ON_STORE_AMO_MISALIGNED: - description: | - When true, `mtval` is written with the virtual address of a store instruction when the - address is misaligned and MISALIGNED_LDST is false. - - When false, `mtval` is written with 0 when a store address is misaligned and - MISALIGNED_LDST is false. - schema: - type: boolean - REPORT_VA_IN_MTVAL_ON_INSTRUCTION_MISALIGNED: - description: | - When true, `mtval` is written with the virtual PC when an instruction fetch is misaligned. - - When false, `mtval` is written with 0 when an instruction fetch is misaligned. - - Note that when IALIGN=16 (i.e., when the `C` or one of the `Zc*` extensions are implemented), - it is impossible to generate a misaligned fetch, and so this parameter has no effect. - schema: - type: boolean - REPORT_VA_IN_MTVAL_ON_LOAD_ACCESS_FAULT: - description: | - When true, `mtval` is written with the virtual address of a load when it causes a - `LoadAccessFault`. - - WHen false, `mtval` is written with 0 when a load causes a `LoadAccessFault`. - schema: - type: boolean - REPORT_VA_IN_MTVAL_ON_STORE_AMO_ACCESS_FAULT: - description: | - When true, `mtval` is written with the virtual address of a store when it causes a - `StoreAmoAccessFault`. - - WHen false, `mtval` is written with 0 when a store causes a `StoreAmoAccessFault`. - schema: - type: boolean - REPORT_VA_IN_MTVAL_ON_INSTRUCTION_ACCESS_FAULT: - description: | - When true, `mtval` is written with the virtual PC of an instructino when fetch causes an - `InstructionAccessFault`. - - WHen false, `mtval` is written with 0 when an instruction fetch causes an - `InstructionAccessFault`. - schema: - type: boolean - REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION: - description: | - When true, `mtval` is written with the encoding of an instruction that causes an - `IllegalInstruction` exception. - - When false `mtval` is written with 0 when an `IllegalInstruction` exception occurs. - schema: - type: boolean - MTVAL_WIDTH: - description: | - The number of implemented bits in the `mtval` CSR. - This is the CSR that may be written when a trap is taken into M-mode with exception-specific information to - assist software in handling the trap (e.g., address associated with exception). - - Must be greater than or equal to _max_(`PHYS_ADDR_WIDTH`, `VA_SIZE`) - schema: - type: integer - maximum: 64 - CONFIG_PTR_ADDRESS: - description: | - Physical address of the unified discovery configuration data structure. - This address is reported in the `mconfigptr` CSR. - schema: - type: integer - minimum: 0 - maximum: 0xFFFFFFFFFFFFFFFF - when: - name: Sm - version: ">= 1.12.0" - PMA_GRANULARITY: - description: | - log2 of the smallest supported PMA region. - - Generally, for systems with an MMU, should not be smaller than 12, - as that would preclude caching PMP results in the TLB along with - virtual memory translations - schema: - type: integer - minimum: 2 - maximum: 66 - PHYS_ADDR_WIDTH: - description: | - Number of bits in the physical address space. - schema: - type: integer - minimum: 1 - maximum: 64 - M_MODE_ENDIANNESS: - description: | - Endianness of data in M-mode. Can be one of: - - [separator="!"] - !=== - h! little ! M-mode data is always little endian - h! big ! M-mode data is always big endian - h! dynamic ! M-mode data can be either little or big endian, - depending on the CSR field `mstatus.MBE` - !=== - schema: - type: string - enum: [little, big, dynamic] - # TODO: Only little available in Sm 1.11 - MISA_CSR_IMPLEMENTED: - description: | - Whether or not the `misa` CSR returns zero or a non-zero value. - - Possible values: - - true:: - The `misa` CSR returns a non-zero value. - - false:: - The `misa` CSR is read-only-0. - schema: - type: boolean - MTVEC_MODES: - description: | - Modes supported by `mtvec.MODE`. If only one, it is assumed to be read-only with that value. - schema: - type: array - items: - type: integer - enum: [0, 1] - minItems: 1 - maxItems: 2 - uniqueItems: true - MTVEC_BASE_ALIGNMENT_DIRECT: - description: | - Byte alignment for `mtvec.BASE` when `mtvec.MODE` is Direct. - - Cannot be less than 4-byte alignment. - schema: - type: integer - minimum: 4 - maximum: 64 - default: 4 - extra_validation: | - # must be a power of two - assert MTVEC_BASE_ALIGNMENT_DIRECT.to_s(2).count('1') == 1 - MTVEC_BASE_ALIGNMENT_VECTORED: - description: | - Byte alignment for `mtvec.BASE` when `mtvec.MODE` is Vectored. - - Cannot be less than 4-byte alignment. - schema: - type: integer - minimum: 4 - default: 4 - extra_validation: | - # must be a power of two - assert MTVEC_BASE_ALIGNMENT_VECTORED.to_s(2).count('1') == 1 diff --git a/spec/std/isa/ext/Smcsrind.yaml b/spec/std/isa/ext/Smcsrind.yaml index 35d112dded..1d7bd2d6d8 100644 --- a/spec/std/isa/ext/Smcsrind.yaml +++ b/spec/std/isa/ext/Smcsrind.yaml @@ -41,4 +41,5 @@ versions: state: ratified ratification_date: "2024-11" url: "https://github.com/riscv/riscv-isa-manual/releases/tag/riscv-isa-release-482805d-2025-03-25" - requires: { name: S, version: "~> 1.13" } +requirements: + extension: { name: S, version: "~> 1.13" } diff --git a/spec/std/isa/ext/Smhpm.yaml b/spec/std/isa/ext/Smhpm.yaml index fc4b5db139..d1d54f9222 100644 --- a/spec/std/isa/ext/Smhpm.yaml +++ b/spec/std/isa/ext/Smhpm.yaml @@ -27,68 +27,3 @@ versions: - version: "1.13.0" state: frozen ratification_date: 2023-12 -params: - HPM_COUNTER_EN: - description: | - List of HPM counters that are enabled. - There is one entry for each hpmcounter. - - The first three entries *must* be false (as they correspond to CY, IR, TM in, _e.g._ `mhmpcountinhibit`) - Index 3 in HPM_COUNTER_EN corresponds to hpmcounter3. - Index 31 in HPM_COUNTER_EN corresponds to hpmcounter31. - schema: - type: array - items: - - const: false - - const: false - - const: false - additionalItems: - type: boolean - maxItems: 32 - minItems: 32 - HPM_EVENTS: - description: | - List of defined event numbers that can be written into hpmeventN - schema: - type: array - items: - type: integer - minimum: 0 - maximum: 0x03ffffffffffffff # bits 63-58 are used by `Sscofpmf` - COUNTINHIBIT_EN: - description: | - Indicates which hardware performance monitor counters can be disabled from `mcountinhibit`. - - An unimplemented counter cannot be specified, i.e., if HPM_COUNTER_EN[3] is false, - it would be illegal to set COUNTINHIBIT_EN[3] to true. - - COUNTINHIBIT_EN[1] can never be true, since it corresponds to `mcountinhibit.TM`, - which is always read-only-0. - - COUNTINHIBIT_EN[3:31] must all be false if `Zihpm` is not implemented. - schema: - type: array - items: - - type: boolean - - const: false - - type: boolean - additionalItems: - type: boolean - maxItems: 32 - minItems: 32 - MCOUNTENABLE_EN: - description: | - Indicates which counters can be delegated via `mcounteren`. - - An unimplemented counter cannot be specified, i.e., if - HPM_COUNTER_EN[3] is false, it would be illegal to set - MCOUNTENABLE_EN[3] to true. - - MCOUNTENABLE_EN[0:2] must all be false if `Zicntr` is not implemented. - MCOUNTENABLE_EN[3:31] must all be false if `Zihpm` is not implemented. - schema: - type: array - items: - type: boolean - maxItems: 32 - minItems: 32 diff --git a/spec/std/isa/ext/Smmpm.yaml b/spec/std/isa/ext/Smmpm.yaml index d8a5526c77..caf6f0ae4d 100644 --- a/spec/std/isa/ext/Smmpm.yaml +++ b/spec/std/isa/ext/Smmpm.yaml @@ -14,11 +14,3 @@ versions: - version: "1.0.0" state: ratified ratification_date: null -params: - PMLEN: - description: | - The number of high-order bits of an address that are masked by the - pointer masking facility. - schema: - type: integer - also_defined_in: [Ssnpm, Smmpm] diff --git a/spec/std/isa/ext/Smnpm.yaml b/spec/std/isa/ext/Smnpm.yaml index 883b389a72..e74c1fddf1 100644 --- a/spec/std/isa/ext/Smnpm.yaml +++ b/spec/std/isa/ext/Smnpm.yaml @@ -15,11 +15,3 @@ versions: - version: "1.0.0" state: ratified ratification_date: null -params: - PMLEN: - description: | - The number of high-order bits of an address that are masked by the - pointer masking facility. - schema: - type: integer - also_defined_in: [Ssnpm, Smmpm] diff --git a/spec/std/isa/ext/Smpmp.yaml b/spec/std/isa/ext/Smpmp.yaml index 5c168af130..fdc423e7f6 100644 --- a/spec/std/isa/ext/Smpmp.yaml +++ b/spec/std/isa/ext/Smpmp.yaml @@ -40,49 +40,3 @@ description: | PMP has no visible ISA features (such as read-only-0 CSRs) if not present in an implementation. Making it an extension in the database prevents having the PMP CSRs show up in implementations that don't have a PMP. -- -params: - NUM_PMP_ENTRIES: - description: | - Number of implemented PMP entries. Can be any value between 0-64, inclusive. - - The architecture mandates that the number of implemented PMP registers - must appear to be 0, 16, or 64. - - Therefore, pmp registers will behave as follows according to NUN_PMP_ENTRIES: - - [separator="!"] - !=== - ! NUM_PMP_ENTRIES ! pmpaddr<0-15> / pmpcfg<0-3> ! pmpaddr<16-63> / pmpcfg<4-15> - ! 0 ! N ! N - ! 1-16 ! Y ! N - ! 17-64 ! Y ! Y - !=== - - ** N = Not implemented; access will cause `IllegalInstruction` - if TRAP_ON_UNIMPLEMENTED_CSR is true - ** Y = Implemented; access will not cause an exception (from M-mode), but register - may be read-only-zero if NUM_PMP_ENTRIES is less than the corresponding register - - [NOTE] - `pmpcfgN` for an odd N never exists when XLEN == 64 - - When NUM_PMP_ENTRIES is not exactly 0, 16, or 64, some extant pmp registers, - and associated pmpNcfg, will be read-only zero (but will never cause an exception). - schema: - type: integer - minimum: 0 - maximum: 64 - PMP_GRANULARITY: - description: | - log2 of the smallest supported PMP region. - - Generally, for systems with an MMU, should not be smaller than 12, - as that would preclude caching PMP results in the TLB along with - virtual memory translations - - Note that PMP_GRANULARITY is equal to G+2 (not G) as described in - the privileged architecture. - schema: - type: integer - minimum: 2 - maximum: 66 diff --git a/spec/std/isa/ext/Ssaia.yaml b/spec/std/isa/ext/Ssaia.yaml index 8e492a6eba..b629de5d73 100644 --- a/spec/std/isa/ext/Ssaia.yaml +++ b/spec/std/isa/ext/Ssaia.yaml @@ -14,72 +14,7 @@ versions: state: ratified ratification_date: 2023-06 url: https://github.com/riscv/riscv-aia/releases/download/1.0/riscv-interrupts-1.0.pdf - requires: - name: S - version: ">= 1.12" - -params: - MSTATEEN_AIA_TYPE: - when: - name: Smstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - description: | - Behavior of the mstateen0.AIA bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - HSTATEEN_AIA_TYPE: - when: - allOf: - - name: H - version: ~> 1.0 - - name: Ssstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - description: | - Behavior of the hstateen0.AIA bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - extra_validation: | - assert HSTATEEN_AIA_TYPE == 'read-only-0' if MSTATEEN_AIA_TYPE == 'read-only-0' - assert HSTATEEN_AIA_TYPE == 'read-only-1' if MSTATEEN_AIA_TYPE == 'read-only-1' - MSTATEEN_IMSIC_TYPE: - when: - name: Smstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - description: | - Behavior of the mstateen0.IMSIC bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - HSTATEEN_IMSIC_TYPE: - when: - allOf: - - name: H - version: ~> 1.0 - - name: Ssstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - description: | - Behavior of the hstateen0.IMSIC bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - extra_validation: | - assert HSTATEEN_IMSIC_TYPE == 'read-only-0' if MSTATEEN_IMSIC_TYPE == 'read-only-0' - assert HSTATEEN_IMSIC_TYPE == 'read-only-1' if MSTATEEN_IMSIC_TYPE == 'read-only-1' +requirements: + extension: + name: S + version: ">= 1.12" diff --git a/spec/std/isa/ext/Sscofpmf.yaml b/spec/std/isa/ext/Sscofpmf.yaml index 6c0400862b..88313e52ca 100644 --- a/spec/std/isa/ext/Sscofpmf.yaml +++ b/spec/std/isa/ext/Sscofpmf.yaml @@ -14,9 +14,6 @@ versions: state: ratified ratification_date: 2023-08 url: https://drive.google.com/file/d/1KcjgbLM5L1ZKY8934aJl8aQwGlMz6Cbo/view?usp=drive_link - requires: - name: Smhpm -interrupt_codes: - - num: 13 - name: Local counter overflow interrupt - var: LocalCounterOverflow +requirements: + extension: + name: Smhpm diff --git a/spec/std/isa/ext/Sscounterenw.yaml b/spec/std/isa/ext/Sscounterenw.yaml index 8b8c5e73c2..6c8c48cb36 100644 --- a/spec/std/isa/ext/Sscounterenw.yaml +++ b/spec/std/isa/ext/Sscounterenw.yaml @@ -18,7 +18,13 @@ versions: state: ratified ratification_date: 2023-08 url: https://drive.google.com/file/d/1KcjgbLM5L1ZKY8934aJl8aQwGlMz6Cbo/view?usp=drive_link - param_constraints: - SCOUNTENABLE_EN: - extra_validation: | - HPM_COUNTER_EN.each_with_index { |hpm_exists, idx| assert(!hpm_exists || SCOUNTENABLE_EN[idx]) } +requirements: + idl(): | + -> implemented?(ExtensionName::Zihpm) && implemented?(ExtensionName::S); + + for (U32 i = 0; i < 32; i++) { + HPM_COUNTER_EN[i] -> SCOUNTENABLE_EN[i]; + } + reason: + Sscounterenw mandates that for any hpmcounter that is not read-only zero, the corresponding + bit in `scounteren` must be writable. diff --git a/spec/std/isa/ext/Sscsrind.yaml b/spec/std/isa/ext/Sscsrind.yaml index 4d40069a1f..65077f7df0 100644 --- a/spec/std/isa/ext/Sscsrind.yaml +++ b/spec/std/isa/ext/Sscsrind.yaml @@ -39,43 +39,10 @@ versions: state: ratified ratification_date: "2024-11" url: "https://github.com/riscv/riscv-isa-manual/releases/tag/riscv-isa-release-482805d-2025-03-25" - requires: - allOf: - - name: S - version: ~> 1.13 - - name: Smcsrind - version: ~> 1.0 - -params: - MSTATEEN_CSRIND_TYPE: - when: - name: Smstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - description: | - Behavior of the mstateen0.CSRIND bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - HSTATEEN_CSRIND_TYPE: - when: - allOf: - - name: H - version: ~> 1.0 - - name: Ssstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - description: | - Behavior of the hstateen0.CSRIND bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - extra_validation: | - assert HSTATEEN_CSRIND_TYPE == 'read-only-0' if MSTATEEN_CSRIND_TYPE == 'read-only-0' - assert HSTATEEN_CSRIND_TYPE == 'read-only-1' if MSTATEEN_CSRIND_TYPE == 'read-only-1' +requirements: + extension: + allOf: + - name: S + version: ~> 1.13 + - name: Smcsrind + version: ~> 1.0 diff --git a/spec/std/isa/ext/Ssnpm.yaml b/spec/std/isa/ext/Ssnpm.yaml index d42c995298..e2e760afa3 100644 --- a/spec/std/isa/ext/Ssnpm.yaml +++ b/spec/std/isa/ext/Ssnpm.yaml @@ -15,11 +15,3 @@ versions: - version: "1.0.0" state: ratified ratification_date: null -params: - PMLEN: - description: | - The number of high-order bits of an address that are masked by the - pointer masking facility. - schema: - type: integer - also_defined_in: [Smnpm, Smmpm] diff --git a/spec/std/isa/ext/Ssqosid.yaml b/spec/std/isa/ext/Ssqosid.yaml index 217463c34c..191e206bee 100644 --- a/spec/std/isa/ext/Ssqosid.yaml +++ b/spec/std/isa/ext/Ssqosid.yaml @@ -31,28 +31,10 @@ description: | which provides methods for setting resource usage limits and monitoring resource consumption. The RCID controls resource allocations, while the MCID is used for tracking resource usage. -params: - RCID_WIDTH: - description: | - Number of bits used for the Resource Control ID field (RCID). - Default is 12. - schema: - type: integer - minimum: 1 - maximum: 12 - - MCID_WIDTH: - description: | - Number of bits used for the Monitoring Counter ID field (MCID). - Default is 12. - schema: - type: integer - minimum: 1 - maximum: 12 - versions: - version: "1.0.0" state: ratified ratification_date: "2024-06" url: "https://github.com/riscv/riscv-isa-manual/releases/tag/riscv-isa-release-5308687-2025-04-22" - requires: { name: S, version: ~> 1.13 } +requirements: + extension: { name: S, version: ~> 1.13 } diff --git a/spec/std/isa/ext/Sstvala.yaml b/spec/std/isa/ext/Sstvala.yaml index cddcd652b0..45fb88ab1a 100644 --- a/spec/std/isa/ext/Sstvala.yaml +++ b/spec/std/isa/ext/Sstvala.yaml @@ -30,37 +30,28 @@ versions: contributors: - name: Krste Asanovic company: SiFive, Inc. - param_constraints: - REPORT_VA_IN_STVAL_ON_BREAKPOINT: - schema: - const: true - REPORT_VA_IN_STVAL_ON_INSTRUCTION_ACCESS_FAULT: - schema: - const: true - REPORT_VA_IN_STVAL_ON_LOAD_ACCESS_FAULT: - schema: - const: true - REPORT_VA_IN_STVAL_ON_STORE_AMO_ACCESS_FAULT: - schema: - const: true - REPORT_VA_IN_STVAL_ON_INSTRUCTION_PAGE_FAULT: - schema: - const: true - REPORT_VA_IN_STVAL_ON_LOAD_PAGE_FAULT: - schema: - const: true - REPORT_VA_IN_STVAL_ON_STORE_AMO_PAGE_FAULT: - schema: - const: true - REPORT_VA_IN_STVAL_ON_INSTRUCTION_MISALIGNED: - schema: - const: true - REPORT_VA_IN_STVAL_ON_LOAD_MISALIGNED: - schema: - const: true - REPORT_VA_IN_STVAL_ON_STORE_AMO_MISALIGNED: - schema: - const: true - REPORT_ENCODING_IN_STVAL_ON_ILLEGAL_INSTRUCTION: - schema: - const: true +requirements: + param: + allOf: + - name: REPORT_VA_IN_STVAL_ON_BREAKPOINT + equal: true + - name: REPORT_VA_IN_STVAL_ON_INSTRUCTION_ACCESS_FAULT + equal: true + - name: REPORT_VA_IN_STVAL_ON_LOAD_ACCESS_FAULT + equal: true + - name: REPORT_VA_IN_STVAL_ON_STORE_AMO_ACCESS_FAULT + equal: true + - name: REPORT_VA_IN_STVAL_ON_INSTRUCTION_PAGE_FAULT + equal: true + - name: REPORT_VA_IN_STVAL_ON_LOAD_PAGE_FAULT + equal: true + - name: REPORT_VA_IN_STVAL_ON_STORE_AMO_PAGE_FAULT + equal: true + - name: REPORT_VA_IN_STVAL_ON_INSTRUCTION_MISALIGNED + equal: true + - name: REPORT_VA_IN_STVAL_ON_LOAD_MISALIGNED + equal: true + - name: REPORT_VA_IN_STVAL_ON_STORE_AMO_MISALIGNED + equal: true + - name: REPORT_ENCODING_IN_STVAL_ON_ILLEGAL_INSTRUCTION + equal: true diff --git a/spec/std/isa/ext/Sstvecd.yaml b/spec/std/isa/ext/Sstvecd.yaml index 09141903ca..8444611315 100644 --- a/spec/std/isa/ext/Sstvecd.yaml +++ b/spec/std/isa/ext/Sstvecd.yaml @@ -23,7 +23,7 @@ versions: contributors: - name: Krste Asanovic company: SiFive, Inc. - param_constraints: - STVEC_MODE_DIRECT: - schema: - const: true +requirements: + param: + name: STVEC_MODE_DIRECT + equal: true diff --git a/spec/std/isa/ext/Ssu64xl.yaml b/spec/std/isa/ext/Ssu64xl.yaml index 01a1713a1d..6bc6575891 100644 --- a/spec/std/isa/ext/Ssu64xl.yaml +++ b/spec/std/isa/ext/Ssu64xl.yaml @@ -17,7 +17,8 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - param_constraints: - UXLEN: - schema: - enum: [64, 3264] +requirements: + param: + name: UXLEN + oneOf: [ [64], [32, 64] ] + reason: Ssu64xl is satisfied when UXLEN is either read-only RV64 or read-write diff --git a/spec/std/isa/ext/Sv48.yaml b/spec/std/isa/ext/Sv48.yaml index 0e26070eab..3f0b541897 100644 --- a/spec/std/isa/ext/Sv48.yaml +++ b/spec/std/isa/ext/Sv48.yaml @@ -13,19 +13,22 @@ versions: - version: "1.11.0" state: ratified ratification_date: null - requires: - name: Sv39 - version: ">= 1.11" + requirements: + extension: + name: Sv39 + version: ">= 1.11" - version: "1.12.0" state: ratified ratification_date: null url: https://github.com/riscv/riscv-isa-manual/releases/download/Priv-v1.12/riscv-privileged-20211203.pdf - requires: - name: Sv39 - version: ">= 1.12" + requirements: + extension: + name: Sv39 + version: ">= 1.12" - version: "1.13.0" state: ratified ratification_date: null - requires: - name: Sv39 - version: ">= 1.13" + requirements: + extension: + name: Sv39 + version: ">= 1.13" diff --git a/spec/std/isa/ext/Sv57.yaml b/spec/std/isa/ext/Sv57.yaml index cf5029aee9..a8ed6c4796 100644 --- a/spec/std/isa/ext/Sv57.yaml +++ b/spec/std/isa/ext/Sv57.yaml @@ -13,19 +13,22 @@ versions: - version: "1.11.0" state: ratified ratification_date: null - requires: - name: Sv48 - version: ">= 1.11" + requirements: + extension: + name: Sv48 + version: ">= 1.11" - version: "1.12.0" state: ratified ratification_date: null url: https://github.com/riscv/riscv-isa-manual/releases/download/Priv-v1.12/riscv-privileged-20211203.pdf - requires: - name: Sv48 - version: ">= 1.12" + requirements: + extension: + name: Sv48 + version: ">= 1.12" - version: "1.13.0" state: ratified ratification_date: null - requires: - name: Sv48 - version: ">= 1.13" + requirements: + extension: + name: Sv48 + version: ">= 1.13" diff --git a/spec/std/isa/ext/Svade.yaml b/spec/std/isa/ext/Svade.yaml index 339657514d..67fb61dc53 100644 --- a/spec/std/isa/ext/Svade.yaml +++ b/spec/std/isa/ext/Svade.yaml @@ -41,3 +41,13 @@ versions: doc_license: name: Creative Commons Attribution 4.0 International License (CC-BY 4.0) url: https://creativecommons.org/licenses/by/4.0/ +requirements: + allOf: + # Svade was defined with Sm 1.13 + # it needs at least Sm 1.11 for menvcfg defintion + - extension: + name: Sm + version: ">= 1.13" + - not: + extension: + name: Svadu diff --git a/spec/std/isa/ext/Svadu.yaml b/spec/std/isa/ext/Svadu.yaml index 1c22a204c3..23b2b2267a 100644 --- a/spec/std/isa/ext/Svadu.yaml +++ b/spec/std/isa/ext/Svadu.yaml @@ -121,7 +121,16 @@ versions: - name: Paul Donahue - name: Ved Shanbhogue company: Rivos, Inc. -conflicts: Svade +requirements: + allOf: + # Svadu was defined with Sm 1.13 + # it needs at least Sm 1.11 for menvcfg defintion + - extension: + name: Sm + version: ">= 1.13" + - not: + extension: + name: Svade doc_license: name: Creative Commons Attribution 4.0 International License (CC-BY 4.0) url: https://creativecommons.org/licenses/by/4.0/ diff --git a/spec/std/isa/ext/Svbare.yaml b/spec/std/isa/ext/Svbare.yaml index 340b0478b7..658cf1daa0 100644 --- a/spec/std/isa/ext/Svbare.yaml +++ b/spec/std/isa/ext/Svbare.yaml @@ -18,9 +18,13 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - requires: +requirements: + allOf: + - + extension: name: S - param_constraints: - SATP_MODE_BARE: - schema: - const: true + - + param: + name: SATP_MODE_BARE + equal: true + reason: Svbare mandates that the `satp` mode Bare must be supported. diff --git a/spec/std/isa/ext/Svinval.yaml b/spec/std/isa/ext/Svinval.yaml index 1b9756b16b..3d779978ed 100644 --- a/spec/std/isa/ext/Svinval.yaml +++ b/spec/std/isa/ext/Svinval.yaml @@ -80,5 +80,10 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2021-11 - requires: - name: S +requirements: + extension: + allOf: + - name: S + # Svinval was defined with Sm 1.13 + - name: Sm + version: ">= 1.13" diff --git a/spec/std/isa/ext/Svnapot.yaml b/spec/std/isa/ext/Svnapot.yaml index c26dd044af..32abd1171e 100644 --- a/spec/std/isa/ext/Svnapot.yaml +++ b/spec/std/isa/ext/Svnapot.yaml @@ -175,5 +175,10 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2021-11 - requires: - name: Sv39 +requirements: + extension: + allOf: + - name: Sv39 + # Svinval was defined with Sm 1.13 + - name: Sm + version: ">= 1.13" diff --git a/spec/std/isa/ext/Svpbmt.yaml b/spec/std/isa/ext/Svpbmt.yaml index e27dfdc238..ccebae600f 100644 --- a/spec/std/isa/ext/Svpbmt.yaml +++ b/spec/std/isa/ext/Svpbmt.yaml @@ -8,19 +8,21 @@ kind: extension name: Svpbmt long_name: Page-based memory types description: | - This extension mandates that the `satp` mode Bare must - be supported. - - [NOTE] - This extension was ratified as part of the RVA22 profile. + TODO type: privileged versions: - version: "1.0.0" state: ratified ratification_date: null - requires: - name: Sv39 - param_constraints: - SATP_MODE_BARE: - schema: - const: true +requirements: + extension: + allOf: + # Svpbmt was defined with Sm 1.13 + # it needs at least Sm 1.11 for menvcfg defintion + - name: Sm + version: ">= 1.13" + # Svpbmt is not defined for Sv32 + - anyOf: + - name: Sv39 + - name: Sv48 + - name: Sv57 diff --git a/spec/std/isa/ext/Svrsw60t59b.yaml b/spec/std/isa/ext/Svrsw60t59b.yaml index 6224525abd..bf5eaa831c 100644 --- a/spec/std/isa/ext/Svrsw60t59b.yaml +++ b/spec/std/isa/ext/Svrsw60t59b.yaml @@ -34,5 +34,6 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2025-08 - requires: - name: Sv39 +requirements: + extension: + name: Sv39 diff --git a/spec/std/isa/ext/U.yaml b/spec/std/isa/ext/U.yaml index ba4bcc45b2..8ab04858d7 100644 --- a/spec/std/isa/ext/U.yaml +++ b/spec/std/isa/ext/U.yaml @@ -15,41 +15,3 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2019-12 -params: - MUTABLE_MISA_U: - description: | - Indicates whether or not the `U` extension can be disabled with the `misa.U` bit. - schema: - type: boolean - U_MODE_ENDIANNESS: - description: | - Endianness of data in U-mode. Can be one of: - - * little: U-mode data is always little endian - * big: U-mode data is always big endian - * dynamic: U-mode data can be either little or big endian, - depending on the CSR field `mstatus.UBE` - schema: - type: string - enum: [little, big, dynamic] - UXLEN: - description: | - Set of XLENs supported in U-mode. Can be one of: - - * 32: SXLEN is always 32 - * 64: SXLEN is always 64 - * 3264: SXLEN can be changed (via mstatus.UXL) between 32 and 64 - schema: - type: integer - enum: [32, 64, 3264] - extra_validation: | - assert UXLEN == 32 if MXLEN == 32 - TRAP_ON_ECALL_FROM_U: - description: | - Whether or not an ECALL-from-U-mode causes a synchronous exception. - - The spec states that implementations may handle ECALLs transparently - without raising a trap, in which case the EEI must provide a builtin. - schema: - type: boolean - default: true diff --git a/spec/std/isa/ext/V.yaml b/spec/std/isa/ext/V.yaml index ae1422fa05..c1538948a2 100644 --- a/spec/std/isa/ext/V.yaml +++ b/spec/std/isa/ext/V.yaml @@ -14,39 +14,3 @@ versions: ratification_date: null description: | TODO -params: - MUTABLE_MISA_V: - description: | - Indicates whether or not the `V` extension can be disabled with the `misa.V` bit. - schema: - type: boolean - HW_MSTATUS_VS_DIRTY_UPDATE: - description: | - Indicates whether or not hardware will write to `mstatus.VS` - - Values are: - [separator="!"] - !=== - h! never ! Hardware never writes `mstatus.VS` - h! precise ! Hardware writes `mstatus.VS` to the Dirty (3) state precisely when V registers are modified - h! imprecise ! Hardware writes `mstatus.VS` imprecisely. This will result in a call to unpredictable() on any attempt to read `mstatus` or write vector state. - !=== - schema: - type: string - enum: ["never", "precise", "imprecise"] - MSTATUS_VS_LEGAL_VALUES: - description: | - The set of values that mstatus.VS will accept from a software write. - schema: - type: array - items: - type: integer - enum: [0, 1, 2, 3] - maxItems: 4 - uniqueItems: true - also_defined_in: S - extra_validation: | - assert MSTATUS_VS_LEGAL_VALUES.include?(0) && MSTATUS_VS_LEGAL_VALUES.include?(3) if ext?(:V) - - # if HW is writing VS, then Dirty (3) better be a supported value - assert MSTATUS_VS_LEGAL_VALUES.include?(3) if ext?(:V) && (HW_MSTATUS_VS_DIRTY_UPDATE != "never") diff --git a/spec/std/isa/ext/Xmock.yaml b/spec/std/isa/ext/Xmock.yaml index dbd4be7000..cc47b69279 100644 --- a/spec/std/isa/ext/Xmock.yaml +++ b/spec/std/isa/ext/Xmock.yaml @@ -15,148 +15,7 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2024-04 -params: - MOCK_ENUM_2_INTS: - description: foo - schema: - type: integer - enum: [32, 64] - MOCK_ENUM_2_STRINGS: - description: foo - schema: - type: string - enum: ["low", "high"] - MOCK_BOOL_1: - description: foo - schema: - type: boolean - MOCK_BOOL_2: - description: foo - schema: - type: boolean - MOCK_32_BIT_INT: - description: foo - schema: - type: integer - minimum: 0 - maximum: 0xffffffff - MOCK_64_BIT_INT: - description: foo - schema: - type: integer - minimum: 0 - maximum: 0xffffffffffffffff - MOCK_1_BIT_INT: - description: foo - schema: - type: integer - minimum: 0 - maximum: 1 - MOCK_2_BIT_INT: - description: foo - schema: - type: integer - minimum: 0 - maximum: 3 - MOCK_25_BIT_INT: - description: foo - schema: - type: integer - minimum: 0 - maximum: 33554431 - MOCK_INT_RANGE_0_TO_2: - description: foo - schema: - type: integer - minimum: 0 - maximum: 2 - MOCK_INT_RANGE_0_TO_127: - description: foo - schema: - type: integer - minimum: 0 - maximum: 127 - MOCK_INT_RANGE_0_TO_999: - description: foo - schema: - type: integer - minimum: 0 - maximum: 999 - MOCK_INT_RANGE_0_TO_1023: - description: foo - schema: - type: integer - minimum: 0 - maximum: 1023 - MOCK_INT_RANGE_1000_TO_2048: - description: foo - schema: - type: integer - minimum: 1000 - maximum: 2048 - MOCK_INT_RANGE_0_TO_128: - description: foo - schema: - type: integer - minimum: 0 - maximum: 128 - MOCK_INT_RANGE_1_TO_128: - description: foo - schema: - type: integer - minimum: 1 - maximum: 128 - MOCK_ARRAY_INT_ENUM: - description: foo - schema: - type: array - items: - type: integer - enum: [0, 1] - minItems: 1 - maxItems: 2 - uniqueItems: true - MOCK_ARRAY_MIN_ONLY: - description: foo - schema: - type: array - items: - type: integer - enum: [0, 1] - minItems: 3 - MOCK_ARRAY_MAX_ONLY: - description: foo - schema: - type: array - items: - type: integer - enum: [0, 1] - maxItems: 10 - MOCK_ARRAY_STRING_ENUM1: - description: foo - schema: - type: array - items: - type: string - enum: [ABC, DEF, GHI] - MOCK_ARRAY_STRING_ENUM2: - description: foo - schema: - type: array - items: - type: string - enum: [ABC, DEF, GHI] - MOCK_ARRAY_BOOL_ARRAY_OF_8_FIRST_2_FALSE: - description: foo - schema: - type: array - items: - - const: false - - const: false - additionalItems: - type: boolean - maxItems: 8 - minItems: 8 + cert_normative_rules: - id: ext.Xmock.cov1 name: Mock normative rule 1 diff --git a/spec/std/isa/ext/Za128rs.yaml b/spec/std/isa/ext/Za128rs.yaml index d7a8edbb67..5143f99bb3 100644 --- a/spec/std/isa/ext/Za128rs.yaml +++ b/spec/std/isa/ext/Za128rs.yaml @@ -21,10 +21,10 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - param_constraints: - LRSC_RESERVATION_STRATEGY: - schema: - oneOf: - - const: reserve exactly enough to cover the access - - const: reserve naturally-aligned 64-byte region - - const: reserve naturally-aligned 128-byte region +requirements: + param: + name: LRSC_RESERVATION_STRATEGY + oneOf: + - reserve exactly enough to cover the access + - reserve naturally-aligned 64-byte region + - reserve naturally-aligned 128-byte region diff --git a/spec/std/isa/ext/Za64rs.yaml b/spec/std/isa/ext/Za64rs.yaml index ce24a5980a..4a757abe17 100644 --- a/spec/std/isa/ext/Za64rs.yaml +++ b/spec/std/isa/ext/Za64rs.yaml @@ -21,9 +21,9 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - param_constraints: - LRSC_RESERVATION_STRATEGY: - schema: - oneOf: - - const: reserve exactly enough to cover the access - - const: reserve naturally-aligned 64-byte region +requirements: + param: + name: LRSC_RESERVATION_STRATEGY + oneOf: + - reserve exactly enough to cover the access + - reserve naturally-aligned 64-byte region diff --git a/spec/std/isa/ext/Zabha.yaml b/spec/std/isa/ext/Zabha.yaml index 6d00d86814..b397eb3335 100644 --- a/spec/std/isa/ext/Zabha.yaml +++ b/spec/std/isa/ext/Zabha.yaml @@ -14,4 +14,6 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - requires: Zaamo +requirements: + extension: + name: Zaamo diff --git a/spec/std/isa/ext/Zacas.yaml b/spec/std/isa/ext/Zacas.yaml index 446ec217c3..7a15d07f49 100644 --- a/spec/std/isa/ext/Zacas.yaml +++ b/spec/std/isa/ext/Zacas.yaml @@ -14,4 +14,6 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - requires: Zaamo +requirements: + extension: + name: Zaamo diff --git a/spec/std/isa/ext/Zcd.yaml b/spec/std/isa/ext/Zcd.yaml index ebbfa42910..ad2bfc650c 100644 --- a/spec/std/isa/ext/Zcd.yaml +++ b/spec/std/isa/ext/Zcd.yaml @@ -38,9 +38,14 @@ versions: - name: Graeme Smecher - name: Nicolas Brunie - name: Jiawei - requires: - allOf: - - anyOf: - - { name: Zca, version: "= 1.0.0" } - - { name: C, version: "~> 2.0.0" } - - { name: D, version: "~> 2.2.0" } + requirements: + extension: + allOf: + - name: Zca + version: "= 1.0.0" + - name: D + version: "~> 2.2.0" +requirements: + idl(): | + # if Zcd is implemented, then Zca and D must also be implemented + -> implemented?(ExtensionName::Zca) && implemented?(ExtensionName::D); diff --git a/spec/std/isa/ext/Zce.yaml b/spec/std/isa/ext/Zce.yaml index 048a5f6705..c1ed06bb29 100644 --- a/spec/std/isa/ext/Zce.yaml +++ b/spec/std/isa/ext/Zce.yaml @@ -48,38 +48,52 @@ versions: - name: Graeme Smecher - name: Nicolas Brunie - name: Jiawei - implies: - - name: Zca - version: "1.0.0" - - name: Zcb - version: "1.0.0" - - name: Zcmp - version: "1.0.0" - - name: Zcmt - version: "1.0.0" + requirements: + oneOf: + - allOf: + - xlen: 32 + - extension: + allOf: + - name: Zca + version: "= 1.0.0" + - name: Zcb + version: "= 1.0.0" + - name: Zcmp + version: "= 1.0.0" + - name: Zcmt + version: "= 1.0.0" + - not: + extension: + name: F + - allOf: + - xlen: 32 + - extension: + allOf: + - name: Zca + version: "= 1.0.0" + - name: Zcb + version: "= 1.0.0" + - name: Zcmp + version: "= 1.0.0" + - name: Zcmt + version: "= 1.0.0" + - name: Zcf + version: "= 1.0.0" + - name: F + - allOf: + - xlen: 32 + - extension: + allOf: + - name: Zca + version: "= 1.0.0" + - name: Zcb + version: "= 1.0.0" + - name: Zcmp + version: "= 1.0.0" + - name: Zcmt + version: "= 1.0.0" - # TODO: this implication is conditional!!! (see description) - # So it should look something like this: - - # if: - # allOf: - # param: - # XLEN: 32 - # extensions: - # - F - # then: - # - [Zca, "1.0.0"] - # - [Zcb, "1.0.0"] - # - [Zcmp, "1.0.0"] - # - [Zcmt, "1.0.0"] - # - [Zf, "1.0.0"] - # else: - # # TODO: this implication is conditional!!! (see description) - # - [Zca, "1.0.0"] - # - [Zcb, "1.0.0"] - # - [Zcmp, "1.0.0"] - # - [Zcmt, "1.0.0"] -conflicts: - anyOf: - - allOf: [C, D] - - Zcd +requirements: + not: + extension: + name: Zcd diff --git a/spec/std/isa/ext/Zcf.yaml b/spec/std/isa/ext/Zcf.yaml index 1fa8d0da93..37c5273648 100644 --- a/spec/std/isa/ext/Zcf.yaml +++ b/spec/std/isa/ext/Zcf.yaml @@ -38,9 +38,9 @@ versions: - name: Graeme Smecher - name: Nicolas Brunie - name: Jiawei - requires: - allOf: - - anyOf: - - { name: Zca, version: "= 1.0.0" } - - { name: C, version: "~> 2.0.0" } - - { name: F, version: "~> 2.2.0" } +requirements: + idl(): | + -> xlen() == 32; + + # if Zcf is implemented, then Zca and F must also be implemented + -> implemented?(ExtensionName::Zca) && implemented?(ExtensionName::F); diff --git a/spec/std/isa/ext/Zclsd.yaml b/spec/std/isa/ext/Zclsd.yaml index 744843578b..0ada5f5cc1 100644 --- a/spec/std/isa/ext/Zclsd.yaml +++ b/spec/std/isa/ext/Zclsd.yaml @@ -6,7 +6,6 @@ $schema: "ext_schema.json#" kind: extension name: Zclsd -conflicts: Zcf long_name: Compressed Load/Store Pair for RV32 description: | This extension adds load and store instructions using register pairs. It does so by reusing existing instruction encodings which are RV64-only. The specification defines 16-bit encodings. @@ -17,5 +16,15 @@ versions: - version: "1.0" state: ratified ratification_date: "2025-02" - requires: - allOf: [ Zilsd, Zca ] +requirements: + allOf: + - xlen: 32 + - + not: + extension: + name: Zcf + - + extension: + allOf: + - name: Zilsd + - name: Zca diff --git a/spec/std/isa/ext/Zcmop.yaml b/spec/std/isa/ext/Zcmop.yaml index 5c0a28f0b3..3081b7fc4d 100644 --- a/spec/std/isa/ext/Zcmop.yaml +++ b/spec/std/isa/ext/Zcmop.yaml @@ -53,4 +53,6 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - requires: C +requirements: + extension: + name: Zca diff --git a/spec/std/isa/ext/Zcmp.yaml b/spec/std/isa/ext/Zcmp.yaml index cd1c93912a..a5be07cb99 100644 --- a/spec/std/isa/ext/Zcmp.yaml +++ b/spec/std/isa/ext/Zcmp.yaml @@ -91,8 +91,10 @@ versions: - name: Graeme Smecher - name: Nicolas Brunie - name: Jiawei - requires: { name: Zca, version: ">= 1.0.0" } -conflicts: - anyOf: - - allOf: [C, D] - - Zcd +requirements: + allOf: + - extension: + name: Zca + - not: + extension: + name: Zcd diff --git a/spec/std/isa/ext/Zcmt.yaml b/spec/std/isa/ext/Zcmt.yaml index a9d5060656..e701730e0a 100644 --- a/spec/std/isa/ext/Zcmt.yaml +++ b/spec/std/isa/ext/Zcmt.yaml @@ -41,6 +41,17 @@ type: unprivileged company: name: RISC-V International url: https://riscv.org +requirements: + allOf: + - + extension: + allOf: + - name: Zca + - name: Zicsr + - + not: + extension: + name: Zcd versions: - version: "1.0.0" state: ratified @@ -64,111 +75,3 @@ versions: - name: Graeme Smecher - name: Nicolas Brunie - name: Jiawei - implies: - - name: Zca - version: "1.0.0" - - name: Zcb - version: "1.0.0" - - name: Zcmp - version: "1.0.0" - - # TODO: this implication is conditional!!! (see description) - # So it should look something like this: - - # if: - # allOf: - # param: - # XLEN: 32 - # extensions: - # - F - # then: - # - [Zca, "1.0.0"] - # - [Zcb, "1.0.0"] - # - [Zcmp, "1.0.0"] - # - [Zcmt, "1.0.0"] - # - [Zf, "1.0.0"] - # else: - # # TODO: this implication is conditional!!! (see description) - # - [Zca, "1.0.0"] - # - [Zcb, "1.0.0"] - # - [Zcmp, "1.0.0"] - # - [Zcmt, "1.0.0"] - -params: - JVT_BASE_TYPE: - schema: - type: string - enum: [mask, custom] - description: | - Type of the jvt.BASE CSR field. One of: - - * mask: jvt.BASE contains one or more implemented bits, which are indicated by JVT_BASE_MASK. - * custom: Custom behavior. Will cause hart to enter 'unpredictable' state on a write to jvt.BASE. - JVT_BASE_MASK: - schema: - type: integer - minimum: 64 - maximum: 0x7ffffffffffffff # 58 bits - required_if(): return JVT_BASE_TYPE == "mask"; - description: | - Mask representing the implemented bits of jvt.BASE. Includes the implicitly-zero bits of jvt.BASE, so JVT_BASE_MASK[5:0] must always be 0. - extra_validation: | - assert JVT_BASE_MASK < 0xffffffc0 if MXLEN == 32 - JVT_READ_ONLY: - schema: - type: boolean - description: | - If Zcmt is implemented, JVT is implemented, but can contain a read-only value - MSTATEEN_JVT_TYPE: - when: - name: Smstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - description: | - Behavior of the mstateen0.JVT bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - HSTATEEN_JVT_TYPE: - when: - allOf: - - name: H - version: ~> 1.0 - - name: Ssstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - description: | - Behavior of the hstateen0.JVT bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - extra_validation: | - assert HSTATEEN_JVT_TYPE == 'read-only-0' if MSTATEEN_JVT_TYPE == 'read-only-0' - assert HSTATEEN_JVT_TYPE == 'read-only-1' if MSTATEEN_JVT_TYPE == 'read-only-1' - SSTATEEN_JVT_TYPE: - when: - allOf: - - name: S - version: ~> 1.0 - - name: Ssstateen - version: ~> 1.0 - schema: - type: string - enum: [rw, read-only-0, read-only-1] - description: | - Behavior of the sstateen0.JVT bit: - - * 'rw': read-write - * 'read-only-0': read-only, fixed to 0 - * 'read-only-1': read-only, fixed to 1 - extra_validation: | - assert SSTATEEN_JVT_TYPE == 'read-only-0' if MSTATEEN_JVT_TYPE == 'read-only-0' - assert SSTATEEN_JVT_TYPE == 'read-only-0' if HSTATEEN_JVT_TYPE == 'read-only-0' - assert SSTATEEN_JVT_TYPE == 'read-only-1' if MSTATEEN_JVT_TYPE == 'read-only-1' - assert SSTATEEN_JVT_TYPE == 'read-only-1' if HSTATEEN_JVT_TYPE == 'read-only-1' diff --git a/spec/std/isa/ext/Zfa.yaml b/spec/std/isa/ext/Zfa.yaml index dce9b9c34c..fcafbbb8d4 100644 --- a/spec/std/isa/ext/Zfa.yaml +++ b/spec/std/isa/ext/Zfa.yaml @@ -19,4 +19,6 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - requires: F +requirements: + extension: + name: F diff --git a/spec/std/isa/ext/Zfbfmin.yaml b/spec/std/isa/ext/Zfbfmin.yaml index 420f432f73..721581fa7c 100644 --- a/spec/std/isa/ext/Zfbfmin.yaml +++ b/spec/std/isa/ext/Zfbfmin.yaml @@ -20,7 +20,8 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - requires: - allOf: - - name: F - - name: Zfh +requirements: + extension: + allOf: + - name: F + - name: Zfh diff --git a/spec/std/isa/ext/Zfhmin.yaml b/spec/std/isa/ext/Zfhmin.yaml index 60ea0516b9..277a473b2a 100644 --- a/spec/std/isa/ext/Zfhmin.yaml +++ b/spec/std/isa/ext/Zfhmin.yaml @@ -50,6 +50,6 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2021-11 - requires: - name: F - version: ">= 2.2" +requirements: + extension: + name: F diff --git a/spec/std/isa/ext/Zic64b.yaml b/spec/std/isa/ext/Zic64b.yaml index 61f1544309..b0d5e48cf9 100644 --- a/spec/std/isa/ext/Zic64b.yaml +++ b/spec/std/isa/ext/Zic64b.yaml @@ -24,12 +24,17 @@ versions: contributors: - name: Krste Asanovic company: SiFive, Inc. - requires: - anyOf: - - name: Zicbom - - name: Zicboz - - name: Zicbop - param_constraints: - CACHE_BLOCK_SIZE: - schema: - const: 64 +requirements: + allOf: + - + param: + name: CACHE_BLOCK_SIZE + equal: 64 + reason: Zic64b mandates 64-byte cache block sizes + - + extension: + # at least one of [Zicbom, Zicboz, Zicbop] must also be implemented! + oneOf: + - name: Zicbom + - name: Zicboz + - name: Zicbop diff --git a/spec/std/isa/ext/Zicbom.yaml b/spec/std/isa/ext/Zicbom.yaml index a19d9fabb7..70fa007b2a 100644 --- a/spec/std/isa/ext/Zicbom.yaml +++ b/spec/std/isa/ext/Zicbom.yaml @@ -13,21 +13,3 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2022-05 -params: - CACHE_BLOCK_SIZE: - description: | - The observable size of a cache block, in bytes - also_defined_in: [Zicboz, Zicbop] - schema: - type: integer - minimum: 1 - maximum: 0xFFFFFFFFFFFFFFFF - FORCE_UPGRADE_CBO_INVAL_TO_FLUSH: - description: | - When true, an implementation prohibits setting `menvcfg.CBIE` == `11` such that all `cbo.inval` - instructions either trap (when `menvcfg.CBIE` == '00') or flush (when `menvcfg.CBIE` == '01'). - - When false, an implementation allows a true INVAL operation for `cbo.inval`, and thus supports - the setting `menvcfg.CBIE` == `11`. - schema: - type: boolean diff --git a/spec/std/isa/ext/Zicbop.yaml b/spec/std/isa/ext/Zicbop.yaml index dedeeb514b..c0a1253af7 100644 --- a/spec/std/isa/ext/Zicbop.yaml +++ b/spec/std/isa/ext/Zicbop.yaml @@ -13,12 +13,3 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2022-05 -params: - CACHE_BLOCK_SIZE: - description: | - The observable size of a cache block, in bytes - also_defined_in: [Zicboz, Zicbom] - schema: - type: integer - minimum: 1 - maximum: 0xFFFFFFFFFFFFFFFF diff --git a/spec/std/isa/ext/Zicboz.yaml b/spec/std/isa/ext/Zicboz.yaml index 0cbeae3aed..decf71542e 100644 --- a/spec/std/isa/ext/Zicboz.yaml +++ b/spec/std/isa/ext/Zicboz.yaml @@ -13,12 +13,3 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2022-05 -params: - CACHE_BLOCK_SIZE: - description: | - The observable size of a cache block, in bytes - also_defined_in: [Zicbom, Zicbop] - schema: - type: integer - minimum: 1 - maximum: 0xFFFFFFFFFFFFFFFF diff --git a/spec/std/isa/ext/Zicclsm.yaml b/spec/std/isa/ext/Zicclsm.yaml index 8dbce5385e..522d14632a 100644 --- a/spec/std/isa/ext/Zicclsm.yaml +++ b/spec/std/isa/ext/Zicclsm.yaml @@ -25,7 +25,7 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - param_constraints: - MISALIGNED_LDST: - schema: - const: true +requirements: + param: + name: MISALIGNED_LDST + equal: true diff --git a/spec/std/isa/ext/Zicfilp.yaml b/spec/std/isa/ext/Zicfilp.yaml index 6be6f6d7d3..4f93d8be33 100644 --- a/spec/std/isa/ext/Zicfilp.yaml +++ b/spec/std/isa/ext/Zicfilp.yaml @@ -14,25 +14,3 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2024-07 -params: - REPORT_CAUSE_IN_MTVAL_ON_LANDING_PAD_SOFTWARE_CHECK: - description: | - When true, `mtval` is written with the shadow stack cause (code=18) when a SoftwareCheck exception is raised into M-mode due to a landing pad error. - - When false, `mtval` is written with 0. - schema: - type: boolean - REPORT_CAUSE_IN_STVAL_ON_LANDING_PAD_SOFTWARE_CHECK: - description: | - When true, `stval` is written with the shadow stack cause (code=18) when a SoftwareCheck exception is raised into S-mode due to a landing pad error. - - When false, `stval` is written with 0. - schema: - type: boolean - REPORT_CAUSE_IN_VSTVAL_ON_LANDING_PAD_SOFTWARE_CHECK: - description: | - When true, `vstval` is written with the shadow stack cause (code=18) when a SoftwareCheck exception is raised into VS-mode due to a landing pad error. - - When false, `vstval` is written with 0. - schema: - type: boolean diff --git a/spec/std/isa/ext/Zicfiss.yaml b/spec/std/isa/ext/Zicfiss.yaml index 10bd616e7c..7034875e9d 100644 --- a/spec/std/isa/ext/Zicfiss.yaml +++ b/spec/std/isa/ext/Zicfiss.yaml @@ -14,25 +14,3 @@ versions: - version: "1.0.0" state: ratified ratification_date: 2024-07 -params: - REPORT_CAUSE_IN_MTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK: - description: | - When true, `mtval` is written with the shadow stack cause (code=3) when a SoftwareCheck exception is raised into M-mode due to a shadow stack pop check instruction. - - When false, `mtval` is written with 0. - schema: - type: boolean - REPORT_CAUSE_IN_STVAL_ON_SHADOW_STACK_SOFTWARE_CHECK: - description: | - When true, `stval` is written with the shadow stack cause (code=3) when a SoftwareCheck exception is raised into S-mode due to a shadow stack pop check instruction. - - When false, `stval` is written with 0. - schema: - type: boolean - REPORT_CAUSE_IN_VSTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK: - description: | - When true, `vstval` is written with the shadow stack cause (code=3) when a SoftwareCheck exception is raised into VS-mode due to a shadow stack pop check instruction. - - When false, `vstval` is written with 0. - schema: - type: boolean diff --git a/spec/std/isa/ext/Zicntr.yaml b/spec/std/isa/ext/Zicntr.yaml index 33155f8121..a64c6066cd 100644 --- a/spec/std/isa/ext/Zicntr.yaml +++ b/spec/std/isa/ext/Zicntr.yaml @@ -13,24 +13,6 @@ versions: - version: "2.0.0" state: ratified ratification_date: 2019-12 - requires: - name: Zicsr - version: ">= 2.0" -params: - TIME_CSR_IMPLEMENTED: - description: | - Whether or not a real hardware `time` CSR exists. Implementations can either provide a real - CSR or emulate access at M-mode. - - Possible values: - - true:: - `time`/`timeh` exists, and accessing it will not cause an IllegalInstruction trap - - false:: - `time`/`timeh` does not exist. - Accessing the CSR will cause an IllegalInstruction trap or enter an unpredictable state, - depending on TRAP_ON_UNIMPLEMENTED_CSR. - Privileged software may emulate the `time` CSR, or may pass the exception to a lower level. - schema: - type: boolean +requirements: + extension: + name: Zicsr diff --git a/spec/std/isa/ext/Zihpm.yaml b/spec/std/isa/ext/Zihpm.yaml index 06c1db12d1..e43f67ed0f 100644 --- a/spec/std/isa/ext/Zihpm.yaml +++ b/spec/std/isa/ext/Zihpm.yaml @@ -13,5 +13,6 @@ versions: - version: "2.0.0" state: ratified ratification_date: null - requires: - name: Smhpm +requirements: + extension: + name: Smhpm diff --git a/spec/std/isa/ext/Zilsd.yaml b/spec/std/isa/ext/Zilsd.yaml index 2bdc642ac2..7cc11ec26a 100644 --- a/spec/std/isa/ext/Zilsd.yaml +++ b/spec/std/isa/ext/Zilsd.yaml @@ -16,3 +16,5 @@ versions: - version: "1.0" state: ratified ratification_date: "2025-02" +requirements: + xlen: 32 diff --git a/spec/std/isa/ext/Zk.yaml b/spec/std/isa/ext/Zk.yaml index b995397a0d..9e9d5cb307 100644 --- a/spec/std/isa/ext/Zk.yaml +++ b/spec/std/isa/ext/Zk.yaml @@ -19,10 +19,12 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - implies: - - name: "Zkn" - version: "1.0.0" - - name: "Zkr" - version: "1.0.0" - - name: "Zkt" - version: "1.0.0" + requirements: + extension: + allOf: + - name: Zkn + version: "= 1.0.0" + - name: Zkr + version: "= 1.0.0" + - name: Zkt + version: "= 1.0.0" diff --git a/spec/std/isa/ext/Zkn.yaml b/spec/std/isa/ext/Zkn.yaml index 9bc47048c7..ce5df44241 100644 --- a/spec/std/isa/ext/Zkn.yaml +++ b/spec/std/isa/ext/Zkn.yaml @@ -22,16 +22,18 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - implies: - - name: "Zbkb" - version: "1.0.0" - - name: "Zbkc" - version: "1.0.0" - - name: "Zbkx" - version: "1.0.0" - - name: "Zkne" - version: "1.0.0" - - name: "Zknd" - version: "1.0.0" - - name: "Zknh" - version: "1.0.0" + requirements: + extension: + allOf: + - name: "Zbkb" + version: "= 1.0.0" + - name: "Zbkc" + version: "= 1.0.0" + - name: "Zbkx" + version: "= 1.0.0" + - name: "Zkne" + version: "= 1.0.0" + - name: "Zknd" + version: "= 1.0.0" + - name: "Zknh" + version: "= 1.0.0" diff --git a/spec/std/isa/ext/Zks.yaml b/spec/std/isa/ext/Zks.yaml index 8711ff5494..3232231023 100644 --- a/spec/std/isa/ext/Zks.yaml +++ b/spec/std/isa/ext/Zks.yaml @@ -21,16 +21,18 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - implies: - - name: Zbkb - version: "1.0.0" - - name: Zbkc - version: "1.0.0" - - name: Zbkx - version: "1.0.0" - - name: Zkne - version: "1.0.0" - - name: Zknd - version: "1.0.0" - - name: Zknh - version: "1.0.0" + requirements: + extension: + allOf: + - name: Zbkb + version: "= 1.0.0" + - name: Zbkc + version: "= 1.0.0" + - name: Zbkx + version: "= 1.0.0" + - name: Zkne + version: "= 1.0.0" + - name: Zknd + version: "= 1.0.0" + - name: Zknh + version: "= 1.0.0" diff --git a/spec/std/isa/ext/Zvbb.yaml b/spec/std/isa/ext/Zvbb.yaml index 8d41f86c9e..bf1d9a7022 100644 --- a/spec/std/isa/ext/Zvbb.yaml +++ b/spec/std/isa/ext/Zvbb.yaml @@ -14,6 +14,7 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - implies: - name: Zvkb - version: "1.0.0" + requirements: + extension: + name: Zvkb + version: "= 1.0.0" diff --git a/spec/std/isa/ext/Zve32f.yaml b/spec/std/isa/ext/Zve32f.yaml index fbc396fa21..693b3fedc9 100644 --- a/spec/std/isa/ext/Zve32f.yaml +++ b/spec/std/isa/ext/Zve32f.yaml @@ -14,4 +14,6 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - requires: F + requirements: + extension: + name: F diff --git a/spec/std/isa/ext/Zvfbfmin.yaml b/spec/std/isa/ext/Zvfbfmin.yaml index 900e841fb8..2d608c9b97 100644 --- a/spec/std/isa/ext/Zvfbfmin.yaml +++ b/spec/std/isa/ext/Zvfbfmin.yaml @@ -18,7 +18,9 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - requires: - anyOf: - - V - - Zve32f +requirements: + # at least one of [V, Zve32f] must be implemented + extension: + oneOf: + - name: V + - name: Zve32f diff --git a/spec/std/isa/ext/Zvfbfwma.yaml b/spec/std/isa/ext/Zvfbfwma.yaml index 92f710f23f..ed21d9e05d 100644 --- a/spec/std/isa/ext/Zvfbfwma.yaml +++ b/spec/std/isa/ext/Zvfbfwma.yaml @@ -16,7 +16,8 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - requires: - allOf: - - Zvfbfmin - - Zfbfmin +requirements: + extension: + allOf: + - name: Zvfbfmin + - name: Zfbfmin diff --git a/spec/std/isa/ext/Zvfh.yaml b/spec/std/isa/ext/Zvfh.yaml index f3d5b7701b..f13c90bf32 100644 --- a/spec/std/isa/ext/Zvfh.yaml +++ b/spec/std/isa/ext/Zvfh.yaml @@ -36,7 +36,8 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - requires: - allOf: - - Zve32f - - Zfhmin +requirements: + extension: + allOf: + - name: Zve32f + - name: Zfhmin diff --git a/spec/std/isa/ext/Zvfhmin.yaml b/spec/std/isa/ext/Zvfhmin.yaml index 90f87ce553..c4ba3ec863 100644 --- a/spec/std/isa/ext/Zvfhmin.yaml +++ b/spec/std/isa/ext/Zvfhmin.yaml @@ -21,4 +21,6 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - requires: Zve32f +requirements: + extension: + name: Zve32f diff --git a/spec/std/isa/ext/Zvkn.yaml b/spec/std/isa/ext/Zvkn.yaml index 3b2195cefb..0669cf1f1d 100644 --- a/spec/std/isa/ext/Zvkn.yaml +++ b/spec/std/isa/ext/Zvkn.yaml @@ -19,12 +19,14 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - implies: - - name: Zvkned - version: "1.0.0" - - name: Zvknhb - version: "1.0.0" - - name: Zvkb - version: "1.0.0" - - name: Zvkt - version: "1.0.0" + requirements: + extension: + allOf: + - name: Zvkned + version: "= 1.0.0" + - name: Zvknhb + version: "= 1.0.0" + - name: Zvkb + version: "= 1.0.0" + - name: Zvkt + version: "= 1.0.0" diff --git a/spec/std/isa/ext/Zvknc.yaml b/spec/std/isa/ext/Zvknc.yaml index a1acec432d..a45efbcaa6 100644 --- a/spec/std/isa/ext/Zvknc.yaml +++ b/spec/std/isa/ext/Zvknc.yaml @@ -18,8 +18,10 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - implies: - - name: Zvkn - version: "1.0.0" - - name: Zvbc - version: "1.0.0" + requirements: + extension: + allOf: + - name: Zvkn + version: "= 1.0.0" + - name: Zvbc + version: "= 1.0.0" diff --git a/spec/std/isa/ext/Zvkng.yaml b/spec/std/isa/ext/Zvkng.yaml index efa9b8c312..92a5e8bee3 100644 --- a/spec/std/isa/ext/Zvkng.yaml +++ b/spec/std/isa/ext/Zvkng.yaml @@ -18,8 +18,10 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - implies: - - name: Zvkn - version: "1.0.0" - - name: Zvkg - version: "1.0.0" + requirements: + extension: + allOf: + - name: Zvkn + version: "= 1.0.0" + - name: Zvkg + version: "= 1.0.0" diff --git a/spec/std/isa/ext/Zvknhb.yaml b/spec/std/isa/ext/Zvknhb.yaml index 42b99f73b7..b57dd17bed 100644 --- a/spec/std/isa/ext/Zvknhb.yaml +++ b/spec/std/isa/ext/Zvknhb.yaml @@ -15,6 +15,7 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - implies: - name: Zvknha - version: "1.0.0" + requirements: + extension: + name: Zvknha + version: "= 1.0.0" diff --git a/spec/std/isa/ext/Zvks.yaml b/spec/std/isa/ext/Zvks.yaml index ea0557098c..f353e63d78 100644 --- a/spec/std/isa/ext/Zvks.yaml +++ b/spec/std/isa/ext/Zvks.yaml @@ -19,12 +19,14 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - implies: - - name: Zvksed - version: "1.0.0" - - name: Zvksh - version: "1.0.0" - - name: Zvkb - version: "1.0.0" - - name: Zvkt - version: "1.0.0" + requirements: + extension: + allOf: + - name: Zvksed + version: "= 1.0.0" + - name: Zvksh + version: "= 1.0.0" + - name: Zvkb + version: "= 1.0.0" + - name: Zvkt + version: "= 1.0.0" diff --git a/spec/std/isa/ext/Zvksc.yaml b/spec/std/isa/ext/Zvksc.yaml index 74bc19a4e5..1482084dc0 100644 --- a/spec/std/isa/ext/Zvksc.yaml +++ b/spec/std/isa/ext/Zvksc.yaml @@ -18,8 +18,10 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - implies: - - name: Zvks - version: "1.0.0" - - name: Zvbc - version: "1.0.0" + requirements: + extension: + allOf: + - name: Zvks + version: "= 1.0.0" + - name: Zvbc + version: "= 1.0.0" diff --git a/spec/std/isa/ext/Zvksg.yaml b/spec/std/isa/ext/Zvksg.yaml index 1f414a5ea3..97c1838225 100644 --- a/spec/std/isa/ext/Zvksg.yaml +++ b/spec/std/isa/ext/Zvksg.yaml @@ -18,8 +18,10 @@ versions: - version: "1.0.0" state: ratified ratification_date: null - implies: - - name: Zvks - version: "1.0.0" - - name: Zvkg - version: "1.0.0" + requirements: + extension: + allOf: + - name: Zvks + version: "= 1.0.0" + - name: Zvkg + version: "= 1.0.0" diff --git a/spec/std/isa/inst/B/andn.yaml b/spec/std/isa/inst/B/andn.yaml index 7c398743a8..4967944ea6 100644 --- a/spec/std/isa/inst/B/andn.yaml +++ b/spec/std/isa/inst/B/andn.yaml @@ -11,7 +11,10 @@ description: | Performs the bitwise logical AND operation between `xs1` and the bitwise inversion of `xs2`. definedBy: - anyOf: [Zbb, Zbkb] + extension: + anyOf: + - name: Zbb + - name: Zbkb assembly: xd, xs1, xs2 format: $inherits: diff --git a/spec/std/isa/inst/B/clmul.yaml b/spec/std/isa/inst/B/clmul.yaml index 36ed55ee53..f7edfc3b78 100644 --- a/spec/std/isa/inst/B/clmul.yaml +++ b/spec/std/isa/inst/B/clmul.yaml @@ -10,7 +10,10 @@ long_name: Carry-less multiply (low-part) description: | `clmul` produces the lower half of the 2*XLEN carry-less product definedBy: - anyOf: [Zbc, Zbkc] + extension: + anyOf: + - name: Zbc + - name: Zbkc assembly: xd, xs1, xs2 format: $inherits: diff --git a/spec/std/isa/inst/B/clmulh.yaml b/spec/std/isa/inst/B/clmulh.yaml index 992cea73ad..dc43c59aa3 100644 --- a/spec/std/isa/inst/B/clmulh.yaml +++ b/spec/std/isa/inst/B/clmulh.yaml @@ -10,7 +10,10 @@ long_name: Carry-less multiply (high-part) description: | `clmulh` produces the upper half of the 2*XLEN carry-less product definedBy: - anyOf: [Zbc, Zbkc] + extension: + anyOf: + - name: Zbc + - name: Zbkc assembly: xd, xs1, xs2 format: $inherits: diff --git a/spec/std/isa/inst/B/orn.yaml b/spec/std/isa/inst/B/orn.yaml index 10f799e443..805fb8eb7d 100644 --- a/spec/std/isa/inst/B/orn.yaml +++ b/spec/std/isa/inst/B/orn.yaml @@ -10,7 +10,10 @@ long_name: OR with inverted operand description: | Performs the bitwise logical OR operation between xs1 and the bitwise inversion of xs2. definedBy: - anyOf: [Zbb, Zbkb] + extension: + anyOf: + - name: Zbb + - name: Zbkb assembly: xd, xs1, xs2 format: $inherits: diff --git a/spec/std/isa/inst/B/rev8.yaml b/spec/std/isa/inst/B/rev8.yaml index 6576bc3b31..277811b995 100644 --- a/spec/std/isa/inst/B/rev8.yaml +++ b/spec/std/isa/inst/B/rev8.yaml @@ -18,7 +18,10 @@ description: | and halfword-sized byte-reversal, perform a `rev8 xd,xs1` followed by a `srai xd,xd,K`, where K is XLEN-32 and XLEN-16, respectively. definedBy: - anyOf: [Zbb, Zbkb] + extension: + anyOf: + - name: Zbb + - name: Zbkb assembly: xd, xs1 encoding: RV32: diff --git a/spec/std/isa/inst/B/rol.yaml b/spec/std/isa/inst/B/rol.yaml index 63878d0b81..854159bc13 100644 --- a/spec/std/isa/inst/B/rol.yaml +++ b/spec/std/isa/inst/B/rol.yaml @@ -10,7 +10,10 @@ long_name: Rotate left (Register) description: | Performs a rotate left of xs1 by the amount in least-significant `log2(XLEN)` bits of xs2. definedBy: - anyOf: [Zbb, Zbkb] + extension: + anyOf: + - name: Zbb + - name: Zbkb assembly: xd, xs1, xs2 format: $inherits: diff --git a/spec/std/isa/inst/B/rolw.yaml b/spec/std/isa/inst/B/rolw.yaml index d08f852125..a0945247c3 100644 --- a/spec/std/isa/inst/B/rolw.yaml +++ b/spec/std/isa/inst/B/rolw.yaml @@ -11,7 +11,12 @@ description: | Performs a rotate left of the least-significant word of xs1 by the amount in least-significant 5 bits of xs2. The resulting word value is sign-extended by copying bit 31 to all of the more-significant bits. definedBy: - anyOf: [Zbb, Zbkb] + allOf: + - xlen: 64 + - extension: + anyOf: + - name: Zbb + - name: Zbkb assembly: xd, xs1, xs2 base: 64 format: diff --git a/spec/std/isa/inst/B/ror.yaml b/spec/std/isa/inst/B/ror.yaml index 47d85ebacc..3385b41f81 100644 --- a/spec/std/isa/inst/B/ror.yaml +++ b/spec/std/isa/inst/B/ror.yaml @@ -10,7 +10,10 @@ long_name: Rotate right (Register) description: | Performs a rotate right of xs1 by the amount in least-significant `log2(XLEN)` bits of xs2. definedBy: - anyOf: [Zbb, Zbkb] + extension: + anyOf: + - name: Zbb + - name: Zbkb assembly: xd, xs1, xs2 format: $inherits: diff --git a/spec/std/isa/inst/B/rori.yaml b/spec/std/isa/inst/B/rori.yaml index c227bc03b1..d2deeebc56 100644 --- a/spec/std/isa/inst/B/rori.yaml +++ b/spec/std/isa/inst/B/rori.yaml @@ -11,7 +11,10 @@ description: | Performs a rotate right of xs1 by the amount in the least-significant log2(XLEN) bits of shamt. For RV32, the encodings corresponding to shamt[5]=1 are reserved. definedBy: - anyOf: [Zbb, Zbkb] + extension: + anyOf: + - name: Zbb + - name: Zbkb assembly: xd, xs1, shamt encoding: RV32: diff --git a/spec/std/isa/inst/B/roriw.yaml b/spec/std/isa/inst/B/roriw.yaml index 0d95901a60..964c942347 100644 --- a/spec/std/isa/inst/B/roriw.yaml +++ b/spec/std/isa/inst/B/roriw.yaml @@ -12,7 +12,12 @@ description: | the least-significant log2(XLEN) bits of shamt. The resulting word value is sign-extended by copying bit 31 to all of the more-significant bits. definedBy: - anyOf: [Zbb, Zbkb] + allOf: + - xlen: 64 + - extension: + anyOf: + - name: Zbb + - name: Zbkb assembly: xd, xs1, shamt base: 64 encoding: diff --git a/spec/std/isa/inst/B/rorw.yaml b/spec/std/isa/inst/B/rorw.yaml index 47b5357a35..d51276b4df 100644 --- a/spec/std/isa/inst/B/rorw.yaml +++ b/spec/std/isa/inst/B/rorw.yaml @@ -12,7 +12,12 @@ description: | least-significant 5 bits of xs2. The resultant word is sign-extended by copying bit 31 to all of the more-significant bits. definedBy: - anyOf: [Zbb, Zbkb] + allOf: + - xlen: 64 + - extension: + anyOf: + - name: Zbb + - name: Zbkb assembly: xd, xs1, xs2 base: 64 format: diff --git a/spec/std/isa/inst/B/xnor.yaml b/spec/std/isa/inst/B/xnor.yaml index 665fe0c949..6ebd5bd9ae 100644 --- a/spec/std/isa/inst/B/xnor.yaml +++ b/spec/std/isa/inst/B/xnor.yaml @@ -10,7 +10,10 @@ long_name: Exclusive NOR description: | Performs the bit-wise exclusive-NOR operation on xs1 and xs2. definedBy: - anyOf: [Zbb, Zbkb] + extension: + anyOf: + - name: Zbb + - name: Zbkb assembly: xd, xs1, xs2 format: $inherits: diff --git a/spec/std/isa/inst/C/c.add.yaml b/spec/std/isa/inst/C/c.add.yaml index f2029e1a62..4f56da3fb1 100644 --- a/spec/std/isa/inst/C/c.add.yaml +++ b/spec/std/isa/inst/C/c.add.yaml @@ -11,9 +11,10 @@ description: | Add the value in xs2 to xd, and store the result in xd. C.ADD expands into `add xd, xd, xs2`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, xs2 encoding: match: 1001----------10 diff --git a/spec/std/isa/inst/C/c.addi.yaml b/spec/std/isa/inst/C/c.addi.yaml index d3e7bcf01a..c895c2ce48 100644 --- a/spec/std/isa/inst/C/c.addi.yaml +++ b/spec/std/isa/inst/C/c.addi.yaml @@ -13,9 +13,10 @@ description: | C.ADDI is only valid when xd ≠ x0 and imm ≠ 0. The code points with xd=x0 encode the C.NOP instruction; the remaining code points with imm=0 encode HINTs. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, imm encoding: match: 000-----------01 diff --git a/spec/std/isa/inst/C/c.addi16sp.yaml b/spec/std/isa/inst/C/c.addi16sp.yaml index b93fc13450..b8e2e257d2 100644 --- a/spec/std/isa/inst/C/c.addi16sp.yaml +++ b/spec/std/isa/inst/C/c.addi16sp.yaml @@ -13,9 +13,10 @@ description: | It expands into `addi x2, x2, nzimm[9:4]`. C.ADDI16SP is only valid when nzimm ≠ 0; the code point with nzimm=0 is reserved. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: sp, imm encoding: match: 011-00010-----01 diff --git a/spec/std/isa/inst/C/c.addi4spn.yaml b/spec/std/isa/inst/C/c.addi4spn.yaml index 4d21934188..a06e167a25 100644 --- a/spec/std/isa/inst/C/c.addi4spn.yaml +++ b/spec/std/isa/inst/C/c.addi4spn.yaml @@ -13,9 +13,10 @@ description: | It expands to `addi rd', x2, nzuimm[9:2]`. C.ADDI4SPN is only valid when nzuimm ≠ 0; the code points with nzuimm=0 are reserved. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, sp, imm encoding: match: 000-----------00 diff --git a/spec/std/isa/inst/C/c.addiw.yaml b/spec/std/isa/inst/C/c.addiw.yaml index ad4b743e3f..4949e97df8 100644 --- a/spec/std/isa/inst/C/c.addiw.yaml +++ b/spec/std/isa/inst/C/c.addiw.yaml @@ -13,9 +13,12 @@ description: | The immediate can be zero for C.ADDIW, where this corresponds to `sext.w xd`. C.ADDIW is only valid when xd ≠ x0; the code points with xd=x0 are reserved. definedBy: - anyOf: - - C - - Zca + allOf: + - xlen: 64 + - extension: + anyOf: + - name: C + - name: Zca base: 64 assembly: xd, imm encoding: diff --git a/spec/std/isa/inst/C/c.addw.yaml b/spec/std/isa/inst/C/c.addw.yaml index 2a2bad9bba..8940b22b0e 100644 --- a/spec/std/isa/inst/C/c.addw.yaml +++ b/spec/std/isa/inst/C/c.addw.yaml @@ -12,9 +12,12 @@ description: | The xd and xs2 register indexes should be used as xd+8 and xs2+8 (registers x8-x15). C.ADDW expands into `addw xd, xd, xs2`. definedBy: - anyOf: - - C - - Zca + allOf: + - xlen: 64 + - extension: + anyOf: + - name: C + - name: Zca base: 64 assembly: xd, xs2 encoding: diff --git a/spec/std/isa/inst/C/c.and.yaml b/spec/std/isa/inst/C/c.and.yaml index d365840603..c09b2ffa6b 100644 --- a/spec/std/isa/inst/C/c.and.yaml +++ b/spec/std/isa/inst/C/c.and.yaml @@ -12,9 +12,10 @@ description: | The xd and xs2 register indexes should be used as xd+8 and xs2+8 (registers x8-x15). C.AND expands into `and xd, xd, xs2`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, xs2 encoding: match: 100011---11---01 diff --git a/spec/std/isa/inst/C/c.andi.yaml b/spec/std/isa/inst/C/c.andi.yaml index e1b3caa9e8..d8be9b31fd 100644 --- a/spec/std/isa/inst/C/c.andi.yaml +++ b/spec/std/isa/inst/C/c.andi.yaml @@ -12,9 +12,10 @@ description: | The xd register index should be used as xd+8 (registers x8-x15). C.ANDI expands into `andi xd, xd, imm`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, imm encoding: match: 100-10--------01 diff --git a/spec/std/isa/inst/C/c.beqz.yaml b/spec/std/isa/inst/C/c.beqz.yaml index 51a4d25f84..7805ff1d3e 100644 --- a/spec/std/isa/inst/C/c.beqz.yaml +++ b/spec/std/isa/inst/C/c.beqz.yaml @@ -11,9 +11,10 @@ description: | C.BEQZ performs conditional control transfers. The offset is sign-extended and added to the pc to form the branch target address. It can therefore target a ±256 B range. C.BEQZ takes the branch if the value in register xs1' is zero. It expands to `beq` `xs1, x0, offset`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xs1, imm encoding: match: 110-----------01 diff --git a/spec/std/isa/inst/C/c.bnez.yaml b/spec/std/isa/inst/C/c.bnez.yaml index 9eb463f804..8b8afe7b16 100644 --- a/spec/std/isa/inst/C/c.bnez.yaml +++ b/spec/std/isa/inst/C/c.bnez.yaml @@ -11,9 +11,10 @@ description: | C.BEQZ performs conditional control transfers. The offset is sign-extended and added to the pc to form the branch target address. It can therefore target a ±256 B range. C.BEQZ takes the branch if the value in register xs1' is NOT zero. It expands to `beq` `xs1, x0, offset`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xs1, imm encoding: match: 111-----------01 diff --git a/spec/std/isa/inst/C/c.ebreak.yaml b/spec/std/isa/inst/C/c.ebreak.yaml index 32d7a635ab..d7ede20ed9 100644 --- a/spec/std/isa/inst/C/c.ebreak.yaml +++ b/spec/std/isa/inst/C/c.ebreak.yaml @@ -21,9 +21,10 @@ description: | As EBREAK causes a synchronous exception, it is not considered to retire, and should not increment the `minstret` CSR. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: " " encoding: match: "1001000000000010" diff --git a/spec/std/isa/inst/C/c.j.yaml b/spec/std/isa/inst/C/c.j.yaml index 0da8c29033..8d49fd9985 100644 --- a/spec/std/isa/inst/C/c.j.yaml +++ b/spec/std/isa/inst/C/c.j.yaml @@ -11,9 +11,10 @@ description: | C.J performs an unconditional control transfer. The offset is sign-extended and added to the pc to form the jump target address. C.J can therefore target a ±2 KiB range. It expands to `jal` `x0, offset`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: imm encoding: match: 101-----------01 diff --git a/spec/std/isa/inst/C/c.jal.yaml b/spec/std/isa/inst/C/c.jal.yaml index 161e2ee2a3..9b9df2c91e 100644 --- a/spec/std/isa/inst/C/c.jal.yaml +++ b/spec/std/isa/inst/C/c.jal.yaml @@ -11,9 +11,12 @@ description: | C.JAL is an RV32C-only instruction that performs the same operation as C.J, but additionally writes the address of the instruction following the jump (pc+2) to the link register, x1. It expands to `jal` `x1, offset`. definedBy: - anyOf: - - C - - Zca + allOf: + - xlen: 32 + - extension: + anyOf: + - name: C + - name: Zca base: 32 assembly: imm encoding: diff --git a/spec/std/isa/inst/C/c.jalr.yaml b/spec/std/isa/inst/C/c.jalr.yaml index 482e827d70..cb4d488d26 100644 --- a/spec/std/isa/inst/C/c.jalr.yaml +++ b/spec/std/isa/inst/C/c.jalr.yaml @@ -11,9 +11,10 @@ description: | C.JALR (jump and link register) performs the same operation as C.JR, but additionally writes the address of the instruction following the jump (pc+2) to the link register, x1. C.JALR expands to jalr x1, 0(xs1). definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xs1 encoding: match: 1001-----0000010 diff --git a/spec/std/isa/inst/C/c.jr.yaml b/spec/std/isa/inst/C/c.jr.yaml index 54846709cc..987edf8b15 100644 --- a/spec/std/isa/inst/C/c.jr.yaml +++ b/spec/std/isa/inst/C/c.jr.yaml @@ -11,9 +11,10 @@ description: | C.JR (jump register) performs an unconditional control transfer to the address in register xs1. C.JR expands to jalr x0, 0(xs1). definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xs1 encoding: match: 1000-----0000010 diff --git a/spec/std/isa/inst/C/c.ld.yaml b/spec/std/isa/inst/C/c.ld.yaml index b8d67ebc80..4bcb7fc426 100644 --- a/spec/std/isa/inst/C/c.ld.yaml +++ b/spec/std/isa/inst/C/c.ld.yaml @@ -15,9 +15,12 @@ description: | For RV32, if the Zclsd extension is enabled, this instruction loads a 64-bit value into registers xd and xd+1. It computes an effective address by adding the zero-extended imm, scaled by 8, to the base address in register xs1. definedBy: anyOf: - - C - - Zca - - Zclsd + - allOf: + - xlen: 64 + - extension: + name: Zca + - extension: + name: Zclsd assembly: xd, imm(xs1) encoding: RV32: diff --git a/spec/std/isa/inst/C/c.ldsp.yaml b/spec/std/isa/inst/C/c.ldsp.yaml index 237634fc1c..46b60b3547 100644 --- a/spec/std/isa/inst/C/c.ldsp.yaml +++ b/spec/std/isa/inst/C/c.ldsp.yaml @@ -16,8 +16,14 @@ description: | C.LDSP is only valid when xd ≠ x0; code points with xd=x0 are reserved. definedBy: anyOf: - - C - - Zca + - allOf: + - xlen: 32 + - extension: + name: Zclsd + - allOf: + - xlen: 64 + - extension: + name: Zca assembly: xd, imm(sp) encoding: RV32: diff --git a/spec/std/isa/inst/C/c.li.yaml b/spec/std/isa/inst/C/c.li.yaml index 5ffb59a37b..3c35151159 100644 --- a/spec/std/isa/inst/C/c.li.yaml +++ b/spec/std/isa/inst/C/c.li.yaml @@ -12,9 +12,10 @@ description: | C.LI expands into `addi xd, x0, imm`. C.LI is only valid when xd ≠ x0; the code points with xd=x0 encode HINTs. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, imm encoding: match: 010-----------01 diff --git a/spec/std/isa/inst/C/c.lui.yaml b/spec/std/isa/inst/C/c.lui.yaml index 86af972d31..c96d2abce2 100644 --- a/spec/std/isa/inst/C/c.lui.yaml +++ b/spec/std/isa/inst/C/c.lui.yaml @@ -6,16 +6,17 @@ $schema: "inst_schema.json#" kind: instruction name: c.lui -long_name: Load the non-zero 6-bit immediate field into bits 17-12 of the destination register +long_name: + Load the non-zero 6-bit immediate field into bits 17-12 of the destination + register description: | C.LUI loads the non-zero 6-bit immediate field into bits 17-12 of the destination register, clears the bottom 12 bits, and sign-extends bit 17 into all higher bits of the destination. C.LUI expands into `lui xd, imm`. C.LUI is only valid when xd≠x0 and xd≠x2, and when the immediate is not equal to zero. The code points with imm=0 are reserved; the remaining code points with xd=x0 are HINTs; and the remaining code points with xd=x2 correspond to the C.ADDI16SP instruction definedBy: - anyOf: - - C - - Zca + extension: + name: Zca assembly: xd, imm encoding: match: 011-----------01 diff --git a/spec/std/isa/inst/C/c.lw.yaml b/spec/std/isa/inst/C/c.lw.yaml index 6bd6967d80..9d7033e59a 100644 --- a/spec/std/isa/inst/C/c.lw.yaml +++ b/spec/std/isa/inst/C/c.lw.yaml @@ -13,9 +13,10 @@ description: | to the base address in register xs1. It expands to `lw` `xd, offset(xs1)`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, imm(xs1) encoding: match: 010-----------00 diff --git a/spec/std/isa/inst/C/c.lwsp.yaml b/spec/std/isa/inst/C/c.lwsp.yaml index 27b934d5ff..bfe0c9f29b 100644 --- a/spec/std/isa/inst/C/c.lwsp.yaml +++ b/spec/std/isa/inst/C/c.lwsp.yaml @@ -14,9 +14,10 @@ description: | It expands to `lw` `xd, offset(x2)`. C.LWSP is only valid when xd ≠ x0. The code points with xd=x0 are reserved. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, imm(sp) encoding: match: 010-----------10 diff --git a/spec/std/isa/inst/C/c.mv.yaml b/spec/std/isa/inst/C/c.mv.yaml index dac6c15110..411432de05 100644 --- a/spec/std/isa/inst/C/c.mv.yaml +++ b/spec/std/isa/inst/C/c.mv.yaml @@ -11,9 +11,10 @@ description: | C.MV (move register) performs copy of the data in register xs2 to register xd C.MV expands to addi xd, x0, xs2. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, xs2 encoding: match: 1000----------10 diff --git a/spec/std/isa/inst/C/c.nop.yaml b/spec/std/isa/inst/C/c.nop.yaml index 6c87ce008f..6b4a94ce44 100644 --- a/spec/std/isa/inst/C/c.nop.yaml +++ b/spec/std/isa/inst/C/c.nop.yaml @@ -10,9 +10,10 @@ long_name: Non-operation description: | C.NOP expands into `addi x0, x0, 0`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: "" encoding: match: "0000000000000001" diff --git a/spec/std/isa/inst/C/c.or.yaml b/spec/std/isa/inst/C/c.or.yaml index 2222d930e1..9881ee0508 100644 --- a/spec/std/isa/inst/C/c.or.yaml +++ b/spec/std/isa/inst/C/c.or.yaml @@ -12,9 +12,10 @@ description: | The xd and xs2 register indexes should be used as xd+8 and xs2+8 (registers x8-x15). C.OR expands into `or xd, xd, xs2`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, xs2 encoding: match: 100011---10---01 diff --git a/spec/std/isa/inst/C/c.sd.yaml b/spec/std/isa/inst/C/c.sd.yaml index 5a81fd5d4e..acd58f04c8 100644 --- a/spec/std/isa/inst/C/c.sd.yaml +++ b/spec/std/isa/inst/C/c.sd.yaml @@ -14,9 +14,12 @@ description: | It expands to `sd` `xs2, offset(xs1)`. definedBy: anyOf: - - C - - Zca - - Zclsd + - allOf: + - xlen: 64 + - extension: + name: Zca + - extension: + name: Zclsd assembly: xs2, imm(xs1) encoding: RV32: diff --git a/spec/std/isa/inst/C/c.sdsp.yaml b/spec/std/isa/inst/C/c.sdsp.yaml index a310b97625..42ddefc58d 100644 --- a/spec/std/isa/inst/C/c.sdsp.yaml +++ b/spec/std/isa/inst/C/c.sdsp.yaml @@ -14,9 +14,12 @@ description: | It expands to `sd` `xs2, offset(x2)`. definedBy: anyOf: - - C - - Zca - - Zclsd + - allOf: + - xlen: 64 + - extension: + name: Zca + - extension: + name: Zclsd assembly: xs2, imm(sp) encoding: RV32: diff --git a/spec/std/isa/inst/C/c.slli.yaml b/spec/std/isa/inst/C/c.slli.yaml index 677a1903d6..5d7f312004 100644 --- a/spec/std/isa/inst/C/c.slli.yaml +++ b/spec/std/isa/inst/C/c.slli.yaml @@ -11,9 +11,10 @@ description: | Shift the value in xd left by shamt, and store the result back in xd. C.SLLI expands into `slli xd, xd, shamt`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, shamt encoding: RV32: diff --git a/spec/std/isa/inst/C/c.srai.yaml b/spec/std/isa/inst/C/c.srai.yaml index 2eb25e646b..9fbf336516 100644 --- a/spec/std/isa/inst/C/c.srai.yaml +++ b/spec/std/isa/inst/C/c.srai.yaml @@ -12,9 +12,10 @@ description: | The xd register index should be used as xd+8 (registers x8-x15). C.SRAI expands into `srai xd, xd, shamt`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, shamt encoding: RV32: diff --git a/spec/std/isa/inst/C/c.srli.yaml b/spec/std/isa/inst/C/c.srli.yaml index de97e4a81f..641e098e84 100644 --- a/spec/std/isa/inst/C/c.srli.yaml +++ b/spec/std/isa/inst/C/c.srli.yaml @@ -12,9 +12,10 @@ description: | The xd register index should be used as xd+8 (registers x8-x15). C.SRLI expands into `srli xd, xd, shamt`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, shamt encoding: RV32: diff --git a/spec/std/isa/inst/C/c.sub.yaml b/spec/std/isa/inst/C/c.sub.yaml index 4fde41b416..72a247c268 100644 --- a/spec/std/isa/inst/C/c.sub.yaml +++ b/spec/std/isa/inst/C/c.sub.yaml @@ -12,9 +12,10 @@ description: | The xd and xs2 register indexes should be used as xd+8 and xs2+8 (registers x8-x15). C.SUB expands into `sub xd, xd, xs2`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, xs2 encoding: match: 100011---00---01 diff --git a/spec/std/isa/inst/C/c.subw.yaml b/spec/std/isa/inst/C/c.subw.yaml index d32df7fe4f..db865b2207 100644 --- a/spec/std/isa/inst/C/c.subw.yaml +++ b/spec/std/isa/inst/C/c.subw.yaml @@ -12,9 +12,12 @@ description: | The xd and xs2 register indexes should be used as xd+8 and xs2+8 (registers x8-x15). C.SUBW expands into `subw xd, xd, xs2`. definedBy: - anyOf: - - C - - Zca + allOf: + - xlen: 64 + - extension: + anyOf: + - name: C + - name: Zca base: 64 assembly: xd, xs2 encoding: diff --git a/spec/std/isa/inst/C/c.sw.yaml b/spec/std/isa/inst/C/c.sw.yaml index 0b1202c0f0..bf2dd5cd89 100644 --- a/spec/std/isa/inst/C/c.sw.yaml +++ b/spec/std/isa/inst/C/c.sw.yaml @@ -13,9 +13,10 @@ description: | to the base address in register xs1. It expands to `sw` `rs2, offset(xs1)`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xs2, imm(xs1) encoding: match: 110-----------00 diff --git a/spec/std/isa/inst/C/c.swsp.yaml b/spec/std/isa/inst/C/c.swsp.yaml index 81cdd90901..1efab51c5c 100644 --- a/spec/std/isa/inst/C/c.swsp.yaml +++ b/spec/std/isa/inst/C/c.swsp.yaml @@ -13,9 +13,10 @@ description: | to the stack pointer, x2. It expands to `sw` `xs2, offset(x2)`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xs2, imm(sp) encoding: match: 110-----------10 diff --git a/spec/std/isa/inst/C/c.xor.yaml b/spec/std/isa/inst/C/c.xor.yaml index df82b06954..06c2725c2e 100644 --- a/spec/std/isa/inst/C/c.xor.yaml +++ b/spec/std/isa/inst/C/c.xor.yaml @@ -12,9 +12,10 @@ description: | The xd and xs2 register indexes should be used as xd+8 and xs2+8 (registers x8-x15). C.XOR expands into `xor xd, xd, xs2`. definedBy: - anyOf: - - C - - Zca + extension: + anyOf: + - name: C + - name: Zca assembly: xd, xs2 encoding: match: 100011---01---01 diff --git a/spec/std/isa/inst/D/fadd.d.yaml b/spec/std/isa/inst/D/fadd.d.yaml index ec0e4615da..f9fd47d4ac 100644 --- a/spec/std/isa/inst/D/fadd.d.yaml +++ b/spec/std/isa/inst/D/fadd.d.yaml @@ -13,7 +13,9 @@ description: text: | The `fadd.d` instruction is analogous to `fadd.s` and performs double-precision floating-point addition between `fs1` and `fs2` and writes the final result to `fd`. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, fs2, rm encoding: match: 0000001------------------1010011 diff --git a/spec/std/isa/inst/D/fclass.d.yaml b/spec/std/isa/inst/D/fclass.d.yaml index 4c77620aa7..e1936af912 100644 --- a/spec/std/isa/inst/D/fclass.d.yaml +++ b/spec/std/isa/inst/D/fclass.d.yaml @@ -7,7 +7,7 @@ $schema: inst_schema.json# kind: instruction name: fclass.d long_name: Floating-Point Classify Double-Precision -description: +description: | - id: inst-fclass.d-behaviour normative: false text: | @@ -33,7 +33,9 @@ description: |8 |_fs1_ is a signaling NaN. |9 |_fs1_ is a quiet NaN. |=== -definedBy: D +definedBy: + extension: + name: D assembly: xd, fs1 encoding: match: 111000100000-----001-----1010011 diff --git a/spec/std/isa/inst/D/fcvt.d.l.yaml b/spec/std/isa/inst/D/fcvt.d.l.yaml index 19973aa894..5b019dbcfd 100644 --- a/spec/std/isa/inst/D/fcvt.d.l.yaml +++ b/spec/std/isa/inst/D/fcvt.d.l.yaml @@ -13,7 +13,11 @@ description: text: | The `fcvt.d.l` instruction converts a 64-bit signed integer, in integer register `xs1` into a double-precision floating-point number in floating-point register `fd`. -definedBy: D +definedBy: + allOf: + - xlen: 64 + - extension: + name: D assembly: fd, xs1, rm encoding: match: 110100100010-------------1010011 diff --git a/spec/std/isa/inst/D/fcvt.d.lu.yaml b/spec/std/isa/inst/D/fcvt.d.lu.yaml index 4b08546acd..10ac1e16dc 100644 --- a/spec/std/isa/inst/D/fcvt.d.lu.yaml +++ b/spec/std/isa/inst/D/fcvt.d.lu.yaml @@ -13,7 +13,11 @@ description: text: | The `fcvt.d.lu` instruction converts to or from a 64-bit unsigned integer, `xs1` into a double-precision floating-point number in floating-point register `fd`. -definedBy: D +definedBy: + allOf: + - xlen: 64 + - extension: + name: D assembly: fd, xs1, rm encoding: match: 110100100011-------------1010011 diff --git a/spec/std/isa/inst/D/fcvt.d.s.yaml b/spec/std/isa/inst/D/fcvt.d.s.yaml index 7e54b7d1ea..a32511bb71 100644 --- a/spec/std/isa/inst/D/fcvt.d.s.yaml +++ b/spec/std/isa/inst/D/fcvt.d.s.yaml @@ -15,7 +15,9 @@ description: major opcode space and both the source and destination are floating-point registers. The `xs2` field encodes the datatype of the source, and the `fmt` field encodes the datatype of the destination. `fcvt.d.s` will never round. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, rm encoding: match: 010000100000-------------1010011 diff --git a/spec/std/isa/inst/D/fcvt.d.w.yaml b/spec/std/isa/inst/D/fcvt.d.w.yaml index 6f952bbf6a..a795f5989a 100644 --- a/spec/std/isa/inst/D/fcvt.d.w.yaml +++ b/spec/std/isa/inst/D/fcvt.d.w.yaml @@ -14,7 +14,9 @@ description: The `fcvt.d.w` instruction converts a 32-bit signed integer, in integer register `xs1` into a double-precision floating-point number in floating-point register `fd`. Note `fcvt.d.w` always produces an exact result and is unaffected by rounding mode. -definedBy: D +definedBy: + extension: + name: D assembly: fd, xs1, rm encoding: match: 110100100000-------------1010011 diff --git a/spec/std/isa/inst/D/fcvt.d.wu.yaml b/spec/std/isa/inst/D/fcvt.d.wu.yaml index e072aad2da..da9be65ffb 100644 --- a/spec/std/isa/inst/D/fcvt.d.wu.yaml +++ b/spec/std/isa/inst/D/fcvt.d.wu.yaml @@ -14,7 +14,9 @@ description: The `fcvt.d.wu` instruction converts a 32-bit unsigned integer in integer register `xs1` into a double-precision floating-point number in floating-point register `fd`. Note `fcvt.d.wu` always produces an exact result and is unaffected by rounding mode. -definedBy: D +definedBy: + extension: + name: D assembly: fd, xs1, rm encoding: match: 110100100001-------------1010011 diff --git a/spec/std/isa/inst/D/fcvt.l.d.yaml b/spec/std/isa/inst/D/fcvt.l.d.yaml index b7abd8e8dc..e493f30dfd 100644 --- a/spec/std/isa/inst/D/fcvt.l.d.yaml +++ b/spec/std/isa/inst/D/fcvt.l.d.yaml @@ -13,7 +13,11 @@ description: text: | The `fcvt.l.d` instruction converts a double-precision floating-point number in floating-point register `fs1` to a signed 64-bit integer, in integer register `xd`. -definedBy: D +definedBy: + allOf: + - xlen: 64 + - extension: + name: D assembly: xd, fs1, rm encoding: match: 110000100010-------------1010011 diff --git a/spec/std/isa/inst/D/fcvt.lu.d.yaml b/spec/std/isa/inst/D/fcvt.lu.d.yaml index 402e791adf..076449609c 100644 --- a/spec/std/isa/inst/D/fcvt.lu.d.yaml +++ b/spec/std/isa/inst/D/fcvt.lu.d.yaml @@ -13,7 +13,11 @@ description: text: | The `fcvt.lu.d` instruction converts a double-precision floating-point number in floating-point register `fs1` to an unsigned 64-bit integer, in integer register `xd`. -definedBy: D +definedBy: + allOf: + - xlen: 64 + - extension: + name: D assembly: xd, fs1, rm encoding: match: 110000100011-------------1010011 diff --git a/spec/std/isa/inst/D/fcvt.s.d.yaml b/spec/std/isa/inst/D/fcvt.s.d.yaml index e29f4945ed..355d4e1c32 100644 --- a/spec/std/isa/inst/D/fcvt.s.d.yaml +++ b/spec/std/isa/inst/D/fcvt.s.d.yaml @@ -15,7 +15,9 @@ description: number. This is encoded in the OP-FP major opcode space and both the source and destination are floating-point registers. The `xs2` field encodes the datatype of the source, and the `fmt` field encodes the datatype of the destination. `fcvt.s.d` rounds according to the `rm` field. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, rm encoding: match: 010000000001-------------1010011 diff --git a/spec/std/isa/inst/D/fcvt.w.d.yaml b/spec/std/isa/inst/D/fcvt.w.d.yaml index 085b52604b..8f4ddcab9e 100644 --- a/spec/std/isa/inst/D/fcvt.w.d.yaml +++ b/spec/std/isa/inst/D/fcvt.w.d.yaml @@ -13,7 +13,9 @@ description: text: | The `fcvt.w.d` instruction converts a double-precision floating-point number in floating-point register `fs1` to a signed 32-bit integer, in integer register `xd`. -definedBy: D +definedBy: + extension: + name: D assembly: xd, fs1, rm encoding: match: 110000100000-------------1010011 diff --git a/spec/std/isa/inst/D/fcvt.wu.d.yaml b/spec/std/isa/inst/D/fcvt.wu.d.yaml index 5b5df5d708..205cd8db4b 100644 --- a/spec/std/isa/inst/D/fcvt.wu.d.yaml +++ b/spec/std/isa/inst/D/fcvt.wu.d.yaml @@ -13,7 +13,9 @@ description: text: | The `fcvt.wu.d` instruction converts a double-precision floating-point number in floating-point register `fs1` to an unsigned 32-bit integer, in integer register `xd`. -definedBy: D +definedBy: + extension: + name: D assembly: xd, fs1, rm encoding: match: 110000100001-------------1010011 diff --git a/spec/std/isa/inst/D/fcvtmod.w.d.yaml b/spec/std/isa/inst/D/fcvtmod.w.d.yaml index 256c6edc90..c8b8bf0813 100644 --- a/spec/std/isa/inst/D/fcvtmod.w.d.yaml +++ b/spec/std/isa/inst/D/fcvtmod.w.d.yaml @@ -21,7 +21,10 @@ description: This instruction is only provided if the D extension is implemented. It is encoded like `fcvt.w.d`, but with the `xs2` field set to 8 and the `rm` field set to 1 (RTZ). Other `rm` values are reserved. definedBy: - allOf: [D, Zfa] + extension: + allOf: + - name: D + - name: Zfa assembly: xd, fs1, rm encoding: match: 110000101000-------------1010011 diff --git a/spec/std/isa/inst/D/fdiv.d.yaml b/spec/std/isa/inst/D/fdiv.d.yaml index 1b9d8213ac..b8c9ec8a7d 100644 --- a/spec/std/isa/inst/D/fdiv.d.yaml +++ b/spec/std/isa/inst/D/fdiv.d.yaml @@ -13,7 +13,10 @@ description: text: | The `fdiv.d` instruction performs the double-precision floating-point division of `fs1` by `fs2`. It is defined analogously to its single-precision counterpart, but operates on double-precision operands and produces double-precision results. -definedBy: D + +definedBy: + extension: + name: D assembly: fd, fs1, fs2, rm encoding: match: 0001101------------------1010011 diff --git a/spec/std/isa/inst/D/feq.d.yaml b/spec/std/isa/inst/D/feq.d.yaml index 7cb3b61319..86f5ca8479 100644 --- a/spec/std/isa/inst/D/feq.d.yaml +++ b/spec/std/isa/inst/D/feq.d.yaml @@ -13,7 +13,9 @@ description: text: | The `feq.d` instruction writes 1 to `xd` if `fs1` and `fs2` are equal, and 0 otherwise. It is defined analogously to its single-precision counterpart, but operates on double-precision operands. -definedBy: D +definedBy: + extension: + name: D assembly: xd, fs1, fs2 encoding: match: 1010001----------010-----1010011 diff --git a/spec/std/isa/inst/D/fld.yaml b/spec/std/isa/inst/D/fld.yaml index 0414132419..56cd9eb154 100644 --- a/spec/std/isa/inst/D/fld.yaml +++ b/spec/std/isa/inst/D/fld.yaml @@ -15,10 +15,12 @@ description: register `fd`. It is guaranteed to execute atomically if the effective address is naturally aligned and XLEN≥64. It doesn't modify the bits being transferred; in particular, the payloads of non-canonical NaNs are preserved. -definedBy: D +definedBy: + extension: + name: D assembly: fd, imm(xs1) encoding: - match: -----------------011-----0000111 + match: "-----------------011-----0000111" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/D/fle.d.yaml b/spec/std/isa/inst/D/fle.d.yaml index 280f5cc5ca..4e861c2fa3 100644 --- a/spec/std/isa/inst/D/fle.d.yaml +++ b/spec/std/isa/inst/D/fle.d.yaml @@ -13,7 +13,10 @@ description: text: | The `fle.d` instruction writes 1 to `xd` if `fs1` is less than or equal to `fs2`, and 0 otherwise. It is defined analogously to its single-precision counterpart, but operates on double-precision operands. -definedBy: D + +definedBy: + extension: + name: D assembly: xd, fs1, fs2 encoding: match: 1010001----------000-----1010011 diff --git a/spec/std/isa/inst/D/fleq.d.yaml b/spec/std/isa/inst/D/fleq.d.yaml index 5ed7e6a91e..d4559aa5c1 100644 --- a/spec/std/isa/inst/D/fleq.d.yaml +++ b/spec/std/isa/inst/D/fleq.d.yaml @@ -14,7 +14,10 @@ description: The `fleq.d` instruction is defined like the `fle.d` instruction, except that quiet NaN inputs do not cause the invalid operation exception flag to be set. definedBy: - allOf: [D, Zfa] + extension: + allOf: + - name: D + - name: Zfa assembly: xd, fs1, fs2 encoding: match: 1010001----------100-----1010011 diff --git a/spec/std/isa/inst/D/fli.d.yaml b/spec/std/isa/inst/D/fli.d.yaml index 662a10aa03..3c7f58c834 100644 --- a/spec/std/isa/inst/D/fli.d.yaml +++ b/spec/std/isa/inst/D/fli.d.yaml @@ -14,7 +14,10 @@ description: The `fli.d` instruction instruction loads one of 32 double-precision floating-point constants, encoded in the `xs1` field, into floating-point register `fd`. `fli.d` is encoded like `fli.s`, but with `fmt` set to D. definedBy: - allOf: [D, Zfa] + extension: + allOf: + - name: D + - name: Zfa assembly: fd, xs1 encoding: match: 111100100001-----000-----1010011 diff --git a/spec/std/isa/inst/D/flt.d.yaml b/spec/std/isa/inst/D/flt.d.yaml index 6ff12eff47..3ef19e37ed 100644 --- a/spec/std/isa/inst/D/flt.d.yaml +++ b/spec/std/isa/inst/D/flt.d.yaml @@ -13,7 +13,9 @@ description: text: | The `flt.d` instruction writes 1 to `xd` if `fs1` is less than `fs2`, and 0 otherwise. It is defined analogously to its single-precision counterpart, but operates on double-precision operands. -definedBy: D +definedBy: + extension: + name: D assembly: xd, fs1, fs2 encoding: match: 1010001----------001-----1010011 diff --git a/spec/std/isa/inst/D/fltq.d.yaml b/spec/std/isa/inst/D/fltq.d.yaml index d39714c1ec..b6e49ab3bc 100644 --- a/spec/std/isa/inst/D/fltq.d.yaml +++ b/spec/std/isa/inst/D/fltq.d.yaml @@ -14,7 +14,10 @@ description: The `fltq.d` instruction is defined like the `flt.d` instruction, except that quiet NaN inputs do not cause the invalid operation exception flag to be set. definedBy: - allOf: [D, Zfa] + extension: + allOf: + - name: D + - name: Zfa assembly: xd, fs1, fs2 encoding: match: 1010001----------101-----1010011 diff --git a/spec/std/isa/inst/D/fmadd.d.yaml b/spec/std/isa/inst/D/fmadd.d.yaml index c939d8b7a9..c0ad58241a 100644 --- a/spec/std/isa/inst/D/fmadd.d.yaml +++ b/spec/std/isa/inst/D/fmadd.d.yaml @@ -12,10 +12,13 @@ description: normative: false text: | The `fmadd.d` instruction multiplies the values in `fs1` and `fs2`, adds the value in `fs3`, and writes the final result to `fd`. -definedBy: D + +definedBy: + extension: + name: D assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----01------------------1000011 + match: "-----01------------------1000011" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/D/fmax.d.yaml b/spec/std/isa/inst/D/fmax.d.yaml index f76c6898d3..14481ff0a0 100644 --- a/spec/std/isa/inst/D/fmax.d.yaml +++ b/spec/std/isa/inst/D/fmax.d.yaml @@ -15,7 +15,9 @@ description: the value `-0.0` is considered to be less than the value `+0.0`. If both inputs are NaNs, the result is the canonical NaN. If only one operand is a NaN, the result is the non-NaN operand. Signaling NaN inputs set the invalid operation exception flag, even when the result is not NaN. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, fs2 encoding: match: 0010101----------001-----1010011 diff --git a/spec/std/isa/inst/D/fmaxm.d.yaml b/spec/std/isa/inst/D/fmaxm.d.yaml index a652ba663c..9a354cba6f 100644 --- a/spec/std/isa/inst/D/fmaxm.d.yaml +++ b/spec/std/isa/inst/D/fmaxm.d.yaml @@ -14,7 +14,10 @@ description: The `fmaxm.d` instruction writes larger of `fs1` and `fs2` to `fd`. It is defined like `fmax.d` instruction, except that if either input is NaN, the result is the canonical NaN. definedBy: - allOf: [D, Zfa] + extension: + allOf: + - name: D + - name: Zfa assembly: fd, fs1, fs2 encoding: match: 0010101----------011-----1010011 diff --git a/spec/std/isa/inst/D/fmin.d.yaml b/spec/std/isa/inst/D/fmin.d.yaml index 88bda4a593..9fb1f0e549 100644 --- a/spec/std/isa/inst/D/fmin.d.yaml +++ b/spec/std/isa/inst/D/fmin.d.yaml @@ -15,7 +15,9 @@ description: the value `-0.0` is considered to be less than the value `+0.0`. If both inputs are NaNs, the result is the canonical NaN. If only one operand is a NaN, the result is the non-NaN operand. Signaling NaN inputs set the invalid operation exception flag, even when the result is not NaN. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, fs2 encoding: match: 0010101----------000-----1010011 diff --git a/spec/std/isa/inst/D/fminm.d.yaml b/spec/std/isa/inst/D/fminm.d.yaml index 38fb7293be..40ee59c4ef 100644 --- a/spec/std/isa/inst/D/fminm.d.yaml +++ b/spec/std/isa/inst/D/fminm.d.yaml @@ -14,7 +14,10 @@ description: The `fminm.d` instruction writes smaller of `fs1` and `fs2` to `fd`. It is defined like `fmin.d` instruction, except that if either input is NaN, the result is the canonical NaN. definedBy: - allOf: [D, Zfa] + extension: + allOf: + - name: D + - name: Zfa assembly: fd, fs1, fs2 encoding: match: 0010101----------010-----1010011 diff --git a/spec/std/isa/inst/D/fmsub.d.yaml b/spec/std/isa/inst/D/fmsub.d.yaml index b1798d41a8..64a684e513 100644 --- a/spec/std/isa/inst/D/fmsub.d.yaml +++ b/spec/std/isa/inst/D/fmsub.d.yaml @@ -12,10 +12,13 @@ description: normative: false text: | The `fmsub.d` instruction multiplies the values in `fs1` and `fs2`, subtracts the value in `fs3`, and writes the final result to `fd`. -definedBy: D + +definedBy: + extension: + name: D assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----01------------------1000111 + match: "-----01------------------1000111" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/D/fmul.d.yaml b/spec/std/isa/inst/D/fmul.d.yaml index 928014f411..f1022c8c1b 100644 --- a/spec/std/isa/inst/D/fmul.d.yaml +++ b/spec/std/isa/inst/D/fmul.d.yaml @@ -14,7 +14,9 @@ description: The `fmul.d` instruction performs the double-precision floating-point multiplication between `fs1` and `fs2`. It is defined analogously to its single-precision counterpart, but operates on double-precision operands and produces double-precision results. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, fs2, rm encoding: match: 0001001------------------1010011 diff --git a/spec/std/isa/inst/D/fmv.d.x.yaml b/spec/std/isa/inst/D/fmv.d.x.yaml index c3f0b0a898..60e10949be 100644 --- a/spec/std/isa/inst/D/fmv.d.x.yaml +++ b/spec/std/isa/inst/D/fmv.d.x.yaml @@ -13,7 +13,11 @@ description: text: | The `fmv.d.x` instruction moves the double-precision value encoded in `IEEE 754-2008` standard encoding from the integer register `xs1` to the floating-point register `fd`. -definedBy: D +definedBy: + allOf: + - xlen: 64 + - extension: + name: D assembly: fd, xs1 encoding: match: 111100100000-----000-----1010011 diff --git a/spec/std/isa/inst/D/fmv.x.d.yaml b/spec/std/isa/inst/D/fmv.x.d.yaml index 678d6b7d2f..a31d2b0698 100644 --- a/spec/std/isa/inst/D/fmv.x.d.yaml +++ b/spec/std/isa/inst/D/fmv.x.d.yaml @@ -13,7 +13,11 @@ description: text: | The `fmv.x.d` instruction moves the double-precision value in floating-point register `fs1` to a representation in `IEEE 754-2008` standard encoding in integer register `xd`. -definedBy: D +definedBy: + allOf: + - xlen: 64 + - extension: + name: D assembly: xd, fs1 encoding: match: 111000100000-----000-----1010011 diff --git a/spec/std/isa/inst/D/fmvh.x.d.yaml b/spec/std/isa/inst/D/fmvh.x.d.yaml index a61c1a3c6a..46e20991ad 100644 --- a/spec/std/isa/inst/D/fmvh.x.d.yaml +++ b/spec/std/isa/inst/D/fmvh.x.d.yaml @@ -15,7 +15,12 @@ description: is used in conjunction with the existing `fmv.x.w` instruction to move a double-precision floating-point number to a pair of integer-registers. definedBy: - allOf: [D, Zfa] + allOf: + - xlen: 32 + - extension: + allOf: + - name: D + - name: Zfa assembly: xd, fs1 encoding: match: 111000100001-----000-----1010011 diff --git a/spec/std/isa/inst/D/fmvp.d.x.yaml b/spec/std/isa/inst/D/fmvp.d.x.yaml index b9afa30b26..ef8e1b09fe 100644 --- a/spec/std/isa/inst/D/fmvp.d.x.yaml +++ b/spec/std/isa/inst/D/fmvp.d.x.yaml @@ -15,7 +15,12 @@ description: register. Integer registers `xs1` and `xs2` supply bits 31:0 and 63:32, respectively; the result is written to floating-point register `fd`. definedBy: - allOf: [D, Zfa] + allOf: + - xlen: 32 + - extension: + allOf: + - name: D + - name: Zfa assembly: fd, xs1, xs2 encoding: match: 1011001----------000-----1010011 diff --git a/spec/std/isa/inst/D/fnmadd.d.yaml b/spec/std/isa/inst/D/fnmadd.d.yaml index 9fe296a8a2..3ebc6f0dcb 100644 --- a/spec/std/isa/inst/D/fnmadd.d.yaml +++ b/spec/std/isa/inst/D/fnmadd.d.yaml @@ -13,10 +13,12 @@ description: text: | The `fnmadd.d` instruction multiplies the values in `fs1` and `fs2`, negates the product, subtracts the value in `fs3`, and writes the final result to `fd`. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----01------------------1001111 + match: "-----01------------------1001111" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/D/fnmsub.d.yaml b/spec/std/isa/inst/D/fnmsub.d.yaml index 46e08f9995..7e3c63aedb 100644 --- a/spec/std/isa/inst/D/fnmsub.d.yaml +++ b/spec/std/isa/inst/D/fnmsub.d.yaml @@ -13,10 +13,12 @@ description: text: | The `fnmsub.d` instruction multiplies the values in `fs1` and `fs2`, negates the product, adds the value in `fs3`, and writes the final result to `fd`. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----01------------------1001011 + match: "-----01------------------1001011" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/D/fround.d.yaml b/spec/std/isa/inst/D/fround.d.yaml index 2a4cd58bf1..aedf23ac44 100644 --- a/spec/std/isa/inst/D/fround.d.yaml +++ b/spec/std/isa/inst/D/fround.d.yaml @@ -18,7 +18,10 @@ description: exception flag to be set; no other exception flags are set. `fround.d` is encoded like `fcvt.d.s`, but with `xs2` set to 4. definedBy: - allOf: [D, Zfa] + extension: + allOf: + - name: D + - name: Zfa assembly: fd, fs1, rm encoding: match: 010000100100-------------1010011 diff --git a/spec/std/isa/inst/D/froundnx.d.yaml b/spec/std/isa/inst/D/froundnx.d.yaml index ada36186d6..be6996d223 100644 --- a/spec/std/isa/inst/D/froundnx.d.yaml +++ b/spec/std/isa/inst/D/froundnx.d.yaml @@ -14,7 +14,10 @@ description: The `froundnx.d` instruction is defined in the same way as `fround.d`, but it also sets the inexact exception flag if the input differs from the rounded result and is not NaN. `froundnx.d` is encoded like `fcvt.d.s`, but with `xs2` set to 5. definedBy: - allOf: [D, Zfa] + extension: + allOf: + - name: D + - name: Zfa assembly: fd, fs1, rm encoding: match: 010000100101-------------1010011 diff --git a/spec/std/isa/inst/D/fsd.yaml b/spec/std/isa/inst/D/fsd.yaml index 92568540df..5d16ae5a1c 100644 --- a/spec/std/isa/inst/D/fsd.yaml +++ b/spec/std/isa/inst/D/fsd.yaml @@ -14,10 +14,12 @@ description: The `fsd` instruction stores a double-precision value from the floating-point registers to memory. It is guaranteed to execute atomically if the effective address is naturally aligned and XLEN≥64. It doesn't modify the bits being transferred; in particular, the payloads of non-canonical NaNs are preserved. -definedBy: D +definedBy: + extension: + name: D assembly: fs2, imm(xs1) encoding: - match: -----------------011-----0100111 + match: "-----------------011-----0100111" variables: - name: imm location: 31-25|11-7 diff --git a/spec/std/isa/inst/D/fsgnj.d.yaml b/spec/std/isa/inst/D/fsgnj.d.yaml index 338723a399..4f9b1175f6 100644 --- a/spec/std/isa/inst/D/fsgnj.d.yaml +++ b/spec/std/isa/inst/D/fsgnj.d.yaml @@ -15,7 +15,9 @@ description: The result's sign bit is taken from `fs2`'s sign bit, and the result is written to the destination register `fd`. Sign-injection instructions do not set floating-point exception flags, nor do they canonicalize NaNs. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, fs2 encoding: match: 0010001----------000-----1010011 diff --git a/spec/std/isa/inst/D/fsgnjn.d.yaml b/spec/std/isa/inst/D/fsgnjn.d.yaml index 1f69aff7e1..3b0ca0448a 100644 --- a/spec/std/isa/inst/D/fsgnjn.d.yaml +++ b/spec/std/isa/inst/D/fsgnjn.d.yaml @@ -15,7 +15,9 @@ description: The result's sign bit is opposite of `fs2`'s sign bit, and the result is written to the destination register `fd`. Sign-injection instructions do not set floating-point exception flags, nor do they canonicalize NaNs. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, fs2 encoding: match: 0010001----------001-----1010011 diff --git a/spec/std/isa/inst/D/fsgnjx.d.yaml b/spec/std/isa/inst/D/fsgnjx.d.yaml index 0b5375a5c6..f538db9b5d 100644 --- a/spec/std/isa/inst/D/fsgnjx.d.yaml +++ b/spec/std/isa/inst/D/fsgnjx.d.yaml @@ -15,7 +15,9 @@ description: The result's sign bit is the XOR of sign bits of `fs1` and `fs2`, and the result is written to the destination register `fd`. Sign-injection instructions do not set floating-point exception flags, nor do they canonicalize NaNs. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, fs2 encoding: match: 0010001----------010-----1010011 diff --git a/spec/std/isa/inst/D/fsqrt.d.yaml b/spec/std/isa/inst/D/fsqrt.d.yaml index c8d01d43b2..6595a97229 100644 --- a/spec/std/isa/inst/D/fsqrt.d.yaml +++ b/spec/std/isa/inst/D/fsqrt.d.yaml @@ -14,7 +14,9 @@ description: The `fsqrt.d` instruction computes the square root of `fs1` and result is written in `fd`. It is defined analogously to its single-precision counterpart, but operates on double-precision operands and produces double-precision results. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, rm encoding: match: 010110100000-------------1010011 diff --git a/spec/std/isa/inst/D/fsub.d.yaml b/spec/std/isa/inst/D/fsub.d.yaml index 872574ac04..a5c15fc34d 100644 --- a/spec/std/isa/inst/D/fsub.d.yaml +++ b/spec/std/isa/inst/D/fsub.d.yaml @@ -13,7 +13,9 @@ description: text: | The `fsub.d` instruction is analogous to `fsub.s` and performs double-precision floating-point subtraction between `fs1` and `fs2` and writes the final result to `fd`. -definedBy: D +definedBy: + extension: + name: D assembly: fd, fs1, fs2, rm encoding: match: 0000101------------------1010011 diff --git a/spec/std/isa/inst/F/fadd.s.yaml b/spec/std/isa/inst/F/fadd.s.yaml index 1d30723c62..32adcff7ab 100644 --- a/spec/std/isa/inst/F/fadd.s.yaml +++ b/spec/std/isa/inst/F/fadd.s.yaml @@ -10,7 +10,9 @@ long_name: Floating-Point Add Single-Precision description: | The `fadd.s` instruction performs single-precision floating-point addition of `xs1` and `xs2` and writes the final result to `fd`. -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, fs2, rm encoding: match: 0000000------------------1010011 diff --git a/spec/std/isa/inst/F/fclass.s.yaml b/spec/std/isa/inst/F/fclass.s.yaml index fc13a8f43b..6ee4f7a836 100644 --- a/spec/std/isa/inst/F/fclass.s.yaml +++ b/spec/std/isa/inst/F/fclass.s.yaml @@ -30,7 +30,10 @@ description: | |8 |_fs1_ is a signaling NaN. |9 |_fs1_ is a quiet NaN. |=== -definedBy: F + +definedBy: + extension: + name: F assembly: xd, fs1 encoding: match: 111000000000-----001-----1010011 diff --git a/spec/std/isa/inst/F/fcvt.l.s.yaml b/spec/std/isa/inst/F/fcvt.l.s.yaml index b4a1d4248c..4fd048564b 100644 --- a/spec/std/isa/inst/F/fcvt.l.s.yaml +++ b/spec/std/isa/inst/F/fcvt.l.s.yaml @@ -10,7 +10,11 @@ long_name: Floating-Point Convert Single-Precision to Long description: | The `fcvt.l.s` instruction converts a floating-point number in floating-point register `fs1` to a signed 64-bit integer, in integer register `xd`. -definedBy: F +definedBy: + allOf: + - xlen: 64 + - extension: + name: F base: 64 assembly: xd, fs1, rm encoding: diff --git a/spec/std/isa/inst/F/fcvt.lu.s.yaml b/spec/std/isa/inst/F/fcvt.lu.s.yaml index b212a24cd4..d49fe18f6f 100644 --- a/spec/std/isa/inst/F/fcvt.lu.s.yaml +++ b/spec/std/isa/inst/F/fcvt.lu.s.yaml @@ -10,7 +10,11 @@ long_name: Floating-Point Convert Single-Precision to Unsigned Long description: | The `fcvt.lu.s` instruction converts a floating-point number in floating-point register `fs1` to a unsigned 64-bit integer, in integer register `xd`. -definedBy: F +definedBy: + allOf: + - xlen: 64 + - extension: + name: F base: 64 assembly: xd, fs1, rm encoding: diff --git a/spec/std/isa/inst/F/fcvt.s.l.yaml b/spec/std/isa/inst/F/fcvt.s.l.yaml index 1591c27146..fdb4f88cd2 100644 --- a/spec/std/isa/inst/F/fcvt.s.l.yaml +++ b/spec/std/isa/inst/F/fcvt.s.l.yaml @@ -10,7 +10,11 @@ long_name: Floating-Point Convert Long to Single-Precision description: | The `fcvt.s.l` instruction converts a 64-bit signed integer in integer register `xs1` into a floating-point number in floating-point register `fd`. -definedBy: F +definedBy: + allOf: + - xlen: 64 + - extension: + name: F base: 64 assembly: fd, xs1, rm encoding: diff --git a/spec/std/isa/inst/F/fcvt.s.lu.yaml b/spec/std/isa/inst/F/fcvt.s.lu.yaml index d8cfcd75a3..b8a4327a98 100644 --- a/spec/std/isa/inst/F/fcvt.s.lu.yaml +++ b/spec/std/isa/inst/F/fcvt.s.lu.yaml @@ -9,7 +9,11 @@ name: fcvt.s.lu long_name: Floating-Point Convert Unsigned Long to Single-Precision description: | The `fcvt.s.lu` instruction converts a 64-bit unsigned integer into a single-precision floating-point number. -definedBy: F +definedBy: + allOf: + - xlen: 64 + - extension: + name: F base: 64 assembly: fd, xs1, rm encoding: diff --git a/spec/std/isa/inst/F/fcvt.s.w.yaml b/spec/std/isa/inst/F/fcvt.s.w.yaml index cedb7ecf20..8f8df21c7b 100644 --- a/spec/std/isa/inst/F/fcvt.s.w.yaml +++ b/spec/std/isa/inst/F/fcvt.s.w.yaml @@ -19,7 +19,9 @@ description: | All floating-point conversion instructions set the Inexact exception flag if the rounded result differs from the operand value and the Invalid exception flag is not set. -definedBy: F +definedBy: + extension: + name: F assembly: fd, xs1, rm encoding: match: 110100000000-------------1010011 diff --git a/spec/std/isa/inst/F/fcvt.s.wu.yaml b/spec/std/isa/inst/F/fcvt.s.wu.yaml index 39b62e7c48..e1c9002a8b 100644 --- a/spec/std/isa/inst/F/fcvt.s.wu.yaml +++ b/spec/std/isa/inst/F/fcvt.s.wu.yaml @@ -19,7 +19,9 @@ description: | All floating-point conversion instructions set the Inexact exception flag if the rounded result differs from the operand value and the Invalid exception flag is not set. -definedBy: F +definedBy: + extension: + name: F assembly: fd, xs1, rm encoding: match: 110100000001-------------1010011 diff --git a/spec/std/isa/inst/F/fcvt.w.s.yaml b/spec/std/isa/inst/F/fcvt.w.s.yaml index cd7093b77e..352a83b7e9 100644 --- a/spec/std/isa/inst/F/fcvt.w.s.yaml +++ b/spec/std/isa/inst/F/fcvt.w.s.yaml @@ -37,7 +37,10 @@ description: | All floating-point conversion instructions set the Inexact exception flag if the rounded result differs from the operand value and the Invalid exception flag is not set. -definedBy: F + +definedBy: + extension: + name: F assembly: xd, fs1, rm encoding: match: 110000000000-------------1010011 diff --git a/spec/std/isa/inst/F/fcvt.wu.s.yaml b/spec/std/isa/inst/F/fcvt.wu.s.yaml index 09fc8c674f..8c3f9c8401 100644 --- a/spec/std/isa/inst/F/fcvt.wu.s.yaml +++ b/spec/std/isa/inst/F/fcvt.wu.s.yaml @@ -37,7 +37,9 @@ description: | All floating-point conversion instructions set the Inexact exception flag if the rounded result differs from the operand value and the Invalid exception flag is not set. -definedBy: F +definedBy: + extension: + name: F assembly: xd, fs1, rm encoding: match: 110000000001-------------1010011 diff --git a/spec/std/isa/inst/F/fdiv.s.yaml b/spec/std/isa/inst/F/fdiv.s.yaml index fd6804438e..bdab30c217 100644 --- a/spec/std/isa/inst/F/fdiv.s.yaml +++ b/spec/std/isa/inst/F/fdiv.s.yaml @@ -10,7 +10,9 @@ long_name: Floating-Point Divide Single-Precision description: | The `fdiv.s` instruction performs the single-precision floating-point division of `fs1` by `fs2`, and writes the final result to `fd`. -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, fs2, rm encoding: match: 0001100------------------1010011 diff --git a/spec/std/isa/inst/F/feq.s.yaml b/spec/std/isa/inst/F/feq.s.yaml index 2a82a31f1c..496dad1a28 100644 --- a/spec/std/isa/inst/F/feq.s.yaml +++ b/spec/std/isa/inst/F/feq.s.yaml @@ -11,7 +11,10 @@ description: | The `feq.s` instruction writes 1 to `xd` if `fs1` and `fs2` are equal, and 0 otherwise. If either operand is NaN, the result is 0 (not equal). If either operand is a signaling NaN, the invalid flag is set. Positive zero is considered equal to negative zero. -definedBy: F + +definedBy: + extension: + name: F assembly: xd, fs1, fs2 encoding: match: 1010000----------010-----1010011 diff --git a/spec/std/isa/inst/F/fle.s.yaml b/spec/std/isa/inst/F/fle.s.yaml index d7913eeb9d..4234014457 100644 --- a/spec/std/isa/inst/F/fle.s.yaml +++ b/spec/std/isa/inst/F/fle.s.yaml @@ -11,7 +11,10 @@ description: | The `fle.s` instruction writes 1 to `xd` if `fs1` is less than or equal to `fs2`, and 0 otherwise. If either operand is NaN, the result is 0 (not equal). If either operand is a NaN (signaling or quiet), the invalid flag is set. Positive zero and negative zero are considered equal. -definedBy: F + +definedBy: + extension: + name: F assembly: xd, fs1, fs2 encoding: match: 1010000----------000-----1010011 diff --git a/spec/std/isa/inst/F/fleq.s.yaml b/spec/std/isa/inst/F/fleq.s.yaml index ea2334e345..9e2e734bd9 100644 --- a/spec/std/isa/inst/F/fleq.s.yaml +++ b/spec/std/isa/inst/F/fleq.s.yaml @@ -10,7 +10,9 @@ long_name: Floating-Point Less Than or Equal Quiet Single-Precision description: | The `fleq.s` instruction is defined like the `fle.s` instruction, except that quiet NaN inputs do not cause the invalid operation exception flag to be set. -definedBy: Zfa +definedBy: + extension: + name: Zfa assembly: xd, fs1, fs2 encoding: match: 1010000----------100-----1010011 diff --git a/spec/std/isa/inst/F/flt.s.yaml b/spec/std/isa/inst/F/flt.s.yaml index 9116d4982b..80c470d24a 100644 --- a/spec/std/isa/inst/F/flt.s.yaml +++ b/spec/std/isa/inst/F/flt.s.yaml @@ -11,7 +11,10 @@ description: | The `flt.s` instruction writes 1 to `xd` if `fs1` is less than `fs2`, and 0 otherwise. If either operand is NaN, the result is 0 (not equal). If either operand is a NaN (signaling or quiet), the invalid flag is set. -definedBy: F + +definedBy: + extension: + name: F assembly: xd, fs1, fs2 encoding: match: 1010000----------001-----1010011 diff --git a/spec/std/isa/inst/F/fltq.s.yaml b/spec/std/isa/inst/F/fltq.s.yaml index 8aa8d87e31..0848786cf7 100644 --- a/spec/std/isa/inst/F/fltq.s.yaml +++ b/spec/std/isa/inst/F/fltq.s.yaml @@ -10,7 +10,9 @@ long_name: Floating-Point Less Than Quiet Single-Precision description: | The `fltq.s` is defined like the `flt.s` instruction, except that quiet NaN inputs do not cause the invalid operation exception flag to be set. -definedBy: Zfa +definedBy: + extension: + name: Zfa assembly: xd, fs1, fs2 encoding: match: 1010000----------101-----1010011 diff --git a/spec/std/isa/inst/F/flw.yaml b/spec/std/isa/inst/F/flw.yaml index 34c5232e46..1c73596451 100644 --- a/spec/std/isa/inst/F/flw.yaml +++ b/spec/std/isa/inst/F/flw.yaml @@ -10,10 +10,13 @@ long_name: Floating-Point Load Single-Precision description: | The `flw` instruction loads a single-precision floating-point value from memory at address `xs1` + `imm` into floating-point register `fd`. It does not modify the bits being transferred; in particular, the payloads of non-canonical NaNs are preserved. -definedBy: F + +definedBy: + extension: + name: F assembly: fd, imm(xs1) encoding: - match: -----------------010-----0000111 + match: "-----------------010-----0000111" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/F/fmadd.s.yaml b/spec/std/isa/inst/F/fmadd.s.yaml index 78aaa32744..e846055995 100644 --- a/spec/std/isa/inst/F/fmadd.s.yaml +++ b/spec/std/isa/inst/F/fmadd.s.yaml @@ -9,10 +9,12 @@ name: fmadd.s long_name: Floating-Point Multiply-Add Single-Precision description: | The `fmadd.s` multiplies the values in `fs1` and `fs2`, adds the value in `fs3`, and writes the final result to `fd`. -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----00------------------1000011 + match: "-----00------------------1000011" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/F/fmax.s.yaml b/spec/std/isa/inst/F/fmax.s.yaml index 4bfd08e024..04c622af9e 100644 --- a/spec/std/isa/inst/F/fmax.s.yaml +++ b/spec/std/isa/inst/F/fmax.s.yaml @@ -19,7 +19,9 @@ description: | the proposed _IEEE 754-201x_ `minimumNumber` and `maximumNumber` operations, rather than the _IEEE 754-2008_ _minNum_ and _maxNum_ operations. These operations differ in their handling of signaling NaNs. ==== -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, fs2 encoding: match: 0010100----------001-----1010011 diff --git a/spec/std/isa/inst/F/fmin.s.yaml b/spec/std/isa/inst/F/fmin.s.yaml index 412f5d912a..283b3ba963 100644 --- a/spec/std/isa/inst/F/fmin.s.yaml +++ b/spec/std/isa/inst/F/fmin.s.yaml @@ -19,7 +19,9 @@ description: | the proposed _IEEE 754-201x_ `minimumNumber` and `maximumNumber` operations, rather than the _IEEE 754-2008_ _minNum_ and _maxNum_ operations. These operations differ in their handling of signaling NaNs. ==== -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, fs2 encoding: match: 0010100----------000-----1010011 diff --git a/spec/std/isa/inst/F/fmsub.s.yaml b/spec/std/isa/inst/F/fmsub.s.yaml index fe088c7324..1eb72b3433 100644 --- a/spec/std/isa/inst/F/fmsub.s.yaml +++ b/spec/std/isa/inst/F/fmsub.s.yaml @@ -9,10 +9,12 @@ name: fmsub.s long_name: Floating-Point Multiply-Subtract Single-Precision description: | The `fmsub.s` multiplies the values in `fs1` and `fs2`, subtracts the value in `fs3`, and writes the final result to `fd`. -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----00------------------1000111 + match: "-----00------------------1000111" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/F/fmul.s.yaml b/spec/std/isa/inst/F/fmul.s.yaml index 092fc2e74f..4360f1f953 100644 --- a/spec/std/isa/inst/F/fmul.s.yaml +++ b/spec/std/isa/inst/F/fmul.s.yaml @@ -10,7 +10,9 @@ long_name: Floating-Point Multiply Single-Precision description: | The `fmul.s` instruction performs the single-precision floating-point multiplication between `fs1` and `fs2`, and writes the result in `fd`. -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, fs2, rm encoding: match: 0001000------------------1010011 diff --git a/spec/std/isa/inst/F/fmv.w.x.yaml b/spec/std/isa/inst/F/fmv.w.x.yaml index 508522f814..8bc10adb7f 100644 --- a/spec/std/isa/inst/F/fmv.w.x.yaml +++ b/spec/std/isa/inst/F/fmv.w.x.yaml @@ -11,7 +11,9 @@ description: | The `fmv.w.x` instruction moves the single-precision value encoded in `IEEE 754-2008` standard encoding from the lower 32 bits of integer register `xs1` to the floating-point register `fd`. The bits are not modified in the transfer, and in particular, the payloads of non-canonical NaNs are preserved. -definedBy: F +definedBy: + extension: + name: F assembly: fd, xs1 encoding: match: 111100000000-----000-----1010011 diff --git a/spec/std/isa/inst/F/fmv.x.w.yaml b/spec/std/isa/inst/F/fmv.x.w.yaml index 79c5a313df..40ba95a78b 100644 --- a/spec/std/isa/inst/F/fmv.x.w.yaml +++ b/spec/std/isa/inst/F/fmv.x.w.yaml @@ -12,7 +12,9 @@ description: | encoding to the lower 32 bits of integer register `xd`. The bits are not modified in the transfer, and in particular, the payloads of non-canonical NaNs are preserved. For RV64, the higher 32 bits of the destination register are filled with copies of the floating-point number's sign bit. -definedBy: F +definedBy: + extension: + name: F assembly: xd, fs1 encoding: match: 111000000000-----000-----1010011 diff --git a/spec/std/isa/inst/F/fnmadd.s.yaml b/spec/std/isa/inst/F/fnmadd.s.yaml index 8e9cb77421..b31ac89133 100644 --- a/spec/std/isa/inst/F/fnmadd.s.yaml +++ b/spec/std/isa/inst/F/fnmadd.s.yaml @@ -10,10 +10,12 @@ long_name: Floating-Point Negate-Multiply-Add Single-Precision description: | The `fnmadd.s` multiplies the values in `fs1` and `fs2`, negates the product, subtracts the value in `fs3`, and writes the final result to `fd`. -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----00------------------1001111 + match: "-----00------------------1001111" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/F/fnmsub.s.yaml b/spec/std/isa/inst/F/fnmsub.s.yaml index 461f871446..ae5e25a2a8 100644 --- a/spec/std/isa/inst/F/fnmsub.s.yaml +++ b/spec/std/isa/inst/F/fnmsub.s.yaml @@ -10,10 +10,12 @@ long_name: Floating-Point Negate-Multiply-Subtract Single-Precision description: | The `fnmsub.s` instruction multiplies the values in `fs1` and `fs2`, negates the product, adds the value in `fs3`, and writes the final result to `fd`. -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----00------------------1001011 + match: "-----00------------------1001011" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/F/fsgnj.s.yaml b/spec/std/isa/inst/F/fsgnj.s.yaml index 53ef1543ef..a887542d8b 100644 --- a/spec/std/isa/inst/F/fsgnj.s.yaml +++ b/spec/std/isa/inst/F/fsgnj.s.yaml @@ -12,7 +12,10 @@ description: | The result's sign bit is taken from `fs2`'s sign bit, and the result is written to the destination register `fd`. Sign-injection instructions do not set floating-point exception flags, nor do they canonicalize NaNs. -definedBy: F + +definedBy: + extension: + name: F assembly: fd, fs1, fs2 encoding: match: 0010000----------000-----1010011 diff --git a/spec/std/isa/inst/F/fsgnjn.s.yaml b/spec/std/isa/inst/F/fsgnjn.s.yaml index f75d02298c..c6c89d2cb5 100644 --- a/spec/std/isa/inst/F/fsgnjn.s.yaml +++ b/spec/std/isa/inst/F/fsgnjn.s.yaml @@ -12,7 +12,9 @@ description: | The result's sign bit is opposite of `fs2`'s sign bit, and the result is written to the destination register `fd`. Sign-injection instructions do not set floating-point exception flags, nor do they canonicalize NaNs. -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, fs2 encoding: match: 0010000----------001-----1010011 diff --git a/spec/std/isa/inst/F/fsgnjx.s.yaml b/spec/std/isa/inst/F/fsgnjx.s.yaml index c9b92e12a1..3843eb2604 100644 --- a/spec/std/isa/inst/F/fsgnjx.s.yaml +++ b/spec/std/isa/inst/F/fsgnjx.s.yaml @@ -12,7 +12,9 @@ description: | The result's sign bit is the XOR of sign bits of `fs1` and `fs2`, and the result is written to the destination register `fd`. Sign-injection instructions do not set floating-point exception flags, nor do they canonicalize NaNs. -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, fs2 encoding: match: 0010000----------010-----1010011 diff --git a/spec/std/isa/inst/F/fsqrt.s.yaml b/spec/std/isa/inst/F/fsqrt.s.yaml index 8df965ad69..6a21fbf5f5 100644 --- a/spec/std/isa/inst/F/fsqrt.s.yaml +++ b/spec/std/isa/inst/F/fsqrt.s.yaml @@ -9,7 +9,9 @@ name: fsqrt.s long_name: Floating-Point Square Root Single-Precision description: | The `fsqrt.s` instruction computes the square root of `fs1` and writes the result is written to `fd`. -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, rm encoding: match: 010110000000-------------1010011 diff --git a/spec/std/isa/inst/F/fsub.s.yaml b/spec/std/isa/inst/F/fsub.s.yaml index 2ee25f9c97..3e05c25133 100644 --- a/spec/std/isa/inst/F/fsub.s.yaml +++ b/spec/std/isa/inst/F/fsub.s.yaml @@ -9,7 +9,9 @@ name: fsub.s long_name: Floating-Point Subtract Single-Precision description: | The `fsub.s` instruction performs the single-precision floating-point subtraction of `fs2` from `fs1` and writes the result in `fd`. -definedBy: F +definedBy: + extension: + name: F assembly: fd, fs1, fs2, rm encoding: match: 0000100------------------1010011 diff --git a/spec/std/isa/inst/F/fsw.yaml b/spec/std/isa/inst/F/fsw.yaml index 6eced19f49..d4510ff52f 100644 --- a/spec/std/isa/inst/F/fsw.yaml +++ b/spec/std/isa/inst/F/fsw.yaml @@ -10,10 +10,13 @@ long_name: Floating-Point Store Single-Precision description: | The `fsw` instruction stores a single-precision floating-point value in `fs2` to memory at address `xs1` + `imm`. It does not modify the bits being transferred; in particular, the payloads of non-canonical NaNs are preserved. -definedBy: F + +definedBy: + extension: + name: F assembly: fs2, imm(xs1) encoding: - match: -----------------010-----0100111 + match: "-----------------010-----0100111" variables: - name: imm location: 31-25|11-7 diff --git a/spec/std/isa/inst/H/hfence.gvma.yaml b/spec/std/isa/inst/H/hfence.gvma.yaml index 7685f843f0..2d2d9191c6 100644 --- a/spec/std/isa/inst/H/hfence.gvma.yaml +++ b/spec/std/isa/inst/H/hfence.gvma.yaml @@ -9,7 +9,9 @@ name: hfence.gvma long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + extension: + name: H assembly: xs1, xs2 encoding: match: 0110001----------000000001110011 diff --git a/spec/std/isa/inst/H/hfence.vvma.yaml b/spec/std/isa/inst/H/hfence.vvma.yaml index c9d899d5c1..3c68d5b598 100644 --- a/spec/std/isa/inst/H/hfence.vvma.yaml +++ b/spec/std/isa/inst/H/hfence.vvma.yaml @@ -9,7 +9,9 @@ name: hfence.vvma long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + extension: + name: H assembly: xs1, xs2 encoding: match: 0010001----------000000001110011 diff --git a/spec/std/isa/inst/H/hlv.b.yaml b/spec/std/isa/inst/H/hlv.b.yaml index 1b21e388cd..1779f9dc52 100644 --- a/spec/std/isa/inst/H/hlv.b.yaml +++ b/spec/std/isa/inst/H/hlv.b.yaml @@ -9,7 +9,9 @@ name: hlv.b long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + extension: + name: H assembly: xd, xs1 encoding: match: 011000000000-----100-----1110011 diff --git a/spec/std/isa/inst/H/hlv.bu.yaml b/spec/std/isa/inst/H/hlv.bu.yaml index 9f02e74db2..1aa288340e 100644 --- a/spec/std/isa/inst/H/hlv.bu.yaml +++ b/spec/std/isa/inst/H/hlv.bu.yaml @@ -9,7 +9,9 @@ name: hlv.bu long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + extension: + name: H assembly: xd, xs1 encoding: match: 011000000001-----100-----1110011 diff --git a/spec/std/isa/inst/H/hlv.d.yaml b/spec/std/isa/inst/H/hlv.d.yaml index 66bd2b94ae..59bee98c03 100644 --- a/spec/std/isa/inst/H/hlv.d.yaml +++ b/spec/std/isa/inst/H/hlv.d.yaml @@ -9,7 +9,11 @@ name: hlv.d long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + allOf: + - xlen: 64 + - extension: + name: H assembly: xd, xs1 encoding: match: 011011000000-----100-----1110011 diff --git a/spec/std/isa/inst/H/hlv.h.yaml b/spec/std/isa/inst/H/hlv.h.yaml index 4db16fb3c9..9f5cb9d2b9 100644 --- a/spec/std/isa/inst/H/hlv.h.yaml +++ b/spec/std/isa/inst/H/hlv.h.yaml @@ -9,7 +9,9 @@ name: hlv.h long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + extension: + name: H assembly: xd, xs1 encoding: match: 011001000000-----100-----1110011 diff --git a/spec/std/isa/inst/H/hlv.hu.yaml b/spec/std/isa/inst/H/hlv.hu.yaml index bb7d23a2b0..f031554921 100644 --- a/spec/std/isa/inst/H/hlv.hu.yaml +++ b/spec/std/isa/inst/H/hlv.hu.yaml @@ -9,7 +9,9 @@ name: hlv.hu long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + extension: + name: H assembly: xd, xs1 encoding: match: 011001000001-----100-----1110011 diff --git a/spec/std/isa/inst/H/hlv.w.yaml b/spec/std/isa/inst/H/hlv.w.yaml index e09d945262..aa5f33aa9c 100644 --- a/spec/std/isa/inst/H/hlv.w.yaml +++ b/spec/std/isa/inst/H/hlv.w.yaml @@ -9,7 +9,9 @@ name: hlv.w long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + extension: + name: H assembly: xd, xs1 encoding: match: 011010000000-----100-----1110011 diff --git a/spec/std/isa/inst/H/hlv.wu.yaml b/spec/std/isa/inst/H/hlv.wu.yaml index 61c29d74bc..6072e5a5f1 100644 --- a/spec/std/isa/inst/H/hlv.wu.yaml +++ b/spec/std/isa/inst/H/hlv.wu.yaml @@ -9,7 +9,11 @@ name: hlv.wu long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + allOf: + - xlen: 64 + - extension: + name: H assembly: xd, xs1 encoding: match: 011010000001-----100-----1110011 diff --git a/spec/std/isa/inst/H/hlvx.hu.yaml b/spec/std/isa/inst/H/hlvx.hu.yaml index aabb392a37..108a8f4207 100644 --- a/spec/std/isa/inst/H/hlvx.hu.yaml +++ b/spec/std/isa/inst/H/hlvx.hu.yaml @@ -9,7 +9,9 @@ name: hlvx.hu long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + extension: + name: H assembly: xd, xs1 encoding: match: 011001000011-----100-----1110011 diff --git a/spec/std/isa/inst/H/hlvx.wu.yaml b/spec/std/isa/inst/H/hlvx.wu.yaml index b1193370fa..a5877fd779 100644 --- a/spec/std/isa/inst/H/hlvx.wu.yaml +++ b/spec/std/isa/inst/H/hlvx.wu.yaml @@ -9,7 +9,9 @@ name: hlvx.wu long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + extension: + name: H assembly: xd, xs1 encoding: match: 011010000011-----100-----1110011 diff --git a/spec/std/isa/inst/H/hsv.b.yaml b/spec/std/isa/inst/H/hsv.b.yaml index 34769db5e6..91cefd4d1e 100644 --- a/spec/std/isa/inst/H/hsv.b.yaml +++ b/spec/std/isa/inst/H/hsv.b.yaml @@ -9,7 +9,9 @@ name: hsv.b long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + extension: + name: H assembly: xs1, xs2 encoding: match: 0110001----------100000001110011 diff --git a/spec/std/isa/inst/H/hsv.d.yaml b/spec/std/isa/inst/H/hsv.d.yaml index 6597c2c48d..1c5fa0074b 100644 --- a/spec/std/isa/inst/H/hsv.d.yaml +++ b/spec/std/isa/inst/H/hsv.d.yaml @@ -9,7 +9,11 @@ name: hsv.d long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + allOf: + - xlen: 64 + - extension: + name: H assembly: xs1, xs2 encoding: match: 0110111----------100000001110011 diff --git a/spec/std/isa/inst/H/hsv.h.yaml b/spec/std/isa/inst/H/hsv.h.yaml index 0d5fd0ad23..f80aff4575 100644 --- a/spec/std/isa/inst/H/hsv.h.yaml +++ b/spec/std/isa/inst/H/hsv.h.yaml @@ -9,7 +9,9 @@ name: hsv.h long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + extension: + name: H assembly: xs1, xs2 encoding: match: 0110011----------100000001110011 diff --git a/spec/std/isa/inst/H/hsv.w.yaml b/spec/std/isa/inst/H/hsv.w.yaml index 6c0835ba9c..31fba27e1e 100644 --- a/spec/std/isa/inst/H/hsv.w.yaml +++ b/spec/std/isa/inst/H/hsv.w.yaml @@ -9,7 +9,9 @@ name: hsv.w long_name: No synopsis available description: | No description available. -definedBy: H +definedBy: + extension: + name: H assembly: xs1, xs2 encoding: match: 0110101----------100000001110011 diff --git a/spec/std/isa/inst/I/add.yaml b/spec/std/isa/inst/I/add.yaml index 6cb03d38cf..3c4fd9abe7 100644 --- a/spec/std/isa/inst/I/add.yaml +++ b/spec/std/isa/inst/I/add.yaml @@ -10,7 +10,9 @@ long_name: Integer add description: | Add the value in xs1 to xs2, and store the result in xd. Any overflow is thrown away. -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, xs2 encoding: match: 0000000----------000-----0110011 diff --git a/spec/std/isa/inst/I/addi.yaml b/spec/std/isa/inst/I/addi.yaml index bb6e5ea3c9..b584fb201c 100644 --- a/spec/std/isa/inst/I/addi.yaml +++ b/spec/std/isa/inst/I/addi.yaml @@ -7,11 +7,15 @@ $schema: "inst_schema.json#" kind: instruction name: addi long_name: Add immediate -description: Adds an immediate value to the value in xs1, and store the result in xd -definedBy: I +description: + Adds an immediate value to the value in xs1, and store the result in + xd +definedBy: + extension: + name: I assembly: xd, xs1, imm encoding: - match: -----------------000-----0010011 + match: "-----------------000-----0010011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/addiw.yaml b/spec/std/isa/inst/I/addiw.yaml index 574af8e778..ca7016c5a7 100644 --- a/spec/std/isa/inst/I/addiw.yaml +++ b/spec/std/isa/inst/I/addiw.yaml @@ -7,12 +7,18 @@ $schema: "inst_schema.json#" kind: instruction name: addiw long_name: Add immediate word -description: Add an immediate to the 32-bit value in xs1, and store the sign extended result in xd -definedBy: I +description: + Add an immediate to the 32-bit value in xs1, and store the sign extended + result in xd +definedBy: + allOf: + - xlen: 64 + - extension: + name: I base: 64 assembly: xd, xs1, imm encoding: - match: -----------------000-----0011011 + match: "-----------------000-----0011011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/addw.yaml b/spec/std/isa/inst/I/addw.yaml index d5511ac158..6438840cf7 100644 --- a/spec/std/isa/inst/I/addw.yaml +++ b/spec/std/isa/inst/I/addw.yaml @@ -10,7 +10,11 @@ long_name: Add word description: | Add the 32-bit values in xs1 to xs2, and store the sign-extended result in xd. Any overflow is thrown away. -definedBy: I +definedBy: + allOf: + - xlen: 64 + - extension: + name: I base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/I/and.yaml b/spec/std/isa/inst/I/and.yaml index c165aa9b63..f4e39f127a 100644 --- a/spec/std/isa/inst/I/and.yaml +++ b/spec/std/isa/inst/I/and.yaml @@ -8,7 +8,9 @@ kind: instruction name: and long_name: And description: And xs1 with xs2, and store the result in xd -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, xs2 encoding: match: 0000000----------111-----0110011 diff --git a/spec/std/isa/inst/I/andi.yaml b/spec/std/isa/inst/I/andi.yaml index 5a4ea0e947..d9a342ec4d 100644 --- a/spec/std/isa/inst/I/andi.yaml +++ b/spec/std/isa/inst/I/andi.yaml @@ -8,10 +8,12 @@ kind: instruction name: andi long_name: And immediate description: And an immediate to the value in xs1, and store the result in xd -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, imm encoding: - match: -----------------111-----0010011 + match: "-----------------111-----0010011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/auipc.yaml b/spec/std/isa/inst/I/auipc.yaml index 038978b926..ca167678e6 100644 --- a/spec/std/isa/inst/I/auipc.yaml +++ b/spec/std/isa/inst/I/auipc.yaml @@ -8,10 +8,12 @@ kind: instruction name: auipc long_name: Add upper immediate to pc description: Add an immediate to the current PC. -definedBy: I +definedBy: + extension: + name: I assembly: xd, imm encoding: - match: -------------------------0010111 + match: "-------------------------0010111" variables: - name: imm location: 31-12 diff --git a/spec/std/isa/inst/I/beq.yaml b/spec/std/isa/inst/I/beq.yaml index 14529f1a63..0c0e1f02fd 100644 --- a/spec/std/isa/inst/I/beq.yaml +++ b/spec/std/isa/inst/I/beq.yaml @@ -12,10 +12,12 @@ description: | the value in register xs1 is equal to the value in register xs2. Raise a `MisalignedAddress` exception if PC + imm is misaligned. -definedBy: I +definedBy: + extension: + name: I assembly: xs1, xs2, imm encoding: - match: -----------------000-----1100011 + match: "-----------------000-----1100011" variables: - name: imm location: 31|7|30-25|11-8 diff --git a/spec/std/isa/inst/I/bge.yaml b/spec/std/isa/inst/I/bge.yaml index 939bc243ea..537baf5e75 100644 --- a/spec/std/isa/inst/I/bge.yaml +++ b/spec/std/isa/inst/I/bge.yaml @@ -12,10 +12,12 @@ description: | the signed value in register xs1 is greater than or equal to the signed value in register xs2. Raise a `MisalignedAddress` exception if PC + imm is misaligned. -definedBy: I +definedBy: + extension: + name: I assembly: xs1, xs2, imm encoding: - match: -----------------101-----1100011 + match: "-----------------101-----1100011" variables: - name: imm location: 31|7|30-25|11-8 diff --git a/spec/std/isa/inst/I/bgeu.yaml b/spec/std/isa/inst/I/bgeu.yaml index 7b32302c59..0e7a1d7a7c 100644 --- a/spec/std/isa/inst/I/bgeu.yaml +++ b/spec/std/isa/inst/I/bgeu.yaml @@ -12,10 +12,12 @@ description: | the unsigned value in register xs1 is greater than or equal to the unsigned value in register xs2. Raise a `MisalignedAddress` exception if PC + imm is misaligned. -definedBy: I +definedBy: + extension: + name: I assembly: xs1, xs2, imm encoding: - match: -----------------111-----1100011 + match: "-----------------111-----1100011" variables: - name: imm location: 31|7|30-25|11-8 diff --git a/spec/std/isa/inst/I/blt.yaml b/spec/std/isa/inst/I/blt.yaml index 2c08f1cf23..691fb0dd9a 100644 --- a/spec/std/isa/inst/I/blt.yaml +++ b/spec/std/isa/inst/I/blt.yaml @@ -12,10 +12,12 @@ description: | the signed value in register xs1 is less than the signed value in register xs2. Raise a `MisalignedAddress` exception if PC + imm is misaligned. -definedBy: I +definedBy: + extension: + name: I assembly: xs1, xs2, imm encoding: - match: -----------------100-----1100011 + match: "-----------------100-----1100011" variables: - name: imm location: 31|7|30-25|11-8 diff --git a/spec/std/isa/inst/I/bltu.yaml b/spec/std/isa/inst/I/bltu.yaml index 612bf5c12b..b3300bc600 100644 --- a/spec/std/isa/inst/I/bltu.yaml +++ b/spec/std/isa/inst/I/bltu.yaml @@ -12,10 +12,12 @@ description: | the unsigned value in register xs1 is less than the unsigned value in register xs2. Raise a `MisalignedAddress` exception if PC + imm is misaligned. -definedBy: I +definedBy: + extension: + name: I assembly: xs1, xs2, imm encoding: - match: -----------------110-----1100011 + match: "-----------------110-----1100011" variables: - name: imm location: 31|7|30-25|11-8 diff --git a/spec/std/isa/inst/I/bne.yaml b/spec/std/isa/inst/I/bne.yaml index b61ea847e6..0a5e0de160 100644 --- a/spec/std/isa/inst/I/bne.yaml +++ b/spec/std/isa/inst/I/bne.yaml @@ -12,10 +12,12 @@ description: | the value in register xs1 is not equal to the value in register xs2. Raise a `MisalignedAddress` exception if PC + imm is misaligned. -definedBy: I +definedBy: + extension: + name: I assembly: xs1, xs2, imm encoding: - match: -----------------001-----1100011 + match: "-----------------001-----1100011" variables: - name: imm location: 31|7|30-25|11-8 diff --git a/spec/std/isa/inst/I/ebreak.yaml b/spec/std/isa/inst/I/ebreak.yaml index 8e9f9bcb95..327bc3c938 100644 --- a/spec/std/isa/inst/I/ebreak.yaml +++ b/spec/std/isa/inst/I/ebreak.yaml @@ -20,7 +20,9 @@ description: | the EBREAK instruction itself, not the address of the following instruction. As EBREAK causes a synchronous exception, it is not considered to retire, and should not increment the `minstret` CSR. -definedBy: I +definedBy: + extension: + name: I assembly: "" encoding: match: "00000000000100000000000001110011" diff --git a/spec/std/isa/inst/I/ecall.yaml b/spec/std/isa/inst/I/ecall.yaml index 557934884a..be5e786893 100644 --- a/spec/std/isa/inst/I/ecall.yaml +++ b/spec/std/isa/inst/I/ecall.yaml @@ -23,7 +23,9 @@ description: | the ECALL instruction itself, not the address of the following instruction. As ECALL causes a synchronous exception, it is not considered to retire, and should not increment the `minstret` CSR. -definedBy: I +definedBy: + extension: + name: I assembly: "" encoding: match: "00000000000000000000000001110011" diff --git a/spec/std/isa/inst/I/fence.tso.yaml b/spec/std/isa/inst/I/fence.tso.yaml index 13c4aa65be..400e98debb 100644 --- a/spec/std/isa/inst/I/fence.tso.yaml +++ b/spec/std/isa/inst/I/fence.tso.yaml @@ -20,7 +20,9 @@ description: | In modes other than M-mode, `fence.tso` is further affected by `menvcfg.FIOM`, `senvcfg.FIOM`<% if ext?(:H) %>, and/or `henvcfg.FIOM`<% end %>. -definedBy: I +definedBy: + extension: + name: I assembly: "" encoding: match: 100000110011-----000-----0001111 diff --git a/spec/std/isa/inst/I/fence.yaml b/spec/std/isa/inst/I/fence.yaml index ad67c29d01..82caf7a7d3 100644 --- a/spec/std/isa/inst/I/fence.yaml +++ b/spec/std/isa/inst/I/fence.yaml @@ -123,10 +123,12 @@ description: | !=== <%- end -%> -definedBy: I +definedBy: + extension: + name: I assembly: pred, succ encoding: - match: -----------------000-----0001111 + match: "-----------------000-----0001111" variables: - name: fm location: 31-28 diff --git a/spec/std/isa/inst/I/jal.yaml b/spec/std/isa/inst/I/jal.yaml index e678c4da6d..b0134f74e4 100644 --- a/spec/std/isa/inst/I/jal.yaml +++ b/spec/std/isa/inst/I/jal.yaml @@ -10,10 +10,12 @@ long_name: Jump and link description: | Jump to a PC-relative offset and store the return address in xd. -definedBy: I +definedBy: + extension: + name: I assembly: xd, imm encoding: - match: -------------------------1101111 + match: "-------------------------1101111" variables: - name: imm location: 31|19-12|20|30-21 diff --git a/spec/std/isa/inst/I/jalr.yaml b/spec/std/isa/inst/I/jalr.yaml index d3d1025c26..6ebe4b507d 100644 --- a/spec/std/isa/inst/I/jalr.yaml +++ b/spec/std/isa/inst/I/jalr.yaml @@ -12,10 +12,12 @@ description: | to a signed offset then clearing the least significant bit, and store the return address in xd. -definedBy: I +definedBy: + extension: + name: I assembly: xd, imm(xs1) encoding: - match: -----------------000-----1100111 + match: "-----------------000-----1100111" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/lb.yaml b/spec/std/isa/inst/I/lb.yaml index 7a5bb2b46a..8e7f7532cd 100644 --- a/spec/std/isa/inst/I/lb.yaml +++ b/spec/std/isa/inst/I/lb.yaml @@ -11,10 +11,12 @@ description: | Load 8 bits of data into register `xd` from an address formed by adding `xs1` to a signed offset. Sign extend the result. -definedBy: I +definedBy: + extension: + name: I assembly: xd, imm(xs1) encoding: - match: -----------------000-----0000011 + match: "-----------------000-----0000011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/lbu.yaml b/spec/std/isa/inst/I/lbu.yaml index 5dcd5e0970..0f643e62d1 100644 --- a/spec/std/isa/inst/I/lbu.yaml +++ b/spec/std/isa/inst/I/lbu.yaml @@ -11,10 +11,12 @@ description: | Load 8 bits of data into register `xd` from an address formed by adding `xs1` to a signed offset. Zero extend the result. -definedBy: I +definedBy: + extension: + name: I assembly: xd, imm(xs1) encoding: - match: -----------------100-----0000011 + match: "-----------------100-----0000011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/ld.yaml b/spec/std/isa/inst/I/ld.yaml index 72805a4d4b..1310bbe6cc 100644 --- a/spec/std/isa/inst/I/ld.yaml +++ b/spec/std/isa/inst/I/ld.yaml @@ -10,6 +10,7 @@ long_name: Load doubleword description: | For RV64, load 64 bits of data into register `xd` from an address formed by adding `xs1` to a signed offset. + <% if ext?(:Zilsd) %> For RV32, Loads a 64-bit value into registers xd and xd+1. The effective address is obtained by adding @@ -17,7 +18,10 @@ description: | <% end %> definedBy: - anyOf: [I, Zilsd] + extension: + anyOf: + - name: I + - name: Zilsd assembly: xd, imm(xs1) encoding: RV32: diff --git a/spec/std/isa/inst/I/lh.yaml b/spec/std/isa/inst/I/lh.yaml index 84688d767f..3c8c548092 100644 --- a/spec/std/isa/inst/I/lh.yaml +++ b/spec/std/isa/inst/I/lh.yaml @@ -11,10 +11,12 @@ description: | Load 16 bits of data into register `xd` from an address formed by adding `xs1` to a signed offset. Sign extend the result. -definedBy: I +definedBy: + extension: + name: I assembly: xd, imm(xs1) encoding: - match: -----------------001-----0000011 + match: "-----------------001-----0000011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/lhu.yaml b/spec/std/isa/inst/I/lhu.yaml index ab020866bb..fe47bdaaf2 100644 --- a/spec/std/isa/inst/I/lhu.yaml +++ b/spec/std/isa/inst/I/lhu.yaml @@ -11,10 +11,12 @@ description: | Load 16 bits of data into register `xd` from an address formed by adding `xs1` to a signed offset. Zero extend the result. -definedBy: I +definedBy: + extension: + name: I assembly: xd, imm(xs1) encoding: - match: -----------------101-----0000011 + match: "-----------------101-----0000011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/lui.yaml b/spec/std/isa/inst/I/lui.yaml index a5c90e0572..a56a181c72 100644 --- a/spec/std/isa/inst/I/lui.yaml +++ b/spec/std/isa/inst/I/lui.yaml @@ -8,10 +8,12 @@ kind: instruction name: lui long_name: Load upper immediate description: Load the zero-extended imm into xd. -definedBy: I +definedBy: + extension: + name: I assembly: xd, imm encoding: - match: -------------------------0110111 + match: "-------------------------0110111" variables: - name: imm location: 31-12 diff --git a/spec/std/isa/inst/I/lw.yaml b/spec/std/isa/inst/I/lw.yaml index a53f09d9b4..409d73144f 100644 --- a/spec/std/isa/inst/I/lw.yaml +++ b/spec/std/isa/inst/I/lw.yaml @@ -11,10 +11,12 @@ description: | Load 32 bits of data into register `xd` from an address formed by adding `xs1` to a signed offset. Sign extend the result. -definedBy: I +definedBy: + extension: + name: I assembly: xd, imm(xs1) encoding: - match: -----------------010-----0000011 + match: "-----------------010-----0000011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/lwu.yaml b/spec/std/isa/inst/I/lwu.yaml index cc5d8cc143..3d10812355 100644 --- a/spec/std/isa/inst/I/lwu.yaml +++ b/spec/std/isa/inst/I/lwu.yaml @@ -11,11 +11,15 @@ description: | Load 64 bits of data into register `xd` from an address formed by adding `xs1` to a signed offset. Zero extend the result. -definedBy: I +definedBy: + allOf: + - xlen: 64 + - extension: + name: I base: 64 assembly: xd, imm(xs1) encoding: - match: -----------------110-----0000011 + match: "-----------------110-----0000011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/mret.yaml b/spec/std/isa/inst/I/mret.yaml index 9d6c941f09..f23ce6b1af 100644 --- a/spec/std/isa/inst/I/mret.yaml +++ b/spec/std/isa/inst/I/mret.yaml @@ -8,7 +8,9 @@ long_name: Machine-mode Return from Trap description: | Return from machine mode after handling a trap. assembly: "" -definedBy: Sm +definedBy: + extension: + name: Sm access: s: never u: never diff --git a/spec/std/isa/inst/I/or.yaml b/spec/std/isa/inst/I/or.yaml index 9c008d0531..056228d3dd 100644 --- a/spec/std/isa/inst/I/or.yaml +++ b/spec/std/isa/inst/I/or.yaml @@ -8,7 +8,9 @@ kind: instruction name: or long_name: Or description: Or xs1 with xs2, and store the result in xd -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, xs2 encoding: match: 0000000----------110-----0110011 diff --git a/spec/std/isa/inst/I/ori.yaml b/spec/std/isa/inst/I/ori.yaml index 85fb173f36..9351e1da57 100644 --- a/spec/std/isa/inst/I/ori.yaml +++ b/spec/std/isa/inst/I/ori.yaml @@ -8,10 +8,12 @@ kind: instruction name: ori long_name: Or immediate description: Or an immediate to the value in xs1, and store the result in xd -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, imm encoding: - match: -----------------110-----0010011 + match: "-----------------110-----0010011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/sb.yaml b/spec/std/isa/inst/I/sb.yaml index e76e59d55e..5da1f23394 100644 --- a/spec/std/isa/inst/I/sb.yaml +++ b/spec/std/isa/inst/I/sb.yaml @@ -10,10 +10,12 @@ long_name: Store byte description: | Store 8 bits of data from register `xs2` to an address formed by adding `xs1` to a signed offset. -definedBy: I +definedBy: + extension: + name: I assembly: xs2, imm(xs1) encoding: - match: -----------------000-----0100011 + match: "-----------------000-----0100011" variables: - name: imm location: 31-25|11-7 diff --git a/spec/std/isa/inst/I/sd.yaml b/spec/std/isa/inst/I/sd.yaml index 0b1402a9a6..c5c4362071 100644 --- a/spec/std/isa/inst/I/sd.yaml +++ b/spec/std/isa/inst/I/sd.yaml @@ -14,7 +14,10 @@ description: | For RV32, store doubleword from even/odd register pair. <% end %> definedBy: - anyOf: [I, Zilsd] + extension: + anyOf: + - name: I + - name: Zilsd assembly: xs2, imm(xs1) encoding: RV32: diff --git a/spec/std/isa/inst/I/sh.yaml b/spec/std/isa/inst/I/sh.yaml index ccec09d40f..fc4c9e099c 100644 --- a/spec/std/isa/inst/I/sh.yaml +++ b/spec/std/isa/inst/I/sh.yaml @@ -10,10 +10,12 @@ long_name: Store halfword description: | Store 16 bits of data from register `xs2` to an address formed by adding `xs1` to a signed offset. -definedBy: I +definedBy: + extension: + name: I assembly: xs2, imm(xs1) encoding: - match: -----------------001-----0100011 + match: "-----------------001-----0100011" variables: - name: imm location: 31-25|11-7 diff --git a/spec/std/isa/inst/I/sll.yaml b/spec/std/isa/inst/I/sll.yaml index e45f012cdd..d45e9aebce 100644 --- a/spec/std/isa/inst/I/sll.yaml +++ b/spec/std/isa/inst/I/sll.yaml @@ -9,7 +9,9 @@ name: sll long_name: Shift left logical description: | Shift the value in `xs1` left by the value in the lower 6 bits of `xs2`, and store the result in `xd`. -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, xs2 encoding: match: 0000000----------001-----0110011 diff --git a/spec/std/isa/inst/I/slli.yaml b/spec/std/isa/inst/I/slli.yaml index 0ef6c30442..035e5c9aa5 100644 --- a/spec/std/isa/inst/I/slli.yaml +++ b/spec/std/isa/inst/I/slli.yaml @@ -8,7 +8,9 @@ kind: instruction name: slli long_name: Shift left logical immediate description: Shift the value in xs1 left by shamt, and store the result in xd -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, shamt encoding: RV32: diff --git a/spec/std/isa/inst/I/slliw.yaml b/spec/std/isa/inst/I/slliw.yaml index cea263865c..5897abbc7d 100644 --- a/spec/std/isa/inst/I/slliw.yaml +++ b/spec/std/isa/inst/I/slliw.yaml @@ -7,8 +7,14 @@ $schema: "inst_schema.json#" kind: instruction name: slliw long_name: Shift left logical immediate word -description: Shift the 32-bit value in xs1 left by shamt, and store the sign-extended result in xd -definedBy: I +description: + Shift the 32-bit value in xs1 left by shamt, and store the sign-extended + result in xd +definedBy: + allOf: + - xlen: 64 + - extension: + name: I base: 64 assembly: xd, xs1, shamt encoding: diff --git a/spec/std/isa/inst/I/sllw.yaml b/spec/std/isa/inst/I/sllw.yaml index 9624ae6943..9407f9ff3e 100644 --- a/spec/std/isa/inst/I/sllw.yaml +++ b/spec/std/isa/inst/I/sllw.yaml @@ -9,7 +9,11 @@ name: sllw long_name: Shift left logical word description: | Shift the 32-bit value in `xs1` left by the value in the lower 5 bits of `xs2`, and store the sign-extended result in `xd`. -definedBy: I +definedBy: + allOf: + - xlen: 64 + - extension: + name: I base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/I/slt.yaml b/spec/std/isa/inst/I/slt.yaml index c747d3071a..a37c8e43ee 100644 --- a/spec/std/isa/inst/I/slt.yaml +++ b/spec/std/isa/inst/I/slt.yaml @@ -10,7 +10,9 @@ long_name: Set on less than description: | Places the value 1 in register `xd` if register `xs1` is less than the value in register `xs2`, where both sources are treated as signed numbers, else 0 is written to `xd`. -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, xs2 encoding: match: 0000000----------010-----0110011 diff --git a/spec/std/isa/inst/I/slti.yaml b/spec/std/isa/inst/I/slti.yaml index b88f2c7125..4ba41b3529 100644 --- a/spec/std/isa/inst/I/slti.yaml +++ b/spec/std/isa/inst/I/slti.yaml @@ -10,10 +10,12 @@ long_name: Set on less than immediate description: | Places the value 1 in register `xd` if register `xs1` is less than the sign-extended immediate when both are treated as signed numbers, else 0 is written to `xd`. -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, imm encoding: - match: -----------------010-----0010011 + match: "-----------------010-----0010011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/sltiu.yaml b/spec/std/isa/inst/I/sltiu.yaml index 95bc29be6c..15140038c3 100644 --- a/spec/std/isa/inst/I/sltiu.yaml +++ b/spec/std/isa/inst/I/sltiu.yaml @@ -14,10 +14,12 @@ description: | NOTE: `sltiu xd, xs1, 1` sets `xd` to 1 if `xs1` equals zero, otherwise sets `xd` to 0 (assembler pseudoinstruction `SEQZ xd, rs`). -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, imm encoding: - match: -----------------011-----0010011 + match: "-----------------011-----0010011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/I/sltu.yaml b/spec/std/isa/inst/I/sltu.yaml index 14f32cb463..faa0887251 100644 --- a/spec/std/isa/inst/I/sltu.yaml +++ b/spec/std/isa/inst/I/sltu.yaml @@ -10,7 +10,9 @@ long_name: Set on less than unsigned description: | Places the value 1 in register `xd` if register `xs1` is less than the value in register `xs2`, where both sources are treated as unsigned numbers, else 0 is written to `xd`. -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, xs2 encoding: match: 0000000----------011-----0110011 diff --git a/spec/std/isa/inst/I/sra.yaml b/spec/std/isa/inst/I/sra.yaml index 9175003c14..7c1dabeaed 100644 --- a/spec/std/isa/inst/I/sra.yaml +++ b/spec/std/isa/inst/I/sra.yaml @@ -9,7 +9,9 @@ name: sra long_name: Shift right arithmetic description: | Arithmetic shift the value in `xs1` right by the value in the lower 5 bits of `xs2`, and store the result in `xd`. -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, xs2 encoding: match: 0100000----------101-----0110011 diff --git a/spec/std/isa/inst/I/srai.yaml b/spec/std/isa/inst/I/srai.yaml index 2e7c515b8b..0a1970f699 100644 --- a/spec/std/isa/inst/I/srai.yaml +++ b/spec/std/isa/inst/I/srai.yaml @@ -10,7 +10,9 @@ long_name: Shift right arithmetic immediate description: | Arithmetic shift (the original sign bit is copied into the vacated upper bits) the value in xs1 right by shamt, and store the result in xd. -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, shamt encoding: RV32: diff --git a/spec/std/isa/inst/I/sraiw.yaml b/spec/std/isa/inst/I/sraiw.yaml index 5ad0b76be7..1e2ae05d19 100644 --- a/spec/std/isa/inst/I/sraiw.yaml +++ b/spec/std/isa/inst/I/sraiw.yaml @@ -10,7 +10,11 @@ long_name: Shift right arithmetic immediate word description: | Arithmetic shift (the original sign bit is copied into the vacated upper bits) the 32-bit value in xs1 right by shamt, and store the sign-extended result in xd. -definedBy: I +definedBy: + allOf: + - xlen: 64 + - extension: + name: I base: 64 assembly: xd, xs1, shamt encoding: diff --git a/spec/std/isa/inst/I/sraw.yaml b/spec/std/isa/inst/I/sraw.yaml index fad49d844b..de8118394f 100644 --- a/spec/std/isa/inst/I/sraw.yaml +++ b/spec/std/isa/inst/I/sraw.yaml @@ -9,7 +9,11 @@ name: sraw long_name: Shift right arithmetic word description: | Arithmetic shift the 32-bit value in `xs1` right by the value in the lower 5 bits of `xs2`, and store the sign-extended result in `xd`. -definedBy: I +definedBy: + allOf: + - xlen: 64 + - extension: + name: I base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/I/srl.yaml b/spec/std/isa/inst/I/srl.yaml index 9d738ee772..e6fda17749 100644 --- a/spec/std/isa/inst/I/srl.yaml +++ b/spec/std/isa/inst/I/srl.yaml @@ -9,7 +9,9 @@ name: srl long_name: Shift right logical description: | Logical shift the value in `xs1` right by the value in the lower bits of `xs2`, and store the result in `xd`. -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, xs2 encoding: match: 0000000----------101-----0110011 diff --git a/spec/std/isa/inst/I/srli.yaml b/spec/std/isa/inst/I/srli.yaml index ea96265491..9c3fd2f19b 100644 --- a/spec/std/isa/inst/I/srli.yaml +++ b/spec/std/isa/inst/I/srli.yaml @@ -7,7 +7,9 @@ kind: instruction name: srli long_name: Shift right logical immediate description: Shift the value in xs1 right by shamt, and store the result in xd -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, shamt encoding: RV32: diff --git a/spec/std/isa/inst/I/srliw.yaml b/spec/std/isa/inst/I/srliw.yaml index 48ea69ce34..01275bc645 100644 --- a/spec/std/isa/inst/I/srliw.yaml +++ b/spec/std/isa/inst/I/srliw.yaml @@ -7,8 +7,14 @@ $schema: "inst_schema.json#" kind: instruction name: srliw long_name: Shift right logical immediate word -description: Shift the 32-bit value in xs1 right by shamt, and store the sign-extended result in xd -definedBy: I +description: + Shift the 32-bit value in xs1 right by shamt, and store the sign-extended + result in xd +definedBy: + allOf: + - xlen: 64 + - extension: + name: I base: 64 assembly: xd, xs1, shamt encoding: diff --git a/spec/std/isa/inst/I/srlw.yaml b/spec/std/isa/inst/I/srlw.yaml index 471066bb76..faccd05534 100644 --- a/spec/std/isa/inst/I/srlw.yaml +++ b/spec/std/isa/inst/I/srlw.yaml @@ -9,7 +9,11 @@ name: srlw long_name: Shift right logical word description: | Logical shift the 32-bit value in `xs1` right by the value in the lower 5 bits of `xs2`, and store the sign-extended result in `xd`. -definedBy: I +definedBy: + allOf: + - xlen: 64 + - extension: + name: I base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/I/sub.yaml b/spec/std/isa/inst/I/sub.yaml index de38aec121..35eea26c3c 100644 --- a/spec/std/isa/inst/I/sub.yaml +++ b/spec/std/isa/inst/I/sub.yaml @@ -8,7 +8,9 @@ kind: instruction name: sub long_name: Subtract description: Subtract the value in xs2 from xs1, and store the result in xd -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, xs2 encoding: match: 0100000----------000-----0110011 diff --git a/spec/std/isa/inst/I/subw.yaml b/spec/std/isa/inst/I/subw.yaml index d9de0207a5..b46b86093b 100644 --- a/spec/std/isa/inst/I/subw.yaml +++ b/spec/std/isa/inst/I/subw.yaml @@ -7,8 +7,14 @@ $schema: "inst_schema.json#" kind: instruction name: subw long_name: Subtract word -description: Subtract the 32-bit values in xs2 from xs1, and store the sign-extended result in xd -definedBy: I +description: + Subtract the 32-bit values in xs2 from xs1, and store the sign-extended + result in xd +definedBy: + allOf: + - xlen: 64 + - extension: + name: I base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/I/sw.yaml b/spec/std/isa/inst/I/sw.yaml index 2e773033d3..3d3e0064e6 100644 --- a/spec/std/isa/inst/I/sw.yaml +++ b/spec/std/isa/inst/I/sw.yaml @@ -10,10 +10,12 @@ long_name: Store word description: | Store 32 bits of data from register `xs2` to an address formed by adding `xs1` to a signed offset. -definedBy: I +definedBy: + extension: + name: I assembly: xs2, imm(xs1) encoding: - match: -----------------010-----0100011 + match: "-----------------010-----0100011" variables: - name: imm location: 31-25|11-7 diff --git a/spec/std/isa/inst/I/wfi.yaml b/spec/std/isa/inst/I/wfi.yaml index f2021dd4f9..c91d115121 100644 --- a/spec/std/isa/inst/I/wfi.yaml +++ b/spec/std/isa/inst/I/wfi.yaml @@ -47,7 +47,9 @@ description: | for an unspecified period of time to see if an interrupt occurs before raising the trap. That period of time can be zero (_i.e._, `wfi` always causes a trap in the cases identified above). -definedBy: Sm +definedBy: + extension: + name: Sm assembly: "" encoding: match: "00010000010100000000000001110011" diff --git a/spec/std/isa/inst/I/xor.yaml b/spec/std/isa/inst/I/xor.yaml index 6ace03a6a6..2a2abd986b 100644 --- a/spec/std/isa/inst/I/xor.yaml +++ b/spec/std/isa/inst/I/xor.yaml @@ -8,7 +8,9 @@ kind: instruction name: xor long_name: Exclusive Or description: Exclusive or xs1 with xs2, and store the result in xd -definedBy: I +definedBy: + extension: + name: I assembly: xd, xs1, xs2 encoding: match: 0000000----------100-----0110011 diff --git a/spec/std/isa/inst/I/xori.yaml b/spec/std/isa/inst/I/xori.yaml index f04491dcf2..29f0d3ddd1 100644 --- a/spec/std/isa/inst/I/xori.yaml +++ b/spec/std/isa/inst/I/xori.yaml @@ -7,11 +7,15 @@ $schema: "inst_schema.json#" kind: instruction name: xori long_name: Exclusive Or immediate -description: Exclusive or an immediate to the value in xs1, and store the result in xd -definedBy: I +description: + Exclusive or an immediate to the value in xs1, and store the result in + xd +definedBy: + extension: + name: I assembly: xd, xs1, imm encoding: - match: -----------------100-----0010011 + match: "-----------------100-----0010011" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/M/div.yaml b/spec/std/isa/inst/M/div.yaml index 632f08c367..1368d0e974 100644 --- a/spec/std/isa/inst/M/div.yaml +++ b/spec/std/isa/inst/M/div.yaml @@ -14,7 +14,9 @@ description: | Division resulting in signed overflow (when most negative number is divided by -1) will put the most negative number into xd; -definedBy: M +definedBy: + extension: + name: M assembly: xd, xs1, xs2 encoding: match: 0000001----------100-----0110011 diff --git a/spec/std/isa/inst/M/divu.yaml b/spec/std/isa/inst/M/divu.yaml index 3ab5bdfde5..f3eb696f16 100644 --- a/spec/std/isa/inst/M/divu.yaml +++ b/spec/std/isa/inst/M/divu.yaml @@ -13,7 +13,9 @@ description: | The remainder is discarded. If the value in xs2 is zero, xd gets the largest unsigned value. -definedBy: M +definedBy: + extension: + name: M assembly: xd, xs1, xs2 encoding: match: 0000001----------101-----0110011 diff --git a/spec/std/isa/inst/M/divuw.yaml b/spec/std/isa/inst/M/divuw.yaml index df373353db..2ef7eaf689 100644 --- a/spec/std/isa/inst/M/divuw.yaml +++ b/spec/std/isa/inst/M/divuw.yaml @@ -13,7 +13,11 @@ description: | The remainder is discarded. If the value in xs2 is zero, xd is written with all 1s. -definedBy: M +definedBy: + allOf: + - xlen: 64 + - extension: + name: M base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/M/divw.yaml b/spec/std/isa/inst/M/divw.yaml index ab09de8b8b..88524b050f 100644 --- a/spec/std/isa/inst/M/divw.yaml +++ b/spec/std/isa/inst/M/divw.yaml @@ -17,7 +17,11 @@ description: | Division resulting in signed overflow (when most negative number is divided by -1) will put the most negative number into xd; -definedBy: M +definedBy: + allOf: + - xlen: 64 + - extension: + name: M base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/M/mul.yaml b/spec/std/isa/inst/M/mul.yaml index a0010162cd..99f712bc5d 100644 --- a/spec/std/isa/inst/M/mul.yaml +++ b/spec/std/isa/inst/M/mul.yaml @@ -21,7 +21,10 @@ description: | performing two separate multiplies. definedBy: - anyOf: [M, Zmmul] + extension: + anyOf: + - name: M + - name: Zmmul assembly: xd, xs1, xs2 encoding: match: 0000001----------000-----0110011 diff --git a/spec/std/isa/inst/M/mulh.yaml b/spec/std/isa/inst/M/mulh.yaml index df3c235838..5f2e10f767 100644 --- a/spec/std/isa/inst/M/mulh.yaml +++ b/spec/std/isa/inst/M/mulh.yaml @@ -20,7 +20,10 @@ description: | Microarchitectures may look for that sequence and fuse the operations. definedBy: - anyOf: [M, Zmmul] + extension: + anyOf: + - name: M + - name: Zmmul assembly: xd, xs1, xs2 encoding: match: 0000001----------001-----0110011 diff --git a/spec/std/isa/inst/M/mulhsu.yaml b/spec/std/isa/inst/M/mulhsu.yaml index 222b4039f7..96ab151862 100644 --- a/spec/std/isa/inst/M/mulhsu.yaml +++ b/spec/std/isa/inst/M/mulhsu.yaml @@ -20,7 +20,10 @@ description: | Microarchitectures may look for that sequence and fuse the operations. definedBy: - anyOf: [M, Zmmul] + extension: + anyOf: + - name: M + - name: Zmmul assembly: xd, xs1, xs2 encoding: match: 0000001----------010-----0110011 diff --git a/spec/std/isa/inst/M/mulhu.yaml b/spec/std/isa/inst/M/mulhu.yaml index 281d05d4c7..0831e8ec01 100644 --- a/spec/std/isa/inst/M/mulhu.yaml +++ b/spec/std/isa/inst/M/mulhu.yaml @@ -20,7 +20,10 @@ description: | Microarchitectures may look for that sequence and fuse the operations. definedBy: - anyOf: [M, Zmmul] + extension: + anyOf: + - name: M + - name: Zmmul assembly: xd, xs1, xs2 encoding: match: 0000001----------011-----0110011 diff --git a/spec/std/isa/inst/M/mulw.yaml b/spec/std/isa/inst/M/mulw.yaml index 23522e1c30..f1e1737b3a 100644 --- a/spec/std/isa/inst/M/mulw.yaml +++ b/spec/std/isa/inst/M/mulw.yaml @@ -19,7 +19,12 @@ description: | must have their upper 32 bits clear. If the arguments are not known to be sign- or zero-extended, an alternative is to shift both arguments left by 32 bits, then use MULH[[S]U]. definedBy: - anyOf: [M, Zmmul] + allOf: + - xlen: 64 + - extension: + anyOf: + - name: M + - name: Zmmul base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/M/rem.yaml b/spec/std/isa/inst/M/rem.yaml index b24825a902..fa6c7cd36d 100644 --- a/spec/std/isa/inst/M/rem.yaml +++ b/spec/std/isa/inst/M/rem.yaml @@ -13,7 +13,9 @@ description: | If the value in register xs2 is zero, write the value in xs1 into xd; If the result of the division overflows, write zero into xd; -definedBy: M +definedBy: + extension: + name: M assembly: xd, xs1, xs2 encoding: match: 0000001----------110-----0110011 diff --git a/spec/std/isa/inst/M/remu.yaml b/spec/std/isa/inst/M/remu.yaml index df0a42f9d3..bc19ffdac9 100644 --- a/spec/std/isa/inst/M/remu.yaml +++ b/spec/std/isa/inst/M/remu.yaml @@ -9,7 +9,9 @@ name: remu long_name: Unsigned remainder description: | Calculate the remainder of unsigned division of xs1 by xs2, and store the result in xd. -definedBy: M +definedBy: + extension: + name: M assembly: xd, xs1, xs2 encoding: match: 0000001----------111-----0110011 diff --git a/spec/std/isa/inst/M/remuw.yaml b/spec/std/isa/inst/M/remuw.yaml index 6a36481cec..5d34fb91aa 100644 --- a/spec/std/isa/inst/M/remuw.yaml +++ b/spec/std/isa/inst/M/remuw.yaml @@ -12,7 +12,11 @@ description: | and store the sign-extended result in xd. If the value in xs2 is zero, xd gets the sign-extended value in xs1. -definedBy: M +definedBy: + allOf: + - xlen: 64 + - extension: + name: M base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/M/remw.yaml b/spec/std/isa/inst/M/remw.yaml index ab3428f24e..b01fc32c69 100644 --- a/spec/std/isa/inst/M/remw.yaml +++ b/spec/std/isa/inst/M/remw.yaml @@ -14,7 +14,11 @@ description: | If the value in register xs2 is zero, write the sign-extended 32-bit value in xs1 into xd; If the result of the division overflows, write zero into xd; -definedBy: M +definedBy: + allOf: + - xlen: 64 + - extension: + name: M base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Q/fadd.q.yaml b/spec/std/isa/inst/Q/fadd.q.yaml index 7d656e7cde..7936dfe0ed 100644 --- a/spec/std/isa/inst/Q/fadd.q.yaml +++ b/spec/std/isa/inst/Q/fadd.q.yaml @@ -13,7 +13,9 @@ description: text: | `fadd.q` is analogous to `fadd.d` and performs double-precision floating-point addition between `qs1` and `qs2` and writes the final result to `qd`. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2, rm encoding: match: 0000011------------------1010011 diff --git a/spec/std/isa/inst/Q/fclass.q.yaml b/spec/std/isa/inst/Q/fclass.q.yaml index f90689ffeb..aabbeaa23d 100644 --- a/spec/std/isa/inst/Q/fclass.q.yaml +++ b/spec/std/isa/inst/Q/fclass.q.yaml @@ -35,7 +35,9 @@ description: |8 |_fs1_ is a signaling NaN. |9 |_fs1_ is a quiet NaN. |=== -definedBy: Q +definedBy: + extension: + name: Q assembly: xd, fs1 encoding: match: 111001100000-----001-----1010011 diff --git a/spec/std/isa/inst/Q/fcvt.d.q.yaml b/spec/std/isa/inst/Q/fcvt.d.q.yaml index dce4d2d3c8..33c271ebb5 100644 --- a/spec/std/isa/inst/Q/fcvt.d.q.yaml +++ b/spec/std/isa/inst/Q/fcvt.d.q.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fcvt.d.q` converts a quad-precision floating-point number to a double-precision floating-point number. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, rm encoding: match: 010000100011-------------1010011 diff --git a/spec/std/isa/inst/Q/fcvt.h.q.yaml b/spec/std/isa/inst/Q/fcvt.h.q.yaml index 4db0843108..9405569b7f 100644 --- a/spec/std/isa/inst/Q/fcvt.h.q.yaml +++ b/spec/std/isa/inst/Q/fcvt.h.q.yaml @@ -13,7 +13,10 @@ description: text: | `fcvt.h.q` converts a Quad-precision Floating-point number to a Half-precision Floating-point number. definedBy: - allOf: [Q, Zfh] + extension: + allOf: + - name: Q + - name: Zfh assembly: fd, fs1, rm encoding: match: 010001000011-------------1010011 diff --git a/spec/std/isa/inst/Q/fcvt.l.q.yaml b/spec/std/isa/inst/Q/fcvt.l.q.yaml index ebc357bf93..f36c682ddf 100644 --- a/spec/std/isa/inst/Q/fcvt.l.q.yaml +++ b/spec/std/isa/inst/Q/fcvt.l.q.yaml @@ -12,7 +12,11 @@ description: normative: false text: | `fcvt.l.q` converts a quad-precision floating-point number to a signed 64-bit integer. -definedBy: Q +definedBy: + allOf: + - xlen: 64 + - extension: + name: Q base: 64 assembly: xd, fs1, rm encoding: diff --git a/spec/std/isa/inst/Q/fcvt.lu.q.yaml b/spec/std/isa/inst/Q/fcvt.lu.q.yaml index 6932832d11..e106b3db6b 100644 --- a/spec/std/isa/inst/Q/fcvt.lu.q.yaml +++ b/spec/std/isa/inst/Q/fcvt.lu.q.yaml @@ -12,7 +12,11 @@ description: normative: false text: | `fcvt.lu.q` converts a quad-precision floating-point number to an unsigned 64-bit integer. -definedBy: Q +definedBy: + allOf: + - xlen: 64 + - extension: + name: Q base: 64 assembly: xd, fs1, rm encoding: diff --git a/spec/std/isa/inst/Q/fcvt.q.d.yaml b/spec/std/isa/inst/Q/fcvt.q.d.yaml index 09dfd8d5ec..332bdd802e 100644 --- a/spec/std/isa/inst/Q/fcvt.q.d.yaml +++ b/spec/std/isa/inst/Q/fcvt.q.d.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fcvt.d.q` converts a double-precision floating-point number to a quad-precision floating-point number. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, rm encoding: match: 010001100001-------------1010011 diff --git a/spec/std/isa/inst/Q/fcvt.q.h.yaml b/spec/std/isa/inst/Q/fcvt.q.h.yaml index 9f13280fa4..236271a915 100644 --- a/spec/std/isa/inst/Q/fcvt.q.h.yaml +++ b/spec/std/isa/inst/Q/fcvt.q.h.yaml @@ -13,7 +13,10 @@ description: text: | `fcvt.q.h` converts a half-precision floating-point number to a quad-precision floating-point number. definedBy: - allOf: [Q, Zfh] + extension: + allOf: + - name: Q + - name: Zfh assembly: fd, fs1, rm encoding: match: 010001100010-------------1010011 diff --git a/spec/std/isa/inst/Q/fcvt.q.l.yaml b/spec/std/isa/inst/Q/fcvt.q.l.yaml index 73892d4283..38e09b7df8 100644 --- a/spec/std/isa/inst/Q/fcvt.q.l.yaml +++ b/spec/std/isa/inst/Q/fcvt.q.l.yaml @@ -12,7 +12,11 @@ description: normative: false text: | `fcvt.q.l` converts a 64-bit signed integer, into a quad-precision floating-point number. -definedBy: Q +definedBy: + allOf: + - xlen: 64 + - extension: + name: Q base: 64 assembly: fd, xs1, rm encoding: diff --git a/spec/std/isa/inst/Q/fcvt.q.lu.yaml b/spec/std/isa/inst/Q/fcvt.q.lu.yaml index 9b33f969f6..8b07375581 100644 --- a/spec/std/isa/inst/Q/fcvt.q.lu.yaml +++ b/spec/std/isa/inst/Q/fcvt.q.lu.yaml @@ -12,7 +12,11 @@ description: normative: false text: | `fcvt.q.lu` converts a 64-bit unsigned integer, into a quad-precision floating-point number. -definedBy: Q +definedBy: + allOf: + - xlen: 64 + - extension: + name: Q base: 64 assembly: fd, xs1, rm encoding: diff --git a/spec/std/isa/inst/Q/fcvt.q.s.yaml b/spec/std/isa/inst/Q/fcvt.q.s.yaml index bd0d3ad6c8..8f20cda33c 100644 --- a/spec/std/isa/inst/Q/fcvt.q.s.yaml +++ b/spec/std/isa/inst/Q/fcvt.q.s.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fcvt.q.s` converts a single-precision floating-point number to a quad-precision floating-point number. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, rm encoding: match: 010001100000-------------1010011 diff --git a/spec/std/isa/inst/Q/fcvt.q.w.yaml b/spec/std/isa/inst/Q/fcvt.q.w.yaml index fb21ed17dd..0809468c2a 100644 --- a/spec/std/isa/inst/Q/fcvt.q.w.yaml +++ b/spec/std/isa/inst/Q/fcvt.q.w.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fcvt.q.w` converts a 32-bit signed integer into a quad-precision floating-point number. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, xs1, rm encoding: match: 110101100000-------------1010011 diff --git a/spec/std/isa/inst/Q/fcvt.q.wu.yaml b/spec/std/isa/inst/Q/fcvt.q.wu.yaml index 910afefd81..32e26f66d5 100644 --- a/spec/std/isa/inst/Q/fcvt.q.wu.yaml +++ b/spec/std/isa/inst/Q/fcvt.q.wu.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fcvt.q.wu` converts a 32-bit unsigned integer into a quad-precision floating-point number. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, xs1, rm encoding: match: 110101100001-------------1010011 diff --git a/spec/std/isa/inst/Q/fcvt.s.q.yaml b/spec/std/isa/inst/Q/fcvt.s.q.yaml index 7c9f2d05fb..9905c17024 100644 --- a/spec/std/isa/inst/Q/fcvt.s.q.yaml +++ b/spec/std/isa/inst/Q/fcvt.s.q.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fcvt.s.q` converts a quad-precision floating-point number to a single-precision floating-point number. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, rm encoding: match: 010000000011-------------1010011 diff --git a/spec/std/isa/inst/Q/fcvt.w.q.yaml b/spec/std/isa/inst/Q/fcvt.w.q.yaml index 6d93deef8b..c85690d757 100644 --- a/spec/std/isa/inst/Q/fcvt.w.q.yaml +++ b/spec/std/isa/inst/Q/fcvt.w.q.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fcvt.w.q` converts a quad-precision floating-point number to a 32-bit signed integer. -definedBy: Q +definedBy: + extension: + name: Q assembly: xd, fs1, rm encoding: match: 110001100000-------------1010011 diff --git a/spec/std/isa/inst/Q/fcvt.wu.q.yaml b/spec/std/isa/inst/Q/fcvt.wu.q.yaml index f0c958c834..127e32835e 100644 --- a/spec/std/isa/inst/Q/fcvt.wu.q.yaml +++ b/spec/std/isa/inst/Q/fcvt.wu.q.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fcvt.wu.q` converts a quad-precision floating-point number to a 32-bit unsigned integer. -definedBy: Q +definedBy: + extension: + name: Q assembly: xd, fs1, rm encoding: match: 110001100001-------------1010011 diff --git a/spec/std/isa/inst/Q/fdiv.q.yaml b/spec/std/isa/inst/Q/fdiv.q.yaml index a174ae529c..80f9a694c0 100644 --- a/spec/std/isa/inst/Q/fdiv.q.yaml +++ b/spec/std/isa/inst/Q/fdiv.q.yaml @@ -19,7 +19,9 @@ description: The operation is performed according to the IEEE 754-2008 standard for quad-precision floating-point arithmetic. The instruction sets the floating-point exception flags according to the result of the operation. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2, rm encoding: match: 0001111------------------1010011 diff --git a/spec/std/isa/inst/Q/feq.q.yaml b/spec/std/isa/inst/Q/feq.q.yaml index 62b073256a..864f7e4368 100644 --- a/spec/std/isa/inst/Q/feq.q.yaml +++ b/spec/std/isa/inst/Q/feq.q.yaml @@ -17,7 +17,9 @@ description: `feq.q` performs a quiet comparison: it only sets the invalid operation exception flag if either input is a signaling _NaN_. The result is 0 if either operand is _NaN_. -definedBy: Q +definedBy: + extension: + name: Q assembly: xd, fs1, fs2 encoding: match: 1010011----------010-----1010011 diff --git a/spec/std/isa/inst/Q/fle.q.yaml b/spec/std/isa/inst/Q/fle.q.yaml index cbeb2867b1..83139865ae 100644 --- a/spec/std/isa/inst/Q/fle.q.yaml +++ b/spec/std/isa/inst/Q/fle.q.yaml @@ -17,7 +17,9 @@ description: `fle.q` performs what the IEEE 754-2008 standard refers to as signaling comparisons: that is, they set the invalid operation exception flag if either input is _NaN_. The result is 0 if either operand is _NaN_. -definedBy: Q +definedBy: + extension: + name: Q assembly: xd, fs1, fs2 encoding: match: 1010011----------000-----1010011 diff --git a/spec/std/isa/inst/Q/fleq.q.yaml b/spec/std/isa/inst/Q/fleq.q.yaml index 6d2ccb449c..63fa0fe912 100644 --- a/spec/std/isa/inst/Q/fleq.q.yaml +++ b/spec/std/isa/inst/Q/fleq.q.yaml @@ -18,7 +18,10 @@ description: operation exception flag to be set. This instruction is encoded like its `flt` counterpart, but with instruction bit 14 set to 1. definedBy: - allOf: [Q, Zfa] + extension: + allOf: + - name: Q + - name: Zfa assembly: xd, fs1, fs2 encoding: match: 1010011----------100-----1010011 diff --git a/spec/std/isa/inst/Q/fli.q.yaml b/spec/std/isa/inst/Q/fli.q.yaml index adf922203f..f7d1585767 100644 --- a/spec/std/isa/inst/Q/fli.q.yaml +++ b/spec/std/isa/inst/Q/fli.q.yaml @@ -16,7 +16,10 @@ description: field, into floating-point register `rd`. `fli.q` is encoded like `fmv.w.x`, but with _fmt_ = Q. definedBy: - allOf: [Q, Zfa] + extension: + allOf: + - name: Q + - name: Zfa assembly: fd, xs1 encoding: match: 111101100001-----000-----1010011 diff --git a/spec/std/isa/inst/Q/flq.yaml b/spec/std/isa/inst/Q/flq.yaml index ea18a17d69..2ced5f8646 100644 --- a/spec/std/isa/inst/Q/flq.yaml +++ b/spec/std/isa/inst/Q/flq.yaml @@ -17,10 +17,12 @@ description: `flq` does not modify the bits being transferred; in particular, the payloads of non-canonical _NaNs_ are preserved. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, xs1, imm encoding: - match: -----------------100-----0000111 + match: "-----------------100-----0000111" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/Q/flt.q.yaml b/spec/std/isa/inst/Q/flt.q.yaml index 1eb4dea6a7..0ae64972b0 100644 --- a/spec/std/isa/inst/Q/flt.q.yaml +++ b/spec/std/isa/inst/Q/flt.q.yaml @@ -17,7 +17,9 @@ description: `flt.q` performs what the IEEE 754-2008 standard refers to as signaling comparisons: that is, they set the invalid operation exception flag if either input is _NaN_. The result is 0 if either operand is _NaN_. -definedBy: Q +definedBy: + extension: + name: Q assembly: xd, fs1, fs2 encoding: match: 1010011----------001-----1010011 diff --git a/spec/std/isa/inst/Q/fltq.q.yaml b/spec/std/isa/inst/Q/fltq.q.yaml index ad9a6ccca6..8433ab3f9a 100644 --- a/spec/std/isa/inst/Q/fltq.q.yaml +++ b/spec/std/isa/inst/Q/fltq.q.yaml @@ -18,7 +18,10 @@ description: operation exception flag to be set. This instruction is encoded like its `fle` counterpart, but with instruction bit 14 set to 1. definedBy: - allOf: [Q, Zfa] + extension: + allOf: + - name: Q + - name: Zfa assembly: fd, fs1, fs2 encoding: match: 1010011----------101-----1010011 diff --git a/spec/std/isa/inst/Q/fmadd.q.yaml b/spec/std/isa/inst/Q/fmadd.q.yaml index fb56f7969c..810948e8e5 100644 --- a/spec/std/isa/inst/Q/fmadd.q.yaml +++ b/spec/std/isa/inst/Q/fmadd.q.yaml @@ -16,10 +16,12 @@ description: The fused multiply-add instructions must set the invalid operation exception flag when the multiplicands are latexmath:[$\infty$] and zero, even when the addend is a quiet _NaN_. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----11------------------1000011 + match: "-----11------------------1000011" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/Q/fmax.q.yaml b/spec/std/isa/inst/Q/fmax.q.yaml index 0a4b0e46c2..d7c6ba5a54 100644 --- a/spec/std/isa/inst/Q/fmax.q.yaml +++ b/spec/std/isa/inst/Q/fmax.q.yaml @@ -16,7 +16,9 @@ description: If both inputs are _NaN_s, the result is the canonical _NaN_. If only one operand is a _NaN_, the result is the non-_NaN_ operand. Signaling _NaN_ inputs set the invalid operation exception flag, even when the result is not _NaN_. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2 encoding: match: 0010111----------001-----1010011 diff --git a/spec/std/isa/inst/Q/fmaxm.q.yaml b/spec/std/isa/inst/Q/fmaxm.q.yaml index cb45a01486..063f06a1c0 100644 --- a/spec/std/isa/inst/Q/fmaxm.q.yaml +++ b/spec/std/isa/inst/Q/fmaxm.q.yaml @@ -18,7 +18,10 @@ description: Signaling _NaN_ inputs set the invalid operation exception flag, even when the result is not _NaN_. This instruction is encoded like its `fminm.q` counterpart, but with instruction bit 14 set to 1. definedBy: - allOf: [Q, Zfa] + extension: + allOf: + - name: Q + - name: Zfa assembly: fd, fs1, fs2 encoding: match: 0010111----------011-----1010011 diff --git a/spec/std/isa/inst/Q/fmin.q.yaml b/spec/std/isa/inst/Q/fmin.q.yaml index dc5ccfbd18..3f6f132c2d 100644 --- a/spec/std/isa/inst/Q/fmin.q.yaml +++ b/spec/std/isa/inst/Q/fmin.q.yaml @@ -16,7 +16,9 @@ description: If both inputs are _NaN_s, the result is the canonical _NaN_. If only one operand is a _NaN_, the result is the non-_NaN_ operand. Signaling _NaN_ inputs set the invalid operation exception flag, even when the result is not _NaN_. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2 encoding: match: 0010111----------000-----1010011 diff --git a/spec/std/isa/inst/Q/fminm.q.yaml b/spec/std/isa/inst/Q/fminm.q.yaml index efa3448f3d..6416d916e7 100644 --- a/spec/std/isa/inst/Q/fminm.q.yaml +++ b/spec/std/isa/inst/Q/fminm.q.yaml @@ -18,7 +18,10 @@ description: Signaling _NaN_ inputs set the invalid operation exception flag, even when the result is not _NaN_. This instruction is encoded like its `fminm.q` counterpart, but with instruction bit 14 set to 1. definedBy: - allOf: [Q, Zfa] + extension: + allOf: + - name: Q + - name: Zfa assembly: fd, fs1, fs2 encoding: match: 0010111----------010-----1010011 diff --git a/spec/std/isa/inst/Q/fmsub.q.yaml b/spec/std/isa/inst/Q/fmsub.q.yaml index 041b236373..8b0b384622 100644 --- a/spec/std/isa/inst/Q/fmsub.q.yaml +++ b/spec/std/isa/inst/Q/fmsub.q.yaml @@ -13,10 +13,12 @@ description: text: | The `fmsub.q` instruction performs a floating-point multiply-subtract operation on the values in registers `fs1`, `fs2`, and `fs3`. It computes the result as `(fs1 * fs2) - fs3` and writes the result to the destination register `fd`. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----11------------------1000111 + match: "-----11------------------1000111" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/Q/fmul.q.yaml b/spec/std/isa/inst/Q/fmul.q.yaml index 1943582f50..f60c4821ff 100644 --- a/spec/std/isa/inst/Q/fmul.q.yaml +++ b/spec/std/isa/inst/Q/fmul.q.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fmul.q` performs quad-precision floating-point multiplication, between `fs1` and `fs2`. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2, rm encoding: match: 0001011------------------1010011 diff --git a/spec/std/isa/inst/Q/fmvh.x.q.yaml b/spec/std/isa/inst/Q/fmvh.x.q.yaml index 04608ba93f..94493b93ec 100644 --- a/spec/std/isa/inst/Q/fmvh.x.q.yaml +++ b/spec/std/isa/inst/Q/fmvh.x.q.yaml @@ -17,7 +17,12 @@ description: `fmvh.x.q` is used in conjunction with the existing `fmv.x.d` instruction to move a quad-precision floating-point number to a pair of x-registers. definedBy: - allOf: [Q, Zfa] + allOf: + - xlen: 64 + - extension: + allOf: + - name: Q + - name: Zfa base: 64 assembly: xd, fs1 encoding: diff --git a/spec/std/isa/inst/Q/fmvp.q.x.yaml b/spec/std/isa/inst/Q/fmvp.q.x.yaml index a86f9ca4ad..2f72a01019 100644 --- a/spec/std/isa/inst/Q/fmvp.q.x.yaml +++ b/spec/std/isa/inst/Q/fmvp.q.x.yaml @@ -17,7 +17,12 @@ description: floating-point register `fd`. `fmvp.q.x` is encoded in the OP-FP major opcode with _funct3_=0 and _funct7_=1011011. definedBy: - allOf: [Q, Zfa] + allOf: + - xlen: 64 + - extension: + allOf: + - name: Q + - name: Zfa base: 64 assembly: fd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Q/fnmadd.q.yaml b/spec/std/isa/inst/Q/fnmadd.q.yaml index 0886d79469..dcbec2d073 100644 --- a/spec/std/isa/inst/Q/fnmadd.q.yaml +++ b/spec/std/isa/inst/Q/fnmadd.q.yaml @@ -14,10 +14,12 @@ description: The `fnmadd.q` instruction multiplies the values in `fs1` and `fs2`, negates the product, adds the value in `fs3`, and writes the final result to `fd`. `fnmadd.q` computes `-(fs1 * fs2) + fs3`. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----11------------------1001111 + match: "-----11------------------1001111" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/Q/fnmsub.q.yaml b/spec/std/isa/inst/Q/fnmsub.q.yaml index bf666684f4..71139b9c32 100644 --- a/spec/std/isa/inst/Q/fnmsub.q.yaml +++ b/spec/std/isa/inst/Q/fnmsub.q.yaml @@ -14,10 +14,12 @@ description: The `fnmsub.q` instruction multiplies the values in `fs1` and `fs2`, negates the product, subtracts the value in `fs3`, and writes the final result to `fd`. `fnmsub.q` computes `-(fs1 * fs2) - fs3`. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----11------------------1001011 + match: "-----11------------------1001011" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/Q/fround.q.yaml b/spec/std/isa/inst/Q/fround.q.yaml index ee3a3494b8..f9415f5067 100644 --- a/spec/std/isa/inst/Q/fround.q.yaml +++ b/spec/std/isa/inst/Q/fround.q.yaml @@ -18,7 +18,10 @@ description: exception flag to be set; no other exception flags are set. `fround.q` is encoded like `fcvt.q.s`, but with `rs2`=4. definedBy: - allOf: [Q, Zfa] + extension: + allOf: + - name: Q + - name: Zfa assembly: fd, fs1, rm encoding: match: 010001100100-------------1010011 diff --git a/spec/std/isa/inst/Q/froundnx.q.yaml b/spec/std/isa/inst/Q/froundnx.q.yaml index a0ff34bbf7..df35519fe8 100644 --- a/spec/std/isa/inst/Q/froundnx.q.yaml +++ b/spec/std/isa/inst/Q/froundnx.q.yaml @@ -14,7 +14,10 @@ description: The `froundnx.q` instruction is encoded like `fround.q` but with `rs2`=5 and it also sets the inexact exception flag if the input differs from the rounded result and is not _NaN_. definedBy: - allOf: [Q, Zfa] + extension: + allOf: + - name: Q + - name: Zfa assembly: fd, fs1, rm encoding: match: 010001100101-------------1010011 diff --git a/spec/std/isa/inst/Q/fsgnj.q.yaml b/spec/std/isa/inst/Q/fsgnj.q.yaml index d5199aa572..e997c02c57 100644 --- a/spec/std/isa/inst/Q/fsgnj.q.yaml +++ b/spec/std/isa/inst/Q/fsgnj.q.yaml @@ -14,7 +14,9 @@ description: The `fsgnj.q` instruction produces a result that takes all bits except the sign bit from `fs1`. The result's sign bit is taken from `fs2`'s sign bit, and the result is written to the destination register `fd`. `fsgnj.q` does not set floating-point exception flags, nor do they canonicalize _NaN_s. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2 encoding: match: 0010011----------000-----1010011 diff --git a/spec/std/isa/inst/Q/fsgnjn.q.yaml b/spec/std/isa/inst/Q/fsgnjn.q.yaml index 001eea8683..fb468026b4 100644 --- a/spec/std/isa/inst/Q/fsgnjn.q.yaml +++ b/spec/std/isa/inst/Q/fsgnjn.q.yaml @@ -14,7 +14,9 @@ description: The `fsgnjn.q` instruction produces a result that takes all bits except the sign bit from `fs1`. The result's sign bit is opposite of `fs2`'s sign bit, and the result is written to the destination register `fd`. `fsgnjn.q` does not set floating-point exception flags, nor do they canonicalize _NaN_s. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2 encoding: match: 0010011----------001-----1010011 diff --git a/spec/std/isa/inst/Q/fsgnjx.q.yaml b/spec/std/isa/inst/Q/fsgnjx.q.yaml index 4ed0142c78..d0c11c9420 100644 --- a/spec/std/isa/inst/Q/fsgnjx.q.yaml +++ b/spec/std/isa/inst/Q/fsgnjx.q.yaml @@ -14,7 +14,9 @@ description: The `fsgnjx.q` instruction produces a result that takes all bits except the sign bit from `fs1`. The result's sign bit is the XOR of sign bits of `fs1` and `fs2`, and the result is written to the destination register `fd`. `fsgnjx.q` does not set floating-point exception flags, nor do they canonicalize _NaN_s. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2 encoding: match: 0010011----------010-----1010011 diff --git a/spec/std/isa/inst/Q/fsq.yaml b/spec/std/isa/inst/Q/fsq.yaml index e860ee335c..314bae3a94 100644 --- a/spec/std/isa/inst/Q/fsq.yaml +++ b/spec/std/isa/inst/Q/fsq.yaml @@ -17,10 +17,12 @@ description: `fsq` does not modify the bits being transferred; in particular, the payloads of non-canonical _NaNs_ are preserved. -definedBy: Q +definedBy: + extension: + name: Q assembly: fs2, imm(xs1) encoding: - match: -----------------100-----0100111 + match: "-----------------100-----0100111" variables: - name: imm location: 31-25|11-7 diff --git a/spec/std/isa/inst/Q/fsqrt.q.yaml b/spec/std/isa/inst/Q/fsqrt.q.yaml index 7c7da52332..ec19044e1c 100644 --- a/spec/std/isa/inst/Q/fsqrt.q.yaml +++ b/spec/std/isa/inst/Q/fsqrt.q.yaml @@ -12,7 +12,9 @@ description: normative: false text: | The `fsqrt.q` instruction computes the square root of the value in `fs1` and writes the result to `fd`. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, rm encoding: match: 010111100000-------------1010011 diff --git a/spec/std/isa/inst/Q/fsub.q.yaml b/spec/std/isa/inst/Q/fsub.q.yaml index f2bc6dc0f0..152ac82b01 100644 --- a/spec/std/isa/inst/Q/fsub.q.yaml +++ b/spec/std/isa/inst/Q/fsub.q.yaml @@ -13,7 +13,9 @@ description: text: | The `fsub.q` instruction performs the quad-precision floating-point subtraction of `fs2` from `fs1`. It computes the result as `fs1 - fs2` and writes the result to the destination register `fd`. -definedBy: Q +definedBy: + extension: + name: Q assembly: fd, fs1, fs2, rm encoding: match: 0000111------------------1010011 diff --git a/spec/std/isa/inst/S/sfence.vma.yaml b/spec/std/isa/inst/S/sfence.vma.yaml index c03646c159..23805b6f5e 100644 --- a/spec/std/isa/inst/S/sfence.vma.yaml +++ b/spec/std/isa/inst/S/sfence.vma.yaml @@ -7,7 +7,9 @@ $schema: "inst_schema.json#" kind: instruction name: sfence.vma long_name: Supervisor memory-management fence -definedBy: S +definedBy: + extension: + name: S description: | The supervisor memory-management fence instruction `SFENCE.VMA` is used to synchronize updates to in-memory memory-management data structures with diff --git a/spec/std/isa/inst/S/sret.yaml b/spec/std/isa/inst/S/sret.yaml index d30dfe2f9d..9bd840655d 100644 --- a/spec/std/isa/inst/S/sret.yaml +++ b/spec/std/isa/inst/S/sret.yaml @@ -47,7 +47,9 @@ description: | | 1 | VS-mode |=== -definedBy: S +definedBy: + extension: + name: S assembly: "" encoding: match: "00010000001000000000000001110011" diff --git a/spec/std/isa/inst/Sdext/dret.yaml b/spec/std/isa/inst/Sdext/dret.yaml index 0e852584ea..87c25ab72e 100644 --- a/spec/std/isa/inst/Sdext/dret.yaml +++ b/spec/std/isa/inst/Sdext/dret.yaml @@ -9,7 +9,9 @@ name: dret long_name: No synopsis available description: | No description available. -definedBy: Sdext +definedBy: + extension: + name: Sdext assembly: "" encoding: match: "01111011001000000000000001110011" diff --git a/spec/std/isa/inst/Smdbltrp/sctrclr.yaml b/spec/std/isa/inst/Smdbltrp/sctrclr.yaml index 8dd49d276e..941d95a149 100644 --- a/spec/std/isa/inst/Smdbltrp/sctrclr.yaml +++ b/spec/std/isa/inst/Smdbltrp/sctrclr.yaml @@ -9,7 +9,9 @@ name: sctrclr long_name: No synopsis available description: | No description available. -definedBy: Smdbltrp +definedBy: + extension: + name: Smdbltrp assembly: "" encoding: match: "00010000010000000000000001110011" diff --git a/spec/std/isa/inst/Smrnmi/mnret.yaml b/spec/std/isa/inst/Smrnmi/mnret.yaml index 28be0bfbaa..2866c51f31 100644 --- a/spec/std/isa/inst/Smrnmi/mnret.yaml +++ b/spec/std/isa/inst/Smrnmi/mnret.yaml @@ -13,7 +13,9 @@ description: | also sets mnstatus.NMIE. If MNRET changes the privilege mode to a mode less privileged than M, it also sets mstatus.MPRV to 0. If the Zicfilp extension is implemented, then if the new privileged mode is y, MNRET sets ELP to the logical AND of yLPE (see Section 22.1.1) and mnstatus.MNPELP. -definedBy: Smrnmi +definedBy: + extension: + name: Smrnmi assembly: "" encoding: match: "01110000001000000000000001110011" diff --git a/spec/std/isa/inst/Svinval/hinval.gvma.yaml b/spec/std/isa/inst/Svinval/hinval.gvma.yaml index ec26c6f575..6cbc765a5b 100644 --- a/spec/std/isa/inst/Svinval/hinval.gvma.yaml +++ b/spec/std/isa/inst/Svinval/hinval.gvma.yaml @@ -8,9 +8,10 @@ kind: instruction name: hinval.gvma long_name: Invalidate cached address translations definedBy: - allOf: - - Svinval - - H + extension: + allOf: + - name: Svinval + - name: H encoding: match: 0110011----------000000001110011 variables: diff --git a/spec/std/isa/inst/Svinval/hinval.vvma.yaml b/spec/std/isa/inst/Svinval/hinval.vvma.yaml index c99e35eaf3..0291ee1165 100644 --- a/spec/std/isa/inst/Svinval/hinval.vvma.yaml +++ b/spec/std/isa/inst/Svinval/hinval.vvma.yaml @@ -8,9 +8,10 @@ kind: instruction name: hinval.vvma long_name: Invalidate cached address translations definedBy: - allOf: - - Svinval - - H + extension: + allOf: + - name: Svinval + - name: H encoding: match: 0010011----------000000001110011 variables: diff --git a/spec/std/isa/inst/Svinval/sfence.inval.ir.yaml b/spec/std/isa/inst/Svinval/sfence.inval.ir.yaml index b1005cbd69..a2f76807d2 100644 --- a/spec/std/isa/inst/Svinval/sfence.inval.ir.yaml +++ b/spec/std/isa/inst/Svinval/sfence.inval.ir.yaml @@ -7,7 +7,9 @@ $schema: "inst_schema.json#" kind: instruction name: sfence.inval.ir long_name: Order implicit page table reads after invalidation -definedBy: Svinval +definedBy: + extension: + name: Svinval encoding: match: "00011000000100000000000001110011" description: | diff --git a/spec/std/isa/inst/Svinval/sfence.w.inval.yaml b/spec/std/isa/inst/Svinval/sfence.w.inval.yaml index c1a0e7550e..7b6bf12ce4 100644 --- a/spec/std/isa/inst/Svinval/sfence.w.inval.yaml +++ b/spec/std/isa/inst/Svinval/sfence.w.inval.yaml @@ -7,7 +7,9 @@ $schema: "inst_schema.json#" kind: instruction name: sfence.w.inval long_name: Order writes before sfence -definedBy: Svinval +definedBy: + extension: + name: Svinval encoding: match: "00011000000000000000000001110011" description: | diff --git a/spec/std/isa/inst/Svinval/sinval.vma.yaml b/spec/std/isa/inst/Svinval/sinval.vma.yaml index beddf9857a..4bc70fd574 100644 --- a/spec/std/isa/inst/Svinval/sinval.vma.yaml +++ b/spec/std/isa/inst/Svinval/sinval.vma.yaml @@ -7,7 +7,9 @@ $schema: "inst_schema.json#" kind: instruction name: sinval.vma long_name: Invalidate cached address translations -definedBy: Svinval +definedBy: + extension: + name: Svinval encoding: match: 0001011----------000000001110011 variables: diff --git a/spec/std/isa/inst/V/vaadd.vv.yaml b/spec/std/isa/inst/V/vaadd.vv.yaml index 17d16e3362..4cd90fab36 100644 --- a/spec/std/isa/inst/V/vaadd.vv.yaml +++ b/spec/std/isa/inst/V/vaadd.vv.yaml @@ -9,7 +9,9 @@ name: vaadd.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 001001-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vaadd.vx.yaml b/spec/std/isa/inst/V/vaadd.vx.yaml index c012c91461..92fa7a0239 100644 --- a/spec/std/isa/inst/V/vaadd.vx.yaml +++ b/spec/std/isa/inst/V/vaadd.vx.yaml @@ -9,7 +9,9 @@ name: vaadd.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 001001-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vaaddu.vv.yaml b/spec/std/isa/inst/V/vaaddu.vv.yaml index a992673bb2..2eef699140 100644 --- a/spec/std/isa/inst/V/vaaddu.vv.yaml +++ b/spec/std/isa/inst/V/vaaddu.vv.yaml @@ -9,7 +9,9 @@ name: vaaddu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 001000-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vaaddu.vx.yaml b/spec/std/isa/inst/V/vaaddu.vx.yaml index cfcc7716d4..2c58109423 100644 --- a/spec/std/isa/inst/V/vaaddu.vx.yaml +++ b/spec/std/isa/inst/V/vaaddu.vx.yaml @@ -9,7 +9,9 @@ name: vaaddu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 001000-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vadc.vim.yaml b/spec/std/isa/inst/V/vadc.vim.yaml index f54868c035..1e39d611ac 100644 --- a/spec/std/isa/inst/V/vadc.vim.yaml +++ b/spec/std/isa/inst/V/vadc.vim.yaml @@ -9,7 +9,9 @@ name: vadc.vim long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, v0 encoding: match: 0100000----------011-----1010111 diff --git a/spec/std/isa/inst/V/vadc.vvm.yaml b/spec/std/isa/inst/V/vadc.vvm.yaml index 88af72d2bc..8d36df7950 100644 --- a/spec/std/isa/inst/V/vadc.vvm.yaml +++ b/spec/std/isa/inst/V/vadc.vvm.yaml @@ -9,7 +9,9 @@ name: vadc.vvm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, v0 encoding: match: 0100000----------000-----1010111 diff --git a/spec/std/isa/inst/V/vadc.vxm.yaml b/spec/std/isa/inst/V/vadc.vxm.yaml index d3967cef61..be0490b444 100644 --- a/spec/std/isa/inst/V/vadc.vxm.yaml +++ b/spec/std/isa/inst/V/vadc.vxm.yaml @@ -9,7 +9,9 @@ name: vadc.vxm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, v0 encoding: match: 0100000----------100-----1010111 diff --git a/spec/std/isa/inst/V/vadd.vi.yaml b/spec/std/isa/inst/V/vadd.vi.yaml index c7d3bf9436..abe8fb380e 100644 --- a/spec/std/isa/inst/V/vadd.vi.yaml +++ b/spec/std/isa/inst/V/vadd.vi.yaml @@ -9,7 +9,9 @@ name: vadd.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 000000-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vadd.vv.yaml b/spec/std/isa/inst/V/vadd.vv.yaml index 723260e472..019816829d 100644 --- a/spec/std/isa/inst/V/vadd.vv.yaml +++ b/spec/std/isa/inst/V/vadd.vv.yaml @@ -9,7 +9,9 @@ name: vadd.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000000-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vadd.vx.yaml b/spec/std/isa/inst/V/vadd.vx.yaml index 8d5b29c044..b382295005 100644 --- a/spec/std/isa/inst/V/vadd.vx.yaml +++ b/spec/std/isa/inst/V/vadd.vx.yaml @@ -9,7 +9,9 @@ name: vadd.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 000000-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vand.vi.yaml b/spec/std/isa/inst/V/vand.vi.yaml index 9e2c571fbd..15fe9d1621 100644 --- a/spec/std/isa/inst/V/vand.vi.yaml +++ b/spec/std/isa/inst/V/vand.vi.yaml @@ -9,7 +9,9 @@ name: vand.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 001001-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vand.vv.yaml b/spec/std/isa/inst/V/vand.vv.yaml index de6bbd0361..34637351c4 100644 --- a/spec/std/isa/inst/V/vand.vv.yaml +++ b/spec/std/isa/inst/V/vand.vv.yaml @@ -9,7 +9,9 @@ name: vand.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 001001-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vand.vx.yaml b/spec/std/isa/inst/V/vand.vx.yaml index b8f98b284b..93532b42a8 100644 --- a/spec/std/isa/inst/V/vand.vx.yaml +++ b/spec/std/isa/inst/V/vand.vx.yaml @@ -9,7 +9,9 @@ name: vand.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 001001-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vasub.vv.yaml b/spec/std/isa/inst/V/vasub.vv.yaml index d8b7c49eed..727b2cd10d 100644 --- a/spec/std/isa/inst/V/vasub.vv.yaml +++ b/spec/std/isa/inst/V/vasub.vv.yaml @@ -9,7 +9,9 @@ name: vasub.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 001011-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vasub.vx.yaml b/spec/std/isa/inst/V/vasub.vx.yaml index 0784a2591e..0b3d687f43 100644 --- a/spec/std/isa/inst/V/vasub.vx.yaml +++ b/spec/std/isa/inst/V/vasub.vx.yaml @@ -9,7 +9,9 @@ name: vasub.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 001011-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vasubu.vv.yaml b/spec/std/isa/inst/V/vasubu.vv.yaml index 732fa3eadb..f698427c2e 100644 --- a/spec/std/isa/inst/V/vasubu.vv.yaml +++ b/spec/std/isa/inst/V/vasubu.vv.yaml @@ -9,7 +9,9 @@ name: vasubu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 001010-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vasubu.vx.yaml b/spec/std/isa/inst/V/vasubu.vx.yaml index f39bdf4de2..58a306db18 100644 --- a/spec/std/isa/inst/V/vasubu.vx.yaml +++ b/spec/std/isa/inst/V/vasubu.vx.yaml @@ -9,7 +9,9 @@ name: vasubu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 001010-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vcompress.vm.yaml b/spec/std/isa/inst/V/vcompress.vm.yaml index 38a436d651..b595b87a69 100644 --- a/spec/std/isa/inst/V/vcompress.vm.yaml +++ b/spec/std/isa/inst/V/vcompress.vm.yaml @@ -9,7 +9,9 @@ name: vcompress.vm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1 encoding: match: 0101111----------010-----1010111 diff --git a/spec/std/isa/inst/V/vcpop.m.yaml b/spec/std/isa/inst/V/vcpop.m.yaml index f6f56e9eaf..9dc313485e 100644 --- a/spec/std/isa/inst/V/vcpop.m.yaml +++ b/spec/std/isa/inst/V/vcpop.m.yaml @@ -9,7 +9,9 @@ name: vcpop.m long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: xd, vs2, vm encoding: match: 010000------10000010-----1010111 diff --git a/spec/std/isa/inst/V/vdiv.vv.yaml b/spec/std/isa/inst/V/vdiv.vv.yaml index 014aa493f5..6e09653b75 100644 --- a/spec/std/isa/inst/V/vdiv.vv.yaml +++ b/spec/std/isa/inst/V/vdiv.vv.yaml @@ -9,7 +9,9 @@ name: vdiv.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100001-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vdiv.vx.yaml b/spec/std/isa/inst/V/vdiv.vx.yaml index a58a923287..b254c61cd9 100644 --- a/spec/std/isa/inst/V/vdiv.vx.yaml +++ b/spec/std/isa/inst/V/vdiv.vx.yaml @@ -9,7 +9,9 @@ name: vdiv.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100001-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vdivu.vv.yaml b/spec/std/isa/inst/V/vdivu.vv.yaml index 4030371b4b..68d99ced3f 100644 --- a/spec/std/isa/inst/V/vdivu.vv.yaml +++ b/spec/std/isa/inst/V/vdivu.vv.yaml @@ -9,7 +9,9 @@ name: vdivu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100000-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vdivu.vx.yaml b/spec/std/isa/inst/V/vdivu.vx.yaml index 2960b267a9..9c523ea94b 100644 --- a/spec/std/isa/inst/V/vdivu.vx.yaml +++ b/spec/std/isa/inst/V/vdivu.vx.yaml @@ -9,7 +9,9 @@ name: vdivu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100000-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vfadd.vf.yaml b/spec/std/isa/inst/V/vfadd.vf.yaml index 8edbd0d641..18ac9c5cbf 100644 --- a/spec/std/isa/inst/V/vfadd.vf.yaml +++ b/spec/std/isa/inst/V/vfadd.vf.yaml @@ -9,7 +9,9 @@ name: vfadd.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 000000-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfadd.vv.yaml b/spec/std/isa/inst/V/vfadd.vv.yaml index a7214e6d19..fe873cc83f 100644 --- a/spec/std/isa/inst/V/vfadd.vv.yaml +++ b/spec/std/isa/inst/V/vfadd.vv.yaml @@ -9,7 +9,9 @@ name: vfadd.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000000-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfclass.v.yaml b/spec/std/isa/inst/V/vfclass.v.yaml index 90bd46300e..51e9bfeac8 100644 --- a/spec/std/isa/inst/V/vfclass.v.yaml +++ b/spec/std/isa/inst/V/vfclass.v.yaml @@ -9,7 +9,9 @@ name: vfclass.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010011------10000001-----1010111 diff --git a/spec/std/isa/inst/V/vfcvt.f.x.v.yaml b/spec/std/isa/inst/V/vfcvt.f.x.v.yaml index 9927cd037e..411b49661d 100644 --- a/spec/std/isa/inst/V/vfcvt.f.x.v.yaml +++ b/spec/std/isa/inst/V/vfcvt.f.x.v.yaml @@ -9,7 +9,9 @@ name: vfcvt.f.x.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------00011001-----1010111 diff --git a/spec/std/isa/inst/V/vfcvt.f.xu.v.yaml b/spec/std/isa/inst/V/vfcvt.f.xu.v.yaml index 1be5a11fae..6641d15db9 100644 --- a/spec/std/isa/inst/V/vfcvt.f.xu.v.yaml +++ b/spec/std/isa/inst/V/vfcvt.f.xu.v.yaml @@ -9,7 +9,9 @@ name: vfcvt.f.xu.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------00010001-----1010111 diff --git a/spec/std/isa/inst/V/vfcvt.rtz.x.f.v.yaml b/spec/std/isa/inst/V/vfcvt.rtz.x.f.v.yaml index 48a48321ad..b2406a081d 100644 --- a/spec/std/isa/inst/V/vfcvt.rtz.x.f.v.yaml +++ b/spec/std/isa/inst/V/vfcvt.rtz.x.f.v.yaml @@ -9,7 +9,9 @@ name: vfcvt.rtz.x.f.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------00111001-----1010111 diff --git a/spec/std/isa/inst/V/vfcvt.rtz.xu.f.v.yaml b/spec/std/isa/inst/V/vfcvt.rtz.xu.f.v.yaml index 19712c6a08..c1357af666 100644 --- a/spec/std/isa/inst/V/vfcvt.rtz.xu.f.v.yaml +++ b/spec/std/isa/inst/V/vfcvt.rtz.xu.f.v.yaml @@ -9,7 +9,9 @@ name: vfcvt.rtz.xu.f.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------00110001-----1010111 diff --git a/spec/std/isa/inst/V/vfcvt.x.f.v.yaml b/spec/std/isa/inst/V/vfcvt.x.f.v.yaml index 2b5ef4743e..0e3c2635c6 100644 --- a/spec/std/isa/inst/V/vfcvt.x.f.v.yaml +++ b/spec/std/isa/inst/V/vfcvt.x.f.v.yaml @@ -9,7 +9,9 @@ name: vfcvt.x.f.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------00001001-----1010111 diff --git a/spec/std/isa/inst/V/vfcvt.xu.f.v.yaml b/spec/std/isa/inst/V/vfcvt.xu.f.v.yaml index ea4f9c6ba6..f3414bde2d 100644 --- a/spec/std/isa/inst/V/vfcvt.xu.f.v.yaml +++ b/spec/std/isa/inst/V/vfcvt.xu.f.v.yaml @@ -9,7 +9,9 @@ name: vfcvt.xu.f.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------00000001-----1010111 diff --git a/spec/std/isa/inst/V/vfdiv.vf.yaml b/spec/std/isa/inst/V/vfdiv.vf.yaml index d743c19ae1..e3704be51c 100644 --- a/spec/std/isa/inst/V/vfdiv.vf.yaml +++ b/spec/std/isa/inst/V/vfdiv.vf.yaml @@ -9,7 +9,9 @@ name: vfdiv.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 100000-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfdiv.vv.yaml b/spec/std/isa/inst/V/vfdiv.vv.yaml index b3ac09f703..5da10233cd 100644 --- a/spec/std/isa/inst/V/vfdiv.vv.yaml +++ b/spec/std/isa/inst/V/vfdiv.vv.yaml @@ -9,7 +9,9 @@ name: vfdiv.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100000-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfirst.m.yaml b/spec/std/isa/inst/V/vfirst.m.yaml index f801d9dbdd..c93eae0cd1 100644 --- a/spec/std/isa/inst/V/vfirst.m.yaml +++ b/spec/std/isa/inst/V/vfirst.m.yaml @@ -9,7 +9,9 @@ name: vfirst.m long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: xd, vs2, vm encoding: match: 010000------10001010-----1010111 diff --git a/spec/std/isa/inst/V/vfmacc.vf.yaml b/spec/std/isa/inst/V/vfmacc.vf.yaml index 6ced454031..2f0ba86778 100644 --- a/spec/std/isa/inst/V/vfmacc.vf.yaml +++ b/spec/std/isa/inst/V/vfmacc.vf.yaml @@ -9,7 +9,9 @@ name: vfmacc.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1, vs2, vm encoding: match: 101100-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfmacc.vv.yaml b/spec/std/isa/inst/V/vfmacc.vv.yaml index e8b7e87ff5..3e958e4849 100644 --- a/spec/std/isa/inst/V/vfmacc.vv.yaml +++ b/spec/std/isa/inst/V/vfmacc.vv.yaml @@ -9,7 +9,9 @@ name: vfmacc.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 101100-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfmadd.vf.yaml b/spec/std/isa/inst/V/vfmadd.vf.yaml index 1721b37da9..dff262615c 100644 --- a/spec/std/isa/inst/V/vfmadd.vf.yaml +++ b/spec/std/isa/inst/V/vfmadd.vf.yaml @@ -9,7 +9,9 @@ name: vfmadd.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1, vs2, vm encoding: match: 101000-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfmadd.vv.yaml b/spec/std/isa/inst/V/vfmadd.vv.yaml index 1b4402d47f..298bbfe463 100644 --- a/spec/std/isa/inst/V/vfmadd.vv.yaml +++ b/spec/std/isa/inst/V/vfmadd.vv.yaml @@ -9,7 +9,9 @@ name: vfmadd.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 101000-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfmax.vf.yaml b/spec/std/isa/inst/V/vfmax.vf.yaml index 7af9e84703..475925961d 100644 --- a/spec/std/isa/inst/V/vfmax.vf.yaml +++ b/spec/std/isa/inst/V/vfmax.vf.yaml @@ -9,7 +9,9 @@ name: vfmax.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 000110-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfmax.vv.yaml b/spec/std/isa/inst/V/vfmax.vv.yaml index 9ff2fbf849..e2e34d8f2b 100644 --- a/spec/std/isa/inst/V/vfmax.vv.yaml +++ b/spec/std/isa/inst/V/vfmax.vv.yaml @@ -9,7 +9,9 @@ name: vfmax.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000110-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfmerge.vfm.yaml b/spec/std/isa/inst/V/vfmerge.vfm.yaml index cef2d29e8a..5ccec9a2ec 100644 --- a/spec/std/isa/inst/V/vfmerge.vfm.yaml +++ b/spec/std/isa/inst/V/vfmerge.vfm.yaml @@ -9,7 +9,9 @@ name: vfmerge.vfm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, v0 encoding: match: 0101110----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfmin.vf.yaml b/spec/std/isa/inst/V/vfmin.vf.yaml index 7cb1edbc46..69e0801cc3 100644 --- a/spec/std/isa/inst/V/vfmin.vf.yaml +++ b/spec/std/isa/inst/V/vfmin.vf.yaml @@ -9,7 +9,9 @@ name: vfmin.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 000100-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfmin.vv.yaml b/spec/std/isa/inst/V/vfmin.vv.yaml index 3c09634349..1b79279567 100644 --- a/spec/std/isa/inst/V/vfmin.vv.yaml +++ b/spec/std/isa/inst/V/vfmin.vv.yaml @@ -9,7 +9,9 @@ name: vfmin.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000100-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfmsac.vf.yaml b/spec/std/isa/inst/V/vfmsac.vf.yaml index 16e72ddbe0..b1b43e9956 100644 --- a/spec/std/isa/inst/V/vfmsac.vf.yaml +++ b/spec/std/isa/inst/V/vfmsac.vf.yaml @@ -9,7 +9,9 @@ name: vfmsac.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1, vs2, vm encoding: match: 101110-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfmsac.vv.yaml b/spec/std/isa/inst/V/vfmsac.vv.yaml index 3f5e29d004..95b4206e8b 100644 --- a/spec/std/isa/inst/V/vfmsac.vv.yaml +++ b/spec/std/isa/inst/V/vfmsac.vv.yaml @@ -9,7 +9,9 @@ name: vfmsac.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 101110-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfmsub.vf.yaml b/spec/std/isa/inst/V/vfmsub.vf.yaml index edcfb833b9..b550cf8f12 100644 --- a/spec/std/isa/inst/V/vfmsub.vf.yaml +++ b/spec/std/isa/inst/V/vfmsub.vf.yaml @@ -9,7 +9,9 @@ name: vfmsub.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1, vs2, vm encoding: match: 101010-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfmsub.vv.yaml b/spec/std/isa/inst/V/vfmsub.vv.yaml index 0242eeb3be..cb7b68595d 100644 --- a/spec/std/isa/inst/V/vfmsub.vv.yaml +++ b/spec/std/isa/inst/V/vfmsub.vv.yaml @@ -9,7 +9,9 @@ name: vfmsub.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 101010-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfmul.vf.yaml b/spec/std/isa/inst/V/vfmul.vf.yaml index 4cdb05fd40..89ef103290 100644 --- a/spec/std/isa/inst/V/vfmul.vf.yaml +++ b/spec/std/isa/inst/V/vfmul.vf.yaml @@ -9,7 +9,9 @@ name: vfmul.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 100100-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfmul.vv.yaml b/spec/std/isa/inst/V/vfmul.vv.yaml index 62325a422c..75c23f622f 100644 --- a/spec/std/isa/inst/V/vfmul.vv.yaml +++ b/spec/std/isa/inst/V/vfmul.vv.yaml @@ -9,7 +9,9 @@ name: vfmul.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100100-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfmv.f.s.yaml b/spec/std/isa/inst/V/vfmv.f.s.yaml index 574f2ee92f..a7210c9e02 100644 --- a/spec/std/isa/inst/V/vfmv.f.s.yaml +++ b/spec/std/isa/inst/V/vfmv.f.s.yaml @@ -9,7 +9,9 @@ name: vfmv.f.s long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: fd, vs2 encoding: match: 0100001-----00000001-----1010111 diff --git a/spec/std/isa/inst/V/vfmv.s.f.yaml b/spec/std/isa/inst/V/vfmv.s.f.yaml index ad204044b4..e5db5eec5e 100644 --- a/spec/std/isa/inst/V/vfmv.s.f.yaml +++ b/spec/std/isa/inst/V/vfmv.s.f.yaml @@ -9,7 +9,9 @@ name: vfmv.s.f long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1 encoding: match: 010000100000-----101-----1010111 diff --git a/spec/std/isa/inst/V/vfmv.v.f.yaml b/spec/std/isa/inst/V/vfmv.v.f.yaml index 810236a57b..32c24992a1 100644 --- a/spec/std/isa/inst/V/vfmv.v.f.yaml +++ b/spec/std/isa/inst/V/vfmv.v.f.yaml @@ -9,7 +9,9 @@ name: vfmv.v.f long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1 encoding: match: 010111100000-----101-----1010111 diff --git a/spec/std/isa/inst/V/vfncvt.f.f.w.yaml b/spec/std/isa/inst/V/vfncvt.f.f.w.yaml index 4247a2b97d..85befc7daf 100644 --- a/spec/std/isa/inst/V/vfncvt.f.f.w.yaml +++ b/spec/std/isa/inst/V/vfncvt.f.f.w.yaml @@ -9,7 +9,9 @@ name: vfncvt.f.f.w long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------10100001-----1010111 diff --git a/spec/std/isa/inst/V/vfncvt.f.x.w.yaml b/spec/std/isa/inst/V/vfncvt.f.x.w.yaml index aa7938e76b..f54ebc2e19 100644 --- a/spec/std/isa/inst/V/vfncvt.f.x.w.yaml +++ b/spec/std/isa/inst/V/vfncvt.f.x.w.yaml @@ -9,7 +9,9 @@ name: vfncvt.f.x.w long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------10011001-----1010111 diff --git a/spec/std/isa/inst/V/vfncvt.f.xu.w.yaml b/spec/std/isa/inst/V/vfncvt.f.xu.w.yaml index ed43a39e50..31e3b36a49 100644 --- a/spec/std/isa/inst/V/vfncvt.f.xu.w.yaml +++ b/spec/std/isa/inst/V/vfncvt.f.xu.w.yaml @@ -9,7 +9,9 @@ name: vfncvt.f.xu.w long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------10010001-----1010111 diff --git a/spec/std/isa/inst/V/vfncvt.rod.f.f.w.yaml b/spec/std/isa/inst/V/vfncvt.rod.f.f.w.yaml index 50e0c2b829..237751eff5 100644 --- a/spec/std/isa/inst/V/vfncvt.rod.f.f.w.yaml +++ b/spec/std/isa/inst/V/vfncvt.rod.f.f.w.yaml @@ -9,7 +9,9 @@ name: vfncvt.rod.f.f.w long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------10101001-----1010111 diff --git a/spec/std/isa/inst/V/vfncvt.rtz.x.f.w.yaml b/spec/std/isa/inst/V/vfncvt.rtz.x.f.w.yaml index 6e83163114..fb0ed7cde2 100644 --- a/spec/std/isa/inst/V/vfncvt.rtz.x.f.w.yaml +++ b/spec/std/isa/inst/V/vfncvt.rtz.x.f.w.yaml @@ -9,7 +9,9 @@ name: vfncvt.rtz.x.f.w long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------10111001-----1010111 diff --git a/spec/std/isa/inst/V/vfncvt.rtz.xu.f.w.yaml b/spec/std/isa/inst/V/vfncvt.rtz.xu.f.w.yaml index ed5ffcbcd0..1aa5a08ee8 100644 --- a/spec/std/isa/inst/V/vfncvt.rtz.xu.f.w.yaml +++ b/spec/std/isa/inst/V/vfncvt.rtz.xu.f.w.yaml @@ -9,7 +9,9 @@ name: vfncvt.rtz.xu.f.w long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------10110001-----1010111 diff --git a/spec/std/isa/inst/V/vfncvt.x.f.w.yaml b/spec/std/isa/inst/V/vfncvt.x.f.w.yaml index e9d219c804..cd4941b16e 100644 --- a/spec/std/isa/inst/V/vfncvt.x.f.w.yaml +++ b/spec/std/isa/inst/V/vfncvt.x.f.w.yaml @@ -9,7 +9,9 @@ name: vfncvt.x.f.w long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------10001001-----1010111 diff --git a/spec/std/isa/inst/V/vfncvt.xu.f.w.yaml b/spec/std/isa/inst/V/vfncvt.xu.f.w.yaml index 8143506cc2..447e81084e 100644 --- a/spec/std/isa/inst/V/vfncvt.xu.f.w.yaml +++ b/spec/std/isa/inst/V/vfncvt.xu.f.w.yaml @@ -9,7 +9,9 @@ name: vfncvt.xu.f.w long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------10000001-----1010111 diff --git a/spec/std/isa/inst/V/vfnmacc.vf.yaml b/spec/std/isa/inst/V/vfnmacc.vf.yaml index 25add8608c..9d280cf496 100644 --- a/spec/std/isa/inst/V/vfnmacc.vf.yaml +++ b/spec/std/isa/inst/V/vfnmacc.vf.yaml @@ -9,7 +9,9 @@ name: vfnmacc.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1, vs2, vm encoding: match: 101101-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfnmacc.vv.yaml b/spec/std/isa/inst/V/vfnmacc.vv.yaml index d94a722dfa..103f932ed9 100644 --- a/spec/std/isa/inst/V/vfnmacc.vv.yaml +++ b/spec/std/isa/inst/V/vfnmacc.vv.yaml @@ -9,7 +9,9 @@ name: vfnmacc.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 101101-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfnmadd.vf.yaml b/spec/std/isa/inst/V/vfnmadd.vf.yaml index 5cf88c321f..710840f647 100644 --- a/spec/std/isa/inst/V/vfnmadd.vf.yaml +++ b/spec/std/isa/inst/V/vfnmadd.vf.yaml @@ -9,7 +9,9 @@ name: vfnmadd.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1, vs2, vm encoding: match: 101001-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfnmadd.vv.yaml b/spec/std/isa/inst/V/vfnmadd.vv.yaml index 3f13fd1dfa..37ff3fc23c 100644 --- a/spec/std/isa/inst/V/vfnmadd.vv.yaml +++ b/spec/std/isa/inst/V/vfnmadd.vv.yaml @@ -9,7 +9,9 @@ name: vfnmadd.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 101001-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfnmsac.vf.yaml b/spec/std/isa/inst/V/vfnmsac.vf.yaml index ec7f89908f..c00b1e4f8e 100644 --- a/spec/std/isa/inst/V/vfnmsac.vf.yaml +++ b/spec/std/isa/inst/V/vfnmsac.vf.yaml @@ -9,7 +9,9 @@ name: vfnmsac.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1, vs2, vm encoding: match: 101111-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfnmsac.vv.yaml b/spec/std/isa/inst/V/vfnmsac.vv.yaml index 92beb9ceba..4a2dfbb2d1 100644 --- a/spec/std/isa/inst/V/vfnmsac.vv.yaml +++ b/spec/std/isa/inst/V/vfnmsac.vv.yaml @@ -9,7 +9,9 @@ name: vfnmsac.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 101111-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfnmsub.vf.yaml b/spec/std/isa/inst/V/vfnmsub.vf.yaml index 213b92b1db..8fbdc0c79b 100644 --- a/spec/std/isa/inst/V/vfnmsub.vf.yaml +++ b/spec/std/isa/inst/V/vfnmsub.vf.yaml @@ -9,7 +9,9 @@ name: vfnmsub.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1, vs2, vm encoding: match: 101011-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfnmsub.vv.yaml b/spec/std/isa/inst/V/vfnmsub.vv.yaml index 397144f47b..e62e646dff 100644 --- a/spec/std/isa/inst/V/vfnmsub.vv.yaml +++ b/spec/std/isa/inst/V/vfnmsub.vv.yaml @@ -9,7 +9,9 @@ name: vfnmsub.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 101011-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfrdiv.vf.yaml b/spec/std/isa/inst/V/vfrdiv.vf.yaml index 793ec47f23..f2b25fb192 100644 --- a/spec/std/isa/inst/V/vfrdiv.vf.yaml +++ b/spec/std/isa/inst/V/vfrdiv.vf.yaml @@ -9,7 +9,9 @@ name: vfrdiv.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 100001-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfrec7.v.yaml b/spec/std/isa/inst/V/vfrec7.v.yaml index bf3defe7e4..1c30246260 100644 --- a/spec/std/isa/inst/V/vfrec7.v.yaml +++ b/spec/std/isa/inst/V/vfrec7.v.yaml @@ -9,7 +9,9 @@ name: vfrec7.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010011------00101001-----1010111 diff --git a/spec/std/isa/inst/V/vfredmax.vs.yaml b/spec/std/isa/inst/V/vfredmax.vs.yaml index 2e497a75bb..4068453dd7 100644 --- a/spec/std/isa/inst/V/vfredmax.vs.yaml +++ b/spec/std/isa/inst/V/vfredmax.vs.yaml @@ -9,7 +9,9 @@ name: vfredmax.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000111-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfredmin.vs.yaml b/spec/std/isa/inst/V/vfredmin.vs.yaml index 07ef80a741..9c0669ed51 100644 --- a/spec/std/isa/inst/V/vfredmin.vs.yaml +++ b/spec/std/isa/inst/V/vfredmin.vs.yaml @@ -9,7 +9,9 @@ name: vfredmin.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000101-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfredosum.vs.yaml b/spec/std/isa/inst/V/vfredosum.vs.yaml index 3cb495c0cc..8809787772 100644 --- a/spec/std/isa/inst/V/vfredosum.vs.yaml +++ b/spec/std/isa/inst/V/vfredosum.vs.yaml @@ -9,7 +9,9 @@ name: vfredosum.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000011-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfredusum.vs.yaml b/spec/std/isa/inst/V/vfredusum.vs.yaml index ba2c84f008..b4c0ae0327 100644 --- a/spec/std/isa/inst/V/vfredusum.vs.yaml +++ b/spec/std/isa/inst/V/vfredusum.vs.yaml @@ -9,7 +9,9 @@ name: vfredusum.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000001-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfrsqrt7.v.yaml b/spec/std/isa/inst/V/vfrsqrt7.v.yaml index 9399305852..aa191fcaf1 100644 --- a/spec/std/isa/inst/V/vfrsqrt7.v.yaml +++ b/spec/std/isa/inst/V/vfrsqrt7.v.yaml @@ -9,7 +9,9 @@ name: vfrsqrt7.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010011------00100001-----1010111 diff --git a/spec/std/isa/inst/V/vfrsub.vf.yaml b/spec/std/isa/inst/V/vfrsub.vf.yaml index 262f02f012..509252e461 100644 --- a/spec/std/isa/inst/V/vfrsub.vf.yaml +++ b/spec/std/isa/inst/V/vfrsub.vf.yaml @@ -9,7 +9,9 @@ name: vfrsub.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 100111-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfsgnj.vf.yaml b/spec/std/isa/inst/V/vfsgnj.vf.yaml index 8747bcf138..33bf00cc60 100644 --- a/spec/std/isa/inst/V/vfsgnj.vf.yaml +++ b/spec/std/isa/inst/V/vfsgnj.vf.yaml @@ -9,7 +9,9 @@ name: vfsgnj.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 001000-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfsgnj.vv.yaml b/spec/std/isa/inst/V/vfsgnj.vv.yaml index e48aea4fe0..426f92bdf6 100644 --- a/spec/std/isa/inst/V/vfsgnj.vv.yaml +++ b/spec/std/isa/inst/V/vfsgnj.vv.yaml @@ -9,7 +9,9 @@ name: vfsgnj.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 001000-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfsgnjn.vf.yaml b/spec/std/isa/inst/V/vfsgnjn.vf.yaml index d34a69cba0..d3f767613e 100644 --- a/spec/std/isa/inst/V/vfsgnjn.vf.yaml +++ b/spec/std/isa/inst/V/vfsgnjn.vf.yaml @@ -9,7 +9,9 @@ name: vfsgnjn.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 001001-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfsgnjn.vv.yaml b/spec/std/isa/inst/V/vfsgnjn.vv.yaml index ecf47244da..179028b8c7 100644 --- a/spec/std/isa/inst/V/vfsgnjn.vv.yaml +++ b/spec/std/isa/inst/V/vfsgnjn.vv.yaml @@ -9,7 +9,9 @@ name: vfsgnjn.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 001001-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfsgnjx.vf.yaml b/spec/std/isa/inst/V/vfsgnjx.vf.yaml index e4f7b84817..46d4e75230 100644 --- a/spec/std/isa/inst/V/vfsgnjx.vf.yaml +++ b/spec/std/isa/inst/V/vfsgnjx.vf.yaml @@ -9,7 +9,9 @@ name: vfsgnjx.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 001010-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfsgnjx.vv.yaml b/spec/std/isa/inst/V/vfsgnjx.vv.yaml index 8c4f54b9e4..2b7221c1a9 100644 --- a/spec/std/isa/inst/V/vfsgnjx.vv.yaml +++ b/spec/std/isa/inst/V/vfsgnjx.vv.yaml @@ -9,7 +9,9 @@ name: vfsgnjx.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 001010-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfslide1down.vf.yaml b/spec/std/isa/inst/V/vfslide1down.vf.yaml index ba29a0c869..df621ea0ac 100644 --- a/spec/std/isa/inst/V/vfslide1down.vf.yaml +++ b/spec/std/isa/inst/V/vfslide1down.vf.yaml @@ -9,7 +9,9 @@ name: vfslide1down.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 001111-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfslide1up.vf.yaml b/spec/std/isa/inst/V/vfslide1up.vf.yaml index 99a2681adb..30f50fa3f7 100644 --- a/spec/std/isa/inst/V/vfslide1up.vf.yaml +++ b/spec/std/isa/inst/V/vfslide1up.vf.yaml @@ -9,7 +9,9 @@ name: vfslide1up.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 001110-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfsqrt.v.yaml b/spec/std/isa/inst/V/vfsqrt.v.yaml index 2428f9c348..b59940c488 100644 --- a/spec/std/isa/inst/V/vfsqrt.v.yaml +++ b/spec/std/isa/inst/V/vfsqrt.v.yaml @@ -9,7 +9,9 @@ name: vfsqrt.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010011------00000001-----1010111 diff --git a/spec/std/isa/inst/V/vfsub.vf.yaml b/spec/std/isa/inst/V/vfsub.vf.yaml index d6aa859f43..63d3bb902b 100644 --- a/spec/std/isa/inst/V/vfsub.vf.yaml +++ b/spec/std/isa/inst/V/vfsub.vf.yaml @@ -9,7 +9,9 @@ name: vfsub.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 000010-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfsub.vv.yaml b/spec/std/isa/inst/V/vfsub.vv.yaml index 2c0fb4335d..bf99fdf719 100644 --- a/spec/std/isa/inst/V/vfsub.vv.yaml +++ b/spec/std/isa/inst/V/vfsub.vv.yaml @@ -9,7 +9,9 @@ name: vfsub.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000010-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfwadd.vf.yaml b/spec/std/isa/inst/V/vfwadd.vf.yaml index 10aaee9ae2..89ec5b87a1 100644 --- a/spec/std/isa/inst/V/vfwadd.vf.yaml +++ b/spec/std/isa/inst/V/vfwadd.vf.yaml @@ -9,7 +9,9 @@ name: vfwadd.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 110000-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfwadd.vv.yaml b/spec/std/isa/inst/V/vfwadd.vv.yaml index a380aaa264..541ace2b3d 100644 --- a/spec/std/isa/inst/V/vfwadd.vv.yaml +++ b/spec/std/isa/inst/V/vfwadd.vv.yaml @@ -9,7 +9,9 @@ name: vfwadd.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110000-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfwadd.wf.yaml b/spec/std/isa/inst/V/vfwadd.wf.yaml index 762ec145a7..6e48e11625 100644 --- a/spec/std/isa/inst/V/vfwadd.wf.yaml +++ b/spec/std/isa/inst/V/vfwadd.wf.yaml @@ -9,7 +9,9 @@ name: vfwadd.wf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 110100-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfwadd.wv.yaml b/spec/std/isa/inst/V/vfwadd.wv.yaml index a539443520..5d37ce7d75 100644 --- a/spec/std/isa/inst/V/vfwadd.wv.yaml +++ b/spec/std/isa/inst/V/vfwadd.wv.yaml @@ -9,7 +9,9 @@ name: vfwadd.wv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110100-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfwcvt.f.f.v.yaml b/spec/std/isa/inst/V/vfwcvt.f.f.v.yaml index 301ec4f4c8..8934a4509b 100644 --- a/spec/std/isa/inst/V/vfwcvt.f.f.v.yaml +++ b/spec/std/isa/inst/V/vfwcvt.f.f.v.yaml @@ -9,7 +9,9 @@ name: vfwcvt.f.f.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------01100001-----1010111 diff --git a/spec/std/isa/inst/V/vfwcvt.f.x.v.yaml b/spec/std/isa/inst/V/vfwcvt.f.x.v.yaml index 2f6fafc54a..0435283628 100644 --- a/spec/std/isa/inst/V/vfwcvt.f.x.v.yaml +++ b/spec/std/isa/inst/V/vfwcvt.f.x.v.yaml @@ -9,7 +9,9 @@ name: vfwcvt.f.x.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------01011001-----1010111 diff --git a/spec/std/isa/inst/V/vfwcvt.f.xu.v.yaml b/spec/std/isa/inst/V/vfwcvt.f.xu.v.yaml index b17acdb1e9..8972e68888 100644 --- a/spec/std/isa/inst/V/vfwcvt.f.xu.v.yaml +++ b/spec/std/isa/inst/V/vfwcvt.f.xu.v.yaml @@ -9,7 +9,9 @@ name: vfwcvt.f.xu.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------01010001-----1010111 diff --git a/spec/std/isa/inst/V/vfwcvt.rtz.x.f.v.yaml b/spec/std/isa/inst/V/vfwcvt.rtz.x.f.v.yaml index da3a35c0d2..1698869757 100644 --- a/spec/std/isa/inst/V/vfwcvt.rtz.x.f.v.yaml +++ b/spec/std/isa/inst/V/vfwcvt.rtz.x.f.v.yaml @@ -9,7 +9,9 @@ name: vfwcvt.rtz.x.f.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------01111001-----1010111 diff --git a/spec/std/isa/inst/V/vfwcvt.rtz.xu.f.v.yaml b/spec/std/isa/inst/V/vfwcvt.rtz.xu.f.v.yaml index 22058a42d9..d58c0a6c23 100644 --- a/spec/std/isa/inst/V/vfwcvt.rtz.xu.f.v.yaml +++ b/spec/std/isa/inst/V/vfwcvt.rtz.xu.f.v.yaml @@ -9,7 +9,9 @@ name: vfwcvt.rtz.xu.f.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------01110001-----1010111 diff --git a/spec/std/isa/inst/V/vfwcvt.x.f.v.yaml b/spec/std/isa/inst/V/vfwcvt.x.f.v.yaml index 87531f2ca4..a25ca7d977 100644 --- a/spec/std/isa/inst/V/vfwcvt.x.f.v.yaml +++ b/spec/std/isa/inst/V/vfwcvt.x.f.v.yaml @@ -9,7 +9,9 @@ name: vfwcvt.x.f.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------01001001-----1010111 diff --git a/spec/std/isa/inst/V/vfwcvt.xu.f.v.yaml b/spec/std/isa/inst/V/vfwcvt.xu.f.v.yaml index 74f0d020ce..edb8a94fe2 100644 --- a/spec/std/isa/inst/V/vfwcvt.xu.f.v.yaml +++ b/spec/std/isa/inst/V/vfwcvt.xu.f.v.yaml @@ -9,7 +9,9 @@ name: vfwcvt.xu.f.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------01000001-----1010111 diff --git a/spec/std/isa/inst/V/vfwmacc.vf.yaml b/spec/std/isa/inst/V/vfwmacc.vf.yaml index 4d325217c9..d30c8551d6 100644 --- a/spec/std/isa/inst/V/vfwmacc.vf.yaml +++ b/spec/std/isa/inst/V/vfwmacc.vf.yaml @@ -9,7 +9,9 @@ name: vfwmacc.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1, vs2, vm encoding: match: 111100-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfwmacc.vv.yaml b/spec/std/isa/inst/V/vfwmacc.vv.yaml index bc3c053d71..092beadc15 100644 --- a/spec/std/isa/inst/V/vfwmacc.vv.yaml +++ b/spec/std/isa/inst/V/vfwmacc.vv.yaml @@ -9,7 +9,9 @@ name: vfwmacc.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 111100-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfwmsac.vf.yaml b/spec/std/isa/inst/V/vfwmsac.vf.yaml index 40410274f2..4f0a47eb12 100644 --- a/spec/std/isa/inst/V/vfwmsac.vf.yaml +++ b/spec/std/isa/inst/V/vfwmsac.vf.yaml @@ -9,7 +9,9 @@ name: vfwmsac.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1, vs2, vm encoding: match: 111110-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfwmsac.vv.yaml b/spec/std/isa/inst/V/vfwmsac.vv.yaml index cfc778e6a8..c2eb04d535 100644 --- a/spec/std/isa/inst/V/vfwmsac.vv.yaml +++ b/spec/std/isa/inst/V/vfwmsac.vv.yaml @@ -9,7 +9,9 @@ name: vfwmsac.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 111110-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfwmul.vf.yaml b/spec/std/isa/inst/V/vfwmul.vf.yaml index bd41c8a64a..c562458c34 100644 --- a/spec/std/isa/inst/V/vfwmul.vf.yaml +++ b/spec/std/isa/inst/V/vfwmul.vf.yaml @@ -9,7 +9,9 @@ name: vfwmul.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 111000-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfwmul.vv.yaml b/spec/std/isa/inst/V/vfwmul.vv.yaml index 7a98a9d343..6f96075a58 100644 --- a/spec/std/isa/inst/V/vfwmul.vv.yaml +++ b/spec/std/isa/inst/V/vfwmul.vv.yaml @@ -9,7 +9,9 @@ name: vfwmul.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 111000-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfwnmacc.vf.yaml b/spec/std/isa/inst/V/vfwnmacc.vf.yaml index d39bec31ca..dd3e028871 100644 --- a/spec/std/isa/inst/V/vfwnmacc.vf.yaml +++ b/spec/std/isa/inst/V/vfwnmacc.vf.yaml @@ -9,7 +9,9 @@ name: vfwnmacc.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1, vs2, vm encoding: match: 111101-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfwnmacc.vv.yaml b/spec/std/isa/inst/V/vfwnmacc.vv.yaml index d85a95eda5..e2113f82f4 100644 --- a/spec/std/isa/inst/V/vfwnmacc.vv.yaml +++ b/spec/std/isa/inst/V/vfwnmacc.vv.yaml @@ -9,7 +9,9 @@ name: vfwnmacc.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 111101-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfwnmsac.vf.yaml b/spec/std/isa/inst/V/vfwnmsac.vf.yaml index c9195d8fab..707e5b499b 100644 --- a/spec/std/isa/inst/V/vfwnmsac.vf.yaml +++ b/spec/std/isa/inst/V/vfwnmsac.vf.yaml @@ -9,7 +9,9 @@ name: vfwnmsac.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, fs1, vs2, vm encoding: match: 111111-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfwnmsac.vv.yaml b/spec/std/isa/inst/V/vfwnmsac.vv.yaml index df7b09584d..713bca589a 100644 --- a/spec/std/isa/inst/V/vfwnmsac.vv.yaml +++ b/spec/std/isa/inst/V/vfwnmsac.vv.yaml @@ -9,7 +9,9 @@ name: vfwnmsac.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 111111-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfwredosum.vs.yaml b/spec/std/isa/inst/V/vfwredosum.vs.yaml index 857b647430..0a7423d929 100644 --- a/spec/std/isa/inst/V/vfwredosum.vs.yaml +++ b/spec/std/isa/inst/V/vfwredosum.vs.yaml @@ -9,7 +9,9 @@ name: vfwredosum.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110011-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfwredusum.vs.yaml b/spec/std/isa/inst/V/vfwredusum.vs.yaml index ea2c365cd6..db22c74c37 100644 --- a/spec/std/isa/inst/V/vfwredusum.vs.yaml +++ b/spec/std/isa/inst/V/vfwredusum.vs.yaml @@ -9,7 +9,9 @@ name: vfwredusum.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110001-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfwsub.vf.yaml b/spec/std/isa/inst/V/vfwsub.vf.yaml index 20f16937d9..e394f140a9 100644 --- a/spec/std/isa/inst/V/vfwsub.vf.yaml +++ b/spec/std/isa/inst/V/vfwsub.vf.yaml @@ -9,7 +9,9 @@ name: vfwsub.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 110010-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfwsub.vv.yaml b/spec/std/isa/inst/V/vfwsub.vv.yaml index c0afbabf4d..d3e353632a 100644 --- a/spec/std/isa/inst/V/vfwsub.vv.yaml +++ b/spec/std/isa/inst/V/vfwsub.vv.yaml @@ -9,7 +9,9 @@ name: vfwsub.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110010-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vfwsub.wf.yaml b/spec/std/isa/inst/V/vfwsub.wf.yaml index cb10a1eb1f..82f686b879 100644 --- a/spec/std/isa/inst/V/vfwsub.wf.yaml +++ b/spec/std/isa/inst/V/vfwsub.wf.yaml @@ -9,7 +9,9 @@ name: vfwsub.wf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 110110-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vfwsub.wv.yaml b/spec/std/isa/inst/V/vfwsub.wv.yaml index b91786c941..bbb638054e 100644 --- a/spec/std/isa/inst/V/vfwsub.wv.yaml +++ b/spec/std/isa/inst/V/vfwsub.wv.yaml @@ -9,7 +9,9 @@ name: vfwsub.wv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110110-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vid.v.yaml b/spec/std/isa/inst/V/vid.v.yaml index 8abdd1b3aa..42f606f621 100644 --- a/spec/std/isa/inst/V/vid.v.yaml +++ b/spec/std/isa/inst/V/vid.v.yaml @@ -9,7 +9,9 @@ name: vid.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vm encoding: match: 010100-0000010001010-----1010111 diff --git a/spec/std/isa/inst/V/viota.m.yaml b/spec/std/isa/inst/V/viota.m.yaml index 3969426a3e..69695e0b49 100644 --- a/spec/std/isa/inst/V/viota.m.yaml +++ b/spec/std/isa/inst/V/viota.m.yaml @@ -9,7 +9,9 @@ name: viota.m long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010100------10000010-----1010111 diff --git a/spec/std/isa/inst/V/vl1re16.v.yaml b/spec/std/isa/inst/V/vl1re16.v.yaml index 81140639cc..96d00cc215 100644 --- a/spec/std/isa/inst/V/vl1re16.v.yaml +++ b/spec/std/isa/inst/V/vl1re16.v.yaml @@ -9,7 +9,9 @@ name: vl1re16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 000000101000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vl1re32.v.yaml b/spec/std/isa/inst/V/vl1re32.v.yaml index bef1377e53..fc7b160eed 100644 --- a/spec/std/isa/inst/V/vl1re32.v.yaml +++ b/spec/std/isa/inst/V/vl1re32.v.yaml @@ -9,7 +9,9 @@ name: vl1re32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 000000101000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vl1re64.v.yaml b/spec/std/isa/inst/V/vl1re64.v.yaml index fb666fe53b..21761558f6 100644 --- a/spec/std/isa/inst/V/vl1re64.v.yaml +++ b/spec/std/isa/inst/V/vl1re64.v.yaml @@ -9,7 +9,9 @@ name: vl1re64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 000000101000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vl1re8.v.yaml b/spec/std/isa/inst/V/vl1re8.v.yaml index 6d89bf8a06..a2286db70d 100644 --- a/spec/std/isa/inst/V/vl1re8.v.yaml +++ b/spec/std/isa/inst/V/vl1re8.v.yaml @@ -9,7 +9,9 @@ name: vl1re8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 000000101000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vl2re16.v.yaml b/spec/std/isa/inst/V/vl2re16.v.yaml index fd1f04a2dc..0e719f3f5b 100644 --- a/spec/std/isa/inst/V/vl2re16.v.yaml +++ b/spec/std/isa/inst/V/vl2re16.v.yaml @@ -9,7 +9,9 @@ name: vl2re16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 001000101000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vl2re32.v.yaml b/spec/std/isa/inst/V/vl2re32.v.yaml index 83aa9b31de..c20729dd8f 100644 --- a/spec/std/isa/inst/V/vl2re32.v.yaml +++ b/spec/std/isa/inst/V/vl2re32.v.yaml @@ -9,7 +9,9 @@ name: vl2re32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 001000101000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vl2re64.v.yaml b/spec/std/isa/inst/V/vl2re64.v.yaml index 93fb7a9b18..6b78573362 100644 --- a/spec/std/isa/inst/V/vl2re64.v.yaml +++ b/spec/std/isa/inst/V/vl2re64.v.yaml @@ -9,7 +9,9 @@ name: vl2re64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 001000101000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vl2re8.v.yaml b/spec/std/isa/inst/V/vl2re8.v.yaml index 74b0f5b068..0131d3a374 100644 --- a/spec/std/isa/inst/V/vl2re8.v.yaml +++ b/spec/std/isa/inst/V/vl2re8.v.yaml @@ -9,7 +9,9 @@ name: vl2re8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 001000101000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vl4re16.v.yaml b/spec/std/isa/inst/V/vl4re16.v.yaml index 92923745f0..89dec8cf6d 100644 --- a/spec/std/isa/inst/V/vl4re16.v.yaml +++ b/spec/std/isa/inst/V/vl4re16.v.yaml @@ -9,7 +9,9 @@ name: vl4re16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 011000101000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vl4re32.v.yaml b/spec/std/isa/inst/V/vl4re32.v.yaml index a1e692ed88..d9492ec88b 100644 --- a/spec/std/isa/inst/V/vl4re32.v.yaml +++ b/spec/std/isa/inst/V/vl4re32.v.yaml @@ -9,7 +9,9 @@ name: vl4re32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 011000101000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vl4re64.v.yaml b/spec/std/isa/inst/V/vl4re64.v.yaml index 784659ec1c..e3bc0b8011 100644 --- a/spec/std/isa/inst/V/vl4re64.v.yaml +++ b/spec/std/isa/inst/V/vl4re64.v.yaml @@ -9,7 +9,9 @@ name: vl4re64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 011000101000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vl4re8.v.yaml b/spec/std/isa/inst/V/vl4re8.v.yaml index 4f72cfaff9..cf16461148 100644 --- a/spec/std/isa/inst/V/vl4re8.v.yaml +++ b/spec/std/isa/inst/V/vl4re8.v.yaml @@ -9,7 +9,9 @@ name: vl4re8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 011000101000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vl8re16.v.yaml b/spec/std/isa/inst/V/vl8re16.v.yaml index 18e1521013..fe7e89c2f1 100644 --- a/spec/std/isa/inst/V/vl8re16.v.yaml +++ b/spec/std/isa/inst/V/vl8re16.v.yaml @@ -9,7 +9,9 @@ name: vl8re16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 111000101000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vl8re32.v.yaml b/spec/std/isa/inst/V/vl8re32.v.yaml index d6bf8d9aa6..414a4125f2 100644 --- a/spec/std/isa/inst/V/vl8re32.v.yaml +++ b/spec/std/isa/inst/V/vl8re32.v.yaml @@ -9,7 +9,9 @@ name: vl8re32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 111000101000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vl8re64.v.yaml b/spec/std/isa/inst/V/vl8re64.v.yaml index 3374127219..bd469a8682 100644 --- a/spec/std/isa/inst/V/vl8re64.v.yaml +++ b/spec/std/isa/inst/V/vl8re64.v.yaml @@ -9,7 +9,9 @@ name: vl8re64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 111000101000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vl8re8.v.yaml b/spec/std/isa/inst/V/vl8re8.v.yaml index 5a4c9b4bea..ba6e87d24b 100644 --- a/spec/std/isa/inst/V/vl8re8.v.yaml +++ b/spec/std/isa/inst/V/vl8re8.v.yaml @@ -9,7 +9,9 @@ name: vl8re8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 111000101000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vle16.v.yaml b/spec/std/isa/inst/V/vle16.v.yaml index 73b3c638a5..029611d50a 100644 --- a/spec/std/isa/inst/V/vle16.v.yaml +++ b/spec/std/isa/inst/V/vle16.v.yaml @@ -9,7 +9,9 @@ name: vle16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 000000-00000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vle16ff.v.yaml b/spec/std/isa/inst/V/vle16ff.v.yaml index fb07614ece..8b5c20b2cf 100644 --- a/spec/std/isa/inst/V/vle16ff.v.yaml +++ b/spec/std/isa/inst/V/vle16ff.v.yaml @@ -9,7 +9,9 @@ name: vle16ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 000000-10000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vle32.v.yaml b/spec/std/isa/inst/V/vle32.v.yaml index 9ad7dff873..42e6134521 100644 --- a/spec/std/isa/inst/V/vle32.v.yaml +++ b/spec/std/isa/inst/V/vle32.v.yaml @@ -9,7 +9,9 @@ name: vle32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 000000-00000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vle32ff.v.yaml b/spec/std/isa/inst/V/vle32ff.v.yaml index e58d7fc5c3..5a64b83da5 100644 --- a/spec/std/isa/inst/V/vle32ff.v.yaml +++ b/spec/std/isa/inst/V/vle32ff.v.yaml @@ -9,7 +9,9 @@ name: vle32ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 000000-10000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vle64.v.yaml b/spec/std/isa/inst/V/vle64.v.yaml index 4a8aa2c694..7349a3c493 100644 --- a/spec/std/isa/inst/V/vle64.v.yaml +++ b/spec/std/isa/inst/V/vle64.v.yaml @@ -9,7 +9,9 @@ name: vle64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 000000-00000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vle64ff.v.yaml b/spec/std/isa/inst/V/vle64ff.v.yaml index 8d849aafd6..37ba1b21a2 100644 --- a/spec/std/isa/inst/V/vle64ff.v.yaml +++ b/spec/std/isa/inst/V/vle64ff.v.yaml @@ -9,7 +9,9 @@ name: vle64ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 000000-10000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vle8.v.yaml b/spec/std/isa/inst/V/vle8.v.yaml index 4141b16bd1..c893816658 100644 --- a/spec/std/isa/inst/V/vle8.v.yaml +++ b/spec/std/isa/inst/V/vle8.v.yaml @@ -9,7 +9,9 @@ name: vle8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 000000-00000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vle8ff.v.yaml b/spec/std/isa/inst/V/vle8ff.v.yaml index f823df509f..a4bf19a70d 100644 --- a/spec/std/isa/inst/V/vle8ff.v.yaml +++ b/spec/std/isa/inst/V/vle8ff.v.yaml @@ -9,7 +9,9 @@ name: vle8ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 000000-10000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlm.v.yaml b/spec/std/isa/inst/V/vlm.v.yaml index 3a60ca5cf1..a99e396c77 100644 --- a/spec/std/isa/inst/V/vlm.v.yaml +++ b/spec/std/isa/inst/V/vlm.v.yaml @@ -9,7 +9,9 @@ name: vlm.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1) encoding: match: 000000101011-----000-----0000111 diff --git a/spec/std/isa/inst/V/vloxei16.v.yaml b/spec/std/isa/inst/V/vloxei16.v.yaml index 264191d98c..0a3593ccce 100644 --- a/spec/std/isa/inst/V/vloxei16.v.yaml +++ b/spec/std/isa/inst/V/vloxei16.v.yaml @@ -9,7 +9,9 @@ name: vloxei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 000011-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vloxei32.v.yaml b/spec/std/isa/inst/V/vloxei32.v.yaml index 57b4e076d1..c01b4e521c 100644 --- a/spec/std/isa/inst/V/vloxei32.v.yaml +++ b/spec/std/isa/inst/V/vloxei32.v.yaml @@ -9,7 +9,9 @@ name: vloxei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 000011-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vloxei64.v.yaml b/spec/std/isa/inst/V/vloxei64.v.yaml index 33bae70cd1..d13d987ccb 100644 --- a/spec/std/isa/inst/V/vloxei64.v.yaml +++ b/spec/std/isa/inst/V/vloxei64.v.yaml @@ -9,7 +9,9 @@ name: vloxei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 000011-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vloxei8.v.yaml b/spec/std/isa/inst/V/vloxei8.v.yaml index 4ce618ea29..3f0f1a8f2d 100644 --- a/spec/std/isa/inst/V/vloxei8.v.yaml +++ b/spec/std/isa/inst/V/vloxei8.v.yaml @@ -9,7 +9,9 @@ name: vloxei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 000011-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg2ei16.v.yaml b/spec/std/isa/inst/V/vloxseg2ei16.v.yaml index c625ccc390..2b476300fa 100644 --- a/spec/std/isa/inst/V/vloxseg2ei16.v.yaml +++ b/spec/std/isa/inst/V/vloxseg2ei16.v.yaml @@ -9,7 +9,9 @@ name: vloxseg2ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 001011-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg2ei32.v.yaml b/spec/std/isa/inst/V/vloxseg2ei32.v.yaml index 50eb1a65f0..6c71fd72b7 100644 --- a/spec/std/isa/inst/V/vloxseg2ei32.v.yaml +++ b/spec/std/isa/inst/V/vloxseg2ei32.v.yaml @@ -9,7 +9,9 @@ name: vloxseg2ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 001011-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg2ei64.v.yaml b/spec/std/isa/inst/V/vloxseg2ei64.v.yaml index ce0c8dfc24..d9d229d601 100644 --- a/spec/std/isa/inst/V/vloxseg2ei64.v.yaml +++ b/spec/std/isa/inst/V/vloxseg2ei64.v.yaml @@ -9,7 +9,9 @@ name: vloxseg2ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 001011-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg2ei8.v.yaml b/spec/std/isa/inst/V/vloxseg2ei8.v.yaml index c08a221652..785ddffedd 100644 --- a/spec/std/isa/inst/V/vloxseg2ei8.v.yaml +++ b/spec/std/isa/inst/V/vloxseg2ei8.v.yaml @@ -9,7 +9,9 @@ name: vloxseg2ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 001011-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg3ei16.v.yaml b/spec/std/isa/inst/V/vloxseg3ei16.v.yaml index 1aa8f12540..ec919edb67 100644 --- a/spec/std/isa/inst/V/vloxseg3ei16.v.yaml +++ b/spec/std/isa/inst/V/vloxseg3ei16.v.yaml @@ -9,7 +9,9 @@ name: vloxseg3ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 010011-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg3ei32.v.yaml b/spec/std/isa/inst/V/vloxseg3ei32.v.yaml index c9eda816f6..038291a873 100644 --- a/spec/std/isa/inst/V/vloxseg3ei32.v.yaml +++ b/spec/std/isa/inst/V/vloxseg3ei32.v.yaml @@ -9,7 +9,9 @@ name: vloxseg3ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 010011-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg3ei64.v.yaml b/spec/std/isa/inst/V/vloxseg3ei64.v.yaml index 3594621e7e..d3074d8b55 100644 --- a/spec/std/isa/inst/V/vloxseg3ei64.v.yaml +++ b/spec/std/isa/inst/V/vloxseg3ei64.v.yaml @@ -9,7 +9,9 @@ name: vloxseg3ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 010011-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg3ei8.v.yaml b/spec/std/isa/inst/V/vloxseg3ei8.v.yaml index c0dd57639f..5d0e262fc7 100644 --- a/spec/std/isa/inst/V/vloxseg3ei8.v.yaml +++ b/spec/std/isa/inst/V/vloxseg3ei8.v.yaml @@ -9,7 +9,9 @@ name: vloxseg3ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 010011-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg4ei16.v.yaml b/spec/std/isa/inst/V/vloxseg4ei16.v.yaml index a6ba352e9f..e8377ae567 100644 --- a/spec/std/isa/inst/V/vloxseg4ei16.v.yaml +++ b/spec/std/isa/inst/V/vloxseg4ei16.v.yaml @@ -9,7 +9,9 @@ name: vloxseg4ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 011011-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg4ei32.v.yaml b/spec/std/isa/inst/V/vloxseg4ei32.v.yaml index cb56e44e7b..d2b782c1dc 100644 --- a/spec/std/isa/inst/V/vloxseg4ei32.v.yaml +++ b/spec/std/isa/inst/V/vloxseg4ei32.v.yaml @@ -9,7 +9,9 @@ name: vloxseg4ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 011011-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg4ei64.v.yaml b/spec/std/isa/inst/V/vloxseg4ei64.v.yaml index cedbcdf2f9..99d0571e84 100644 --- a/spec/std/isa/inst/V/vloxseg4ei64.v.yaml +++ b/spec/std/isa/inst/V/vloxseg4ei64.v.yaml @@ -9,7 +9,9 @@ name: vloxseg4ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 011011-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg4ei8.v.yaml b/spec/std/isa/inst/V/vloxseg4ei8.v.yaml index 59fe340cf2..c4f6f6b976 100644 --- a/spec/std/isa/inst/V/vloxseg4ei8.v.yaml +++ b/spec/std/isa/inst/V/vloxseg4ei8.v.yaml @@ -9,7 +9,9 @@ name: vloxseg4ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 011011-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg5ei16.v.yaml b/spec/std/isa/inst/V/vloxseg5ei16.v.yaml index 63bc940501..7710f10af4 100644 --- a/spec/std/isa/inst/V/vloxseg5ei16.v.yaml +++ b/spec/std/isa/inst/V/vloxseg5ei16.v.yaml @@ -9,7 +9,9 @@ name: vloxseg5ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 100011-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg5ei32.v.yaml b/spec/std/isa/inst/V/vloxseg5ei32.v.yaml index 15f3a3f24b..3e328187c9 100644 --- a/spec/std/isa/inst/V/vloxseg5ei32.v.yaml +++ b/spec/std/isa/inst/V/vloxseg5ei32.v.yaml @@ -9,7 +9,9 @@ name: vloxseg5ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 100011-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg5ei64.v.yaml b/spec/std/isa/inst/V/vloxseg5ei64.v.yaml index a894caf884..ffbe556538 100644 --- a/spec/std/isa/inst/V/vloxseg5ei64.v.yaml +++ b/spec/std/isa/inst/V/vloxseg5ei64.v.yaml @@ -9,7 +9,9 @@ name: vloxseg5ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 100011-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg5ei8.v.yaml b/spec/std/isa/inst/V/vloxseg5ei8.v.yaml index 69a2776af5..3e9b10c746 100644 --- a/spec/std/isa/inst/V/vloxseg5ei8.v.yaml +++ b/spec/std/isa/inst/V/vloxseg5ei8.v.yaml @@ -9,7 +9,9 @@ name: vloxseg5ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 100011-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg6ei16.v.yaml b/spec/std/isa/inst/V/vloxseg6ei16.v.yaml index da35ac552a..47e0629bac 100644 --- a/spec/std/isa/inst/V/vloxseg6ei16.v.yaml +++ b/spec/std/isa/inst/V/vloxseg6ei16.v.yaml @@ -9,7 +9,9 @@ name: vloxseg6ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 101011-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg6ei32.v.yaml b/spec/std/isa/inst/V/vloxseg6ei32.v.yaml index ea8503523d..bea17c5715 100644 --- a/spec/std/isa/inst/V/vloxseg6ei32.v.yaml +++ b/spec/std/isa/inst/V/vloxseg6ei32.v.yaml @@ -9,7 +9,9 @@ name: vloxseg6ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 101011-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg6ei64.v.yaml b/spec/std/isa/inst/V/vloxseg6ei64.v.yaml index 58524cc16e..961f8cb039 100644 --- a/spec/std/isa/inst/V/vloxseg6ei64.v.yaml +++ b/spec/std/isa/inst/V/vloxseg6ei64.v.yaml @@ -9,7 +9,9 @@ name: vloxseg6ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 101011-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg6ei8.v.yaml b/spec/std/isa/inst/V/vloxseg6ei8.v.yaml index 25c9301f85..d763a68ebb 100644 --- a/spec/std/isa/inst/V/vloxseg6ei8.v.yaml +++ b/spec/std/isa/inst/V/vloxseg6ei8.v.yaml @@ -9,7 +9,9 @@ name: vloxseg6ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 101011-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg7ei16.v.yaml b/spec/std/isa/inst/V/vloxseg7ei16.v.yaml index 69ee3046c7..30b5ef9889 100644 --- a/spec/std/isa/inst/V/vloxseg7ei16.v.yaml +++ b/spec/std/isa/inst/V/vloxseg7ei16.v.yaml @@ -9,7 +9,9 @@ name: vloxseg7ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 110011-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg7ei32.v.yaml b/spec/std/isa/inst/V/vloxseg7ei32.v.yaml index 1bb1354f5b..8c6dc75379 100644 --- a/spec/std/isa/inst/V/vloxseg7ei32.v.yaml +++ b/spec/std/isa/inst/V/vloxseg7ei32.v.yaml @@ -9,7 +9,9 @@ name: vloxseg7ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 110011-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg7ei64.v.yaml b/spec/std/isa/inst/V/vloxseg7ei64.v.yaml index fd6cdfdca8..e7cc7552dc 100644 --- a/spec/std/isa/inst/V/vloxseg7ei64.v.yaml +++ b/spec/std/isa/inst/V/vloxseg7ei64.v.yaml @@ -9,7 +9,9 @@ name: vloxseg7ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 110011-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg7ei8.v.yaml b/spec/std/isa/inst/V/vloxseg7ei8.v.yaml index 7cb3cbea19..44a74dadca 100644 --- a/spec/std/isa/inst/V/vloxseg7ei8.v.yaml +++ b/spec/std/isa/inst/V/vloxseg7ei8.v.yaml @@ -9,7 +9,9 @@ name: vloxseg7ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 110011-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg8ei16.v.yaml b/spec/std/isa/inst/V/vloxseg8ei16.v.yaml index 9325622f3d..2789120473 100644 --- a/spec/std/isa/inst/V/vloxseg8ei16.v.yaml +++ b/spec/std/isa/inst/V/vloxseg8ei16.v.yaml @@ -9,7 +9,9 @@ name: vloxseg8ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 111011-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg8ei32.v.yaml b/spec/std/isa/inst/V/vloxseg8ei32.v.yaml index cabc87b21d..0c03d65927 100644 --- a/spec/std/isa/inst/V/vloxseg8ei32.v.yaml +++ b/spec/std/isa/inst/V/vloxseg8ei32.v.yaml @@ -9,7 +9,9 @@ name: vloxseg8ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 111011-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg8ei64.v.yaml b/spec/std/isa/inst/V/vloxseg8ei64.v.yaml index 97dfe30b55..2edaee6c5a 100644 --- a/spec/std/isa/inst/V/vloxseg8ei64.v.yaml +++ b/spec/std/isa/inst/V/vloxseg8ei64.v.yaml @@ -9,7 +9,9 @@ name: vloxseg8ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 111011-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vloxseg8ei8.v.yaml b/spec/std/isa/inst/V/vloxseg8ei8.v.yaml index d28e017679..3bbe4fdec9 100644 --- a/spec/std/isa/inst/V/vloxseg8ei8.v.yaml +++ b/spec/std/isa/inst/V/vloxseg8ei8.v.yaml @@ -9,7 +9,9 @@ name: vloxseg8ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 111011-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vlse16.v.yaml b/spec/std/isa/inst/V/vlse16.v.yaml index 2b7452a5f8..bf356868cf 100644 --- a/spec/std/isa/inst/V/vlse16.v.yaml +++ b/spec/std/isa/inst/V/vlse16.v.yaml @@ -9,7 +9,9 @@ name: vlse16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 000010-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vlse32.v.yaml b/spec/std/isa/inst/V/vlse32.v.yaml index cb034c40dc..aae67946a0 100644 --- a/spec/std/isa/inst/V/vlse32.v.yaml +++ b/spec/std/isa/inst/V/vlse32.v.yaml @@ -9,7 +9,9 @@ name: vlse32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 000010-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vlse64.v.yaml b/spec/std/isa/inst/V/vlse64.v.yaml index 8ac9368800..5fe71ba7d3 100644 --- a/spec/std/isa/inst/V/vlse64.v.yaml +++ b/spec/std/isa/inst/V/vlse64.v.yaml @@ -9,7 +9,9 @@ name: vlse64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 000010-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vlse8.v.yaml b/spec/std/isa/inst/V/vlse8.v.yaml index 20abd30f0f..7af170ffd5 100644 --- a/spec/std/isa/inst/V/vlse8.v.yaml +++ b/spec/std/isa/inst/V/vlse8.v.yaml @@ -9,7 +9,9 @@ name: vlse8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 000010-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg2e16.v.yaml b/spec/std/isa/inst/V/vlseg2e16.v.yaml index 7c3097c3d1..d310b49376 100644 --- a/spec/std/isa/inst/V/vlseg2e16.v.yaml +++ b/spec/std/isa/inst/V/vlseg2e16.v.yaml @@ -9,7 +9,9 @@ name: vlseg2e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 001000-00000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg2e16ff.v.yaml b/spec/std/isa/inst/V/vlseg2e16ff.v.yaml index ff6fe8f644..0657f7a228 100644 --- a/spec/std/isa/inst/V/vlseg2e16ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg2e16ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg2e16ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 001000-10000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg2e32.v.yaml b/spec/std/isa/inst/V/vlseg2e32.v.yaml index ffff64e4d9..cfe75093e9 100644 --- a/spec/std/isa/inst/V/vlseg2e32.v.yaml +++ b/spec/std/isa/inst/V/vlseg2e32.v.yaml @@ -9,7 +9,9 @@ name: vlseg2e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 001000-00000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg2e32ff.v.yaml b/spec/std/isa/inst/V/vlseg2e32ff.v.yaml index ba0b7a5a92..2cbb52f2fe 100644 --- a/spec/std/isa/inst/V/vlseg2e32ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg2e32ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg2e32ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 001000-10000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg2e64.v.yaml b/spec/std/isa/inst/V/vlseg2e64.v.yaml index f64de99e15..1e5745961a 100644 --- a/spec/std/isa/inst/V/vlseg2e64.v.yaml +++ b/spec/std/isa/inst/V/vlseg2e64.v.yaml @@ -9,7 +9,9 @@ name: vlseg2e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 001000-00000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg2e64ff.v.yaml b/spec/std/isa/inst/V/vlseg2e64ff.v.yaml index 7c7a9b10c5..aa80544555 100644 --- a/spec/std/isa/inst/V/vlseg2e64ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg2e64ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg2e64ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 001000-10000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg2e8.v.yaml b/spec/std/isa/inst/V/vlseg2e8.v.yaml index 66c1dc832a..33eee00ae9 100644 --- a/spec/std/isa/inst/V/vlseg2e8.v.yaml +++ b/spec/std/isa/inst/V/vlseg2e8.v.yaml @@ -9,7 +9,9 @@ name: vlseg2e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 001000-00000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg2e8ff.v.yaml b/spec/std/isa/inst/V/vlseg2e8ff.v.yaml index 3795ba87cd..69c2621f84 100644 --- a/spec/std/isa/inst/V/vlseg2e8ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg2e8ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg2e8ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 001000-10000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg3e16.v.yaml b/spec/std/isa/inst/V/vlseg3e16.v.yaml index ec9cb33f63..60818aa0b4 100644 --- a/spec/std/isa/inst/V/vlseg3e16.v.yaml +++ b/spec/std/isa/inst/V/vlseg3e16.v.yaml @@ -9,7 +9,9 @@ name: vlseg3e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 010000-00000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg3e16ff.v.yaml b/spec/std/isa/inst/V/vlseg3e16ff.v.yaml index 803f566f54..381f5e11c6 100644 --- a/spec/std/isa/inst/V/vlseg3e16ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg3e16ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg3e16ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 010000-10000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg3e32.v.yaml b/spec/std/isa/inst/V/vlseg3e32.v.yaml index 191c3cabed..6885cc106c 100644 --- a/spec/std/isa/inst/V/vlseg3e32.v.yaml +++ b/spec/std/isa/inst/V/vlseg3e32.v.yaml @@ -9,7 +9,9 @@ name: vlseg3e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 010000-00000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg3e32ff.v.yaml b/spec/std/isa/inst/V/vlseg3e32ff.v.yaml index 55ca1c766b..db09bd0593 100644 --- a/spec/std/isa/inst/V/vlseg3e32ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg3e32ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg3e32ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 010000-10000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg3e64.v.yaml b/spec/std/isa/inst/V/vlseg3e64.v.yaml index b687d49ea8..a09f410c65 100644 --- a/spec/std/isa/inst/V/vlseg3e64.v.yaml +++ b/spec/std/isa/inst/V/vlseg3e64.v.yaml @@ -9,7 +9,9 @@ name: vlseg3e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 010000-00000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg3e64ff.v.yaml b/spec/std/isa/inst/V/vlseg3e64ff.v.yaml index d5588652f8..2de52f7da9 100644 --- a/spec/std/isa/inst/V/vlseg3e64ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg3e64ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg3e64ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 010000-10000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg3e8.v.yaml b/spec/std/isa/inst/V/vlseg3e8.v.yaml index dd555ff98c..0199468222 100644 --- a/spec/std/isa/inst/V/vlseg3e8.v.yaml +++ b/spec/std/isa/inst/V/vlseg3e8.v.yaml @@ -9,7 +9,9 @@ name: vlseg3e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 010000-00000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg3e8ff.v.yaml b/spec/std/isa/inst/V/vlseg3e8ff.v.yaml index 6a21f78d16..1e14babcaf 100644 --- a/spec/std/isa/inst/V/vlseg3e8ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg3e8ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg3e8ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 010000-10000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg4e16.v.yaml b/spec/std/isa/inst/V/vlseg4e16.v.yaml index 08ff1bafca..ee5d268764 100644 --- a/spec/std/isa/inst/V/vlseg4e16.v.yaml +++ b/spec/std/isa/inst/V/vlseg4e16.v.yaml @@ -9,7 +9,9 @@ name: vlseg4e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 011000-00000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg4e16ff.v.yaml b/spec/std/isa/inst/V/vlseg4e16ff.v.yaml index f909307adf..9d0297cacb 100644 --- a/spec/std/isa/inst/V/vlseg4e16ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg4e16ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg4e16ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 011000-10000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg4e32.v.yaml b/spec/std/isa/inst/V/vlseg4e32.v.yaml index 6d3a10273f..84b15d4cc6 100644 --- a/spec/std/isa/inst/V/vlseg4e32.v.yaml +++ b/spec/std/isa/inst/V/vlseg4e32.v.yaml @@ -9,7 +9,9 @@ name: vlseg4e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 011000-00000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg4e32ff.v.yaml b/spec/std/isa/inst/V/vlseg4e32ff.v.yaml index 64c5d41f08..645f553614 100644 --- a/spec/std/isa/inst/V/vlseg4e32ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg4e32ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg4e32ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 011000-10000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg4e64.v.yaml b/spec/std/isa/inst/V/vlseg4e64.v.yaml index 88194cdd63..907bf4799b 100644 --- a/spec/std/isa/inst/V/vlseg4e64.v.yaml +++ b/spec/std/isa/inst/V/vlseg4e64.v.yaml @@ -9,7 +9,9 @@ name: vlseg4e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 011000-00000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg4e64ff.v.yaml b/spec/std/isa/inst/V/vlseg4e64ff.v.yaml index b52fc8e2f8..5803a12e7d 100644 --- a/spec/std/isa/inst/V/vlseg4e64ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg4e64ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg4e64ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 011000-10000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg4e8.v.yaml b/spec/std/isa/inst/V/vlseg4e8.v.yaml index 75c01d97b6..f29f7259f7 100644 --- a/spec/std/isa/inst/V/vlseg4e8.v.yaml +++ b/spec/std/isa/inst/V/vlseg4e8.v.yaml @@ -9,7 +9,9 @@ name: vlseg4e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 011000-00000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg4e8ff.v.yaml b/spec/std/isa/inst/V/vlseg4e8ff.v.yaml index ec83f37476..93e85b5855 100644 --- a/spec/std/isa/inst/V/vlseg4e8ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg4e8ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg4e8ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 011000-10000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg5e16.v.yaml b/spec/std/isa/inst/V/vlseg5e16.v.yaml index 417dd00ff4..fa3826ea16 100644 --- a/spec/std/isa/inst/V/vlseg5e16.v.yaml +++ b/spec/std/isa/inst/V/vlseg5e16.v.yaml @@ -9,7 +9,9 @@ name: vlseg5e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 100000-00000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg5e16ff.v.yaml b/spec/std/isa/inst/V/vlseg5e16ff.v.yaml index 5d3e7de5c1..53759cce2f 100644 --- a/spec/std/isa/inst/V/vlseg5e16ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg5e16ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg5e16ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 100000-10000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg5e32.v.yaml b/spec/std/isa/inst/V/vlseg5e32.v.yaml index 7278fa697f..eb3e0b4d4b 100644 --- a/spec/std/isa/inst/V/vlseg5e32.v.yaml +++ b/spec/std/isa/inst/V/vlseg5e32.v.yaml @@ -9,7 +9,9 @@ name: vlseg5e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 100000-00000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg5e32ff.v.yaml b/spec/std/isa/inst/V/vlseg5e32ff.v.yaml index a6b1ffef48..6bb33fe1a7 100644 --- a/spec/std/isa/inst/V/vlseg5e32ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg5e32ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg5e32ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 100000-10000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg5e64.v.yaml b/spec/std/isa/inst/V/vlseg5e64.v.yaml index 70dc002c9e..8d2b9175a1 100644 --- a/spec/std/isa/inst/V/vlseg5e64.v.yaml +++ b/spec/std/isa/inst/V/vlseg5e64.v.yaml @@ -9,7 +9,9 @@ name: vlseg5e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 100000-00000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg5e64ff.v.yaml b/spec/std/isa/inst/V/vlseg5e64ff.v.yaml index 944e22af03..dea413b063 100644 --- a/spec/std/isa/inst/V/vlseg5e64ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg5e64ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg5e64ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 100000-10000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg5e8.v.yaml b/spec/std/isa/inst/V/vlseg5e8.v.yaml index 6225b59181..5d0173fccc 100644 --- a/spec/std/isa/inst/V/vlseg5e8.v.yaml +++ b/spec/std/isa/inst/V/vlseg5e8.v.yaml @@ -9,7 +9,9 @@ name: vlseg5e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 100000-00000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg5e8ff.v.yaml b/spec/std/isa/inst/V/vlseg5e8ff.v.yaml index 23fa9ebd1e..5ca75c73dd 100644 --- a/spec/std/isa/inst/V/vlseg5e8ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg5e8ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg5e8ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 100000-10000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg6e16.v.yaml b/spec/std/isa/inst/V/vlseg6e16.v.yaml index 2170e88262..a1d59d10b4 100644 --- a/spec/std/isa/inst/V/vlseg6e16.v.yaml +++ b/spec/std/isa/inst/V/vlseg6e16.v.yaml @@ -9,7 +9,9 @@ name: vlseg6e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 101000-00000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg6e16ff.v.yaml b/spec/std/isa/inst/V/vlseg6e16ff.v.yaml index f7bc60106f..78cd500f7b 100644 --- a/spec/std/isa/inst/V/vlseg6e16ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg6e16ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg6e16ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 101000-10000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg6e32.v.yaml b/spec/std/isa/inst/V/vlseg6e32.v.yaml index 8929121a27..6ba4fbdb57 100644 --- a/spec/std/isa/inst/V/vlseg6e32.v.yaml +++ b/spec/std/isa/inst/V/vlseg6e32.v.yaml @@ -9,7 +9,9 @@ name: vlseg6e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 101000-00000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg6e32ff.v.yaml b/spec/std/isa/inst/V/vlseg6e32ff.v.yaml index ad233612d2..865c200a7c 100644 --- a/spec/std/isa/inst/V/vlseg6e32ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg6e32ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg6e32ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 101000-10000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg6e64.v.yaml b/spec/std/isa/inst/V/vlseg6e64.v.yaml index 489fe953d2..44f50f3ae1 100644 --- a/spec/std/isa/inst/V/vlseg6e64.v.yaml +++ b/spec/std/isa/inst/V/vlseg6e64.v.yaml @@ -9,7 +9,9 @@ name: vlseg6e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 101000-00000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg6e64ff.v.yaml b/spec/std/isa/inst/V/vlseg6e64ff.v.yaml index d9afcbf8a7..c340b7ea30 100644 --- a/spec/std/isa/inst/V/vlseg6e64ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg6e64ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg6e64ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 101000-10000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg6e8.v.yaml b/spec/std/isa/inst/V/vlseg6e8.v.yaml index 412ca6f239..ce97b63663 100644 --- a/spec/std/isa/inst/V/vlseg6e8.v.yaml +++ b/spec/std/isa/inst/V/vlseg6e8.v.yaml @@ -9,7 +9,9 @@ name: vlseg6e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 101000-00000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg6e8ff.v.yaml b/spec/std/isa/inst/V/vlseg6e8ff.v.yaml index cad4ee64f7..6f6217cf8f 100644 --- a/spec/std/isa/inst/V/vlseg6e8ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg6e8ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg6e8ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 101000-10000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg7e16.v.yaml b/spec/std/isa/inst/V/vlseg7e16.v.yaml index 6c46b3c240..ce6ca238bd 100644 --- a/spec/std/isa/inst/V/vlseg7e16.v.yaml +++ b/spec/std/isa/inst/V/vlseg7e16.v.yaml @@ -9,7 +9,9 @@ name: vlseg7e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 110000-00000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg7e16ff.v.yaml b/spec/std/isa/inst/V/vlseg7e16ff.v.yaml index 161f16c85c..3a986107ef 100644 --- a/spec/std/isa/inst/V/vlseg7e16ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg7e16ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg7e16ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 110000-10000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg7e32.v.yaml b/spec/std/isa/inst/V/vlseg7e32.v.yaml index 65acf010d8..2d0f78f302 100644 --- a/spec/std/isa/inst/V/vlseg7e32.v.yaml +++ b/spec/std/isa/inst/V/vlseg7e32.v.yaml @@ -9,7 +9,9 @@ name: vlseg7e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 110000-00000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg7e32ff.v.yaml b/spec/std/isa/inst/V/vlseg7e32ff.v.yaml index 503e1d6ef3..79b8e6931c 100644 --- a/spec/std/isa/inst/V/vlseg7e32ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg7e32ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg7e32ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 110000-10000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg7e64.v.yaml b/spec/std/isa/inst/V/vlseg7e64.v.yaml index d53af177a1..dec9d06a7f 100644 --- a/spec/std/isa/inst/V/vlseg7e64.v.yaml +++ b/spec/std/isa/inst/V/vlseg7e64.v.yaml @@ -9,7 +9,9 @@ name: vlseg7e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 110000-00000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg7e64ff.v.yaml b/spec/std/isa/inst/V/vlseg7e64ff.v.yaml index 52667b408d..b986afece2 100644 --- a/spec/std/isa/inst/V/vlseg7e64ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg7e64ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg7e64ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 110000-10000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg7e8.v.yaml b/spec/std/isa/inst/V/vlseg7e8.v.yaml index dcc86aa5b5..14f23094a2 100644 --- a/spec/std/isa/inst/V/vlseg7e8.v.yaml +++ b/spec/std/isa/inst/V/vlseg7e8.v.yaml @@ -9,7 +9,9 @@ name: vlseg7e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 110000-00000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg7e8ff.v.yaml b/spec/std/isa/inst/V/vlseg7e8ff.v.yaml index 8c93b18ce2..b5c581ff5b 100644 --- a/spec/std/isa/inst/V/vlseg7e8ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg7e8ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg7e8ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 110000-10000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg8e16.v.yaml b/spec/std/isa/inst/V/vlseg8e16.v.yaml index 0c85fb5042..c19b2acfc6 100644 --- a/spec/std/isa/inst/V/vlseg8e16.v.yaml +++ b/spec/std/isa/inst/V/vlseg8e16.v.yaml @@ -9,7 +9,9 @@ name: vlseg8e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 111000-00000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg8e16ff.v.yaml b/spec/std/isa/inst/V/vlseg8e16ff.v.yaml index f04830422c..0b60634a7e 100644 --- a/spec/std/isa/inst/V/vlseg8e16ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg8e16ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg8e16ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 111000-10000-----101-----0000111 diff --git a/spec/std/isa/inst/V/vlseg8e32.v.yaml b/spec/std/isa/inst/V/vlseg8e32.v.yaml index 9d946fb256..6c15f740ba 100644 --- a/spec/std/isa/inst/V/vlseg8e32.v.yaml +++ b/spec/std/isa/inst/V/vlseg8e32.v.yaml @@ -9,7 +9,9 @@ name: vlseg8e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 111000-00000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg8e32ff.v.yaml b/spec/std/isa/inst/V/vlseg8e32ff.v.yaml index 472a3ca96f..b4f336cd6a 100644 --- a/spec/std/isa/inst/V/vlseg8e32ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg8e32ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg8e32ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 111000-10000-----110-----0000111 diff --git a/spec/std/isa/inst/V/vlseg8e64.v.yaml b/spec/std/isa/inst/V/vlseg8e64.v.yaml index 1c3843b8e9..87d8a62cd3 100644 --- a/spec/std/isa/inst/V/vlseg8e64.v.yaml +++ b/spec/std/isa/inst/V/vlseg8e64.v.yaml @@ -9,7 +9,9 @@ name: vlseg8e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 111000-00000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg8e64ff.v.yaml b/spec/std/isa/inst/V/vlseg8e64ff.v.yaml index c19f5a8817..7b83d6a2de 100644 --- a/spec/std/isa/inst/V/vlseg8e64ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg8e64ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg8e64ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 111000-10000-----111-----0000111 diff --git a/spec/std/isa/inst/V/vlseg8e8.v.yaml b/spec/std/isa/inst/V/vlseg8e8.v.yaml index 95057dc476..a02bcf310d 100644 --- a/spec/std/isa/inst/V/vlseg8e8.v.yaml +++ b/spec/std/isa/inst/V/vlseg8e8.v.yaml @@ -9,7 +9,9 @@ name: vlseg8e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 111000-00000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlseg8e8ff.v.yaml b/spec/std/isa/inst/V/vlseg8e8ff.v.yaml index 3e6fa88d44..bbd059e9e0 100644 --- a/spec/std/isa/inst/V/vlseg8e8ff.v.yaml +++ b/spec/std/isa/inst/V/vlseg8e8ff.v.yaml @@ -9,7 +9,9 @@ name: vlseg8e8ff.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vm encoding: match: 111000-10000-----000-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg2e16.v.yaml b/spec/std/isa/inst/V/vlsseg2e16.v.yaml index 5ee3f4f916..7a4cc24511 100644 --- a/spec/std/isa/inst/V/vlsseg2e16.v.yaml +++ b/spec/std/isa/inst/V/vlsseg2e16.v.yaml @@ -9,7 +9,9 @@ name: vlsseg2e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 001010-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg2e32.v.yaml b/spec/std/isa/inst/V/vlsseg2e32.v.yaml index 02ce06c2cb..3a00aba60e 100644 --- a/spec/std/isa/inst/V/vlsseg2e32.v.yaml +++ b/spec/std/isa/inst/V/vlsseg2e32.v.yaml @@ -9,7 +9,9 @@ name: vlsseg2e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 001010-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg2e64.v.yaml b/spec/std/isa/inst/V/vlsseg2e64.v.yaml index b1d9838d12..ab14de130e 100644 --- a/spec/std/isa/inst/V/vlsseg2e64.v.yaml +++ b/spec/std/isa/inst/V/vlsseg2e64.v.yaml @@ -9,7 +9,9 @@ name: vlsseg2e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 001010-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg2e8.v.yaml b/spec/std/isa/inst/V/vlsseg2e8.v.yaml index e6b133d782..0d8a0e399b 100644 --- a/spec/std/isa/inst/V/vlsseg2e8.v.yaml +++ b/spec/std/isa/inst/V/vlsseg2e8.v.yaml @@ -9,7 +9,9 @@ name: vlsseg2e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 001010-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg3e16.v.yaml b/spec/std/isa/inst/V/vlsseg3e16.v.yaml index 6bdefc0cf1..149edd0d7f 100644 --- a/spec/std/isa/inst/V/vlsseg3e16.v.yaml +++ b/spec/std/isa/inst/V/vlsseg3e16.v.yaml @@ -9,7 +9,9 @@ name: vlsseg3e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 010010-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg3e32.v.yaml b/spec/std/isa/inst/V/vlsseg3e32.v.yaml index 5005d9f845..19c70900cf 100644 --- a/spec/std/isa/inst/V/vlsseg3e32.v.yaml +++ b/spec/std/isa/inst/V/vlsseg3e32.v.yaml @@ -9,7 +9,9 @@ name: vlsseg3e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 010010-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg3e64.v.yaml b/spec/std/isa/inst/V/vlsseg3e64.v.yaml index 5d3d8e7a4c..d8c8e0fd32 100644 --- a/spec/std/isa/inst/V/vlsseg3e64.v.yaml +++ b/spec/std/isa/inst/V/vlsseg3e64.v.yaml @@ -9,7 +9,9 @@ name: vlsseg3e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 010010-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg3e8.v.yaml b/spec/std/isa/inst/V/vlsseg3e8.v.yaml index 060ee7b159..8da7c76db3 100644 --- a/spec/std/isa/inst/V/vlsseg3e8.v.yaml +++ b/spec/std/isa/inst/V/vlsseg3e8.v.yaml @@ -9,7 +9,9 @@ name: vlsseg3e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 010010-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg4e16.v.yaml b/spec/std/isa/inst/V/vlsseg4e16.v.yaml index c1dcef0ff0..d0fb232c2c 100644 --- a/spec/std/isa/inst/V/vlsseg4e16.v.yaml +++ b/spec/std/isa/inst/V/vlsseg4e16.v.yaml @@ -9,7 +9,9 @@ name: vlsseg4e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 011010-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg4e32.v.yaml b/spec/std/isa/inst/V/vlsseg4e32.v.yaml index 34933d9416..b72056a43a 100644 --- a/spec/std/isa/inst/V/vlsseg4e32.v.yaml +++ b/spec/std/isa/inst/V/vlsseg4e32.v.yaml @@ -9,7 +9,9 @@ name: vlsseg4e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 011010-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg4e64.v.yaml b/spec/std/isa/inst/V/vlsseg4e64.v.yaml index f79c684e2d..5960084a0c 100644 --- a/spec/std/isa/inst/V/vlsseg4e64.v.yaml +++ b/spec/std/isa/inst/V/vlsseg4e64.v.yaml @@ -9,7 +9,9 @@ name: vlsseg4e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 011010-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg4e8.v.yaml b/spec/std/isa/inst/V/vlsseg4e8.v.yaml index 6a43569fbc..1b1c3d362f 100644 --- a/spec/std/isa/inst/V/vlsseg4e8.v.yaml +++ b/spec/std/isa/inst/V/vlsseg4e8.v.yaml @@ -9,7 +9,9 @@ name: vlsseg4e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 011010-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg5e16.v.yaml b/spec/std/isa/inst/V/vlsseg5e16.v.yaml index 03a6226253..ccf8a2388d 100644 --- a/spec/std/isa/inst/V/vlsseg5e16.v.yaml +++ b/spec/std/isa/inst/V/vlsseg5e16.v.yaml @@ -9,7 +9,9 @@ name: vlsseg5e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 100010-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg5e32.v.yaml b/spec/std/isa/inst/V/vlsseg5e32.v.yaml index 4bbe7bdff6..1605dd5d58 100644 --- a/spec/std/isa/inst/V/vlsseg5e32.v.yaml +++ b/spec/std/isa/inst/V/vlsseg5e32.v.yaml @@ -9,7 +9,9 @@ name: vlsseg5e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 100010-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg5e64.v.yaml b/spec/std/isa/inst/V/vlsseg5e64.v.yaml index 2f07ce1675..c896adbd69 100644 --- a/spec/std/isa/inst/V/vlsseg5e64.v.yaml +++ b/spec/std/isa/inst/V/vlsseg5e64.v.yaml @@ -9,7 +9,9 @@ name: vlsseg5e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 100010-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg5e8.v.yaml b/spec/std/isa/inst/V/vlsseg5e8.v.yaml index d84406b839..6c18a10147 100644 --- a/spec/std/isa/inst/V/vlsseg5e8.v.yaml +++ b/spec/std/isa/inst/V/vlsseg5e8.v.yaml @@ -9,7 +9,9 @@ name: vlsseg5e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 100010-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg6e16.v.yaml b/spec/std/isa/inst/V/vlsseg6e16.v.yaml index a1e6b9aef7..2b3de72311 100644 --- a/spec/std/isa/inst/V/vlsseg6e16.v.yaml +++ b/spec/std/isa/inst/V/vlsseg6e16.v.yaml @@ -9,7 +9,9 @@ name: vlsseg6e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 101010-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg6e32.v.yaml b/spec/std/isa/inst/V/vlsseg6e32.v.yaml index d69c0b59f8..4b0a69e908 100644 --- a/spec/std/isa/inst/V/vlsseg6e32.v.yaml +++ b/spec/std/isa/inst/V/vlsseg6e32.v.yaml @@ -9,7 +9,9 @@ name: vlsseg6e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 101010-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg6e64.v.yaml b/spec/std/isa/inst/V/vlsseg6e64.v.yaml index 8329db50be..8d12ac3181 100644 --- a/spec/std/isa/inst/V/vlsseg6e64.v.yaml +++ b/spec/std/isa/inst/V/vlsseg6e64.v.yaml @@ -9,7 +9,9 @@ name: vlsseg6e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 101010-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg6e8.v.yaml b/spec/std/isa/inst/V/vlsseg6e8.v.yaml index 59a54005da..fd18bfb0c1 100644 --- a/spec/std/isa/inst/V/vlsseg6e8.v.yaml +++ b/spec/std/isa/inst/V/vlsseg6e8.v.yaml @@ -9,7 +9,9 @@ name: vlsseg6e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 101010-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg7e16.v.yaml b/spec/std/isa/inst/V/vlsseg7e16.v.yaml index 056c623a97..6de6d20339 100644 --- a/spec/std/isa/inst/V/vlsseg7e16.v.yaml +++ b/spec/std/isa/inst/V/vlsseg7e16.v.yaml @@ -9,7 +9,9 @@ name: vlsseg7e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 110010-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg7e32.v.yaml b/spec/std/isa/inst/V/vlsseg7e32.v.yaml index 2354c254d7..1c45d9d48a 100644 --- a/spec/std/isa/inst/V/vlsseg7e32.v.yaml +++ b/spec/std/isa/inst/V/vlsseg7e32.v.yaml @@ -9,7 +9,9 @@ name: vlsseg7e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 110010-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg7e64.v.yaml b/spec/std/isa/inst/V/vlsseg7e64.v.yaml index 97c422cb74..12f56b2aa9 100644 --- a/spec/std/isa/inst/V/vlsseg7e64.v.yaml +++ b/spec/std/isa/inst/V/vlsseg7e64.v.yaml @@ -9,7 +9,9 @@ name: vlsseg7e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 110010-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg7e8.v.yaml b/spec/std/isa/inst/V/vlsseg7e8.v.yaml index e30ac4163c..a68266a010 100644 --- a/spec/std/isa/inst/V/vlsseg7e8.v.yaml +++ b/spec/std/isa/inst/V/vlsseg7e8.v.yaml @@ -9,7 +9,9 @@ name: vlsseg7e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 110010-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg8e16.v.yaml b/spec/std/isa/inst/V/vlsseg8e16.v.yaml index c8f38fd5ce..2e9491116d 100644 --- a/spec/std/isa/inst/V/vlsseg8e16.v.yaml +++ b/spec/std/isa/inst/V/vlsseg8e16.v.yaml @@ -9,7 +9,9 @@ name: vlsseg8e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 111010-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg8e32.v.yaml b/spec/std/isa/inst/V/vlsseg8e32.v.yaml index 1246092374..5bd855c124 100644 --- a/spec/std/isa/inst/V/vlsseg8e32.v.yaml +++ b/spec/std/isa/inst/V/vlsseg8e32.v.yaml @@ -9,7 +9,9 @@ name: vlsseg8e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 111010-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg8e64.v.yaml b/spec/std/isa/inst/V/vlsseg8e64.v.yaml index bc3bb5456b..35ccc9804c 100644 --- a/spec/std/isa/inst/V/vlsseg8e64.v.yaml +++ b/spec/std/isa/inst/V/vlsseg8e64.v.yaml @@ -9,7 +9,9 @@ name: vlsseg8e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 111010-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vlsseg8e8.v.yaml b/spec/std/isa/inst/V/vlsseg8e8.v.yaml index e3ca1b6866..6a762a92c9 100644 --- a/spec/std/isa/inst/V/vlsseg8e8.v.yaml +++ b/spec/std/isa/inst/V/vlsseg8e8.v.yaml @@ -9,7 +9,9 @@ name: vlsseg8e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), xs2, vm encoding: match: 111010-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vluxei16.v.yaml b/spec/std/isa/inst/V/vluxei16.v.yaml index 6f22e7aba1..0a35b69d2b 100644 --- a/spec/std/isa/inst/V/vluxei16.v.yaml +++ b/spec/std/isa/inst/V/vluxei16.v.yaml @@ -9,7 +9,9 @@ name: vluxei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 000001-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vluxei32.v.yaml b/spec/std/isa/inst/V/vluxei32.v.yaml index b7298205b4..362b1f5507 100644 --- a/spec/std/isa/inst/V/vluxei32.v.yaml +++ b/spec/std/isa/inst/V/vluxei32.v.yaml @@ -9,7 +9,9 @@ name: vluxei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 000001-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vluxei64.v.yaml b/spec/std/isa/inst/V/vluxei64.v.yaml index 2c5d2c52da..8e562446b0 100644 --- a/spec/std/isa/inst/V/vluxei64.v.yaml +++ b/spec/std/isa/inst/V/vluxei64.v.yaml @@ -9,7 +9,9 @@ name: vluxei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 000001-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vluxei8.v.yaml b/spec/std/isa/inst/V/vluxei8.v.yaml index f333d39d20..b49bbd3575 100644 --- a/spec/std/isa/inst/V/vluxei8.v.yaml +++ b/spec/std/isa/inst/V/vluxei8.v.yaml @@ -9,7 +9,9 @@ name: vluxei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 000001-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg2ei16.v.yaml b/spec/std/isa/inst/V/vluxseg2ei16.v.yaml index 8adafb1543..caa2c6faef 100644 --- a/spec/std/isa/inst/V/vluxseg2ei16.v.yaml +++ b/spec/std/isa/inst/V/vluxseg2ei16.v.yaml @@ -9,7 +9,9 @@ name: vluxseg2ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 001001-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg2ei32.v.yaml b/spec/std/isa/inst/V/vluxseg2ei32.v.yaml index 0d31bc76a9..56238c5505 100644 --- a/spec/std/isa/inst/V/vluxseg2ei32.v.yaml +++ b/spec/std/isa/inst/V/vluxseg2ei32.v.yaml @@ -9,7 +9,9 @@ name: vluxseg2ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 001001-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg2ei64.v.yaml b/spec/std/isa/inst/V/vluxseg2ei64.v.yaml index cd6899a572..da05330d9b 100644 --- a/spec/std/isa/inst/V/vluxseg2ei64.v.yaml +++ b/spec/std/isa/inst/V/vluxseg2ei64.v.yaml @@ -9,7 +9,9 @@ name: vluxseg2ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 001001-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg2ei8.v.yaml b/spec/std/isa/inst/V/vluxseg2ei8.v.yaml index 767cbdee21..9ec87469a8 100644 --- a/spec/std/isa/inst/V/vluxseg2ei8.v.yaml +++ b/spec/std/isa/inst/V/vluxseg2ei8.v.yaml @@ -9,7 +9,9 @@ name: vluxseg2ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 001001-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg3ei16.v.yaml b/spec/std/isa/inst/V/vluxseg3ei16.v.yaml index 9cdd3d9b37..bae8a80fda 100644 --- a/spec/std/isa/inst/V/vluxseg3ei16.v.yaml +++ b/spec/std/isa/inst/V/vluxseg3ei16.v.yaml @@ -9,7 +9,9 @@ name: vluxseg3ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 010001-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg3ei32.v.yaml b/spec/std/isa/inst/V/vluxseg3ei32.v.yaml index 3c71219c07..cbaef53f29 100644 --- a/spec/std/isa/inst/V/vluxseg3ei32.v.yaml +++ b/spec/std/isa/inst/V/vluxseg3ei32.v.yaml @@ -9,7 +9,9 @@ name: vluxseg3ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 010001-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg3ei64.v.yaml b/spec/std/isa/inst/V/vluxseg3ei64.v.yaml index c5eee8f3a4..c7d76eeb77 100644 --- a/spec/std/isa/inst/V/vluxseg3ei64.v.yaml +++ b/spec/std/isa/inst/V/vluxseg3ei64.v.yaml @@ -9,7 +9,9 @@ name: vluxseg3ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 010001-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg3ei8.v.yaml b/spec/std/isa/inst/V/vluxseg3ei8.v.yaml index 62a31e859b..34b7bfdec9 100644 --- a/spec/std/isa/inst/V/vluxseg3ei8.v.yaml +++ b/spec/std/isa/inst/V/vluxseg3ei8.v.yaml @@ -9,7 +9,9 @@ name: vluxseg3ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 010001-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg4ei16.v.yaml b/spec/std/isa/inst/V/vluxseg4ei16.v.yaml index 97ee35a950..2043a4812c 100644 --- a/spec/std/isa/inst/V/vluxseg4ei16.v.yaml +++ b/spec/std/isa/inst/V/vluxseg4ei16.v.yaml @@ -9,7 +9,9 @@ name: vluxseg4ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 011001-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg4ei32.v.yaml b/spec/std/isa/inst/V/vluxseg4ei32.v.yaml index 4b746b83f9..af545d85f9 100644 --- a/spec/std/isa/inst/V/vluxseg4ei32.v.yaml +++ b/spec/std/isa/inst/V/vluxseg4ei32.v.yaml @@ -9,7 +9,9 @@ name: vluxseg4ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 011001-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg4ei64.v.yaml b/spec/std/isa/inst/V/vluxseg4ei64.v.yaml index fab41d72f3..cf5c8cf682 100644 --- a/spec/std/isa/inst/V/vluxseg4ei64.v.yaml +++ b/spec/std/isa/inst/V/vluxseg4ei64.v.yaml @@ -9,7 +9,9 @@ name: vluxseg4ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 011001-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg4ei8.v.yaml b/spec/std/isa/inst/V/vluxseg4ei8.v.yaml index ecf93fd875..f13713f234 100644 --- a/spec/std/isa/inst/V/vluxseg4ei8.v.yaml +++ b/spec/std/isa/inst/V/vluxseg4ei8.v.yaml @@ -9,7 +9,9 @@ name: vluxseg4ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 011001-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg5ei16.v.yaml b/spec/std/isa/inst/V/vluxseg5ei16.v.yaml index b25e4c66e1..48d6a449c3 100644 --- a/spec/std/isa/inst/V/vluxseg5ei16.v.yaml +++ b/spec/std/isa/inst/V/vluxseg5ei16.v.yaml @@ -9,7 +9,9 @@ name: vluxseg5ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 100001-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg5ei32.v.yaml b/spec/std/isa/inst/V/vluxseg5ei32.v.yaml index 18cd418f3c..836aa89607 100644 --- a/spec/std/isa/inst/V/vluxseg5ei32.v.yaml +++ b/spec/std/isa/inst/V/vluxseg5ei32.v.yaml @@ -9,7 +9,9 @@ name: vluxseg5ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 100001-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg5ei64.v.yaml b/spec/std/isa/inst/V/vluxseg5ei64.v.yaml index c01941b895..675f38f440 100644 --- a/spec/std/isa/inst/V/vluxseg5ei64.v.yaml +++ b/spec/std/isa/inst/V/vluxseg5ei64.v.yaml @@ -9,7 +9,9 @@ name: vluxseg5ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 100001-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg5ei8.v.yaml b/spec/std/isa/inst/V/vluxseg5ei8.v.yaml index ec99cd8466..a1ae0a97e6 100644 --- a/spec/std/isa/inst/V/vluxseg5ei8.v.yaml +++ b/spec/std/isa/inst/V/vluxseg5ei8.v.yaml @@ -9,7 +9,9 @@ name: vluxseg5ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 100001-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg6ei16.v.yaml b/spec/std/isa/inst/V/vluxseg6ei16.v.yaml index 0846526ec4..8d01adf10a 100644 --- a/spec/std/isa/inst/V/vluxseg6ei16.v.yaml +++ b/spec/std/isa/inst/V/vluxseg6ei16.v.yaml @@ -9,7 +9,9 @@ name: vluxseg6ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 101001-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg6ei32.v.yaml b/spec/std/isa/inst/V/vluxseg6ei32.v.yaml index 8e2f55db5f..f3a8fd717b 100644 --- a/spec/std/isa/inst/V/vluxseg6ei32.v.yaml +++ b/spec/std/isa/inst/V/vluxseg6ei32.v.yaml @@ -9,7 +9,9 @@ name: vluxseg6ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 101001-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg6ei64.v.yaml b/spec/std/isa/inst/V/vluxseg6ei64.v.yaml index aba1702b70..2661bbef1d 100644 --- a/spec/std/isa/inst/V/vluxseg6ei64.v.yaml +++ b/spec/std/isa/inst/V/vluxseg6ei64.v.yaml @@ -9,7 +9,9 @@ name: vluxseg6ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 101001-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg6ei8.v.yaml b/spec/std/isa/inst/V/vluxseg6ei8.v.yaml index 2a72113e36..3b9e85876c 100644 --- a/spec/std/isa/inst/V/vluxseg6ei8.v.yaml +++ b/spec/std/isa/inst/V/vluxseg6ei8.v.yaml @@ -9,7 +9,9 @@ name: vluxseg6ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 101001-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg7ei16.v.yaml b/spec/std/isa/inst/V/vluxseg7ei16.v.yaml index 06b0f098d8..ccc6e8e73f 100644 --- a/spec/std/isa/inst/V/vluxseg7ei16.v.yaml +++ b/spec/std/isa/inst/V/vluxseg7ei16.v.yaml @@ -9,7 +9,9 @@ name: vluxseg7ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 110001-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg7ei32.v.yaml b/spec/std/isa/inst/V/vluxseg7ei32.v.yaml index d207d5b422..940d1dd7ec 100644 --- a/spec/std/isa/inst/V/vluxseg7ei32.v.yaml +++ b/spec/std/isa/inst/V/vluxseg7ei32.v.yaml @@ -9,7 +9,9 @@ name: vluxseg7ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 110001-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg7ei64.v.yaml b/spec/std/isa/inst/V/vluxseg7ei64.v.yaml index 3019c28acc..039dc05237 100644 --- a/spec/std/isa/inst/V/vluxseg7ei64.v.yaml +++ b/spec/std/isa/inst/V/vluxseg7ei64.v.yaml @@ -9,7 +9,9 @@ name: vluxseg7ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 110001-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg7ei8.v.yaml b/spec/std/isa/inst/V/vluxseg7ei8.v.yaml index 30e287abc1..62a5cc231e 100644 --- a/spec/std/isa/inst/V/vluxseg7ei8.v.yaml +++ b/spec/std/isa/inst/V/vluxseg7ei8.v.yaml @@ -9,7 +9,9 @@ name: vluxseg7ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 110001-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg8ei16.v.yaml b/spec/std/isa/inst/V/vluxseg8ei16.v.yaml index c2e8e26647..ff211d56dd 100644 --- a/spec/std/isa/inst/V/vluxseg8ei16.v.yaml +++ b/spec/std/isa/inst/V/vluxseg8ei16.v.yaml @@ -9,7 +9,9 @@ name: vluxseg8ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 111001-----------101-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg8ei32.v.yaml b/spec/std/isa/inst/V/vluxseg8ei32.v.yaml index d833535e69..c56e421ec3 100644 --- a/spec/std/isa/inst/V/vluxseg8ei32.v.yaml +++ b/spec/std/isa/inst/V/vluxseg8ei32.v.yaml @@ -9,7 +9,9 @@ name: vluxseg8ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 111001-----------110-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg8ei64.v.yaml b/spec/std/isa/inst/V/vluxseg8ei64.v.yaml index 56b4c0f86d..6f453a044a 100644 --- a/spec/std/isa/inst/V/vluxseg8ei64.v.yaml +++ b/spec/std/isa/inst/V/vluxseg8ei64.v.yaml @@ -9,7 +9,9 @@ name: vluxseg8ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 111001-----------111-----0000111 diff --git a/spec/std/isa/inst/V/vluxseg8ei8.v.yaml b/spec/std/isa/inst/V/vluxseg8ei8.v.yaml index f22d515d1f..a4ac8ad5bf 100644 --- a/spec/std/isa/inst/V/vluxseg8ei8.v.yaml +++ b/spec/std/isa/inst/V/vluxseg8ei8.v.yaml @@ -9,7 +9,9 @@ name: vluxseg8ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, (xs1), vs2, vm encoding: match: 111001-----------000-----0000111 diff --git a/spec/std/isa/inst/V/vmacc.vv.yaml b/spec/std/isa/inst/V/vmacc.vv.yaml index 34d5d60f57..88b5ce4399 100644 --- a/spec/std/isa/inst/V/vmacc.vv.yaml +++ b/spec/std/isa/inst/V/vmacc.vv.yaml @@ -9,7 +9,9 @@ name: vmacc.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 101101-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmacc.vx.yaml b/spec/std/isa/inst/V/vmacc.vx.yaml index d260fca8c3..b4291054ab 100644 --- a/spec/std/isa/inst/V/vmacc.vx.yaml +++ b/spec/std/isa/inst/V/vmacc.vx.yaml @@ -9,7 +9,9 @@ name: vmacc.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, xs1, vs2, vm encoding: match: 101101-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vmadc.vi.yaml b/spec/std/isa/inst/V/vmadc.vi.yaml index 28a43761e9..e9c8877f63 100644 --- a/spec/std/isa/inst/V/vmadc.vi.yaml +++ b/spec/std/isa/inst/V/vmadc.vi.yaml @@ -9,7 +9,9 @@ name: vmadc.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm encoding: match: 0100011----------011-----1010111 diff --git a/spec/std/isa/inst/V/vmadc.vim.yaml b/spec/std/isa/inst/V/vmadc.vim.yaml index 29827b3d12..d3c8990590 100644 --- a/spec/std/isa/inst/V/vmadc.vim.yaml +++ b/spec/std/isa/inst/V/vmadc.vim.yaml @@ -9,7 +9,9 @@ name: vmadc.vim long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, v0 encoding: match: 0100010----------011-----1010111 diff --git a/spec/std/isa/inst/V/vmadc.vv.yaml b/spec/std/isa/inst/V/vmadc.vv.yaml index 2862dbc686..8484a878a0 100644 --- a/spec/std/isa/inst/V/vmadc.vv.yaml +++ b/spec/std/isa/inst/V/vmadc.vv.yaml @@ -9,7 +9,9 @@ name: vmadc.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1 encoding: match: 0100011----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmadc.vvm.yaml b/spec/std/isa/inst/V/vmadc.vvm.yaml index 4bee2b92a3..9357c7a9f7 100644 --- a/spec/std/isa/inst/V/vmadc.vvm.yaml +++ b/spec/std/isa/inst/V/vmadc.vvm.yaml @@ -9,7 +9,9 @@ name: vmadc.vvm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, v0 encoding: match: 0100010----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmadc.vx.yaml b/spec/std/isa/inst/V/vmadc.vx.yaml index df79f5e454..c2074b2ffb 100644 --- a/spec/std/isa/inst/V/vmadc.vx.yaml +++ b/spec/std/isa/inst/V/vmadc.vx.yaml @@ -9,7 +9,9 @@ name: vmadc.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1 encoding: match: 0100011----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmadc.vxm.yaml b/spec/std/isa/inst/V/vmadc.vxm.yaml index 2485c5b7e1..a1a9ab9ddb 100644 --- a/spec/std/isa/inst/V/vmadc.vxm.yaml +++ b/spec/std/isa/inst/V/vmadc.vxm.yaml @@ -9,7 +9,9 @@ name: vmadc.vxm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, v0 encoding: match: 0100010----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmadd.vv.yaml b/spec/std/isa/inst/V/vmadd.vv.yaml index b2f4282e09..9279393af4 100644 --- a/spec/std/isa/inst/V/vmadd.vv.yaml +++ b/spec/std/isa/inst/V/vmadd.vv.yaml @@ -9,7 +9,9 @@ name: vmadd.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 101001-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmadd.vx.yaml b/spec/std/isa/inst/V/vmadd.vx.yaml index 8ff9859397..e3346d33b6 100644 --- a/spec/std/isa/inst/V/vmadd.vx.yaml +++ b/spec/std/isa/inst/V/vmadd.vx.yaml @@ -9,7 +9,9 @@ name: vmadd.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, xs1, vs2, vm encoding: match: 101001-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vmand.mm.yaml b/spec/std/isa/inst/V/vmand.mm.yaml index a568bfbd84..57b397addd 100644 --- a/spec/std/isa/inst/V/vmand.mm.yaml +++ b/spec/std/isa/inst/V/vmand.mm.yaml @@ -9,7 +9,9 @@ name: vmand.mm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1 encoding: match: 0110011----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmandn.mm.yaml b/spec/std/isa/inst/V/vmandn.mm.yaml index d03a9cf938..8e338e2ec5 100644 --- a/spec/std/isa/inst/V/vmandn.mm.yaml +++ b/spec/std/isa/inst/V/vmandn.mm.yaml @@ -9,7 +9,9 @@ name: vmandn.mm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1 encoding: match: 0110001----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmax.vv.yaml b/spec/std/isa/inst/V/vmax.vv.yaml index 7b4cfe5e7c..c74e600144 100644 --- a/spec/std/isa/inst/V/vmax.vv.yaml +++ b/spec/std/isa/inst/V/vmax.vv.yaml @@ -9,7 +9,9 @@ name: vmax.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000111-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmax.vx.yaml b/spec/std/isa/inst/V/vmax.vx.yaml index 24d2c44597..62768d4d6f 100644 --- a/spec/std/isa/inst/V/vmax.vx.yaml +++ b/spec/std/isa/inst/V/vmax.vx.yaml @@ -9,7 +9,9 @@ name: vmax.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 000111-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmaxu.vv.yaml b/spec/std/isa/inst/V/vmaxu.vv.yaml index fe3999f22c..ba52439e89 100644 --- a/spec/std/isa/inst/V/vmaxu.vv.yaml +++ b/spec/std/isa/inst/V/vmaxu.vv.yaml @@ -9,7 +9,9 @@ name: vmaxu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000110-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmaxu.vx.yaml b/spec/std/isa/inst/V/vmaxu.vx.yaml index 0124c37883..f800a36da5 100644 --- a/spec/std/isa/inst/V/vmaxu.vx.yaml +++ b/spec/std/isa/inst/V/vmaxu.vx.yaml @@ -9,7 +9,9 @@ name: vmaxu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 000110-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmerge.vim.yaml b/spec/std/isa/inst/V/vmerge.vim.yaml index cc52e2484a..886e703b2a 100644 --- a/spec/std/isa/inst/V/vmerge.vim.yaml +++ b/spec/std/isa/inst/V/vmerge.vim.yaml @@ -9,7 +9,9 @@ name: vmerge.vim long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, v0 encoding: match: 0101110----------011-----1010111 diff --git a/spec/std/isa/inst/V/vmerge.vvm.yaml b/spec/std/isa/inst/V/vmerge.vvm.yaml index a8ca31a134..c057e84470 100644 --- a/spec/std/isa/inst/V/vmerge.vvm.yaml +++ b/spec/std/isa/inst/V/vmerge.vvm.yaml @@ -9,7 +9,9 @@ name: vmerge.vvm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, v0 encoding: match: 0101110----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmerge.vxm.yaml b/spec/std/isa/inst/V/vmerge.vxm.yaml index 5c7025e25e..f97e4d046e 100644 --- a/spec/std/isa/inst/V/vmerge.vxm.yaml +++ b/spec/std/isa/inst/V/vmerge.vxm.yaml @@ -9,7 +9,9 @@ name: vmerge.vxm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, v0 encoding: match: 0101110----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmfeq.vf.yaml b/spec/std/isa/inst/V/vmfeq.vf.yaml index 6b5c61c4b6..122c964c23 100644 --- a/spec/std/isa/inst/V/vmfeq.vf.yaml +++ b/spec/std/isa/inst/V/vmfeq.vf.yaml @@ -9,7 +9,9 @@ name: vmfeq.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 011000-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vmfeq.vv.yaml b/spec/std/isa/inst/V/vmfeq.vv.yaml index 93456a34c3..09001e3c83 100644 --- a/spec/std/isa/inst/V/vmfeq.vv.yaml +++ b/spec/std/isa/inst/V/vmfeq.vv.yaml @@ -9,7 +9,9 @@ name: vmfeq.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 011000-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vmfge.vf.yaml b/spec/std/isa/inst/V/vmfge.vf.yaml index 88c64dcc63..ff24ef498f 100644 --- a/spec/std/isa/inst/V/vmfge.vf.yaml +++ b/spec/std/isa/inst/V/vmfge.vf.yaml @@ -9,7 +9,9 @@ name: vmfge.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 011111-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vmfgt.vf.yaml b/spec/std/isa/inst/V/vmfgt.vf.yaml index 1b475bcbbc..b3faebc1c1 100644 --- a/spec/std/isa/inst/V/vmfgt.vf.yaml +++ b/spec/std/isa/inst/V/vmfgt.vf.yaml @@ -9,7 +9,9 @@ name: vmfgt.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 011101-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vmfle.vf.yaml b/spec/std/isa/inst/V/vmfle.vf.yaml index 869fcc1e02..1cb1fb3b5d 100644 --- a/spec/std/isa/inst/V/vmfle.vf.yaml +++ b/spec/std/isa/inst/V/vmfle.vf.yaml @@ -9,7 +9,9 @@ name: vmfle.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 011001-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vmfle.vv.yaml b/spec/std/isa/inst/V/vmfle.vv.yaml index 764befcf91..db6f014e2d 100644 --- a/spec/std/isa/inst/V/vmfle.vv.yaml +++ b/spec/std/isa/inst/V/vmfle.vv.yaml @@ -9,7 +9,9 @@ name: vmfle.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 011001-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vmflt.vf.yaml b/spec/std/isa/inst/V/vmflt.vf.yaml index f7c49ab17d..8dae5ece15 100644 --- a/spec/std/isa/inst/V/vmflt.vf.yaml +++ b/spec/std/isa/inst/V/vmflt.vf.yaml @@ -9,7 +9,9 @@ name: vmflt.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 011011-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vmflt.vv.yaml b/spec/std/isa/inst/V/vmflt.vv.yaml index 36c0bf623f..ebc23a47b8 100644 --- a/spec/std/isa/inst/V/vmflt.vv.yaml +++ b/spec/std/isa/inst/V/vmflt.vv.yaml @@ -9,7 +9,9 @@ name: vmflt.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 011011-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vmfne.vf.yaml b/spec/std/isa/inst/V/vmfne.vf.yaml index e1800b52f0..e8bdf20f42 100644 --- a/spec/std/isa/inst/V/vmfne.vf.yaml +++ b/spec/std/isa/inst/V/vmfne.vf.yaml @@ -9,7 +9,9 @@ name: vmfne.vf long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, fs1, vm encoding: match: 011100-----------101-----1010111 diff --git a/spec/std/isa/inst/V/vmfne.vv.yaml b/spec/std/isa/inst/V/vmfne.vv.yaml index 0cdd33da84..97a21aed99 100644 --- a/spec/std/isa/inst/V/vmfne.vv.yaml +++ b/spec/std/isa/inst/V/vmfne.vv.yaml @@ -9,7 +9,9 @@ name: vmfne.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 011100-----------001-----1010111 diff --git a/spec/std/isa/inst/V/vmin.vv.yaml b/spec/std/isa/inst/V/vmin.vv.yaml index 6794bfa152..5c5cd72166 100644 --- a/spec/std/isa/inst/V/vmin.vv.yaml +++ b/spec/std/isa/inst/V/vmin.vv.yaml @@ -9,7 +9,9 @@ name: vmin.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000101-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmin.vx.yaml b/spec/std/isa/inst/V/vmin.vx.yaml index 516bdbf1c9..12e528bf17 100644 --- a/spec/std/isa/inst/V/vmin.vx.yaml +++ b/spec/std/isa/inst/V/vmin.vx.yaml @@ -9,7 +9,9 @@ name: vmin.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 000101-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vminu.vv.yaml b/spec/std/isa/inst/V/vminu.vv.yaml index b0d7029993..d4e0cfae1d 100644 --- a/spec/std/isa/inst/V/vminu.vv.yaml +++ b/spec/std/isa/inst/V/vminu.vv.yaml @@ -9,7 +9,9 @@ name: vminu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000100-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vminu.vx.yaml b/spec/std/isa/inst/V/vminu.vx.yaml index c54fbaf518..e4145670ec 100644 --- a/spec/std/isa/inst/V/vminu.vx.yaml +++ b/spec/std/isa/inst/V/vminu.vx.yaml @@ -9,7 +9,9 @@ name: vminu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 000100-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmnand.mm.yaml b/spec/std/isa/inst/V/vmnand.mm.yaml index 2b283abf80..6bf7c42c7a 100644 --- a/spec/std/isa/inst/V/vmnand.mm.yaml +++ b/spec/std/isa/inst/V/vmnand.mm.yaml @@ -9,7 +9,9 @@ name: vmnand.mm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1 encoding: match: 0111011----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmnor.mm.yaml b/spec/std/isa/inst/V/vmnor.mm.yaml index 2e61687728..83634004fd 100644 --- a/spec/std/isa/inst/V/vmnor.mm.yaml +++ b/spec/std/isa/inst/V/vmnor.mm.yaml @@ -9,7 +9,9 @@ name: vmnor.mm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1 encoding: match: 0111101----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmor.mm.yaml b/spec/std/isa/inst/V/vmor.mm.yaml index 8e499827b8..c94cd7f83d 100644 --- a/spec/std/isa/inst/V/vmor.mm.yaml +++ b/spec/std/isa/inst/V/vmor.mm.yaml @@ -9,7 +9,9 @@ name: vmor.mm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1 encoding: match: 0110101----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmorn.mm.yaml b/spec/std/isa/inst/V/vmorn.mm.yaml index 3e27ba40cc..42050aea76 100644 --- a/spec/std/isa/inst/V/vmorn.mm.yaml +++ b/spec/std/isa/inst/V/vmorn.mm.yaml @@ -9,7 +9,9 @@ name: vmorn.mm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1 encoding: match: 0111001----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmsbc.vv.yaml b/spec/std/isa/inst/V/vmsbc.vv.yaml index c329b3c5dc..e2c5466b55 100644 --- a/spec/std/isa/inst/V/vmsbc.vv.yaml +++ b/spec/std/isa/inst/V/vmsbc.vv.yaml @@ -9,7 +9,9 @@ name: vmsbc.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1 encoding: match: 0100111----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmsbc.vvm.yaml b/spec/std/isa/inst/V/vmsbc.vvm.yaml index f3fe8d0698..ed5c4abacc 100644 --- a/spec/std/isa/inst/V/vmsbc.vvm.yaml +++ b/spec/std/isa/inst/V/vmsbc.vvm.yaml @@ -9,7 +9,9 @@ name: vmsbc.vvm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, v0 encoding: match: 0100110----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmsbc.vx.yaml b/spec/std/isa/inst/V/vmsbc.vx.yaml index b8bc0b7a80..e03cec8964 100644 --- a/spec/std/isa/inst/V/vmsbc.vx.yaml +++ b/spec/std/isa/inst/V/vmsbc.vx.yaml @@ -9,7 +9,9 @@ name: vmsbc.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1 encoding: match: 0100111----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmsbc.vxm.yaml b/spec/std/isa/inst/V/vmsbc.vxm.yaml index 0055a7650e..467ba270bd 100644 --- a/spec/std/isa/inst/V/vmsbc.vxm.yaml +++ b/spec/std/isa/inst/V/vmsbc.vxm.yaml @@ -9,7 +9,9 @@ name: vmsbc.vxm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, v0 encoding: match: 0100110----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmsbf.m.yaml b/spec/std/isa/inst/V/vmsbf.m.yaml index a33ecea16a..4e21912769 100644 --- a/spec/std/isa/inst/V/vmsbf.m.yaml +++ b/spec/std/isa/inst/V/vmsbf.m.yaml @@ -9,7 +9,9 @@ name: vmsbf.m long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010100------00001010-----1010111 diff --git a/spec/std/isa/inst/V/vmseq.vi.yaml b/spec/std/isa/inst/V/vmseq.vi.yaml index b5e87b5d1f..bc6a77dbf7 100644 --- a/spec/std/isa/inst/V/vmseq.vi.yaml +++ b/spec/std/isa/inst/V/vmseq.vi.yaml @@ -9,7 +9,9 @@ name: vmseq.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 011000-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vmseq.vv.yaml b/spec/std/isa/inst/V/vmseq.vv.yaml index 60e7f2919d..199b366765 100644 --- a/spec/std/isa/inst/V/vmseq.vv.yaml +++ b/spec/std/isa/inst/V/vmseq.vv.yaml @@ -9,7 +9,9 @@ name: vmseq.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 011000-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmseq.vx.yaml b/spec/std/isa/inst/V/vmseq.vx.yaml index bff96cf93f..1e9de97423 100644 --- a/spec/std/isa/inst/V/vmseq.vx.yaml +++ b/spec/std/isa/inst/V/vmseq.vx.yaml @@ -9,7 +9,9 @@ name: vmseq.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 011000-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmsgt.vi.yaml b/spec/std/isa/inst/V/vmsgt.vi.yaml index 201245d353..bc9a8a31ed 100644 --- a/spec/std/isa/inst/V/vmsgt.vi.yaml +++ b/spec/std/isa/inst/V/vmsgt.vi.yaml @@ -9,7 +9,9 @@ name: vmsgt.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 011111-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vmsgt.vx.yaml b/spec/std/isa/inst/V/vmsgt.vx.yaml index 85be3e2eba..0056485182 100644 --- a/spec/std/isa/inst/V/vmsgt.vx.yaml +++ b/spec/std/isa/inst/V/vmsgt.vx.yaml @@ -9,7 +9,9 @@ name: vmsgt.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 011111-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmsgtu.vi.yaml b/spec/std/isa/inst/V/vmsgtu.vi.yaml index bdcddb3c88..fd7c8e9492 100644 --- a/spec/std/isa/inst/V/vmsgtu.vi.yaml +++ b/spec/std/isa/inst/V/vmsgtu.vi.yaml @@ -9,7 +9,9 @@ name: vmsgtu.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 011110-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vmsgtu.vx.yaml b/spec/std/isa/inst/V/vmsgtu.vx.yaml index 1c8542e150..238ae044b4 100644 --- a/spec/std/isa/inst/V/vmsgtu.vx.yaml +++ b/spec/std/isa/inst/V/vmsgtu.vx.yaml @@ -9,7 +9,9 @@ name: vmsgtu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 011110-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmsif.m.yaml b/spec/std/isa/inst/V/vmsif.m.yaml index 02f8cf487c..a122f970a3 100644 --- a/spec/std/isa/inst/V/vmsif.m.yaml +++ b/spec/std/isa/inst/V/vmsif.m.yaml @@ -9,7 +9,9 @@ name: vmsif.m long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010100------00011010-----1010111 diff --git a/spec/std/isa/inst/V/vmsle.vi.yaml b/spec/std/isa/inst/V/vmsle.vi.yaml index 6de62232ba..7a797d21af 100644 --- a/spec/std/isa/inst/V/vmsle.vi.yaml +++ b/spec/std/isa/inst/V/vmsle.vi.yaml @@ -9,7 +9,9 @@ name: vmsle.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 011101-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vmsle.vv.yaml b/spec/std/isa/inst/V/vmsle.vv.yaml index 9245a201f7..ab03adc5a8 100644 --- a/spec/std/isa/inst/V/vmsle.vv.yaml +++ b/spec/std/isa/inst/V/vmsle.vv.yaml @@ -9,7 +9,9 @@ name: vmsle.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 011101-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmsle.vx.yaml b/spec/std/isa/inst/V/vmsle.vx.yaml index fb6490e026..fe2f4ccb63 100644 --- a/spec/std/isa/inst/V/vmsle.vx.yaml +++ b/spec/std/isa/inst/V/vmsle.vx.yaml @@ -9,7 +9,9 @@ name: vmsle.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 011101-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmsleu.vi.yaml b/spec/std/isa/inst/V/vmsleu.vi.yaml index c3717adf22..475e7d23cc 100644 --- a/spec/std/isa/inst/V/vmsleu.vi.yaml +++ b/spec/std/isa/inst/V/vmsleu.vi.yaml @@ -9,7 +9,9 @@ name: vmsleu.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 011100-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vmsleu.vv.yaml b/spec/std/isa/inst/V/vmsleu.vv.yaml index a366edaf15..ad30a1c9d1 100644 --- a/spec/std/isa/inst/V/vmsleu.vv.yaml +++ b/spec/std/isa/inst/V/vmsleu.vv.yaml @@ -9,7 +9,9 @@ name: vmsleu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 011100-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmsleu.vx.yaml b/spec/std/isa/inst/V/vmsleu.vx.yaml index 96ccbb29f5..619ae698be 100644 --- a/spec/std/isa/inst/V/vmsleu.vx.yaml +++ b/spec/std/isa/inst/V/vmsleu.vx.yaml @@ -9,7 +9,9 @@ name: vmsleu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 011100-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmslt.vv.yaml b/spec/std/isa/inst/V/vmslt.vv.yaml index b0fc424858..96111c9dcd 100644 --- a/spec/std/isa/inst/V/vmslt.vv.yaml +++ b/spec/std/isa/inst/V/vmslt.vv.yaml @@ -9,7 +9,9 @@ name: vmslt.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 011011-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmslt.vx.yaml b/spec/std/isa/inst/V/vmslt.vx.yaml index 1eac8161c1..57276a1514 100644 --- a/spec/std/isa/inst/V/vmslt.vx.yaml +++ b/spec/std/isa/inst/V/vmslt.vx.yaml @@ -9,7 +9,9 @@ name: vmslt.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 011011-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmsltu.vv.yaml b/spec/std/isa/inst/V/vmsltu.vv.yaml index 53e1c6ae71..bcf14681bd 100644 --- a/spec/std/isa/inst/V/vmsltu.vv.yaml +++ b/spec/std/isa/inst/V/vmsltu.vv.yaml @@ -9,7 +9,9 @@ name: vmsltu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 011010-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmsltu.vx.yaml b/spec/std/isa/inst/V/vmsltu.vx.yaml index 5103761014..223521d576 100644 --- a/spec/std/isa/inst/V/vmsltu.vx.yaml +++ b/spec/std/isa/inst/V/vmsltu.vx.yaml @@ -9,7 +9,9 @@ name: vmsltu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 011010-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmsne.vi.yaml b/spec/std/isa/inst/V/vmsne.vi.yaml index 2cd678f7f2..daf0c3efd2 100644 --- a/spec/std/isa/inst/V/vmsne.vi.yaml +++ b/spec/std/isa/inst/V/vmsne.vi.yaml @@ -9,7 +9,9 @@ name: vmsne.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 011001-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vmsne.vv.yaml b/spec/std/isa/inst/V/vmsne.vv.yaml index f256edf979..7d8ea90510 100644 --- a/spec/std/isa/inst/V/vmsne.vv.yaml +++ b/spec/std/isa/inst/V/vmsne.vv.yaml @@ -9,7 +9,9 @@ name: vmsne.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 011001-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vmsne.vx.yaml b/spec/std/isa/inst/V/vmsne.vx.yaml index 66d2a9f122..3ac01df91a 100644 --- a/spec/std/isa/inst/V/vmsne.vx.yaml +++ b/spec/std/isa/inst/V/vmsne.vx.yaml @@ -9,7 +9,9 @@ name: vmsne.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 011001-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vmsof.m.yaml b/spec/std/isa/inst/V/vmsof.m.yaml index 64c1a0a6c7..33c4e724fd 100644 --- a/spec/std/isa/inst/V/vmsof.m.yaml +++ b/spec/std/isa/inst/V/vmsof.m.yaml @@ -9,7 +9,9 @@ name: vmsof.m long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010100------00010010-----1010111 diff --git a/spec/std/isa/inst/V/vmul.vv.yaml b/spec/std/isa/inst/V/vmul.vv.yaml index 9752fd9c26..a302db571b 100644 --- a/spec/std/isa/inst/V/vmul.vv.yaml +++ b/spec/std/isa/inst/V/vmul.vv.yaml @@ -9,7 +9,9 @@ name: vmul.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100101-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmul.vx.yaml b/spec/std/isa/inst/V/vmul.vx.yaml index 6293b1ba50..517ce07126 100644 --- a/spec/std/isa/inst/V/vmul.vx.yaml +++ b/spec/std/isa/inst/V/vmul.vx.yaml @@ -9,7 +9,9 @@ name: vmul.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100101-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vmulh.vv.yaml b/spec/std/isa/inst/V/vmulh.vv.yaml index e51fa957eb..4acd891699 100644 --- a/spec/std/isa/inst/V/vmulh.vv.yaml +++ b/spec/std/isa/inst/V/vmulh.vv.yaml @@ -9,7 +9,9 @@ name: vmulh.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100111-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmulh.vx.yaml b/spec/std/isa/inst/V/vmulh.vx.yaml index 1135c05915..60d4572c87 100644 --- a/spec/std/isa/inst/V/vmulh.vx.yaml +++ b/spec/std/isa/inst/V/vmulh.vx.yaml @@ -9,7 +9,9 @@ name: vmulh.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100111-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vmulhsu.vv.yaml b/spec/std/isa/inst/V/vmulhsu.vv.yaml index 15f701ac46..a4d480da1c 100644 --- a/spec/std/isa/inst/V/vmulhsu.vv.yaml +++ b/spec/std/isa/inst/V/vmulhsu.vv.yaml @@ -9,7 +9,9 @@ name: vmulhsu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100110-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmulhsu.vx.yaml b/spec/std/isa/inst/V/vmulhsu.vx.yaml index 2a725d42b3..16bb241d17 100644 --- a/spec/std/isa/inst/V/vmulhsu.vx.yaml +++ b/spec/std/isa/inst/V/vmulhsu.vx.yaml @@ -9,7 +9,9 @@ name: vmulhsu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100110-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vmulhu.vv.yaml b/spec/std/isa/inst/V/vmulhu.vv.yaml index d5d03a1f92..8da5f426d8 100644 --- a/spec/std/isa/inst/V/vmulhu.vv.yaml +++ b/spec/std/isa/inst/V/vmulhu.vv.yaml @@ -9,7 +9,9 @@ name: vmulhu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100100-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmulhu.vx.yaml b/spec/std/isa/inst/V/vmulhu.vx.yaml index 7e4282f880..b45f69533f 100644 --- a/spec/std/isa/inst/V/vmulhu.vx.yaml +++ b/spec/std/isa/inst/V/vmulhu.vx.yaml @@ -9,7 +9,9 @@ name: vmulhu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100100-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vmv.s.x.yaml b/spec/std/isa/inst/V/vmv.s.x.yaml index 64884994a8..d4ee59a1e6 100644 --- a/spec/std/isa/inst/V/vmv.s.x.yaml +++ b/spec/std/isa/inst/V/vmv.s.x.yaml @@ -9,7 +9,9 @@ name: vmv.s.x long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, xs1 encoding: match: 010000100000-----110-----1010111 diff --git a/spec/std/isa/inst/V/vmv.v.i.yaml b/spec/std/isa/inst/V/vmv.v.i.yaml index 7e1529b38a..51f799f66a 100644 --- a/spec/std/isa/inst/V/vmv.v.i.yaml +++ b/spec/std/isa/inst/V/vmv.v.i.yaml @@ -9,7 +9,9 @@ name: vmv.v.i long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, imm encoding: match: 010111100000-----011-----1010111 diff --git a/spec/std/isa/inst/V/vmv.v.v.yaml b/spec/std/isa/inst/V/vmv.v.v.yaml index f69ffb4e8a..99cc3c4a64 100644 --- a/spec/std/isa/inst/V/vmv.v.v.yaml +++ b/spec/std/isa/inst/V/vmv.v.v.yaml @@ -9,7 +9,9 @@ name: vmv.v.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1 encoding: match: 010111100000-----000-----1010111 diff --git a/spec/std/isa/inst/V/vmv.v.x.yaml b/spec/std/isa/inst/V/vmv.v.x.yaml index a541d1a0af..1a66e8e0c0 100644 --- a/spec/std/isa/inst/V/vmv.v.x.yaml +++ b/spec/std/isa/inst/V/vmv.v.x.yaml @@ -9,7 +9,9 @@ name: vmv.v.x long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, xs1 encoding: match: 010111100000-----100-----1010111 diff --git a/spec/std/isa/inst/V/vmv.x.s.yaml b/spec/std/isa/inst/V/vmv.x.s.yaml index 91c249bfe0..23bfc9aac7 100644 --- a/spec/std/isa/inst/V/vmv.x.s.yaml +++ b/spec/std/isa/inst/V/vmv.x.s.yaml @@ -9,7 +9,9 @@ name: vmv.x.s long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: xd, vs2 encoding: match: 0100001-----00000010-----1010111 diff --git a/spec/std/isa/inst/V/vmv1r.v.yaml b/spec/std/isa/inst/V/vmv1r.v.yaml index b8f2265828..ba2e04ef5e 100644 --- a/spec/std/isa/inst/V/vmv1r.v.yaml +++ b/spec/std/isa/inst/V/vmv1r.v.yaml @@ -9,7 +9,9 @@ name: vmv1r.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2 encoding: match: 1001111-----00000011-----1010111 diff --git a/spec/std/isa/inst/V/vmv2r.v.yaml b/spec/std/isa/inst/V/vmv2r.v.yaml index d6c737b261..1f3ad2b9d6 100644 --- a/spec/std/isa/inst/V/vmv2r.v.yaml +++ b/spec/std/isa/inst/V/vmv2r.v.yaml @@ -9,7 +9,9 @@ name: vmv2r.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2 encoding: match: 1001111-----00001011-----1010111 diff --git a/spec/std/isa/inst/V/vmv4r.v.yaml b/spec/std/isa/inst/V/vmv4r.v.yaml index f81989a884..01e3316857 100644 --- a/spec/std/isa/inst/V/vmv4r.v.yaml +++ b/spec/std/isa/inst/V/vmv4r.v.yaml @@ -9,7 +9,9 @@ name: vmv4r.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2 encoding: match: 1001111-----00011011-----1010111 diff --git a/spec/std/isa/inst/V/vmv8r.v.yaml b/spec/std/isa/inst/V/vmv8r.v.yaml index a6aa8781e1..04131f65c1 100644 --- a/spec/std/isa/inst/V/vmv8r.v.yaml +++ b/spec/std/isa/inst/V/vmv8r.v.yaml @@ -9,7 +9,9 @@ name: vmv8r.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2 encoding: match: 1001111-----00111011-----1010111 diff --git a/spec/std/isa/inst/V/vmxnor.mm.yaml b/spec/std/isa/inst/V/vmxnor.mm.yaml index ee7411d878..deb8658277 100644 --- a/spec/std/isa/inst/V/vmxnor.mm.yaml +++ b/spec/std/isa/inst/V/vmxnor.mm.yaml @@ -9,7 +9,9 @@ name: vmxnor.mm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1 encoding: match: 0111111----------010-----1010111 diff --git a/spec/std/isa/inst/V/vmxor.mm.yaml b/spec/std/isa/inst/V/vmxor.mm.yaml index b5a7668094..d2a3ace2e9 100644 --- a/spec/std/isa/inst/V/vmxor.mm.yaml +++ b/spec/std/isa/inst/V/vmxor.mm.yaml @@ -9,7 +9,9 @@ name: vmxor.mm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1 encoding: match: 0110111----------010-----1010111 diff --git a/spec/std/isa/inst/V/vnclip.wi.yaml b/spec/std/isa/inst/V/vnclip.wi.yaml index d0e775464f..2a95b0917b 100644 --- a/spec/std/isa/inst/V/vnclip.wi.yaml +++ b/spec/std/isa/inst/V/vnclip.wi.yaml @@ -9,7 +9,9 @@ name: vnclip.wi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 101111-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vnclip.wv.yaml b/spec/std/isa/inst/V/vnclip.wv.yaml index 4c89e577e0..d3ad53d6ed 100644 --- a/spec/std/isa/inst/V/vnclip.wv.yaml +++ b/spec/std/isa/inst/V/vnclip.wv.yaml @@ -9,7 +9,9 @@ name: vnclip.wv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 101111-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vnclip.wx.yaml b/spec/std/isa/inst/V/vnclip.wx.yaml index 6361945bbd..db64b746c4 100644 --- a/spec/std/isa/inst/V/vnclip.wx.yaml +++ b/spec/std/isa/inst/V/vnclip.wx.yaml @@ -9,7 +9,9 @@ name: vnclip.wx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 101111-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vnclipu.wi.yaml b/spec/std/isa/inst/V/vnclipu.wi.yaml index a6e0c84fea..c2616b301c 100644 --- a/spec/std/isa/inst/V/vnclipu.wi.yaml +++ b/spec/std/isa/inst/V/vnclipu.wi.yaml @@ -9,7 +9,9 @@ name: vnclipu.wi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 101110-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vnclipu.wv.yaml b/spec/std/isa/inst/V/vnclipu.wv.yaml index 6d96d08390..2d674722ef 100644 --- a/spec/std/isa/inst/V/vnclipu.wv.yaml +++ b/spec/std/isa/inst/V/vnclipu.wv.yaml @@ -9,7 +9,9 @@ name: vnclipu.wv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 101110-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vnclipu.wx.yaml b/spec/std/isa/inst/V/vnclipu.wx.yaml index ddbaa45b6a..95521674aa 100644 --- a/spec/std/isa/inst/V/vnclipu.wx.yaml +++ b/spec/std/isa/inst/V/vnclipu.wx.yaml @@ -9,7 +9,9 @@ name: vnclipu.wx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 101110-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vnmsac.vv.yaml b/spec/std/isa/inst/V/vnmsac.vv.yaml index 26fcbca275..32cab884ae 100644 --- a/spec/std/isa/inst/V/vnmsac.vv.yaml +++ b/spec/std/isa/inst/V/vnmsac.vv.yaml @@ -9,7 +9,9 @@ name: vnmsac.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 101111-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vnmsac.vx.yaml b/spec/std/isa/inst/V/vnmsac.vx.yaml index 0535aef0a1..388c8d8c5e 100644 --- a/spec/std/isa/inst/V/vnmsac.vx.yaml +++ b/spec/std/isa/inst/V/vnmsac.vx.yaml @@ -9,7 +9,9 @@ name: vnmsac.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, xs1, vs2, vm encoding: match: 101111-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vnmsub.vv.yaml b/spec/std/isa/inst/V/vnmsub.vv.yaml index d4d9b5973b..3d6d446d9c 100644 --- a/spec/std/isa/inst/V/vnmsub.vv.yaml +++ b/spec/std/isa/inst/V/vnmsub.vv.yaml @@ -9,7 +9,9 @@ name: vnmsub.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 101011-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vnmsub.vx.yaml b/spec/std/isa/inst/V/vnmsub.vx.yaml index 4c476e3922..2a09c2caad 100644 --- a/spec/std/isa/inst/V/vnmsub.vx.yaml +++ b/spec/std/isa/inst/V/vnmsub.vx.yaml @@ -9,7 +9,9 @@ name: vnmsub.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, xs1, vs2, vm encoding: match: 101011-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vnsra.wi.yaml b/spec/std/isa/inst/V/vnsra.wi.yaml index a164056d84..f5ef2e01b8 100644 --- a/spec/std/isa/inst/V/vnsra.wi.yaml +++ b/spec/std/isa/inst/V/vnsra.wi.yaml @@ -9,7 +9,9 @@ name: vnsra.wi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 101101-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vnsra.wv.yaml b/spec/std/isa/inst/V/vnsra.wv.yaml index 093ddda46f..77ef0a4194 100644 --- a/spec/std/isa/inst/V/vnsra.wv.yaml +++ b/spec/std/isa/inst/V/vnsra.wv.yaml @@ -9,7 +9,9 @@ name: vnsra.wv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 101101-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vnsra.wx.yaml b/spec/std/isa/inst/V/vnsra.wx.yaml index cfe77d5dce..0fe44155ff 100644 --- a/spec/std/isa/inst/V/vnsra.wx.yaml +++ b/spec/std/isa/inst/V/vnsra.wx.yaml @@ -9,7 +9,9 @@ name: vnsra.wx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 101101-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vnsrl.wi.yaml b/spec/std/isa/inst/V/vnsrl.wi.yaml index ef31edd1c1..e5e5ad66dd 100644 --- a/spec/std/isa/inst/V/vnsrl.wi.yaml +++ b/spec/std/isa/inst/V/vnsrl.wi.yaml @@ -9,7 +9,9 @@ name: vnsrl.wi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 101100-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vnsrl.wv.yaml b/spec/std/isa/inst/V/vnsrl.wv.yaml index 83f6ff3e23..12d3d2b0ab 100644 --- a/spec/std/isa/inst/V/vnsrl.wv.yaml +++ b/spec/std/isa/inst/V/vnsrl.wv.yaml @@ -9,7 +9,9 @@ name: vnsrl.wv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 101100-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vnsrl.wx.yaml b/spec/std/isa/inst/V/vnsrl.wx.yaml index 6f4b428689..421b425037 100644 --- a/spec/std/isa/inst/V/vnsrl.wx.yaml +++ b/spec/std/isa/inst/V/vnsrl.wx.yaml @@ -9,7 +9,9 @@ name: vnsrl.wx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 101100-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vor.vi.yaml b/spec/std/isa/inst/V/vor.vi.yaml index e7322df33c..65f1b0946f 100644 --- a/spec/std/isa/inst/V/vor.vi.yaml +++ b/spec/std/isa/inst/V/vor.vi.yaml @@ -9,7 +9,9 @@ name: vor.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 001010-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vor.vv.yaml b/spec/std/isa/inst/V/vor.vv.yaml index 6f55fc7f99..73dfb60ee0 100644 --- a/spec/std/isa/inst/V/vor.vv.yaml +++ b/spec/std/isa/inst/V/vor.vv.yaml @@ -9,7 +9,9 @@ name: vor.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 001010-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vor.vx.yaml b/spec/std/isa/inst/V/vor.vx.yaml index 29b357bc34..254334fa49 100644 --- a/spec/std/isa/inst/V/vor.vx.yaml +++ b/spec/std/isa/inst/V/vor.vx.yaml @@ -9,7 +9,9 @@ name: vor.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 001010-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vredand.vs.yaml b/spec/std/isa/inst/V/vredand.vs.yaml index bbd2a7b0ee..2e073109bf 100644 --- a/spec/std/isa/inst/V/vredand.vs.yaml +++ b/spec/std/isa/inst/V/vredand.vs.yaml @@ -9,7 +9,9 @@ name: vredand.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000001-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vredmax.vs.yaml b/spec/std/isa/inst/V/vredmax.vs.yaml index ce5a612ec1..d62b4943dd 100644 --- a/spec/std/isa/inst/V/vredmax.vs.yaml +++ b/spec/std/isa/inst/V/vredmax.vs.yaml @@ -9,7 +9,9 @@ name: vredmax.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000111-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vredmaxu.vs.yaml b/spec/std/isa/inst/V/vredmaxu.vs.yaml index 3153d25de5..7af4e2aa6b 100644 --- a/spec/std/isa/inst/V/vredmaxu.vs.yaml +++ b/spec/std/isa/inst/V/vredmaxu.vs.yaml @@ -9,7 +9,9 @@ name: vredmaxu.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000110-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vredmin.vs.yaml b/spec/std/isa/inst/V/vredmin.vs.yaml index 5559402c25..2e7c3e3d11 100644 --- a/spec/std/isa/inst/V/vredmin.vs.yaml +++ b/spec/std/isa/inst/V/vredmin.vs.yaml @@ -9,7 +9,9 @@ name: vredmin.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000101-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vredminu.vs.yaml b/spec/std/isa/inst/V/vredminu.vs.yaml index 248ad886ff..e037ab34e1 100644 --- a/spec/std/isa/inst/V/vredminu.vs.yaml +++ b/spec/std/isa/inst/V/vredminu.vs.yaml @@ -9,7 +9,9 @@ name: vredminu.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000100-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vredor.vs.yaml b/spec/std/isa/inst/V/vredor.vs.yaml index 72eff80590..22b12c14aa 100644 --- a/spec/std/isa/inst/V/vredor.vs.yaml +++ b/spec/std/isa/inst/V/vredor.vs.yaml @@ -9,7 +9,9 @@ name: vredor.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000010-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vredsum.vs.yaml b/spec/std/isa/inst/V/vredsum.vs.yaml index d66db793ea..a69d263f00 100644 --- a/spec/std/isa/inst/V/vredsum.vs.yaml +++ b/spec/std/isa/inst/V/vredsum.vs.yaml @@ -9,7 +9,9 @@ name: vredsum.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000000-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vredxor.vs.yaml b/spec/std/isa/inst/V/vredxor.vs.yaml index 40d7b008e3..c96d30e39a 100644 --- a/spec/std/isa/inst/V/vredxor.vs.yaml +++ b/spec/std/isa/inst/V/vredxor.vs.yaml @@ -9,7 +9,9 @@ name: vredxor.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000011-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vrem.vv.yaml b/spec/std/isa/inst/V/vrem.vv.yaml index f660fa8a39..cdab37157c 100644 --- a/spec/std/isa/inst/V/vrem.vv.yaml +++ b/spec/std/isa/inst/V/vrem.vv.yaml @@ -9,7 +9,9 @@ name: vrem.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100011-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vrem.vx.yaml b/spec/std/isa/inst/V/vrem.vx.yaml index 4c64c830c2..24f77098dc 100644 --- a/spec/std/isa/inst/V/vrem.vx.yaml +++ b/spec/std/isa/inst/V/vrem.vx.yaml @@ -9,7 +9,9 @@ name: vrem.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100011-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vremu.vv.yaml b/spec/std/isa/inst/V/vremu.vv.yaml index 0a5b54e9d9..66f2104c13 100644 --- a/spec/std/isa/inst/V/vremu.vv.yaml +++ b/spec/std/isa/inst/V/vremu.vv.yaml @@ -9,7 +9,9 @@ name: vremu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100010-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vremu.vx.yaml b/spec/std/isa/inst/V/vremu.vx.yaml index 0ca4295a50..2ac68cc95f 100644 --- a/spec/std/isa/inst/V/vremu.vx.yaml +++ b/spec/std/isa/inst/V/vremu.vx.yaml @@ -9,7 +9,9 @@ name: vremu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100010-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vrgather.vi.yaml b/spec/std/isa/inst/V/vrgather.vi.yaml index 9d91f5d428..fcee2685ab 100644 --- a/spec/std/isa/inst/V/vrgather.vi.yaml +++ b/spec/std/isa/inst/V/vrgather.vi.yaml @@ -9,7 +9,9 @@ name: vrgather.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 001100-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vrgather.vv.yaml b/spec/std/isa/inst/V/vrgather.vv.yaml index fb9a885c4e..b3aba6c1a8 100644 --- a/spec/std/isa/inst/V/vrgather.vv.yaml +++ b/spec/std/isa/inst/V/vrgather.vv.yaml @@ -9,7 +9,9 @@ name: vrgather.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 001100-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vrgather.vx.yaml b/spec/std/isa/inst/V/vrgather.vx.yaml index d05a7e5efe..85c7c8897b 100644 --- a/spec/std/isa/inst/V/vrgather.vx.yaml +++ b/spec/std/isa/inst/V/vrgather.vx.yaml @@ -9,7 +9,9 @@ name: vrgather.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 001100-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vrgatherei16.vv.yaml b/spec/std/isa/inst/V/vrgatherei16.vv.yaml index f511755bc4..cf1604ad79 100644 --- a/spec/std/isa/inst/V/vrgatherei16.vv.yaml +++ b/spec/std/isa/inst/V/vrgatherei16.vv.yaml @@ -9,7 +9,9 @@ name: vrgatherei16.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 001110-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vrsub.vi.yaml b/spec/std/isa/inst/V/vrsub.vi.yaml index ac698d3500..9bf9e32d07 100644 --- a/spec/std/isa/inst/V/vrsub.vi.yaml +++ b/spec/std/isa/inst/V/vrsub.vi.yaml @@ -9,7 +9,9 @@ name: vrsub.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 000011-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vrsub.vx.yaml b/spec/std/isa/inst/V/vrsub.vx.yaml index def7671d5f..a881436a5a 100644 --- a/spec/std/isa/inst/V/vrsub.vx.yaml +++ b/spec/std/isa/inst/V/vrsub.vx.yaml @@ -9,7 +9,9 @@ name: vrsub.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 000011-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vs1r.v.yaml b/spec/std/isa/inst/V/vs1r.v.yaml index 956afc6969..36e88c526c 100644 --- a/spec/std/isa/inst/V/vs1r.v.yaml +++ b/spec/std/isa/inst/V/vs1r.v.yaml @@ -9,7 +9,9 @@ name: vs1r.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1) encoding: match: 000000101000-----000-----0100111 diff --git a/spec/std/isa/inst/V/vs2r.v.yaml b/spec/std/isa/inst/V/vs2r.v.yaml index e572d00c21..646fcf6611 100644 --- a/spec/std/isa/inst/V/vs2r.v.yaml +++ b/spec/std/isa/inst/V/vs2r.v.yaml @@ -9,7 +9,9 @@ name: vs2r.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1) encoding: match: 001000101000-----000-----0100111 diff --git a/spec/std/isa/inst/V/vs4r.v.yaml b/spec/std/isa/inst/V/vs4r.v.yaml index 52e60023ee..08b8787f7d 100644 --- a/spec/std/isa/inst/V/vs4r.v.yaml +++ b/spec/std/isa/inst/V/vs4r.v.yaml @@ -9,7 +9,9 @@ name: vs4r.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1) encoding: match: 011000101000-----000-----0100111 diff --git a/spec/std/isa/inst/V/vs8r.v.yaml b/spec/std/isa/inst/V/vs8r.v.yaml index 42325547fd..de52ac17f1 100644 --- a/spec/std/isa/inst/V/vs8r.v.yaml +++ b/spec/std/isa/inst/V/vs8r.v.yaml @@ -9,7 +9,9 @@ name: vs8r.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1) encoding: match: 111000101000-----000-----0100111 diff --git a/spec/std/isa/inst/V/vsadd.vi.yaml b/spec/std/isa/inst/V/vsadd.vi.yaml index 756714cae7..e8a65bdf5f 100644 --- a/spec/std/isa/inst/V/vsadd.vi.yaml +++ b/spec/std/isa/inst/V/vsadd.vi.yaml @@ -9,7 +9,9 @@ name: vsadd.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 100001-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vsadd.vv.yaml b/spec/std/isa/inst/V/vsadd.vv.yaml index 12e12b4424..fce943cdf9 100644 --- a/spec/std/isa/inst/V/vsadd.vv.yaml +++ b/spec/std/isa/inst/V/vsadd.vv.yaml @@ -9,7 +9,9 @@ name: vsadd.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100001-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vsadd.vx.yaml b/spec/std/isa/inst/V/vsadd.vx.yaml index 7351522d20..2d77892647 100644 --- a/spec/std/isa/inst/V/vsadd.vx.yaml +++ b/spec/std/isa/inst/V/vsadd.vx.yaml @@ -9,7 +9,9 @@ name: vsadd.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100001-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vsaddu.vi.yaml b/spec/std/isa/inst/V/vsaddu.vi.yaml index 8233ca7c1e..d9fd7e0205 100644 --- a/spec/std/isa/inst/V/vsaddu.vi.yaml +++ b/spec/std/isa/inst/V/vsaddu.vi.yaml @@ -9,7 +9,9 @@ name: vsaddu.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 100000-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vsaddu.vv.yaml b/spec/std/isa/inst/V/vsaddu.vv.yaml index 4014bc89c4..7412c3909e 100644 --- a/spec/std/isa/inst/V/vsaddu.vv.yaml +++ b/spec/std/isa/inst/V/vsaddu.vv.yaml @@ -9,7 +9,9 @@ name: vsaddu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100000-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vsaddu.vx.yaml b/spec/std/isa/inst/V/vsaddu.vx.yaml index 39a1b659cf..79bfac15a9 100644 --- a/spec/std/isa/inst/V/vsaddu.vx.yaml +++ b/spec/std/isa/inst/V/vsaddu.vx.yaml @@ -9,7 +9,9 @@ name: vsaddu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100000-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vsbc.vvm.yaml b/spec/std/isa/inst/V/vsbc.vvm.yaml index b1a4f8e932..f68fd58169 100644 --- a/spec/std/isa/inst/V/vsbc.vvm.yaml +++ b/spec/std/isa/inst/V/vsbc.vvm.yaml @@ -9,7 +9,9 @@ name: vsbc.vvm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, v0 encoding: match: 0100100----------000-----1010111 diff --git a/spec/std/isa/inst/V/vsbc.vxm.yaml b/spec/std/isa/inst/V/vsbc.vxm.yaml index 2dd6b1d523..4c1d5abf5a 100644 --- a/spec/std/isa/inst/V/vsbc.vxm.yaml +++ b/spec/std/isa/inst/V/vsbc.vxm.yaml @@ -9,7 +9,9 @@ name: vsbc.vxm long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, v0 encoding: match: 0100100----------100-----1010111 diff --git a/spec/std/isa/inst/V/vse16.v.yaml b/spec/std/isa/inst/V/vse16.v.yaml index 82e0ebd8dc..7934810ed3 100644 --- a/spec/std/isa/inst/V/vse16.v.yaml +++ b/spec/std/isa/inst/V/vse16.v.yaml @@ -9,7 +9,9 @@ name: vse16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 000000-00000-----101-----0100111 diff --git a/spec/std/isa/inst/V/vse32.v.yaml b/spec/std/isa/inst/V/vse32.v.yaml index e7c4a70b2a..0eaf2636e3 100644 --- a/spec/std/isa/inst/V/vse32.v.yaml +++ b/spec/std/isa/inst/V/vse32.v.yaml @@ -9,7 +9,9 @@ name: vse32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 000000-00000-----110-----0100111 diff --git a/spec/std/isa/inst/V/vse64.v.yaml b/spec/std/isa/inst/V/vse64.v.yaml index 7ab5295ff7..888f5c2aef 100644 --- a/spec/std/isa/inst/V/vse64.v.yaml +++ b/spec/std/isa/inst/V/vse64.v.yaml @@ -9,7 +9,9 @@ name: vse64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 000000-00000-----111-----0100111 diff --git a/spec/std/isa/inst/V/vse8.v.yaml b/spec/std/isa/inst/V/vse8.v.yaml index 8af671b7e5..e3d77fc5da 100644 --- a/spec/std/isa/inst/V/vse8.v.yaml +++ b/spec/std/isa/inst/V/vse8.v.yaml @@ -9,7 +9,9 @@ name: vse8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 000000-00000-----000-----0100111 diff --git a/spec/std/isa/inst/V/vsetivli.yaml b/spec/std/isa/inst/V/vsetivli.yaml index abba15668d..6bd744ee4a 100644 --- a/spec/std/isa/inst/V/vsetivli.yaml +++ b/spec/std/isa/inst/V/vsetivli.yaml @@ -9,7 +9,9 @@ name: vsetivli long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: xd, uimm, vtypei encoding: match: 11---------------111-----1010111 diff --git a/spec/std/isa/inst/V/vsetvl.yaml b/spec/std/isa/inst/V/vsetvl.yaml index 81b49a6f42..c153b0f80d 100644 --- a/spec/std/isa/inst/V/vsetvl.yaml +++ b/spec/std/isa/inst/V/vsetvl.yaml @@ -9,7 +9,9 @@ name: vsetvl long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: xd, xs1, xs2 encoding: match: 1000000----------111-----1010111 diff --git a/spec/std/isa/inst/V/vsetvli.yaml b/spec/std/isa/inst/V/vsetvli.yaml index 49e737bc13..123408517f 100644 --- a/spec/std/isa/inst/V/vsetvli.yaml +++ b/spec/std/isa/inst/V/vsetvli.yaml @@ -9,7 +9,9 @@ name: vsetvli long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: xd, xs1, vtypei encoding: match: 0----------------111-----1010111 diff --git a/spec/std/isa/inst/V/vsext.vf2.yaml b/spec/std/isa/inst/V/vsext.vf2.yaml index de436257ee..be143b5b97 100644 --- a/spec/std/isa/inst/V/vsext.vf2.yaml +++ b/spec/std/isa/inst/V/vsext.vf2.yaml @@ -9,7 +9,9 @@ name: vsext.vf2 long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------00111010-----1010111 diff --git a/spec/std/isa/inst/V/vsext.vf4.yaml b/spec/std/isa/inst/V/vsext.vf4.yaml index 09c20601ce..41447245f2 100644 --- a/spec/std/isa/inst/V/vsext.vf4.yaml +++ b/spec/std/isa/inst/V/vsext.vf4.yaml @@ -9,7 +9,9 @@ name: vsext.vf4 long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------00101010-----1010111 diff --git a/spec/std/isa/inst/V/vsext.vf8.yaml b/spec/std/isa/inst/V/vsext.vf8.yaml index 755543d106..079e791d85 100644 --- a/spec/std/isa/inst/V/vsext.vf8.yaml +++ b/spec/std/isa/inst/V/vsext.vf8.yaml @@ -9,7 +9,9 @@ name: vsext.vf8 long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------00011010-----1010111 diff --git a/spec/std/isa/inst/V/vslide1down.vx.yaml b/spec/std/isa/inst/V/vslide1down.vx.yaml index edea9aa4fe..7d026ce2b5 100644 --- a/spec/std/isa/inst/V/vslide1down.vx.yaml +++ b/spec/std/isa/inst/V/vslide1down.vx.yaml @@ -9,7 +9,9 @@ name: vslide1down.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 001111-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vslide1up.vx.yaml b/spec/std/isa/inst/V/vslide1up.vx.yaml index 13393d4527..dd650ec14b 100644 --- a/spec/std/isa/inst/V/vslide1up.vx.yaml +++ b/spec/std/isa/inst/V/vslide1up.vx.yaml @@ -9,7 +9,9 @@ name: vslide1up.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 001110-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vslidedown.vi.yaml b/spec/std/isa/inst/V/vslidedown.vi.yaml index 167b01c222..46535feab0 100644 --- a/spec/std/isa/inst/V/vslidedown.vi.yaml +++ b/spec/std/isa/inst/V/vslidedown.vi.yaml @@ -9,7 +9,9 @@ name: vslidedown.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 001111-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vslidedown.vx.yaml b/spec/std/isa/inst/V/vslidedown.vx.yaml index 0f41cdcb8e..f69025a3d3 100644 --- a/spec/std/isa/inst/V/vslidedown.vx.yaml +++ b/spec/std/isa/inst/V/vslidedown.vx.yaml @@ -9,7 +9,9 @@ name: vslidedown.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 001111-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vslideup.vi.yaml b/spec/std/isa/inst/V/vslideup.vi.yaml index 7e959fda98..8dafdb42c3 100644 --- a/spec/std/isa/inst/V/vslideup.vi.yaml +++ b/spec/std/isa/inst/V/vslideup.vi.yaml @@ -9,7 +9,9 @@ name: vslideup.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 001110-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vslideup.vx.yaml b/spec/std/isa/inst/V/vslideup.vx.yaml index 52d068bfeb..67e4c57bea 100644 --- a/spec/std/isa/inst/V/vslideup.vx.yaml +++ b/spec/std/isa/inst/V/vslideup.vx.yaml @@ -9,7 +9,9 @@ name: vslideup.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 001110-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vsll.vi.yaml b/spec/std/isa/inst/V/vsll.vi.yaml index 0bdc557d49..cca96cab66 100644 --- a/spec/std/isa/inst/V/vsll.vi.yaml +++ b/spec/std/isa/inst/V/vsll.vi.yaml @@ -9,7 +9,9 @@ name: vsll.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 100101-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vsll.vv.yaml b/spec/std/isa/inst/V/vsll.vv.yaml index 1c5f005d87..f738d234b4 100644 --- a/spec/std/isa/inst/V/vsll.vv.yaml +++ b/spec/std/isa/inst/V/vsll.vv.yaml @@ -9,7 +9,9 @@ name: vsll.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100101-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vsll.vx.yaml b/spec/std/isa/inst/V/vsll.vx.yaml index aa35d19ec9..73634bb702 100644 --- a/spec/std/isa/inst/V/vsll.vx.yaml +++ b/spec/std/isa/inst/V/vsll.vx.yaml @@ -9,7 +9,9 @@ name: vsll.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100101-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vsm.v.yaml b/spec/std/isa/inst/V/vsm.v.yaml index 0c22bd439f..377833f108 100644 --- a/spec/std/isa/inst/V/vsm.v.yaml +++ b/spec/std/isa/inst/V/vsm.v.yaml @@ -9,7 +9,9 @@ name: vsm.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1) encoding: match: 000000101011-----000-----0100111 diff --git a/spec/std/isa/inst/V/vsmul.vv.yaml b/spec/std/isa/inst/V/vsmul.vv.yaml index ad781091c3..cc0c269173 100644 --- a/spec/std/isa/inst/V/vsmul.vv.yaml +++ b/spec/std/isa/inst/V/vsmul.vv.yaml @@ -9,7 +9,9 @@ name: vsmul.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100111-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vsmul.vx.yaml b/spec/std/isa/inst/V/vsmul.vx.yaml index a075194b09..58fa0524bd 100644 --- a/spec/std/isa/inst/V/vsmul.vx.yaml +++ b/spec/std/isa/inst/V/vsmul.vx.yaml @@ -9,7 +9,9 @@ name: vsmul.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100111-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vsoxei16.v.yaml b/spec/std/isa/inst/V/vsoxei16.v.yaml index ec482cffd1..13a360bbea 100644 --- a/spec/std/isa/inst/V/vsoxei16.v.yaml +++ b/spec/std/isa/inst/V/vsoxei16.v.yaml @@ -9,7 +9,9 @@ name: vsoxei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 000011-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsoxei32.v.yaml b/spec/std/isa/inst/V/vsoxei32.v.yaml index 97e2579855..0dbcf62a3d 100644 --- a/spec/std/isa/inst/V/vsoxei32.v.yaml +++ b/spec/std/isa/inst/V/vsoxei32.v.yaml @@ -9,7 +9,9 @@ name: vsoxei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 000011-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsoxei64.v.yaml b/spec/std/isa/inst/V/vsoxei64.v.yaml index 318ec9473b..3725e87980 100644 --- a/spec/std/isa/inst/V/vsoxei64.v.yaml +++ b/spec/std/isa/inst/V/vsoxei64.v.yaml @@ -9,7 +9,9 @@ name: vsoxei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 000011-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsoxei8.v.yaml b/spec/std/isa/inst/V/vsoxei8.v.yaml index 1c64ae3233..d3d7a84639 100644 --- a/spec/std/isa/inst/V/vsoxei8.v.yaml +++ b/spec/std/isa/inst/V/vsoxei8.v.yaml @@ -9,7 +9,9 @@ name: vsoxei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 000011-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg2ei16.v.yaml b/spec/std/isa/inst/V/vsoxseg2ei16.v.yaml index 420bc9ded2..b15e97d5d6 100644 --- a/spec/std/isa/inst/V/vsoxseg2ei16.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg2ei16.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg2ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 001011-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg2ei32.v.yaml b/spec/std/isa/inst/V/vsoxseg2ei32.v.yaml index a2988c91b3..cafa479de8 100644 --- a/spec/std/isa/inst/V/vsoxseg2ei32.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg2ei32.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg2ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 001011-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg2ei64.v.yaml b/spec/std/isa/inst/V/vsoxseg2ei64.v.yaml index 5296849ab6..0f7b9c993d 100644 --- a/spec/std/isa/inst/V/vsoxseg2ei64.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg2ei64.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg2ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 001011-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg2ei8.v.yaml b/spec/std/isa/inst/V/vsoxseg2ei8.v.yaml index 4126ba85b0..62e0e4de3d 100644 --- a/spec/std/isa/inst/V/vsoxseg2ei8.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg2ei8.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg2ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 001011-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg3ei16.v.yaml b/spec/std/isa/inst/V/vsoxseg3ei16.v.yaml index c58040044a..b37bc4aaa7 100644 --- a/spec/std/isa/inst/V/vsoxseg3ei16.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg3ei16.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg3ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 010011-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg3ei32.v.yaml b/spec/std/isa/inst/V/vsoxseg3ei32.v.yaml index 7e0351e868..94497d2dff 100644 --- a/spec/std/isa/inst/V/vsoxseg3ei32.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg3ei32.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg3ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 010011-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg3ei64.v.yaml b/spec/std/isa/inst/V/vsoxseg3ei64.v.yaml index aa9b2f132b..5e2e1f772a 100644 --- a/spec/std/isa/inst/V/vsoxseg3ei64.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg3ei64.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg3ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 010011-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg3ei8.v.yaml b/spec/std/isa/inst/V/vsoxseg3ei8.v.yaml index 5d00c98481..aa6a55892c 100644 --- a/spec/std/isa/inst/V/vsoxseg3ei8.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg3ei8.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg3ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 010011-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg4ei16.v.yaml b/spec/std/isa/inst/V/vsoxseg4ei16.v.yaml index 9291e52c70..4277a65b84 100644 --- a/spec/std/isa/inst/V/vsoxseg4ei16.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg4ei16.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg4ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 011011-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg4ei32.v.yaml b/spec/std/isa/inst/V/vsoxseg4ei32.v.yaml index 1d8cb3df59..27efc7d0c1 100644 --- a/spec/std/isa/inst/V/vsoxseg4ei32.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg4ei32.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg4ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 011011-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg4ei64.v.yaml b/spec/std/isa/inst/V/vsoxseg4ei64.v.yaml index cb0fa0c3a2..d4fe987b30 100644 --- a/spec/std/isa/inst/V/vsoxseg4ei64.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg4ei64.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg4ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 011011-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg4ei8.v.yaml b/spec/std/isa/inst/V/vsoxseg4ei8.v.yaml index 0acdd383a9..d25003713b 100644 --- a/spec/std/isa/inst/V/vsoxseg4ei8.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg4ei8.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg4ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 011011-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg5ei16.v.yaml b/spec/std/isa/inst/V/vsoxseg5ei16.v.yaml index f4cdafcf1f..dc56cb320b 100644 --- a/spec/std/isa/inst/V/vsoxseg5ei16.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg5ei16.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg5ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 100011-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg5ei32.v.yaml b/spec/std/isa/inst/V/vsoxseg5ei32.v.yaml index b4607b9549..20945e6699 100644 --- a/spec/std/isa/inst/V/vsoxseg5ei32.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg5ei32.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg5ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 100011-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg5ei64.v.yaml b/spec/std/isa/inst/V/vsoxseg5ei64.v.yaml index 9d0f20fa0e..03a7da9f0a 100644 --- a/spec/std/isa/inst/V/vsoxseg5ei64.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg5ei64.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg5ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 100011-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg5ei8.v.yaml b/spec/std/isa/inst/V/vsoxseg5ei8.v.yaml index de3b5c56c0..b062edfe41 100644 --- a/spec/std/isa/inst/V/vsoxseg5ei8.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg5ei8.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg5ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 100011-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg6ei16.v.yaml b/spec/std/isa/inst/V/vsoxseg6ei16.v.yaml index 11a69cd110..592d6e0315 100644 --- a/spec/std/isa/inst/V/vsoxseg6ei16.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg6ei16.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg6ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 101011-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg6ei32.v.yaml b/spec/std/isa/inst/V/vsoxseg6ei32.v.yaml index f9c2db1a31..b5e1827cd1 100644 --- a/spec/std/isa/inst/V/vsoxseg6ei32.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg6ei32.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg6ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 101011-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg6ei64.v.yaml b/spec/std/isa/inst/V/vsoxseg6ei64.v.yaml index 733687d5ea..75cce93ca0 100644 --- a/spec/std/isa/inst/V/vsoxseg6ei64.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg6ei64.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg6ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 101011-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg6ei8.v.yaml b/spec/std/isa/inst/V/vsoxseg6ei8.v.yaml index 2b3fd9e10b..2713ac2425 100644 --- a/spec/std/isa/inst/V/vsoxseg6ei8.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg6ei8.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg6ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 101011-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg7ei16.v.yaml b/spec/std/isa/inst/V/vsoxseg7ei16.v.yaml index 384c445e41..99fb4aa378 100644 --- a/spec/std/isa/inst/V/vsoxseg7ei16.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg7ei16.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg7ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 110011-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg7ei32.v.yaml b/spec/std/isa/inst/V/vsoxseg7ei32.v.yaml index 9d1aafb253..b68b2490d0 100644 --- a/spec/std/isa/inst/V/vsoxseg7ei32.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg7ei32.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg7ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 110011-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg7ei64.v.yaml b/spec/std/isa/inst/V/vsoxseg7ei64.v.yaml index e13d8360b6..761ed9634d 100644 --- a/spec/std/isa/inst/V/vsoxseg7ei64.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg7ei64.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg7ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 110011-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg7ei8.v.yaml b/spec/std/isa/inst/V/vsoxseg7ei8.v.yaml index c18a167e5e..9a28aec5be 100644 --- a/spec/std/isa/inst/V/vsoxseg7ei8.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg7ei8.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg7ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 110011-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg8ei16.v.yaml b/spec/std/isa/inst/V/vsoxseg8ei16.v.yaml index 68cb771b03..11d7632cf7 100644 --- a/spec/std/isa/inst/V/vsoxseg8ei16.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg8ei16.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg8ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 111011-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg8ei32.v.yaml b/spec/std/isa/inst/V/vsoxseg8ei32.v.yaml index ecdfa4ae08..a46e33fa1a 100644 --- a/spec/std/isa/inst/V/vsoxseg8ei32.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg8ei32.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg8ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 111011-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg8ei64.v.yaml b/spec/std/isa/inst/V/vsoxseg8ei64.v.yaml index 669927368e..a67e235c13 100644 --- a/spec/std/isa/inst/V/vsoxseg8ei64.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg8ei64.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg8ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 111011-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsoxseg8ei8.v.yaml b/spec/std/isa/inst/V/vsoxseg8ei8.v.yaml index 8f8c83272d..0474b8a826 100644 --- a/spec/std/isa/inst/V/vsoxseg8ei8.v.yaml +++ b/spec/std/isa/inst/V/vsoxseg8ei8.v.yaml @@ -9,7 +9,9 @@ name: vsoxseg8ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 111011-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsra.vi.yaml b/spec/std/isa/inst/V/vsra.vi.yaml index 830c9e7251..616eef4e02 100644 --- a/spec/std/isa/inst/V/vsra.vi.yaml +++ b/spec/std/isa/inst/V/vsra.vi.yaml @@ -9,7 +9,9 @@ name: vsra.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 101001-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vsra.vv.yaml b/spec/std/isa/inst/V/vsra.vv.yaml index 259e11d2c0..ffded09ae2 100644 --- a/spec/std/isa/inst/V/vsra.vv.yaml +++ b/spec/std/isa/inst/V/vsra.vv.yaml @@ -9,7 +9,9 @@ name: vsra.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 101001-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vsra.vx.yaml b/spec/std/isa/inst/V/vsra.vx.yaml index 15f94a673a..6b71f1445b 100644 --- a/spec/std/isa/inst/V/vsra.vx.yaml +++ b/spec/std/isa/inst/V/vsra.vx.yaml @@ -9,7 +9,9 @@ name: vsra.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 101001-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vsrl.vi.yaml b/spec/std/isa/inst/V/vsrl.vi.yaml index d5873d48a7..3022a52b80 100644 --- a/spec/std/isa/inst/V/vsrl.vi.yaml +++ b/spec/std/isa/inst/V/vsrl.vi.yaml @@ -9,7 +9,9 @@ name: vsrl.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 101000-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vsrl.vv.yaml b/spec/std/isa/inst/V/vsrl.vv.yaml index b00dd0ff88..2cda65546c 100644 --- a/spec/std/isa/inst/V/vsrl.vv.yaml +++ b/spec/std/isa/inst/V/vsrl.vv.yaml @@ -9,7 +9,9 @@ name: vsrl.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 101000-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vsrl.vx.yaml b/spec/std/isa/inst/V/vsrl.vx.yaml index 6827481629..5336f6660e 100644 --- a/spec/std/isa/inst/V/vsrl.vx.yaml +++ b/spec/std/isa/inst/V/vsrl.vx.yaml @@ -9,7 +9,9 @@ name: vsrl.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 101000-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vsse16.v.yaml b/spec/std/isa/inst/V/vsse16.v.yaml index 3c2f20683a..cdc8da2292 100644 --- a/spec/std/isa/inst/V/vsse16.v.yaml +++ b/spec/std/isa/inst/V/vsse16.v.yaml @@ -9,7 +9,9 @@ name: vsse16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 000010-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsse32.v.yaml b/spec/std/isa/inst/V/vsse32.v.yaml index 78ce835d4e..4a905e9dd1 100644 --- a/spec/std/isa/inst/V/vsse32.v.yaml +++ b/spec/std/isa/inst/V/vsse32.v.yaml @@ -9,7 +9,9 @@ name: vsse32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 000010-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsse64.v.yaml b/spec/std/isa/inst/V/vsse64.v.yaml index 150ebaeed8..4451ba6899 100644 --- a/spec/std/isa/inst/V/vsse64.v.yaml +++ b/spec/std/isa/inst/V/vsse64.v.yaml @@ -9,7 +9,9 @@ name: vsse64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 000010-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsse8.v.yaml b/spec/std/isa/inst/V/vsse8.v.yaml index 21c4671304..4651c43fc0 100644 --- a/spec/std/isa/inst/V/vsse8.v.yaml +++ b/spec/std/isa/inst/V/vsse8.v.yaml @@ -9,7 +9,9 @@ name: vsse8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 000010-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsseg2e16.v.yaml b/spec/std/isa/inst/V/vsseg2e16.v.yaml index 01a5553795..c68b3569f4 100644 --- a/spec/std/isa/inst/V/vsseg2e16.v.yaml +++ b/spec/std/isa/inst/V/vsseg2e16.v.yaml @@ -9,7 +9,9 @@ name: vsseg2e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 001000-00000-----101-----0100111 diff --git a/spec/std/isa/inst/V/vsseg2e32.v.yaml b/spec/std/isa/inst/V/vsseg2e32.v.yaml index e0ba25caba..96d76fdee5 100644 --- a/spec/std/isa/inst/V/vsseg2e32.v.yaml +++ b/spec/std/isa/inst/V/vsseg2e32.v.yaml @@ -9,7 +9,9 @@ name: vsseg2e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 001000-00000-----110-----0100111 diff --git a/spec/std/isa/inst/V/vsseg2e64.v.yaml b/spec/std/isa/inst/V/vsseg2e64.v.yaml index 91052d615e..21d998dbe9 100644 --- a/spec/std/isa/inst/V/vsseg2e64.v.yaml +++ b/spec/std/isa/inst/V/vsseg2e64.v.yaml @@ -9,7 +9,9 @@ name: vsseg2e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 001000-00000-----111-----0100111 diff --git a/spec/std/isa/inst/V/vsseg2e8.v.yaml b/spec/std/isa/inst/V/vsseg2e8.v.yaml index 9cd01616de..1c8a525e0f 100644 --- a/spec/std/isa/inst/V/vsseg2e8.v.yaml +++ b/spec/std/isa/inst/V/vsseg2e8.v.yaml @@ -9,7 +9,9 @@ name: vsseg2e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 001000-00000-----000-----0100111 diff --git a/spec/std/isa/inst/V/vsseg3e16.v.yaml b/spec/std/isa/inst/V/vsseg3e16.v.yaml index 9499e853f6..2f3efe6cd6 100644 --- a/spec/std/isa/inst/V/vsseg3e16.v.yaml +++ b/spec/std/isa/inst/V/vsseg3e16.v.yaml @@ -9,7 +9,9 @@ name: vsseg3e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 010000-00000-----101-----0100111 diff --git a/spec/std/isa/inst/V/vsseg3e32.v.yaml b/spec/std/isa/inst/V/vsseg3e32.v.yaml index 0d39afd812..6e935f0431 100644 --- a/spec/std/isa/inst/V/vsseg3e32.v.yaml +++ b/spec/std/isa/inst/V/vsseg3e32.v.yaml @@ -9,7 +9,9 @@ name: vsseg3e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 010000-00000-----110-----0100111 diff --git a/spec/std/isa/inst/V/vsseg3e64.v.yaml b/spec/std/isa/inst/V/vsseg3e64.v.yaml index 9dae79739d..22e75a68c3 100644 --- a/spec/std/isa/inst/V/vsseg3e64.v.yaml +++ b/spec/std/isa/inst/V/vsseg3e64.v.yaml @@ -9,7 +9,9 @@ name: vsseg3e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 010000-00000-----111-----0100111 diff --git a/spec/std/isa/inst/V/vsseg3e8.v.yaml b/spec/std/isa/inst/V/vsseg3e8.v.yaml index fd05c45859..14082e37d4 100644 --- a/spec/std/isa/inst/V/vsseg3e8.v.yaml +++ b/spec/std/isa/inst/V/vsseg3e8.v.yaml @@ -9,7 +9,9 @@ name: vsseg3e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 010000-00000-----000-----0100111 diff --git a/spec/std/isa/inst/V/vsseg4e16.v.yaml b/spec/std/isa/inst/V/vsseg4e16.v.yaml index 44c1938e80..ee18139a3e 100644 --- a/spec/std/isa/inst/V/vsseg4e16.v.yaml +++ b/spec/std/isa/inst/V/vsseg4e16.v.yaml @@ -9,7 +9,9 @@ name: vsseg4e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 011000-00000-----101-----0100111 diff --git a/spec/std/isa/inst/V/vsseg4e32.v.yaml b/spec/std/isa/inst/V/vsseg4e32.v.yaml index 89d1d411f0..f3c4a8938f 100644 --- a/spec/std/isa/inst/V/vsseg4e32.v.yaml +++ b/spec/std/isa/inst/V/vsseg4e32.v.yaml @@ -9,7 +9,9 @@ name: vsseg4e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 011000-00000-----110-----0100111 diff --git a/spec/std/isa/inst/V/vsseg4e64.v.yaml b/spec/std/isa/inst/V/vsseg4e64.v.yaml index 6138991ee5..040bfb5eb7 100644 --- a/spec/std/isa/inst/V/vsseg4e64.v.yaml +++ b/spec/std/isa/inst/V/vsseg4e64.v.yaml @@ -9,7 +9,9 @@ name: vsseg4e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 011000-00000-----111-----0100111 diff --git a/spec/std/isa/inst/V/vsseg4e8.v.yaml b/spec/std/isa/inst/V/vsseg4e8.v.yaml index 625bff3f32..48ac14a836 100644 --- a/spec/std/isa/inst/V/vsseg4e8.v.yaml +++ b/spec/std/isa/inst/V/vsseg4e8.v.yaml @@ -9,7 +9,9 @@ name: vsseg4e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 011000-00000-----000-----0100111 diff --git a/spec/std/isa/inst/V/vsseg5e16.v.yaml b/spec/std/isa/inst/V/vsseg5e16.v.yaml index bf81188bc3..4b350a6068 100644 --- a/spec/std/isa/inst/V/vsseg5e16.v.yaml +++ b/spec/std/isa/inst/V/vsseg5e16.v.yaml @@ -9,7 +9,9 @@ name: vsseg5e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 100000-00000-----101-----0100111 diff --git a/spec/std/isa/inst/V/vsseg5e32.v.yaml b/spec/std/isa/inst/V/vsseg5e32.v.yaml index c4add52e60..52631d1bd8 100644 --- a/spec/std/isa/inst/V/vsseg5e32.v.yaml +++ b/spec/std/isa/inst/V/vsseg5e32.v.yaml @@ -9,7 +9,9 @@ name: vsseg5e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 100000-00000-----110-----0100111 diff --git a/spec/std/isa/inst/V/vsseg5e64.v.yaml b/spec/std/isa/inst/V/vsseg5e64.v.yaml index 304611f611..cce85bdff7 100644 --- a/spec/std/isa/inst/V/vsseg5e64.v.yaml +++ b/spec/std/isa/inst/V/vsseg5e64.v.yaml @@ -9,7 +9,9 @@ name: vsseg5e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 100000-00000-----111-----0100111 diff --git a/spec/std/isa/inst/V/vsseg5e8.v.yaml b/spec/std/isa/inst/V/vsseg5e8.v.yaml index 83556343fa..f40ee3aa7f 100644 --- a/spec/std/isa/inst/V/vsseg5e8.v.yaml +++ b/spec/std/isa/inst/V/vsseg5e8.v.yaml @@ -9,7 +9,9 @@ name: vsseg5e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 100000-00000-----000-----0100111 diff --git a/spec/std/isa/inst/V/vsseg6e16.v.yaml b/spec/std/isa/inst/V/vsseg6e16.v.yaml index 8e10577191..46efc386c8 100644 --- a/spec/std/isa/inst/V/vsseg6e16.v.yaml +++ b/spec/std/isa/inst/V/vsseg6e16.v.yaml @@ -9,7 +9,9 @@ name: vsseg6e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 101000-00000-----101-----0100111 diff --git a/spec/std/isa/inst/V/vsseg6e32.v.yaml b/spec/std/isa/inst/V/vsseg6e32.v.yaml index 65458281fe..32e3c48d4b 100644 --- a/spec/std/isa/inst/V/vsseg6e32.v.yaml +++ b/spec/std/isa/inst/V/vsseg6e32.v.yaml @@ -9,7 +9,9 @@ name: vsseg6e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 101000-00000-----110-----0100111 diff --git a/spec/std/isa/inst/V/vsseg6e64.v.yaml b/spec/std/isa/inst/V/vsseg6e64.v.yaml index f04368dff4..6c59fcc191 100644 --- a/spec/std/isa/inst/V/vsseg6e64.v.yaml +++ b/spec/std/isa/inst/V/vsseg6e64.v.yaml @@ -9,7 +9,9 @@ name: vsseg6e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 101000-00000-----111-----0100111 diff --git a/spec/std/isa/inst/V/vsseg6e8.v.yaml b/spec/std/isa/inst/V/vsseg6e8.v.yaml index a23ece3431..4e76f80fc1 100644 --- a/spec/std/isa/inst/V/vsseg6e8.v.yaml +++ b/spec/std/isa/inst/V/vsseg6e8.v.yaml @@ -9,7 +9,9 @@ name: vsseg6e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 101000-00000-----000-----0100111 diff --git a/spec/std/isa/inst/V/vsseg7e16.v.yaml b/spec/std/isa/inst/V/vsseg7e16.v.yaml index 9f7f4d3c55..b149851e62 100644 --- a/spec/std/isa/inst/V/vsseg7e16.v.yaml +++ b/spec/std/isa/inst/V/vsseg7e16.v.yaml @@ -9,7 +9,9 @@ name: vsseg7e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 110000-00000-----101-----0100111 diff --git a/spec/std/isa/inst/V/vsseg7e32.v.yaml b/spec/std/isa/inst/V/vsseg7e32.v.yaml index 6d2c74500d..ab26736c11 100644 --- a/spec/std/isa/inst/V/vsseg7e32.v.yaml +++ b/spec/std/isa/inst/V/vsseg7e32.v.yaml @@ -9,7 +9,9 @@ name: vsseg7e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 110000-00000-----110-----0100111 diff --git a/spec/std/isa/inst/V/vsseg7e64.v.yaml b/spec/std/isa/inst/V/vsseg7e64.v.yaml index b7182becd3..854089fabb 100644 --- a/spec/std/isa/inst/V/vsseg7e64.v.yaml +++ b/spec/std/isa/inst/V/vsseg7e64.v.yaml @@ -9,7 +9,9 @@ name: vsseg7e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 110000-00000-----111-----0100111 diff --git a/spec/std/isa/inst/V/vsseg7e8.v.yaml b/spec/std/isa/inst/V/vsseg7e8.v.yaml index 17c9604573..ab69f4313e 100644 --- a/spec/std/isa/inst/V/vsseg7e8.v.yaml +++ b/spec/std/isa/inst/V/vsseg7e8.v.yaml @@ -9,7 +9,9 @@ name: vsseg7e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 110000-00000-----000-----0100111 diff --git a/spec/std/isa/inst/V/vsseg8e16.v.yaml b/spec/std/isa/inst/V/vsseg8e16.v.yaml index b866571962..f219f824ff 100644 --- a/spec/std/isa/inst/V/vsseg8e16.v.yaml +++ b/spec/std/isa/inst/V/vsseg8e16.v.yaml @@ -9,7 +9,9 @@ name: vsseg8e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 111000-00000-----101-----0100111 diff --git a/spec/std/isa/inst/V/vsseg8e32.v.yaml b/spec/std/isa/inst/V/vsseg8e32.v.yaml index 95e262b63a..1f722f0302 100644 --- a/spec/std/isa/inst/V/vsseg8e32.v.yaml +++ b/spec/std/isa/inst/V/vsseg8e32.v.yaml @@ -9,7 +9,9 @@ name: vsseg8e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 111000-00000-----110-----0100111 diff --git a/spec/std/isa/inst/V/vsseg8e64.v.yaml b/spec/std/isa/inst/V/vsseg8e64.v.yaml index 3888c03ebf..925c40fa6b 100644 --- a/spec/std/isa/inst/V/vsseg8e64.v.yaml +++ b/spec/std/isa/inst/V/vsseg8e64.v.yaml @@ -9,7 +9,9 @@ name: vsseg8e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 111000-00000-----111-----0100111 diff --git a/spec/std/isa/inst/V/vsseg8e8.v.yaml b/spec/std/isa/inst/V/vsseg8e8.v.yaml index 934d4f749e..ae08996400 100644 --- a/spec/std/isa/inst/V/vsseg8e8.v.yaml +++ b/spec/std/isa/inst/V/vsseg8e8.v.yaml @@ -9,7 +9,9 @@ name: vsseg8e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vm encoding: match: 111000-00000-----000-----0100111 diff --git a/spec/std/isa/inst/V/vssra.vi.yaml b/spec/std/isa/inst/V/vssra.vi.yaml index b1f7e1e537..af84fc0c5f 100644 --- a/spec/std/isa/inst/V/vssra.vi.yaml +++ b/spec/std/isa/inst/V/vssra.vi.yaml @@ -9,7 +9,9 @@ name: vssra.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 101011-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vssra.vv.yaml b/spec/std/isa/inst/V/vssra.vv.yaml index 66394d01f6..3f8fe65276 100644 --- a/spec/std/isa/inst/V/vssra.vv.yaml +++ b/spec/std/isa/inst/V/vssra.vv.yaml @@ -9,7 +9,9 @@ name: vssra.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 101011-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vssra.vx.yaml b/spec/std/isa/inst/V/vssra.vx.yaml index 0a288fd3a5..e390c1f2e4 100644 --- a/spec/std/isa/inst/V/vssra.vx.yaml +++ b/spec/std/isa/inst/V/vssra.vx.yaml @@ -9,7 +9,9 @@ name: vssra.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 101011-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vssrl.vi.yaml b/spec/std/isa/inst/V/vssrl.vi.yaml index b0a389bea8..5f2601378c 100644 --- a/spec/std/isa/inst/V/vssrl.vi.yaml +++ b/spec/std/isa/inst/V/vssrl.vi.yaml @@ -9,7 +9,9 @@ name: vssrl.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 101010-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vssrl.vv.yaml b/spec/std/isa/inst/V/vssrl.vv.yaml index 724c4fd2ed..809c912c72 100644 --- a/spec/std/isa/inst/V/vssrl.vv.yaml +++ b/spec/std/isa/inst/V/vssrl.vv.yaml @@ -9,7 +9,9 @@ name: vssrl.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 101010-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vssrl.vx.yaml b/spec/std/isa/inst/V/vssrl.vx.yaml index 68f459a661..342d28dcf9 100644 --- a/spec/std/isa/inst/V/vssrl.vx.yaml +++ b/spec/std/isa/inst/V/vssrl.vx.yaml @@ -9,7 +9,9 @@ name: vssrl.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 101010-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vssseg2e16.v.yaml b/spec/std/isa/inst/V/vssseg2e16.v.yaml index 160d38e7b4..d22527f7c6 100644 --- a/spec/std/isa/inst/V/vssseg2e16.v.yaml +++ b/spec/std/isa/inst/V/vssseg2e16.v.yaml @@ -9,7 +9,9 @@ name: vssseg2e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 001010-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vssseg2e32.v.yaml b/spec/std/isa/inst/V/vssseg2e32.v.yaml index eae6576775..c78cd3923f 100644 --- a/spec/std/isa/inst/V/vssseg2e32.v.yaml +++ b/spec/std/isa/inst/V/vssseg2e32.v.yaml @@ -9,7 +9,9 @@ name: vssseg2e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 001010-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vssseg2e64.v.yaml b/spec/std/isa/inst/V/vssseg2e64.v.yaml index 3050dbce2d..cff65b1331 100644 --- a/spec/std/isa/inst/V/vssseg2e64.v.yaml +++ b/spec/std/isa/inst/V/vssseg2e64.v.yaml @@ -9,7 +9,9 @@ name: vssseg2e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 001010-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vssseg2e8.v.yaml b/spec/std/isa/inst/V/vssseg2e8.v.yaml index cabbfccedf..e659e69ddf 100644 --- a/spec/std/isa/inst/V/vssseg2e8.v.yaml +++ b/spec/std/isa/inst/V/vssseg2e8.v.yaml @@ -9,7 +9,9 @@ name: vssseg2e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 001010-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vssseg3e16.v.yaml b/spec/std/isa/inst/V/vssseg3e16.v.yaml index b9d64c9511..78dfb1ef0e 100644 --- a/spec/std/isa/inst/V/vssseg3e16.v.yaml +++ b/spec/std/isa/inst/V/vssseg3e16.v.yaml @@ -9,7 +9,9 @@ name: vssseg3e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 010010-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vssseg3e32.v.yaml b/spec/std/isa/inst/V/vssseg3e32.v.yaml index 8e4f5680ff..b545ffc786 100644 --- a/spec/std/isa/inst/V/vssseg3e32.v.yaml +++ b/spec/std/isa/inst/V/vssseg3e32.v.yaml @@ -9,7 +9,9 @@ name: vssseg3e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 010010-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vssseg3e64.v.yaml b/spec/std/isa/inst/V/vssseg3e64.v.yaml index dc87a8ee72..e44ff4bf9b 100644 --- a/spec/std/isa/inst/V/vssseg3e64.v.yaml +++ b/spec/std/isa/inst/V/vssseg3e64.v.yaml @@ -9,7 +9,9 @@ name: vssseg3e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 010010-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vssseg3e8.v.yaml b/spec/std/isa/inst/V/vssseg3e8.v.yaml index 3701575e3e..0dce30bb6c 100644 --- a/spec/std/isa/inst/V/vssseg3e8.v.yaml +++ b/spec/std/isa/inst/V/vssseg3e8.v.yaml @@ -9,7 +9,9 @@ name: vssseg3e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 010010-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vssseg4e16.v.yaml b/spec/std/isa/inst/V/vssseg4e16.v.yaml index 6891e663b1..f752a3b29c 100644 --- a/spec/std/isa/inst/V/vssseg4e16.v.yaml +++ b/spec/std/isa/inst/V/vssseg4e16.v.yaml @@ -9,7 +9,9 @@ name: vssseg4e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 011010-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vssseg4e32.v.yaml b/spec/std/isa/inst/V/vssseg4e32.v.yaml index 7bd1f4abf5..8e01a30a6b 100644 --- a/spec/std/isa/inst/V/vssseg4e32.v.yaml +++ b/spec/std/isa/inst/V/vssseg4e32.v.yaml @@ -9,7 +9,9 @@ name: vssseg4e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 011010-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vssseg4e64.v.yaml b/spec/std/isa/inst/V/vssseg4e64.v.yaml index 3db190694f..4d6d40581b 100644 --- a/spec/std/isa/inst/V/vssseg4e64.v.yaml +++ b/spec/std/isa/inst/V/vssseg4e64.v.yaml @@ -9,7 +9,9 @@ name: vssseg4e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 011010-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vssseg4e8.v.yaml b/spec/std/isa/inst/V/vssseg4e8.v.yaml index 9d85c26d49..23c052e5e0 100644 --- a/spec/std/isa/inst/V/vssseg4e8.v.yaml +++ b/spec/std/isa/inst/V/vssseg4e8.v.yaml @@ -9,7 +9,9 @@ name: vssseg4e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 011010-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vssseg5e16.v.yaml b/spec/std/isa/inst/V/vssseg5e16.v.yaml index dde947f687..70105f389b 100644 --- a/spec/std/isa/inst/V/vssseg5e16.v.yaml +++ b/spec/std/isa/inst/V/vssseg5e16.v.yaml @@ -9,7 +9,9 @@ name: vssseg5e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 100010-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vssseg5e32.v.yaml b/spec/std/isa/inst/V/vssseg5e32.v.yaml index fd213dcba0..961000d487 100644 --- a/spec/std/isa/inst/V/vssseg5e32.v.yaml +++ b/spec/std/isa/inst/V/vssseg5e32.v.yaml @@ -9,7 +9,9 @@ name: vssseg5e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 100010-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vssseg5e64.v.yaml b/spec/std/isa/inst/V/vssseg5e64.v.yaml index 6eebcd4f93..5ec8907460 100644 --- a/spec/std/isa/inst/V/vssseg5e64.v.yaml +++ b/spec/std/isa/inst/V/vssseg5e64.v.yaml @@ -9,7 +9,9 @@ name: vssseg5e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 100010-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vssseg5e8.v.yaml b/spec/std/isa/inst/V/vssseg5e8.v.yaml index d786f89fda..ebe89d3fc5 100644 --- a/spec/std/isa/inst/V/vssseg5e8.v.yaml +++ b/spec/std/isa/inst/V/vssseg5e8.v.yaml @@ -9,7 +9,9 @@ name: vssseg5e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 100010-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vssseg6e16.v.yaml b/spec/std/isa/inst/V/vssseg6e16.v.yaml index 88203a9675..f3e3cccbfa 100644 --- a/spec/std/isa/inst/V/vssseg6e16.v.yaml +++ b/spec/std/isa/inst/V/vssseg6e16.v.yaml @@ -9,7 +9,9 @@ name: vssseg6e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 101010-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vssseg6e32.v.yaml b/spec/std/isa/inst/V/vssseg6e32.v.yaml index a82cca6842..dd6cc3b508 100644 --- a/spec/std/isa/inst/V/vssseg6e32.v.yaml +++ b/spec/std/isa/inst/V/vssseg6e32.v.yaml @@ -9,7 +9,9 @@ name: vssseg6e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 101010-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vssseg6e64.v.yaml b/spec/std/isa/inst/V/vssseg6e64.v.yaml index 5ceee7282e..5f1de9af3a 100644 --- a/spec/std/isa/inst/V/vssseg6e64.v.yaml +++ b/spec/std/isa/inst/V/vssseg6e64.v.yaml @@ -9,7 +9,9 @@ name: vssseg6e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 101010-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vssseg6e8.v.yaml b/spec/std/isa/inst/V/vssseg6e8.v.yaml index 2275d88454..6961354713 100644 --- a/spec/std/isa/inst/V/vssseg6e8.v.yaml +++ b/spec/std/isa/inst/V/vssseg6e8.v.yaml @@ -9,7 +9,9 @@ name: vssseg6e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 101010-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vssseg7e16.v.yaml b/spec/std/isa/inst/V/vssseg7e16.v.yaml index 00ac7a2476..5e3cbfda8e 100644 --- a/spec/std/isa/inst/V/vssseg7e16.v.yaml +++ b/spec/std/isa/inst/V/vssseg7e16.v.yaml @@ -9,7 +9,9 @@ name: vssseg7e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 110010-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vssseg7e32.v.yaml b/spec/std/isa/inst/V/vssseg7e32.v.yaml index 8d7770e9e0..d017160a85 100644 --- a/spec/std/isa/inst/V/vssseg7e32.v.yaml +++ b/spec/std/isa/inst/V/vssseg7e32.v.yaml @@ -9,7 +9,9 @@ name: vssseg7e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 110010-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vssseg7e64.v.yaml b/spec/std/isa/inst/V/vssseg7e64.v.yaml index 8e2a001d52..ad3ef11d09 100644 --- a/spec/std/isa/inst/V/vssseg7e64.v.yaml +++ b/spec/std/isa/inst/V/vssseg7e64.v.yaml @@ -9,7 +9,9 @@ name: vssseg7e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 110010-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vssseg7e8.v.yaml b/spec/std/isa/inst/V/vssseg7e8.v.yaml index c610fc76b9..530d704cf0 100644 --- a/spec/std/isa/inst/V/vssseg7e8.v.yaml +++ b/spec/std/isa/inst/V/vssseg7e8.v.yaml @@ -9,7 +9,9 @@ name: vssseg7e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 110010-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vssseg8e16.v.yaml b/spec/std/isa/inst/V/vssseg8e16.v.yaml index 83524e0b28..5b5a8d1e56 100644 --- a/spec/std/isa/inst/V/vssseg8e16.v.yaml +++ b/spec/std/isa/inst/V/vssseg8e16.v.yaml @@ -9,7 +9,9 @@ name: vssseg8e16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 111010-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vssseg8e32.v.yaml b/spec/std/isa/inst/V/vssseg8e32.v.yaml index dbca730226..20855bff3f 100644 --- a/spec/std/isa/inst/V/vssseg8e32.v.yaml +++ b/spec/std/isa/inst/V/vssseg8e32.v.yaml @@ -9,7 +9,9 @@ name: vssseg8e32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 111010-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vssseg8e64.v.yaml b/spec/std/isa/inst/V/vssseg8e64.v.yaml index 91b62eb98f..44b35ebdf6 100644 --- a/spec/std/isa/inst/V/vssseg8e64.v.yaml +++ b/spec/std/isa/inst/V/vssseg8e64.v.yaml @@ -9,7 +9,9 @@ name: vssseg8e64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 111010-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vssseg8e8.v.yaml b/spec/std/isa/inst/V/vssseg8e8.v.yaml index 3dbe998403..e6fa311845 100644 --- a/spec/std/isa/inst/V/vssseg8e8.v.yaml +++ b/spec/std/isa/inst/V/vssseg8e8.v.yaml @@ -9,7 +9,9 @@ name: vssseg8e8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), xs2, vm encoding: match: 111010-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vssub.vv.yaml b/spec/std/isa/inst/V/vssub.vv.yaml index 0f746090e9..d92778fd83 100644 --- a/spec/std/isa/inst/V/vssub.vv.yaml +++ b/spec/std/isa/inst/V/vssub.vv.yaml @@ -9,7 +9,9 @@ name: vssub.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100011-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vssub.vx.yaml b/spec/std/isa/inst/V/vssub.vx.yaml index e1748d9a24..402090be94 100644 --- a/spec/std/isa/inst/V/vssub.vx.yaml +++ b/spec/std/isa/inst/V/vssub.vx.yaml @@ -9,7 +9,9 @@ name: vssub.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100011-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vssubu.vv.yaml b/spec/std/isa/inst/V/vssubu.vv.yaml index 6f15bcdc4c..51e3c3589a 100644 --- a/spec/std/isa/inst/V/vssubu.vv.yaml +++ b/spec/std/isa/inst/V/vssubu.vv.yaml @@ -9,7 +9,9 @@ name: vssubu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 100010-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vssubu.vx.yaml b/spec/std/isa/inst/V/vssubu.vx.yaml index 6e0abfed41..3d10a7e1ed 100644 --- a/spec/std/isa/inst/V/vssubu.vx.yaml +++ b/spec/std/isa/inst/V/vssubu.vx.yaml @@ -9,7 +9,9 @@ name: vssubu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 100010-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vsub.vv.yaml b/spec/std/isa/inst/V/vsub.vv.yaml index 053a4a68d0..5dc012ceb9 100644 --- a/spec/std/isa/inst/V/vsub.vv.yaml +++ b/spec/std/isa/inst/V/vsub.vv.yaml @@ -9,7 +9,9 @@ name: vsub.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 000010-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vsub.vx.yaml b/spec/std/isa/inst/V/vsub.vx.yaml index d09d260ae9..29f3c57220 100644 --- a/spec/std/isa/inst/V/vsub.vx.yaml +++ b/spec/std/isa/inst/V/vsub.vx.yaml @@ -9,7 +9,9 @@ name: vsub.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 000010-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vsuxei16.v.yaml b/spec/std/isa/inst/V/vsuxei16.v.yaml index 041bba9210..b30bf3efc8 100644 --- a/spec/std/isa/inst/V/vsuxei16.v.yaml +++ b/spec/std/isa/inst/V/vsuxei16.v.yaml @@ -9,7 +9,9 @@ name: vsuxei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 000001-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsuxei32.v.yaml b/spec/std/isa/inst/V/vsuxei32.v.yaml index 4529ae71e7..afa42f1605 100644 --- a/spec/std/isa/inst/V/vsuxei32.v.yaml +++ b/spec/std/isa/inst/V/vsuxei32.v.yaml @@ -9,7 +9,9 @@ name: vsuxei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 000001-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsuxei64.v.yaml b/spec/std/isa/inst/V/vsuxei64.v.yaml index 2eeffb2979..8c9019daeb 100644 --- a/spec/std/isa/inst/V/vsuxei64.v.yaml +++ b/spec/std/isa/inst/V/vsuxei64.v.yaml @@ -9,7 +9,9 @@ name: vsuxei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 000001-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsuxei8.v.yaml b/spec/std/isa/inst/V/vsuxei8.v.yaml index 2e5a986c9d..d613b5063f 100644 --- a/spec/std/isa/inst/V/vsuxei8.v.yaml +++ b/spec/std/isa/inst/V/vsuxei8.v.yaml @@ -9,7 +9,9 @@ name: vsuxei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 000001-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg2ei16.v.yaml b/spec/std/isa/inst/V/vsuxseg2ei16.v.yaml index 2329ed9f60..ad6a058fbd 100644 --- a/spec/std/isa/inst/V/vsuxseg2ei16.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg2ei16.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg2ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 001001-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg2ei32.v.yaml b/spec/std/isa/inst/V/vsuxseg2ei32.v.yaml index 2c9456c8da..83f88e526a 100644 --- a/spec/std/isa/inst/V/vsuxseg2ei32.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg2ei32.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg2ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 001001-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg2ei64.v.yaml b/spec/std/isa/inst/V/vsuxseg2ei64.v.yaml index 7e5bd01e63..12e6a6bb5a 100644 --- a/spec/std/isa/inst/V/vsuxseg2ei64.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg2ei64.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg2ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 001001-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg2ei8.v.yaml b/spec/std/isa/inst/V/vsuxseg2ei8.v.yaml index 873b47f51d..e81f0c6163 100644 --- a/spec/std/isa/inst/V/vsuxseg2ei8.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg2ei8.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg2ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 001001-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg3ei16.v.yaml b/spec/std/isa/inst/V/vsuxseg3ei16.v.yaml index af895922aa..e8a093952e 100644 --- a/spec/std/isa/inst/V/vsuxseg3ei16.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg3ei16.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg3ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 010001-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg3ei32.v.yaml b/spec/std/isa/inst/V/vsuxseg3ei32.v.yaml index ac5cba3e11..0b784dc923 100644 --- a/spec/std/isa/inst/V/vsuxseg3ei32.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg3ei32.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg3ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 010001-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg3ei64.v.yaml b/spec/std/isa/inst/V/vsuxseg3ei64.v.yaml index cc4a379556..0217d174ed 100644 --- a/spec/std/isa/inst/V/vsuxseg3ei64.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg3ei64.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg3ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 010001-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg3ei8.v.yaml b/spec/std/isa/inst/V/vsuxseg3ei8.v.yaml index d47b3b2b1c..c2b310f253 100644 --- a/spec/std/isa/inst/V/vsuxseg3ei8.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg3ei8.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg3ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 010001-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg4ei16.v.yaml b/spec/std/isa/inst/V/vsuxseg4ei16.v.yaml index 2365dd24d7..bf8121e0fa 100644 --- a/spec/std/isa/inst/V/vsuxseg4ei16.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg4ei16.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg4ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 011001-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg4ei32.v.yaml b/spec/std/isa/inst/V/vsuxseg4ei32.v.yaml index 50d8043834..902af2edcb 100644 --- a/spec/std/isa/inst/V/vsuxseg4ei32.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg4ei32.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg4ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 011001-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg4ei64.v.yaml b/spec/std/isa/inst/V/vsuxseg4ei64.v.yaml index ee9ead66f2..99d344baa4 100644 --- a/spec/std/isa/inst/V/vsuxseg4ei64.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg4ei64.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg4ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 011001-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg4ei8.v.yaml b/spec/std/isa/inst/V/vsuxseg4ei8.v.yaml index 6b6644b50e..1a2dcdde35 100644 --- a/spec/std/isa/inst/V/vsuxseg4ei8.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg4ei8.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg4ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 011001-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg5ei16.v.yaml b/spec/std/isa/inst/V/vsuxseg5ei16.v.yaml index d2919a0941..ff2e25caa6 100644 --- a/spec/std/isa/inst/V/vsuxseg5ei16.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg5ei16.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg5ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 100001-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg5ei32.v.yaml b/spec/std/isa/inst/V/vsuxseg5ei32.v.yaml index 12d38c5527..bc19a4accd 100644 --- a/spec/std/isa/inst/V/vsuxseg5ei32.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg5ei32.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg5ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 100001-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg5ei64.v.yaml b/spec/std/isa/inst/V/vsuxseg5ei64.v.yaml index 522a1cdcfa..e7acf7d485 100644 --- a/spec/std/isa/inst/V/vsuxseg5ei64.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg5ei64.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg5ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 100001-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg5ei8.v.yaml b/spec/std/isa/inst/V/vsuxseg5ei8.v.yaml index 863e33877e..0590698486 100644 --- a/spec/std/isa/inst/V/vsuxseg5ei8.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg5ei8.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg5ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 100001-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg6ei16.v.yaml b/spec/std/isa/inst/V/vsuxseg6ei16.v.yaml index c9e871ec78..0811ac8569 100644 --- a/spec/std/isa/inst/V/vsuxseg6ei16.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg6ei16.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg6ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 101001-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg6ei32.v.yaml b/spec/std/isa/inst/V/vsuxseg6ei32.v.yaml index 1e70465055..78d8f1dfd7 100644 --- a/spec/std/isa/inst/V/vsuxseg6ei32.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg6ei32.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg6ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 101001-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg6ei64.v.yaml b/spec/std/isa/inst/V/vsuxseg6ei64.v.yaml index 29fc944dfe..b7df935449 100644 --- a/spec/std/isa/inst/V/vsuxseg6ei64.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg6ei64.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg6ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 101001-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg6ei8.v.yaml b/spec/std/isa/inst/V/vsuxseg6ei8.v.yaml index b7f88b9711..21607fc31d 100644 --- a/spec/std/isa/inst/V/vsuxseg6ei8.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg6ei8.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg6ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 101001-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg7ei16.v.yaml b/spec/std/isa/inst/V/vsuxseg7ei16.v.yaml index 409c47c686..db4b1bd6d9 100644 --- a/spec/std/isa/inst/V/vsuxseg7ei16.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg7ei16.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg7ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 110001-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg7ei32.v.yaml b/spec/std/isa/inst/V/vsuxseg7ei32.v.yaml index 15fad8f762..0c01d8c573 100644 --- a/spec/std/isa/inst/V/vsuxseg7ei32.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg7ei32.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg7ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 110001-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg7ei64.v.yaml b/spec/std/isa/inst/V/vsuxseg7ei64.v.yaml index ad5c9a3d7c..f2e12cd0cc 100644 --- a/spec/std/isa/inst/V/vsuxseg7ei64.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg7ei64.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg7ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 110001-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg7ei8.v.yaml b/spec/std/isa/inst/V/vsuxseg7ei8.v.yaml index a90099cd05..0bfa255b74 100644 --- a/spec/std/isa/inst/V/vsuxseg7ei8.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg7ei8.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg7ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 110001-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg8ei16.v.yaml b/spec/std/isa/inst/V/vsuxseg8ei16.v.yaml index a1d0c02a68..de795cea92 100644 --- a/spec/std/isa/inst/V/vsuxseg8ei16.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg8ei16.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg8ei16.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 111001-----------101-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg8ei32.v.yaml b/spec/std/isa/inst/V/vsuxseg8ei32.v.yaml index ed0caacc77..8a76e72867 100644 --- a/spec/std/isa/inst/V/vsuxseg8ei32.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg8ei32.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg8ei32.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 111001-----------110-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg8ei64.v.yaml b/spec/std/isa/inst/V/vsuxseg8ei64.v.yaml index 95e8a54ac5..b5b78a7c62 100644 --- a/spec/std/isa/inst/V/vsuxseg8ei64.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg8ei64.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg8ei64.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 111001-----------111-----0100111 diff --git a/spec/std/isa/inst/V/vsuxseg8ei8.v.yaml b/spec/std/isa/inst/V/vsuxseg8ei8.v.yaml index 4fd30fba04..2c9dbc1769 100644 --- a/spec/std/isa/inst/V/vsuxseg8ei8.v.yaml +++ b/spec/std/isa/inst/V/vsuxseg8ei8.v.yaml @@ -9,7 +9,9 @@ name: vsuxseg8ei8.v long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vs3, (xs1), vs2, vm encoding: match: 111001-----------000-----0100111 diff --git a/spec/std/isa/inst/V/vwadd.vv.yaml b/spec/std/isa/inst/V/vwadd.vv.yaml index 35848a85e0..0734155dfd 100644 --- a/spec/std/isa/inst/V/vwadd.vv.yaml +++ b/spec/std/isa/inst/V/vwadd.vv.yaml @@ -9,7 +9,9 @@ name: vwadd.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110001-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwadd.vx.yaml b/spec/std/isa/inst/V/vwadd.vx.yaml index 407fabe428..fa236802a4 100644 --- a/spec/std/isa/inst/V/vwadd.vx.yaml +++ b/spec/std/isa/inst/V/vwadd.vx.yaml @@ -9,7 +9,9 @@ name: vwadd.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 110001-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwadd.wv.yaml b/spec/std/isa/inst/V/vwadd.wv.yaml index a40ae0b820..d511a200ff 100644 --- a/spec/std/isa/inst/V/vwadd.wv.yaml +++ b/spec/std/isa/inst/V/vwadd.wv.yaml @@ -9,7 +9,9 @@ name: vwadd.wv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110101-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwadd.wx.yaml b/spec/std/isa/inst/V/vwadd.wx.yaml index 510ea1a3b8..cd14203927 100644 --- a/spec/std/isa/inst/V/vwadd.wx.yaml +++ b/spec/std/isa/inst/V/vwadd.wx.yaml @@ -9,7 +9,9 @@ name: vwadd.wx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 110101-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwaddu.vv.yaml b/spec/std/isa/inst/V/vwaddu.vv.yaml index c9187c4ebe..2018d20be2 100644 --- a/spec/std/isa/inst/V/vwaddu.vv.yaml +++ b/spec/std/isa/inst/V/vwaddu.vv.yaml @@ -9,7 +9,9 @@ name: vwaddu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110000-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwaddu.vx.yaml b/spec/std/isa/inst/V/vwaddu.vx.yaml index 9a10fb2c28..380263a238 100644 --- a/spec/std/isa/inst/V/vwaddu.vx.yaml +++ b/spec/std/isa/inst/V/vwaddu.vx.yaml @@ -9,7 +9,9 @@ name: vwaddu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 110000-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwaddu.wv.yaml b/spec/std/isa/inst/V/vwaddu.wv.yaml index 6fa62c8ac2..3a5afc47c1 100644 --- a/spec/std/isa/inst/V/vwaddu.wv.yaml +++ b/spec/std/isa/inst/V/vwaddu.wv.yaml @@ -9,7 +9,9 @@ name: vwaddu.wv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110100-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwaddu.wx.yaml b/spec/std/isa/inst/V/vwaddu.wx.yaml index c795b200b0..a0f81a9aff 100644 --- a/spec/std/isa/inst/V/vwaddu.wx.yaml +++ b/spec/std/isa/inst/V/vwaddu.wx.yaml @@ -9,7 +9,9 @@ name: vwaddu.wx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 110100-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwmacc.vv.yaml b/spec/std/isa/inst/V/vwmacc.vv.yaml index 2bcade502c..aa6d4da469 100644 --- a/spec/std/isa/inst/V/vwmacc.vv.yaml +++ b/spec/std/isa/inst/V/vwmacc.vv.yaml @@ -9,7 +9,9 @@ name: vwmacc.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 111101-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwmacc.vx.yaml b/spec/std/isa/inst/V/vwmacc.vx.yaml index 118fb77d5c..327e76838c 100644 --- a/spec/std/isa/inst/V/vwmacc.vx.yaml +++ b/spec/std/isa/inst/V/vwmacc.vx.yaml @@ -9,7 +9,9 @@ name: vwmacc.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, xs1, vs2, vm encoding: match: 111101-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwmaccsu.vv.yaml b/spec/std/isa/inst/V/vwmaccsu.vv.yaml index 5cb3d538c8..e67a446592 100644 --- a/spec/std/isa/inst/V/vwmaccsu.vv.yaml +++ b/spec/std/isa/inst/V/vwmaccsu.vv.yaml @@ -9,7 +9,9 @@ name: vwmaccsu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 111111-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwmaccsu.vx.yaml b/spec/std/isa/inst/V/vwmaccsu.vx.yaml index 2da9a1e12f..8a7ad3e935 100644 --- a/spec/std/isa/inst/V/vwmaccsu.vx.yaml +++ b/spec/std/isa/inst/V/vwmaccsu.vx.yaml @@ -9,7 +9,9 @@ name: vwmaccsu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, xs1, vs2, vm encoding: match: 111111-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwmaccu.vv.yaml b/spec/std/isa/inst/V/vwmaccu.vv.yaml index 092e4d1173..cd7c4eb646 100644 --- a/spec/std/isa/inst/V/vwmaccu.vv.yaml +++ b/spec/std/isa/inst/V/vwmaccu.vv.yaml @@ -9,7 +9,9 @@ name: vwmaccu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs1, vs2, vm encoding: match: 111100-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwmaccu.vx.yaml b/spec/std/isa/inst/V/vwmaccu.vx.yaml index 48009e39e9..3a6b2f07a5 100644 --- a/spec/std/isa/inst/V/vwmaccu.vx.yaml +++ b/spec/std/isa/inst/V/vwmaccu.vx.yaml @@ -9,7 +9,9 @@ name: vwmaccu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, xs1, vs2, vm encoding: match: 111100-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwmaccus.vx.yaml b/spec/std/isa/inst/V/vwmaccus.vx.yaml index 489eac53c4..58806f908f 100644 --- a/spec/std/isa/inst/V/vwmaccus.vx.yaml +++ b/spec/std/isa/inst/V/vwmaccus.vx.yaml @@ -9,7 +9,9 @@ name: vwmaccus.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, xs1, vs2, vm encoding: match: 111110-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwmul.vv.yaml b/spec/std/isa/inst/V/vwmul.vv.yaml index 1ac209f97b..21029ede1a 100644 --- a/spec/std/isa/inst/V/vwmul.vv.yaml +++ b/spec/std/isa/inst/V/vwmul.vv.yaml @@ -9,7 +9,9 @@ name: vwmul.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 111011-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwmul.vx.yaml b/spec/std/isa/inst/V/vwmul.vx.yaml index 135e65b10e..a99dea009f 100644 --- a/spec/std/isa/inst/V/vwmul.vx.yaml +++ b/spec/std/isa/inst/V/vwmul.vx.yaml @@ -9,7 +9,9 @@ name: vwmul.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 111011-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwmulsu.vv.yaml b/spec/std/isa/inst/V/vwmulsu.vv.yaml index baecd48f45..7fab9e2903 100644 --- a/spec/std/isa/inst/V/vwmulsu.vv.yaml +++ b/spec/std/isa/inst/V/vwmulsu.vv.yaml @@ -9,7 +9,9 @@ name: vwmulsu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 111010-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwmulsu.vx.yaml b/spec/std/isa/inst/V/vwmulsu.vx.yaml index 62db62eef4..f75ebc0dc1 100644 --- a/spec/std/isa/inst/V/vwmulsu.vx.yaml +++ b/spec/std/isa/inst/V/vwmulsu.vx.yaml @@ -9,7 +9,9 @@ name: vwmulsu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 111010-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwmulu.vv.yaml b/spec/std/isa/inst/V/vwmulu.vv.yaml index 198a523d08..7d2b208d88 100644 --- a/spec/std/isa/inst/V/vwmulu.vv.yaml +++ b/spec/std/isa/inst/V/vwmulu.vv.yaml @@ -9,7 +9,9 @@ name: vwmulu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 111000-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwmulu.vx.yaml b/spec/std/isa/inst/V/vwmulu.vx.yaml index 92d0b91046..cc065f230b 100644 --- a/spec/std/isa/inst/V/vwmulu.vx.yaml +++ b/spec/std/isa/inst/V/vwmulu.vx.yaml @@ -9,7 +9,9 @@ name: vwmulu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 111000-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwredsum.vs.yaml b/spec/std/isa/inst/V/vwredsum.vs.yaml index 6d97415b97..fb9d2b2183 100644 --- a/spec/std/isa/inst/V/vwredsum.vs.yaml +++ b/spec/std/isa/inst/V/vwredsum.vs.yaml @@ -9,7 +9,9 @@ name: vwredsum.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110001-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vwredsumu.vs.yaml b/spec/std/isa/inst/V/vwredsumu.vs.yaml index aa7e9beae3..8f64dece7d 100644 --- a/spec/std/isa/inst/V/vwredsumu.vs.yaml +++ b/spec/std/isa/inst/V/vwredsumu.vs.yaml @@ -9,7 +9,9 @@ name: vwredsumu.vs long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110000-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vwsub.vv.yaml b/spec/std/isa/inst/V/vwsub.vv.yaml index aa573c4006..46a7afefbc 100644 --- a/spec/std/isa/inst/V/vwsub.vv.yaml +++ b/spec/std/isa/inst/V/vwsub.vv.yaml @@ -9,7 +9,9 @@ name: vwsub.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110011-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwsub.vx.yaml b/spec/std/isa/inst/V/vwsub.vx.yaml index 17003b8c50..3101e8146f 100644 --- a/spec/std/isa/inst/V/vwsub.vx.yaml +++ b/spec/std/isa/inst/V/vwsub.vx.yaml @@ -9,7 +9,9 @@ name: vwsub.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 110011-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwsub.wv.yaml b/spec/std/isa/inst/V/vwsub.wv.yaml index e9dff037c0..6ad74896e6 100644 --- a/spec/std/isa/inst/V/vwsub.wv.yaml +++ b/spec/std/isa/inst/V/vwsub.wv.yaml @@ -9,7 +9,9 @@ name: vwsub.wv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110111-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwsub.wx.yaml b/spec/std/isa/inst/V/vwsub.wx.yaml index fa4bea86e7..fa9e7a7201 100644 --- a/spec/std/isa/inst/V/vwsub.wx.yaml +++ b/spec/std/isa/inst/V/vwsub.wx.yaml @@ -9,7 +9,9 @@ name: vwsub.wx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 110111-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwsubu.vv.yaml b/spec/std/isa/inst/V/vwsubu.vv.yaml index 045020acfb..ac396ab861 100644 --- a/spec/std/isa/inst/V/vwsubu.vv.yaml +++ b/spec/std/isa/inst/V/vwsubu.vv.yaml @@ -9,7 +9,9 @@ name: vwsubu.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110010-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwsubu.vx.yaml b/spec/std/isa/inst/V/vwsubu.vx.yaml index 7389f12c6d..aa099fe62c 100644 --- a/spec/std/isa/inst/V/vwsubu.vx.yaml +++ b/spec/std/isa/inst/V/vwsubu.vx.yaml @@ -9,7 +9,9 @@ name: vwsubu.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 110010-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vwsubu.wv.yaml b/spec/std/isa/inst/V/vwsubu.wv.yaml index 8858c9aea2..58988360be 100644 --- a/spec/std/isa/inst/V/vwsubu.wv.yaml +++ b/spec/std/isa/inst/V/vwsubu.wv.yaml @@ -9,7 +9,9 @@ name: vwsubu.wv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 110110-----------010-----1010111 diff --git a/spec/std/isa/inst/V/vwsubu.wx.yaml b/spec/std/isa/inst/V/vwsubu.wx.yaml index 23819ffd5d..404c18c293 100644 --- a/spec/std/isa/inst/V/vwsubu.wx.yaml +++ b/spec/std/isa/inst/V/vwsubu.wx.yaml @@ -9,7 +9,9 @@ name: vwsubu.wx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 110110-----------110-----1010111 diff --git a/spec/std/isa/inst/V/vxor.vi.yaml b/spec/std/isa/inst/V/vxor.vi.yaml index a6f981d9e4..15fb0e2133 100644 --- a/spec/std/isa/inst/V/vxor.vi.yaml +++ b/spec/std/isa/inst/V/vxor.vi.yaml @@ -9,7 +9,9 @@ name: vxor.vi long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, imm, vm encoding: match: 001011-----------011-----1010111 diff --git a/spec/std/isa/inst/V/vxor.vv.yaml b/spec/std/isa/inst/V/vxor.vv.yaml index 27aa37a249..983156f615 100644 --- a/spec/std/isa/inst/V/vxor.vv.yaml +++ b/spec/std/isa/inst/V/vxor.vv.yaml @@ -9,7 +9,9 @@ name: vxor.vv long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vs1, vm encoding: match: 001011-----------000-----1010111 diff --git a/spec/std/isa/inst/V/vxor.vx.yaml b/spec/std/isa/inst/V/vxor.vx.yaml index 203e0ceb1d..0b687d97db 100644 --- a/spec/std/isa/inst/V/vxor.vx.yaml +++ b/spec/std/isa/inst/V/vxor.vx.yaml @@ -9,7 +9,9 @@ name: vxor.vx long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, xs1, vm encoding: match: 001011-----------100-----1010111 diff --git a/spec/std/isa/inst/V/vzext.vf2.yaml b/spec/std/isa/inst/V/vzext.vf2.yaml index ff6af51337..e7f9319590 100644 --- a/spec/std/isa/inst/V/vzext.vf2.yaml +++ b/spec/std/isa/inst/V/vzext.vf2.yaml @@ -9,7 +9,9 @@ name: vzext.vf2 long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------00110010-----1010111 diff --git a/spec/std/isa/inst/V/vzext.vf4.yaml b/spec/std/isa/inst/V/vzext.vf4.yaml index f810feb842..6e991faa0e 100644 --- a/spec/std/isa/inst/V/vzext.vf4.yaml +++ b/spec/std/isa/inst/V/vzext.vf4.yaml @@ -9,7 +9,9 @@ name: vzext.vf4 long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------00100010-----1010111 diff --git a/spec/std/isa/inst/V/vzext.vf8.yaml b/spec/std/isa/inst/V/vzext.vf8.yaml index b1d3ecda64..6fa4d16769 100644 --- a/spec/std/isa/inst/V/vzext.vf8.yaml +++ b/spec/std/isa/inst/V/vzext.vf8.yaml @@ -9,7 +9,9 @@ name: vzext.vf8 long_name: No synopsis available description: | No description available. -definedBy: V +definedBy: + extension: + name: V assembly: vd, vs2, vm encoding: match: 010010------00010010-----1010111 diff --git a/spec/std/isa/inst/Zaamo/amoadd.d.yaml b/spec/std/isa/inst/Zaamo/amoadd.d.yaml index 61c4266c24..de21abdb7f 100644 --- a/spec/std/isa/inst/Zaamo/amoadd.d.yaml +++ b/spec/std/isa/inst/Zaamo/amoadd.d.yaml @@ -14,7 +14,11 @@ description: | * Write the loaded value into _xd_ * Add the value of register _xs2_ to the loaded value * Write the sum to the address in _xs1_ -definedBy: Zaamo +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zaamo base: 64 assembly: xd, xs2, (xs1) encoding: diff --git a/spec/std/isa/inst/Zaamo/amoadd.w.yaml b/spec/std/isa/inst/Zaamo/amoadd.w.yaml index d5fa70c1d4..b3e5bde14d 100644 --- a/spec/std/isa/inst/Zaamo/amoadd.w.yaml +++ b/spec/std/isa/inst/Zaamo/amoadd.w.yaml @@ -14,7 +14,9 @@ description: | * Write the sign-extended value into _xd_ * Add the least-significant word of register _xs2_ to the loaded value * Write the sum to the address in _xs1_ -definedBy: Zaamo +definedBy: + extension: + name: Zaamo assembly: xd, xs2, (xs1) encoding: match: 00000------------010-----0101111 diff --git a/spec/std/isa/inst/Zaamo/amoand.d.yaml b/spec/std/isa/inst/Zaamo/amoand.d.yaml index a1377ec753..70180192f6 100644 --- a/spec/std/isa/inst/Zaamo/amoand.d.yaml +++ b/spec/std/isa/inst/Zaamo/amoand.d.yaml @@ -14,7 +14,11 @@ description: | * Write the loaded value into _xd_ * AND the value of register _xs2_ to the loaded value * Write the result to the address in _xs1_ -definedBy: Zaamo +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zaamo base: 64 assembly: xd, xs2, (xs1) encoding: diff --git a/spec/std/isa/inst/Zaamo/amoand.w.yaml b/spec/std/isa/inst/Zaamo/amoand.w.yaml index aeefb40d06..bceb7e22ea 100644 --- a/spec/std/isa/inst/Zaamo/amoand.w.yaml +++ b/spec/std/isa/inst/Zaamo/amoand.w.yaml @@ -14,7 +14,9 @@ description: | * Write the sign-extended value into _xd_ * AND the least-significant word of register _xs2_ to the loaded value * Write the result to the address in _xs1_ -definedBy: Zaamo +definedBy: + extension: + name: Zaamo assembly: xd, xs2, (xs1) encoding: match: 01100------------010-----0101111 diff --git a/spec/std/isa/inst/Zaamo/amomax.d.yaml b/spec/std/isa/inst/Zaamo/amomax.d.yaml index 6e832c305c..e9034fe5dc 100644 --- a/spec/std/isa/inst/Zaamo/amomax.d.yaml +++ b/spec/std/isa/inst/Zaamo/amomax.d.yaml @@ -14,7 +14,11 @@ description: | * Write the loaded value into _xd_ * Signed compare the value of register _xs2_ to the loaded value, and select the maximum value * Write the maximum to the address in _xs1_ -definedBy: Zaamo +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zaamo base: 64 assembly: xd, xs2, (xs1) encoding: diff --git a/spec/std/isa/inst/Zaamo/amomax.w.yaml b/spec/std/isa/inst/Zaamo/amomax.w.yaml index d3b2f6807d..81b14c5b7b 100644 --- a/spec/std/isa/inst/Zaamo/amomax.w.yaml +++ b/spec/std/isa/inst/Zaamo/amomax.w.yaml @@ -14,7 +14,9 @@ description: | * Write the sign-extended value into _xd_ * Signed compare the least-significant word of register _xs2_ to the loaded value, and select the maximum value * Write the maximum to the address in _xs1_ -definedBy: Zaamo +definedBy: + extension: + name: Zaamo assembly: xd, xs2, (xs1) encoding: match: 10100------------010-----0101111 diff --git a/spec/std/isa/inst/Zaamo/amomaxu.d.yaml b/spec/std/isa/inst/Zaamo/amomaxu.d.yaml index ca04a136ae..5da3909e19 100644 --- a/spec/std/isa/inst/Zaamo/amomaxu.d.yaml +++ b/spec/std/isa/inst/Zaamo/amomaxu.d.yaml @@ -14,7 +14,11 @@ description: | * Write the loaded value into _xd_ * Unsigned compare the value of register _xs2_ to the loaded value, and select the maximum value * Write the maximum to the address in _xs1_ -definedBy: Zaamo +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zaamo base: 64 assembly: xd, xs2, (xs1) encoding: diff --git a/spec/std/isa/inst/Zaamo/amomaxu.w.yaml b/spec/std/isa/inst/Zaamo/amomaxu.w.yaml index 3ecb2bf333..f001be0daf 100644 --- a/spec/std/isa/inst/Zaamo/amomaxu.w.yaml +++ b/spec/std/isa/inst/Zaamo/amomaxu.w.yaml @@ -14,7 +14,9 @@ description: | * Write the sign-extended value into _xd_ * Unsigned compare the least-significant word of register _xs2_ to the loaded value, and select the maximum value * Write the maximum to the address in _xs1_ -definedBy: Zaamo +definedBy: + extension: + name: Zaamo assembly: xd, xs2, (xs1) encoding: match: 11100------------010-----0101111 diff --git a/spec/std/isa/inst/Zaamo/amomin.d.yaml b/spec/std/isa/inst/Zaamo/amomin.d.yaml index 746c1d65f9..28d549fd66 100644 --- a/spec/std/isa/inst/Zaamo/amomin.d.yaml +++ b/spec/std/isa/inst/Zaamo/amomin.d.yaml @@ -14,7 +14,11 @@ description: | * Write the loaded value into _xd_ * Signed compare the value of register _xs2_ to the loaded value, and select the minimum value * Write the minimum to the address in _xs1_ -definedBy: Zaamo +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zaamo base: 64 assembly: xd, xs2, (xs1) encoding: diff --git a/spec/std/isa/inst/Zaamo/amomin.w.yaml b/spec/std/isa/inst/Zaamo/amomin.w.yaml index abd64f65e8..c15b3e2714 100644 --- a/spec/std/isa/inst/Zaamo/amomin.w.yaml +++ b/spec/std/isa/inst/Zaamo/amomin.w.yaml @@ -14,7 +14,9 @@ description: | * Write the sign-extended value into _xd_ * Signed compare the least-significant word of register _xs2_ to the loaded value, and select the minimum value * Write the result to the address in _xs1_ -definedBy: Zaamo +definedBy: + extension: + name: Zaamo assembly: xd, xs2, (xs1) encoding: match: 10000------------010-----0101111 diff --git a/spec/std/isa/inst/Zaamo/amominu.d.yaml b/spec/std/isa/inst/Zaamo/amominu.d.yaml index d3446b2690..a5b6799f26 100644 --- a/spec/std/isa/inst/Zaamo/amominu.d.yaml +++ b/spec/std/isa/inst/Zaamo/amominu.d.yaml @@ -14,7 +14,11 @@ description: | * Write the loaded value into _xd_ * Unsigned compare the value of register _xs2_ to the loaded value, and select the minimum value * Write the minimum to the address in _xs1_ -definedBy: Zaamo +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zaamo base: 64 assembly: xd, xs2, (xs1) encoding: diff --git a/spec/std/isa/inst/Zaamo/amominu.w.yaml b/spec/std/isa/inst/Zaamo/amominu.w.yaml index 48a8d088ea..906ffa412d 100644 --- a/spec/std/isa/inst/Zaamo/amominu.w.yaml +++ b/spec/std/isa/inst/Zaamo/amominu.w.yaml @@ -14,7 +14,9 @@ description: | * Write the sign-extended value into _xd_ * Unsigned compare the least-significant word of register _xs2_ to the loaded word, and select the minimum value * Write the result to the address in _xs1_ -definedBy: Zaamo +definedBy: + extension: + name: Zaamo assembly: xd, xs2, (xs1) encoding: match: 11000------------010-----0101111 diff --git a/spec/std/isa/inst/Zaamo/amoor.d.yaml b/spec/std/isa/inst/Zaamo/amoor.d.yaml index 1e9bfe9b46..e10bfc16a1 100644 --- a/spec/std/isa/inst/Zaamo/amoor.d.yaml +++ b/spec/std/isa/inst/Zaamo/amoor.d.yaml @@ -14,7 +14,11 @@ description: | * Write the loaded value into _xd_ * OR the value of register _xs2_ to the loaded value * Write the result to the address in _xs1_ -definedBy: Zaamo +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zaamo base: 64 assembly: xd, xs2, (xs1) encoding: diff --git a/spec/std/isa/inst/Zaamo/amoor.w.yaml b/spec/std/isa/inst/Zaamo/amoor.w.yaml index bf983a95f7..d6540c9936 100644 --- a/spec/std/isa/inst/Zaamo/amoor.w.yaml +++ b/spec/std/isa/inst/Zaamo/amoor.w.yaml @@ -14,7 +14,9 @@ description: | * Write the sign-extended value into _xd_ * OR the least-significant word of register _xs2_ to the loaded value * Write the result to the address in _xs1_ -definedBy: Zaamo +definedBy: + extension: + name: Zaamo assembly: xd, xs2, (xs1) encoding: match: 01000------------010-----0101111 diff --git a/spec/std/isa/inst/Zaamo/amoswap.d.yaml b/spec/std/isa/inst/Zaamo/amoswap.d.yaml index 8105c3d6c0..aa718c6cff 100644 --- a/spec/std/isa/inst/Zaamo/amoswap.d.yaml +++ b/spec/std/isa/inst/Zaamo/amoswap.d.yaml @@ -13,7 +13,11 @@ description: | * Load the doubleword at address _xs1_ * Write the value into _xd_ * Store the value of register _xs2_ to the address in _xs1_ -definedBy: Zaamo +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zaamo base: 64 assembly: xd, xs2, (xs1) encoding: diff --git a/spec/std/isa/inst/Zaamo/amoswap.w.yaml b/spec/std/isa/inst/Zaamo/amoswap.w.yaml index 2e4e5ea971..af3b51bdb4 100644 --- a/spec/std/isa/inst/Zaamo/amoswap.w.yaml +++ b/spec/std/isa/inst/Zaamo/amoswap.w.yaml @@ -13,7 +13,9 @@ description: | * Load the word at address _xs1_ * Write the sign-extended value into _xd_ * Store the least-significant word of register _xs2_ to the address in _xs1_ -definedBy: Zaamo +definedBy: + extension: + name: Zaamo assembly: xd, xs2, (xs1) encoding: match: 00001------------010-----0101111 diff --git a/spec/std/isa/inst/Zaamo/amoxor.d.yaml b/spec/std/isa/inst/Zaamo/amoxor.d.yaml index ee24a78bf0..6f246f868a 100644 --- a/spec/std/isa/inst/Zaamo/amoxor.d.yaml +++ b/spec/std/isa/inst/Zaamo/amoxor.d.yaml @@ -14,7 +14,11 @@ description: | * Write the loaded value into _xd_ * XOR the value of register _xs2_ to the loaded value * Write the result to the address in _xs1_ -definedBy: Zaamo +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zaamo base: 64 assembly: xd, xs2, (xs1) encoding: diff --git a/spec/std/isa/inst/Zaamo/amoxor.w.yaml b/spec/std/isa/inst/Zaamo/amoxor.w.yaml index 5e218ef1e2..777e783089 100644 --- a/spec/std/isa/inst/Zaamo/amoxor.w.yaml +++ b/spec/std/isa/inst/Zaamo/amoxor.w.yaml @@ -14,7 +14,9 @@ description: | * Write the sign-extended value into _xd_ * XOR the least-significant word of register _xs2_ to the loaded value * Write the result to the address in _xs1_ -definedBy: Zaamo +definedBy: + extension: + name: Zaamo assembly: xd, xs2, (xs1) encoding: match: 00100------------010-----0101111 diff --git a/spec/std/isa/inst/Zabha/amoadd.b.yaml b/spec/std/isa/inst/Zabha/amoadd.b.yaml index 64a7b3d19e..a44962e050 100644 --- a/spec/std/isa/inst/Zabha/amoadd.b.yaml +++ b/spec/std/isa/inst/Zabha/amoadd.b.yaml @@ -9,7 +9,9 @@ name: amoadd.b long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 00000------------000-----0101111 diff --git a/spec/std/isa/inst/Zabha/amoadd.h.yaml b/spec/std/isa/inst/Zabha/amoadd.h.yaml index 7d585340b1..0b2eeac6d7 100644 --- a/spec/std/isa/inst/Zabha/amoadd.h.yaml +++ b/spec/std/isa/inst/Zabha/amoadd.h.yaml @@ -9,7 +9,9 @@ name: amoadd.h long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 00000------------001-----0101111 diff --git a/spec/std/isa/inst/Zabha/amoand.b.yaml b/spec/std/isa/inst/Zabha/amoand.b.yaml index 65c43aa256..9bb7429b46 100644 --- a/spec/std/isa/inst/Zabha/amoand.b.yaml +++ b/spec/std/isa/inst/Zabha/amoand.b.yaml @@ -9,7 +9,9 @@ name: amoand.b long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 01100------------000-----0101111 diff --git a/spec/std/isa/inst/Zabha/amoand.h.yaml b/spec/std/isa/inst/Zabha/amoand.h.yaml index fa1d82ed78..0c9805cd79 100644 --- a/spec/std/isa/inst/Zabha/amoand.h.yaml +++ b/spec/std/isa/inst/Zabha/amoand.h.yaml @@ -9,7 +9,9 @@ name: amoand.h long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 01100------------001-----0101111 diff --git a/spec/std/isa/inst/Zabha/amocas.b.yaml b/spec/std/isa/inst/Zabha/amocas.b.yaml index f9f87b9466..f64ba56d45 100644 --- a/spec/std/isa/inst/Zabha/amocas.b.yaml +++ b/spec/std/isa/inst/Zabha/amocas.b.yaml @@ -9,7 +9,9 @@ name: amocas.b long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 00101------------000-----0101111 diff --git a/spec/std/isa/inst/Zabha/amocas.h.yaml b/spec/std/isa/inst/Zabha/amocas.h.yaml index d0f67040d7..c3c67977cb 100644 --- a/spec/std/isa/inst/Zabha/amocas.h.yaml +++ b/spec/std/isa/inst/Zabha/amocas.h.yaml @@ -9,7 +9,9 @@ name: amocas.h long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 00101------------001-----0101111 diff --git a/spec/std/isa/inst/Zabha/amomax.b.yaml b/spec/std/isa/inst/Zabha/amomax.b.yaml index 7a2b01572f..a381da0c98 100644 --- a/spec/std/isa/inst/Zabha/amomax.b.yaml +++ b/spec/std/isa/inst/Zabha/amomax.b.yaml @@ -9,7 +9,9 @@ name: amomax.b long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 10100------------000-----0101111 diff --git a/spec/std/isa/inst/Zabha/amomax.h.yaml b/spec/std/isa/inst/Zabha/amomax.h.yaml index 55ad22cc7e..079cc64a52 100644 --- a/spec/std/isa/inst/Zabha/amomax.h.yaml +++ b/spec/std/isa/inst/Zabha/amomax.h.yaml @@ -9,7 +9,9 @@ name: amomax.h long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 10100------------001-----0101111 diff --git a/spec/std/isa/inst/Zabha/amomaxu.b.yaml b/spec/std/isa/inst/Zabha/amomaxu.b.yaml index 503483b157..7922468417 100644 --- a/spec/std/isa/inst/Zabha/amomaxu.b.yaml +++ b/spec/std/isa/inst/Zabha/amomaxu.b.yaml @@ -9,7 +9,9 @@ name: amomaxu.b long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 11100------------000-----0101111 diff --git a/spec/std/isa/inst/Zabha/amomaxu.h.yaml b/spec/std/isa/inst/Zabha/amomaxu.h.yaml index 5c681db4ef..a8226671f3 100644 --- a/spec/std/isa/inst/Zabha/amomaxu.h.yaml +++ b/spec/std/isa/inst/Zabha/amomaxu.h.yaml @@ -9,7 +9,9 @@ name: amomaxu.h long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 11100------------001-----0101111 diff --git a/spec/std/isa/inst/Zabha/amomin.b.yaml b/spec/std/isa/inst/Zabha/amomin.b.yaml index 227b4dba51..5e6c638b00 100644 --- a/spec/std/isa/inst/Zabha/amomin.b.yaml +++ b/spec/std/isa/inst/Zabha/amomin.b.yaml @@ -9,7 +9,9 @@ name: amomin.b long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 10000------------000-----0101111 diff --git a/spec/std/isa/inst/Zabha/amomin.h.yaml b/spec/std/isa/inst/Zabha/amomin.h.yaml index 4fba419578..15ed5592ba 100644 --- a/spec/std/isa/inst/Zabha/amomin.h.yaml +++ b/spec/std/isa/inst/Zabha/amomin.h.yaml @@ -9,7 +9,9 @@ name: amomin.h long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 10000------------001-----0101111 diff --git a/spec/std/isa/inst/Zabha/amominu.b.yaml b/spec/std/isa/inst/Zabha/amominu.b.yaml index 003eecb48d..dbfade3eb5 100644 --- a/spec/std/isa/inst/Zabha/amominu.b.yaml +++ b/spec/std/isa/inst/Zabha/amominu.b.yaml @@ -9,7 +9,9 @@ name: amominu.b long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 11000------------000-----0101111 diff --git a/spec/std/isa/inst/Zabha/amominu.h.yaml b/spec/std/isa/inst/Zabha/amominu.h.yaml index 4188264011..60943604d9 100644 --- a/spec/std/isa/inst/Zabha/amominu.h.yaml +++ b/spec/std/isa/inst/Zabha/amominu.h.yaml @@ -9,7 +9,9 @@ name: amominu.h long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 11000------------001-----0101111 diff --git a/spec/std/isa/inst/Zabha/amoor.b.yaml b/spec/std/isa/inst/Zabha/amoor.b.yaml index 7cff5293ea..3080949e38 100644 --- a/spec/std/isa/inst/Zabha/amoor.b.yaml +++ b/spec/std/isa/inst/Zabha/amoor.b.yaml @@ -9,7 +9,9 @@ name: amoor.b long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 01000------------000-----0101111 diff --git a/spec/std/isa/inst/Zabha/amoor.h.yaml b/spec/std/isa/inst/Zabha/amoor.h.yaml index 7c24584708..9ff1f179e6 100644 --- a/spec/std/isa/inst/Zabha/amoor.h.yaml +++ b/spec/std/isa/inst/Zabha/amoor.h.yaml @@ -9,7 +9,9 @@ name: amoor.h long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 01000------------001-----0101111 diff --git a/spec/std/isa/inst/Zabha/amoswap.b.yaml b/spec/std/isa/inst/Zabha/amoswap.b.yaml index 15e979ac2a..3e03ef82ff 100644 --- a/spec/std/isa/inst/Zabha/amoswap.b.yaml +++ b/spec/std/isa/inst/Zabha/amoswap.b.yaml @@ -9,7 +9,9 @@ name: amoswap.b long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 00001------------000-----0101111 diff --git a/spec/std/isa/inst/Zabha/amoswap.h.yaml b/spec/std/isa/inst/Zabha/amoswap.h.yaml index b3a97988b6..e6db17300b 100644 --- a/spec/std/isa/inst/Zabha/amoswap.h.yaml +++ b/spec/std/isa/inst/Zabha/amoswap.h.yaml @@ -9,7 +9,9 @@ name: amoswap.h long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 00001------------001-----0101111 diff --git a/spec/std/isa/inst/Zabha/amoxor.b.yaml b/spec/std/isa/inst/Zabha/amoxor.b.yaml index a1657f875f..60e6092b1f 100644 --- a/spec/std/isa/inst/Zabha/amoxor.b.yaml +++ b/spec/std/isa/inst/Zabha/amoxor.b.yaml @@ -9,7 +9,9 @@ name: amoxor.b long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 00100------------000-----0101111 diff --git a/spec/std/isa/inst/Zabha/amoxor.h.yaml b/spec/std/isa/inst/Zabha/amoxor.h.yaml index d184f00e83..33a3ff5f24 100644 --- a/spec/std/isa/inst/Zabha/amoxor.h.yaml +++ b/spec/std/isa/inst/Zabha/amoxor.h.yaml @@ -9,7 +9,9 @@ name: amoxor.h long_name: No synopsis available description: | No description available. -definedBy: Zabha +definedBy: + extension: + name: Zabha assembly: xd, xs2, (xs1) encoding: match: 00100------------001-----0101111 diff --git a/spec/std/isa/inst/Zacas/amocas.d.yaml b/spec/std/isa/inst/Zacas/amocas.d.yaml index c410c921c4..fb45184547 100644 --- a/spec/std/isa/inst/Zacas/amocas.d.yaml +++ b/spec/std/isa/inst/Zacas/amocas.d.yaml @@ -1,7 +1,6 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear ---- # yaml-language-server: $schema=../../../../schemas/inst_schema.json $schema: "inst_schema.json#" @@ -49,7 +48,9 @@ description: | An AMOCAS.D instruction always requires write permissions. -definedBy: Zacas +definedBy: + extension: + name: Zacas assembly: xd, xs2, (xs1) encoding: RV32: diff --git a/spec/std/isa/inst/Zacas/amocas.q.yaml b/spec/std/isa/inst/Zacas/amocas.q.yaml index d711bb9de8..ea7487d11a 100644 --- a/spec/std/isa/inst/Zacas/amocas.q.yaml +++ b/spec/std/isa/inst/Zacas/amocas.q.yaml @@ -1,7 +1,6 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear ---- # yaml-language-server: $schema=../../../../schemas/inst_schema.json $schema: "inst_schema.json#" @@ -43,7 +42,11 @@ description: | An AMOCAS.Q instruction always requires write permissions. -definedBy: Zacas +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zacas base: 64 assembly: xd, xs2, (xs1) encoding: diff --git a/spec/std/isa/inst/Zacas/amocas.w.yaml b/spec/std/isa/inst/Zacas/amocas.w.yaml index 4fca32ea10..f2fee9faa3 100644 --- a/spec/std/isa/inst/Zacas/amocas.w.yaml +++ b/spec/std/isa/inst/Zacas/amocas.w.yaml @@ -1,7 +1,6 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear ---- # yaml-language-server: $schema=../../../../schemas/inst_schema.json $schema: "inst_schema.json#" @@ -43,7 +42,9 @@ description: | An AMOCAS.W instruction always requires write permissions. -definedBy: Zacas +definedBy: + extension: + name: Zacas assembly: xd, xs2, (xs1) encoding: match: 00101------------010-----0101111 diff --git a/spec/std/isa/inst/Zalasr/lb.aq.yaml b/spec/std/isa/inst/Zalasr/lb.aq.yaml index 243b300006..95d4b2ef3a 100644 --- a/spec/std/isa/inst/Zalasr/lb.aq.yaml +++ b/spec/std/isa/inst/Zalasr/lb.aq.yaml @@ -9,7 +9,9 @@ name: lb.aq long_name: No synopsis available description: | No description available. -definedBy: Zalasr +definedBy: + extension: + name: Zalasr assembly: xd, (xs1) encoding: match: 001101000000-----000-----0101111 diff --git a/spec/std/isa/inst/Zalasr/ld.aq.yaml b/spec/std/isa/inst/Zalasr/ld.aq.yaml index e2d4c100f0..003d9dbeb2 100644 --- a/spec/std/isa/inst/Zalasr/ld.aq.yaml +++ b/spec/std/isa/inst/Zalasr/ld.aq.yaml @@ -9,7 +9,9 @@ name: ld.aq long_name: No synopsis available description: | No description available. -definedBy: Zalasr +definedBy: + extension: + name: Zalasr assembly: xd, (xs1) encoding: match: 001101000000-----011-----0101111 diff --git a/spec/std/isa/inst/Zalasr/lh.aq.yaml b/spec/std/isa/inst/Zalasr/lh.aq.yaml index dcb854ecd2..ce713ce59b 100644 --- a/spec/std/isa/inst/Zalasr/lh.aq.yaml +++ b/spec/std/isa/inst/Zalasr/lh.aq.yaml @@ -9,7 +9,9 @@ name: lh.aq long_name: No synopsis available description: | No description available. -definedBy: Zalasr +definedBy: + extension: + name: Zalasr assembly: xd, (xs1) encoding: match: 001101000000-----001-----0101111 diff --git a/spec/std/isa/inst/Zalasr/lw.aq.yaml b/spec/std/isa/inst/Zalasr/lw.aq.yaml index 70e93356b6..71970a818e 100644 --- a/spec/std/isa/inst/Zalasr/lw.aq.yaml +++ b/spec/std/isa/inst/Zalasr/lw.aq.yaml @@ -9,7 +9,9 @@ name: lw.aq long_name: No synopsis available description: | No description available. -definedBy: Zalasr +definedBy: + extension: + name: Zalasr assembly: xd, (xs1) encoding: match: 001101000000-----010-----0101111 diff --git a/spec/std/isa/inst/Zalasr/sb.rl.yaml b/spec/std/isa/inst/Zalasr/sb.rl.yaml index ec17d48a3a..a7ffda4131 100644 --- a/spec/std/isa/inst/Zalasr/sb.rl.yaml +++ b/spec/std/isa/inst/Zalasr/sb.rl.yaml @@ -9,7 +9,9 @@ name: sb.rl long_name: No synopsis available description: | No description available. -definedBy: Zalasr +definedBy: + extension: + name: Zalasr assembly: xs2, (xs1) encoding: match: 0011101----------000000000101111 diff --git a/spec/std/isa/inst/Zalasr/sd.rl.yaml b/spec/std/isa/inst/Zalasr/sd.rl.yaml index 219ddc1faa..5d200c2b31 100644 --- a/spec/std/isa/inst/Zalasr/sd.rl.yaml +++ b/spec/std/isa/inst/Zalasr/sd.rl.yaml @@ -9,7 +9,9 @@ name: sd.rl long_name: No synopsis available description: | No description available. -definedBy: Zalasr +definedBy: + extension: + name: Zalasr assembly: xs2, (xs1) encoding: match: 0011101----------011000000101111 diff --git a/spec/std/isa/inst/Zalasr/sh.rl.yaml b/spec/std/isa/inst/Zalasr/sh.rl.yaml index 79e2be9766..952be9fea4 100644 --- a/spec/std/isa/inst/Zalasr/sh.rl.yaml +++ b/spec/std/isa/inst/Zalasr/sh.rl.yaml @@ -9,7 +9,9 @@ name: sh.rl long_name: No synopsis available description: | No description available. -definedBy: Zalasr +definedBy: + extension: + name: Zalasr assembly: xs2, (xs1) encoding: match: 0011101----------001000000101111 diff --git a/spec/std/isa/inst/Zalasr/sw.rl.yaml b/spec/std/isa/inst/Zalasr/sw.rl.yaml index 59e89fda9e..3e05b64366 100644 --- a/spec/std/isa/inst/Zalasr/sw.rl.yaml +++ b/spec/std/isa/inst/Zalasr/sw.rl.yaml @@ -9,7 +9,9 @@ name: sw.rl long_name: No synopsis available description: | No description available. -definedBy: Zalasr +definedBy: + extension: + name: Zalasr assembly: xs2, (xs1) encoding: match: 0011101----------010000000101111 diff --git a/spec/std/isa/inst/Zalrsc/lr.d.yaml b/spec/std/isa/inst/Zalrsc/lr.d.yaml index 58ea3b7407..d8e0059781 100644 --- a/spec/std/isa/inst/Zalrsc/lr.d.yaml +++ b/spec/std/isa/inst/Zalrsc/lr.d.yaml @@ -45,7 +45,11 @@ description: | Software should not set the _rl_ bit on an LR instruction unless the _aq_ bit is also set. LR.rl and SC.aq instructions are not guaranteed to provide any stronger ordering than those with both bits clear, but may result in lower performance. -definedBy: Zalrsc +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zalrsc base: 64 assembly: xd, (xs1) encoding: diff --git a/spec/std/isa/inst/Zalrsc/lr.w.yaml b/spec/std/isa/inst/Zalrsc/lr.w.yaml index 0af51c3d1e..06029674bc 100644 --- a/spec/std/isa/inst/Zalrsc/lr.w.yaml +++ b/spec/std/isa/inst/Zalrsc/lr.w.yaml @@ -50,7 +50,9 @@ description: | Software should not set the _rl_ bit on an LR instruction unless the _aq_ bit is also set. LR.rl and SC.aq instructions are not guaranteed to provide any stronger ordering than those with both bits clear, but may result in lower performance. -definedBy: Zalrsc +definedBy: + extension: + name: Zalrsc assembly: xd, (xs1) encoding: match: 00010--00000-----010-----0101111 diff --git a/spec/std/isa/inst/Zalrsc/sc.d.yaml b/spec/std/isa/inst/Zalrsc/sc.d.yaml index 8b06cce3c9..4db658d7f3 100644 --- a/spec/std/isa/inst/Zalrsc/sc.d.yaml +++ b/spec/std/isa/inst/Zalrsc/sc.d.yaml @@ -101,7 +101,11 @@ description: | Software should not set the _rl_ bit on an LR instruction unless the _aq_ bit is also set. LR.rl and SC.aq instructions are not guaranteed to provide any stronger ordering than those with both bits clear, but may result in lower performance. -definedBy: Zalrsc +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zalrsc base: 64 assembly: xd, xs2, (xs1) encoding: diff --git a/spec/std/isa/inst/Zalrsc/sc.w.yaml b/spec/std/isa/inst/Zalrsc/sc.w.yaml index 380884c8bf..8c0907f492 100644 --- a/spec/std/isa/inst/Zalrsc/sc.w.yaml +++ b/spec/std/isa/inst/Zalrsc/sc.w.yaml @@ -107,7 +107,9 @@ description: | Software should not set the _rl_ bit on an LR instruction unless the _aq_ bit is also set. LR.rl and SC.aq instructions are not guaranteed to provide any stronger ordering than those with both bits clear, but may result in lower performance. -definedBy: Zalrsc +definedBy: + extension: + name: Zalrsc assembly: xd, xs2, (xs1) encoding: match: 00011------------010-----0101111 diff --git a/spec/std/isa/inst/Zawrs/wrs.nto.yaml b/spec/std/isa/inst/Zawrs/wrs.nto.yaml index 835c008c27..18bf11a669 100644 --- a/spec/std/isa/inst/Zawrs/wrs.nto.yaml +++ b/spec/std/isa/inst/Zawrs/wrs.nto.yaml @@ -39,7 +39,9 @@ description: | may promptly cause an illegal instruction exception if used at U-mode. Unlike WFI, `wrs.nto` is expected to be used by software in U-mode when waiting on memory but without a deadline for that wait. -definedBy: Zawrs +definedBy: + extension: + name: Zawrs assembly: "" encoding: match: "00000000110100000000000001110011" diff --git a/spec/std/isa/inst/Zawrs/wrs.sto.yaml b/spec/std/isa/inst/Zawrs/wrs.sto.yaml index 4d1c26f93d..0961babebb 100644 --- a/spec/std/isa/inst/Zawrs/wrs.sto.yaml +++ b/spec/std/isa/inst/Zawrs/wrs.sto.yaml @@ -35,7 +35,9 @@ description: | The duration of a `wrs.sto` instruction's timeout may vary significantly within and among implementations. In typical implementations this duration should be roughly in the range of 10 to 100 times an on-chip cache miss latency or a cacheless access to main memory. -definedBy: Zawrs +definedBy: + extension: + name: Zawrs assembly: "" encoding: match: "00000001110100000000000001110011" diff --git a/spec/std/isa/inst/Zba/add.uw.yaml b/spec/std/isa/inst/Zba/add.uw.yaml index ab4f18f656..92045e292b 100644 --- a/spec/std/isa/inst/Zba/add.uw.yaml +++ b/spec/std/isa/inst/Zba/add.uw.yaml @@ -11,7 +11,11 @@ base: 64 description: | Performs an XLEN-wide addition between xs2 and the zero-extended least-significant word of xs1. -definedBy: Zba +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zba assembly: xd, xs1, xs2 format: $inherits: diff --git a/spec/std/isa/inst/Zba/sh1add.uw.yaml b/spec/std/isa/inst/Zba/sh1add.uw.yaml index 082c398975..16cac1fcd4 100644 --- a/spec/std/isa/inst/Zba/sh1add.uw.yaml +++ b/spec/std/isa/inst/Zba/sh1add.uw.yaml @@ -11,7 +11,11 @@ description: | Performs an XLEN-wide addition of two addends. The first addend is xs2. The second addend is the unsigned value formed by extracting the least-significant word of xs1 and shifting it left by 1 place. -definedBy: Zba +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zba base: 64 encoding: match: 0010000----------010-----0111011 diff --git a/spec/std/isa/inst/Zba/sh1add.yaml b/spec/std/isa/inst/Zba/sh1add.yaml index 8078d30cf6..eceeb0fff6 100644 --- a/spec/std/isa/inst/Zba/sh1add.yaml +++ b/spec/std/isa/inst/Zba/sh1add.yaml @@ -9,7 +9,9 @@ name: sh1add long_name: Shift left by 1 and add description: | Shifts `xs1` to the left by 1 bit and adds it to `xs2`. -definedBy: Zba +definedBy: + extension: + name: Zba assembly: xd, xs1, xs2 encoding: match: 0010000----------010-----0110011 diff --git a/spec/std/isa/inst/Zba/sh2add.uw.yaml b/spec/std/isa/inst/Zba/sh2add.uw.yaml index 43a62d93f9..9f5bc37c82 100644 --- a/spec/std/isa/inst/Zba/sh2add.uw.yaml +++ b/spec/std/isa/inst/Zba/sh2add.uw.yaml @@ -11,7 +11,11 @@ description: | Performs an XLEN-wide addition of two addends. The first addend is xs2. The second addend is the unsigned value formed by extracting the least-significant word of xs1 and shifting it left by 2 places. -definedBy: Zba +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zba base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zba/sh2add.yaml b/spec/std/isa/inst/Zba/sh2add.yaml index f47b5504b1..fe719b8ab6 100644 --- a/spec/std/isa/inst/Zba/sh2add.yaml +++ b/spec/std/isa/inst/Zba/sh2add.yaml @@ -9,7 +9,9 @@ name: sh2add long_name: Shift left by 2 and add description: | Shifts `xs1` to the left by 2 places and adds it to `xs2`. -definedBy: Zba +definedBy: + extension: + name: Zba assembly: xd, xs1, xs2 encoding: match: 0010000----------100-----0110011 diff --git a/spec/std/isa/inst/Zba/sh3add.uw.yaml b/spec/std/isa/inst/Zba/sh3add.uw.yaml index 3fb518bfb1..47bd085adc 100644 --- a/spec/std/isa/inst/Zba/sh3add.uw.yaml +++ b/spec/std/isa/inst/Zba/sh3add.uw.yaml @@ -11,7 +11,11 @@ description: | Performs an XLEN-wide addition of two addends. The first addend is xs2. The second addend is the unsigned value formed by extracting the least-significant word of xs1 and shifting it left by 3 places. -definedBy: Zba +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zba base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zba/sh3add.yaml b/spec/std/isa/inst/Zba/sh3add.yaml index fdb49987af..a0aed38ec1 100644 --- a/spec/std/isa/inst/Zba/sh3add.yaml +++ b/spec/std/isa/inst/Zba/sh3add.yaml @@ -9,7 +9,9 @@ name: sh3add long_name: Shift left by 3 and add description: | Shifts `xs1` to the left by 3 places and adds it to `xs2`. -definedBy: Zba +definedBy: + extension: + name: Zba assembly: xd, xs1, xs2 encoding: match: 0010000----------110-----0110011 diff --git a/spec/std/isa/inst/Zba/slli.uw.yaml b/spec/std/isa/inst/Zba/slli.uw.yaml index ceb81df32d..ca5eff0ce7 100644 --- a/spec/std/isa/inst/Zba/slli.uw.yaml +++ b/spec/std/isa/inst/Zba/slli.uw.yaml @@ -13,7 +13,11 @@ description: | [NOTE] This instruction is the same as `slli` with `zext.w` performed on xs1 before shifting. -definedBy: Zba +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zba base: 64 encoding: match: 000010-----------001-----0011011 diff --git a/spec/std/isa/inst/Zbb/clz.yaml b/spec/std/isa/inst/Zbb/clz.yaml index 47b98ad8e5..348dedceab 100644 --- a/spec/std/isa/inst/Zbb/clz.yaml +++ b/spec/std/isa/inst/Zbb/clz.yaml @@ -12,7 +12,9 @@ description: | starting at the most-significant bit (i.e., XLEN-1) and progressing to bit 0. Accordingly, if the input is 0, the output is XLEN, and if the most-significant bit of the input is a 1, the output is 0. -definedBy: Zbb +definedBy: + extension: + name: Zbb assembly: xd, xs1 encoding: match: 011000000000-----001-----0010011 diff --git a/spec/std/isa/inst/Zbb/clzw.yaml b/spec/std/isa/inst/Zbb/clzw.yaml index 64be8b2e21..a99b2d3f90 100644 --- a/spec/std/isa/inst/Zbb/clzw.yaml +++ b/spec/std/isa/inst/Zbb/clzw.yaml @@ -12,7 +12,11 @@ description: | Accordingly, if the least-significant word is 0, the output is 32, and if the most-significant bit of the word (_i.e._, bit 31) is a 1, the output is 0. base: 64 -definedBy: Zbb +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zbb assembly: xd, xs1 encoding: match: 011000000000-----001-----0011011 diff --git a/spec/std/isa/inst/Zbb/cpop.yaml b/spec/std/isa/inst/Zbb/cpop.yaml index f83bbfcd4d..a9461fe084 100644 --- a/spec/std/isa/inst/Zbb/cpop.yaml +++ b/spec/std/isa/inst/Zbb/cpop.yaml @@ -21,7 +21,9 @@ description: | function `__builtin_popcountl (unsigned long x)` for LP64 is implemented by cpop on RV64. ---- -definedBy: Zbb +definedBy: + extension: + name: Zbb assembly: xd, xs1 encoding: match: 011000000010-----001-----0010011 diff --git a/spec/std/isa/inst/Zbb/cpopw.yaml b/spec/std/isa/inst/Zbb/cpopw.yaml index c40526556e..6de4ec506f 100644 --- a/spec/std/isa/inst/Zbb/cpopw.yaml +++ b/spec/std/isa/inst/Zbb/cpopw.yaml @@ -21,7 +21,11 @@ description: | function `__builtin_popcountl (unsigned long x)` for LP64 is implemented by cpop on RV64. ---- -definedBy: Zbb +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zbb base: 64 assembly: xd, xs1 encoding: diff --git a/spec/std/isa/inst/Zbb/ctz.yaml b/spec/std/isa/inst/Zbb/ctz.yaml index 9ce9f0d99e..175e8136a0 100644 --- a/spec/std/isa/inst/Zbb/ctz.yaml +++ b/spec/std/isa/inst/Zbb/ctz.yaml @@ -13,7 +13,9 @@ description: | to the most-significant bit (i.e., XLEN-1). Accordingly, if the input is 0, the output is XLEN, and if the least-significant bit of the input is a 1, the output is 0. -definedBy: Zbb +definedBy: + extension: + name: Zbb assembly: xd, xs1 encoding: match: 011000000001-----001-----0010011 diff --git a/spec/std/isa/inst/Zbb/ctzw.yaml b/spec/std/isa/inst/Zbb/ctzw.yaml index c2e9479fd8..37b891ca76 100644 --- a/spec/std/isa/inst/Zbb/ctzw.yaml +++ b/spec/std/isa/inst/Zbb/ctzw.yaml @@ -13,7 +13,11 @@ description: | to the most-significant bit of the least-significant word (i.e., 31). Accordingly, if the least-significant word is 0, the output is 32, and if the least-significant bit of the input is a 1, the output is 0. -definedBy: Zbb +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zbb base: 64 assembly: xd, xs1 encoding: diff --git a/spec/std/isa/inst/Zbb/max.yaml b/spec/std/isa/inst/Zbb/max.yaml index 47906ded0d..0224d11daf 100644 --- a/spec/std/isa/inst/Zbb/max.yaml +++ b/spec/std/isa/inst/Zbb/max.yaml @@ -17,7 +17,9 @@ description: | common sequence, it is suggested that they are scheduled with no intervening instructions so that implementations that are so optimized can fuse them together. -definedBy: Zbb +definedBy: + extension: + name: Zbb assembly: xd, xs1, xs2 encoding: match: 0000101----------110-----0110011 diff --git a/spec/std/isa/inst/Zbb/maxu.yaml b/spec/std/isa/inst/Zbb/maxu.yaml index df5580c9c8..af074c08b4 100644 --- a/spec/std/isa/inst/Zbb/maxu.yaml +++ b/spec/std/isa/inst/Zbb/maxu.yaml @@ -9,7 +9,9 @@ name: maxu long_name: Unsigned maximum description: | Returns the larger of two unsigned integers. -definedBy: Zbb +definedBy: + extension: + name: Zbb assembly: xd, xs1, xs2 encoding: match: 0000101----------111-----0110011 diff --git a/spec/std/isa/inst/Zbb/min.yaml b/spec/std/isa/inst/Zbb/min.yaml index 78effda67f..dc7552f78d 100644 --- a/spec/std/isa/inst/Zbb/min.yaml +++ b/spec/std/isa/inst/Zbb/min.yaml @@ -9,7 +9,9 @@ name: min long_name: Minimum description: | Returns the smaller of two signed integers. -definedBy: Zbb +definedBy: + extension: + name: Zbb assembly: xd, xs1, xs2 encoding: match: 0000101----------100-----0110011 diff --git a/spec/std/isa/inst/Zbb/minu.yaml b/spec/std/isa/inst/Zbb/minu.yaml index a329e1561a..8d848d63b9 100644 --- a/spec/std/isa/inst/Zbb/minu.yaml +++ b/spec/std/isa/inst/Zbb/minu.yaml @@ -9,7 +9,9 @@ name: minu long_name: Unsigned minimum description: | Returns the smaller of two unsigned integers. -definedBy: Zbb +definedBy: + extension: + name: Zbb assembly: xd, xs1, xs2 encoding: match: 0000101----------101-----0110011 diff --git a/spec/std/isa/inst/Zbb/orc.b.yaml b/spec/std/isa/inst/Zbb/orc.b.yaml index 5382b34363..234afd7041 100644 --- a/spec/std/isa/inst/Zbb/orc.b.yaml +++ b/spec/std/isa/inst/Zbb/orc.b.yaml @@ -11,7 +11,9 @@ description: | Combines the bits within each byte using bitwise logical OR. This sets the bits of each byte in the result xd to all zeros if no bit within the respective byte of xs1 is set, or to all ones if any bit within the respective byte of xs1 is set. -definedBy: Zbb +definedBy: + extension: + name: Zbb assembly: xd, xs1 encoding: match: 001010000111-----101-----0010011 diff --git a/spec/std/isa/inst/Zbb/sext.b.yaml b/spec/std/isa/inst/Zbb/sext.b.yaml index e43eb420da..c6a5ac6d72 100644 --- a/spec/std/isa/inst/Zbb/sext.b.yaml +++ b/spec/std/isa/inst/Zbb/sext.b.yaml @@ -10,7 +10,9 @@ long_name: Sign-extend byte description: | Sign-extends the least-significant byte in the source to XLEN by copying the most-significant bit in the byte (i.e., bit 7) to all of the more-significant bits. -definedBy: Zbb +definedBy: + extension: + name: Zbb assembly: xd, xs1 encoding: match: 011000000100-----001-----0010011 diff --git a/spec/std/isa/inst/Zbb/sext.h.yaml b/spec/std/isa/inst/Zbb/sext.h.yaml index 44c42bde6f..b1e0197448 100644 --- a/spec/std/isa/inst/Zbb/sext.h.yaml +++ b/spec/std/isa/inst/Zbb/sext.h.yaml @@ -10,7 +10,9 @@ long_name: Sign-extend halfword description: | Sign-extends the least-significant halfword in the source to XLEN by copying the most-significant bit in the halfword (i.e., bit 15) to all of the more-significant bits. -definedBy: Zbb +definedBy: + extension: + name: Zbb assembly: xd, xs1 encoding: match: 011000000101-----001-----0010011 diff --git a/spec/std/isa/inst/Zbb/zext.h.yaml b/spec/std/isa/inst/Zbb/zext.h.yaml index 358189306a..8d6d194feb 100644 --- a/spec/std/isa/inst/Zbb/zext.h.yaml +++ b/spec/std/isa/inst/Zbb/zext.h.yaml @@ -18,9 +18,11 @@ description: | The *zext.h* instruction is a pseudo-op for `packw` when `Zbkb` is implemented and XLEN == 64. definedBy: # When The Bit-manipulation for Cryptography extension (Zbkb) is implemented, then zext.h is an alias of pack. - allOf: - - Zbb - - not: Zbkb + extension: + allOf: + - name: Zbb + - not: + name: Zbkb encoding: RV32: match: 000010000000-----100-----0110011 diff --git a/spec/std/isa/inst/Zbc/clmulr.yaml b/spec/std/isa/inst/Zbc/clmulr.yaml index dbb536b3e5..4812293431 100644 --- a/spec/std/isa/inst/Zbc/clmulr.yaml +++ b/spec/std/isa/inst/Zbc/clmulr.yaml @@ -9,7 +9,9 @@ name: clmulr long_name: Carry-less multiply (reversed) description: | `clmulr` produces bits 2*XLEN-2:XLEN-1 of the 2*XLEN carry-less product -definedBy: Zbc +definedBy: + extension: + name: Zbc assembly: xd, xs1, xs2 access: s: always diff --git a/spec/std/isa/inst/Zbkb/brev8.yaml b/spec/std/isa/inst/Zbkb/brev8.yaml index 8ac40cfc6e..2334adae41 100644 --- a/spec/std/isa/inst/Zbkb/brev8.yaml +++ b/spec/std/isa/inst/Zbkb/brev8.yaml @@ -9,7 +9,9 @@ name: brev8 long_name: Reverse bits in bytes description: | Reverses the order of the bits in every byte of a register. -definedBy: Zbkb +definedBy: + extension: + name: Zbkb assembly: xd, xs1 encoding: match: 011010000111-----101-----0010011 diff --git a/spec/std/isa/inst/Zbkb/pack.yaml b/spec/std/isa/inst/Zbkb/pack.yaml index 3eb39fc190..483738945a 100644 --- a/spec/std/isa/inst/Zbkb/pack.yaml +++ b/spec/std/isa/inst/Zbkb/pack.yaml @@ -9,7 +9,9 @@ name: pack long_name: No synopsis available description: | No description available. -definedBy: Zbkb +definedBy: + extension: + name: Zbkb assembly: xd, xs1, xs2 encoding: match: 0000100----------100-----0110011 diff --git a/spec/std/isa/inst/Zbkb/packh.yaml b/spec/std/isa/inst/Zbkb/packh.yaml index af7755dcf8..ef4e783fbf 100644 --- a/spec/std/isa/inst/Zbkb/packh.yaml +++ b/spec/std/isa/inst/Zbkb/packh.yaml @@ -9,7 +9,9 @@ name: packh long_name: No synopsis available description: | No description available. -definedBy: Zbkb +definedBy: + extension: + name: Zbkb assembly: xd, xs1, xs2 encoding: match: 0000100----------111-----0110011 diff --git a/spec/std/isa/inst/Zbkb/packw.yaml b/spec/std/isa/inst/Zbkb/packw.yaml index bbb576b4f9..e0fcc52f7e 100644 --- a/spec/std/isa/inst/Zbkb/packw.yaml +++ b/spec/std/isa/inst/Zbkb/packw.yaml @@ -9,7 +9,11 @@ name: packw long_name: No synopsis available description: | No description available. -definedBy: Zbkb +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zbkb base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zbkb/unzip.yaml b/spec/std/isa/inst/Zbkb/unzip.yaml index 16dccdd9ee..1960c535a7 100644 --- a/spec/std/isa/inst/Zbkb/unzip.yaml +++ b/spec/std/isa/inst/Zbkb/unzip.yaml @@ -11,7 +11,11 @@ description: | Gathers bits from the high and low halves of the source word into odd/even bit positions in the destination word. It is the inverse of the zip instruction. This instruction is available only on RV32. -definedBy: Zbkb +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zbkb assembly: xd, xs1 encoding: match: 000010001111-----101-----0010011 diff --git a/spec/std/isa/inst/Zbkb/zip.yaml b/spec/std/isa/inst/Zbkb/zip.yaml index eecbd63370..4312c1cdc0 100644 --- a/spec/std/isa/inst/Zbkb/zip.yaml +++ b/spec/std/isa/inst/Zbkb/zip.yaml @@ -11,7 +11,11 @@ description: | Scatters all of the odd and even bits of a source word into the high and low halves of a destination word. It is the inverse of the unzip instruction. This instruction is available only on RV32. -definedBy: Zbkb +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zbkb assembly: xd, xs1 encoding: match: 000010001111-----001-----0010011 diff --git a/spec/std/isa/inst/Zbkx/xperm4.yaml b/spec/std/isa/inst/Zbkx/xperm4.yaml index 2328241a0f..5012c0c098 100644 --- a/spec/std/isa/inst/Zbkx/xperm4.yaml +++ b/spec/std/isa/inst/Zbkx/xperm4.yaml @@ -11,7 +11,9 @@ description: | The xperm4 instruction operates on nibbles. The xs1 register contains a vector of XLEN/4 4-bit elements. The xs2 register contains a vector of XLEN/4 4-bit indexes. The result is each element in xs2 replaced by the indexed element in xs1, or zero if the index into xs2 is out of bounds. -definedBy: Zbkx +definedBy: + extension: + name: Zbkx assembly: xd, xs1, xs2 encoding: match: 0010100----------010-----0110011 diff --git a/spec/std/isa/inst/Zbkx/xperm8.yaml b/spec/std/isa/inst/Zbkx/xperm8.yaml index a1c8f507d0..9387e53ea1 100644 --- a/spec/std/isa/inst/Zbkx/xperm8.yaml +++ b/spec/std/isa/inst/Zbkx/xperm8.yaml @@ -11,7 +11,9 @@ description: | The xperm8 instruction operates on bytes. The xs1 register contains a vector of XLEN/8 8-bit elements. The xs2 register contains a vector of XLEN/8 8-bit indexes. The result is each element in xs2 replaced by the indexed element in xs1, or zero if the index into xs2 is out of bounds. -definedBy: Zbkx +definedBy: + extension: + name: Zbkx assembly: xd, xs1, xs2 encoding: match: 0010100----------100-----0110011 diff --git a/spec/std/isa/inst/Zbs/bclr.yaml b/spec/std/isa/inst/Zbs/bclr.yaml index 1ea054cd98..2be8cb3edc 100644 --- a/spec/std/isa/inst/Zbs/bclr.yaml +++ b/spec/std/isa/inst/Zbs/bclr.yaml @@ -10,7 +10,9 @@ long_name: Single-Bit clear (Register) description: | Returns xs1 with a single bit cleared at the index specified in xs2. The index is read from the lower log2(XLEN) bits of xs2. -definedBy: Zbs +definedBy: + extension: + name: Zbs assembly: xd, xs1, xs2 encoding: match: 0100100----------001-----0110011 diff --git a/spec/std/isa/inst/Zbs/bclri.yaml b/spec/std/isa/inst/Zbs/bclri.yaml index 004f7b5439..577a89c89a 100644 --- a/spec/std/isa/inst/Zbs/bclri.yaml +++ b/spec/std/isa/inst/Zbs/bclri.yaml @@ -11,7 +11,9 @@ description: | Returns xs1 with a single bit cleared at the index specified in shamt. The index is read from the lower log2(XLEN) bits of shamt. For RV32, the encodings corresponding to shamt[5]=1 are reserved. -definedBy: Zbs +definedBy: + extension: + name: Zbs assembly: xd, xs1, shamt encoding: RV32: diff --git a/spec/std/isa/inst/Zbs/bext.yaml b/spec/std/isa/inst/Zbs/bext.yaml index 157a718bbb..afc6681e5a 100644 --- a/spec/std/isa/inst/Zbs/bext.yaml +++ b/spec/std/isa/inst/Zbs/bext.yaml @@ -10,7 +10,9 @@ long_name: Single-Bit extract (Register) description: | Returns a single bit extracted from xs1 at the index specified in xs2. The index is read from the lower log2(XLEN) bits of xs2. -definedBy: Zbs +definedBy: + extension: + name: Zbs assembly: xd, xs1, xs2 encoding: match: 0100100----------101-----0110011 diff --git a/spec/std/isa/inst/Zbs/bexti.yaml b/spec/std/isa/inst/Zbs/bexti.yaml index 980624ac17..af1c1e31d7 100644 --- a/spec/std/isa/inst/Zbs/bexti.yaml +++ b/spec/std/isa/inst/Zbs/bexti.yaml @@ -11,7 +11,9 @@ description: | Returns a single bit extracted from xs1 at the index specified in xs2. The index is read from the lower log2(XLEN) bits of shamt. For RV32, the encodings corresponding to shamt[5]=1 are reserved. -definedBy: Zbs +definedBy: + extension: + name: Zbs assembly: xd, xs1, shamt encoding: RV32: diff --git a/spec/std/isa/inst/Zbs/binv.yaml b/spec/std/isa/inst/Zbs/binv.yaml index ccc732fc2a..6128059c20 100644 --- a/spec/std/isa/inst/Zbs/binv.yaml +++ b/spec/std/isa/inst/Zbs/binv.yaml @@ -10,7 +10,9 @@ long_name: Single-Bit invert (Register) description: | Returns xs1 with a single bit inverted at the index specified in xs2. The index is read from the lower log2(XLEN) bits of xs2. -definedBy: Zbs +definedBy: + extension: + name: Zbs assembly: xd, xs1, xs2 encoding: match: 0110100----------001-----0110011 diff --git a/spec/std/isa/inst/Zbs/binvi.yaml b/spec/std/isa/inst/Zbs/binvi.yaml index 1abf42892f..54c359e31d 100644 --- a/spec/std/isa/inst/Zbs/binvi.yaml +++ b/spec/std/isa/inst/Zbs/binvi.yaml @@ -11,7 +11,9 @@ description: | Returns xs1 with a single bit inverted at the index specified in shamt. The index is read from the lower log2(XLEN) bits of shamt. For RV32, the encodings corresponding to shamt[5]=1 are reserved. -definedBy: Zbs +definedBy: + extension: + name: Zbs assembly: xd, xs1, shamt encoding: RV32: diff --git a/spec/std/isa/inst/Zbs/bset.yaml b/spec/std/isa/inst/Zbs/bset.yaml index bba664fad4..9750518601 100644 --- a/spec/std/isa/inst/Zbs/bset.yaml +++ b/spec/std/isa/inst/Zbs/bset.yaml @@ -10,7 +10,9 @@ long_name: Single-Bit set (Register) description: | Returns xs1 with a single bit set at the index specified in xs2. The index is read from the lower log2(XLEN) bits of xs2. -definedBy: Zbs +definedBy: + extension: + name: Zbs assembly: xd, xs1, xs2 encoding: match: 0010100----------001-----0110011 diff --git a/spec/std/isa/inst/Zbs/bseti.yaml b/spec/std/isa/inst/Zbs/bseti.yaml index 51c0b81ef4..2938773e3a 100644 --- a/spec/std/isa/inst/Zbs/bseti.yaml +++ b/spec/std/isa/inst/Zbs/bseti.yaml @@ -11,7 +11,9 @@ description: | Returns xs1 with a single bit set at the index specified in shamt. The index is read from the lower log2(XLEN) bits of shamt. For RV32, the encodings corresponding to shamt[5]=1 are reserved. -definedBy: Zbs +definedBy: + extension: + name: Zbs assembly: xd, xs1, shamt encoding: RV32: diff --git a/spec/std/isa/inst/Zcb/c.lbu.yaml b/spec/std/isa/inst/Zcb/c.lbu.yaml index f4889d81b0..cc59a796c3 100644 --- a/spec/std/isa/inst/Zcb/c.lbu.yaml +++ b/spec/std/isa/inst/Zcb/c.lbu.yaml @@ -12,9 +12,10 @@ description: | It computes an effective address by adding the zero-extended offset, to the base address in register xs1. It expands to `lbu` `xd, offset(xs1)`. definedBy: - anyOf: - - Zcb - - Zce + extension: + anyOf: + - name: Zcb + - name: Zce assembly: xd, imm(xs1) encoding: match: 100000--------00 diff --git a/spec/std/isa/inst/Zcb/c.lh.yaml b/spec/std/isa/inst/Zcb/c.lh.yaml index 8039a284d8..cf1ec9138a 100644 --- a/spec/std/isa/inst/Zcb/c.lh.yaml +++ b/spec/std/isa/inst/Zcb/c.lh.yaml @@ -12,9 +12,10 @@ description: | It computes an effective address by adding the zero-extended offset, to the base address in register xs1. It expands to `lh` `xd, offset(xs1)`. definedBy: - anyOf: - - Zcb - - Zce + extension: + anyOf: + - name: Zcb + - name: Zce assembly: xd, imm(xs1) encoding: match: 100001---1----00 diff --git a/spec/std/isa/inst/Zcb/c.lhu.yaml b/spec/std/isa/inst/Zcb/c.lhu.yaml index 6076f49e38..1854124648 100644 --- a/spec/std/isa/inst/Zcb/c.lhu.yaml +++ b/spec/std/isa/inst/Zcb/c.lhu.yaml @@ -12,9 +12,10 @@ description: | It computes an effective address by adding the zero-extended offset, to the base address in register xs1. It expands to `lhu` `xd, offset(xs1)`. definedBy: - anyOf: - - Zcb - - Zce + extension: + anyOf: + - name: Zcb + - name: Zce assembly: xd, imm(xs1) encoding: match: 100001---0----00 diff --git a/spec/std/isa/inst/Zcb/c.mul.yaml b/spec/std/isa/inst/Zcb/c.mul.yaml index f97f3b3d23..ad021bf07f 100644 --- a/spec/std/isa/inst/Zcb/c.mul.yaml +++ b/spec/std/isa/inst/Zcb/c.mul.yaml @@ -11,9 +11,10 @@ description: | Multiplies XLEN bits of the source operands from rsd' and xs2' and writes the lowest XLEN bits of the result to rsd'. definedBy: - allOf: - - Zcb - - Zmmul + extension: + allOf: + - name: Zcb + - name: Zmmul assembly: xd, xs2 encoding: match: 100111---10---01 @@ -27,7 +28,7 @@ access: u: always vs: always vu: always -operation(): | +operation(): |2 if (implemented?(ExtensionName::M) && (CSR[misa].M == 1'b0)) { raise (ExceptionCode::IllegalInstruction, mode(), $encoding); diff --git a/spec/std/isa/inst/Zcb/c.not.yaml b/spec/std/isa/inst/Zcb/c.not.yaml index a96368bf68..0528d01a42 100644 --- a/spec/std/isa/inst/Zcb/c.not.yaml +++ b/spec/std/isa/inst/Zcb/c.not.yaml @@ -12,9 +12,10 @@ description: | This instruction takes the one's complement of xd'/xs1' and writes the result to the same register. definedBy: - anyOf: - - Zcb - - Zce + extension: + anyOf: + - name: Zcb + - name: Zce assembly: xd encoding: match: 100111---1110101 diff --git a/spec/std/isa/inst/Zcb/c.sb.yaml b/spec/std/isa/inst/Zcb/c.sb.yaml index ab111aca7b..0af277f864 100644 --- a/spec/std/isa/inst/Zcb/c.sb.yaml +++ b/spec/std/isa/inst/Zcb/c.sb.yaml @@ -12,9 +12,10 @@ description: | It computes an effective address by adding the zero-extended offset, to the base address in register xs1. It expands to `sb` `xs2, offset(xs1)`. definedBy: - anyOf: - - Zcb - - Zce + extension: + anyOf: + - name: Zcb + - name: Zce assembly: xs2, imm(xs1) encoding: match: 100010--------00 diff --git a/spec/std/isa/inst/Zcb/c.sext.b.yaml b/spec/std/isa/inst/Zcb/c.sext.b.yaml index 59c51c4f39..61a6ceda45 100644 --- a/spec/std/isa/inst/Zcb/c.sext.b.yaml +++ b/spec/std/isa/inst/Zcb/c.sext.b.yaml @@ -13,9 +13,10 @@ description: | the most-significant bit in the byte (i.e., bit 7) to all of the more-significant bits. definedBy: - allOf: - - Zcb - - Zbb + extension: + allOf: + - name: Zcb + - name: Zbb assembly: xd encoding: match: 100111---1100101 @@ -27,7 +28,7 @@ access: u: always vs: always vu: always -operation(): | +operation(): |2 if (implemented?(ExtensionName::B) && (CSR[misa].B == 1'b0)) { raise (ExceptionCode::IllegalInstruction, mode(), $encoding); diff --git a/spec/std/isa/inst/Zcb/c.sext.h.yaml b/spec/std/isa/inst/Zcb/c.sext.h.yaml index 45ff894977..e7ce6414df 100644 --- a/spec/std/isa/inst/Zcb/c.sext.h.yaml +++ b/spec/std/isa/inst/Zcb/c.sext.h.yaml @@ -13,9 +13,10 @@ description: | the most-significant bit in the halfword (i.e., bit 15) to all of the more-significant bits. definedBy: - allOf: - - Zcb - - Zbb + extension: + allOf: + - name: Zcb + - name: Zbb assembly: xd encoding: match: 100111---1101101 @@ -27,7 +28,7 @@ access: u: always vs: always vu: always -operation(): | +operation(): |2 if (implemented?(ExtensionName::B) && (CSR[misa].B == 1'b0)) { raise (ExceptionCode::IllegalInstruction, mode(), $encoding); diff --git a/spec/std/isa/inst/Zcb/c.sh.yaml b/spec/std/isa/inst/Zcb/c.sh.yaml index fb34d90622..28c77d14c3 100644 --- a/spec/std/isa/inst/Zcb/c.sh.yaml +++ b/spec/std/isa/inst/Zcb/c.sh.yaml @@ -12,9 +12,10 @@ description: | It computes an effective address by adding the zero-extended offset, to the base address in register xs1. It expands to `sh` `xs2, offset(xs1)`. definedBy: - anyOf: - - Zcb - - Zce + extension: + anyOf: + - name: Zcb + - name: Zce assembly: xs2, imm(xs1) encoding: match: 100011---0----00 diff --git a/spec/std/isa/inst/Zcb/c.zext.b.yaml b/spec/std/isa/inst/Zcb/c.zext.b.yaml index 550af77d7f..9291aead51 100644 --- a/spec/std/isa/inst/Zcb/c.zext.b.yaml +++ b/spec/std/isa/inst/Zcb/c.zext.b.yaml @@ -13,9 +13,10 @@ description: | 0's into all of the bits more significant than 7. definedBy: - allOf: - - Zcb - - Zbb + extension: + allOf: + - name: Zcb + - name: Zbb assembly: xd encoding: match: 100111---1100001 @@ -27,7 +28,7 @@ access: u: always vs: always vu: always -operation(): | +operation(): |2 if (implemented?(ExtensionName::B) && (CSR[misa].B == 1'b0)) { raise (ExceptionCode::IllegalInstruction, mode(), $encoding); diff --git a/spec/std/isa/inst/Zcb/c.zext.h.yaml b/spec/std/isa/inst/Zcb/c.zext.h.yaml index 885a57f50c..7af7d7500b 100644 --- a/spec/std/isa/inst/Zcb/c.zext.h.yaml +++ b/spec/std/isa/inst/Zcb/c.zext.h.yaml @@ -13,9 +13,10 @@ description: | 0's into all of the bits more significant than 15. definedBy: - allOf: - - Zcb - - Zbb + extension: + allOf: + - name: Zcb + - name: Zbb assembly: xd encoding: match: 100111---1101001 @@ -27,7 +28,7 @@ access: u: always vs: always vu: always -operation(): | +operation(): |2 if (implemented?(ExtensionName::B) && (CSR[misa].B == 1'b0)) { raise (ExceptionCode::IllegalInstruction, mode(), $encoding); diff --git a/spec/std/isa/inst/Zcb/c.zext.w.yaml b/spec/std/isa/inst/Zcb/c.zext.w.yaml index 6e7ac6e964..88c1b2b60c 100644 --- a/spec/std/isa/inst/Zcb/c.zext.w.yaml +++ b/spec/std/isa/inst/Zcb/c.zext.w.yaml @@ -13,8 +13,11 @@ description: | definedBy: allOf: - - Zcb - - Zbb + - xlen: 64 + - extension: + allOf: + - name: Zcb + - name: Zbb assembly: xd base: 64 encoding: @@ -27,7 +30,7 @@ access: u: always vs: always vu: always -operation(): | +operation(): |2 if (implemented?(ExtensionName::B) && (CSR[misa].B == 1'b0)) { raise (ExceptionCode::IllegalInstruction, mode(), $encoding); diff --git a/spec/std/isa/inst/Zcd/c.fld.yaml b/spec/std/isa/inst/Zcd/c.fld.yaml index bf503df8c3..b8deb4a8af 100644 --- a/spec/std/isa/inst/Zcd/c.fld.yaml +++ b/spec/std/isa/inst/Zcd/c.fld.yaml @@ -13,11 +13,12 @@ description: | to the base address in register xs1. It expands to `fld` `fd, offset(xs1)`. definedBy: - anyOf: - - allOf: - - C - - D - - Zcd + extension: + anyOf: + - allOf: + - name: C + - name: D + - name: Zcd assembly: fd, imm(xs1) encoding: match: 001-----------00 diff --git a/spec/std/isa/inst/Zcd/c.fldsp.yaml b/spec/std/isa/inst/Zcd/c.fldsp.yaml index 5f077ddd0e..a8a20e640b 100644 --- a/spec/std/isa/inst/Zcd/c.fldsp.yaml +++ b/spec/std/isa/inst/Zcd/c.fldsp.yaml @@ -13,11 +13,12 @@ description: | to the stack pointer, x2. It expands to `fld` `fd, offset(x2)`. definedBy: - anyOf: - - allOf: - - C - - D - - Zcd + extension: + anyOf: + - allOf: + - name: C + - name: D + - name: Zcd assembly: fd, imm(sp) encoding: match: 001-----------10 diff --git a/spec/std/isa/inst/Zcd/c.fsd.yaml b/spec/std/isa/inst/Zcd/c.fsd.yaml index 177ec28227..6df2a3c7ad 100644 --- a/spec/std/isa/inst/Zcd/c.fsd.yaml +++ b/spec/std/isa/inst/Zcd/c.fsd.yaml @@ -13,11 +13,12 @@ description: | to the base address in register xs1. It expands to `fsd` `fs2, offset(xs1)`. definedBy: - anyOf: - - allOf: - - C - - D - - Zcd + extension: + anyOf: + - allOf: + - name: C + - name: D + - name: Zcd assembly: fs2, imm(xs1) encoding: match: 101-----------00 diff --git a/spec/std/isa/inst/Zcd/c.fsdsp.yaml b/spec/std/isa/inst/Zcd/c.fsdsp.yaml index 33e8b280c2..df8ebc858c 100644 --- a/spec/std/isa/inst/Zcd/c.fsdsp.yaml +++ b/spec/std/isa/inst/Zcd/c.fsdsp.yaml @@ -13,11 +13,12 @@ description: | to the stack pointer, x2. It expands to `fsd` `fs2, offset(x2)`. definedBy: - anyOf: - - allOf: - - C - - D - - Zcd + extension: + anyOf: + - allOf: + - name: C + - name: D + - name: Zcd assembly: fs2, imm(sp) encoding: match: 101-----------10 diff --git a/spec/std/isa/inst/Zcf/c.flw.yaml b/spec/std/isa/inst/Zcf/c.flw.yaml index a8601cc187..7e7e6f9280 100644 --- a/spec/std/isa/inst/Zcf/c.flw.yaml +++ b/spec/std/isa/inst/Zcf/c.flw.yaml @@ -13,11 +13,10 @@ description: | to the base address in register xs1. It expands to `flw` `fd, offset(xs1)`. definedBy: - anyOf: - - allOf: - - C - - F - - Zcf + allOf: + - xlen: 32 + - extension: + name: Zcf assembly: fd, imm(xs1) base: 32 encoding: diff --git a/spec/std/isa/inst/Zcf/c.flwsp.yaml b/spec/std/isa/inst/Zcf/c.flwsp.yaml index fb1dbbd694..b4d1328742 100644 --- a/spec/std/isa/inst/Zcf/c.flwsp.yaml +++ b/spec/std/isa/inst/Zcf/c.flwsp.yaml @@ -13,11 +13,10 @@ description: | to the stack pointer, x2. It expands to `flw` `fd, offset(x2)`. definedBy: - anyOf: - - allOf: - - C - - F - - Zcf + allOf: + - xlen: 32 + - extension: + name: Zcf assembly: fd, imm(sp) base: 32 encoding: diff --git a/spec/std/isa/inst/Zcf/c.fsw.yaml b/spec/std/isa/inst/Zcf/c.fsw.yaml index 22e36bf3a6..51aa2aa7a9 100644 --- a/spec/std/isa/inst/Zcf/c.fsw.yaml +++ b/spec/std/isa/inst/Zcf/c.fsw.yaml @@ -13,11 +13,10 @@ description: | to the base address in register xs1. It expands to `fsw` `fs2, offset(xs1)`. definedBy: - anyOf: - - allOf: - - C - - F - - Zcf + allOf: + - xlen: 32 + - extension: + name: Zcf base: 32 assembly: fs2, imm(xs1) encoding: diff --git a/spec/std/isa/inst/Zcf/c.fswsp.yaml b/spec/std/isa/inst/Zcf/c.fswsp.yaml index caf2d8486f..d431dbf655 100644 --- a/spec/std/isa/inst/Zcf/c.fswsp.yaml +++ b/spec/std/isa/inst/Zcf/c.fswsp.yaml @@ -13,11 +13,10 @@ description: | to the stack pointer, x2. It expands to `fsw` `fs2, offset(x2)`. definedBy: - anyOf: - - allOf: - - C - - F - - Zcf + allOf: + - xlen: 32 + - extension: + name: Zcf assembly: fs2, imm(sp) base: 32 encoding: diff --git a/spec/std/isa/inst/Zcmop/c.mop.n.yaml b/spec/std/isa/inst/Zcmop/c.mop.n.yaml index 3ccdb34795..e677e130b8 100644 --- a/spec/std/isa/inst/Zcmop/c.mop.n.yaml +++ b/spec/std/isa/inst/Zcmop/c.mop.n.yaml @@ -7,8 +7,14 @@ $schema: inst_schema.json# kind: instruction name: c.mop.n long_name: Compressed May-Be-Operation -description: C.MOP.n is encoded in the reserved encoding space corresponding to C.LUI xn, 0. Unlike the MOPs defined in the Zimop extension, the C.MOP.n instructions are defined to not write any register. Their encoding allows future extensions to define them to read register x[n]. -definedBy: Zcmop +description: + C.MOP.n is encoded in the reserved encoding space corresponding to C.LUI + xn, 0. Unlike the MOPs defined in the Zimop extension, the C.MOP.n instructions + are defined to not write any register. Their encoding allows future extensions to + define them to read register x[n]. +definedBy: + extension: + name: Zcmop assembly: "" encoding: match: 01100---10000001 diff --git a/spec/std/isa/inst/Zcmp/cm.mva01s.yaml b/spec/std/isa/inst/Zcmp/cm.mva01s.yaml index 1315656bac..afccef45f5 100644 --- a/spec/std/isa/inst/Zcmp/cm.mva01s.yaml +++ b/spec/std/isa/inst/Zcmp/cm.mva01s.yaml @@ -10,7 +10,9 @@ long_name: Move two s0-s7 registers into a0-a1 description: | Moves r1s' into a0 and r2s' into a1. The execution is atomic, so it is not possible to observe state where only one of a0 or a1 have been updated. The encoding uses sreg number specifiers instead of xreg number specifiers to save encoding space. The mapping between them is specified in the pseudo-code below. -definedBy: Zcmp +definedBy: + extension: + name: Zcmp assembly: r1s, r2s encoding: match: 101011---11---10 diff --git a/spec/std/isa/inst/Zcmp/cm.mvsa01.yaml b/spec/std/isa/inst/Zcmp/cm.mvsa01.yaml index c83c49a1ee..14af57b1f3 100644 --- a/spec/std/isa/inst/Zcmp/cm.mvsa01.yaml +++ b/spec/std/isa/inst/Zcmp/cm.mvsa01.yaml @@ -12,7 +12,9 @@ description: | The execution is atomic, so it is not possible to observe state where only one of r1s' or r2s' has been updated. The encoding uses sreg number specifiers instead of xreg number specifiers to save encoding space. The mapping between them is specified in the pseudo-code below. -definedBy: Zcmp +definedBy: + extension: + name: Zcmp assembly: r1s, r2s encoding: match: 101011---01---10 diff --git a/spec/std/isa/inst/Zcmp/cm.pop.yaml b/spec/std/isa/inst/Zcmp/cm.pop.yaml index 7e24c6e852..99deb9dbb3 100644 --- a/spec/std/isa/inst/Zcmp/cm.pop.yaml +++ b/spec/std/isa/inst/Zcmp/cm.pop.yaml @@ -17,7 +17,9 @@ description: | * it must be a multiple of 16 (bytes): ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112 ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160 -definedBy: Zcmp +definedBy: + extension: + name: Zcmp assembly: reg_list, stack_adj encoding: match: 10111010------10 diff --git a/spec/std/isa/inst/Zcmp/cm.popret.yaml b/spec/std/isa/inst/Zcmp/cm.popret.yaml index 6005c91a0b..a589661a09 100644 --- a/spec/std/isa/inst/Zcmp/cm.popret.yaml +++ b/spec/std/isa/inst/Zcmp/cm.popret.yaml @@ -17,7 +17,9 @@ description: | * it must be a multiple of 16 (bytes): ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112 ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160 -definedBy: Zcmp +definedBy: + extension: + name: Zcmp assembly: reg_list, stack_adj encoding: match: 10111110------10 diff --git a/spec/std/isa/inst/Zcmp/cm.popretz.yaml b/spec/std/isa/inst/Zcmp/cm.popretz.yaml index a95557639b..62cd8930a4 100644 --- a/spec/std/isa/inst/Zcmp/cm.popretz.yaml +++ b/spec/std/isa/inst/Zcmp/cm.popretz.yaml @@ -17,7 +17,9 @@ description: | * it must be a multiple of 16 (bytes): ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112 ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160 -definedBy: Zcmp +definedBy: + extension: + name: Zcmp assembly: reg_list, stack_adj encoding: match: 10111100------10 diff --git a/spec/std/isa/inst/Zcmp/cm.push.yaml b/spec/std/isa/inst/Zcmp/cm.push.yaml index e8b9cf6445..ba199de7b8 100644 --- a/spec/std/isa/inst/Zcmp/cm.push.yaml +++ b/spec/std/isa/inst/Zcmp/cm.push.yaml @@ -18,7 +18,9 @@ description: | * it must be a multiple of 16 (bytes): ** for RV32 the allowed values are: 16, 32, 48, 64, 80, 96, 112 ** for RV64 the allowed values are: 16, 32, 48, 64, 80, 96, 112, 128, 144, 160 -definedBy: Zcmp +definedBy: + extension: + name: Zcmp assembly: reg_list, -stack_adj encoding: match: 10111000------10 diff --git a/spec/std/isa/inst/Zfa/fli.s.yaml b/spec/std/isa/inst/Zfa/fli.s.yaml index b4e920aeb7..c6045e5af7 100644 --- a/spec/std/isa/inst/Zfa/fli.s.yaml +++ b/spec/std/isa/inst/Zfa/fli.s.yaml @@ -9,7 +9,9 @@ name: fli.s long_name: No synopsis available description: | No description available. -definedBy: Zfa +definedBy: + extension: + name: Zfa assembly: fd, xs1 encoding: match: 111100000001-----000-----1010011 diff --git a/spec/std/isa/inst/Zfa/fmaxm.s.yaml b/spec/std/isa/inst/Zfa/fmaxm.s.yaml index bc10efccab..c58b130110 100644 --- a/spec/std/isa/inst/Zfa/fmaxm.s.yaml +++ b/spec/std/isa/inst/Zfa/fmaxm.s.yaml @@ -9,7 +9,9 @@ name: fmaxm.s long_name: No synopsis available description: | No description available. -definedBy: Zfa +definedBy: + extension: + name: Zfa assembly: fd, fs1, fs2 encoding: match: 0010100----------011-----1010011 diff --git a/spec/std/isa/inst/Zfa/fminm.s.yaml b/spec/std/isa/inst/Zfa/fminm.s.yaml index 22bfe02762..e2f9ded94c 100644 --- a/spec/std/isa/inst/Zfa/fminm.s.yaml +++ b/spec/std/isa/inst/Zfa/fminm.s.yaml @@ -9,7 +9,9 @@ name: fminm.s long_name: No synopsis available description: | No description available. -definedBy: Zfa +definedBy: + extension: + name: Zfa assembly: fd, fs1, fs2 encoding: match: 0010100----------010-----1010011 diff --git a/spec/std/isa/inst/Zfa/fround.s.yaml b/spec/std/isa/inst/Zfa/fround.s.yaml index a6252bfddd..a71f5755d7 100644 --- a/spec/std/isa/inst/Zfa/fround.s.yaml +++ b/spec/std/isa/inst/Zfa/fround.s.yaml @@ -15,7 +15,9 @@ description: | Zero and infinite inputs are copied to _fd_ unmodified. Signaling NaN inputs cause the invalid operation exception flag to be set; no other exception flags are set. FROUND.S is encoded like FCVT.S.D, but with rs2=4. -definedBy: Zfa +definedBy: + extension: + name: Zfa assembly: fd, fs1, rm encoding: match: 010000000100-------------1010011 diff --git a/spec/std/isa/inst/Zfa/froundnx.s.yaml b/spec/std/isa/inst/Zfa/froundnx.s.yaml index 5e6ae38805..bba1ac0318 100644 --- a/spec/std/isa/inst/Zfa/froundnx.s.yaml +++ b/spec/std/isa/inst/Zfa/froundnx.s.yaml @@ -9,7 +9,9 @@ name: froundnx.s long_name: Floating-point Round Single-precision to Integer with Inexact description: | No description available. -definedBy: Zfa +definedBy: + extension: + name: Zfa assembly: fd, fs1, rm encoding: match: 010000000101-------------1010011 diff --git a/spec/std/isa/inst/Zfbfmin/fcvt.bf16.s.yaml b/spec/std/isa/inst/Zfbfmin/fcvt.bf16.s.yaml index 6a4efc47bf..6728803770 100644 --- a/spec/std/isa/inst/Zfbfmin/fcvt.bf16.s.yaml +++ b/spec/std/isa/inst/Zfbfmin/fcvt.bf16.s.yaml @@ -9,7 +9,9 @@ name: fcvt.bf16.s long_name: No synopsis available description: | No description available. -definedBy: Zfbfmin +definedBy: + extension: + name: Zfbfmin assembly: fd, fs1, rm encoding: match: 010001001000-------------1010011 diff --git a/spec/std/isa/inst/Zfbfmin/fcvt.s.bf16.yaml b/spec/std/isa/inst/Zfbfmin/fcvt.s.bf16.yaml index eaed84c99b..34c4cb8d8a 100644 --- a/spec/std/isa/inst/Zfbfmin/fcvt.s.bf16.yaml +++ b/spec/std/isa/inst/Zfbfmin/fcvt.s.bf16.yaml @@ -9,7 +9,9 @@ name: fcvt.s.bf16 long_name: No synopsis available description: | No description available. -definedBy: Zfbfmin +definedBy: + extension: + name: Zfbfmin assembly: fd, fs1, rm encoding: match: 010000000110-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fadd.h.yaml b/spec/std/isa/inst/Zfh/fadd.h.yaml index 62df413881..cf9743f33e 100644 --- a/spec/std/isa/inst/Zfh/fadd.h.yaml +++ b/spec/std/isa/inst/Zfh/fadd.h.yaml @@ -9,7 +9,9 @@ name: fadd.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2, rm encoding: match: 0000010------------------1010011 diff --git a/spec/std/isa/inst/Zfh/fclass.h.yaml b/spec/std/isa/inst/Zfh/fclass.h.yaml index 3aeca59c62..87bb0f4e13 100644 --- a/spec/std/isa/inst/Zfh/fclass.h.yaml +++ b/spec/std/isa/inst/Zfh/fclass.h.yaml @@ -9,7 +9,9 @@ name: fclass.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: xd, fs1 encoding: match: 111001000000-----001-----1010011 diff --git a/spec/std/isa/inst/Zfh/fcvt.d.h.yaml b/spec/std/isa/inst/Zfh/fcvt.d.h.yaml index 90de62fb3d..f2608c5c3c 100644 --- a/spec/std/isa/inst/Zfh/fcvt.d.h.yaml +++ b/spec/std/isa/inst/Zfh/fcvt.d.h.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - allOf: [D, Zfh] + extension: + allOf: + - name: D + - name: Zfh assembly: fd, fs1, rm encoding: match: 010000100010-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fcvt.h.d.yaml b/spec/std/isa/inst/Zfh/fcvt.h.d.yaml index 59c69a45cc..2c59e4e356 100644 --- a/spec/std/isa/inst/Zfh/fcvt.h.d.yaml +++ b/spec/std/isa/inst/Zfh/fcvt.h.d.yaml @@ -13,7 +13,10 @@ description: text: | `fcvt.h.d` converts a Double-precision Floating-point number to a Half-precision floating-point number. definedBy: - allOf: [D, Zfh] + extension: + allOf: + - name: D + - name: Zfh assembly: fd, fs1, rm encoding: match: 010001000001-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fcvt.h.l.yaml b/spec/std/isa/inst/Zfh/fcvt.h.l.yaml index 51aa580097..da41c3e184 100644 --- a/spec/std/isa/inst/Zfh/fcvt.h.l.yaml +++ b/spec/std/isa/inst/Zfh/fcvt.h.l.yaml @@ -12,7 +12,11 @@ description: normative: false text: | `fcvt.h.l` converts a 64-bit signed integer to a half-precision floating-point number. -definedBy: Zfh +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zfh assembly: fd, xs1, rm encoding: match: 110101000010-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fcvt.h.lu.yaml b/spec/std/isa/inst/Zfh/fcvt.h.lu.yaml index cd5eb7da63..dfaa1bef45 100644 --- a/spec/std/isa/inst/Zfh/fcvt.h.lu.yaml +++ b/spec/std/isa/inst/Zfh/fcvt.h.lu.yaml @@ -12,7 +12,11 @@ description: normative: false text: | `fcvt.h.lu` converts a 64-bit unsigned integer to a half-precision floating-point number. -definedBy: Zfh +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zfh assembly: fd, xs1, rm encoding: match: 110101000011-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fcvt.h.s.yaml b/spec/std/isa/inst/Zfh/fcvt.h.s.yaml index bca0f8d461..7c6599ff49 100644 --- a/spec/std/isa/inst/Zfh/fcvt.h.s.yaml +++ b/spec/std/isa/inst/Zfh/fcvt.h.s.yaml @@ -8,7 +8,10 @@ kind: instruction name: fcvt.h.s long_name: Convert half-precision float to a single-precision float definedBy: - allOf: [Zfh, Zfhmin] + extension: + allOf: + - name: Zfh + - name: Zfhmin assembly: fd, fs1, rm description: | Converts a half-precision number in floating-point register _fs1_ into a single-precision floating-point number in diff --git a/spec/std/isa/inst/Zfh/fcvt.h.w.yaml b/spec/std/isa/inst/Zfh/fcvt.h.w.yaml index 77fec6d33c..6f0612b2d7 100644 --- a/spec/std/isa/inst/Zfh/fcvt.h.w.yaml +++ b/spec/std/isa/inst/Zfh/fcvt.h.w.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fcvt.h.w` converts a 32-bit signed integer to a half-precision floating-point number. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, xs1, rm encoding: match: 110101000000-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fcvt.h.wu.yaml b/spec/std/isa/inst/Zfh/fcvt.h.wu.yaml index 46c6244522..f92ba474f1 100644 --- a/spec/std/isa/inst/Zfh/fcvt.h.wu.yaml +++ b/spec/std/isa/inst/Zfh/fcvt.h.wu.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fcvt.h.wu` converts a 32-bit unsigned integer to a half-precision floating-point number. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, xs1, rm encoding: match: 110101000001-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fcvt.l.h.yaml b/spec/std/isa/inst/Zfh/fcvt.l.h.yaml index c33d1e6b25..cd3d3fae63 100644 --- a/spec/std/isa/inst/Zfh/fcvt.l.h.yaml +++ b/spec/std/isa/inst/Zfh/fcvt.l.h.yaml @@ -12,7 +12,11 @@ description: normative: false text: | `fcvt.l.h` converts a half-precision floating-point number to a signed 64-bit integer. -definedBy: Zfh +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zfh assembly: xd, fs1, rm encoding: match: 110001000010-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fcvt.lu.h.yaml b/spec/std/isa/inst/Zfh/fcvt.lu.h.yaml index 129e54acdb..93fbdbe7e0 100644 --- a/spec/std/isa/inst/Zfh/fcvt.lu.h.yaml +++ b/spec/std/isa/inst/Zfh/fcvt.lu.h.yaml @@ -12,7 +12,11 @@ description: normative: false text: | `fcvt.lu.h` converts a half-precision floating-point number to an unsigned 64-bit integer. -definedBy: Zfh +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zfh assembly: xd, fs1, rm encoding: match: 110001000011-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fcvt.s.h.yaml b/spec/std/isa/inst/Zfh/fcvt.s.h.yaml index 51407f7b33..5414c0cf67 100644 --- a/spec/std/isa/inst/Zfh/fcvt.s.h.yaml +++ b/spec/std/isa/inst/Zfh/fcvt.s.h.yaml @@ -8,7 +8,10 @@ kind: instruction name: fcvt.s.h long_name: Convert single-precision float to a half-precision float definedBy: - allOf: [Zfh, Zfhmin] + extension: + allOf: + - name: Zfh + - name: Zfhmin assembly: fd, fs1, rm description: | Converts a single-precision number in floating-point register _fs1_ into a half-precision floating-point number in diff --git a/spec/std/isa/inst/Zfh/fcvt.w.h.yaml b/spec/std/isa/inst/Zfh/fcvt.w.h.yaml index add4781f67..3e76212212 100644 --- a/spec/std/isa/inst/Zfh/fcvt.w.h.yaml +++ b/spec/std/isa/inst/Zfh/fcvt.w.h.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fcvt.w.h` converts a half-precision floating-point number to a signed 32-bit integer. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: xd, fs1, rm encoding: match: 110001000000-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fcvt.wu.h.yaml b/spec/std/isa/inst/Zfh/fcvt.wu.h.yaml index 4a9ab907f6..a81902f7d2 100644 --- a/spec/std/isa/inst/Zfh/fcvt.wu.h.yaml +++ b/spec/std/isa/inst/Zfh/fcvt.wu.h.yaml @@ -12,7 +12,9 @@ description: normative: false text: | `fcvt.wu.h` converts a half-precision floating-point number to an unsigned 32-bit integer. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: xd, fs1, rm encoding: match: 110001000001-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fdiv.h.yaml b/spec/std/isa/inst/Zfh/fdiv.h.yaml index ac844b16f6..d33cd403c6 100644 --- a/spec/std/isa/inst/Zfh/fdiv.h.yaml +++ b/spec/std/isa/inst/Zfh/fdiv.h.yaml @@ -9,7 +9,9 @@ name: fdiv.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2, rm encoding: match: 0001110------------------1010011 diff --git a/spec/std/isa/inst/Zfh/feq.h.yaml b/spec/std/isa/inst/Zfh/feq.h.yaml index fbfba3259a..e26d1962ee 100644 --- a/spec/std/isa/inst/Zfh/feq.h.yaml +++ b/spec/std/isa/inst/Zfh/feq.h.yaml @@ -9,7 +9,9 @@ name: feq.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: xd, fs1, fs2 encoding: match: 1010010----------010-----1010011 diff --git a/spec/std/isa/inst/Zfh/fle.h.yaml b/spec/std/isa/inst/Zfh/fle.h.yaml index 56466815ea..1d0b77defb 100644 --- a/spec/std/isa/inst/Zfh/fle.h.yaml +++ b/spec/std/isa/inst/Zfh/fle.h.yaml @@ -9,7 +9,9 @@ name: fle.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: xd, fs1, fs2 encoding: match: 1010010----------000-----1010011 diff --git a/spec/std/isa/inst/Zfh/fleq.h.yaml b/spec/std/isa/inst/Zfh/fleq.h.yaml index 9a9ae31412..2ad1caf14e 100644 --- a/spec/std/isa/inst/Zfh/fleq.h.yaml +++ b/spec/std/isa/inst/Zfh/fleq.h.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - allOf: [Zfa, Zfh] + extension: + allOf: + - name: Zfa + - name: Zfh assembly: xd, fs1, fs2 encoding: match: 1010010----------100-----1010011 diff --git a/spec/std/isa/inst/Zfh/flh.yaml b/spec/std/isa/inst/Zfh/flh.yaml index ceabcbeb22..ae0f2b7c35 100644 --- a/spec/std/isa/inst/Zfh/flh.yaml +++ b/spec/std/isa/inst/Zfh/flh.yaml @@ -15,10 +15,14 @@ description: | `flh` is only guaranteed to execute atomically if the effective address is naturally aligned. definedBy: - anyOf: [Zfh, Zfhmin, Zhinx] + extension: + anyOf: + - name: Zfh + - name: Zfhmin + - name: Zhinx assembly: fd, imm(xs1) encoding: - match: -----------------001-----0000111 + match: "-----------------001-----0000111" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/Zfh/fli.h.yaml b/spec/std/isa/inst/Zfh/fli.h.yaml index b59d7f9bd6..3affd938ff 100644 --- a/spec/std/isa/inst/Zfh/fli.h.yaml +++ b/spec/std/isa/inst/Zfh/fli.h.yaml @@ -10,9 +10,10 @@ long_name: Floating-point Load Immediate Half-precision description: | No description available. definedBy: - allOf: - - Zfa - - anyOf: [Zfh, Zvfh] + extension: + allOf: + - name: Zfa + - name: Zfh assembly: fd, xs1 encoding: match: 111101000001-----000-----1010011 diff --git a/spec/std/isa/inst/Zfh/flt.h.yaml b/spec/std/isa/inst/Zfh/flt.h.yaml index 478f23ddc7..816a508c29 100644 --- a/spec/std/isa/inst/Zfh/flt.h.yaml +++ b/spec/std/isa/inst/Zfh/flt.h.yaml @@ -9,7 +9,9 @@ name: flt.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: xd, fs1, fs2 encoding: match: 1010010----------001-----1010011 diff --git a/spec/std/isa/inst/Zfh/fltq.h.yaml b/spec/std/isa/inst/Zfh/fltq.h.yaml index 9dc3f167ed..03c4b7048a 100644 --- a/spec/std/isa/inst/Zfh/fltq.h.yaml +++ b/spec/std/isa/inst/Zfh/fltq.h.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - allOf: [Zfa, Zfh] + extension: + allOf: + - name: Zfa + - name: Zfh assembly: xd, fs1, fs2 encoding: match: 1010010----------101-----1010011 diff --git a/spec/std/isa/inst/Zfh/fmadd.h.yaml b/spec/std/isa/inst/Zfh/fmadd.h.yaml index 396090105c..01f1b06330 100644 --- a/spec/std/isa/inst/Zfh/fmadd.h.yaml +++ b/spec/std/isa/inst/Zfh/fmadd.h.yaml @@ -9,10 +9,12 @@ name: fmadd.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----10------------------1000011 + match: "-----10------------------1000011" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/Zfh/fmax.h.yaml b/spec/std/isa/inst/Zfh/fmax.h.yaml index 18be1432cd..6f5904e1d9 100644 --- a/spec/std/isa/inst/Zfh/fmax.h.yaml +++ b/spec/std/isa/inst/Zfh/fmax.h.yaml @@ -9,7 +9,9 @@ name: fmax.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2 encoding: match: 0010110----------001-----1010011 diff --git a/spec/std/isa/inst/Zfh/fmaxm.h.yaml b/spec/std/isa/inst/Zfh/fmaxm.h.yaml index 1390972e87..fc05a19dcc 100644 --- a/spec/std/isa/inst/Zfh/fmaxm.h.yaml +++ b/spec/std/isa/inst/Zfh/fmaxm.h.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - allOf: [Zfa, Zfh] + extension: + allOf: + - name: Zfa + - name: Zfh assembly: fd, fs1, fs2 encoding: match: 0010110----------011-----1010011 diff --git a/spec/std/isa/inst/Zfh/fmin.h.yaml b/spec/std/isa/inst/Zfh/fmin.h.yaml index 42a3f84792..57aff2e5a2 100644 --- a/spec/std/isa/inst/Zfh/fmin.h.yaml +++ b/spec/std/isa/inst/Zfh/fmin.h.yaml @@ -9,7 +9,9 @@ name: fmin.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2 encoding: match: 0010110----------000-----1010011 diff --git a/spec/std/isa/inst/Zfh/fminm.h.yaml b/spec/std/isa/inst/Zfh/fminm.h.yaml index ba6a8b1342..5d515e5815 100644 --- a/spec/std/isa/inst/Zfh/fminm.h.yaml +++ b/spec/std/isa/inst/Zfh/fminm.h.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - allOf: [Zfa, Zfh] + extension: + allOf: + - name: Zfa + - name: Zfh assembly: fd, fs1, fs2 encoding: match: 0010110----------010-----1010011 diff --git a/spec/std/isa/inst/Zfh/fmsub.h.yaml b/spec/std/isa/inst/Zfh/fmsub.h.yaml index 931dc428b8..b8296d7921 100644 --- a/spec/std/isa/inst/Zfh/fmsub.h.yaml +++ b/spec/std/isa/inst/Zfh/fmsub.h.yaml @@ -9,10 +9,12 @@ name: fmsub.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----10------------------1000111 + match: "-----10------------------1000111" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/Zfh/fmul.h.yaml b/spec/std/isa/inst/Zfh/fmul.h.yaml index f669a2b4c1..8292d909a1 100644 --- a/spec/std/isa/inst/Zfh/fmul.h.yaml +++ b/spec/std/isa/inst/Zfh/fmul.h.yaml @@ -9,7 +9,9 @@ name: fmul.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2, rm encoding: match: 0001010------------------1010011 diff --git a/spec/std/isa/inst/Zfh/fmv.h.x.yaml b/spec/std/isa/inst/Zfh/fmv.h.x.yaml index 44b4cde6ff..308472ae94 100644 --- a/spec/std/isa/inst/Zfh/fmv.h.x.yaml +++ b/spec/std/isa/inst/Zfh/fmv.h.x.yaml @@ -13,7 +13,11 @@ description: | register `fd`. The bits are not modified in the transfer, and in particular, the payloads of non-canonical NaNs are preserved. definedBy: - anyOf: [Zfhmin, Zhinx] + extension: + anyOf: + - name: F + - name: Zfhmin + - name: Zhinx assembly: fd, xs1 encoding: match: 111101000000-----000-----1010011 diff --git a/spec/std/isa/inst/Zfh/fmv.x.h.yaml b/spec/std/isa/inst/Zfh/fmv.x.h.yaml index 3f8213c83a..3b2a00dc79 100644 --- a/spec/std/isa/inst/Zfh/fmv.x.h.yaml +++ b/spec/std/isa/inst/Zfh/fmv.x.h.yaml @@ -8,7 +8,11 @@ kind: instruction name: fmv.x.h long_name: Move half-precision value from floating-point to integer register definedBy: - anyOf: [Zfh, Zfhmin, Zhinx] + extension: + anyOf: + - name: Zfh + - name: Zfhmin + - name: Zhinx assembly: xd, fs1 description: | Moves the half-precision value in floating-point register fs1 represented in IEEE 754-2008 diff --git a/spec/std/isa/inst/Zfh/fnmadd.h.yaml b/spec/std/isa/inst/Zfh/fnmadd.h.yaml index fb3f22a3fc..8d0e56a2a0 100644 --- a/spec/std/isa/inst/Zfh/fnmadd.h.yaml +++ b/spec/std/isa/inst/Zfh/fnmadd.h.yaml @@ -9,10 +9,12 @@ name: fnmadd.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----10------------------1001111 + match: "-----10------------------1001111" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/Zfh/fnmsub.h.yaml b/spec/std/isa/inst/Zfh/fnmsub.h.yaml index 0cd6f2b17e..1c6aa0dc6a 100644 --- a/spec/std/isa/inst/Zfh/fnmsub.h.yaml +++ b/spec/std/isa/inst/Zfh/fnmsub.h.yaml @@ -9,10 +9,12 @@ name: fnmsub.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2, fs3, rm encoding: - match: -----10------------------1001011 + match: "-----10------------------1001011" variables: - name: fs3 location: 31-27 diff --git a/spec/std/isa/inst/Zfh/fround.h.yaml b/spec/std/isa/inst/Zfh/fround.h.yaml index cecadf53c2..17e21c2aa0 100644 --- a/spec/std/isa/inst/Zfh/fround.h.yaml +++ b/spec/std/isa/inst/Zfh/fround.h.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - allOf: [Zfa, Zfh] + extension: + allOf: + - name: Zfa + - name: Zfh assembly: fd, fs1, rm encoding: match: 010001000100-------------1010011 diff --git a/spec/std/isa/inst/Zfh/froundnx.h.yaml b/spec/std/isa/inst/Zfh/froundnx.h.yaml index cdda528397..7d50866468 100644 --- a/spec/std/isa/inst/Zfh/froundnx.h.yaml +++ b/spec/std/isa/inst/Zfh/froundnx.h.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - allOf: [Zfa, Zfh] + extension: + allOf: + - name: Zfa + - name: Zfh assembly: fd, fs1, rm encoding: match: 010001000101-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fsgnj.h.yaml b/spec/std/isa/inst/Zfh/fsgnj.h.yaml index bae7a5a1fe..11ae907bc8 100644 --- a/spec/std/isa/inst/Zfh/fsgnj.h.yaml +++ b/spec/std/isa/inst/Zfh/fsgnj.h.yaml @@ -9,7 +9,9 @@ name: fsgnj.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2 encoding: match: 0010010----------000-----1010011 diff --git a/spec/std/isa/inst/Zfh/fsgnjn.h.yaml b/spec/std/isa/inst/Zfh/fsgnjn.h.yaml index c71fd9eab8..57b5b1bedb 100644 --- a/spec/std/isa/inst/Zfh/fsgnjn.h.yaml +++ b/spec/std/isa/inst/Zfh/fsgnjn.h.yaml @@ -9,7 +9,9 @@ name: fsgnjn.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2 encoding: match: 0010010----------001-----1010011 diff --git a/spec/std/isa/inst/Zfh/fsgnjx.h.yaml b/spec/std/isa/inst/Zfh/fsgnjx.h.yaml index bb709073d5..ba05c57392 100644 --- a/spec/std/isa/inst/Zfh/fsgnjx.h.yaml +++ b/spec/std/isa/inst/Zfh/fsgnjx.h.yaml @@ -9,7 +9,9 @@ name: fsgnjx.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2 encoding: match: 0010010----------010-----1010011 diff --git a/spec/std/isa/inst/Zfh/fsh.yaml b/spec/std/isa/inst/Zfh/fsh.yaml index ef39d06bf0..5ec18cf54d 100644 --- a/spec/std/isa/inst/Zfh/fsh.yaml +++ b/spec/std/isa/inst/Zfh/fsh.yaml @@ -18,10 +18,14 @@ description: | `fsh` is only guaranteed to execute atomically if the effective address is naturally aligned. definedBy: - anyOf: [Zfh, Zfhmin, Zhinx] + extension: + anyOf: + - name: Zfh + - name: Zfhmin + - name: Zhinx assembly: fs2, imm(xs1) encoding: - match: -----------------001-----0100111 + match: "-----------------001-----0100111" variables: - name: imm location: 31-25|11-7 diff --git a/spec/std/isa/inst/Zfh/fsqrt.h.yaml b/spec/std/isa/inst/Zfh/fsqrt.h.yaml index 4b34cdcfea..fd5eaaf053 100644 --- a/spec/std/isa/inst/Zfh/fsqrt.h.yaml +++ b/spec/std/isa/inst/Zfh/fsqrt.h.yaml @@ -9,7 +9,9 @@ name: fsqrt.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, rm encoding: match: 010111000000-------------1010011 diff --git a/spec/std/isa/inst/Zfh/fsub.h.yaml b/spec/std/isa/inst/Zfh/fsub.h.yaml index 45cb19a32e..cbd0df7b69 100644 --- a/spec/std/isa/inst/Zfh/fsub.h.yaml +++ b/spec/std/isa/inst/Zfh/fsub.h.yaml @@ -9,7 +9,9 @@ name: fsub.h long_name: No synopsis available description: | No description available. -definedBy: Zfh +definedBy: + extension: + name: Zfh assembly: fd, fs1, fs2, rm encoding: match: 0000110------------------1010011 diff --git a/spec/std/isa/inst/Zicbom/cbo.clean.yaml b/spec/std/isa/inst/Zicbom/cbo.clean.yaml index 80f0ac30a3..a7c2c36fc3 100644 --- a/spec/std/isa/inst/Zicbom/cbo.clean.yaml +++ b/spec/std/isa/inst/Zicbom/cbo.clean.yaml @@ -38,7 +38,9 @@ description: | CBO operations never raise a misaligned address fault. -definedBy: Zicbom +definedBy: + extension: + name: Zicbom assembly: (xs1) encoding: match: 000000000001-----010000000001111 diff --git a/spec/std/isa/inst/Zicbom/cbo.flush.yaml b/spec/std/isa/inst/Zicbom/cbo.flush.yaml index 90a0dfd852..7d09f84aef 100644 --- a/spec/std/isa/inst/Zicbom/cbo.flush.yaml +++ b/spec/std/isa/inst/Zicbom/cbo.flush.yaml @@ -31,7 +31,9 @@ description: | <%- end -%> CBO operations never raise a misaligned address fault. -definedBy: Zicbom +definedBy: + extension: + name: Zicbom assembly: (xs1) encoding: match: 000000000010-----010000000001111 diff --git a/spec/std/isa/inst/Zicbom/cbo.inval.yaml b/spec/std/isa/inst/Zicbom/cbo.inval.yaml index 59437d3127..62ba383a7e 100644 --- a/spec/std/isa/inst/Zicbom/cbo.inval.yaml +++ b/spec/std/isa/inst/Zicbom/cbo.inval.yaml @@ -70,7 +70,9 @@ description: | <%- end -%> CBO operations never raise a misaligned address fault. -definedBy: Zicbom +definedBy: + extension: + name: Zicbom assembly: (xs1) encoding: match: 000000000000-----010000000001111 diff --git a/spec/std/isa/inst/Zicbop/prefetch.i.yaml b/spec/std/isa/inst/Zicbop/prefetch.i.yaml index 9bdec44468..52d798a32c 100644 --- a/spec/std/isa/inst/Zicbop/prefetch.i.yaml +++ b/spec/std/isa/inst/Zicbop/prefetch.i.yaml @@ -12,7 +12,9 @@ description: | effective address is the sum of the base address specified in xs1 and the sign-extended offset encoded in imm[11:0], where imm[4:0] equals 0b00000, is likely to be accessed by an instruction fetch in the near future. -definedBy: Zicbop +definedBy: + extension: + name: Zicbop assembly: imm(xs1) encoding: match: -------00000-----110000000010011 diff --git a/spec/std/isa/inst/Zicbop/prefetch.r.yaml b/spec/std/isa/inst/Zicbop/prefetch.r.yaml index 450f69885e..4f8a46bb17 100644 --- a/spec/std/isa/inst/Zicbop/prefetch.r.yaml +++ b/spec/std/isa/inst/Zicbop/prefetch.r.yaml @@ -12,7 +12,9 @@ description: | effective address is the sum of the base address specified in xs1 and the sign-extended offset encoded in imm[11:0], where imm[4:0] equals 0b00000, is likely to be accessed by a data read (i.e. load) in the near future. -definedBy: Zicbop +definedBy: + extension: + name: Zicbop assembly: imm(xs1) encoding: match: -------00001-----110000000010011 diff --git a/spec/std/isa/inst/Zicbop/prefetch.w.yaml b/spec/std/isa/inst/Zicbop/prefetch.w.yaml index 7205ef0a63..b30d4be897 100644 --- a/spec/std/isa/inst/Zicbop/prefetch.w.yaml +++ b/spec/std/isa/inst/Zicbop/prefetch.w.yaml @@ -12,7 +12,9 @@ description: | effective address is the sum of the base address specified in xs1 and the sign-extended offset encoded in imm[11:0], where imm[4:0] equals 0b00000, is likely to be accessed by a data write (i.e. store) in the near future. -definedBy: Zicbop +definedBy: + extension: + name: Zicbop assembly: imm(xs1) encoding: match: -------00011-----110000000010011 diff --git a/spec/std/isa/inst/Zicboz/cbo.zero.yaml b/spec/std/isa/inst/Zicboz/cbo.zero.yaml index 05d0456838..f0cf130ca9 100644 --- a/spec/std/isa/inst/Zicboz/cbo.zero.yaml +++ b/spec/std/isa/inst/Zicboz/cbo.zero.yaml @@ -33,7 +33,9 @@ description: | <%- end -%> CBO operations never raise a misaligned address fault. -definedBy: Zicboz +definedBy: + extension: + name: Zicboz assembly: (xs1) encoding: match: 000000000100-----010000000001111 diff --git a/spec/std/isa/inst/Zicfilp/lpad.yaml b/spec/std/isa/inst/Zicfilp/lpad.yaml index a02c76f8a4..acf5d762f7 100644 --- a/spec/std/isa/inst/Zicfilp/lpad.yaml +++ b/spec/std/isa/inst/Zicfilp/lpad.yaml @@ -9,10 +9,12 @@ name: lpad long_name: No synopsis available description: | No description available. -definedBy: Zicfilp +definedBy: + extension: + name: Zicfilp assembly: imm encoding: - match: --------------------000000010111 + match: "--------------------000000010111" variables: - name: imm location: 31-12 diff --git a/spec/std/isa/inst/Zicfiss/ssamoswap.d.yaml b/spec/std/isa/inst/Zicfiss/ssamoswap.d.yaml index 99b3ab3c94..57e3c3aac6 100644 --- a/spec/std/isa/inst/Zicfiss/ssamoswap.d.yaml +++ b/spec/std/isa/inst/Zicfiss/ssamoswap.d.yaml @@ -9,7 +9,9 @@ name: ssamoswap.d long_name: No synopsis available description: | No description available. -definedBy: Zicfiss +definedBy: + extension: + name: Zicfiss assembly: xd, xs2, xs1 encoding: match: 01001------------011-----0101111 diff --git a/spec/std/isa/inst/Zicfiss/ssamoswap.w.yaml b/spec/std/isa/inst/Zicfiss/ssamoswap.w.yaml index 0c21c13d09..2fe8992d16 100644 --- a/spec/std/isa/inst/Zicfiss/ssamoswap.w.yaml +++ b/spec/std/isa/inst/Zicfiss/ssamoswap.w.yaml @@ -9,7 +9,9 @@ name: ssamoswap.w long_name: No synopsis available description: | No description available. -definedBy: Zicfiss +definedBy: + extension: + name: Zicfiss assembly: xd, xs2, xs1 encoding: match: 01001------------010-----0101111 diff --git a/spec/std/isa/inst/Zicfiss/sspopchk.x1.yaml b/spec/std/isa/inst/Zicfiss/sspopchk.x1.yaml index 685ca04ad1..6908993daf 100644 --- a/spec/std/isa/inst/Zicfiss/sspopchk.x1.yaml +++ b/spec/std/isa/inst/Zicfiss/sspopchk.x1.yaml @@ -9,7 +9,9 @@ name: sspopchk.x1 long_name: No synopsis available description: | No description available. -definedBy: Zicfiss +definedBy: + extension: + name: Zicfiss assembly: sspopchk_x1 encoding: match: "11001101110000001100000001110011" diff --git a/spec/std/isa/inst/Zicfiss/sspopchk.x5.yaml b/spec/std/isa/inst/Zicfiss/sspopchk.x5.yaml index c660552ba4..c9522174a9 100644 --- a/spec/std/isa/inst/Zicfiss/sspopchk.x5.yaml +++ b/spec/std/isa/inst/Zicfiss/sspopchk.x5.yaml @@ -9,7 +9,9 @@ name: sspopchk.x5 long_name: No synopsis available description: | No description available. -definedBy: Zicfiss +definedBy: + extension: + name: Zicfiss assembly: sspopchk_x5 encoding: match: "11001101110000101100000001110011" diff --git a/spec/std/isa/inst/Zicfiss/sspush.x1.yaml b/spec/std/isa/inst/Zicfiss/sspush.x1.yaml index aa94160293..8dde7b7d8d 100644 --- a/spec/std/isa/inst/Zicfiss/sspush.x1.yaml +++ b/spec/std/isa/inst/Zicfiss/sspush.x1.yaml @@ -9,7 +9,9 @@ name: sspush.x1 long_name: No synopsis available description: | No description available. -definedBy: Zicfiss +definedBy: + extension: + name: Zicfiss assembly: sspush_x1 encoding: match: "11001110000100000100000001110011" diff --git a/spec/std/isa/inst/Zicfiss/sspush.x5.yaml b/spec/std/isa/inst/Zicfiss/sspush.x5.yaml index 95300ec8fe..586fbf6642 100644 --- a/spec/std/isa/inst/Zicfiss/sspush.x5.yaml +++ b/spec/std/isa/inst/Zicfiss/sspush.x5.yaml @@ -9,7 +9,9 @@ name: sspush.x5 long_name: No synopsis available description: | No description available. -definedBy: Zicfiss +definedBy: + extension: + name: Zicfiss assembly: sspush_x5 encoding: match: "11001110010100000100000001110011" diff --git a/spec/std/isa/inst/Zicfiss/ssrdp.yaml b/spec/std/isa/inst/Zicfiss/ssrdp.yaml index 3d5a019def..ae000b3b35 100644 --- a/spec/std/isa/inst/Zicfiss/ssrdp.yaml +++ b/spec/std/isa/inst/Zicfiss/ssrdp.yaml @@ -9,7 +9,9 @@ name: ssrdp long_name: Read ssp into a Register description: | No description available. -definedBy: Zicfiss +definedBy: + extension: + name: Zicfiss assembly: xd encoding: match: 11001101110000000100-----1110011 diff --git a/spec/std/isa/inst/Zicond/czero.eqz.yaml b/spec/std/isa/inst/Zicond/czero.eqz.yaml index 53c413af2c..b6bdf042fc 100644 --- a/spec/std/isa/inst/Zicond/czero.eqz.yaml +++ b/spec/std/isa/inst/Zicond/czero.eqz.yaml @@ -12,7 +12,9 @@ description: | copies the contents of xs1 to xd. This instruction carries a syntactic dependency from both xs1 and xs2 to xd. Furthermore, if the Zkt extension is implemented, this instruction's timing is independent of the data values in xs1 and xs2. -definedBy: Zicond +definedBy: + extension: + name: Zicond assembly: xd, xs1, xs2 encoding: match: 0000111----------101-----0110011 diff --git a/spec/std/isa/inst/Zicond/czero.nez.yaml b/spec/std/isa/inst/Zicond/czero.nez.yaml index 58a3657b28..995f57eed6 100644 --- a/spec/std/isa/inst/Zicond/czero.nez.yaml +++ b/spec/std/isa/inst/Zicond/czero.nez.yaml @@ -12,7 +12,9 @@ description: | instruction copies the contents of xs1 to xd. This instruction carries a syntactic dependency from both xs1 and xs2 to xd. Furthermore, if the Zkt extension is implemented, this instruction's timing is independent of the data values in xs1 and xs2. -definedBy: Zicond +definedBy: + extension: + name: Zicond assembly: xd, xs1, xs2 encoding: match: 0000111----------111-----0110011 diff --git a/spec/std/isa/inst/Zicsr/csrrc.yaml b/spec/std/isa/inst/Zicsr/csrrc.yaml index 60af00b692..7ae6ad32f1 100644 --- a/spec/std/isa/inst/Zicsr/csrrc.yaml +++ b/spec/std/isa/inst/Zicsr/csrrc.yaml @@ -20,10 +20,12 @@ description: | Note that if `xs1` specifies a register other than `x0`, and that register holds a zero value, the instruction will not action any attendant per-field side effects, but will action any side effects caused by writing to the entire CSR. -definedBy: Zicsr +definedBy: + extension: + name: Zicsr assembly: xd, csr, xs1 encoding: - match: -----------------011-----1110011 + match: "-----------------011-----1110011" variables: - name: csr location: 31-20 diff --git a/spec/std/isa/inst/Zicsr/csrrci.yaml b/spec/std/isa/inst/Zicsr/csrrci.yaml index 3b5490e239..6a6d00ecd3 100644 --- a/spec/std/isa/inst/Zicsr/csrrci.yaml +++ b/spec/std/isa/inst/Zicsr/csrrci.yaml @@ -14,10 +14,12 @@ description: | will not write to the CSR, and shall not cause any of the side effects that might otherwise occur on a CSR write, nor raise illegal-instruction exceptions on accesses to read-only CSRs. The CSRRCI will always read the CSR and cause any read side effects regardless of `xd` and `xs1` fields. -definedBy: Zicsr +definedBy: + extension: + name: Zicsr assembly: xd, csr, imm encoding: - match: -----------------111-----1110011 + match: "-----------------111-----1110011" variables: - name: csr location: 31-20 diff --git a/spec/std/isa/inst/Zicsr/csrrs.yaml b/spec/std/isa/inst/Zicsr/csrrs.yaml index bf2652fe99..bd036f81c3 100644 --- a/spec/std/isa/inst/Zicsr/csrrs.yaml +++ b/spec/std/isa/inst/Zicsr/csrrs.yaml @@ -16,10 +16,12 @@ description: | to be set in the CSR. Any bit that is high in `xs1` will cause the corresponding bit to be set in the CSR, if that CSR bit is writable. Other bits in the CSR are not explicitly written. -definedBy: Zicsr +definedBy: + extension: + name: Zicsr assembly: xd, csr, xs1 encoding: - match: -----------------010-----1110011 + match: "-----------------010-----1110011" variables: - name: csr location: 31-20 diff --git a/spec/std/isa/inst/Zicsr/csrrsi.yaml b/spec/std/isa/inst/Zicsr/csrrsi.yaml index 4c4ca94215..4186d654c5 100644 --- a/spec/std/isa/inst/Zicsr/csrrsi.yaml +++ b/spec/std/isa/inst/Zicsr/csrrsi.yaml @@ -14,10 +14,12 @@ description: | will not write to the CSR, and shall not cause any of the side effects that might otherwise occur on a CSR write, nor raise illegal-instruction exceptions on accesses to read-only CSRs. The CSRRSI will always read the CSR and cause any read side effects regardless of `xd` and `xs1` fields. -definedBy: Zicsr +definedBy: + extension: + name: Zicsr assembly: xd, csr, imm encoding: - match: -----------------110-----1110011 + match: "-----------------110-----1110011" variables: - name: csr location: 31-20 diff --git a/spec/std/isa/inst/Zicsr/csrrw.yaml b/spec/std/isa/inst/Zicsr/csrrw.yaml index 00d3c19d33..1716265853 100644 --- a/spec/std/isa/inst/Zicsr/csrrw.yaml +++ b/spec/std/isa/inst/Zicsr/csrrw.yaml @@ -15,10 +15,12 @@ description: | The initial value in xs1 is written to the CSR. If `xd=x0`, then the instruction shall not read the CSR and shall not cause any of the side effects that might occur on a CSR read. -definedBy: Zicsr +definedBy: + extension: + name: Zicsr assembly: xd, csr, xs1 encoding: - match: -----------------001-----1110011 + match: "-----------------001-----1110011" variables: - name: csr location: 31-20 diff --git a/spec/std/isa/inst/Zicsr/csrrwi.yaml b/spec/std/isa/inst/Zicsr/csrrwi.yaml index de89506e02..1e1ff5d10d 100644 --- a/spec/std/isa/inst/Zicsr/csrrwi.yaml +++ b/spec/std/isa/inst/Zicsr/csrrwi.yaml @@ -15,10 +15,12 @@ description: | The 5-bit uimm field is zero-extended and written to the CSR. If `xd=x0`, then the instruction shall not read the CSR and shall not cause any of the side effects that might occur on a CSR read. -definedBy: Zicsr +definedBy: + extension: + name: Zicsr assembly: xd, csr, imm encoding: - match: -----------------101-----1110011 + match: "-----------------101-----1110011" variables: - name: csr location: 31-20 diff --git a/spec/std/isa/inst/Zifencei/fence.i.yaml b/spec/std/isa/inst/Zifencei/fence.i.yaml index 273c0a0e03..70c4ec4798 100644 --- a/spec/std/isa/inst/Zifencei/fence.i.yaml +++ b/spec/std/isa/inst/Zifencei/fence.i.yaml @@ -35,10 +35,12 @@ description: | provide mechanisms for efficient multiprocessor instruction-stream synchronization. ==== -definedBy: Zifencei +definedBy: + extension: + name: Zifencei assembly: "" encoding: - match: -----------------001-----0001111 + match: "-----------------001-----0001111" variables: - name: imm location: 31-20 diff --git a/spec/std/isa/inst/Zihintntl/c.ntl.all.yaml b/spec/std/isa/inst/Zihintntl/c.ntl.all.yaml index 521c394078..fbb2aa5707 100644 --- a/spec/std/isa/inst/Zihintntl/c.ntl.all.yaml +++ b/spec/std/isa/inst/Zihintntl/c.ntl.all.yaml @@ -12,9 +12,10 @@ description: | does not exhibit temporal locality within the capacity of any level of cache in the memory hierarchy. C.NTL.ALL is encoded as C.ADD x0, x5. definedBy: - allOf: - - Zca - - Zihintntl + extension: + allOf: + - name: Zca + - name: Zihintntl assembly: "" encoding: match: "1001000000010110" diff --git a/spec/std/isa/inst/Zihintntl/c.ntl.p1.yaml b/spec/std/isa/inst/Zihintntl/c.ntl.p1.yaml index 163c679313..82862bfdf6 100644 --- a/spec/std/isa/inst/Zihintntl/c.ntl.p1.yaml +++ b/spec/std/isa/inst/Zihintntl/c.ntl.p1.yaml @@ -12,9 +12,10 @@ description: | does not exhibit temporal locality within the capacity of the innermost level of private cache in the memory hierarchy. C.NTL.P1 is encoded as C.ADD x0, x2. definedBy: - allOf: - - Zca - - Zihintntl + extension: + allOf: + - name: Zca + - name: Zihintntl assembly: "" encoding: match: "1001000000001010" diff --git a/spec/std/isa/inst/Zihintntl/c.ntl.pall.yaml b/spec/std/isa/inst/Zihintntl/c.ntl.pall.yaml index 459daa4148..15b9d613d4 100644 --- a/spec/std/isa/inst/Zihintntl/c.ntl.pall.yaml +++ b/spec/std/isa/inst/Zihintntl/c.ntl.pall.yaml @@ -12,9 +12,10 @@ description: | does not exhibit temporal locality within the capacity of any level of private cache in the memory hierarchy. C.NTL.PALL is encoded as C.ADD x0, x3. definedBy: - allOf: - - Zca - - Zihintntl + extension: + allOf: + - name: Zca + - name: Zihintntl assembly: "" encoding: match: "1001000000001110" diff --git a/spec/std/isa/inst/Zihintntl/c.ntl.s1.yaml b/spec/std/isa/inst/Zihintntl/c.ntl.s1.yaml index ecff447acd..ff767a6165 100644 --- a/spec/std/isa/inst/Zihintntl/c.ntl.s1.yaml +++ b/spec/std/isa/inst/Zihintntl/c.ntl.s1.yaml @@ -12,9 +12,10 @@ description: | does not exhibit temporal locality within the capacity of the innermost level of shared cache in the memory hierarchy. C.NTL.S1 is encoded as C.ADD x0, x4. definedBy: - allOf: - - Zca - - Zihintntl + extension: + allOf: + - name: Zca + - name: Zihintntl assembly: "" encoding: match: "1001000000010010" diff --git a/spec/std/isa/inst/Zihintntl/ntl.all.yaml b/spec/std/isa/inst/Zihintntl/ntl.all.yaml index 56dc9ecb00..0396312256 100644 --- a/spec/std/isa/inst/Zihintntl/ntl.all.yaml +++ b/spec/std/isa/inst/Zihintntl/ntl.all.yaml @@ -11,7 +11,9 @@ description: | The NTL.ALL instruction indicates that the immediately subsequent instruction does not exhibit temporal locality within the capacity of any level of cache in the memory hierarchy. NTL.ALL is encoded as ADD x0, x0, x5. -definedBy: Zihintntl +definedBy: + extension: + name: Zihintntl assembly: "" encoding: match: "00000000010100000000000000110011" diff --git a/spec/std/isa/inst/Zihintntl/ntl.p1.yaml b/spec/std/isa/inst/Zihintntl/ntl.p1.yaml index d53b28fcc6..8fd695accf 100644 --- a/spec/std/isa/inst/Zihintntl/ntl.p1.yaml +++ b/spec/std/isa/inst/Zihintntl/ntl.p1.yaml @@ -11,7 +11,9 @@ description: | The NTL.P1 instruction indicates that the immediately subsequent instruction does not exhibit temporal locality within the capacity of the innermost level of private cache in the memory hierarchy. NTL.P1 is encoded as ADD x0, x0, x2. -definedBy: Zihintntl +definedBy: + extension: + name: Zihintntl assembly: "" encoding: match: "00000000001000000000000000110011" diff --git a/spec/std/isa/inst/Zihintntl/ntl.pall.yaml b/spec/std/isa/inst/Zihintntl/ntl.pall.yaml index d3c26c640d..7aa5bfb31e 100644 --- a/spec/std/isa/inst/Zihintntl/ntl.pall.yaml +++ b/spec/std/isa/inst/Zihintntl/ntl.pall.yaml @@ -11,7 +11,9 @@ description: | The NTL.PALL instruction indicates that the immediately subsequent instruction does not exhibit temporal locality within the capacity of any level of private cache in the memory hierarchy. NTL.PALL is encoded as ADD x0, x0, x3. -definedBy: Zihintntl +definedBy: + extension: + name: Zihintntl assembly: "" encoding: match: "00000000001100000000000000110011" diff --git a/spec/std/isa/inst/Zihintntl/ntl.s1.yaml b/spec/std/isa/inst/Zihintntl/ntl.s1.yaml index 9eaca11104..f53310ade7 100644 --- a/spec/std/isa/inst/Zihintntl/ntl.s1.yaml +++ b/spec/std/isa/inst/Zihintntl/ntl.s1.yaml @@ -11,7 +11,9 @@ description: | The NTL.S1 instruction indicates that the immediately subsequent instruction does not exhibit temporal locality within the capacity of the innermost level of shared cache in the memory hierarchy. NTL.S1 is encoded as ADD x0, x0, x4. -definedBy: Zihintntl +definedBy: + extension: + name: Zihintntl assembly: "" encoding: match: "00000000010000000000000000110011" diff --git a/spec/std/isa/inst/Zimop/mop.r.n.yaml b/spec/std/isa/inst/Zimop/mop.r.n.yaml index f1829d2a4f..fd8789978a 100644 --- a/spec/std/isa/inst/Zimop/mop.r.n.yaml +++ b/spec/std/isa/inst/Zimop/mop.r.n.yaml @@ -10,7 +10,9 @@ long_name: May-be-operation (1 source register) description: | Unless redefined by another extension, this instructions simply writes 0 to X[xd]. The encoding allows future extensions to define them to read X[xs1], as well as write X[xd]. -definedBy: Zimop +definedBy: + extension: + name: Zimop assembly: xd, xs1 encoding: match: 1-00--0111-------100-----1110011 diff --git a/spec/std/isa/inst/Zimop/mop.rr.n.yaml b/spec/std/isa/inst/Zimop/mop.rr.n.yaml index 60ba685a09..d9b5e7ad08 100644 --- a/spec/std/isa/inst/Zimop/mop.rr.n.yaml +++ b/spec/std/isa/inst/Zimop/mop.rr.n.yaml @@ -11,7 +11,9 @@ description: | The Zimop extension defines 8 MOP instructions named MOP.RR.n, where n is an integer between 0 and 7, inclusive. Unless redefined by another extension, these instructions simply write 0 to X[xd]. Their encoding allows future extensions to define them to read X[xs1] and X[xs2], as well as write X[xd]. -definedBy: Zimop +definedBy: + extension: + name: Zimop assembly: xd, xs1, xs2 encoding: match: 1-00--1----------100-----1110011 diff --git a/spec/std/isa/inst/Zkn/aes64ks1i.yaml b/spec/std/isa/inst/Zkn/aes64ks1i.yaml index 11459a458d..0c89edd7ae 100644 --- a/spec/std/isa/inst/Zkn/aes64ks1i.yaml +++ b/spec/std/isa/inst/Zkn/aes64ks1i.yaml @@ -18,7 +18,12 @@ description: text: | `rnum` must be in the range `0x0..0xA`. The values `0xB..0xF` are reserved. definedBy: - anyOf: [Zknd, Zkne] + allOf: + - xlen: 64 + - extension: + anyOf: + - name: Zknd + - name: Zkne base: 64 assembly: xd, xs1, rnum encoding: diff --git a/spec/std/isa/inst/Zkn/aes64ks2.yaml b/spec/std/isa/inst/Zkn/aes64ks2.yaml index 6434ab2306..cef3af01cb 100644 --- a/spec/std/isa/inst/Zkn/aes64ks2.yaml +++ b/spec/std/isa/inst/Zkn/aes64ks2.yaml @@ -14,7 +14,12 @@ description: This instruction implements the additional XOR'ing of key words as part of the AES block cipher Key Schedule. definedBy: - anyOf: [Zknd, Zkne] + allOf: + - xlen: 64 + - extension: + anyOf: + - name: Zknd + - name: Zkne base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zknd/aes32dsi.yaml b/spec/std/isa/inst/Zknd/aes32dsi.yaml index 7037f8a850..190f3e9434 100644 --- a/spec/std/isa/inst/Zknd/aes32dsi.yaml +++ b/spec/std/isa/inst/Zknd/aes32dsi.yaml @@ -11,7 +11,11 @@ description: | Sources a single byte from `xs2` according to `bs`. To this it applies the inverse AES SBox operation, and XOR's the result with `xs1`. This instruction must always be implemented such that its execution latency does not depend on the data being operated on. -definedBy: Zknd +definedBy: + allOf: + - xlen: 32 + - extension: + name: Zknd base: 32 assembly: xd, xs1, xs2, bs encoding: diff --git a/spec/std/isa/inst/Zknd/aes32dsmi.yaml b/spec/std/isa/inst/Zknd/aes32dsmi.yaml index 62cec71e6b..d44f821058 100644 --- a/spec/std/isa/inst/Zknd/aes32dsmi.yaml +++ b/spec/std/isa/inst/Zknd/aes32dsmi.yaml @@ -12,7 +12,11 @@ description: | SBox operation, and a partial inverse MixColumn, before XOR'ing the result with `xs1`. This instruction must always be implemented such that its execution latency does not depend on the data being operated on. -definedBy: Zknd +definedBy: + allOf: + - xlen: 32 + - extension: + name: Zknd base: 32 assembly: xd, xs1, xs2, bs encoding: diff --git a/spec/std/isa/inst/Zknd/aes64ds.yaml b/spec/std/isa/inst/Zknd/aes64ds.yaml index c785ba4059..e4e70da4e0 100644 --- a/spec/std/isa/inst/Zknd/aes64ds.yaml +++ b/spec/std/isa/inst/Zknd/aes64ds.yaml @@ -13,7 +13,11 @@ description: text: | Uses the two 64-bit source registers to represent the entire AES state, and produces _half_ of the next round output, applying the Inverse ShiftRows and SubBytes steps. -definedBy: Zknd +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zknd base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zknd/aes64dsm.yaml b/spec/std/isa/inst/Zknd/aes64dsm.yaml index f7cf769937..9b3c177f19 100644 --- a/spec/std/isa/inst/Zknd/aes64dsm.yaml +++ b/spec/std/isa/inst/Zknd/aes64dsm.yaml @@ -13,7 +13,11 @@ description: text: | Uses the two 64-bit source registers to represent the entire AES state, and produces _half_ of the next round output, applying the Inverse ShiftRows, SubBytes and MixColumns steps. -definedBy: Zknd +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zknd base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zknd/aes64im.yaml b/spec/std/isa/inst/Zknd/aes64im.yaml index 58f4b3b61d..34fb1e40ac 100644 --- a/spec/std/isa/inst/Zknd/aes64im.yaml +++ b/spec/std/isa/inst/Zknd/aes64im.yaml @@ -14,7 +14,11 @@ description: The instruction applies the inverse MixColumns transformation to two columns of the state array, packed into a single 64-bit register. It is used to create the inverse cipher KeySchedule, according to the equivalent inverse cipher construction in (NIST, 2001) (Page 23, Section 5.3.5). -definedBy: Zknd +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zknd base: 64 assembly: xd, xs1 encoding: diff --git a/spec/std/isa/inst/Zkne/aes32esi.yaml b/spec/std/isa/inst/Zkne/aes32esi.yaml index 36c96d7487..73fee2ddf7 100644 --- a/spec/std/isa/inst/Zkne/aes32esi.yaml +++ b/spec/std/isa/inst/Zkne/aes32esi.yaml @@ -9,7 +9,11 @@ name: aes32esi long_name: No synopsis available description: | No description available. -definedBy: Zkne +definedBy: + allOf: + - xlen: 32 + - extension: + name: Zkne base: 32 assembly: xd, xs1, xs2, bs encoding: diff --git a/spec/std/isa/inst/Zkne/aes32esmi.yaml b/spec/std/isa/inst/Zkne/aes32esmi.yaml index d3c5fd4bc6..2d7156ae85 100644 --- a/spec/std/isa/inst/Zkne/aes32esmi.yaml +++ b/spec/std/isa/inst/Zkne/aes32esmi.yaml @@ -9,7 +9,11 @@ name: aes32esmi long_name: No synopsis available description: | No description available. -definedBy: Zkne +definedBy: + allOf: + - xlen: 32 + - extension: + name: Zkne base: 32 assembly: xd, xs1, xs2, bs encoding: diff --git a/spec/std/isa/inst/Zkne/aes64es.yaml b/spec/std/isa/inst/Zkne/aes64es.yaml index 63802b0e6a..391a484f19 100644 --- a/spec/std/isa/inst/Zkne/aes64es.yaml +++ b/spec/std/isa/inst/Zkne/aes64es.yaml @@ -13,7 +13,11 @@ description: text: | Uses the two 64-bit source registers to represent the entire AES state, and produces _half_ of the next round output, applying the ShiftRows and SubBytes steps. -definedBy: Zkne +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zkne base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zkne/aes64esm.yaml b/spec/std/isa/inst/Zkne/aes64esm.yaml index c6d74f838c..3ead82d0fa 100644 --- a/spec/std/isa/inst/Zkne/aes64esm.yaml +++ b/spec/std/isa/inst/Zkne/aes64esm.yaml @@ -13,7 +13,11 @@ description: text: | Uses the two 64-bit source registers to represent the entire AES state, and produces _half_ of the next round output, applying the Inverse ShiftRows, SubBytes and MixColumns steps. -definedBy: Zkne +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zkne base: 64 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zknh/sha256sig0.yaml b/spec/std/isa/inst/Zknh/sha256sig0.yaml index 16e47c28c5..054b4d834e 100644 --- a/spec/std/isa/inst/Zknh/sha256sig0.yaml +++ b/spec/std/isa/inst/Zknh/sha256sig0.yaml @@ -9,7 +9,9 @@ name: sha256sig0 long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + extension: + name: Zknh assembly: xd, xs1 encoding: match: 000100000010-----001-----0010011 diff --git a/spec/std/isa/inst/Zknh/sha256sig1.yaml b/spec/std/isa/inst/Zknh/sha256sig1.yaml index 7853b46975..84a076c491 100644 --- a/spec/std/isa/inst/Zknh/sha256sig1.yaml +++ b/spec/std/isa/inst/Zknh/sha256sig1.yaml @@ -9,7 +9,9 @@ name: sha256sig1 long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + extension: + name: Zknh assembly: xd, xs1 encoding: match: 000100000011-----001-----0010011 diff --git a/spec/std/isa/inst/Zknh/sha256sum0.yaml b/spec/std/isa/inst/Zknh/sha256sum0.yaml index 96ec699d08..8a37637256 100644 --- a/spec/std/isa/inst/Zknh/sha256sum0.yaml +++ b/spec/std/isa/inst/Zknh/sha256sum0.yaml @@ -9,7 +9,9 @@ name: sha256sum0 long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + extension: + name: Zknh assembly: xd, xs1 encoding: match: 000100000000-----001-----0010011 diff --git a/spec/std/isa/inst/Zknh/sha256sum1.yaml b/spec/std/isa/inst/Zknh/sha256sum1.yaml index 37c7a84259..c3e519d899 100644 --- a/spec/std/isa/inst/Zknh/sha256sum1.yaml +++ b/spec/std/isa/inst/Zknh/sha256sum1.yaml @@ -9,7 +9,9 @@ name: sha256sum1 long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + extension: + name: Zknh assembly: xd, xs1 encoding: match: 000100000001-----001-----0010011 diff --git a/spec/std/isa/inst/Zknh/sha512sig0.yaml b/spec/std/isa/inst/Zknh/sha512sig0.yaml index 4914ade574..c6992ed1ab 100644 --- a/spec/std/isa/inst/Zknh/sha512sig0.yaml +++ b/spec/std/isa/inst/Zknh/sha512sig0.yaml @@ -9,7 +9,11 @@ name: sha512sig0 long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zknh base: 64 assembly: xd, xs1 encoding: diff --git a/spec/std/isa/inst/Zknh/sha512sig0h.yaml b/spec/std/isa/inst/Zknh/sha512sig0h.yaml index a5b00cdd93..6287a0ae73 100644 --- a/spec/std/isa/inst/Zknh/sha512sig0h.yaml +++ b/spec/std/isa/inst/Zknh/sha512sig0h.yaml @@ -9,7 +9,11 @@ name: sha512sig0h long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + allOf: + - xlen: 32 + - extension: + name: Zknh base: 32 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zknh/sha512sig0l.yaml b/spec/std/isa/inst/Zknh/sha512sig0l.yaml index 58a13c9f07..3ad8b6cc90 100644 --- a/spec/std/isa/inst/Zknh/sha512sig0l.yaml +++ b/spec/std/isa/inst/Zknh/sha512sig0l.yaml @@ -9,7 +9,11 @@ name: sha512sig0l long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + allOf: + - xlen: 32 + - extension: + name: Zknh base: 32 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zknh/sha512sig1.yaml b/spec/std/isa/inst/Zknh/sha512sig1.yaml index 3d5186596c..12097b3b28 100644 --- a/spec/std/isa/inst/Zknh/sha512sig1.yaml +++ b/spec/std/isa/inst/Zknh/sha512sig1.yaml @@ -9,7 +9,11 @@ name: sha512sig1 long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zknh base: 64 assembly: xd, xs1 encoding: diff --git a/spec/std/isa/inst/Zknh/sha512sig1h.yaml b/spec/std/isa/inst/Zknh/sha512sig1h.yaml index 526ff4e274..76d5024774 100644 --- a/spec/std/isa/inst/Zknh/sha512sig1h.yaml +++ b/spec/std/isa/inst/Zknh/sha512sig1h.yaml @@ -9,7 +9,11 @@ name: sha512sig1h long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + allOf: + - xlen: 32 + - extension: + name: Zknh base: 32 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zknh/sha512sig1l.yaml b/spec/std/isa/inst/Zknh/sha512sig1l.yaml index 47177b4059..0557ef691a 100644 --- a/spec/std/isa/inst/Zknh/sha512sig1l.yaml +++ b/spec/std/isa/inst/Zknh/sha512sig1l.yaml @@ -9,7 +9,11 @@ name: sha512sig1l long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + allOf: + - xlen: 32 + - extension: + name: Zknh base: 32 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zknh/sha512sum0.yaml b/spec/std/isa/inst/Zknh/sha512sum0.yaml index 62e1f11be9..79e3b4f540 100644 --- a/spec/std/isa/inst/Zknh/sha512sum0.yaml +++ b/spec/std/isa/inst/Zknh/sha512sum0.yaml @@ -9,7 +9,11 @@ name: sha512sum0 long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zknh base: 64 assembly: xd, xs1 encoding: diff --git a/spec/std/isa/inst/Zknh/sha512sum0r.yaml b/spec/std/isa/inst/Zknh/sha512sum0r.yaml index 6f7f027806..de4a4b3646 100644 --- a/spec/std/isa/inst/Zknh/sha512sum0r.yaml +++ b/spec/std/isa/inst/Zknh/sha512sum0r.yaml @@ -9,7 +9,11 @@ name: sha512sum0r long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + allOf: + - xlen: 32 + - extension: + name: Zknh base: 32 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zknh/sha512sum1.yaml b/spec/std/isa/inst/Zknh/sha512sum1.yaml index 494e55312c..61ad88251c 100644 --- a/spec/std/isa/inst/Zknh/sha512sum1.yaml +++ b/spec/std/isa/inst/Zknh/sha512sum1.yaml @@ -9,7 +9,11 @@ name: sha512sum1 long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + allOf: + - xlen: 64 + - extension: + name: Zknh base: 64 assembly: xd, xs1 encoding: diff --git a/spec/std/isa/inst/Zknh/sha512sum1r.yaml b/spec/std/isa/inst/Zknh/sha512sum1r.yaml index 8cd5009284..22c6b555dd 100644 --- a/spec/std/isa/inst/Zknh/sha512sum1r.yaml +++ b/spec/std/isa/inst/Zknh/sha512sum1r.yaml @@ -9,7 +9,11 @@ name: sha512sum1r long_name: No synopsis available description: | No description available. -definedBy: Zknh +definedBy: + allOf: + - xlen: 32 + - extension: + name: Zknh base: 32 assembly: xd, xs1, xs2 encoding: diff --git a/spec/std/isa/inst/Zks/sm3p0.yaml b/spec/std/isa/inst/Zks/sm3p0.yaml index 40a5fb064d..21c2df3a99 100644 --- a/spec/std/isa/inst/Zks/sm3p0.yaml +++ b/spec/std/isa/inst/Zks/sm3p0.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - anyOf: [Zks, Zksh] + extension: + anyOf: + - name: Zks + - name: Zksh assembly: xd, xs1 encoding: match: 000100001000-----001-----0010011 diff --git a/spec/std/isa/inst/Zks/sm3p1.yaml b/spec/std/isa/inst/Zks/sm3p1.yaml index 5c0c4d2173..d360682d9e 100644 --- a/spec/std/isa/inst/Zks/sm3p1.yaml +++ b/spec/std/isa/inst/Zks/sm3p1.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - anyOf: [Zks, Zksh] + extension: + anyOf: + - name: Zks + - name: Zksh assembly: xd, xs1 encoding: match: 000100001001-----001-----0010011 diff --git a/spec/std/isa/inst/Zks/sm4ed.yaml b/spec/std/isa/inst/Zks/sm4ed.yaml index cc255d62d2..7c9a92127c 100644 --- a/spec/std/isa/inst/Zks/sm4ed.yaml +++ b/spec/std/isa/inst/Zks/sm4ed.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - anyOf: [Zks, Zksed] + extension: + anyOf: + - name: Zks + - name: Zksed assembly: xd, xs1, xs2, bs encoding: match: --11000----------000-----0110011 diff --git a/spec/std/isa/inst/Zks/sm4ks.yaml b/spec/std/isa/inst/Zks/sm4ks.yaml index 29a34cf518..2241e2b7c9 100644 --- a/spec/std/isa/inst/Zks/sm4ks.yaml +++ b/spec/std/isa/inst/Zks/sm4ks.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - anyOf: [Zks, Zksed] + extension: + anyOf: + - name: Zks + - name: Zksed assembly: xd, xs1, xs2, bs encoding: match: --11010----------000-----0110011 diff --git a/spec/std/isa/inst/Zvbb/vandn.vv.yaml b/spec/std/isa/inst/Zvbb/vandn.vv.yaml index ebacf17501..16d624c0cb 100644 --- a/spec/std/isa/inst/Zvbb/vandn.vv.yaml +++ b/spec/std/isa/inst/Zvbb/vandn.vv.yaml @@ -9,7 +9,9 @@ name: vandn.vv long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, vs1, vm encoding: match: 000001-----------000-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vandn.vx.yaml b/spec/std/isa/inst/Zvbb/vandn.vx.yaml index 08d38ff066..56e72d367a 100644 --- a/spec/std/isa/inst/Zvbb/vandn.vx.yaml +++ b/spec/std/isa/inst/Zvbb/vandn.vx.yaml @@ -9,7 +9,9 @@ name: vandn.vx long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, xs1, vm encoding: match: 000001-----------100-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vbrev.v.yaml b/spec/std/isa/inst/Zvbb/vbrev.v.yaml index 7daa147e2a..6623036cb1 100644 --- a/spec/std/isa/inst/Zvbb/vbrev.v.yaml +++ b/spec/std/isa/inst/Zvbb/vbrev.v.yaml @@ -9,7 +9,9 @@ name: vbrev.v long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, vm encoding: match: 010010------01010010-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vbrev8.v.yaml b/spec/std/isa/inst/Zvbb/vbrev8.v.yaml index 782fb6aa0c..330bd7a50a 100644 --- a/spec/std/isa/inst/Zvbb/vbrev8.v.yaml +++ b/spec/std/isa/inst/Zvbb/vbrev8.v.yaml @@ -9,7 +9,9 @@ name: vbrev8.v long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, vm encoding: match: 010010------01000010-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vclz.v.yaml b/spec/std/isa/inst/Zvbb/vclz.v.yaml index bd73f07103..42b94667a0 100644 --- a/spec/std/isa/inst/Zvbb/vclz.v.yaml +++ b/spec/std/isa/inst/Zvbb/vclz.v.yaml @@ -9,7 +9,9 @@ name: vclz.v long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, vm encoding: match: 010010------01100010-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vcpop.v.yaml b/spec/std/isa/inst/Zvbb/vcpop.v.yaml index 44d02bd45e..61846eda45 100644 --- a/spec/std/isa/inst/Zvbb/vcpop.v.yaml +++ b/spec/std/isa/inst/Zvbb/vcpop.v.yaml @@ -9,7 +9,9 @@ name: vcpop.v long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, vm encoding: match: 010010------01110010-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vctz.v.yaml b/spec/std/isa/inst/Zvbb/vctz.v.yaml index 8ccb949ea3..014724bf8e 100644 --- a/spec/std/isa/inst/Zvbb/vctz.v.yaml +++ b/spec/std/isa/inst/Zvbb/vctz.v.yaml @@ -9,7 +9,9 @@ name: vctz.v long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, vm encoding: match: 010010------01101010-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vrev8.v.yaml b/spec/std/isa/inst/Zvbb/vrev8.v.yaml index cf886856ab..7aa2346ca2 100644 --- a/spec/std/isa/inst/Zvbb/vrev8.v.yaml +++ b/spec/std/isa/inst/Zvbb/vrev8.v.yaml @@ -9,7 +9,9 @@ name: vrev8.v long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, vm encoding: match: 010010------01001010-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vrol.vv.yaml b/spec/std/isa/inst/Zvbb/vrol.vv.yaml index fb60e7bc9a..05c49b284b 100644 --- a/spec/std/isa/inst/Zvbb/vrol.vv.yaml +++ b/spec/std/isa/inst/Zvbb/vrol.vv.yaml @@ -9,7 +9,9 @@ name: vrol.vv long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, vs1, vm encoding: match: 010101-----------000-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vrol.vx.yaml b/spec/std/isa/inst/Zvbb/vrol.vx.yaml index 7c1ada7de3..4a0c77880a 100644 --- a/spec/std/isa/inst/Zvbb/vrol.vx.yaml +++ b/spec/std/isa/inst/Zvbb/vrol.vx.yaml @@ -9,7 +9,9 @@ name: vrol.vx long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, xs1, vm encoding: match: 010101-----------100-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vror.vi.yaml b/spec/std/isa/inst/Zvbb/vror.vi.yaml index de395d193f..53e8a40517 100644 --- a/spec/std/isa/inst/Zvbb/vror.vi.yaml +++ b/spec/std/isa/inst/Zvbb/vror.vi.yaml @@ -9,7 +9,9 @@ name: vror.vi long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, imm, vm encoding: match: 01010------------011-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vror.vv.yaml b/spec/std/isa/inst/Zvbb/vror.vv.yaml index b945fc127f..b7f246d3f8 100644 --- a/spec/std/isa/inst/Zvbb/vror.vv.yaml +++ b/spec/std/isa/inst/Zvbb/vror.vv.yaml @@ -9,7 +9,9 @@ name: vror.vv long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, vs1, vm encoding: match: 010100-----------000-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vror.vx.yaml b/spec/std/isa/inst/Zvbb/vror.vx.yaml index e0edccd418..48e85e7266 100644 --- a/spec/std/isa/inst/Zvbb/vror.vx.yaml +++ b/spec/std/isa/inst/Zvbb/vror.vx.yaml @@ -9,7 +9,9 @@ name: vror.vx long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, xs1, vm encoding: match: 010100-----------100-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vwsll.vi.yaml b/spec/std/isa/inst/Zvbb/vwsll.vi.yaml index 8d29a769ac..3530df44b8 100644 --- a/spec/std/isa/inst/Zvbb/vwsll.vi.yaml +++ b/spec/std/isa/inst/Zvbb/vwsll.vi.yaml @@ -9,7 +9,9 @@ name: vwsll.vi long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, imm, vm encoding: match: 110101-----------011-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vwsll.vv.yaml b/spec/std/isa/inst/Zvbb/vwsll.vv.yaml index d1ae8fcfe9..55801dc9f8 100644 --- a/spec/std/isa/inst/Zvbb/vwsll.vv.yaml +++ b/spec/std/isa/inst/Zvbb/vwsll.vv.yaml @@ -9,7 +9,9 @@ name: vwsll.vv long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, vs1, vm encoding: match: 110101-----------000-----1010111 diff --git a/spec/std/isa/inst/Zvbb/vwsll.vx.yaml b/spec/std/isa/inst/Zvbb/vwsll.vx.yaml index e761067dbd..113747a190 100644 --- a/spec/std/isa/inst/Zvbb/vwsll.vx.yaml +++ b/spec/std/isa/inst/Zvbb/vwsll.vx.yaml @@ -9,7 +9,9 @@ name: vwsll.vx long_name: No synopsis available description: | No description available. -definedBy: Zvbb +definedBy: + extension: + name: Zvbb assembly: vd, vs2, xs1, vm encoding: match: 110101-----------100-----1010111 diff --git a/spec/std/isa/inst/Zvbc/vclmul.vv.yaml b/spec/std/isa/inst/Zvbc/vclmul.vv.yaml index 04e2d68098..ecbe9bae9c 100644 --- a/spec/std/isa/inst/Zvbc/vclmul.vv.yaml +++ b/spec/std/isa/inst/Zvbc/vclmul.vv.yaml @@ -9,7 +9,9 @@ name: vclmul.vv long_name: No synopsis available description: | No description available. -definedBy: Zvbc +definedBy: + extension: + name: Zvbc assembly: vd, vs2, vs1, vm encoding: match: 001100-----------010-----1010111 diff --git a/spec/std/isa/inst/Zvbc/vclmul.vx.yaml b/spec/std/isa/inst/Zvbc/vclmul.vx.yaml index bf01a2b57f..2f3d3863ab 100644 --- a/spec/std/isa/inst/Zvbc/vclmul.vx.yaml +++ b/spec/std/isa/inst/Zvbc/vclmul.vx.yaml @@ -9,7 +9,9 @@ name: vclmul.vx long_name: No synopsis available description: | No description available. -definedBy: Zvbc +definedBy: + extension: + name: Zvbc assembly: vd, vs2, xs1, vm encoding: match: 001100-----------110-----1010111 diff --git a/spec/std/isa/inst/Zvbc/vclmulh.vv.yaml b/spec/std/isa/inst/Zvbc/vclmulh.vv.yaml index 8b42935108..37fff25816 100644 --- a/spec/std/isa/inst/Zvbc/vclmulh.vv.yaml +++ b/spec/std/isa/inst/Zvbc/vclmulh.vv.yaml @@ -9,7 +9,9 @@ name: vclmulh.vv long_name: No synopsis available description: | No description available. -definedBy: Zvbc +definedBy: + extension: + name: Zvbc assembly: vd, vs2, vs1, vm encoding: match: 001101-----------010-----1010111 diff --git a/spec/std/isa/inst/Zvbc/vclmulh.vx.yaml b/spec/std/isa/inst/Zvbc/vclmulh.vx.yaml index 3b05e0ff1b..d9f48cca2a 100644 --- a/spec/std/isa/inst/Zvbc/vclmulh.vx.yaml +++ b/spec/std/isa/inst/Zvbc/vclmulh.vx.yaml @@ -9,7 +9,9 @@ name: vclmulh.vx long_name: No synopsis available description: | No description available. -definedBy: Zvbc +definedBy: + extension: + name: Zvbc assembly: vd, vs2, xs1, vm encoding: match: 001101-----------110-----1010111 diff --git a/spec/std/isa/inst/Zvfbfmin/vfncvtbf16.f.f.w.yaml b/spec/std/isa/inst/Zvfbfmin/vfncvtbf16.f.f.w.yaml index 91d1636aac..59fe7f2ada 100644 --- a/spec/std/isa/inst/Zvfbfmin/vfncvtbf16.f.f.w.yaml +++ b/spec/std/isa/inst/Zvfbfmin/vfncvtbf16.f.f.w.yaml @@ -9,7 +9,9 @@ name: vfncvtbf16.f.f.w long_name: No synopsis available description: | No description available. -definedBy: Zvfbfmin +definedBy: + extension: + name: Zvfbfmin assembly: vd, vs2, vm encoding: match: 010010------11101001-----1010111 diff --git a/spec/std/isa/inst/Zvfbfmin/vfwcvtbf16.f.f.v.yaml b/spec/std/isa/inst/Zvfbfmin/vfwcvtbf16.f.f.v.yaml index 0181d79411..a0bbe20c7a 100644 --- a/spec/std/isa/inst/Zvfbfmin/vfwcvtbf16.f.f.v.yaml +++ b/spec/std/isa/inst/Zvfbfmin/vfwcvtbf16.f.f.v.yaml @@ -9,7 +9,9 @@ name: vfwcvtbf16.f.f.v long_name: No synopsis available description: | No description available. -definedBy: Zvfbfmin +definedBy: + extension: + name: Zvfbfmin assembly: vd, vs2, vm encoding: match: 010010------01101001-----1010111 diff --git a/spec/std/isa/inst/Zvfbfwma/vfwmaccbf16.vf.yaml b/spec/std/isa/inst/Zvfbfwma/vfwmaccbf16.vf.yaml index 86490edc78..a8d7324994 100644 --- a/spec/std/isa/inst/Zvfbfwma/vfwmaccbf16.vf.yaml +++ b/spec/std/isa/inst/Zvfbfwma/vfwmaccbf16.vf.yaml @@ -9,7 +9,9 @@ name: vfwmaccbf16.vf long_name: No synopsis available description: | No description available. -definedBy: Zvfbfwma +definedBy: + extension: + name: Zvfbfwma assembly: vd, fs1, vs2, vm encoding: match: 111011-----------101-----1010111 diff --git a/spec/std/isa/inst/Zvfbfwma/vfwmaccbf16.vv.yaml b/spec/std/isa/inst/Zvfbfwma/vfwmaccbf16.vv.yaml index 75517540a2..e550d9986f 100644 --- a/spec/std/isa/inst/Zvfbfwma/vfwmaccbf16.vv.yaml +++ b/spec/std/isa/inst/Zvfbfwma/vfwmaccbf16.vv.yaml @@ -9,7 +9,9 @@ name: vfwmaccbf16.vv long_name: No synopsis available description: | No description available. -definedBy: Zvfbfwma +definedBy: + extension: + name: Zvfbfwma assembly: vd, vs1, vs2, vm encoding: match: 111011-----------001-----1010111 diff --git a/spec/std/isa/inst/Zvkg/vghsh.vv.yaml b/spec/std/isa/inst/Zvkg/vghsh.vv.yaml index 85b23d85d0..8a8fea805d 100644 --- a/spec/std/isa/inst/Zvkg/vghsh.vv.yaml +++ b/spec/std/isa/inst/Zvkg/vghsh.vv.yaml @@ -9,7 +9,9 @@ name: vghsh.vv long_name: No synopsis available description: | No description available. -definedBy: Zvkg +definedBy: + extension: + name: Zvkg assembly: vd, vs2, vs1 encoding: match: 1011001----------010-----1110111 diff --git a/spec/std/isa/inst/Zvkg/vgmul.vv.yaml b/spec/std/isa/inst/Zvkg/vgmul.vv.yaml index b62fa44f5a..80e092d2dd 100644 --- a/spec/std/isa/inst/Zvkg/vgmul.vv.yaml +++ b/spec/std/isa/inst/Zvkg/vgmul.vv.yaml @@ -9,7 +9,9 @@ name: vgmul.vv long_name: No synopsis available description: | No description available. -definedBy: Zvkg +definedBy: + extension: + name: Zvkg assembly: vd, vs2 encoding: match: 1010001-----10001010-----1110111 diff --git a/spec/std/isa/inst/Zvkned/vaesdf.vs.yaml b/spec/std/isa/inst/Zvkned/vaesdf.vs.yaml index 7ff102adf1..1a218ecf50 100644 --- a/spec/std/isa/inst/Zvkned/vaesdf.vs.yaml +++ b/spec/std/isa/inst/Zvkned/vaesdf.vs.yaml @@ -9,7 +9,9 @@ name: vaesdf.vs long_name: No synopsis available description: | No description available. -definedBy: Zvkned +definedBy: + extension: + name: Zvkned assembly: vd, vs2 encoding: match: 1010011-----00001010-----1110111 diff --git a/spec/std/isa/inst/Zvkned/vaesdf.vv.yaml b/spec/std/isa/inst/Zvkned/vaesdf.vv.yaml index 6d7e1c8d5c..1fa5392881 100644 --- a/spec/std/isa/inst/Zvkned/vaesdf.vv.yaml +++ b/spec/std/isa/inst/Zvkned/vaesdf.vv.yaml @@ -9,7 +9,9 @@ name: vaesdf.vv long_name: No synopsis available description: | No description available. -definedBy: Zvkned +definedBy: + extension: + name: Zvkned assembly: vd, vs2 encoding: match: 1010001-----00001010-----1110111 diff --git a/spec/std/isa/inst/Zvkned/vaesdm.vs.yaml b/spec/std/isa/inst/Zvkned/vaesdm.vs.yaml index 8557e69c0a..61421af3cb 100644 --- a/spec/std/isa/inst/Zvkned/vaesdm.vs.yaml +++ b/spec/std/isa/inst/Zvkned/vaesdm.vs.yaml @@ -9,7 +9,9 @@ name: vaesdm.vs long_name: No synopsis available description: | No description available. -definedBy: Zvkned +definedBy: + extension: + name: Zvkned assembly: vd, vs2 encoding: match: 1010011-----00000010-----1110111 diff --git a/spec/std/isa/inst/Zvkned/vaesdm.vv.yaml b/spec/std/isa/inst/Zvkned/vaesdm.vv.yaml index 6e95fe75d9..de65d232b3 100644 --- a/spec/std/isa/inst/Zvkned/vaesdm.vv.yaml +++ b/spec/std/isa/inst/Zvkned/vaesdm.vv.yaml @@ -9,7 +9,9 @@ name: vaesdm.vv long_name: No synopsis available description: | No description available. -definedBy: Zvkned +definedBy: + extension: + name: Zvkned assembly: vd, vs2 encoding: match: 1010001-----00000010-----1110111 diff --git a/spec/std/isa/inst/Zvkned/vaesef.vs.yaml b/spec/std/isa/inst/Zvkned/vaesef.vs.yaml index fc72e2629f..8c521d8257 100644 --- a/spec/std/isa/inst/Zvkned/vaesef.vs.yaml +++ b/spec/std/isa/inst/Zvkned/vaesef.vs.yaml @@ -9,7 +9,9 @@ name: vaesef.vs long_name: No synopsis available description: | No description available. -definedBy: Zvkned +definedBy: + extension: + name: Zvkned assembly: vd, vs2 encoding: match: 1010011-----00011010-----1110111 diff --git a/spec/std/isa/inst/Zvkned/vaesef.vv.yaml b/spec/std/isa/inst/Zvkned/vaesef.vv.yaml index 8c6d929518..5b3aff507b 100644 --- a/spec/std/isa/inst/Zvkned/vaesef.vv.yaml +++ b/spec/std/isa/inst/Zvkned/vaesef.vv.yaml @@ -9,7 +9,9 @@ name: vaesef.vv long_name: No synopsis available description: | No description available. -definedBy: Zvkned +definedBy: + extension: + name: Zvkned assembly: vd, vs2 encoding: match: 1010001-----00011010-----1110111 diff --git a/spec/std/isa/inst/Zvkned/vaesem.vs.yaml b/spec/std/isa/inst/Zvkned/vaesem.vs.yaml index a018887647..d5959c03e0 100644 --- a/spec/std/isa/inst/Zvkned/vaesem.vs.yaml +++ b/spec/std/isa/inst/Zvkned/vaesem.vs.yaml @@ -9,7 +9,9 @@ name: vaesem.vs long_name: No synopsis available description: | No description available. -definedBy: Zvkned +definedBy: + extension: + name: Zvkned assembly: vd, vs2 encoding: match: 1010011-----00010010-----1110111 diff --git a/spec/std/isa/inst/Zvkned/vaesem.vv.yaml b/spec/std/isa/inst/Zvkned/vaesem.vv.yaml index 0c5e891572..9e78e1d19a 100644 --- a/spec/std/isa/inst/Zvkned/vaesem.vv.yaml +++ b/spec/std/isa/inst/Zvkned/vaesem.vv.yaml @@ -9,7 +9,9 @@ name: vaesem.vv long_name: No synopsis available description: | No description available. -definedBy: Zvkned +definedBy: + extension: + name: Zvkned assembly: vd, vs2 encoding: match: 1010001-----00010010-----1110111 diff --git a/spec/std/isa/inst/Zvkned/vaeskf1.vi.yaml b/spec/std/isa/inst/Zvkned/vaeskf1.vi.yaml index 42e6817883..068c4e448a 100644 --- a/spec/std/isa/inst/Zvkned/vaeskf1.vi.yaml +++ b/spec/std/isa/inst/Zvkned/vaeskf1.vi.yaml @@ -9,7 +9,9 @@ name: vaeskf1.vi long_name: No synopsis available description: | No description available. -definedBy: Zvkned +definedBy: + extension: + name: Zvkned assembly: vd, vs2, imm encoding: match: 1000101----------010-----1110111 diff --git a/spec/std/isa/inst/Zvkned/vaeskf2.vi.yaml b/spec/std/isa/inst/Zvkned/vaeskf2.vi.yaml index dca6c5fb6f..0e4c73d9c3 100644 --- a/spec/std/isa/inst/Zvkned/vaeskf2.vi.yaml +++ b/spec/std/isa/inst/Zvkned/vaeskf2.vi.yaml @@ -9,7 +9,9 @@ name: vaeskf2.vi long_name: No synopsis available description: | No description available. -definedBy: Zvkned +definedBy: + extension: + name: Zvkned assembly: vd, vs2, imm encoding: match: 1010101----------010-----1110111 diff --git a/spec/std/isa/inst/Zvkned/vaesz.vs.yaml b/spec/std/isa/inst/Zvkned/vaesz.vs.yaml index 6e036d3915..81b56d05db 100644 --- a/spec/std/isa/inst/Zvkned/vaesz.vs.yaml +++ b/spec/std/isa/inst/Zvkned/vaesz.vs.yaml @@ -9,7 +9,9 @@ name: vaesz.vs long_name: Vector AES round zero description: | No description available. -definedBy: Zvkned +definedBy: + extension: + name: Zvkned assembly: vd, vs2 encoding: match: 1010011-----00111010-----1110111 diff --git a/spec/std/isa/inst/Zvknha/vsha2ch.vv.yaml b/spec/std/isa/inst/Zvknha/vsha2ch.vv.yaml index 9ed2739b3a..ea4e8ee969 100644 --- a/spec/std/isa/inst/Zvknha/vsha2ch.vv.yaml +++ b/spec/std/isa/inst/Zvknha/vsha2ch.vv.yaml @@ -9,7 +9,9 @@ name: vsha2ch.vv long_name: No synopsis available description: | No description available. -definedBy: Zvknha +definedBy: + extension: + name: Zvknha assembly: vd, vs2, vs1 encoding: match: 1011101----------010-----1110111 diff --git a/spec/std/isa/inst/Zvknha/vsha2cl.vv.yaml b/spec/std/isa/inst/Zvknha/vsha2cl.vv.yaml index 1047aad5a2..2b621d5be2 100644 --- a/spec/std/isa/inst/Zvknha/vsha2cl.vv.yaml +++ b/spec/std/isa/inst/Zvknha/vsha2cl.vv.yaml @@ -9,7 +9,9 @@ name: vsha2cl.vv long_name: No synopsis available description: | No description available. -definedBy: Zvknha +definedBy: + extension: + name: Zvknha assembly: vd, vs2, vs1 encoding: match: 1011111----------010-----1110111 diff --git a/spec/std/isa/inst/Zvknha/vsha2ms.vv.yaml b/spec/std/isa/inst/Zvknha/vsha2ms.vv.yaml index 4f2eaba7ef..f0ca129c58 100644 --- a/spec/std/isa/inst/Zvknha/vsha2ms.vv.yaml +++ b/spec/std/isa/inst/Zvknha/vsha2ms.vv.yaml @@ -9,7 +9,9 @@ name: vsha2ms.vv long_name: No synopsis available description: | No description available. -definedBy: Zvknha +definedBy: + extension: + name: Zvknha assembly: vd, vs2, vs1 encoding: match: 1011011----------010-----1110111 diff --git a/spec/std/isa/inst/Zvks/vsm3c.vi.yaml b/spec/std/isa/inst/Zvks/vsm3c.vi.yaml index 39f6a057b5..9deacc9534 100644 --- a/spec/std/isa/inst/Zvks/vsm3c.vi.yaml +++ b/spec/std/isa/inst/Zvks/vsm3c.vi.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - anyOf: [Zvks, Zvksh] + extension: + anyOf: + - name: Zvks + - name: Zvksh assembly: vd, vs2, imm encoding: match: 1010111----------010-----1110111 diff --git a/spec/std/isa/inst/Zvks/vsm3me.vv.yaml b/spec/std/isa/inst/Zvks/vsm3me.vv.yaml index 6a2f0b0ce0..149b3e882b 100644 --- a/spec/std/isa/inst/Zvks/vsm3me.vv.yaml +++ b/spec/std/isa/inst/Zvks/vsm3me.vv.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - anyOf: [Zvks, Zvksh] + extension: + anyOf: + - name: Zvks + - name: Zvksh assembly: vd, vs2, vs1 encoding: match: 1000001----------010-----1110111 diff --git a/spec/std/isa/inst/Zvks/vsm4k.vi.yaml b/spec/std/isa/inst/Zvks/vsm4k.vi.yaml index 0b06c10809..a1765b75c2 100644 --- a/spec/std/isa/inst/Zvks/vsm4k.vi.yaml +++ b/spec/std/isa/inst/Zvks/vsm4k.vi.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - anyOf: [Zvks, Zvksed] + extension: + anyOf: + - name: Zvks + - name: Zvksed assembly: vd, vs2, imm encoding: match: 1000011----------010-----1110111 diff --git a/spec/std/isa/inst/Zvks/vsm4r.vs.yaml b/spec/std/isa/inst/Zvks/vsm4r.vs.yaml index 2626ff1098..02e32fb503 100644 --- a/spec/std/isa/inst/Zvks/vsm4r.vs.yaml +++ b/spec/std/isa/inst/Zvks/vsm4r.vs.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - anyOf: [Zvks, Zvksed] + extension: + anyOf: + - name: Zvks + - name: Zvksed assembly: vd, vs2 encoding: match: 1010011-----10000010-----1110111 diff --git a/spec/std/isa/inst/Zvks/vsm4r.vv.yaml b/spec/std/isa/inst/Zvks/vsm4r.vv.yaml index cfac044245..45f2527f54 100644 --- a/spec/std/isa/inst/Zvks/vsm4r.vv.yaml +++ b/spec/std/isa/inst/Zvks/vsm4r.vv.yaml @@ -10,7 +10,10 @@ long_name: No synopsis available description: | No description available. definedBy: - anyOf: [Zvks, Zvksed] + extension: + anyOf: + - name: Zvks + - name: Zvksed assembly: vd, vs2 encoding: match: 1010001-----10000010-----1110111 diff --git a/spec/std/isa/interrupt_code/LocalCounterOverflow.yaml b/spec/std/isa/interrupt_code/LocalCounterOverflow.yaml new file mode 100644 index 0000000000..316a726c47 --- /dev/null +++ b/spec/std/isa/interrupt_code/LocalCounterOverflow.yaml @@ -0,0 +1,14 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: interrupt_code_schema.json# +kind: interrupt_code +name: LocalCounterOverflow + +num: 13 +display_name: Local counter overflow +definedBy: + extension: + name: Sscofpmf diff --git a/spec/std/isa/interrupt_code/MachineExternal.yaml b/spec/std/isa/interrupt_code/MachineExternal.yaml new file mode 100644 index 0000000000..8af15c9b9b --- /dev/null +++ b/spec/std/isa/interrupt_code/MachineExternal.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: interrupt_code_schema.json# +kind: interrupt_code +name: MachineExternal +num: 11 +display_name: Machine external +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/interrupt_code/MachineSoftware.yaml b/spec/std/isa/interrupt_code/MachineSoftware.yaml new file mode 100644 index 0000000000..a989246509 --- /dev/null +++ b/spec/std/isa/interrupt_code/MachineSoftware.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: interrupt_code_schema.json# +kind: interrupt_code +name: MachineSoftware +num: 3 +display_name: Machine software +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/interrupt_code/MachineTimer.yaml b/spec/std/isa/interrupt_code/MachineTimer.yaml new file mode 100644 index 0000000000..0574114802 --- /dev/null +++ b/spec/std/isa/interrupt_code/MachineTimer.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: interrupt_code_schema.json# +kind: interrupt_code +name: MachineTimer +num: 7 +display_name: Machine timer +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/interrupt_code/SupervisorExternal.yaml b/spec/std/isa/interrupt_code/SupervisorExternal.yaml new file mode 100644 index 0000000000..5d83458e49 --- /dev/null +++ b/spec/std/isa/interrupt_code/SupervisorExternal.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: interrupt_code_schema.json# +kind: interrupt_code +name: SupervisorExternal +num: 9 +display_name: Supervisor external +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/interrupt_code/SupervisorGuestExternal.yaml b/spec/std/isa/interrupt_code/SupervisorGuestExternal.yaml new file mode 100644 index 0000000000..3b4bfdeb3a --- /dev/null +++ b/spec/std/isa/interrupt_code/SupervisorGuestExternal.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: interrupt_code_schema.json# +kind: interrupt_code +name: SupervisorGuestExternal +num: 12 +display_name: Supervisor guest external +definedBy: + extension: + name: H diff --git a/spec/std/isa/interrupt_code/SupervisorSoftware.yaml b/spec/std/isa/interrupt_code/SupervisorSoftware.yaml new file mode 100644 index 0000000000..0eeb58e42e --- /dev/null +++ b/spec/std/isa/interrupt_code/SupervisorSoftware.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: interrupt_code_schema.json# +kind: interrupt_code +name: SupervisorSoftware +num: 1 +display_name: Supervisor software +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/interrupt_code/SupervisorTimer.yaml b/spec/std/isa/interrupt_code/SupervisorTimer.yaml new file mode 100644 index 0000000000..264124b9c6 --- /dev/null +++ b/spec/std/isa/interrupt_code/SupervisorTimer.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: interrupt_code_schema.json# +kind: interrupt_code +name: SupervisorTimer +num: 5 +display_name: Supervisor timer +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/interrupt_code/VirtualSupervisorExternal.yaml b/spec/std/isa/interrupt_code/VirtualSupervisorExternal.yaml new file mode 100644 index 0000000000..a5779db556 --- /dev/null +++ b/spec/std/isa/interrupt_code/VirtualSupervisorExternal.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: interrupt_code_schema.json# +kind: interrupt_code +name: VirtualSupervisorExternal +num: 10 +display_name: Virutal supervisor external +definedBy: + extension: + name: H diff --git a/spec/std/isa/interrupt_code/VirtualSupervisorSoftware.yaml b/spec/std/isa/interrupt_code/VirtualSupervisorSoftware.yaml new file mode 100644 index 0000000000..3966f1956e --- /dev/null +++ b/spec/std/isa/interrupt_code/VirtualSupervisorSoftware.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: interrupt_code_schema.json# +kind: interrupt_code +name: VirtualSupervisorSoftware +num: 2 +display_name: Virtual supervisor software +definedBy: + extension: + name: H diff --git a/spec/std/isa/interrupt_code/VirtualSupervisorTimer.yaml b/spec/std/isa/interrupt_code/VirtualSupervisorTimer.yaml new file mode 100644 index 0000000000..e0c35fc69b --- /dev/null +++ b/spec/std/isa/interrupt_code/VirtualSupervisorTimer.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: interrupt_code_schema.json# +kind: interrupt_code +name: VirtualSupervisorTimer +num: 6 +display_name: Virtual supervisor timer +definedBy: + extension: + name: H diff --git a/spec/std/isa/isa/builtin_functions.idl b/spec/std/isa/isa/builtin_functions.idl index 86a54d71c9..d385c166de 100644 --- a/spec/std/isa/isa/builtin_functions.idl +++ b/spec/std/isa/isa/builtin_functions.idl @@ -110,6 +110,14 @@ builtin function unpredictable { } } +builtin function unreachable { + description { + Indicate that the IDL line should be unreachable. + + If this function is called, it represents a bug in the IDL code. + } +} + builtin function read_hpm_counter { returns Bits<64> arguments Bits<5> n diff --git a/spec/std/isa/isa/globals.isa b/spec/std/isa/isa/globals.isa index 9afd483a5c..92264e9a65 100644 --- a/spec/std/isa/isa/globals.isa +++ b/spec/std/isa/isa/globals.isa @@ -841,7 +841,7 @@ function valid_interrupt_code? { # code is too large return false; } - if (ary_includes?<$enum_size(InterruptCode), $enum_element_size(InterruptCode)>($enum_to_a(InterruptCode), code)) { + if ($array_includes?($enum_to_a(InterruptCode), code)) { return true; } else { return false; @@ -860,7 +860,7 @@ function valid_exception_code? { # code is too large return false; } - if (ary_includes?<$enum_size(InterruptCode), $enum_element_size(InterruptCode)>($enum_to_a(InterruptCode), code)) { + if ($array_includes?($enum_to_a(ExceptionCode), code)) { return true; } else { return false; @@ -1565,7 +1565,7 @@ function tinst_value_for_guest_page_fault { if (TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT == "always zero") { return 0; } else if (TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT == "always pseudoinstruction") { - if ((VSXLEN == 32) || ((MXLEN == 64) && (CSR[hstatus].VSXL == $bits(XRegWidth::XLEN32)))) { + if (($array_size(VSXLEN) == 1 && VSXLEN[0] == 32) || ((MXLEN == 64) && (CSR[hstatus].VSXL == $bits(XRegWidth::XLEN32)))) { return 0x00002000; } else { return 0x00003000; @@ -1579,7 +1579,7 @@ function tinst_value_for_guest_page_fault { if (TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT == "always zero") { return 0; } else if (TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT == "always pseudoinstruction") { - if ((VSXLEN == 32) || ((MXLEN == 64) && (CSR[hstatus].VSXL == $bits(XRegWidth::XLEN32)))) { + if (($array_size(VSXLEN) == 1 && VSXLEN[0] == 32) || ((MXLEN == 64) && (CSR[hstatus].VSXL == $bits(XRegWidth::XLEN32)))) { return 0x00002020; } else { return 0x00003020; @@ -1593,9 +1593,9 @@ function tinst_value_for_guest_page_fault { } else { if (REPORT_GPA_IN_TVAL_ON_INTERMEDIATE_GUEST_PAGE_FAULT) { # spec states hardware must write the pseduo-instruction values to *tinst - if ((VSXLEN == 32) || ((MXLEN == 64) && (CSR[hstatus].VSXL == $bits(XRegWidth::XLEN32)))) { + if (($array_size(VSXLEN) == 1 && VSXLEN[0] == 32) || ((MXLEN == 64) && (CSR[hstatus].VSXL == $bits(XRegWidth::XLEN32)))) { return 0x00002000; - } else if ((VSXLEN == 64) || ((MXLEN == 64) && (CSR[hstatus].VSXL == $bits(XRegWidth::XLEN64)))) { + } else if (($array_size(VSXLEN) == 1 && VSXLEN[0] == 64) || ((MXLEN == 64) && (CSR[hstatus].VSXL == $bits(XRegWidth::XLEN64)))) { return 0x00003000; } } @@ -1812,8 +1812,8 @@ function gstage_page_walk { ExceptionCode::StoreAmoGuestPageFault ); Boolean mxr = for_final_vs_pte && (CSR[mstatus].MXR == 1); - Boolean pbmte = CSR[menvcfg].PBMTE == 1; - Boolean adue = CSR[menvcfg].ADUE == 1; + Boolean pbmte = implemented?(ExtensionName::Svpbmt) && CSR[menvcfg].PBMTE == 1; + Boolean adue = implemented?(ExtensionName::Svadu) && CSR[menvcfg].ADUE == 1; # set up the value that will be written into mtinst/htinst, if required Bits<32> tinst = tinst_value_for_guest_page_fault(op, encoding, for_final_vs_pte); @@ -2059,9 +2059,9 @@ function stage1_page_walk { # access/dirty bit hardware update enable? Boolean adue; if (CSR[misa].H == 1 && (effective_mode == PrivilegeMode::VS || effective_mode == PrivilegeMode::VU)) { - adue = CSR[henvcfg].ADUE == 1; + adue = implemented?(ExtensionName::Svadu) && CSR[henvcfg].ADUE == 1; } else { - adue = CSR[menvcfg].ADUE == 1; + adue = implemented?(ExtensionName::Svadu) && CSR[menvcfg].ADUE == 1; } # Page-based memory type enable? @@ -2071,9 +2071,9 @@ function stage1_page_walk { pbmte = false; } else { if (CSR[misa].H == 1 && (effective_mode == PrivilegeMode::VS || effective_mode == PrivilegeMode::VU)) { - pbmte = CSR[henvcfg].PBMTE == 1; + pbmte = implemented?(ExtensionName::Svpbmt) && CSR[henvcfg].PBMTE == 1; } else { - pbmte = CSR[menvcfg].PBMTE == 1; + pbmte = implemented?(ExtensionName::Svpbmt) && CSR[menvcfg].PBMTE == 1; } } @@ -2596,7 +2596,7 @@ function read_memory { } else { # misaligned, must break into multiple reads - if (MISALIGNED_SPLIT_STRATEGY == "by_byte") { + if (MISALIGNED_SPLIT_STRATEGY == "sequential_bytes") { Bits result = 0; for (U32 I = 0; I < (LEN/8); I++) { result = result | (read_memory_aligned<8>(virtual_address + I, encoding) `<< (8*I)); @@ -2983,7 +2983,7 @@ function write_memory { raise (ExceptionCode::StoreAmoAddressMisaligned, mode(), virtual_address); } else { # misaligned, must break into multiple reads - if (MISALIGNED_SPLIT_STRATEGY == "by_byte") { + if (MISALIGNED_SPLIT_STRATEGY == "sequential_bytes") { for (U32 I = 0; I < (LEN/8); I++) { write_memory_aligned<8>(virtual_address + I, (value >> (8*I))[7:0], encoding); } diff --git a/spec/std/isa/isa/interrupts.idl b/spec/std/isa/isa/interrupts.idl index 5bd8762613..c3eb8f58f0 100644 --- a/spec/std/isa/isa/interrupts.idl +++ b/spec/std/isa/isa/interrupts.idl @@ -234,8 +234,7 @@ function highest_priority_interrupt { return InterruptCode::MachineSoftware; } else if (int_mask[$bits(InterruptCode::MachineTimer)] == 1'b1) { return InterruptCode::MachineTimer; - } - if (CSR[misa].S == 1'b1) { + } else if (CSR[misa].S == 1'b1) { if (int_mask[$bits(InterruptCode::SupervisorExternal)] == 1'b1) { return InterruptCode::SupervisorExternal; } else if (int_mask[$bits(InterruptCode::SupervisorSoftware)] == 1'b1) { @@ -243,8 +242,7 @@ function highest_priority_interrupt { } else if (int_mask[$bits(InterruptCode::SupervisorTimer)] == 1'b1) { return InterruptCode::SupervisorTimer; } - } - # if (CSR[misa].H == 1'b1) { + # } else if (CSR[misa].H == 1'b1) { # if (int_mask[$bits(InterruptCode::SupervisorGuestExternal)] == 1'b1) { # return InterruptCode::SupervisorGuestExternal; # } else if (int_mask[$bits(InterruptCode::VirtualSupervisorExternal)] == 1'b1) { @@ -255,7 +253,7 @@ function highest_priority_interrupt { # return InterruptCode::VirtualSupervisorTimer; # } # } - if (implemented?(ExtensionName::Sscofpmf)) { + } else if (implemented?(ExtensionName::Sscofpmf)) { if (int_mask[$bits(InterruptCode::LocalCounterOverflow)] == 1'b1) { return InterruptCode::LocalCounterOverflow; } diff --git a/spec/std/isa/isa/util.idl b/spec/std/isa/isa/util.idl index 60b64c651f..4b69e53be5 100644 --- a/spec/std/isa/isa/util.idl +++ b/spec/std/isa/isa/util.idl @@ -17,23 +17,6 @@ function power_of_2? { } } -function ary_includes? { - template U32 ARY_SIZE, U32 ELEMENT_SIZE - returns Boolean - arguments Bits ary[ARY_SIZE], Bits value - description { - Returns true if _value_ is an element of ary, and false otherwise - } - body { - for (U32 i = 0; i < ARY_SIZE; i++) { - if (ary[i] == value) { - return true; - } - } - return false; - } -} - function has_virt_mem? { returns Boolean description { @@ -47,6 +30,42 @@ function has_virt_mem? { } } +function max_va_size { + returns Bits<8> + description { + Returns the largest possible Virtual Address width in any supported translation mode. + + The max VA is determined by physical address size when in M mode or S-mode with Bare translation. + Otherwise, max VA is the size of a virtual address in the largest supported Sv* mode. + + Return the largest that applies. + } + body { + Bits<8> translated_va_size = 0; + if (implemented?(ExtensionName::Sv57)) { + translated_va_size = 57; + } else if (implemented?(ExtensionName::Sv48)) { + translated_va_size = 48; + } else if (implemented?(ExtensionName::Sv39)) { + translated_va_size = 39; + } else if (implemented?(ExtensionName::Sv32)) { + translated_va_size = 32; + } + + if (PHYS_ADDR_WIDTH > translated_va_size) { + # max va is determined by physical address + if (PHYS_ADDR_WIDTH > MXLEN) { + return MXLEN; + } else { + return PHYS_ADDR_WIDTH; + } + } else { + # max va is determined by translated virtual address + return translated_va_size; + } + } +} + function highest_set_bit { returns Bits<8> arguments XReg value diff --git a/spec/std/isa/param/ARCH_ID_VALUE.yaml b/spec/std/isa/param/ARCH_ID_VALUE.yaml new file mode 100644 index 0000000000..bb388f006d --- /dev/null +++ b/spec/std/isa/param/ARCH_ID_VALUE.yaml @@ -0,0 +1,44 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: ARCH_ID_VALUE +long_name: Vendor-specific architecture ID in `marchid` +definedBy: + allOf: + - extension: + name: Sm + - param: + name: MARCHID_IMPLEMENTED + equal: true + reason: When `marchid` is not implemented, its value is not relevant. +description: | + The value of `marchid` + The combination of mvendorid and marchid should uniquely identify the type of hart microarchitecture that is implemented. +schema: + oneOf: + - when: + param: + name: MXLEN + equal: 32 + schema: + allOf: + - $ref: schema_defs.json#/$defs/uint32 + - not: + anyOf: + - const: 0 + - const: 0x80000000 # "Commercial architecture IDs are allocated by each commercial vendor independently, but must have the MSB set and cannot contain zero in the remaining MXLEN-1 bits." + - when: + param: + name: MXLEN + equal: 64 + schema: + allOf: + - $ref: schema_defs.json#/$defs/uint64 + - not: + anyOf: + - const: 0 + - const: 0x8000000000000000 # "Commercial architecture IDs are allocated by each commercial vendor independently, but must have the MSB set and cannot contain zero in the remaining MXLEN-1 bits." diff --git a/spec/std/isa/param/ASID_WIDTH.yaml b/spec/std/isa/param/ASID_WIDTH.yaml new file mode 100644 index 0000000000..9fc3ea4c6d --- /dev/null +++ b/spec/std/isa/param/ASID_WIDTH.yaml @@ -0,0 +1,35 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: ASID_WIDTH +description: + "Number of implemented ASID bits. Maximum is 16 for XLEN==64, and 9 for + XLEN==32 + + " +long_name: TODO +schema: + oneOf: + - when: + param: + name: MXLEN + equal: 32 + schema: + type: integer + minimum: 0 + maximum: 9 + - when: + param: + name: MXLEN + equal: 64 + schema: + type: integer + minimum: 0 + maximum: 16 +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/CACHE_BLOCK_SIZE.yaml b/spec/std/isa/param/CACHE_BLOCK_SIZE.yaml new file mode 100644 index 0000000000..fda0438b88 --- /dev/null +++ b/spec/std/isa/param/CACHE_BLOCK_SIZE.yaml @@ -0,0 +1,22 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: CACHE_BLOCK_SIZE +description: "The observable size of a cache block, in bytes + + " +long_name: TODO +schema: + type: integer + minimum: 1 + maximum: 18446744073709551615 +definedBy: + extension: + anyOf: + - name: Zicbom + - name: Zicbop + - name: Zicboz diff --git a/spec/std/isa/param/CONFIG_PTR_ADDRESS.yaml b/spec/std/isa/param/CONFIG_PTR_ADDRESS.yaml new file mode 100644 index 0000000000..351061eef5 --- /dev/null +++ b/spec/std/isa/param/CONFIG_PTR_ADDRESS.yaml @@ -0,0 +1,39 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: CONFIG_PTR_ADDRESS +long_name: | + Physical address in `mconfigptr` +definedBy: + extension: + name: Sm + version: ">= 1.12.0" +description: | + The value returned from `mconfigptr` + +schema: + oneOf: + - when: + param: + name: MXLEN + equal: 32 + schema: + $ref: schema_defs.json#/$defs/uint32 + - when: + param: + name: MXLEN + equal: 64 + schema: + $ref: schema_defs.json#/$defs/uint64 + +requirements: + idl(): | + (MXLEN == 32) -> (CONFIG_PTR_ADDRESS[2:0] == 0); + (MXLEN == 64) -> (CONFIG_PTR_ADDRESS[3:0] == 0); + reason: | + The pointer alignment in bits must be no smaller than MXLEN: + i.e., if MXLEN is 8 x n, then mconfigptr[(log2(n)-1:0] must be zero. diff --git a/spec/std/isa/param/COUNTINHIBIT_EN.yaml b/spec/std/isa/param/COUNTINHIBIT_EN.yaml new file mode 100644 index 0000000000..bbb07fa602 --- /dev/null +++ b/spec/std/isa/param/COUNTINHIBIT_EN.yaml @@ -0,0 +1,32 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: COUNTINHIBIT_EN +description: | + Indicates which hardware performance monitor counters can be disabled from `mcountinhibit`. + + An unimplemented counter cannot be specified, i.e., if HPM_COUNTER_EN[3] is false, + it would be illegal to set COUNTINHIBIT_EN[3] to true. + + COUNTINHIBIT_EN[1] can never be true, since it corresponds to `mcountinhibit.TM`, + which is always read-only-0. + + COUNTINHIBIT_EN[3:31] must all be false if `Zihpm` is not implemented. +long_name: TODO +schema: + type: array + items: + - type: boolean + - const: false + - type: boolean + additionalItems: + type: boolean + maxItems: 32 + minItems: 32 +definedBy: + extension: + name: Sm diff --git a/spec/std/isa/param/DBG_HCONTEXT_WIDTH.yaml b/spec/std/isa/param/DBG_HCONTEXT_WIDTH.yaml new file mode 100644 index 0000000000..452da9e294 --- /dev/null +++ b/spec/std/isa/param/DBG_HCONTEXT_WIDTH.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: DBG_HCONTEXT_WIDTH +description: | + Specifies the size of HCONTEXT +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 14 +definedBy: + extension: + name: Sdtrig diff --git a/spec/std/isa/param/DBG_SCONTEXT_WIDTH.yaml b/spec/std/isa/param/DBG_SCONTEXT_WIDTH.yaml new file mode 100644 index 0000000000..7dc2bfd835 --- /dev/null +++ b/spec/std/isa/param/DBG_SCONTEXT_WIDTH.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: DBG_SCONTEXT_WIDTH +description: | + Specifies the size of SCONTEXT +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 32 +definedBy: + extension: + name: Sdtrig diff --git a/spec/std/isa/param/DCSR_MPRVEN_TYPE.yaml b/spec/std/isa/param/DCSR_MPRVEN_TYPE.yaml new file mode 100644 index 0000000000..cc6e1032f3 --- /dev/null +++ b/spec/std/isa/param/DCSR_MPRVEN_TYPE.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: DCSR_MPRVEN_TYPE +description: | + Implementation of dcsr.MPRVEN is optional. + It may be tied to either 0 or 1. + + Behavior of the dcsr.MPRVEN bit: + * 'read-only-0': tied to 0 + * 'read-only-1': tied to 1 + * 'rw': read-write +long_name: TODO +schema: + type: string + enum: [read-only-0, read-only-1, rw] +definedBy: + extension: + name: Sdtrig diff --git a/spec/std/isa/param/DCSR_STEPIE_TYPE.yaml b/spec/std/isa/param/DCSR_STEPIE_TYPE.yaml new file mode 100644 index 0000000000..27831e6a9f --- /dev/null +++ b/spec/std/isa/param/DCSR_STEPIE_TYPE.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: DCSR_STEPIE_TYPE +description: | + Implementation of dcsr.STEPIE is optional. + It may be tied to either 0 or 1. + + Behavior of the dcsr.STEPIE bit: + * 'read-only-0': tied to 0 + * 'read-only-1': tied to 1 + * 'rw': read-write +long_name: TODO +schema: + type: string + enum: [read-only-0, read-only-1, rw] +definedBy: + extension: + name: Sdtrig diff --git a/spec/std/isa/param/DCSR_STOPCOUNT_TYPE.yaml b/spec/std/isa/param/DCSR_STOPCOUNT_TYPE.yaml new file mode 100644 index 0000000000..31ed4e4382 --- /dev/null +++ b/spec/std/isa/param/DCSR_STOPCOUNT_TYPE.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: DCSR_STOPCOUNT_TYPE +description: | + Implementation of dcsr.STOPCOUNT is optional. + It may be tied to either 0 or 1. + + Behavior of the dcsr.STOPCOUNT bit: + * 'read-only-0': tied to 0 + * 'read-only-1': tied to 1 + * 'rw': read-write +long_name: TODO +schema: + type: string + enum: [read-only-0, read-only-1, rw] +definedBy: + extension: + name: Sdtrig diff --git a/spec/std/isa/param/DCSR_STOPTIME_TYPE.yaml b/spec/std/isa/param/DCSR_STOPTIME_TYPE.yaml new file mode 100644 index 0000000000..a06355b1b0 --- /dev/null +++ b/spec/std/isa/param/DCSR_STOPTIME_TYPE.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: DCSR_STOPTIME_TYPE +description: | + Implementation of dcsr.STOPTIME is optional. + It may be tied to either 0 or 1. + + Behavior of the dcsr.STOPTIME bit: + * 'read-only-0': tied to 0 + * 'read-only-1': tied to 1 + * 'rw': read-write +long_name: TODO +schema: + type: string + enum: [read-only-0, read-only-1, rw] +definedBy: + extension: + name: Sdtrig diff --git a/spec/std/isa/param/FORCE_UPGRADE_CBO_INVAL_TO_FLUSH.yaml b/spec/std/isa/param/FORCE_UPGRADE_CBO_INVAL_TO_FLUSH.yaml new file mode 100644 index 0000000000..61c937b231 --- /dev/null +++ b/spec/std/isa/param/FORCE_UPGRADE_CBO_INVAL_TO_FLUSH.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: FORCE_UPGRADE_CBO_INVAL_TO_FLUSH +description: | + When true, an implementation prohibits setting `menvcfg.CBIE` == `11` such that all `cbo.inval` + instructions either trap (when `menvcfg.CBIE` == '00') or flush (when `menvcfg.CBIE` == '01'). + + When false, an implementation allows a true INVAL operation for `cbo.inval`, and thus supports + the setting `menvcfg.CBIE` == `11`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Zicbom diff --git a/spec/std/isa/param/GSTAGE_MODE_BARE.yaml b/spec/std/isa/param/GSTAGE_MODE_BARE.yaml new file mode 100644 index 0000000000..4c93924caf --- /dev/null +++ b/spec/std/isa/param/GSTAGE_MODE_BARE.yaml @@ -0,0 +1,24 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: GSTAGE_MODE_BARE +description: Whether or not writing mode=Bare is supported in the `hgatp` register. +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + # if host is 32 bit, then one of Bare or Sv32X4 must be supported + $array_includes?(SXLEN, 32) && !SV32X4_TRANSLATION + -> GSTAGE_MODE_BARE; + + # if host is 64 bit, then one of Bare, Sv39X4, Sv48x4, or Sv57x4 must be supported + $array_includes?(SXLEN, 64) && !SV39X4_TRANSLATION && !SV48X4_TRANSLATION && !SV57X4_TRANSLATION + -> GSTAGE_MODE_BARE; +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/HCONTEXT_AVAILABLE.yaml b/spec/std/isa/param/HCONTEXT_AVAILABLE.yaml new file mode 100644 index 0000000000..23d05a37c5 --- /dev/null +++ b/spec/std/isa/param/HCONTEXT_AVAILABLE.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HCONTEXT_AVAILABLE +description: | + Specifies if HCONTEXT is available +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Sdtrig +requirements: + idl(): HCONTEXT_AVAILABLE -> MCONTEXT_AVAILABLE; + reason: HCONTEXT cannot exist without MCONTEXT diff --git a/spec/std/isa/param/HCOUNTENABLE_EN.yaml b/spec/std/isa/param/HCOUNTENABLE_EN.yaml new file mode 100644 index 0000000000..29f4c20150 --- /dev/null +++ b/spec/std/isa/param/HCOUNTENABLE_EN.yaml @@ -0,0 +1,27 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HCOUNTENABLE_EN +description: | + Indicates which counters can delegated via `hcounteren` + + An unimplemented counter cannot be specified, i.e., if + HPM_COUNTER_EN[3] is false, it would be illegal to set + HCOUNTENABLE_EN[3] to true. + + HCOUNTENABLE_EN[0:2] must all be false if `Zicntr` is not implemented. + HCOUNTENABLE_EN[3:31] must all be false if `Zihpm` is not implemented. +long_name: TODO +schema: + type: array + items: + type: boolean + maxItems: 32 + minItems: 32 +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/HPM_COUNTER_EN.yaml b/spec/std/isa/param/HPM_COUNTER_EN.yaml new file mode 100644 index 0000000000..31c314761b --- /dev/null +++ b/spec/std/isa/param/HPM_COUNTER_EN.yaml @@ -0,0 +1,29 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HPM_COUNTER_EN +description: | + List of HPM counters that are enabled. + There is one entry for each hpmcounter. + + The first three entries *must* be false (as they correspond to CY, IR, TM in, _e.g._ `mhmpcountinhibit`) + Index 3 in HPM_COUNTER_EN corresponds to hpmcounter3. + Index 31 in HPM_COUNTER_EN corresponds to hpmcounter31. +long_name: TODO +schema: + type: array + items: + - const: false + - const: false + - const: false + additionalItems: + type: boolean + maxItems: 32 + minItems: 32 +definedBy: + extension: + name: Smhpm diff --git a/spec/std/isa/param/HPM_EVENTS.yaml b/spec/std/isa/param/HPM_EVENTS.yaml new file mode 100644 index 0000000000..a1af671e48 --- /dev/null +++ b/spec/std/isa/param/HPM_EVENTS.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HPM_EVENTS +description: "List of defined event numbers that can be written into hpmeventN + + " +long_name: TODO +schema: + type: array + items: + type: integer + minimum: 0 + maximum: 288230376151711743 +definedBy: + extension: + name: Smhpm diff --git a/spec/std/isa/param/HSTATEEN_AIA_TYPE.yaml b/spec/std/isa/param/HSTATEEN_AIA_TYPE.yaml new file mode 100644 index 0000000000..c09fbe480e --- /dev/null +++ b/spec/std/isa/param/HSTATEEN_AIA_TYPE.yaml @@ -0,0 +1,34 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HSTATEEN_AIA_TYPE +description: | + Behavior of the hstateen0.AIA bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +requirements: + idl(): + MSTATEEN_AIA_TYPE == "read-only-0" -> HSTATEEN_AIA_TYPE == "read-only-0"; + MSTATEEN_AIA_TYPE == "read-only-1" -> HSTATEEN_AIA_TYPE == "read-only-1"; + reason: | + HSTATEEN cannot have more options that MSTATEEN + HSTATEEN cannot have more options that MSTATEEN +definedBy: + extension: + allOf: + - name: Ssaia + - name: H + - name: Ssstateen diff --git a/spec/std/isa/param/HSTATEEN_CONTEXT_TYPE.yaml b/spec/std/isa/param/HSTATEEN_CONTEXT_TYPE.yaml new file mode 100644 index 0000000000..5e5ce6b6e4 --- /dev/null +++ b/spec/std/isa/param/HSTATEEN_CONTEXT_TYPE.yaml @@ -0,0 +1,35 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HSTATEEN_CONTEXT_TYPE +description: | + Behavior of the hstateen0.CONTEXT bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +requirements: + idl(): + MSTATEEN_CONTEXT_TYPE == "read-only-0" -> HSTATEEN_CONTEXT_TYPE == "read-only-0"; + MSTATEEN_CONTEXT_TYPE == "read-only-1" -> HSTATEEN_CONTEXT_TYPE == "read-only-1"; + reason: | + When mstateen0.CONTEXT is read-only-0, hstateen0.CONTEXT must also be read-only-0 + + When mstateen0.CONTEXT is read-only-1, hstateen0.CONTEXT must also be read-only-1 +definedBy: + extension: + allOf: + - name: Sdtrig + - name: H + - name: Ssstateen diff --git a/spec/std/isa/param/HSTATEEN_CSRIND_TYPE.yaml b/spec/std/isa/param/HSTATEEN_CSRIND_TYPE.yaml new file mode 100644 index 0000000000..cbb12cadf6 --- /dev/null +++ b/spec/std/isa/param/HSTATEEN_CSRIND_TYPE.yaml @@ -0,0 +1,34 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HSTATEEN_CSRIND_TYPE +description: | + Behavior of the hstateen0.CSRIND bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +requirements: + idl(): + MSTATEEN_CSRIND_TYPE == "read-only-0" -> HSTATEEN_CSRIND_TYPE == "read-only-0"; + MSTATEEN_CSRIND_TYPE == "read-only-1" -> HSTATEEN_CSRIND_TYPE == "read-only-1"; + reason: | + HSTATEEN cannot have more options that MSTATEEN + HSTATEEN cannot have more options that MSTATEEN +definedBy: + extension: + allOf: + - name: Sscsrind + - name: H + - name: Ssstateen diff --git a/spec/std/isa/param/HSTATEEN_ENVCFG_TYPE.yaml b/spec/std/isa/param/HSTATEEN_ENVCFG_TYPE.yaml new file mode 100644 index 0000000000..945afaecc5 --- /dev/null +++ b/spec/std/isa/param/HSTATEEN_ENVCFG_TYPE.yaml @@ -0,0 +1,36 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HSTATEEN_ENVCFG_TYPE +description: | + Behavior of the hstateen0.ENVCFG bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +requirements: + idl(): | + MSTATEEN_ENVCFG_TYPE == "read-only-0" -> HSTATEEN_ENVCFG_TYPE == "read-only-0"; + MSTATEEN_ENVCFG_TYPE == "read-only-1" -> HSTATEEN_ENVCFG_TYPE == "read-only-1"; + reason: | + When mstateen0.ENVCFG is read-only-0, hstateen0.ENVCFG must also be read-only-0 + + When mstateen1.ENVCFG is read-only-1, hstateen0.ENVCFG must also be read-only-1 +definedBy: + extension: + allOf: + - name: H + version: "~> 1.0" + - name: Ssstateen + version: "~> 1.0" diff --git a/spec/std/isa/param/HSTATEEN_IMSIC_TYPE.yaml b/spec/std/isa/param/HSTATEEN_IMSIC_TYPE.yaml new file mode 100644 index 0000000000..f854914722 --- /dev/null +++ b/spec/std/isa/param/HSTATEEN_IMSIC_TYPE.yaml @@ -0,0 +1,34 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HSTATEEN_IMSIC_TYPE +description: | + Behavior of the hstateen0.IMSIC bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +requirements: + idl(): + MSTATEEN_IMSIC_TYPE == "read-only-0" -> HSTATEEN_IMSIC_TYPE == "read-only-0"; + MSTATEEN_IMSIC_TYPE == "read-only-1" -> HSTATEEN_IMSIC_TYPE == "read-only-1"; + reason: | + HSTATEEN cannot have more options that MSTATEEN + HSTATEEN cannot have more options that MSTATEEN +definedBy: + extension: + allOf: + - name: Ssaia + - name: H + - name: Ssstateen diff --git a/spec/std/isa/param/HSTATEEN_JVT_TYPE.yaml b/spec/std/isa/param/HSTATEEN_JVT_TYPE.yaml new file mode 100644 index 0000000000..593e8ccded --- /dev/null +++ b/spec/std/isa/param/HSTATEEN_JVT_TYPE.yaml @@ -0,0 +1,33 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HSTATEEN_JVT_TYPE +description: | + Behavior of the hstateen0.JVT bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +requirements: + idl(): + MSTATEEN_JVT_TYPE == "read-only-0" -> HSTATEEN_JVT_TYPE == "read-only-0"; + MSTATEEN_JVT_TYPE == "read-only-1" -> HSTATEEN_JVT_TYPE == "read-only-1"; + reason: | + HSTATEEN cannot have more options that MSTATEEN +definedBy: + extension: + allOf: + - name: Zcmt + - name: H + - name: Ssstateen diff --git a/spec/std/isa/param/HW_MSTATUS_FS_DIRTY_UPDATE.yaml b/spec/std/isa/param/HW_MSTATUS_FS_DIRTY_UPDATE.yaml new file mode 100644 index 0000000000..3da36c8b01 --- /dev/null +++ b/spec/std/isa/param/HW_MSTATUS_FS_DIRTY_UPDATE.yaml @@ -0,0 +1,28 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HW_MSTATUS_FS_DIRTY_UPDATE +description: | + Indicates whether or not hardware will write to `mstatus.FS` + + Values are: + [separator="!"] + !=== + h! never ! Hardware never writes `mstatus.FS` + h! precise ! Hardware writes `mstatus.FS` to the Dirty (3) state precisely when F registers are modified + h! imprecise ! Hardware writes `mstatus.FS` imprecisely. This will result in a call to unpredictable() on any attempt to read `mstatus` or write FP state. + !=== +long_name: TODO +schema: + type: string + enum: + - never + - precise + - imprecise +definedBy: + extension: + name: F diff --git a/spec/std/isa/param/HW_MSTATUS_VS_DIRTY_UPDATE.yaml b/spec/std/isa/param/HW_MSTATUS_VS_DIRTY_UPDATE.yaml new file mode 100644 index 0000000000..0ba2915bd7 --- /dev/null +++ b/spec/std/isa/param/HW_MSTATUS_VS_DIRTY_UPDATE.yaml @@ -0,0 +1,28 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HW_MSTATUS_VS_DIRTY_UPDATE +description: | + Indicates whether or not hardware will write to `mstatus.VS` + + Values are: + [separator="!"] + !=== + h! never ! Hardware never writes `mstatus.VS` + h! precise ! Hardware writes `mstatus.VS` to the Dirty (3) state precisely when V registers are modified + h! imprecise ! Hardware writes `mstatus.VS` imprecisely. This will result in a call to unpredictable() on any attempt to read `mstatus` or write vector state. + !=== +long_name: TODO +schema: + type: string + enum: + - never + - precise + - imprecise +definedBy: + extension: + name: V diff --git a/spec/std/isa/param/IGNORE_INVALID_VSATP_MODE_WRITES_WHEN_V_EQ_ZERO.yaml b/spec/std/isa/param/IGNORE_INVALID_VSATP_MODE_WRITES_WHEN_V_EQ_ZERO.yaml new file mode 100644 index 0000000000..a8e9399b38 --- /dev/null +++ b/spec/std/isa/param/IGNORE_INVALID_VSATP_MODE_WRITES_WHEN_V_EQ_ZERO.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: IGNORE_INVALID_VSATP_MODE_WRITES_WHEN_V_EQ_ZERO +description: | + Whether writes from M-mode, U-mode, or S-mode to vsatp with an illegal mode setting are + ignored (as they are with satp), or if they are treated as WARL, leading to undpredictable + behavior. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/IMP_ID_VALUE.yaml b/spec/std/isa/param/IMP_ID_VALUE.yaml new file mode 100644 index 0000000000..85ee5d9cf6 --- /dev/null +++ b/spec/std/isa/param/IMP_ID_VALUE.yaml @@ -0,0 +1,33 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: IMP_ID_VALUE +long_name: Vendor-specific implementation ID in `mimpid` +definedBy: + allOf: + - extension: + name: Sm + - param: + name: MIMPID_IMPLEMENTED + equal: true + reason: IMP_ID_VALUE is not needed if `mimpid` is not implemented. +description: | + A unique encoding of the version of the processor implementation. +schema: + oneOf: + - when: + param: + name: MXLEN + equal: 32 + schema: + $ref: schema_defs.json#/$defs/uint32 + - when: + param: + name: MXLEN + equal: 64 + schema: + $ref: schema_defs.json#/$defs/uint64 diff --git a/spec/std/isa/param/JVT_BASE_MASK.yaml b/spec/std/isa/param/JVT_BASE_MASK.yaml new file mode 100644 index 0000000000..0a07ed55c4 --- /dev/null +++ b/spec/std/isa/param/JVT_BASE_MASK.yaml @@ -0,0 +1,28 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: JVT_BASE_MASK +long_name: Mask representing the implemented bits of jvt.BASE +definedBy: + allOf: + - extension: + name: Zcmt + - param: + name: JVT_BASE_TYPE + equal: mask +description: | + Mask representing the implemented bits of jvt.BASE. + Includes the implicitly-zero bits of jvt.BASE, so JVT_BASE_MASK[5:0] must always be 0. +schema: + type: integer + minimum: 64 + maximum: 0x7ffffffffffffff # 58 bits +requirements: + idl(): | + MXLEN == 32 -> JVT_BASE_MASK < 0xffff_ffc0; + reason: | + Includes the implicitly-zero bits of jvt.BASE, so JVT_BASE_MASK[5:0] must always be 0. diff --git a/spec/std/isa/param/JVT_BASE_TYPE.yaml b/spec/std/isa/param/JVT_BASE_TYPE.yaml new file mode 100644 index 0000000000..7d1203de14 --- /dev/null +++ b/spec/std/isa/param/JVT_BASE_TYPE.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: JVT_BASE_TYPE +long_name: Type of the jvt.BASE CSR field +definedBy: + extension: + name: Zcmt +description: | + Type of the jvt.BASE CSR field. One of: + + * mask: jvt.BASE contains one or more implemented bits, which are indicated by JVT_BASE_MASK. + * custom: Custom behavior. Will cause hart to enter 'unpredictable' state on a write to jvt.BASE. +schema: + type: string + enum: [mask, custom] diff --git a/spec/std/isa/param/JVT_READ_ONLY.yaml b/spec/std/isa/param/JVT_READ_ONLY.yaml new file mode 100644 index 0000000000..1193c3c132 --- /dev/null +++ b/spec/std/isa/param/JVT_READ_ONLY.yaml @@ -0,0 +1,16 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: JVT_READ_ONLY +long_name: Whether or not the JVT CSR is read-only +definedBy: + extension: + name: Zcmt +description: | + If Zcmt is implemented, JVT is implemented, but can contain a read-only value +schema: + type: boolean diff --git a/spec/std/isa/param/LRSC_FAIL_ON_NON_EXACT_LRSC.yaml b/spec/std/isa/param/LRSC_FAIL_ON_NON_EXACT_LRSC.yaml new file mode 100644 index 0000000000..04c4a8866f --- /dev/null +++ b/spec/std/isa/param/LRSC_FAIL_ON_NON_EXACT_LRSC.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: LRSC_FAIL_ON_NON_EXACT_LRSC +description: | + Whether or not a Store Conditional fails if its physical address and size do not + exactly match the physical address and size of the last Load Reserved in program order + (independent of whether or not the SC is in the current reservation set) +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: A diff --git a/spec/std/isa/param/LRSC_FAIL_ON_VA_SYNONYM.yaml b/spec/std/isa/param/LRSC_FAIL_ON_VA_SYNONYM.yaml new file mode 100644 index 0000000000..76b2a5197c --- /dev/null +++ b/spec/std/isa/param/LRSC_FAIL_ON_VA_SYNONYM.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: LRSC_FAIL_ON_VA_SYNONYM +description: | + Whether or not an `sc.l`/`sc.d` will fail if its VA does not match the VA of the prior + `lr.l`/`lr.d`, even if the physical address of the SC and LR are the same +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: A diff --git a/spec/std/isa/param/LRSC_MISALIGNED_BEHAVIOR.yaml b/spec/std/isa/param/LRSC_MISALIGNED_BEHAVIOR.yaml new file mode 100644 index 0000000000..b669315331 --- /dev/null +++ b/spec/std/isa/param/LRSC_MISALIGNED_BEHAVIOR.yaml @@ -0,0 +1,24 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: LRSC_MISALIGNED_BEHAVIOR +description: | + What to do when an LR/SC address is misaligned and MISALIGNED_AMO == false. + + * 'always raise misaligned exception': self-explainitory + * 'always raise access fault': self-explainitory + * 'custom': Custom behavior; misaligned LR/SC may sometimes raise a misaligned exception and sometimes raise a access fault. Will lead to an 'unpredictable' call on any misaligned LR/SC access +long_name: TODO +schema: + type: string + enum: + - always raise misaligned exception + - always raise access fault + - custom +definedBy: + extension: + name: A diff --git a/spec/std/isa/param/LRSC_RESERVATION_STRATEGY.yaml b/spec/std/isa/param/LRSC_RESERVATION_STRATEGY.yaml new file mode 100644 index 0000000000..c81cfde764 --- /dev/null +++ b/spec/std/isa/param/LRSC_RESERVATION_STRATEGY.yaml @@ -0,0 +1,26 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: LRSC_RESERVATION_STRATEGY +description: | + Strategy used to handle reservation sets. + + * "reserve naturally-aligned 64-byte region": Always reserve the 64-byte block containing the LR/SC address + * "reserve naturally-aligned 128-byte region": Always reserve the 128-byte block containing the LR/SC address + * "reserve exactly enough to cover the access": Always reserve exactly the LR/SC access, and no more + * "custom": Custom behavior, leading to an 'unpredictable' call on any LR/SC +long_name: TODO +schema: + type: string + enum: + - reserve naturally-aligned 64-byte region + - reserve naturally-aligned 128-byte region + - reserve exactly enough to cover the access + - custom +definedBy: + extension: + name: A diff --git a/spec/std/isa/param/MARCHID_IMPLEMENTED.yaml b/spec/std/isa/param/MARCHID_IMPLEMENTED.yaml new file mode 100644 index 0000000000..7108240012 --- /dev/null +++ b/spec/std/isa/param/MARCHID_IMPLEMENTED.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MARCHID_IMPLEMENTED +long_name: Whether or not the `marchid` CSR is implemented. +definedBy: + extension: + name: Sm +description: | + * false: `marchid` is not implemented, and must be read-only-0 + * true: `marchid` is implemented, and the value is determined by `ARCH_ID_VALUE` +schema: + type: boolean diff --git a/spec/std/isa/param/MCID_WIDTH.yaml b/spec/std/isa/param/MCID_WIDTH.yaml new file mode 100644 index 0000000000..2962941b28 --- /dev/null +++ b/spec/std/isa/param/MCID_WIDTH.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MCID_WIDTH +description: | + Number of bits used for the Monitoring Counter ID field (MCID). + Default is 12. +long_name: TODO +schema: + type: integer + minimum: 1 + maximum: 12 +definedBy: + extension: + name: Ssqosid diff --git a/spec/std/isa/param/MCONTEXT_AVAILABLE.yaml b/spec/std/isa/param/MCONTEXT_AVAILABLE.yaml new file mode 100644 index 0000000000..29a642faee --- /dev/null +++ b/spec/std/isa/param/MCONTEXT_AVAILABLE.yaml @@ -0,0 +1,16 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MCONTEXT_AVAILABLE +description: | + Specifies if MCONTEXT is available +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Sdtrig diff --git a/spec/std/isa/param/MCOUNTENABLE_EN.yaml b/spec/std/isa/param/MCOUNTENABLE_EN.yaml new file mode 100644 index 0000000000..263e8ec190 --- /dev/null +++ b/spec/std/isa/param/MCOUNTENABLE_EN.yaml @@ -0,0 +1,32 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MCOUNTENABLE_EN +description: | + Indicates which counters can be delegated via `mcounteren`. + + An unimplemented counter cannot be specified, i.e., if + HPM_COUNTER_EN[3] is false, it would be illegal to set + MCOUNTENABLE_EN[3] to true. + + MCOUNTENABLE_EN[0:2] must all be false if `Zicntr` is not implemented. + MCOUNTENABLE_EN[3:31] must all be false if `Zihpm` is not implemented. +long_name: TODO +schema: + type: array + items: + type: boolean + maxItems: 32 + minItems: 32 +definedBy: + extension: + name: U +requirements: + idl(): | + for (U32 i=3; i < 32; i++) { + MCOUNTENABLE_EN[i] -> !implemented?(ExtensionName::Smhpm) || HPM_COUNTER_EN[i]; + } diff --git a/spec/std/isa/param/MIMPID_IMPLEMENTED.yaml b/spec/std/isa/param/MIMPID_IMPLEMENTED.yaml new file mode 100644 index 0000000000..bb4ba0a369 --- /dev/null +++ b/spec/std/isa/param/MIMPID_IMPLEMENTED.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MIMPID_IMPLEMENTED +long_name: Whether or not the `mimpid` CSR is implemented. +definedBy: + extension: + name: Sm +description: | + * false: `mimpid` is not implemented, and must be read-only-0 + * true: `mimpid` is implemented, and the value is determined by `IMP_ID_VALUE` +schema: + type: boolean diff --git a/spec/std/isa/param/MISALIGNED_AMO.yaml b/spec/std/isa/param/MISALIGNED_AMO.yaml new file mode 100644 index 0000000000..6e1798e14c --- /dev/null +++ b/spec/std/isa/param/MISALIGNED_AMO.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MISALIGNED_AMO +description: + "whether or not the implementation supports misaligned atomics in main + memory + + " +long_name: TODO +schema: + type: boolean +definedBy: + extension: + oneOf: + - name: A + - name: Zaamo diff --git a/spec/std/isa/param/MISALIGNED_LDST.yaml b/spec/std/isa/param/MISALIGNED_LDST.yaml new file mode 100644 index 0000000000..81d10f3f5e --- /dev/null +++ b/spec/std/isa/param/MISALIGNED_LDST.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MISALIGNED_LDST +long_name: Support for misaligned loads and stores to main memory. +definedBy: + extension: + name: Sm +description: | + Does the implementation perform non-atomic misaligned loads and stores to main memory + (does *not* affect misaligned support to device memory)? + If not, the implementation always throws a misaligned exception. +schema: + type: boolean diff --git a/spec/std/isa/param/MISALIGNED_LDST_EXCEPTION_PRIORITY.yaml b/spec/std/isa/param/MISALIGNED_LDST_EXCEPTION_PRIORITY.yaml new file mode 100644 index 0000000000..b99532fd71 --- /dev/null +++ b/spec/std/isa/param/MISALIGNED_LDST_EXCEPTION_PRIORITY.yaml @@ -0,0 +1,39 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MISALIGNED_LDST_EXCEPTION_PRIORITY +long_name: | + The relative priority of a load/store/AMO exception vs. load/store/AMO page-fault + or access-fault exceptions. +definedBy: + extension: + name: Sm +description: | + The relative priority of a load/store/AMO exception vs. load/store/AMO page-fault + or access-fault exceptions. + + May be one of: + + [separator="!"] + !=== + ! low ! Misaligned load/store/AMO exceptions are always lower priority than load/store/AMO page-fault and access-fault exceptions. + ! high ! Misaligned load/store/AMO exceptions are always higher priority than load/store/AMO page-fault and access-fault exceptions. + !=== + + MISALIGNED_LDST_EXCEPTION_PRIORITY cannot be "high" when MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE + is non-zero, since the atomicity of an access cannot be determined in that case until after + address translation. +schema: + type: string + enum: ["low", "high"] +requirements: + idl(): | + (MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE > 1) -> (MISALIGNED_LDST_EXCEPTION_PRIORITY == "low"); + reason: + MISALIGNED_LDST_EXCEPTION_PRIORITY cannot be "high" when MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE + is non-zero, since the atomicity of an access cannot be determined in that case until after + address translation. diff --git a/spec/std/isa/param/MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE.yaml b/spec/std/isa/param/MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE.yaml new file mode 100644 index 0000000000..9d2f9e8a73 --- /dev/null +++ b/spec/std/isa/param/MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE.yaml @@ -0,0 +1,40 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE +long_name: | + The maximum granule size, in bytes, that the hart can atomically perform a + misaligned load/store/AMO without raising a Misaligned exception +definedBy: + allOf: + - extension: + name: Sm + - param: + name: MISALIGNED_LDST + equal: true + reason: Granule size is only relevant when misaligned load/stores might execute without an exception. +description: | + When MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE is 0, the hart + cannot atomically perform a misaligned load/store/AMO. When a power of two, the hart can + atomically load/store/AMO a misaligned access that is fully contained in a + MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE-aligned region. + + [NOTE] + Even if the hart is capable of performing a misaligned load/store/AMO atomically, + a misaligned exception may still occur if the access does not have the appropriate + Misaligned Atomicity Granule PMA set. +schema: + type: integer + # can't be larger than a page, since there is no way to reconcile that with virtual memory + enum: [0, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096] +requirements: + idl(): | + (MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE > 1) -> (MISALIGNED_LDST_EXCEPTION_PRIORITY == "low"); + reason: + MISALIGNED_LDST_EXCEPTION_PRIORITY cannot be "high" when MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE + is non-zero, since the atomicity of an access cannot be determined in that case until after + address translation. diff --git a/spec/std/isa/param/MISALIGNED_SPLIT_STRATEGY.yaml b/spec/std/isa/param/MISALIGNED_SPLIT_STRATEGY.yaml new file mode 100644 index 0000000000..93a38af3c8 --- /dev/null +++ b/spec/std/isa/param/MISALIGNED_SPLIT_STRATEGY.yaml @@ -0,0 +1,29 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MISALIGNED_SPLIT_STRATEGY +long_name: | + The *order* the implementation appears + to process a non-atomic misaligned load/store, which determines how/which + exceptions will be reported. +definedBy: + allOf: + - extension: + name: Sm + - param: + name: MISALIGNED_LDST + equal: true + reason: Granule size is only relevant when misaligned load/stores might execute without an exception. +description: | + Options: + + * sequential_bytes: The load/store appears to be broken into byte-sized accesses that processed sequentially from smallest address to largest address + * custom: Something else. Will result in a call to unpredictable() in the execution + +schema: + type: string + enum: [sequential_bytes, custom] diff --git a/spec/std/isa/param/MISA_CSR_IMPLEMENTED.yaml b/spec/std/isa/param/MISA_CSR_IMPLEMENTED.yaml new file mode 100644 index 0000000000..eb0eae6fa2 --- /dev/null +++ b/spec/std/isa/param/MISA_CSR_IMPLEMENTED.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MISA_CSR_IMPLEMENTED +long_name: | + Whether or not the `misa` CSR is implemented +definedBy: + extension: + name: Sm +description: | + Options: + + true:: + The `misa` CSR returns a non-zero value. + + false:: + The `misa` CSR is read-only-0. +schema: + type: boolean diff --git a/spec/std/isa/param/MOCK_1_BIT_INT.yaml b/spec/std/isa/param/MOCK_1_BIT_INT.yaml new file mode 100644 index 0000000000..6217f54cd7 --- /dev/null +++ b/spec/std/isa/param/MOCK_1_BIT_INT.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_1_BIT_INT +description: foo +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 1 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_25_BIT_INT.yaml b/spec/std/isa/param/MOCK_25_BIT_INT.yaml new file mode 100644 index 0000000000..86e725820e --- /dev/null +++ b/spec/std/isa/param/MOCK_25_BIT_INT.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_25_BIT_INT +description: foo +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 33554431 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_2_BIT_INT.yaml b/spec/std/isa/param/MOCK_2_BIT_INT.yaml new file mode 100644 index 0000000000..01f6812837 --- /dev/null +++ b/spec/std/isa/param/MOCK_2_BIT_INT.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_2_BIT_INT +description: foo +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 3 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_32_BIT_INT.yaml b/spec/std/isa/param/MOCK_32_BIT_INT.yaml new file mode 100644 index 0000000000..396803f060 --- /dev/null +++ b/spec/std/isa/param/MOCK_32_BIT_INT.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_32_BIT_INT +description: foo +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 4294967295 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_64_BIT_INT.yaml b/spec/std/isa/param/MOCK_64_BIT_INT.yaml new file mode 100644 index 0000000000..362def817e --- /dev/null +++ b/spec/std/isa/param/MOCK_64_BIT_INT.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_64_BIT_INT +description: foo +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 18446744073709551615 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_ARRAY_BOOL_ARRAY_OF_8_FIRST_2_FALSE.yaml b/spec/std/isa/param/MOCK_ARRAY_BOOL_ARRAY_OF_8_FIRST_2_FALSE.yaml new file mode 100644 index 0000000000..0395b1fe9b --- /dev/null +++ b/spec/std/isa/param/MOCK_ARRAY_BOOL_ARRAY_OF_8_FIRST_2_FALSE.yaml @@ -0,0 +1,22 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_ARRAY_BOOL_ARRAY_OF_8_FIRST_2_FALSE +description: foo +long_name: TODO +schema: + type: array + items: + - const: false + - const: false + additionalItems: + type: boolean + maxItems: 8 + minItems: 8 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_ARRAY_INT_ENUM.yaml b/spec/std/isa/param/MOCK_ARRAY_INT_ENUM.yaml new file mode 100644 index 0000000000..f44435892d --- /dev/null +++ b/spec/std/isa/param/MOCK_ARRAY_INT_ENUM.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_ARRAY_INT_ENUM +description: foo +long_name: TODO +schema: + type: array + items: + type: integer + enum: + - 0 + - 1 + minItems: 1 + maxItems: 2 + uniqueItems: true +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_ARRAY_MAX_ONLY.yaml b/spec/std/isa/param/MOCK_ARRAY_MAX_ONLY.yaml new file mode 100644 index 0000000000..7c186dac1d --- /dev/null +++ b/spec/std/isa/param/MOCK_ARRAY_MAX_ONLY.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_ARRAY_MAX_ONLY +description: foo +long_name: TODO +schema: + type: array + items: + type: integer + enum: + - 0 + - 1 + maxItems: 10 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_ARRAY_MIN_ONLY.yaml b/spec/std/isa/param/MOCK_ARRAY_MIN_ONLY.yaml new file mode 100644 index 0000000000..d5240a952a --- /dev/null +++ b/spec/std/isa/param/MOCK_ARRAY_MIN_ONLY.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_ARRAY_MIN_ONLY +description: foo +long_name: TODO +schema: + type: array + items: + type: integer + enum: + - 0 + - 1 + minItems: 3 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM1.yaml b/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM1.yaml new file mode 100644 index 0000000000..f1ecb74734 --- /dev/null +++ b/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM1.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_ARRAY_STRING_ENUM1 +description: foo +long_name: TODO +schema: + type: array + items: + type: string + enum: + - ABC + - DEF + - GHI +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM2.yaml b/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM2.yaml new file mode 100644 index 0000000000..2a47a141f7 --- /dev/null +++ b/spec/std/isa/param/MOCK_ARRAY_STRING_ENUM2.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_ARRAY_STRING_ENUM2 +description: foo +long_name: TODO +schema: + type: array + items: + type: string + enum: + - ABC + - DEF + - GHI +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_BOOL_1.yaml b/spec/std/isa/param/MOCK_BOOL_1.yaml new file mode 100644 index 0000000000..643841033e --- /dev/null +++ b/spec/std/isa/param/MOCK_BOOL_1.yaml @@ -0,0 +1,15 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_BOOL_1 +description: foo +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_BOOL_2.yaml b/spec/std/isa/param/MOCK_BOOL_2.yaml new file mode 100644 index 0000000000..aefa401f59 --- /dev/null +++ b/spec/std/isa/param/MOCK_BOOL_2.yaml @@ -0,0 +1,15 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_BOOL_2 +description: foo +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_ENUM_2_INTS.yaml b/spec/std/isa/param/MOCK_ENUM_2_INTS.yaml new file mode 100644 index 0000000000..2dab96e95f --- /dev/null +++ b/spec/std/isa/param/MOCK_ENUM_2_INTS.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_ENUM_2_INTS +description: foo +long_name: TODO +schema: + type: integer + enum: + - 32 + - 64 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_ENUM_2_STRINGS.yaml b/spec/std/isa/param/MOCK_ENUM_2_STRINGS.yaml new file mode 100644 index 0000000000..e1cf5c6646 --- /dev/null +++ b/spec/std/isa/param/MOCK_ENUM_2_STRINGS.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_ENUM_2_STRINGS +description: foo +long_name: TODO +schema: + type: string + enum: + - low + - high +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_INT_RANGE_0_TO_1023.yaml b/spec/std/isa/param/MOCK_INT_RANGE_0_TO_1023.yaml new file mode 100644 index 0000000000..ad85a12217 --- /dev/null +++ b/spec/std/isa/param/MOCK_INT_RANGE_0_TO_1023.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_INT_RANGE_0_TO_1023 +description: foo +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 1023 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_INT_RANGE_0_TO_127.yaml b/spec/std/isa/param/MOCK_INT_RANGE_0_TO_127.yaml new file mode 100644 index 0000000000..2eb746c55b --- /dev/null +++ b/spec/std/isa/param/MOCK_INT_RANGE_0_TO_127.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_INT_RANGE_0_TO_127 +description: foo +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 127 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_INT_RANGE_0_TO_128.yaml b/spec/std/isa/param/MOCK_INT_RANGE_0_TO_128.yaml new file mode 100644 index 0000000000..a8dd7065a1 --- /dev/null +++ b/spec/std/isa/param/MOCK_INT_RANGE_0_TO_128.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_INT_RANGE_0_TO_128 +description: foo +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 128 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_INT_RANGE_0_TO_2.yaml b/spec/std/isa/param/MOCK_INT_RANGE_0_TO_2.yaml new file mode 100644 index 0000000000..af72ce60d2 --- /dev/null +++ b/spec/std/isa/param/MOCK_INT_RANGE_0_TO_2.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_INT_RANGE_0_TO_2 +description: foo +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 2 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_INT_RANGE_0_TO_999.yaml b/spec/std/isa/param/MOCK_INT_RANGE_0_TO_999.yaml new file mode 100644 index 0000000000..b3fb565405 --- /dev/null +++ b/spec/std/isa/param/MOCK_INT_RANGE_0_TO_999.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_INT_RANGE_0_TO_999 +description: foo +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 999 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_INT_RANGE_1000_TO_2048.yaml b/spec/std/isa/param/MOCK_INT_RANGE_1000_TO_2048.yaml new file mode 100644 index 0000000000..00bb16b750 --- /dev/null +++ b/spec/std/isa/param/MOCK_INT_RANGE_1000_TO_2048.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_INT_RANGE_1000_TO_2048 +description: foo +long_name: TODO +schema: + type: integer + minimum: 1000 + maximum: 2048 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MOCK_INT_RANGE_1_TO_128.yaml b/spec/std/isa/param/MOCK_INT_RANGE_1_TO_128.yaml new file mode 100644 index 0000000000..c4a7d089ce --- /dev/null +++ b/spec/std/isa/param/MOCK_INT_RANGE_1_TO_128.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MOCK_INT_RANGE_1_TO_128 +description: foo +long_name: TODO +schema: + type: integer + minimum: 1 + maximum: 128 +definedBy: + extension: + name: Xmock diff --git a/spec/std/isa/param/MSTATEEN_AIA_TYPE.yaml b/spec/std/isa/param/MSTATEEN_AIA_TYPE.yaml new file mode 100644 index 0000000000..17e42eb5fd --- /dev/null +++ b/spec/std/isa/param/MSTATEEN_AIA_TYPE.yaml @@ -0,0 +1,27 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MSTATEEN_AIA_TYPE +description: | + Behavior of the mstateen0.AIA bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +definedBy: + extension: + allOf: + - name: Ssaia + - name: Smstateen + version: "~> 1.0" diff --git a/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml b/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml new file mode 100644 index 0000000000..01c924bdd4 --- /dev/null +++ b/spec/std/isa/param/MSTATEEN_CONTEXT_TYPE.yaml @@ -0,0 +1,26 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MSTATEEN_CONTEXT_TYPE +description: | + Behavior of the mstateen0.CONTEXT bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +definedBy: + extension: + allOf: + - name: Sdtrig + - name: Smstateen diff --git a/spec/std/isa/param/MSTATEEN_CSRIND_TYPE.yaml b/spec/std/isa/param/MSTATEEN_CSRIND_TYPE.yaml new file mode 100644 index 0000000000..818f849093 --- /dev/null +++ b/spec/std/isa/param/MSTATEEN_CSRIND_TYPE.yaml @@ -0,0 +1,26 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MSTATEEN_CSRIND_TYPE +description: | + Behavior of the mstateen0.CSRIND bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +definedBy: + extension: + allOf: + - name: Sscsrind + - name: Smstateen diff --git a/spec/std/isa/param/MSTATEEN_ENVCFG_TYPE.yaml b/spec/std/isa/param/MSTATEEN_ENVCFG_TYPE.yaml new file mode 100644 index 0000000000..4545dc7603 --- /dev/null +++ b/spec/std/isa/param/MSTATEEN_ENVCFG_TYPE.yaml @@ -0,0 +1,26 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MSTATEEN_ENVCFG_TYPE +description: | + Behavior of the mstateen0.ENVCFG bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +definedBy: + extension: + allOf: + - name: S + - name: Smstateen diff --git a/spec/std/isa/param/MSTATEEN_IMSIC_TYPE.yaml b/spec/std/isa/param/MSTATEEN_IMSIC_TYPE.yaml new file mode 100644 index 0000000000..a441f3950b --- /dev/null +++ b/spec/std/isa/param/MSTATEEN_IMSIC_TYPE.yaml @@ -0,0 +1,27 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MSTATEEN_IMSIC_TYPE +description: | + Behavior of the mstateen0.IMSIC bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +definedBy: + extension: + allOf: + - name: Ssaia + - name: Smstateen + version: "~> 1.0" diff --git a/spec/std/isa/param/MSTATEEN_JVT_TYPE.yaml b/spec/std/isa/param/MSTATEEN_JVT_TYPE.yaml new file mode 100644 index 0000000000..cfc41e9c90 --- /dev/null +++ b/spec/std/isa/param/MSTATEEN_JVT_TYPE.yaml @@ -0,0 +1,27 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MSTATEEN_JVT_TYPE +description: | + Behavior of the mstateen0.JVT bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +definedBy: + extension: + allOf: + - name: Zcmt + - name: Smstateen + version: "~> 1.0" diff --git a/spec/std/isa/param/MSTATUS_FS_LEGAL_VALUES.yaml b/spec/std/isa/param/MSTATUS_FS_LEGAL_VALUES.yaml new file mode 100644 index 0000000000..cc535cad15 --- /dev/null +++ b/spec/std/isa/param/MSTATUS_FS_LEGAL_VALUES.yaml @@ -0,0 +1,39 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MSTATUS_FS_LEGAL_VALUES +description: "The set of values that mstatus.FS supports. + + " +long_name: TODO +schema: + type: array + items: + type: integer + enum: + - 0 + - 1 + - 2 + - 3 + maxItems: 4 + minItems: 1 + uniqueItems: true +requirements: + idl(): | + implemented?(ExtensionName::F) && + (HW_MSTATUS_FS_DIRTY_UPDATE == "precise" || + HW_MSTATUS_FS_DIRTY_UPDATE == "imprecise") + -> + $array_includes?(MSTATUS_FS_LEGAL_VALUES, 3); + reason: + If there is a hardware update to mstatus.FS, then the Dirty state must be + supported +definedBy: + extension: + anyOf: + - name: F + - name: S diff --git a/spec/std/isa/param/MSTATUS_TVM_IMPLEMENTED.yaml b/spec/std/isa/param/MSTATUS_TVM_IMPLEMENTED.yaml new file mode 100644 index 0000000000..a68eb2900d --- /dev/null +++ b/spec/std/isa/param/MSTATUS_TVM_IMPLEMENTED.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MSTATUS_TVM_IMPLEMENTED +description: | + Whether or not mstatus.TVM is implemented. + + When not implemented mstatus.TVM will be read-only-zero. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/MSTATUS_VS_LEGAL_VALUES.yaml b/spec/std/isa/param/MSTATUS_VS_LEGAL_VALUES.yaml new file mode 100644 index 0000000000..a18ba5a498 --- /dev/null +++ b/spec/std/isa/param/MSTATUS_VS_LEGAL_VALUES.yaml @@ -0,0 +1,43 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MSTATUS_VS_LEGAL_VALUES +description: The set of values that mstatus.VS will accept from a software write. +long_name: TODO +schema: + type: array + items: + type: integer + enum: + - 0 + - 1 + - 2 + - 3 + minItems: 1 + maxItems: 4 + uniqueItems: true +requirements: + idl(): | + # [RULE] If the v registers are implemented, the VS field shall not be read-only zero. + implemented?(ExtensionName::V) + -> $array_size(MSTATUS_VS_LEGAL_VALUES) > 1; + + # [RULE] If there is a hardware update to mstatus.VS, then the Dirty state must be supported + implemented?(ExtensionName::V) && + (HW_MSTATUS_VS_DIRTY_UPDATE == "precise" || HW_MSTATUS_VS_DIRTY_UPDATE == "imprecise") + -> $array_includes?(MSTATUS_VS_LEGAL_VALUES, 0) && + $array_includes?(MSTATUS_VS_LEGAL_VALUES, 3); + + reason: | + If V is supported, both Off (0) and Dirty (3) must be supported + + If there is a hardware update to mstatus.VS, then the Dirty state must be supported +definedBy: + extension: + anyOf: + - name: V + - name: S diff --git a/spec/std/isa/param/MTVAL_WIDTH.yaml b/spec/std/isa/param/MTVAL_WIDTH.yaml new file mode 100644 index 0000000000..e85cfc0471 --- /dev/null +++ b/spec/std/isa/param/MTVAL_WIDTH.yaml @@ -0,0 +1,99 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MTVAL_WIDTH +long_name: | + Width of the `mtval` CSR +definedBy: + extension: + name: Sm +description: | + The number of implemented bits in the `mtval` CSR. + This is the CSR that may be written when a trap is taken into M-mode with exception-specific information to + assist software in handling the trap (e.g., address associated with exception). + + Must be greater than or equal to _max_(`PHYS_ADDR_WIDTH`, `VA_SIZE`) + +schema: + oneOf: + - when: + param: + name: MXLEN + equal: 32 + schema: + type: integer + minimum: 0 + maximum: 32 + - when: + param: + name: MXLEN + equal: 64 + schema: + type: integer + minimum: 0 + maximum: 64 + +requirements: + idl(): | + # in RV32, MTVAL must be able to hold a physical address if M-mode takes an exception + # that reports an address + # Since phyiscal address width can be larger than 32 with Sv32, need to downsize MTVAL in that case + ( + MXLEN == 32 && + PHYS_ADDR_WIDTH > 32 && + ( + implemented?(ExtensionName::Sdext) || + REPORT_VA_IN_MTVAL_ON_BREAKPOINT || + REPORT_VA_IN_MTVAL_ON_ILLEGAL_INSTRUCTION || + REPORT_VA_IN_MTVAL_ON_LOAD_MISALIGNED || + REPORT_VA_IN_MTVAL_ON_STORE_AMO_MISALIGNED || + REPORT_VA_IN_MTVAL_ON_INSTRUCTION_MISALIGNED || + REPORT_VA_IN_MTVAL_ON_LOAD_ACCESS_FAULT || + REPORT_VA_IN_MTVAL_ON_STORE_AMO_ACCESS_FAULT || + REPORT_VA_IN_MTVAL_ON_INSTRUCTION_ACCESS_FAULT + ) + ) -> (MTVAL_WIDTH == 32); + + ( + ( + MXLEN == 64 || + ( + MXLEN == 32 && + PHYS_ADDR_WIDTH <= 32 + ) + ) && + ( + implemented?(ExtensionName::Sdext) || + REPORT_VA_IN_MTVAL_ON_BREAKPOINT || + REPORT_VA_IN_MTVAL_ON_ILLEGAL_INSTRUCTION || + REPORT_VA_IN_MTVAL_ON_LOAD_MISALIGNED || + REPORT_VA_IN_MTVAL_ON_STORE_AMO_MISALIGNED || + REPORT_VA_IN_MTVAL_ON_INSTRUCTION_MISALIGNED || + REPORT_VA_IN_MTVAL_ON_LOAD_ACCESS_FAULT || + REPORT_VA_IN_MTVAL_ON_STORE_AMO_ACCESS_FAULT || + REPORT_VA_IN_MTVAL_ON_INSTRUCTION_ACCESS_FAULT + ) + ) -> (MTVAL_WIDTH >= PHYS_ADDR_WIDTH); + + ( + implemented?(ExtensionName::S) && + ( + implemented?(ExtensionName::Sdext) || + REPORT_VA_IN_MTVAL_ON_BREAKPOINT || + REPORT_VA_IN_MTVAL_ON_ILLEGAL_INSTRUCTION || + REPORT_VA_IN_MTVAL_ON_LOAD_MISALIGNED || + REPORT_VA_IN_MTVAL_ON_STORE_AMO_MISALIGNED || + REPORT_VA_IN_MTVAL_ON_INSTRUCTION_MISALIGNED || + REPORT_VA_IN_MTVAL_ON_LOAD_ACCESS_FAULT || + REPORT_VA_IN_MTVAL_ON_STORE_AMO_ACCESS_FAULT || + REPORT_VA_IN_MTVAL_ON_INSTRUCTION_ACCESS_FAULT + ) + ) -> (MTVAL_WIDTH >= max_va_size()); + + REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION -> (MTVAL_WIDTH >= INSTR_ENC_SIZE); + reason: | + `mtval` must be able to hold physical and/or virtual addresses diff --git a/spec/std/isa/param/MTVEC_ACCESS.yaml b/spec/std/isa/param/MTVEC_ACCESS.yaml new file mode 100644 index 0000000000..1225128021 --- /dev/null +++ b/spec/std/isa/param/MTVEC_ACCESS.yaml @@ -0,0 +1,24 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MTVEC_ACCESS +long_name: | + Acess type of the `mtvec` CSR (read-only or read-write). +definedBy: + extension: + name: Sm +description: | + Options: + + read-only:: + `mtvec` is read-only. + + read-write:: + `mtvec` is read-write, but may not accept all values. +schema: + type: string + enum: ["read-only", "read-write"] diff --git a/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml b/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml new file mode 100644 index 0000000000..17be54f0f9 --- /dev/null +++ b/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_DIRECT.yaml @@ -0,0 +1,137 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MTVEC_BASE_ALIGNMENT_DIRECT +long_name: | + Minumum alignment of `mtvec.BASE` when `mtvec.MODE` is 0 (direct) +definedBy: + allOf: + - extension: + name: Sm + - param: + allOf: + - name: MTVEC_MODES + includes: 0 + reason: Only relevant when direct mode is supported + - name: MTVEC_ACCESS + equal: read-write + reason: Base address is hard-coded when MTVEC_ACCESS is read-only +description: | + Minimum alignement of the base pointer. Because `mtvec` excludes the two least-significant bits of + the base, the minimum alignment cannot be less than 4. +schema: + oneOf: + - when: + param: + name: MXLEN + equal: 32 + schema: + description: An unsigned power of 2 greater than or equal to 4 that fits in 32 bits + enum: + [ + 4, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024, + 2048, + 4095, + 8192, + 16384, + 32768, + 65536, + 131072, + 262144, + 524288, + 1048576, + 2097152, + 4194304, + 8388608, + 16777216, + 33554432, + 67108864, + 134217728, + 268435456, + 536870912, + 1073741824, + 2147483648, + ] + - when: + param: + name: MXLEN + equal: 64 + schema: + description: An unsigned power of 2 greater than or equal to 4 that fits in 64 bits + enum: + [ + 4, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024, + 2048, + 4095, + 8192, + 16384, + 32768, + 65536, + 131072, + 262144, + 524288, + 1048576, + 2097152, + 4194304, + 8388608, + 16777216, + 33554432, + 67108864, + 134217728, + 268435456, + 536870912, + 1073741824, + 2147483648, + 4294967296, + 8589934592, + 17179869184, + 34359738368, + 68719476736, + 137438953472, + 274877906944, + 549755813888, + 1099511627776, + 2199023255552, + 4398046511104, + 8796093022208, + 17592186044416, + 35184372088832, + 70368744177664, + 140737488355328, + 281474976710656, + 562949953421312, + 1125899906842624, + 2251799813685248, + 4503599627370496, + 9007199254740992, + 18014398509481984, + 36028797018963968, + 72057594037927936, + 144115188075855872, + 288230376151711744, + 576460752303423488, + 1152921504606846976, + 2305843009213693952, + 4611686018427387904, + 9223372036854775808, + ] diff --git a/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml b/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml new file mode 100644 index 0000000000..8b7aefdf16 --- /dev/null +++ b/spec/std/isa/param/MTVEC_BASE_ALIGNMENT_VECTORED.yaml @@ -0,0 +1,137 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MTVEC_BASE_ALIGNMENT_VECTORED +long_name: | + Minumum alignment of `mtvec.BASE` when `mtvec.MODE` is 1 (vectored) +definedBy: + allOf: + - extension: + name: Sm + - param: + allOf: + - name: MTVEC_MODES + includes: 1 + reason: Only relevant when vectored mode is supported + - name: MTVEC_ACCESS + equal: read-write + reason: Base address is hard-coded when MTVEC_ACCESS is read-only +description: | + Because `mtvec` excludes the two least-significant bits of + the base, the minimum alignment cannot be less than 4. +schema: + oneOf: + - when: + param: + name: MXLEN + equal: 32 + schema: + description: An unsigned power of 2 greater than or equal to 4 that fits in 32 bits + enum: + [ + 4, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024, + 2048, + 4095, + 8192, + 16384, + 32768, + 65536, + 131072, + 262144, + 524288, + 1048576, + 2097152, + 4194304, + 8388608, + 16777216, + 33554432, + 67108864, + 134217728, + 268435456, + 536870912, + 1073741824, + 2147483648, + ] + - when: + param: + name: MXLEN + equal: 64 + schema: + description: An unsigned power of 2 greater than or equal to 4 that fits in 64 bits + enum: + [ + 4, + 8, + 16, + 32, + 64, + 128, + 256, + 512, + 1024, + 2048, + 4095, + 8192, + 16384, + 32768, + 65536, + 131072, + 262144, + 524288, + 1048576, + 2097152, + 4194304, + 8388608, + 16777216, + 33554432, + 67108864, + 134217728, + 268435456, + 536870912, + 1073741824, + 2147483648, + 4294967296, + 8589934592, + 17179869184, + 34359738368, + 68719476736, + 137438953472, + 274877906944, + 549755813888, + 1099511627776, + 2199023255552, + 4398046511104, + 8796093022208, + 17592186044416, + 35184372088832, + 70368744177664, + 140737488355328, + 281474976710656, + 562949953421312, + 1125899906842624, + 2251799813685248, + 4503599627370496, + 9007199254740992, + 18014398509481984, + 36028797018963968, + 72057594037927936, + 144115188075855872, + 288230376151711744, + 576460752303423488, + 1152921504606846976, + 2305843009213693952, + 4611686018427387904, + 9223372036854775808, + ] diff --git a/spec/std/isa/param/MTVEC_ILLEGAL_WRITE_BEHAVIOR.yaml b/spec/std/isa/param/MTVEC_ILLEGAL_WRITE_BEHAVIOR.yaml new file mode 100644 index 0000000000..7cc162e80b --- /dev/null +++ b/spec/std/isa/param/MTVEC_ILLEGAL_WRITE_BEHAVIOR.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MTVEC_ILLEGAL_WRITE_BEHAVIOR +long_name: | + What happens when `mtvec` is written with an illegal value +definedBy: + extension: + name: Sm +description: | + Options: + + retain:: + When either `mtvec.MODE` or `mtvec.BASE` is illegal, `mtvec` will retain its curent value + + custom:: + When either `mtvec.MODE` or `mtvec.BASE` is illegal, `mtvec` will obtain an unpredictable value + + Other values may be added over time once other common behaviors are identified. +schema: + enum: [retain, custom] diff --git a/spec/std/isa/param/MTVEC_MODES.yaml b/spec/std/isa/param/MTVEC_MODES.yaml new file mode 100644 index 0000000000..2323952525 --- /dev/null +++ b/spec/std/isa/param/MTVEC_MODES.yaml @@ -0,0 +1,35 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MTVEC_MODES +long_name: | + Modes supported by `mtvec.MODE` +definedBy: + extension: + name: Sm +description: | + Options: + + 0:: + Direct; All traps set `pc` to `mtvec.BASE` + 1:: + Vectored; Asynchronous interrupts set `pc` to `mtvec.BASE` + 4 x cause. + + If only one mode is given, `mtvec.MODE` is assumed to be read-only with that value. + Otherwise, `mtvec.MODE` is read-write. +schema: + type: array + items: + type: integer + enum: [0, 1] + minItems: 1 + maxItems: 2 + uniqueItems: true +requirements: + idl(): | + (MTVEC_ACCESS == "read-only") -> ($array_size(MTVEC_MODES) == 1); + reason: If `mtvec` is read-only, the mode cannot be changed. diff --git a/spec/std/isa/param/MUTABLE_MISA_A.yaml b/spec/std/isa/param/MUTABLE_MISA_A.yaml new file mode 100644 index 0000000000..c1d7358d4d --- /dev/null +++ b/spec/std/isa/param/MUTABLE_MISA_A.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MUTABLE_MISA_A +description: | + When the `A` extensions is supported, indicates whether or not + the extension can be disabled in the `misa.A` bit. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: A diff --git a/spec/std/isa/param/MUTABLE_MISA_B.yaml b/spec/std/isa/param/MUTABLE_MISA_B.yaml new file mode 100644 index 0000000000..7900d63c6d --- /dev/null +++ b/spec/std/isa/param/MUTABLE_MISA_B.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MUTABLE_MISA_B +description: + "Indicates whether or not the `B` extension can be disabled with the + `misa.B` bit. + + " +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: B diff --git a/spec/std/isa/param/MUTABLE_MISA_C.yaml b/spec/std/isa/param/MUTABLE_MISA_C.yaml new file mode 100644 index 0000000000..abfbabb467 --- /dev/null +++ b/spec/std/isa/param/MUTABLE_MISA_C.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MUTABLE_MISA_C +description: + "Indicates whether or not the `C` extension can be disabled with the + `misa.C` bit. + + " +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: C diff --git a/spec/std/isa/param/MUTABLE_MISA_D.yaml b/spec/std/isa/param/MUTABLE_MISA_D.yaml new file mode 100644 index 0000000000..27e4962862 --- /dev/null +++ b/spec/std/isa/param/MUTABLE_MISA_D.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MUTABLE_MISA_D +description: + "Indicates whether or not the `D` extension can be disabled with the + `misa.D` bit. + + " +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: D diff --git a/spec/std/isa/param/MUTABLE_MISA_F.yaml b/spec/std/isa/param/MUTABLE_MISA_F.yaml new file mode 100644 index 0000000000..6233c60d5c --- /dev/null +++ b/spec/std/isa/param/MUTABLE_MISA_F.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MUTABLE_MISA_F +description: + "Indicates whether or not the `F` extension can be disabled with the + `misa.F` bit. + + " +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: F diff --git a/spec/std/isa/param/MUTABLE_MISA_H.yaml b/spec/std/isa/param/MUTABLE_MISA_H.yaml new file mode 100644 index 0000000000..413547817c --- /dev/null +++ b/spec/std/isa/param/MUTABLE_MISA_H.yaml @@ -0,0 +1,24 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MUTABLE_MISA_H +description: + "Indicates whether or not the `H` extension can be disabled with the + `misa.H` bit. + + " +long_name: TODO +schema: + type: boolean +requirements: + idl(): MUTABLE_MISA_S -> MUTABLE_MISA_H; + reason: | + If S mode can be disabled, then H mode must also be disabled since you can't be in H mode + without S mode (and thus MUTABLE_MISA_H is not an option -- it's always true) +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/MUTABLE_MISA_M.yaml b/spec/std/isa/param/MUTABLE_MISA_M.yaml new file mode 100644 index 0000000000..d6855a2c59 --- /dev/null +++ b/spec/std/isa/param/MUTABLE_MISA_M.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MUTABLE_MISA_M +description: + "Indicates whether or not the `M` extension can be disabled with the + `misa.M` bit. + + " +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: M diff --git a/spec/std/isa/param/MUTABLE_MISA_Q.yaml b/spec/std/isa/param/MUTABLE_MISA_Q.yaml new file mode 100644 index 0000000000..effb31cf86 --- /dev/null +++ b/spec/std/isa/param/MUTABLE_MISA_Q.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MUTABLE_MISA_Q +description: + "Indicates whether or not the `Q` extension can be disabled with the + `misa.Q` bit. + + " +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Q diff --git a/spec/std/isa/param/MUTABLE_MISA_S.yaml b/spec/std/isa/param/MUTABLE_MISA_S.yaml new file mode 100644 index 0000000000..e2799b5dd8 --- /dev/null +++ b/spec/std/isa/param/MUTABLE_MISA_S.yaml @@ -0,0 +1,24 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MUTABLE_MISA_S +description: + "Indicates whether or not the `S` extension can be disabled with the + `misa.S` bit. + + " +long_name: TODO +schema: + type: boolean +requirements: + idl(): MUTABLE_MISA_U -> MUTABLE_MISA_S; + reason: + If U-mode can be disabled, then S must also be disabled since S cannot exist + without U (and thus there is no option for MUTABLE_MISA_S). +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/MUTABLE_MISA_U.yaml b/spec/std/isa/param/MUTABLE_MISA_U.yaml new file mode 100644 index 0000000000..11ed838a79 --- /dev/null +++ b/spec/std/isa/param/MUTABLE_MISA_U.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MUTABLE_MISA_U +description: + "Indicates whether or not the `U` extension can be disabled with the + `misa.U` bit. + + " +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: U diff --git a/spec/std/isa/param/MUTABLE_MISA_V.yaml b/spec/std/isa/param/MUTABLE_MISA_V.yaml new file mode 100644 index 0000000000..0289b34577 --- /dev/null +++ b/spec/std/isa/param/MUTABLE_MISA_V.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MUTABLE_MISA_V +description: + "Indicates whether or not the `V` extension can be disabled with the + `misa.V` bit. + + " +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: V diff --git a/spec/std/isa/param/MXLEN.yaml b/spec/std/isa/param/MXLEN.yaml new file mode 100644 index 0000000000..ebb4d56172 --- /dev/null +++ b/spec/std/isa/param/MXLEN.yaml @@ -0,0 +1,16 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MXLEN +long_name: XLEN in machine mode +definedBy: + extension: + name: Sm +description: XLEN in machine mode, specified in bits +schema: + type: integer + enum: [32, 64] diff --git a/spec/std/isa/param/M_MODE_ENDIANNESS.yaml b/spec/std/isa/param/M_MODE_ENDIANNESS.yaml new file mode 100644 index 0000000000..c85dc3321c --- /dev/null +++ b/spec/std/isa/param/M_MODE_ENDIANNESS.yaml @@ -0,0 +1,26 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: M_MODE_ENDIANNESS +long_name: | + Endianness of data in M-mode +definedBy: + extension: + name: Sm +description: | + Options: + + [separator="!"] + !=== + h! little ! M-mode data is always little endian + h! big ! M-mode data is always big endian + h! dynamic ! M-mode data can be either little or big endian, + depending on the CSR field `mstatus.MBE` + !=== +schema: + type: string + enum: [little, big, dynamic] diff --git a/spec/std/isa/param/NUM_EXTERNAL_GUEST_INTERRUPTS.yaml b/spec/std/isa/param/NUM_EXTERNAL_GUEST_INTERRUPTS.yaml new file mode 100644 index 0000000000..188008ce54 --- /dev/null +++ b/spec/std/isa/param/NUM_EXTERNAL_GUEST_INTERRUPTS.yaml @@ -0,0 +1,34 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: NUM_EXTERNAL_GUEST_INTERRUPTS +description: | + Number of supported virtualized guest interrupts + + Corresponds to the `GEILEN` parameter in the RVI specs +long_name: TODO +schema: + oneOf: + - when: + param: + name: MXLEN + equal: 32 + schema: + type: integer + minimum: 1 + maximum: 31 + - when: + param: + name: MXLEN + equal: 64 + schema: + type: integer + minimum: 1 + maximum: 63 +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/NUM_PMP_ENTRIES.yaml b/spec/std/isa/param/NUM_PMP_ENTRIES.yaml new file mode 100644 index 0000000000..97624bab68 --- /dev/null +++ b/spec/std/isa/param/NUM_PMP_ENTRIES.yaml @@ -0,0 +1,42 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: NUM_PMP_ENTRIES +description: | + Number of implemented PMP entries. Can be any value between 0-64, inclusive. + + The architecture mandates that the number of implemented PMP registers + must appear to be 0, 16, or 64. + + Therefore, pmp registers will behave as follows according to NUN_PMP_ENTRIES: + + [separator="!"] + !=== + ! NUM_PMP_ENTRIES ! pmpaddr<0-15> / pmpcfg<0-3> ! pmpaddr<16-63> / pmpcfg<4-15> + ! 0 ! N ! N + ! 1-16 ! Y ! N + ! 17-64 ! Y ! Y + !=== + + ** N = Not implemented; access will cause `IllegalInstruction` + if TRAP_ON_UNIMPLEMENTED_CSR is true + ** Y = Implemented; access will not cause an exception (from M-mode), but register + may be read-only-zero if NUM_PMP_ENTRIES is less than the corresponding register + + [NOTE] + `pmpcfgN` for an odd N never exists when XLEN == 64 + + When NUM_PMP_ENTRIES is not exactly 0, 16, or 64, some extant pmp registers, + and associated pmpNcfg, will be read-only zero (but will never cause an exception). +long_name: TODO +schema: + type: integer + minimum: 0 + maximum: 64 +definedBy: + extension: + name: Smpmp diff --git a/spec/std/isa/param/PHYS_ADDR_WIDTH.yaml b/spec/std/isa/param/PHYS_ADDR_WIDTH.yaml new file mode 100644 index 0000000000..6b992dbaf7 --- /dev/null +++ b/spec/std/isa/param/PHYS_ADDR_WIDTH.yaml @@ -0,0 +1,37 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: PHYS_ADDR_WIDTH +long_name: | + Number of bits in a physical address +definedBy: + extension: + name: Sm +description: | + Implementation-defined size of the physical address space. +schema: + oneOf: + - when: + param: + name: MXLEN + equal: 32 + schema: + type: integer + minimum: 1 + maximum: 34 + - when: + param: + name: MXLEN + equal: 64 + schema: + type: integer + minimum: 1 + maximum: 64 +requirements: + idl(): | + (MXLEN == 32) && !implemented?(ExtensionName::Sv32) -> (PHYS_ADDR_WIDTH <= 32); + reason: without Sv32 translation, there is no way to create an address > 32 bits diff --git a/spec/std/isa/param/PMA_GRANULARITY.yaml b/spec/std/isa/param/PMA_GRANULARITY.yaml new file mode 100644 index 0000000000..80a380d9ec --- /dev/null +++ b/spec/std/isa/param/PMA_GRANULARITY.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: PMA_GRANULARITY +long_name: | + log2 of the smallest supported PMA region +definedBy: + extension: + name: Sm +description: | + Generally, for systems with an MMU, should not be smaller than 12, + as that would preclude caching PMA results in the TLB along with + virtual memory translations +schema: + type: integer + minimum: 2 + maximum: 66 diff --git a/spec/std/isa/param/PMLEN.yaml b/spec/std/isa/param/PMLEN.yaml new file mode 100644 index 0000000000..b6119f9e72 --- /dev/null +++ b/spec/std/isa/param/PMLEN.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: PMLEN +description: | + The number of high-order bits of an address that are masked by the + pointer masking facility. +long_name: TODO +schema: + type: integer +definedBy: + extension: + anyOf: + - name: Smmpm + - name: Smnpm + - name: Ssnpm diff --git a/spec/std/isa/param/PMP_GRANULARITY.yaml b/spec/std/isa/param/PMP_GRANULARITY.yaml new file mode 100644 index 0000000000..a1cd9b0435 --- /dev/null +++ b/spec/std/isa/param/PMP_GRANULARITY.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: PMP_GRANULARITY +description: | + log2 of the smallest supported PMP region. + + Generally, for systems with an MMU, should not be smaller than 12, + as that would preclude caching PMP results in the TLB along with + virtual memory translations + + Note that PMP_GRANULARITY is equal to G+2 (not G) as described in + the privileged architecture. +long_name: TODO +schema: + type: integer + minimum: 2 + maximum: 66 +definedBy: + extension: + name: Smpmp diff --git a/spec/std/isa/param/PRECISE_SYNCHRONOUS_EXCEPTIONS.yaml b/spec/std/isa/param/PRECISE_SYNCHRONOUS_EXCEPTIONS.yaml new file mode 100644 index 0000000000..467d2bfd73 --- /dev/null +++ b/spec/std/isa/param/PRECISE_SYNCHRONOUS_EXCEPTIONS.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: PRECISE_SYNCHRONOUS_EXCEPTIONS +long_name: Whether or not all synchronous exceptions are precise. +definedBy: + extension: + name: Sm +description: | + If false, any exception not otherwise mandated to precise (e.g., PMP violation) + will cause execution to enter an unpredictable state. +schema: + type: boolean diff --git a/spec/std/isa/param/RCID_WIDTH.yaml b/spec/std/isa/param/RCID_WIDTH.yaml new file mode 100644 index 0000000000..d5f0a0331b --- /dev/null +++ b/spec/std/isa/param/RCID_WIDTH.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: RCID_WIDTH +description: | + Number of bits used for the Resource Control ID field (RCID). + Default is 12. +long_name: TODO +schema: + type: integer + minimum: 1 + maximum: 12 +definedBy: + extension: + name: Ssqosid diff --git a/spec/std/isa/param/REPORT_CAUSE_IN_MTVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml b/spec/std/isa/param/REPORT_CAUSE_IN_MTVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml new file mode 100644 index 0000000000..8d192c3d25 --- /dev/null +++ b/spec/std/isa/param/REPORT_CAUSE_IN_MTVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_CAUSE_IN_MTVAL_ON_LANDING_PAD_SOFTWARE_CHECK +description: | + When true, `mtval` is written with the shadow stack cause (code=18) when a SoftwareCheck exception is raised into M-mode due to a landing pad error. + + When false, `mtval` is written with 0. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Zicfilp diff --git a/spec/std/isa/param/REPORT_CAUSE_IN_MTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml b/spec/std/isa/param/REPORT_CAUSE_IN_MTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml new file mode 100644 index 0000000000..e15ec21105 --- /dev/null +++ b/spec/std/isa/param/REPORT_CAUSE_IN_MTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_CAUSE_IN_MTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK +description: | + When true, `mtval` is written with the shadow stack cause (code=3) when a SoftwareCheck exception is raised into M-mode due to a shadow stack pop check instruction. + + When false, `mtval` is written with 0. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Zicfiss diff --git a/spec/std/isa/param/REPORT_CAUSE_IN_STVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml b/spec/std/isa/param/REPORT_CAUSE_IN_STVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml new file mode 100644 index 0000000000..a9d9534122 --- /dev/null +++ b/spec/std/isa/param/REPORT_CAUSE_IN_STVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_CAUSE_IN_STVAL_ON_LANDING_PAD_SOFTWARE_CHECK +description: | + When true, `stval` is written with the shadow stack cause (code=18) when a SoftwareCheck exception is raised into S-mode due to a landing pad error. + + When false, `stval` is written with 0. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Zicfilp diff --git a/spec/std/isa/param/REPORT_CAUSE_IN_STVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml b/spec/std/isa/param/REPORT_CAUSE_IN_STVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml new file mode 100644 index 0000000000..6334762012 --- /dev/null +++ b/spec/std/isa/param/REPORT_CAUSE_IN_STVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_CAUSE_IN_STVAL_ON_SHADOW_STACK_SOFTWARE_CHECK +description: | + When true, `stval` is written with the shadow stack cause (code=3) when a SoftwareCheck exception is raised into S-mode due to a shadow stack pop check instruction. + + When false, `stval` is written with 0. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Zicfiss diff --git a/spec/std/isa/param/REPORT_CAUSE_IN_VSTVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml b/spec/std/isa/param/REPORT_CAUSE_IN_VSTVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml new file mode 100644 index 0000000000..81daa3f6fb --- /dev/null +++ b/spec/std/isa/param/REPORT_CAUSE_IN_VSTVAL_ON_LANDING_PAD_SOFTWARE_CHECK.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_CAUSE_IN_VSTVAL_ON_LANDING_PAD_SOFTWARE_CHECK +description: | + When true, `vstval` is written with the shadow stack cause (code=18) when a SoftwareCheck exception is raised into VS-mode due to a landing pad error. + + When false, `vstval` is written with 0. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Zicfilp diff --git a/spec/std/isa/param/REPORT_CAUSE_IN_VSTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml b/spec/std/isa/param/REPORT_CAUSE_IN_VSTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml new file mode 100644 index 0000000000..cf148b5958 --- /dev/null +++ b/spec/std/isa/param/REPORT_CAUSE_IN_VSTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_CAUSE_IN_VSTVAL_ON_SHADOW_STACK_SOFTWARE_CHECK +description: | + When true, `vstval` is written with the shadow stack cause (code=3) when a SoftwareCheck exception is raised into VS-mode due to a shadow stack pop check instruction. + + When false, `vstval` is written with 0. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Zicfiss diff --git a/spec/std/isa/param/REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION.yaml b/spec/std/isa/param/REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION.yaml new file mode 100644 index 0000000000..542156dc26 --- /dev/null +++ b/spec/std/isa/param/REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_ENCODING_IN_MTVAL_ON_ILLEGAL_INSTRUCTION +long_name: | + Whether or not `mtval` is written with the encoding of an instruction causing an IllegalInstruction exception +definedBy: + extension: + name: Sm +description: | + Options: + + * true: `mtval` is written with the encoding of an instruction causing an IllegalInstruction exception + * false: `mtval` is written with 0 when an instruction causes an IllegalInstruction exception. + +schema: + type: boolean diff --git a/spec/std/isa/param/REPORT_ENCODING_IN_STVAL_ON_ILLEGAL_INSTRUCTION.yaml b/spec/std/isa/param/REPORT_ENCODING_IN_STVAL_ON_ILLEGAL_INSTRUCTION.yaml new file mode 100644 index 0000000000..a4643aa528 --- /dev/null +++ b/spec/std/isa/param/REPORT_ENCODING_IN_STVAL_ON_ILLEGAL_INSTRUCTION.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_ENCODING_IN_STVAL_ON_ILLEGAL_INSTRUCTION +description: | + When true, `stval` is written with the encoding of an instruction that causes an + `IllegalInstruction` exception. + + When false `stval` is written with 0 when an `IllegalInstruction` exception occurs. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_ENCODING_IN_VSTVAL_ON_ILLEGAL_INSTRUCTION.yaml b/spec/std/isa/param/REPORT_ENCODING_IN_VSTVAL_ON_ILLEGAL_INSTRUCTION.yaml new file mode 100644 index 0000000000..0416bfa6c1 --- /dev/null +++ b/spec/std/isa/param/REPORT_ENCODING_IN_VSTVAL_ON_ILLEGAL_INSTRUCTION.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_ENCODING_IN_VSTVAL_ON_ILLEGAL_INSTRUCTION +description: | + When true, `vstval` is written with the encoding of an instruction that causes an + `IllegalInstruction` exception. + + When false `vstval` is written with 0 when an `IllegalInstruction` exception occurs. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_ENCODING_IN_VSTVAL_ON_VIRTUAL_INSTRUCTION.yaml b/spec/std/isa/param/REPORT_ENCODING_IN_VSTVAL_ON_VIRTUAL_INSTRUCTION.yaml new file mode 100644 index 0000000000..78bc3005d6 --- /dev/null +++ b/spec/std/isa/param/REPORT_ENCODING_IN_VSTVAL_ON_VIRTUAL_INSTRUCTION.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_ENCODING_IN_VSTVAL_ON_VIRTUAL_INSTRUCTION +description: | + When true, `vstval` is written with the encoding of an instruction that causes an + `VirualInstruction` exception. + + When false `vstval` is written with 0 when an `VirtualInstruction` exception occurs. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_GPA_IN_HTVAL_ON_GUEST_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_GPA_IN_HTVAL_ON_GUEST_PAGE_FAULT.yaml new file mode 100644 index 0000000000..9c37bb52e1 --- /dev/null +++ b/spec/std/isa/param/REPORT_GPA_IN_HTVAL_ON_GUEST_PAGE_FAULT.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_GPA_IN_HTVAL_ON_GUEST_PAGE_FAULT +description: | + When true, `htval` is written with the Guest Physical Address, shifted right by 2, that + caused a `GuestPageFault` exception. + + When false, `htval` is written with 0 when a `GuestPageFault` exception occurs. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_INSTRUCTION_GUEST_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_INSTRUCTION_GUEST_PAGE_FAULT.yaml new file mode 100644 index 0000000000..b75701763b --- /dev/null +++ b/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_INSTRUCTION_GUEST_PAGE_FAULT.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_GPA_IN_TVAL_ON_INSTRUCTION_GUEST_PAGE_FAULT +description: | + Whether or not GPA >> 2 is written into htval/mtval2 when an instruction guest page fault occurs. + + If false, 0 will be written into htval/mtval2 on an instruction guest page fault. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_INTERMEDIATE_GUEST_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_INTERMEDIATE_GUEST_PAGE_FAULT.yaml new file mode 100644 index 0000000000..efe87275a3 --- /dev/null +++ b/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_INTERMEDIATE_GUEST_PAGE_FAULT.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_GPA_IN_TVAL_ON_INTERMEDIATE_GUEST_PAGE_FAULT +description: | + Whether or not GPA >> 2 is written into htval/mtval2 when a guest page fault occurs while + walking a VS-mode page table. + + If false, 0 will be written into htval/mtval2 on an intermediate guest page fault. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_LOAD_GUEST_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_LOAD_GUEST_PAGE_FAULT.yaml new file mode 100644 index 0000000000..d64ba06bc6 --- /dev/null +++ b/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_LOAD_GUEST_PAGE_FAULT.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_GPA_IN_TVAL_ON_LOAD_GUEST_PAGE_FAULT +description: | + Whether or not GPA >> 2 is written into htval/mtval2 when a load guest page fault occurs. + + If false, 0 will be written into htval/mtval2 on a load guest page fault. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_STORE_AMO_GUEST_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_STORE_AMO_GUEST_PAGE_FAULT.yaml new file mode 100644 index 0000000000..ea88094e11 --- /dev/null +++ b/spec/std/isa/param/REPORT_GPA_IN_TVAL_ON_STORE_AMO_GUEST_PAGE_FAULT.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_GPA_IN_TVAL_ON_STORE_AMO_GUEST_PAGE_FAULT +description: | + Whether or not GPA >> 2 is written into htval/mtval2 when a store/amo guest page fault occurs. + + If false, 0 will be written into htval/mtval2 on a store/amo guest page fault. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_BREAKPOINT.yaml b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_BREAKPOINT.yaml new file mode 100644 index 0000000000..072a98530f --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_BREAKPOINT.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_MTVAL_ON_BREAKPOINT +long_name: | + Whether or not `mtval` is written with the virtual PC of an EBREAK instruction. +definedBy: + extension: + name: Sm +description: | + Options: + + * true: `mtval` is written with the virtual PC of an EBREAK instruction (same information as `mepc`). + * false: `mtval` is written with 0 on an EBREAK instruction. + + Regardless, `mtval` is always written with a virtual PC when an external breakpoint is generated + +schema: + type: boolean diff --git a/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml new file mode 100644 index 0000000000..b777b70d3e --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_MTVAL_ON_INSTRUCTION_ACCESS_FAULT +long_name: | + Whether or not `mtval` is written with the virtual address of a fetch causing an access fault +definedBy: + extension: + name: Sm +description: | + Options: + + * true: `mtval` is written with the virtual address of a fetch causing the access fault + * false: `mtval` is written with 0 when a fetch causes an access fault + +schema: + type: boolean diff --git a/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_MISALIGNED.yaml b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_MISALIGNED.yaml new file mode 100644 index 0000000000..1a9490d50a --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_MISALIGNED.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_MTVAL_ON_INSTRUCTION_MISALIGNED +long_name: | + Whether or not `mtval` is written with the virtual address of a misaligned fetch +definedBy: + extension: + name: Sm +description: | + Options: + + * true: `mtval` is written with the virtual address of a trapping misaligned fetch + * false: `mtval` is written with 0 when a misaligned fetch traps + +schema: + type: boolean diff --git a/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_PAGE_FAULT.yaml new file mode 100644 index 0000000000..e1fa5cee55 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_INSTRUCTION_PAGE_FAULT.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_MTVAL_ON_INSTRUCTION_PAGE_FAULT +description: | + When true, `mtval` is written with the virtual PC of an instructino when fetch causes an + `InstructionPageFault`. + + WHen false, `mtval` is written with 0 when an instruction fetch causes an + `InstructionPageFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_ACCESS_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_ACCESS_FAULT.yaml new file mode 100644 index 0000000000..e6faf5c735 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_ACCESS_FAULT.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_MTVAL_ON_LOAD_ACCESS_FAULT +long_name: | + Whether or not `mtval` is written with the virtual address of a load causing an access fault +definedBy: + extension: + name: Sm +description: | + Options: + + * true: `mtval` is written with the virtual address of a load causing the access fault + * false: `mtval` is written with 0 when a load causes an access fault + +schema: + type: boolean diff --git a/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_MISALIGNED.yaml b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_MISALIGNED.yaml new file mode 100644 index 0000000000..b459d0bad7 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_MISALIGNED.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_MTVAL_ON_LOAD_MISALIGNED +long_name: | + Whether or not `mtval` is written with the virtual address of a misaligned load +definedBy: + extension: + name: Sm +description: | + Options: + + * true: `mtval` is written with the virtual address of a trapping misaligned load. + * false: `mtval` is written with 0 when a misaligned load traps. + +schema: + type: boolean diff --git a/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_PAGE_FAULT.yaml new file mode 100644 index 0000000000..23f8fb3fcc --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_LOAD_PAGE_FAULT.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_MTVAL_ON_LOAD_PAGE_FAULT +description: | + When true, `mtval` is written with the virtual address of a load when it causes a + `LoadPageFault`. + + WHen false, `mtval` is written with 0 when a load causes a `LoadPageFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_ACCESS_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_ACCESS_FAULT.yaml new file mode 100644 index 0000000000..f32c80cf71 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_ACCESS_FAULT.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_MTVAL_ON_STORE_AMO_ACCESS_FAULT +long_name: | + Whether or not `mtval` is written with the virtual address of a store or AMO causing an access fault +definedBy: + extension: + name: Sm +description: | + Options: + + * true: `mtval` is written with the virtual address of a store or AMO causing the access fault + * false: `mtval` is written with 0 when a store or AMO causes an access fault + +schema: + type: boolean diff --git a/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_MISALIGNED.yaml b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_MISALIGNED.yaml new file mode 100644 index 0000000000..8cbcea5746 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_MISALIGNED.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_MTVAL_ON_STORE_AMO_MISALIGNED +long_name: | + Whether or not `mtval` is written with the virtual address of a misaligned store or AMO +definedBy: + extension: + name: Sm +description: | + Options: + + * true: `mtval` is written with the virtual address of a trapping misaligned store or AMO. + * false: `mtval` is written with 0 when a misaligned store or AMO traps. + +schema: + type: boolean diff --git a/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_PAGE_FAULT.yaml new file mode 100644 index 0000000000..5618a41186 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_MTVAL_ON_STORE_AMO_PAGE_FAULT.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_MTVAL_ON_STORE_AMO_PAGE_FAULT +description: | + When true, `mtval` is written with the virtual address of a store when it causes a + `StoreAmoPageFault`. + + WHen false, `mtval` is written with 0 when a store causes a `StoreAmoPageFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_BREAKPOINT.yaml b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_BREAKPOINT.yaml new file mode 100644 index 0000000000..c86c87f794 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_BREAKPOINT.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_STVAL_ON_BREAKPOINT +description: | + When true, `stval` is written with the virtual PC of the EBREAK instruction (same information as `mepc`). + + When false, `stval` is written with 0 on an EBREAK instruction. + + Regardless, `stval` is always written with a virtual PC when an external breakpoint is generated +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml new file mode 100644 index 0000000000..439a1dcc9d --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_STVAL_ON_INSTRUCTION_ACCESS_FAULT +description: | + When true, `stval` is written with the virtual PC of an instructino when fetch causes an + `InstructionAccessFault`. + + WHen false, `stval` is written with 0 when an instruction fetch causes an + `InstructionAccessFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_MISALIGNED.yaml b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_MISALIGNED.yaml new file mode 100644 index 0000000000..5b228d1ce5 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_MISALIGNED.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_STVAL_ON_INSTRUCTION_MISALIGNED +description: | + When true, `stval` is written with the virtual PC when an instruction fetch is misaligned. + + When false, `stval` is written with 0 when an instruction fetch is misaligned. + + Note that when IALIGN=16 (i.e., when the `C` or one of the `Zc*` extensions are implemented), + it is impossible to generate a misaligned fetch, and so this parameter has no effect. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_PAGE_FAULT.yaml new file mode 100644 index 0000000000..9e469bd1ab --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_INSTRUCTION_PAGE_FAULT.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_STVAL_ON_INSTRUCTION_PAGE_FAULT +description: | + When true, `stval` is written with the virtual PC of an instructino when fetch causes an + `InstructionPageFault`. + + WHen false, `stval` is written with 0 when an instruction fetch causes an + `InstructionPageFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_ACCESS_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_ACCESS_FAULT.yaml new file mode 100644 index 0000000000..0b3e6b6352 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_ACCESS_FAULT.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_STVAL_ON_LOAD_ACCESS_FAULT +description: | + When true, `stval` is written with the virtual address of a load when it causes a + `LoadAccessFault`. + + WHen false, `stval` is written with 0 when a load causes a `LoadAccessFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_MISALIGNED.yaml b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_MISALIGNED.yaml new file mode 100644 index 0000000000..9cf6a62a8d --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_MISALIGNED.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_STVAL_ON_LOAD_MISALIGNED +description: | + When true, `stval` is written with the virtual address of a load instruction when the + address is misaligned and MISALIGNED_LDST is false. + + When false, `stval` is written with 0 when a load address is misaligned and + MISALIGNED_LDST is false. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_PAGE_FAULT.yaml new file mode 100644 index 0000000000..da3f43df99 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_LOAD_PAGE_FAULT.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_STVAL_ON_LOAD_PAGE_FAULT +description: | + When true, `stval` is written with the virtual address of a load when it causes a + `LoadPageFault`. + + WHen false, `stval` is written with 0 when a load causes a `LoadPageFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_ACCESS_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_ACCESS_FAULT.yaml new file mode 100644 index 0000000000..f7d8d49173 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_ACCESS_FAULT.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_STVAL_ON_STORE_AMO_ACCESS_FAULT +description: | + When true, `stval` is written with the virtual address of a store when it causes a + `StoreAmoAccessFault`. + + WHen false, `stval` is written with 0 when a store causes a `StoreAmoAccessFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_MISALIGNED.yaml b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_MISALIGNED.yaml new file mode 100644 index 0000000000..85ebfb4a94 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_MISALIGNED.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_STVAL_ON_STORE_AMO_MISALIGNED +description: | + When true, `stval` is written with the virtual address of a store instruction when the + address is misaligned and MISALIGNED_LDST is false. + + When false, `stval` is written with 0 when a store address is misaligned and + MISALIGNED_LDST is false. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_PAGE_FAULT.yaml new file mode 100644 index 0000000000..3a224b16ac --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_STVAL_ON_STORE_AMO_PAGE_FAULT.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_STVAL_ON_STORE_AMO_PAGE_FAULT +description: | + When true, `stval` is written with the virtual address of a store when it causes a + `StoreAmoPageFault`. + + WHen false, `stval` is written with 0 when a store causes a `StoreAmoPageFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_BREAKPOINT.yaml b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_BREAKPOINT.yaml new file mode 100644 index 0000000000..3b5df710e3 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_BREAKPOINT.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_VSTVAL_ON_BREAKPOINT +description: | + When true, `vstval` is written with the virtual PC of the EBREAK instruction (same information as `mepc`). + + When false, `vstval` is written with 0 on an EBREAK instruction. + + Regardless, `vstval` is always written with a virtual PC when an external breakpoint is generated. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml new file mode 100644 index 0000000000..8a786bf866 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_ACCESS_FAULT.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_ACCESS_FAULT +description: | + When true, `vstval` is written with the virtual PC of an instructino when fetch causes an + `InstructionAccessFault`. + + WHen false, `vstval` is written with 0 when an instruction fetch causes an + `InstructionAccessFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_MISALIGNED.yaml b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_MISALIGNED.yaml new file mode 100644 index 0000000000..cb48df745c --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_MISALIGNED.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_MISALIGNED +description: | + When true, `vstval` is written with the virtual PC when an instruction fetch is misaligned. + + When false, `vstval` is written with 0 when an instruction fetch is misaligned. + + Note that when IALIGN=16 (i.e., when the `C` or one of the `Zc*` extensions are implemented), + it is impossible to generate a misaligned fetch, and so this parameter has no effect. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_PAGE_FAULT.yaml new file mode 100644 index 0000000000..a19056805f --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_PAGE_FAULT.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_VSTVAL_ON_INSTRUCTION_PAGE_FAULT +description: | + When true, `vstval` is written with the virtual PC of an instructino when fetch causes an + `InstructionPageFault`. + + WHen false, `vstval` is written with 0 when an instruction fetch causes an + `InstructionPageFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_ACCESS_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_ACCESS_FAULT.yaml new file mode 100644 index 0000000000..57d4bf9288 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_ACCESS_FAULT.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_VSTVAL_ON_LOAD_ACCESS_FAULT +description: | + When true, `vstval` is written with the virtual address of a load when it causes a + `LoadAccessFault`. + + WHen false, `vstval` is written with 0 when a load causes a `LoadAccessFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_MISALIGNED.yaml b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_MISALIGNED.yaml new file mode 100644 index 0000000000..f26b9b1663 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_MISALIGNED.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_VSTVAL_ON_LOAD_MISALIGNED +description: | + When true, `vstval` is written with the virtual address of a load instruction when the + address is misaligned and MISALIGNED_LDST is false. + + When false, `vstval` is written with 0 when a load address is misaligned and + MISALIGNED_LDST is false. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_PAGE_FAULT.yaml new file mode 100644 index 0000000000..8ffb1d26d4 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_LOAD_PAGE_FAULT.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_VSTVAL_ON_LOAD_PAGE_FAULT +description: | + When true, `vstval` is written with the virtual address of a load when it causes a + `LoadPageFault`. + + WHen false, `vstval` is written with 0 when a load causes a `LoadPageFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_ACCESS_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_ACCESS_FAULT.yaml new file mode 100644 index 0000000000..dd1ef1a708 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_ACCESS_FAULT.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_VSTVAL_ON_STORE_AMO_ACCESS_FAULT +description: | + When true, `vstval` is written with the virtual address of a store when it causes a + `StoreAmoAccessFault`. + + WHen false, `vstval` is written with 0 when a store causes a `StoreAmoAccessFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_MISALIGNED.yaml b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_MISALIGNED.yaml new file mode 100644 index 0000000000..8682d30175 --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_MISALIGNED.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_VSTVAL_ON_STORE_AMO_MISALIGNED +description: | + When true, `vstval` is written with the virtual address of a store instruction when the + address is misaligned and MISALIGNED_LDST is false. + + When false, `vstval` is written with 0 when a store address is misaligned and + MISALIGNED_LDST is false. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_PAGE_FAULT.yaml b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_PAGE_FAULT.yaml new file mode 100644 index 0000000000..51902a81dc --- /dev/null +++ b/spec/std/isa/param/REPORT_VA_IN_VSTVAL_ON_STORE_AMO_PAGE_FAULT.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: REPORT_VA_IN_VSTVAL_ON_STORE_AMO_PAGE_FAULT +description: | + When true, `vstval` is written with the virtual address of a store when it causes a + `StoreAmoPageFault`. + + WHen false, `vstval` is written with 0 when a store causes a `StoreAmoPageFault`. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/SATP_MODE_BARE.yaml b/spec/std/isa/param/SATP_MODE_BARE.yaml new file mode 100644 index 0000000000..7271a854e8 --- /dev/null +++ b/spec/std/isa/param/SATP_MODE_BARE.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SATP_MODE_BARE +description: "Whether or not satp.MODE == Bare is supported. + + " +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/SCOUNTENABLE_EN.yaml b/spec/std/isa/param/SCOUNTENABLE_EN.yaml new file mode 100644 index 0000000000..5ae1dd0f15 --- /dev/null +++ b/spec/std/isa/param/SCOUNTENABLE_EN.yaml @@ -0,0 +1,46 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SCOUNTENABLE_EN +description: | + Indicates which counters can delegated via `scounteren` + + An unimplemented counter cannot be specified, i.e., if + HPM_COUNTER_EN[3] is false, it would be illegal to set + SCOUNTENABLE_EN[3] to true. + + SCOUNTENABLE_EN[0:2] must all be false if `Zicntr` is not implemented. + SCOUNTENABLE_EN[3:31] must all be false if `Zihpm` is not implemented. +long_name: TODO +schema: + type: array + items: + type: boolean + maxItems: 32 + minItems: 32 +requirements: + idl(): | + for (U32 i = 0; i < 3; i++) { + !implemented?(ExtensionName::Zicntr) -> !SCOUNTENABLE_EN[i]; + } + for (U32 i = 3; i < 32; i++) { + !implemented?(ExtensionName::Zihpm) -> !SCOUNTENABLE_EN[i]; + (implemented?(ExtensionName::Smhpm) && !HPM_COUNTER_EN[i]) -> !SCOUNTENABLE_EN[i]; + } + reason: | + Counters 0-2 are defined by Zicntr + + Counters 3..31 are defined by Zihpm + + When mhpmcounter[i] does not exist, it cannot be enabled. +definedBy: + extension: + allOf: + - name: S + - anyOf: + - name: Zicntr + - name: Zihpm diff --git a/spec/std/isa/param/SSTATEEN_JVT_TYPE.yaml b/spec/std/isa/param/SSTATEEN_JVT_TYPE.yaml new file mode 100644 index 0000000000..b102ce846b --- /dev/null +++ b/spec/std/isa/param/SSTATEEN_JVT_TYPE.yaml @@ -0,0 +1,37 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SSTATEEN_JVT_TYPE +description: | + Behavior of the sstateen0.JVT bit: + + * 'rw': read-write + * 'read-only-0': read-only, fixed to 0 + * 'read-only-1': read-only, fixed to 1 +long_name: TODO +schema: + type: string + enum: + - rw + - read-only-0 + - read-only-1 +requirements: + idl(): + MSTATEEN_JVT_TYPE == "read-only-0" -> SSTATEEN_JVT_TYPE == "read-only-0"; + MSTATEEN_JVT_TYPE == "read-only-1" -> SSTATEEN_JVT_TYPE == "read-only-1"; + + HSTATEEN_JVT_TYPE == "read-only-0" -> SSTATEEN_JVT_TYPE == "read-only-0"; + HSTATEEN_JVT_TYPE == "read-only-1" -> SSTATEEN_JVT_TYPE == "read-only-1"; + reason: | + SSTATEEN cannot have more options that MSTATEEN + + SSTATEEN cannot have more options that HSTATEEN +definedBy: + extension: + allOf: + - name: Zcmt + - name: Ssstateen diff --git a/spec/std/isa/param/STVAL_WIDTH.yaml b/spec/std/isa/param/STVAL_WIDTH.yaml new file mode 100644 index 0000000000..aaf87c7628 --- /dev/null +++ b/spec/std/isa/param/STVAL_WIDTH.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: STVAL_WIDTH +description: | + The number of implemented bits in `stval`. + + Must be greater than or equal to _max_(`PHYS_ADDR_WIDTH`, `VA_SIZE`) +long_name: TODO +schema: + type: integer + maximum: 18446744073709551615 +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/STVEC_MODE_DIRECT.yaml b/spec/std/isa/param/STVEC_MODE_DIRECT.yaml new file mode 100644 index 0000000000..54025223d6 --- /dev/null +++ b/spec/std/isa/param/STVEC_MODE_DIRECT.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: STVEC_MODE_DIRECT +description: "Whether or not `stvec.MODE` supports Direct (0). + + " +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + !STVEC_MODE_VECTORED -> STVEC_MODE_DIRECT; + reason: stvec must support at least one mode +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/STVEC_MODE_VECTORED.yaml b/spec/std/isa/param/STVEC_MODE_VECTORED.yaml new file mode 100644 index 0000000000..79ece0c7fb --- /dev/null +++ b/spec/std/isa/param/STVEC_MODE_VECTORED.yaml @@ -0,0 +1,19 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: STVEC_MODE_VECTORED +description: Whether or not `stvec.MODE` supports Vectored (1). +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + !STVEC_MODE_DIRECT -> STVEC_MODE_VECTORED; + reason: stvec must support at least one mode +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/SV32X4_TRANSLATION.yaml b/spec/std/isa/param/SV32X4_TRANSLATION.yaml new file mode 100644 index 0000000000..1b1f55efa8 --- /dev/null +++ b/spec/std/isa/param/SV32X4_TRANSLATION.yaml @@ -0,0 +1,24 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SV32X4_TRANSLATION +description: Whether or not Sv32x4 translation mode is supported. +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + # at least one of Bare, Sv32x4 must be supported + !GSTAGE_MODE_BARE -> SV32X4_TRANSLATION; + reason: at least one of Bare, Sv32x4 must be supported +definedBy: + allOf: + - extension: + name: H + - param: + name: SXLEN + includes: 32 diff --git a/spec/std/isa/param/SV32_VSMODE_TRANSLATION.yaml b/spec/std/isa/param/SV32_VSMODE_TRANSLATION.yaml new file mode 100644 index 0000000000..27a231595c --- /dev/null +++ b/spec/std/isa/param/SV32_VSMODE_TRANSLATION.yaml @@ -0,0 +1,27 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SV32_VSMODE_TRANSLATION +description: | + Whether or not Sv32 translation is supported in first-stage (VS-stage) + translation. +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + # at least one of Bare, Sv32 must be supported + !VSSTAGE_MODE_BARE + -> SV39_VSMODE_TRANSLATION; + reason: at least one of Bare, Sv32 must be supported +definedBy: + allOf: + - extension: + name: H + - param: + name: VSXLEN + includes: 32 diff --git a/spec/std/isa/param/SV39X4_TRANSLATION.yaml b/spec/std/isa/param/SV39X4_TRANSLATION.yaml new file mode 100644 index 0000000000..9d504138f2 --- /dev/null +++ b/spec/std/isa/param/SV39X4_TRANSLATION.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SV39X4_TRANSLATION +description: Whether or not Sv39x4 translation mode is supported. +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + !$array_includes?(SXLEN, 64) -> !SV39X4_VSMODE_TRANSLATION; + reason: Sv39x4 is only valid if S-mode can get into RV64 mode +definedBy: + allOf: + - extension: + name: H + - param: + name: SXLEN + includes: 64 diff --git a/spec/std/isa/param/SV39_VSMODE_TRANSLATION.yaml b/spec/std/isa/param/SV39_VSMODE_TRANSLATION.yaml new file mode 100644 index 0000000000..4f4d18bcc3 --- /dev/null +++ b/spec/std/isa/param/SV39_VSMODE_TRANSLATION.yaml @@ -0,0 +1,27 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SV39_VSMODE_TRANSLATION +description: | + Whether or not Sv39 translation is supported in first-stage (VS-stage) + translation. +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + # at least one of Bare, SvQQX4 must be supported + !VSSTAGE_MODE_BARE && !SV48_VSMODE_TRANSLATION && !SV57_VSMODE_TRANSLATION + -> SV39_VSMODE_TRANSLATION; + reason: at least one of Bare, SvQQX4 must be supported +definedBy: + allOf: + - extension: + name: H + - param: + name: VSXLEN + includes: 64 diff --git a/spec/std/isa/param/SV48X4_TRANSLATION.yaml b/spec/std/isa/param/SV48X4_TRANSLATION.yaml new file mode 100644 index 0000000000..9a8a514851 --- /dev/null +++ b/spec/std/isa/param/SV48X4_TRANSLATION.yaml @@ -0,0 +1,27 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SV48X4_TRANSLATION +description: "Whether or not Sv48x4 translation mode is supported. + + " +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + # at least one of Bare, SvQQx4 must be supported + !GSTAGE_MODE_BARE && !SV39X4_TRANSLATION && !SV57X4_TRANSLATION + -> SV48X4_TRANSLATION; + reason: at least one of Bare, SvQQx4 must be supported +definedBy: + allOf: + - extension: + name: H + - param: + name: SXLEN + includes: 64 diff --git a/spec/std/isa/param/SV48_VSMODE_TRANSLATION.yaml b/spec/std/isa/param/SV48_VSMODE_TRANSLATION.yaml new file mode 100644 index 0000000000..61801b43d6 --- /dev/null +++ b/spec/std/isa/param/SV48_VSMODE_TRANSLATION.yaml @@ -0,0 +1,27 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SV48_VSMODE_TRANSLATION +description: | + Whether or not Sv48 translation is supported in first-stage (VS-stage) + translation. +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + # at least one of Bare, SvQQX4 must be supported + !VSSTAGE_MODE_BARE && !SV39_VSMODE_TRANSLATION && !SV57_VSMODE_TRANSLATION + -> SV48_VSMODE_TRANSLATION; + reason: at least one of Bare, SvQQX4 must be supported +definedBy: + allOf: + - extension: + name: H + - param: + name: VSXLEN + includes: 64 diff --git a/spec/std/isa/param/SV57X4_TRANSLATION.yaml b/spec/std/isa/param/SV57X4_TRANSLATION.yaml new file mode 100644 index 0000000000..6f926c1919 --- /dev/null +++ b/spec/std/isa/param/SV57X4_TRANSLATION.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SV57X4_TRANSLATION +description: Whether or not Sv57x4 translation mode is supported. +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + # at least one of Bare, SvQQx4 must be supported + !GSTAGE_MODE_BARE && !SV39X4_TRANSLATION && !SV48X4_TRANSLATION + -> SV57X4_TRANSLATION; + reason: at least one of Bare, SvQQx4 must be supported +definedBy: + allOf: + - extension: + name: H + - param: + name: SXLEN + includes: 64 diff --git a/spec/std/isa/param/SV57_VSMODE_TRANSLATION.yaml b/spec/std/isa/param/SV57_VSMODE_TRANSLATION.yaml new file mode 100644 index 0000000000..505884dd65 --- /dev/null +++ b/spec/std/isa/param/SV57_VSMODE_TRANSLATION.yaml @@ -0,0 +1,27 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SV57_VSMODE_TRANSLATION +description: | + Whether or not Sv57 translation is supported in first-stage (VS-stage) + translation. +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + # at least one of Bare, SvQQX4 must be supported + !VSSTAGE_MODE_BARE && !SV39_VSMODE_TRANSLATION && !SV48_VSMODE_TRANSLATION + -> SV57_VSMODE_TRANSLATION; + reason: at least one of Bare, SvQQX4 must be supported +definedBy: + allOf: + - extension: + name: H + - param: + name: VSXLEN + includes: 64 diff --git a/spec/std/isa/param/SXLEN.yaml b/spec/std/isa/param/SXLEN.yaml new file mode 100644 index 0000000000..b93796ef0f --- /dev/null +++ b/spec/std/isa/param/SXLEN.yaml @@ -0,0 +1,31 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SXLEN +description: | + Set of XLENs supported in S-mode. Can be one of: + + * 32: SXLEN is always 32 + * 64: SXLEN is always 64 + * [32, 64]: SXLEN can be changed (via mstatus.SXL) between 32 and 64 +long_name: TODO +schema: + type: array + items: + enum: + - 32 + - 64 + minItems: 1 + maxItems: 2 + uniqueItems: true +requirements: + idl(): | + MXLEN == 32 -> !$array_includes?(SXLEN, 64); + reason: XLEN in S-mode can never be larger than XLEN in M-mode +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/S_MODE_ENDIANNESS.yaml b/spec/std/isa/param/S_MODE_ENDIANNESS.yaml new file mode 100644 index 0000000000..a455d643a3 --- /dev/null +++ b/spec/std/isa/param/S_MODE_ENDIANNESS.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: S_MODE_ENDIANNESS +description: | + Endianness of data in S-mode. Can be one of: + + * little: S-mode data is always little endian + * big: S-mode data is always big endian + * dynamic: S-mode data can be either little or big endian, + depending on the CSR field `mstatus.SBE` +long_name: TODO +schema: + type: string + enum: + - little + - big + - dynamic +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/TIME_CSR_IMPLEMENTED.yaml b/spec/std/isa/param/TIME_CSR_IMPLEMENTED.yaml new file mode 100644 index 0000000000..48c9ffbb52 --- /dev/null +++ b/spec/std/isa/param/TIME_CSR_IMPLEMENTED.yaml @@ -0,0 +1,28 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TIME_CSR_IMPLEMENTED +description: | + Whether or not a real hardware `time` CSR exists. Implementations can either provide a real + CSR or emulate access at M-mode. + + Possible values: + + true:: + `time`/`timeh` exists, and accessing it will not cause an IllegalInstruction trap + + false:: + `time`/`timeh` does not exist. + Accessing the CSR will cause an IllegalInstruction trap or enter an unpredictable state, + depending on TRAP_ON_UNIMPLEMENTED_CSR. + Privileged software may emulate the `time` CSR, or may pass the exception to a lower level. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + name: Zicntr diff --git a/spec/std/isa/param/TINST_VALUE_ON_BREAKPOINT.yaml b/spec/std/isa/param/TINST_VALUE_ON_BREAKPOINT.yaml new file mode 100644 index 0000000000..62ac5c0b83 --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_BREAKPOINT.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_BREAKPOINT +description: | + Value written into htinst/mtinst on a Breakpoint exception from VU/VS-mode. + + Possible values: + * "always zero": Always write the value zero + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT.yaml b/spec/std/isa/param/TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT.yaml new file mode 100644 index 0000000000..2aa275da78 --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT +description: | + Value to write into htval/mtval2 when there is a guest page fault on a final translation. + + Possible values: + * "always zero": Always write the value zero + * "always pseudoinstruction": Always write the pseudoinstruction +long_name: TODO +schema: + type: string + enum: + - always zero + - always pseudoinstruction +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT.yaml b/spec/std/isa/param/TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT.yaml new file mode 100644 index 0000000000..eb1735a0eb --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT.yaml @@ -0,0 +1,27 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT +description: | + Value to write into htval/mtval2 when there is a guest page fault on a final translation. + + Possible values: + * "always zero": Always write the value zero + * "always pseudoinstruction": Always write the pseudoinstruction + * "always transformed standard instruction": Always write the transformation of the standard instruction encoding + * "custom": A custom value, which will cause an UNPREDICTABLE event. +long_name: TODO +schema: + type: string + enum: + - always zero + - always pseudoinstruction + - always transformed standard instruction + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT.yaml b/spec/std/isa/param/TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT.yaml new file mode 100644 index 0000000000..53333cb6d0 --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT.yaml @@ -0,0 +1,27 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT +description: | + Value to write into htval/mtval2 when there is a guest page fault on a final translation. + + Possible values: + * "always zero": Always write the value zero + * "always pseudoinstruction": Always write the pseudoinstruction + * "always transformed standard instruction": Always write the transformation of the standard instruction encoding + * "custom": A custom value, which will cause an UNPREDICTABLE event. +long_name: TODO +schema: + type: string + enum: + - always zero + - always pseudoinstruction + - always transformed standard instruction + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_INSTRUCTION_ADDRESS_MISALIGNED.yaml b/spec/std/isa/param/TINST_VALUE_ON_INSTRUCTION_ADDRESS_MISALIGNED.yaml new file mode 100644 index 0000000000..9e14e19ef9 --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_INSTRUCTION_ADDRESS_MISALIGNED.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_INSTRUCTION_ADDRESS_MISALIGNED +description: | + Value written into htinst/mtinst when there is an instruction address misaligned exception. + + Possible values: + * "always zero": Always write the value zero + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_LOAD_ACCESS_FAULT.yaml b/spec/std/isa/param/TINST_VALUE_ON_LOAD_ACCESS_FAULT.yaml new file mode 100644 index 0000000000..ac5d572479 --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_LOAD_ACCESS_FAULT.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_LOAD_ACCESS_FAULT +description: | + Value written into htinst/mtinst on an AccessFault exception from VU/VS-mode. + + Possible values: + * "always zero": Always write the value zero + * "always transformed standard instruction": Always write a transformed standard instruction as defined by H + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - always transformed standard instruction + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED.yaml b/spec/std/isa/param/TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED.yaml new file mode 100644 index 0000000000..c3966660e0 --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED +description: | + Value written into htinst/mtinst on a VirtualInstruction exception from VU/VS-mode. + + Possible values: + * "always zero": Always write the value zero + * "always transformed standard instruction": Always write a transformed standard instruction as defined by H + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - always transformed standard instruction + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_LOAD_PAGE_FAULT.yaml b/spec/std/isa/param/TINST_VALUE_ON_LOAD_PAGE_FAULT.yaml new file mode 100644 index 0000000000..fb4717d413 --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_LOAD_PAGE_FAULT.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_LOAD_PAGE_FAULT +description: | + Value written into htinst/mtinst on a LoadPageFault exception from VU/VS-mode. + + Possible values: + * "always zero": Always write the value zero + * "always transformed standard instruction": Always write a transformed standard instruction as defined by H + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - always transformed standard instruction + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_MCALL.yaml b/spec/std/isa/param/TINST_VALUE_ON_MCALL.yaml new file mode 100644 index 0000000000..76771914ad --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_MCALL.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_MCALL +description: | + Value written into htinst/mtinst on a MCall exception from VU/VS-mode. + + Possible values: + * "always zero": Always write the value zero + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_SCALL.yaml b/spec/std/isa/param/TINST_VALUE_ON_SCALL.yaml new file mode 100644 index 0000000000..fc07116f00 --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_SCALL.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_SCALL +description: | + Value written into htinst/mtinst on a SCall exception from VU/VS-mode. + + Possible values: + * "always zero": Always write the value zero + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT.yaml b/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT.yaml new file mode 100644 index 0000000000..a9d24f42d9 --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT +description: | + Value written into htinst/mtinst on an AccessFault exception from VU/VS-mode. + + Possible values: + * "always zero": Always write the value zero + * "always transformed standard instruction": Always write a transformed standard instruction as defined by H + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - always transformed standard instruction + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED.yaml b/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED.yaml new file mode 100644 index 0000000000..08d2a44843 --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED +description: | + Value written into htinst/mtinst on a VirtualInstruction exception from VU/VS-mode. + + Possible values: + * "always zero": Always write the value zero + * "always transformed standard instruction": Always write a transformed standard instruction as defined by H + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - always transformed standard instruction + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_PAGE_FAULT.yaml b/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_PAGE_FAULT.yaml new file mode 100644 index 0000000000..e707a83c98 --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_STORE_AMO_PAGE_FAULT.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_STORE_AMO_PAGE_FAULT +description: | + Value written into htinst/mtinst on a StoreAmoPageFault exception from VU/VS-mode. + + Possible values: + * "always zero": Always write the value zero + * "always transformed standard instruction": Always write a transformed standard instruction as defined by H + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - always transformed standard instruction + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_UCALL.yaml b/spec/std/isa/param/TINST_VALUE_ON_UCALL.yaml new file mode 100644 index 0000000000..43bfb233e5 --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_UCALL.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_UCALL +description: | + Value written into htinst/mtinst on a UCall exception from VU/VS-mode. + + Possible values: + * "always zero": Always write the value zero + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_VIRTUAL_INSTRUCTION.yaml b/spec/std/isa/param/TINST_VALUE_ON_VIRTUAL_INSTRUCTION.yaml new file mode 100644 index 0000000000..ea4c683f2f --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_VIRTUAL_INSTRUCTION.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_VIRTUAL_INSTRUCTION +description: | + Value written into htinst/mtinst on a VirtualInstruction exception from VU/VS-mode. + + Possible values: + * "always zero": Always write the value zero + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TINST_VALUE_ON_VSCALL.yaml b/spec/std/isa/param/TINST_VALUE_ON_VSCALL.yaml new file mode 100644 index 0000000000..d013b0ed0a --- /dev/null +++ b/spec/std/isa/param/TINST_VALUE_ON_VSCALL.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TINST_VALUE_ON_VSCALL +description: | + Value written into htinst/mtinst on a VSCall exception from VU/VS-mode. + + Possible values: + * "always zero": Always write the value zero + * "custom": Write a custom value, which results in UNPREDICTABLE +long_name: TODO +schema: + type: string + enum: + - always zero + - custom +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TRAP_ON_EBREAK.yaml b/spec/std/isa/param/TRAP_ON_EBREAK.yaml new file mode 100644 index 0000000000..592245d5c6 --- /dev/null +++ b/spec/std/isa/param/TRAP_ON_EBREAK.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TRAP_ON_EBREAK +long_name: Whether or not an EBREAK causes a synchronous exception. +definedBy: + extension: + name: Sm +description: | + The spec states that implementations may handle EBREAKs transparently + without raising a trap, in which case the EEI must provide a builtin. +schema: + type: boolean diff --git a/spec/std/isa/param/TRAP_ON_ECALL_FROM_M.yaml b/spec/std/isa/param/TRAP_ON_ECALL_FROM_M.yaml new file mode 100644 index 0000000000..541fec8fe9 --- /dev/null +++ b/spec/std/isa/param/TRAP_ON_ECALL_FROM_M.yaml @@ -0,0 +1,17 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TRAP_ON_ECALL_FROM_M +long_name: Whether or not an ECALL-from-M-mode causes a synchronous exception. +definedBy: + extension: + name: Sm +description: | + The spec states that implementations may handle ECALLs transparently + without raising a trap, in which case the EEI must provide a builtin. +schema: + type: boolean diff --git a/spec/std/isa/param/TRAP_ON_ECALL_FROM_S.yaml b/spec/std/isa/param/TRAP_ON_ECALL_FROM_S.yaml new file mode 100644 index 0000000000..67b505962d --- /dev/null +++ b/spec/std/isa/param/TRAP_ON_ECALL_FROM_S.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TRAP_ON_ECALL_FROM_S +description: | + Whether or not an ECALL-from-S-mode causes a synchronous exception. + + The spec states that implementations may handle ECALLs transparently + without raising a trap, in which case the EEI must provide a builtin. +long_name: TODO +schema: + type: boolean + default: true +definedBy: + extension: + name: S diff --git a/spec/std/isa/param/TRAP_ON_ECALL_FROM_U.yaml b/spec/std/isa/param/TRAP_ON_ECALL_FROM_U.yaml new file mode 100644 index 0000000000..9f6e856a27 --- /dev/null +++ b/spec/std/isa/param/TRAP_ON_ECALL_FROM_U.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TRAP_ON_ECALL_FROM_U +description: | + Whether or not an ECALL-from-U-mode causes a synchronous exception. + + The spec states that implementations may handle ECALLs transparently + without raising a trap, in which case the EEI must provide a builtin. +long_name: TODO +schema: + type: boolean + default: true +definedBy: + extension: + name: U diff --git a/spec/std/isa/param/TRAP_ON_ECALL_FROM_VS.yaml b/spec/std/isa/param/TRAP_ON_ECALL_FROM_VS.yaml new file mode 100644 index 0000000000..097b0c9ead --- /dev/null +++ b/spec/std/isa/param/TRAP_ON_ECALL_FROM_VS.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TRAP_ON_ECALL_FROM_VS +description: | + Whether or not an ECALL-from-VS-mode causes a synchronous exception. + + The spec states that implementations may handle ECALLs transparently + without raising a trap, in which case the EEI must provide a builtin. +long_name: TODO +schema: + type: boolean + default: true +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/TRAP_ON_ILLEGAL_WLRL.yaml b/spec/std/isa/param/TRAP_ON_ILLEGAL_WLRL.yaml new file mode 100644 index 0000000000..731c2a77a8 --- /dev/null +++ b/spec/std/isa/param/TRAP_ON_ILLEGAL_WLRL.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TRAP_ON_ILLEGAL_WLRL +long_name: | + Whether or not writing an illegal value to a WLRL CSR field causes a trap. +definedBy: + extension: + name: Sm +description: | + Options: + + * true: Writing an illegal value to a WLRL CSR field will cause an IllegalInstruction exception. + * false: Writing an illegal value to a WLRL CSR field causes unpredictable behavior. + +schema: + type: boolean diff --git a/spec/std/isa/param/TRAP_ON_RESERVED_INSTRUCTION.yaml b/spec/std/isa/param/TRAP_ON_RESERVED_INSTRUCTION.yaml new file mode 100644 index 0000000000..f38aa6e7eb --- /dev/null +++ b/spec/std/isa/param/TRAP_ON_RESERVED_INSTRUCTION.yaml @@ -0,0 +1,24 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TRAP_ON_RESERVED_INSTRUCTION +long_name: | + Whether or not fetching an unimplemented standard instruction and/or an undefined standard + instruction from the standard/reserved opcode space causes a trap +definedBy: + extension: + name: Sm +description: | + Options: + + * true: Fetching an unimplemented and/or undefined instruction from the standard/reserved opcode space will cause an IllegalInstruction exception. + * false: Fetching an unimplemented and/or undefined instruction from the standard/reserved opcose space causes unpredictable behavior. + + TRAP_ON_RESERVED_INSTRUCTION may be false while TRAP_ON_UNIMPLEMENTED_INSTRUCTION is true + when a custom instruction is implemented in the standard/reserved opcode space. +schema: + type: boolean diff --git a/spec/std/isa/param/TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY.yaml b/spec/std/isa/param/TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY.yaml new file mode 100644 index 0000000000..cf22eb0f04 --- /dev/null +++ b/spec/std/isa/param/TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY.yaml @@ -0,0 +1,31 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY +description: | + For implementations that make `satp`.MODE read-only zero + (always Bare, _i.e._, no virtual translation is implemented), + attempts to execute an SFENCE.VMA instruction might raise an + illegal-instruction exception. + + TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY indicates whether + or not that exception occurs. + + TRAP_ON_SFENCE_VMA_WHEN_SATP_MODE_IS_READ_ONLY has no effect when + some virtual translation mode is supported. +long_name: TODO +schema: + type: boolean +definedBy: + extension: + allOf: + - name: S + - noneOf: + - name: Sv32 + - name: Sv39 + - name: Sv48 + - name: Sv57 diff --git a/spec/std/isa/param/TRAP_ON_UNIMPLEMENTED_CSR.yaml b/spec/std/isa/param/TRAP_ON_UNIMPLEMENTED_CSR.yaml new file mode 100644 index 0000000000..cf5533e4bb --- /dev/null +++ b/spec/std/isa/param/TRAP_ON_UNIMPLEMENTED_CSR.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TRAP_ON_UNIMPLEMENTED_CSR +long_name: | + Whether or not fetching an unimplemented instruction causes a trap +definedBy: + extension: + name: Sm +description: | + Options: + + * true: Accessing an unimplemented CSR (via a `Zicsr` instruction) will cause an IllegalInstruction exception. + * false: Accessing an unimplemented CSR (via a `Zicsr` instruction) will cause unpredictable behavior. + +schema: + type: boolean diff --git a/spec/std/isa/param/TRAP_ON_UNIMPLEMENTED_INSTRUCTION.yaml b/spec/std/isa/param/TRAP_ON_UNIMPLEMENTED_INSTRUCTION.yaml new file mode 100644 index 0000000000..fd266a5efd --- /dev/null +++ b/spec/std/isa/param/TRAP_ON_UNIMPLEMENTED_INSTRUCTION.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: TRAP_ON_UNIMPLEMENTED_INSTRUCTION +long_name: | + Whether or not fetching an unimplemented instruction causes a trap +definedBy: + extension: + name: Sm +description: | + Options: + + * true: Fetching an unimplemented instruction will cause an IllegalInstruction exception. + * false: Fetching an unimplemented instruction causes unpredictable behavior. + + An unimplemented instruction is any instruction encoding that is not defined by the implementation. + Custom instructions are considered implemented. +schema: + type: boolean diff --git a/spec/std/isa/param/UXLEN.yaml b/spec/std/isa/param/UXLEN.yaml new file mode 100644 index 0000000000..83375d8e6b --- /dev/null +++ b/spec/std/isa/param/UXLEN.yaml @@ -0,0 +1,32 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: UXLEN +description: | + Set of XLENs supported in U-mode. When both 32 and 64 are supported, SXLEN can be changed, + via mstatus.UXL, between 32 and 64. +long_name: TODO +schema: + type: array + items: + enum: + - 32 + - 64 + minItems: 1 + maxItems: 2 + uniqueItems: true +requirements: + idl(): | + MXLEN == 32 -> !$array_includes?(UXLEN, 64); + $array_includes?(SXLEN, 32) -> $array_includes?(UXLEN, 32); + reason: | + XLEN in U-mode can never be larger than XLEN in M-mode + + If S-mode supports RV32, then U mode must also support it. +definedBy: + extension: + name: U diff --git a/spec/std/isa/param/U_MODE_ENDIANNESS.yaml b/spec/std/isa/param/U_MODE_ENDIANNESS.yaml new file mode 100644 index 0000000000..c0d3ddd82b --- /dev/null +++ b/spec/std/isa/param/U_MODE_ENDIANNESS.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: U_MODE_ENDIANNESS +description: | + Endianness of data in U-mode. Can be one of: + + * little: U-mode data is always little endian + * big: U-mode data is always big endian + * dynamic: U-mode data can be either little or big endian, + depending on the CSR field `mstatus.UBE` +long_name: TODO +schema: + type: string + enum: + - little + - big + - dynamic +definedBy: + extension: + name: U diff --git a/spec/std/isa/param/VENDOR_ID_BANK.yaml b/spec/std/isa/param/VENDOR_ID_BANK.yaml new file mode 100644 index 0000000000..644e1a0431 --- /dev/null +++ b/spec/std/isa/param/VENDOR_ID_BANK.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: VENDOR_ID_BANK +long_name: JEDEC Vendor ID bank, for `mvendorid`. +definedBy: + extension: + name: Sm +description: | + Encodes the number of one-byte continuation codes in the Bank field of `mvendorid`. + + iN JEDEC’s parlance, the bank number is one greater than the number of continuation codes; hence, the mvendorid Bank field encodes a value that is one less than the JEDEC bank number. +schema: + type: integer + minimum: 0 + maximum: 33554431 # 25-bit unsigned integer diff --git a/spec/std/isa/param/VENDOR_ID_OFFSET.yaml b/spec/std/isa/param/VENDOR_ID_OFFSET.yaml new file mode 100644 index 0000000000..e2d7b4a2c2 --- /dev/null +++ b/spec/std/isa/param/VENDOR_ID_OFFSET.yaml @@ -0,0 +1,18 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: VENDOR_ID_OFFSET +long_name: JEDEC Vendor ID offset, for `mvendorid`. +definedBy: + extension: + name: Sm +description: | + Encodes the final byte of a JEDEC manufactor ID, discarding the parity bit. +schema: + type: integer + minimum: 0 + maximum: 127 # 7-bit unsigned integer diff --git a/spec/std/isa/param/VMID_WIDTH.yaml b/spec/std/isa/param/VMID_WIDTH.yaml new file mode 100644 index 0000000000..e8f128c587 --- /dev/null +++ b/spec/std/isa/param/VMID_WIDTH.yaml @@ -0,0 +1,35 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: VMID_WIDTH +description: + "Number of bits supported in `hgatp.VMID` (i.e., the supported width + of a virtual machine ID). + + " +long_name: TODO +schema: + oneOf: + - when: + param: + name: MXLEN + equal: 32 + schema: + type: integer + minimum: 0 + maximum: 7 + - when: + param: + name: MXLEN + equal: 64 + schema: + type: integer + minimum: 0 + maximum: 14 +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/VSSTAGE_MODE_BARE.yaml b/spec/std/isa/param/VSSTAGE_MODE_BARE.yaml new file mode 100644 index 0000000000..eadd4e2fee --- /dev/null +++ b/spec/std/isa/param/VSSTAGE_MODE_BARE.yaml @@ -0,0 +1,24 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: VSSTAGE_MODE_BARE +description: Whether or not writing mode=Bare is supported in the `vsatp` register. +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + # if guest is 32 bit, then one of Bare or SV32_VSMODE_TRANSLATION must be supported + $array_includes(VSXLEN, 32) && !SV32_VSMODE_TRANSLATION + -> VSSTAGE_MODE_BARE; + + # if guest is 64 bit, then one of Bare, Sv39, Sv48, or Sv57 must be supported + $array_includes(VSXLEN, 64) && !SV39_VSMODE_TRANSLATION && !SV48_VSMODE_TRANSLATION && !SV57_VSMODE_TRANSLATION + -> VSSTAGE_MODE_BARE; +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/VSTVEC_MODE_DIRECT.yaml b/spec/std/isa/param/VSTVEC_MODE_DIRECT.yaml new file mode 100644 index 0000000000..b9981f143a --- /dev/null +++ b/spec/std/isa/param/VSTVEC_MODE_DIRECT.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: VSTVEC_MODE_DIRECT +description: "Whether or not `vstvec.MODE` supports Direct (0). + + " +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + !VSTVEC_MODE_VECTORED -> VSTVEC_MODE_DIRECT; + reason: At least one vstvec mode must be supported +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/VSTVEC_MODE_VECTORED.yaml b/spec/std/isa/param/VSTVEC_MODE_VECTORED.yaml new file mode 100644 index 0000000000..6ef559bab1 --- /dev/null +++ b/spec/std/isa/param/VSTVEC_MODE_VECTORED.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: VSTVEC_MODE_VECTORED +description: "Whether or not `stvec.MODE` supports Vectored (1). + + " +long_name: TODO +schema: + type: boolean +requirements: + idl(): | + !VSTVEC_MODE_DIRECT -> VSTVEC_MODE_VECTORED; + reason: At least one vstvec mode must be supported +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/VSXLEN.yaml b/spec/std/isa/param/VSXLEN.yaml new file mode 100644 index 0000000000..e55148ad75 --- /dev/null +++ b/spec/std/isa/param/VSXLEN.yaml @@ -0,0 +1,33 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: VSXLEN +description: | + Set of XLENs supported in VS-mode. Can be one of: + + * [32]: VSXLEN is always 32 + * [64]: VSXLEN is always 64 + * [32, 64]: VSXLEN can be changed (via `hstatus.VSXL`) between 32 and 64 +long_name: TODO +schema: + type: array + items: + enum: + - 32 + - 64 + minItems: 1 + maxItems: 2 + uniqueItems: true +requirements: + idl(): | + !$array_includes?(SXLEN, 64) -> !$array_includes?(VSXLEN, 64); + reason: | + XLEN in VS-mode can never be larger than XLEN in S-mode + (and, transitively, cannot be larger than XLEN in M-mode). +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/VS_MODE_ENDIANNESS.yaml b/spec/std/isa/param/VS_MODE_ENDIANNESS.yaml new file mode 100644 index 0000000000..2171f80d45 --- /dev/null +++ b/spec/std/isa/param/VS_MODE_ENDIANNESS.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: VS_MODE_ENDIANNESS +description: | + Endianness of data in VS-mode. Can be one of: + + * little: VS-mode data is always little endian + * big: VS-mode data is always big endian + * dynamic: VS-mode data can be either little or big endian, + depending on the CSR field `hstatus.VSBE` +long_name: TODO +schema: + type: string + enum: + - little + - big + - dynamic +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/VUXLEN.yaml b/spec/std/isa/param/VUXLEN.yaml new file mode 100644 index 0000000000..ab5352a7a8 --- /dev/null +++ b/spec/std/isa/param/VUXLEN.yaml @@ -0,0 +1,30 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: VUXLEN +description: | + Set of XLENs supported in VU-mode. When both 32 and 64 are supported, VUXLEN can be changed + via `vsstatus.UXL`. +long_name: TODO +schema: + type: array + items: + enum: + - 32 + - 64 + minItems: 1 + maxItems: 2 + uniqueItems: true +requirements: + idl(): | + !$array_includes?(VSXLEN, 64) -> !$array_includes?(VUXLEN, 64); + reason: | + XLEN in VU-mode can never be larger than XLEN in VS-mode + (and, transitively, cannot be larger than XLEN in S-mode or M-mode). +definedBy: + extension: + name: H diff --git a/spec/std/isa/param/VU_MODE_ENDIANNESS.yaml b/spec/std/isa/param/VU_MODE_ENDIANNESS.yaml new file mode 100644 index 0000000000..df3e6eb0a9 --- /dev/null +++ b/spec/std/isa/param/VU_MODE_ENDIANNESS.yaml @@ -0,0 +1,25 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: VU_MODE_ENDIANNESS +description: | + Endianness of data in VU-mode. Can be one of: + + * little: VU-mode data is always little endian + * big: VU-mode data is always big endian + * dynamic: VU-mode data can be either little or big endian, + depending on the CSR field `vsstatus.UBE` +long_name: TODO +schema: + type: string + enum: + - little + - big + - dynamic +definedBy: + extension: + name: H diff --git a/spec/std/isa/proc_cert_model/MC100-32.yaml b/spec/std/isa/proc_cert_model/MC100-32.yaml index 6bd70fbc23..8a430fcc92 100644 --- a/spec/std/isa/proc_cert_model/MC100-32.yaml +++ b/spec/std/isa/proc_cert_model/MC100-32.yaml @@ -125,8 +125,8 @@ extensions: param_constraints: MTVEC_BASE_ALIGNMENT_DIRECT: {} # Unconstrained MTVEC_BASE_ALIGNMENT_VECTORED: {} # Unconstrained - ARCH_ID: {} # Unconstrained - IMP_ID: {} # Unconstrained + ARCH_ID_VALUE: {} # Unconstrained + IMP_ID_VALUE: {} # Unconstrained VENDOR_ID_BANK: {} # Unconstrained VENDOR_ID_OFFSET: {} # Unconstrained MISA_CSR_IMPLEMENTED: {} # Unconstrained @@ -138,7 +138,7 @@ extensions: MISALIGNED_MAX_ATOMICITY_GRANULE_SIZE: {} # Unconstrained MISALIGNED_SPLIT_STRATEGY: schema: - const: by_byte + const: sequential_bytes PRECISE_SYNCHRONOUS_EXCEPTIONS: schema: const: true diff --git a/spec/std/isa/proc_cert_model/MockProcessor.yaml b/spec/std/isa/proc_cert_model/MockProcessor.yaml index ef2331090f..e84b543d67 100644 --- a/spec/std/isa/proc_cert_model/MockProcessor.yaml +++ b/spec/std/isa/proc_cert_model/MockProcessor.yaml @@ -106,8 +106,8 @@ extensions: param_constraints: MTVEC_BASE_ALIGNMENT_DIRECT: {} # Unconstrained MTVEC_BASE_ALIGNMENT_VECTORED: {} # Unconstrained - ARCH_ID: {} # Unconstrained - IMP_ID: {} # Unconstrained + ARCH_ID_VALUE: {} # Unconstrained + IMP_ID_VALUE: {} # Unconstrained VENDOR_ID_BANK: {} # Unconstrained VENDOR_ID_OFFSET: {} # Unconstrained MISA_CSR_IMPLEMENTED: {} # Unconstrained diff --git a/spec/std/isa/profile/RVB23M64.yaml b/spec/std/isa/profile/RVB23M64.yaml index 1d0e3f3807..f93d1e5101 100644 --- a/spec/std/isa/profile/RVB23M64.yaml +++ b/spec/std/isa/profile/RVB23M64.yaml @@ -33,8 +33,8 @@ extensions: schema: const: 4 MTVEC_BASE_ALIGNMENT_VECTORED: {} # Unconstrained - ARCH_ID: {} # Unconstrained - IMP_ID: {} # Unconstrained + ARCH_ID_VALUE: {} # Unconstrained + IMP_ID_VALUE: {} # Unconstrained VENDOR_ID_BANK: {} # Unconstrained VENDOR_ID_OFFSET: {} # Unconstrained MISA_CSR_IMPLEMENTED: {} # Unconstrained diff --git a/tools/ruby-gems/idl_highlighter/idl_highlighter.gemspec b/tools/ruby-gems/idl_highlighter/idl_highlighter.gemspec index f5d97aae4d..51f2f8ddb7 100644 --- a/tools/ruby-gems/idl_highlighter/idl_highlighter.gemspec +++ b/tools/ruby-gems/idl_highlighter/idl_highlighter.gemspec @@ -26,7 +26,7 @@ Gem::Specification.new do |s| "mailing_list_uri" => "https://lists.riscv.org/g/tech-unifieddb", "bug_tracker_uri" => "https://github.com/riscv-software-src/riscv-unified-db/issues" } - s.required_ruby_version = "~> 3.2" # only supported in UDB container + s.required_ruby_version = "~> 3.2" s.require_paths = ["lib"] diff --git a/tools/ruby-gems/idlc/Gemfile.lock b/tools/ruby-gems/idlc/Gemfile.lock index 7eb5aa27ca..6d42e6e1b8 100644 --- a/tools/ruby-gems/idlc/Gemfile.lock +++ b/tools/ruby-gems/idlc/Gemfile.lock @@ -10,7 +10,7 @@ PATH GEM remote: https://rubygems.org/ specs: - activesupport (8.0.2) + activesupport (8.0.3) base64 benchmark (>= 0.3) bigdecimal @@ -26,41 +26,41 @@ GEM ast (2.4.3) base64 (0.3.0) benchmark (0.4.1) - bigdecimal (3.2.2) + bigdecimal (3.3.1) commander (5.0.0) highline (~> 3.0.0) concurrent-ruby (1.3.5) - connection_pool (2.5.3) + connection_pool (2.5.4) docile (1.4.1) drb (2.2.3) erubi (1.13.1) highline (3.0.1) i18n (1.14.7) concurrent-ruby (~> 1.0) - json (2.12.2) + json (2.15.1) language_server-protocol (3.17.0.5) lint_roller (1.1.0) logger (1.7.0) - minitest (5.25.5) + minitest (5.26.0) netrc (0.11.0) parallel (1.27.0) - parser (3.3.8.0) + parser (3.3.9.0) ast (~> 2.4.1) racc polyglot (0.3.5) - prism (1.4.0) + prism (1.5.2) racc (1.8.1) - rack (3.1.16) + rack (3.2.3) rainbow (3.1.1) - rbi (0.3.6) + rbi (0.3.7) prism (~> 1.0) rbs (>= 3.4.4) - rbs (3.9.4) + rbs (3.9.5) logger - regexp_parser (2.10.0) - rexml (3.4.1) - rouge (4.5.2) - rubocop (1.76.2) + regexp_parser (2.11.3) + rexml (3.4.4) + rouge (4.6.1) + rubocop (1.81.1) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -68,31 +68,31 @@ GEM parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.45.1, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.45.1) + rubocop-ast (1.47.1) parser (>= 3.3.7.2) prism (~> 1.4) rubocop-github (0.26.0) rubocop (>= 1.76) rubocop-performance (>= 1.24) rubocop-rails (>= 2.23) - rubocop-minitest (0.38.1) + rubocop-minitest (0.38.2) lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.38.0, < 2.0) - rubocop-performance (1.25.0) + rubocop-performance (1.26.0) lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) - rubocop-ast (>= 1.38.0, < 2.0) - rubocop-rails (2.32.0) + rubocop-ast (>= 1.44.0, < 2.0) + rubocop-rails (2.33.4) activesupport (>= 4.2.0) lint_roller (~> 1.1) rack (>= 1.1) rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.44.0, < 2.0) - rubocop-sorbet (0.10.4) + rubocop-sorbet (0.11.0) lint_roller rubocop (>= 1.75.2) ruby-progressbar (1.13.0) @@ -101,19 +101,18 @@ GEM docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) - simplecov-cobertura (2.1.0) + simplecov-cobertura (3.1.0) rexml simplecov (~> 0.19) - simplecov-html (0.13.1) + simplecov-html (0.13.2) simplecov_json_formatter (0.1.4) - sorbet (0.5.12189) - sorbet-static (= 0.5.12189) - sorbet-runtime (0.5.12189) - sorbet-static (0.5.12189-aarch64-linux) - sorbet-static (0.5.12189-x86_64-linux) - sorbet-static-and-runtime (0.5.12189) - sorbet (= 0.5.12189) - sorbet-runtime (= 0.5.12189) + sorbet (0.6.12645) + sorbet-static (= 0.6.12645) + sorbet-runtime (0.6.12645) + sorbet-static (0.6.12645-x86_64-linux) + sorbet-static-and-runtime (0.6.12645) + sorbet (= 0.6.12645) + sorbet-runtime (= 0.6.12645) spoom (1.6.3) erubi (>= 1.10.0) prism (>= 0.28.0) @@ -131,22 +130,21 @@ GEM spoom (>= 1.2.0) thor (>= 1.2.0) yard-sorbet - thor (1.3.2) + thor (1.4.0) treetop (1.6.12) polyglot (~> 0.3) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - unicode-display_width (3.1.4) - unicode-emoji (~> 4.0, >= 4.0.4) - unicode-emoji (4.0.4) - uri (1.0.3) + unicode-display_width (3.2.0) + unicode-emoji (~> 4.1) + unicode-emoji (4.1.0) + uri (1.0.4) yard (0.9.37) yard-sorbet (0.9.0) sorbet-runtime yard PLATFORMS - aarch64-linux-gnu x86_64-linux-gnu DEPENDENCIES @@ -160,7 +158,8 @@ DEPENDENCIES simplecov simplecov-cobertura sorbet - tapioca + spoom + tapioca (~> 0.16) yard yard-sorbet diff --git a/tools/ruby-gems/idlc/Rakefile b/tools/ruby-gems/idlc/Rakefile index cb9a69f1ba..6d73dd5899 100644 --- a/tools/ruby-gems/idlc/Rakefile +++ b/tools/ruby-gems/idlc/Rakefile @@ -20,7 +20,8 @@ namespace :chore do task :update_deps do ENV["BUNDLE_APP_CONFIG"] = ($root / ".bundle").to_s Dir.chdir(IDLC_ROOT) do - sh "bundle update --gemfile #{IDLC_ROOT}/Gemfile" + sh "bundle install --gemfile #{IDLC_ROOT}/Gemfile" + sh "bundle update --gemfile #{IDLC_ROOT}/Gemfile --all" sh "bundle exec --gemfile #{IDLC_ROOT}/Gemfile tapioca gems --all" sh "bundle exec --gemfile #{IDLC_ROOT}/Gemfile tapioca dsl" sh "bundle exec --gemfile #{IDLC_ROOT}/Gemfile tapioca annotations" @@ -38,6 +39,12 @@ namespace :test do end end + task :sorbet_coverage do + Dir.chdir(IDLC_ROOT) do + sh "bundle exec spoom srb coverage" + end + end + desc "Run all unit tests" task :unit do Dir.chdir(IDLC_ROOT) do diff --git a/tools/ruby-gems/idlc/idlc.gemspec b/tools/ruby-gems/idlc/idlc.gemspec index 39e2cedc7b..e4ae00074d 100644 --- a/tools/ruby-gems/idlc/idlc.gemspec +++ b/tools/ruby-gems/idlc/idlc.gemspec @@ -26,7 +26,7 @@ Gem::Specification.new do |s| "mailing_list_uri" => "https://lists.riscv.org/g/tech-unifieddb", "bug_tracker_uri" => "https://github.com/riscv-software-src/riscv-unified-db/issues" } - s.required_ruby_version = "~> 3.2" # only supported in UDB container + s.required_ruby_version = "~> 3.2" s.require_paths = ["lib"] s.bindir = "bin" @@ -46,7 +46,8 @@ Gem::Specification.new do |s| s.add_development_dependency "simplecov" s.add_development_dependency "simplecov-cobertura" s.add_development_dependency "sorbet" - s.add_development_dependency "tapioca" + s.add_development_dependency "spoom" + s.add_development_dependency "tapioca", "~> 0.16" s.add_development_dependency "yard" s.add_development_dependency "yard-sorbet" end diff --git a/tools/ruby-gems/idlc/lib/idlc.rb b/tools/ruby-gems/idlc/lib/idlc.rb index a02be3fede..4adc539cc2 100644 --- a/tools/ruby-gems/idlc/lib/idlc.rb +++ b/tools/ruby-gems/idlc/lib/idlc.rb @@ -5,6 +5,7 @@ # frozen_string_literal: true require "pathname" +require "sorbet-runtime" require "treetop" require_relative "idlc/syntax_node" @@ -34,12 +35,22 @@ def instantiate_node(node_type, *args) end end +# rebuild the idl parser if the grammar has changed +tt_path = Pathname.new(__dir__) / "idlc" / "idl.treetop" +rb_path = Pathname.new(__dir__) / "idlc" / "idl_parser.rb" +needs_grammar_recompile = !rb_path.exist? || (rb_path.mtime < tt_path.mtime) +if needs_grammar_recompile + tt_compiler = Treetop::Compiler::GrammarCompiler.new + tt_compiler.compile(tt_path, rb_path) + + # make sure there is a single newline at the end + compiler_src = File.read rb_path + File.write rb_path, "#{compiler_src.strip}\n" +end + require_relative "idlc/ast" require_relative "idlc/symbol_table" - -# pre-declare so sorbet is happy with this dynamically-generated class -class IdlParser < Treetop::Runtime::CompiledParser; end -Treetop.load((Pathname.new(__FILE__).dirname / "idlc" / "idl").to_s) +require_relative "idlc/idl_parser" module Idl # the Idl compiler @@ -172,11 +183,19 @@ def compile_func_body(body, return_type: nil, symtab: nil, name: nil, input_file m = @parser.parse(body, root: :function_body) if m.nil? - raise SyntaxError, <<~MSG - While parsing #{name} at #{input_file}:#{input_line + @parser.failure_line} + unless input_file.nil? || input_line.nil? + raise SyntaxError, <<~MSG + While parsing #{name} at #{input_file}:#{input_line + @parser.failure_line} - #{@parser.failure_reason} - MSG + #{@parser.failure_reason} + MSG + else + raise SyntaxError, <<~MSG + While parsing #{name} + + #{@parser.failure_reason} + MSG + end end # fix up left recursion @@ -329,5 +348,42 @@ def compile_expression(expression, symtab, pass_error: false) ast end + + sig { params(body: String, symtab: SymbolTable, pass_error: T::Boolean).returns(ConstraintBodyAst) } + def compile_constraint(body, symtab, pass_error: false) + m = @parser.parse(body, root: :constraint_body) + if m.nil? + raise SyntaxError, <<~MSG + While parsing #{body}:#{@parser.failure_line}:#{@parser.failure_column} + + #{@parser.failure_reason} + MSG + end + + # fix up left recursion + ast = m.to_ast + ast.set_input_file("[CONSTRAINT]", 0) + ast.freeze_tree(symtab) + + # begin + # ast.type_check(symtab) + # rescue AstNode::TypeError => e + # raise e if pass_error + + # warn "Compiling #{body}" + # warn e.what + # warn T.must(e.backtrace).join("\n") + # exit 1 + # rescue AstNode::InternalError => e + # raise e if pass_error + + # warn "Compiling #{body}" + # warn e.what + # warn T.must(e.backtrace).join("\n") + # exit 1 + # end + + ast + end end end diff --git a/tools/ruby-gems/idlc/lib/idlc/ast.rb b/tools/ruby-gems/idlc/lib/idlc/ast.rb index ea179764b1..eb0288b7bc 100644 --- a/tools/ruby-gems/idlc/lib/idlc/ast.rb +++ b/tools/ruby-gems/idlc/lib/idlc/ast.rb @@ -188,6 +188,7 @@ def self.value_else(value_result, &_block) yield end + sig { params(value_result: T.untyped, block: T.proc.returns(T.untyped)).returns(T.untyped) } def value_else(value_result, &block) = self.class.value_else(value_result, &block) @@ -751,6 +752,62 @@ def to_idl = "include \"#{filename}\"" def type_check(symtab); end end + class TrueExpressionSyntaxNode < SyntaxNode + def to_ast = TrueExpressionAst.new(input, interval) + end + + class TrueExpressionAst < AstNode + include Rvalue + + sig { params(input: String, interval: T::Range[Integer]).void } + def initialize(input, interval) + super(input, interval, []) + end + + sig { override.params(symtab: SymbolTable).returns(T::Boolean) } + def const_eval?(symtab) = true + + sig { override.params(symtab: SymbolTable).void } + def type_check(symtab); end + + sig { override.params(symtab: SymbolTable).returns(Type) } + def type(symtab) = BoolType + + sig { override.params(symtab: SymbolTable).returns(TrueClass) } + def value(symtab) = true + + sig { override.returns(String) } + def to_idl = "true" + end + + class FalseExpressionSyntaxNode < SyntaxNode + def to_ast = FalseExpressionAst.new(input, interval) + end + + class FalseExpressionAst < AstNode + include Rvalue + + sig { params(input: String, interval: T::Range[Integer]).void } + def initialize(input, interval) + super(input, interval, []) + end + + sig { override.params(symtab: SymbolTable).returns(T::Boolean) } + def const_eval?(symtab) = true + + sig { override.params(symtab: SymbolTable).void } + def type_check(symtab); end + + sig { override.params(symtab: SymbolTable).returns(Type) } + def type(symtab) = BoolType + + sig { override.params(symtab: SymbolTable).returns(FalseClass) } + def value(symtab) = false + + sig { override.returns(String) } + def to_idl = "false" + end + class IdSyntaxNode < SyntaxNode def to_ast = IdAst.new(input, interval) end @@ -1059,6 +1116,56 @@ def to_idl end end + class ArrayIncludesSyntaxNode < SyntaxNode + def to_ast + ArrayIncludesAst.new(input, interval, send(:ary).to_ast, send(:value).to_ast) + end + end + + class ArrayIncludesAst < AstNode + include Rvalue + + sig { returns(RvalueAst) } + def ary = T.cast(children[0], RvalueAst) + + sig { returns(RvalueAst) } + def expr = T.cast(children[1], RvalueAst) + + sig { params(input: String, interval: T::Range[Integer], ary: RvalueAst, value: RvalueAst).void } + def initialize(input, interval, ary, value) + super(input, interval, [ary, value]) + end + + sig { override.params(symtab: SymbolTable).void } + def type_check(symtab) + ary.type_check(symtab) + ary_type = ary.type(symtab) + type_error "First argument of $array_includes? must be an array. Found #{ary_type}" unless ary_type.kind == :array + + expr.type_check(symtab) + value_type = expr.type(symtab) + unless value_type.comparable_to?(ary_type.sub_type) + type_error "Second argument of $array_includes? must be comparable to the array element type. Found #{ary_type.sub_type} and #{value_type}" + end + end + + sig { override.params(symtab: SymbolTable).returns(Type) } + def type(symtab) + BoolType + end + + sig { override.params(symtab: SymbolTable).returns(T::Boolean) } + def value(symtab) + T.cast(ary.value(symtab), T::Array[T.untyped]).include?(expr.value(symtab)) + end + + sig { override.params(symtab: SymbolTable).returns(T::Boolean) } + def const_eval?(symtab) = true + + sig { override.returns(String) } + def to_idl = "$array_size(#{ary.to_idl}, #{expr.to_idl})" + end + class ArraySizeSyntaxNode < SyntaxNode def to_ast ArraySizeAst.new(input, interval, send(:expression).to_ast) @@ -1066,6 +1173,8 @@ def to_ast end class ArraySizeAst < AstNode + include Rvalue + # @return [AstNode] Array expression def expression = children[0] @@ -1093,8 +1202,11 @@ def type(symtab) end end + sig { override.params(symtab: SymbolTable).returns(Integer) } def value(symtab) - expression.type(symtab).width + w = expression.type(symtab).width + value_error "Width of the array is unknown" if w == :unknown + T.cast(w, Integer) end sig { override.returns(String) } @@ -1237,6 +1349,8 @@ def to_ast # # $enum_to_a(PrivilegeMode) #=> [3, 1, 1, 0, 5, 4] class EnumArrayCastAst < AstNode + include Rvalue + def enum_class = children[0] sig { override.params(symtab: SymbolTable).returns(T::Boolean) } @@ -1863,14 +1977,16 @@ class AryRangeAccessAst < AstNode sig { override.params(symtab: SymbolTable).returns(T::Boolean) } def const_eval?(symtab) - if var.name == "X" + v = var + if v.is_a?(IdAst) && v.name == "X" false else - var.const_eval?(symtab) && msb.const_eval?(symtab).const_eval? && lsb.const_eval?(symtab) + v.const_eval?(symtab) && msb.const_eval?(symtab).const_eval? && lsb.const_eval?(symtab) end end - def var = @children[0] + sig { returns(RvalueAst) } + def var = T.cast(@children[0], RvalueAst) def msb = @children[1] def lsb = @children[2] @@ -1922,7 +2038,7 @@ def type(symtab) # @!macro value def value(symtab) mask = (1 << (msb.value(symtab) - lsb.value(symtab) + 1)) - 1 - (var.value(symtab) >> lsb.value(symtab)) & mask + (T.cast(var.value(symtab), Integer) >> lsb.value(symtab)) & mask end # @!macro to_idl @@ -2463,7 +2579,7 @@ def type(symtab) if symtab.mxlen == 64 && symtab.multi_xlen? Type.new(:bits, width: [field(symtab).location(32).size, field(symtab).location(64).size].max) else - Type.new(:bits, width: field(symtab).location(symtab.mxlen).size) + Type.new(:bits, width: field(symtab).location(symtab.mxlen.nil? ? 64 : symtab.mxlen).size) end elsif field(symtab).base64_only? Type.new(:bits, width: field(symtab).location(64).size) @@ -3041,6 +3157,147 @@ def type_check(_symtab) end end + class ImplicationExpressionSyntaxNode < SyntaxNode + sig { override.returns(ImplicationExpressionAst) } + def to_ast + antecedent = send(:antecedent) + ImplicationExpressionAst.new( + input, interval, + antecedent.empty? ? TrueExpressionAst.new(input, interval.first...interval.first) : antecedent.to_ast, send(:consequent).to_ast + ) + end + end + + class ImplicationExpressionAst < AstNode + sig { + params( + input: String, + interval: T::Range[Integer], + antecedent: RvalueAst, + consequent: RvalueAst + ).void + } + def initialize(input, interval, antecedent, consequent) + super(input, interval, [antecedent, consequent]) + end + + + sig { override.params(symtab: SymbolTable).returns(T::Boolean) } + def const_eval?(symtab) + antecedent.const_eval?(symtab) && consequent.const_eval?(symtab) + end + + sig { returns(RvalueAst) } + def antecedent = T.cast(@children.fetch(0), RvalueAst) + + sig { returns(RvalueAst) } + def consequent = T.cast(@children.fetch(1), RvalueAst) + + sig { override.params(symtab: SymbolTable).void } + def type_check(symtab) + antecedent.type_error "Antecedent must a boolean" unless antecedent.type(symtab).kind == :boolean + consequent.type_error "Consequent must a boolean" unless consequent.type(symtab).kind == :boolean + end + + sig { params(symtab: SymbolTable).returns(T::Boolean) } + def satisfied?(symtab) + return true if antecedent.value(symtab) == false + T.cast(consequent.value(symtab), T::Boolean) + end + + sig { override.returns(String) } + def to_idl = "#{antecedent.to_idl} -> #{consequent.to_idl}" + + end + + class ImplicationStatementSyntaxNode < SyntaxNode + sig { override.returns(ImplicationStatementAst) } + def to_ast + ImplicationStatementAst.new(input, interval, send(:implication_expression).to_ast) + end + end + + class ImplicationStatementAst < AstNode + sig { + params( + input: String, + interval: T::Range[Integer], + implication_expression: ImplicationExpressionAst + ).void + } + def initialize(input, interval, implication_expression) + super(input, interval, [implication_expression]) + end + + sig { override.params(symtab: SymbolTable).returns(T::Boolean) } + def const_eval?(symtab) = expression.const_eval?(symtab) + + sig { returns(ImplicationExpressionAst) } + def expression = T.cast(@children.fetch(0), ImplicationExpressionAst) + + sig { override.params(symtab: SymbolTable).void } + def type_check(symtab) + expression.type_check(symtab) + end + + sig { params(symtab: SymbolTable).returns(T::Boolean) } + def satisfied?(symtab) + expression.satisfied?(symtab) + end + + sig { override.returns(String) } + def to_idl = "#{expression.to_idl};" + end + + class ConstraintBodySyntaxNode < SyntaxNode + sig { override.returns(ConstraintBodyAst) } + def to_ast + stmts = [] + send(:b).elements.each do |e| + stmts << e.i.to_ast + end + ConstraintBodyAst.new(input, interval, stmts) + end + end + + class ConstraintBodyAst < AstNode + sig { + params( + input: String, + interval: T::Range[Integer], + stmts: T::Array[T.any(ImplicationStatementAst, ForLoopAst)] + ).void + } + def initialize(input, interval, stmts) + super(input, interval, stmts) + end + + sig { override.params(symtab: SymbolTable).returns(T::Boolean) } + def const_eval?(symtab) = stmts.all? { |stmt| stmt.const_eval?(symtab) } + + sig { returns(T::Array[T.any(ImplicationStatementAst, ForLoopAst)]) } + def stmts = T.cast(@children, T::Array[T.any(ImplicationStatementAst, ForLoopAst)]) + + sig { override.params(symtab: SymbolTable).void } + def type_check(symtab) + stmts.each do |stmt| + stmt.type_check(symtab) + end + end + + sig { params(symtab: SymbolTable).returns(T::Boolean) } + def satisfied?(symtab) + stmts.all? do |stmt| + stmt.satisfied?(symtab) + end + end + + sig { override.returns(String) } + def to_idl + stmts.map { |stmt| stmt.to_idl }.join("\n") + end + end + class WidthRevealSyntaxNode < SyntaxNode def to_ast WidthRevealAst.new(input, interval, send(:expression).to_ast) @@ -3275,21 +3532,49 @@ def to_idl # @!macro type def type(symtab) - lhs_type = lhs.type(symtab) - short_circuit = T.let(false, T::Boolean) - value_result = value_try do - lhs_value = lhs.value(symtab) - if (lhs_value == true && op == "||") || (lhs_value == false && op == "&&") - short_circuit = true + if op == "||" || op == "&&" + # see if we can short circuit + lhs_value = T.let(nil, T.untyped) + value_try do + lhs_value = lhs.value(symtab) + end + rhs_value = T.let(nil, T.untyped) + value_try do + rhs_value = rhs.value(symtab) + end + + if (lhs_value == true || lhs_value == false) && (rhs_value == true || rhs_value == false) + # both are known and boolean. nothing more to check + return ConstBoolType + elsif lhs_value == false && op == "||" + rhs_type = rhs.type(symtab) + return rhs_type.const? ? ConstBoolType : BoolType + elsif lhs_value == true && op == "||" + return ConstBoolType + elsif lhs_value == true && op == "&&" + rhs_type = rhs.type(symtab) + return rhs_type.const? ? ConstBoolType : BoolType + elsif lhs_value == false && op == "&&" + return ConstBoolType + elsif rhs_value == false && op == "||" + lhs_type = lhs.type(symtab) + return lhs_type.const? ? ConstBoolType : BoolType + elsif rhs_value == true && op == "||" + return ConstBoolType + elsif rhs_value == true && op == "&&" + lhs_type = lhs.type(symtab) + return lhs_type.const? ? ConstBoolType : BoolType + elsif rhs_value == false && op == "&&" + return ConstBoolType end end - value_else(value_result) { short_circuit = false } - rhs_type = rhs.type(symtab) unless short_circuit + lhs_type = lhs.type(symtab) + rhs_type = rhs.type(symtab) qualifiers = [] - qualifiers << :const if lhs_type.const? && (short_circuit || rhs_type.const?) + qualifiers << :const if lhs_type.const? && rhs_type.const? if LOGICAL_OPS.include?(op) if qualifiers.include?(:const) @@ -3336,7 +3621,7 @@ def type(symtab) end else qualifiers << :signed if lhs_type.signed? && rhs_type.signed? - qualifiers << :known if lhs_type.known? && (short_circuit || rhs_type.known?) + qualifiers << :known if lhs_type.known? && rhs_type.known? if [lhs_type.width, rhs_type.width].include?(:unknown) Type.new(:bits, width: :unknown, qualifiers:) else @@ -3349,18 +3634,41 @@ def type(symtab) def type_check(symtab) internal_error "No type_check function #{lhs.inspect}" unless lhs.respond_to?(:type_check) - lhs.type_check(symtab) - short_circuit = T.let(false, T::Boolean) - value_result = value_try do - lhs_value = lhs.value(symtab) - if (lhs_value == true && op == "||") || (lhs_value == false && op == "&&") - short_circuit = true + lhs_short_circuit = T.let(false, T::Boolean) + rhs_short_circuit = T.let(false, T::Boolean) + if op == "||" || op == "&&" + # see if we can short circuit + lhs_value = T.let(nil, T.untyped) + value_try do + lhs_value = lhs.value(symtab) + end + rhs_value = T.let(nil, T.untyped) + value_try do + rhs_value = rhs.value(symtab) + end + + if (lhs_value == true || lhs_value == false) && (rhs_value == true || rhs_value == false) + # both are known and boolean. nothing more to check + return + elsif lhs_value == false && op == "||" + rhs.type_check(symtab) + elsif lhs_value == true && op == "||" + rhs_short_circuit = true + elsif lhs_value == true && op == "&&" + rhs.type_check(symtab) + elsif lhs_value == false && op == "&&" + rhs_short_circuit = true + elsif rhs_value == false && op == "||" + lhs.type_check(symtab) + elsif rhs_value == true && op == "||" + lhs_short_circuit = true + elsif rhs_value == true && op == "&&" + lhs.type_check(symtab) + elsif rhs_value == false && op == "&&" + lhs_short_circuit = true end end - value_else(value_result) do - short_circuit = false - end - rhs.type_check(symtab) unless short_circuit + if ["<=", ">=", "<", ">", "!=", "=="].include?(op) rhs_type = rhs.type(symtab) @@ -3371,12 +3679,14 @@ def type_check(symtab) end elsif ["&&", "||"].include?(op) - lhs_type = lhs.type(symtab) - unless lhs_type.convertable_to?(:boolean) - type_error "left-hand side of #{op} needs to be boolean (is #{lhs_type}) (#{text_value})" + unless lhs_short_circuit + lhs_type = lhs.type(symtab) + unless lhs_type.convertable_to?(:boolean) + type_error "left-hand side of #{op} needs to be boolean (is #{lhs_type}) (#{text_value})" + end end - unless short_circuit + unless rhs_short_circuit rhs_type = rhs.type(symtab) unless rhs_type.convertable_to?(:boolean) type_error "right-hand side of #{op} needs to be boolean (is #{rhs_type}) (#{text_value})" @@ -4449,7 +4759,7 @@ def freeze_tree(global_symtab) @enum_def_type = global_symtab.get(@enum_class_name) - unless @enum_def_type.kind == :enum + if @enum_def_type.nil? || @enum_def_type.kind != :enum type_error "#{@enum_class_name} is not a defined Enum" end @@ -5245,7 +5555,9 @@ def type_check(symtab) type_error "Bits width (#{bits_expression.value(symtab)}) must be positive" end end - type_error "Bits width (#{bits_expression.text_value}) must be const" unless bits_expression.type(symtab).const? + unless bits_expression.type(symtab).const? + type_error "Bits width (#{bits_expression.text_value}) must be const" + end end unless ["Bits", "String", "XReg", "Boolean", "U32", "U64"].include?(@type_name) type_error "Unimplemented builtin type #{text_value}" @@ -5325,7 +5637,7 @@ def to_ast # # @example # ">= 1.0" - # "by_byte" + # "sequential_bytes" class StringLiteralAst < AstNode include Rvalue @@ -5797,13 +6109,13 @@ def value(symtab) func_def_type = func_type(symtab) type_error "#{name} is not a function" unless func_def_type.is_a?(FunctionType) if func_def_type.generated? - value_error "builtin functions not provided" if @builtin_funcs.nil? + value_error "builtin functions not provided" if symtab.builtin_funcs.nil? if name == "implemented?" extname_ref = arg_nodes[0] type_error "First argument should be a ExtensionName" unless extname_ref.type(symtab).kind == :enum_ref && extname_ref.class_name == "ExtensionName" - v = @builtin_funcs.implemented?.call(extname_ref.member_name) + v = symtab.builtin_funcs.implemented.call(extname_ref.member_name) if v.nil? value_error "implemented? is only known when evaluating in the context of a fully-configured arch def" end @@ -5815,7 +6127,7 @@ def value(symtab) ver_req = arg_nodes[1].text_value[1..-2] - v = @builtin_funcs.implemented_version?.call(extname_ref.member_name, ver_req) + v = symtab.builtin_funcs.implemented_version.call(extname_ref.member_name, ver_req) if v.nil? value_error "implemented_version? is only known when evaluating in the context of a fully-configured arch def" end @@ -5823,7 +6135,7 @@ def value(symtab) elsif name == "implemented_csr?" csr_addr = arg_nodes[0].value(symtab) - v = @builtin_funcs.implemented_csr?.call(csr_addr) + v = symtab.builtin_funcs.implemented_csr.call(csr_addr) if v.nil? value_error "implemented_csr? is only known when evaluating in the context of a fully-configured arch def" end @@ -5864,7 +6176,8 @@ def value(symtab) func_def_type.return_value(template_values, arg_nodes, symtab, self) end - alias execute value + + def execute(symtab) = value(symtab) def name @name @@ -6010,7 +6323,8 @@ def return_value(symtab) value_error "No function body statement returned a value" end - alias execute return_value + + def execute(symtab) = return_value(symtab) sig { override.params(symtab: SymbolTable).void } def execute_unknown(symtab) @@ -6547,8 +6861,9 @@ def condition = T.cast(@children.fetch(1), RvalueAst) sig { returns(ExecutableAst) } def update = T.cast(@children.fetch(2), ExecutableAst) - sig { returns(T::Array[T.any(StatementAst, ReturnStatementAst, IfAst, ForLoopAst)]) } - def stmts = T.cast(@children[3..], T::Array[T.any(StatementAst, ReturnStatementAst, IfAst, ForLoopAst)]) + StmtType = T.type_alias { T.any(StatementAst, ReturnStatementAst, IfAst, ForLoopAst, ImplicationStatementAst) } + sig { returns(T::Array[StmtType]) } + def stmts = T.cast(@children[3..], T::Array[StmtType]) def initialize(input, interval, init, condition, update, stmts) super(input, interval, [init, condition, update] + stmts) @@ -6566,6 +6881,23 @@ def type_check(symtab) symtab.pop end + sig { params(symtab: SymbolTable).returns(T::Boolean) } + def satisfied?(symtab) + symtab.push(self) + begin + init.execute(symtab) + while condition.value(symtab) + stmts.each do |s| + return false unless T.cast(s, ImplicationStatementAst).satisfied?(symtab) + end + update.execute(symtab) + end + return true + ensure + symtab.pop + end + end + # @!macro return_value def return_value(symtab) symtab.push(self) @@ -6582,7 +6914,9 @@ def return_value(symtab) return v end else - s.execute(symtab) + unless s.is_a?(ImplicationStatementAst) + s.execute(symtab) + end end end update.execute(symtab) @@ -6631,7 +6965,9 @@ def return_values(symtab) values += s.return_values(symtab) end else - s.execute(symtab) + unless s.is_a?(ImplicationStatementAst) + s.execute(symtab) + end end end update.execute(symtab) @@ -6647,7 +6983,7 @@ def return_values(symtab) end # @!macro execute - alias execute return_value + def execute(symtab) = return_value(symtab) sig { override.params(symtab: SymbolTable).void } def execute_unknown(symtab) @@ -6658,7 +6994,7 @@ def execute_unknown(symtab) init.execute_unknown(symtab) stmts.each do |s| - unless s.is_a?(ReturnStatementAst) + unless s.is_a?(ReturnStatementAst) || s.is_a?(ImplicationStatementAst) s.execute_unknown(symtab) end end @@ -7177,57 +7513,61 @@ def to_idl class CsrFieldReadExpressionAst < AstNode include Rvalue + class MemoizedState < T::Struct + prop :csr, T.nilable(Csr) + prop :type, T.nilable(Type) + prop :value_calculated, T::Boolean + prop :value, T.nilable(Integer) + end + sig { override.params(symtab: SymbolTable).returns(T::Boolean) } def const_eval?(symtab) = !@value.nil? + sig { params(input: String, interval: T::Range[Integer], csr: CsrReadExpressionAst, field_name: String).void } def initialize(input, interval, csr, field_name) super(input, interval, [csr]) @csr = csr @field_name = field_name + @memo = MemoizedState.new(value_calculated: false) end - def freeze_tree(symtab) - return if frozen? - - @children.each { |child| child.freeze_tree(symtab) } - - @csr_obj = @csr.csr_def(symtab) - type_error "No CSR '#{@csr.text_value}'" if @csr_obj.nil? - - value_result = value_try do - @value = calc_value(symtab) - end - value_else(value_result) do - @value = nil - end - - @type = calc_type(symtab) + sig { params(symtab: SymbolTable).returns(Csr) } + def csr_obj(symtab) + @memo.csr ||= + begin + obj = @csr.csr_def(symtab) + type_error "No CSR '#{@csr.text_value}'" if obj.nil? - freeze + obj + end end # @!macro type_check + sig { override.params(symtab: SymbolTable).void } def type_check(symtab) @csr.type_check(symtab) - type_error "CSR[#{csr_name}] has no field named #{@field_name}" if field_def(symtab).nil? type_error "CSR[#{csr_name}].#{@field_name} is not defined in RV32" if symtab.mxlen == 32 && !field_def(symtab).defined_in_base32? type_error "CSR[#{csr_name}].#{@field_name} is not defined in RV64" if symtab.mxlen == 64 && !field_def(symtab).defined_in_base64? end + sig { params(symtab: SymbolTable).returns(Csr) } def csr_def(symtab) - @csr_obj + csr_obj(symtab) end + sig { returns(String) } def csr_name = @csr.csr_name + sig { params(symtab: SymbolTable).returns(CsrField) } def field_def(symtab) - @csr_obj.fields.find { |f| f.name == @field_name } + T.must(csr_obj(symtab).fields.find { |f| f.name == @field_name }) end + sig { params(symtab: SymbolTable).returns(String) } def field_name(symtab) - field_def(symtab)&.name + field_def(symtab).name end # @!macro to_idl @@ -7237,13 +7577,15 @@ def to_idl end # @!macro type + sig { override.params(symtab: SymbolTable).returns(Type) } def type(symtab) - @type + @memo.type ||= T.must(calc_type(symtab)) end + # @api private + sig { params(symtab: SymbolTable).returns(T.nilable(Type)) } def calc_type(symtab) fd = field_def(symtab) - internal_error "Could not find #{@csr.text_value}.#{@field_name}" if fd.nil? if fd.defined_in_all_bases? Type.new(:bits, width: symtab.possible_xlens.map { |xlen| fd.width(xlen) }.max) @@ -7260,18 +7602,35 @@ def calc_type(symtab) end end + # @api private + sig { params(symtab: SymbolTable).void } + def calc_value(symtab) + value_result = value_try do + @memo.value = calc_value(symtab) + end + value_else(value_result) do + @memo.value = nil + end + @memo.value_calculated = true + end + # @!macro value + sig { override.params(symtab: SymbolTable).returns(ValueRbType) } def value(symtab) - if @value.nil? + calc_value(symtab) unless @memo.value_calculated + + if @memo.value.nil? value_error "'#{csr_name}.#{field_name(symtab)}' is not RO" else - @value + @memo.value end end + # @api private + sig { params(symtab: SymbolTable).void } def calc_value(symtab) # field isn't implemented, so it must be zero - return 0 if field_def(symtab).nil? || !field_def(symtab).exists? + return 0 if !field_def(symtab).exists? symtab.possible_xlens.each do |effective_xlen| unless field_def(symtab).type(effective_xlen) == "RO" @@ -7447,9 +7806,6 @@ def type_check(symtab) if ["sw_read", "address"].include?(function_name) type_error "unexpected argument(s)" unless args.empty? - elsif ["implemented_without?"].include?(function_name) - type_error "Expecting one argument" unless args.size == 1 - type_error "Expecting an ExtensionName" unless args[0].type(symtab).kind == :enum_ref && args[0].class_name == "ExtensionName" else type_error "'#{function_name}' is not a supported CSR function call" end @@ -7467,8 +7823,6 @@ def type(symtab) end when "address" Type.new(:bits, width: 12, qualifiers: [:const, :known]) - when "implemented_without?" - ConstBoolType else internal_error "No function '#{function_name}' for CSR. call type check first!" end @@ -7497,15 +7851,6 @@ def value(symtab) value_error "CSR not knowable" unless csr_known?(symtab) cd = csr_def(symtab) cd.address - when "implemented_without?" - value_error "CSR not knowable" unless csr_known?(symtab) - cd = csr_def(symtab) - extension_name_enum_type = symtab.get("ExtensionName") - enum_value = args[0].value(symtab) - idx = extension_name_enum_type.element_values.index(enum_value) - ext_name = extension_name_enum_type.element_names[idx] - - cd.implemented_without?(ext_name) else internal_error "TODO: #{function_name}" end diff --git a/tools/ruby-gems/idlc/lib/idlc/idl.treetop b/tools/ruby-gems/idlc/lib/idlc/idl.treetop index 63fb53843f..c04d7321da 100644 --- a/tools/ruby-gems/idlc/lib/idlc/idl.treetop +++ b/tools/ruby-gems/idlc/lib/idlc/idl.treetop @@ -23,7 +23,7 @@ grammar Idl fetch / space+ - )+ + )* end rule include_statement @@ -299,6 +299,8 @@ grammar Idl # expression that can accept an array index operator (expr[]) rule ary_eligible_expression + enum_to_a + / paren_expression / replication_expression @@ -340,7 +342,15 @@ grammar Idl space* ')' end + rule enum_to_a + '$enum_to_a' space* '(' space* user_type_name ')' + end + rule unary_expression + 'true' + / + 'false' + / '[' space* first:expression rest:(space* ',' space* expression)* space* ']' / ary_access @@ -356,15 +366,17 @@ grammar Idl / '$enum_element_size' space* '(' space* user_type_name ')' / - '$enum_to_a' space* '(' space* user_type_name ')' + enum_to_a / '$enum' space* '(' space* user_type_name space* ',' space* expression space* ')' / '$array_size' space* '(' space* expression ')' / + '$array_includes?' space* '(' space* ary:ary_eligible_expression space* ',' space* value:expression space* ')' + / paren_expression / - o:unary_operator space* e:expression + o:unary_operator space* e:unary_expression / post_dec / @@ -393,6 +405,24 @@ grammar Idl e:template_safe_p9_binary_expression space* '?' space* t:expression space* ':' space* f:expression end + rule implication_expression + antecedent:p9_binary_expression? space* '->' space* consequent:p9_binary_expression + end + + rule implication_for_loop + 'for' space* '(' space* for_loop_iteration_variable_declaration space* ';' space* condition:expression space* ';' space* action:(assignment / post_inc / post_dec) space* ')' space* '{' space* + stmts:(s:(implication_statement / implication_for_loop) space*)+ + '}' + end + + rule implication_statement + implication_expression space* ';' + end + + rule constraint_body + space* b:(i:(implication_statement / implication_for_loop) space*)+ + end + rule expression ( ternary_expression @@ -489,8 +519,8 @@ grammar Idl # note: there is no full CSR assignment (must assign fields) csr_field_access_expression space* '=' space* rval:expression / id space* '.' space* field_name space* '=' space* rval:expression / - var:var_write space* '[' space* msb:expression space* ':' space* lsb:expression space* ']' space* '=' space* rval:expression / - var:var_write space* '[' space* idx:expression space* ']' space* '=' space* rval:expression + var:ary_eligible_expression space* '[' space* msb:expression space* ':' space* lsb:expression space* ']' space* '=' space* rval:expression / + var:ary_eligible_expression space* '[' space* idx:expression space* ']' space* '=' space* rval:expression end rule ary_size_decl @@ -609,7 +639,9 @@ grammar Idl 'generated' ![A-Za-z0-9_] / 'enum' ![A-Za-z0-9_] / 'bitfield' ![A-Za-z0-9_] / - 'CSR' ![A-Za-z0-9_] + 'CSR' ![A-Za-z0-9_] / + 'true' ![A-Za-z0-9_] / + 'false' ![A-Za-z0-9_] end rule user_type_name diff --git a/tools/ruby-gems/idlc/lib/idlc/idl_parser.rb b/tools/ruby-gems/idlc/lib/idlc/idl_parser.rb new file mode 100644 index 0000000000..6e96782ac3 --- /dev/null +++ b/tools/ruby-gems/idlc/lib/idlc/idl_parser.rb @@ -0,0 +1,16642 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# Autogenerated from a Treetop grammar. Edits may be lost. + + +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# grammar for the ISA Description Language + +module Idl + include Treetop::Runtime + + def root + @root ||= :isa + end + + module Isa0 + def version_string + elements[3] + end + + def definitions + elements[5] + end + end + + def _nt_isa + start_index = index + if node_cache[:isa].has_key?(index) + cached = node_cache[:isa][index] + if cached + node_cache[:isa][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + s1, i1 = [], index + loop do + r2 = _nt_space + if r2 + s1 << r2 + else + break + end + end + r1 = instantiate_node(SyntaxNode,input, i1...index, s1) + s0 << r1 + if r1 + if (match_len = has_terminal?('%version:', false, index)) + r3 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'%version:\'') + r3 = nil + end + s0 << r3 + if r3 + s4, i4 = [], index + loop do + r5 = _nt_space + if r5 + s4 << r5 + else + break + end + end + if s4.empty? + @index = i4 + r4 = nil + else + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + end + s0 << r4 + if r4 + r6 = _nt_version_string + s0 << r6 + if r6 + s7, i7 = [], index + loop do + r8 = _nt_space + if r8 + s7 << r8 + else + break + end + end + if s7.empty? + @index = i7 + r7 = nil + else + r7 = instantiate_node(SyntaxNode,input, i7...index, s7) + end + s0 << r7 + if r7 + s9, i9 = [], index + loop do + i10 = index + r11 = _nt_include_statement + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r10 = r11 + else + r12 = _nt_global_definition + if r12 + r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true + r10 = r12 + else + r13 = _nt_enum_definition + if r13 + r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true + r10 = r13 + else + r14 = _nt_bitfield_definition + if r14 + r14 = SyntaxNode.new(input, (index-1)...index) if r14 == true + r10 = r14 + else + r15 = _nt_struct_definition + if r15 + r15 = SyntaxNode.new(input, (index-1)...index) if r15 == true + r10 = r15 + else + r16 = _nt_function_definition + if r16 + r16 = SyntaxNode.new(input, (index-1)...index) if r16 == true + r10 = r16 + else + r17 = _nt_fetch + if r17 + r17 = SyntaxNode.new(input, (index-1)...index) if r17 == true + r10 = r17 + else + s18, i18 = [], index + loop do + r19 = _nt_space + if r19 + s18 << r19 + else + break + end + end + if s18.empty? + @index = i18 + r18 = nil + else + r18 = instantiate_node(SyntaxNode,input, i18...index, s18) + end + if r18 + r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true + r10 = r18 + else + @index = i10 + r10 = nil + end + end + end + end + end + end + end + end + if r10 + s9 << r10 + else + break + end + end + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + s0 << r9 + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::IsaSyntaxNode,input, i0...index, s0) + r0.extend(Isa0) + else + @index = i0 + r0 = nil + end + + node_cache[:isa][start_index] = r0 + + r0 + end + + module IncludeStatement0 + def string + elements[2] + end + + end + + def _nt_include_statement + start_index = index + if node_cache[:include_statement].has_key?(index) + cached = node_cache[:include_statement][index] + if cached + node_cache[:include_statement][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('include', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'include\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + if s2.empty? + @index = i2 + r2 = nil + else + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + end + s0 << r2 + if r2 + r4 = _nt_string + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + if s5.empty? + @index = i5 + r5 = nil + else + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + end + s0 << r5 + end + end + end + if s0.last + r0 = instantiate_node(Idl::IncludeStatementSyntaxNode,input, i0...index, s0) + r0.extend(IncludeStatement0) + else + @index = i0 + r0 = nil + end + + node_cache[:include_statement][start_index] = r0 + + r0 + end + + module GlobalDefinition0 + end + + module GlobalDefinition1 + def const + elements[0] + end + + def single_declaration_with_initialization + elements[1] + end + + end + + module GlobalDefinition2 + def declaration + elements[0] + end + + end + + def _nt_global_definition + start_index = index + if node_cache[:global_definition].has_key?(index) + cached = node_cache[:global_definition][index] + if cached + node_cache[:global_definition][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + i3, s3 = index, [] + if (match_len = has_terminal?('const', false, index)) + r5 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'const\'') + r5 = nil + end + if r5 + r4 = r5 + else + r4 = instantiate_node(SyntaxNode,input, index...index) + end + s3 << r4 + if r4 + s6, i6 = [], index + loop do + r7 = _nt_space + if r7 + s6 << r7 + else + break + end + end + if s6.empty? + @index = i6 + r6 = nil + else + r6 = instantiate_node(SyntaxNode,input, i6...index, s6) + end + s3 << r6 + end + if s3.last + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + r3.extend(GlobalDefinition0) + else + @index = i3 + r3 = nil + end + if r3 + r2 = r3 + else + r2 = instantiate_node(SyntaxNode,input, index...index) + end + s1 << r2 + if r2 + r8 = _nt_single_declaration_with_initialization + s1 << r8 + if r8 + s9, i9 = [], index + loop do + r10 = _nt_space + if r10 + s9 << r10 + else + break + end + end + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + s1 << r9 + if r9 + if (match_len = has_terminal?(';', false, index)) + r11 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r11 = nil + end + s1 << r11 + end + end + end + if s1.last + r1 = instantiate_node(Idl::GlobalWithInitializationSyntaxNode,input, i1...index, s1) + r1.extend(GlobalDefinition1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + i12, s12 = index, [] + r13 = _nt_declaration + s12 << r13 + if r13 + s14, i14 = [], index + loop do + r15 = _nt_space + if r15 + s14 << r15 + else + break + end + end + r14 = instantiate_node(SyntaxNode,input, i14...index, s14) + s12 << r14 + if r14 + if (match_len = has_terminal?(';', false, index)) + r16 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r16 = nil + end + s12 << r16 + end + end + if s12.last + r12 = instantiate_node(GlobalSyntaxNode,input, i12...index, s12) + r12.extend(GlobalDefinition2) + else + @index = i12 + r12 = nil + end + if r12 + r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true + r0 = r12 + else + @index = i0 + r0 = nil + end + end + + node_cache[:global_definition][start_index] = r0 + + r0 + end + + module EnumDefinition0 + def user_type_name + elements[4] + end + + end + + module EnumDefinition1 + def int + elements[0] + end + + end + + module EnumDefinition2 + def user_type_name + elements[0] + end + + def i + elements[2] + end + end + + module EnumDefinition3 + def user_type_name + elements[2] + end + + def e + elements[6] + end + + end + + def _nt_enum_definition + start_index = index + if node_cache[:enum_definition].has_key?(index) + cached = node_cache[:enum_definition][index] + if cached + node_cache[:enum_definition][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + if (match_len = has_terminal?('generated', false, index)) + r2 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'generated\'') + r2 = nil + end + s1 << r2 + if r2 + s3, i3 = [], index + loop do + r4 = _nt_space + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + if r3 + if (match_len = has_terminal?('enum', false, index)) + r5 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'enum\'') + r5 = nil + end + s1 << r5 + if r5 + s6, i6 = [], index + loop do + r7 = _nt_space + if r7 + s6 << r7 + else + break + end + end + if s6.empty? + @index = i6 + r6 = nil + else + r6 = instantiate_node(SyntaxNode,input, i6...index, s6) + end + s1 << r6 + if r6 + r8 = _nt_user_type_name + s1 << r8 + if r8 + s9, i9 = [], index + loop do + r10 = _nt_space + if r10 + s9 << r10 + else + break + end + end + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + s1 << r9 + if r9 + if (match_len = has_terminal?(';', false, index)) + r11 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r11 = nil + end + s1 << r11 + end + end + end + end + end + end + if s1.last + r1 = instantiate_node(Idl::BuiltinEnumDefinitionSyntaxNode,input, i1...index, s1) + r1.extend(EnumDefinition0) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + i12, s12 = index, [] + if (match_len = has_terminal?('enum', false, index)) + r13 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'enum\'') + r13 = nil + end + s12 << r13 + if r13 + s14, i14 = [], index + loop do + r15 = _nt_space + if r15 + s14 << r15 + else + break + end + end + if s14.empty? + @index = i14 + r14 = nil + else + r14 = instantiate_node(SyntaxNode,input, i14...index, s14) + end + s12 << r14 + if r14 + r16 = _nt_user_type_name + s12 << r16 + if r16 + s17, i17 = [], index + loop do + r18 = _nt_space + if r18 + s17 << r18 + else + break + end + end + if s17.empty? + @index = i17 + r17 = nil + else + r17 = instantiate_node(SyntaxNode,input, i17...index, s17) + end + s12 << r17 + if r17 + if (match_len = has_terminal?('{', false, index)) + r19 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r19 = nil + end + s12 << r19 + if r19 + s20, i20 = [], index + loop do + r21 = _nt_space + if r21 + s20 << r21 + else + break + end + end + r20 = instantiate_node(SyntaxNode,input, i20...index, s20) + s12 << r20 + if r20 + s22, i22 = [], index + loop do + i23, s23 = index, [] + r24 = _nt_user_type_name + s23 << r24 + if r24 + s25, i25 = [], index + loop do + r26 = _nt_space + if r26 + s25 << r26 + else + break + end + end + if s25.empty? + @index = i25 + r25 = nil + else + r25 = instantiate_node(SyntaxNode,input, i25...index, s25) + end + s23 << r25 + if r25 + i28, s28 = index, [] + r29 = _nt_int + s28 << r29 + if r29 + s30, i30 = [], index + loop do + r31 = _nt_space + if r31 + s30 << r31 + else + break + end + end + if s30.empty? + @index = i30 + r30 = nil + else + r30 = instantiate_node(SyntaxNode,input, i30...index, s30) + end + s28 << r30 + end + if s28.last + r28 = instantiate_node(SyntaxNode,input, i28...index, s28) + r28.extend(EnumDefinition1) + else + @index = i28 + r28 = nil + end + if r28 + r27 = r28 + else + r27 = instantiate_node(SyntaxNode,input, index...index) + end + s23 << r27 + end + end + if s23.last + r23 = instantiate_node(SyntaxNode,input, i23...index, s23) + r23.extend(EnumDefinition2) + else + @index = i23 + r23 = nil + end + if r23 + s22 << r23 + else + break + end + end + if s22.empty? + @index = i22 + r22 = nil + else + r22 = instantiate_node(SyntaxNode,input, i22...index, s22) + end + s12 << r22 + if r22 + s32, i32 = [], index + loop do + r33 = _nt_space + if r33 + s32 << r33 + else + break + end + end + r32 = instantiate_node(SyntaxNode,input, i32...index, s32) + s12 << r32 + if r32 + if (match_len = has_terminal?('}', false, index)) + r34 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r34 = nil + end + s12 << r34 + end + end + end + end + end + end + end + end + if s12.last + r12 = instantiate_node(Idl::EnumDefinitionSyntaxNode,input, i12...index, s12) + r12.extend(EnumDefinition3) + else + @index = i12 + r12 = nil + end + if r12 + r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true + r0 = r12 + else + @index = i0 + r0 = nil + end + end + + node_cache[:enum_definition][start_index] = r0 + + r0 + end + + module EnumRef0 + def enum_class + elements[0] + end + + def member + elements[4] + end + end + + def _nt_enum_ref + start_index = index + if node_cache[:enum_ref].has_key?(index) + cached = node_cache[:enum_ref][index] + if cached + node_cache[:enum_ref][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_user_type_name + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('::', false, index)) + r4 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'::\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_user_type_name + s0 << r7 + end + end + end + end + if s0.last + r0 = instantiate_node(EnumRefSyntaxNode,input, i0...index, s0) + r0.extend(EnumRef0) + else + @index = i0 + r0 = nil + end + + node_cache[:enum_ref][start_index] = r0 + + r0 + end + + module BitfieldDefinition0 + def int + elements[3] + end + end + + module BitfieldDefinition1 + def int + elements[0] + end + + def lsb + elements[1] + end + end + + module BitfieldDefinition2 + def field_name + elements[0] + end + + def range + elements[2] + end + + end + + module BitfieldDefinition3 + def int + elements[4] + end + + def user_type_name + elements[8] + end + + def e + elements[12] + end + + end + + def _nt_bitfield_definition + start_index = index + if node_cache[:bitfield_definition].has_key?(index) + cached = node_cache[:bitfield_definition][index] + if cached + node_cache[:bitfield_definition][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('bitfield', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'bitfield\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('(', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_int + s0 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s0 << r8 + if r8 + if (match_len = has_terminal?(')', false, index)) + r10 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r10 = nil + end + s0 << r10 + if r10 + s11, i11 = [], index + loop do + r12 = _nt_space + if r12 + s11 << r12 + else + break + end + end + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + s0 << r11 + if r11 + r13 = _nt_user_type_name + s0 << r13 + if r13 + s14, i14 = [], index + loop do + r15 = _nt_space + if r15 + s14 << r15 + else + break + end + end + r14 = instantiate_node(SyntaxNode,input, i14...index, s14) + s0 << r14 + if r14 + if (match_len = has_terminal?('{', false, index)) + r16 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r16 = nil + end + s0 << r16 + if r16 + s17, i17 = [], index + loop do + r18 = _nt_space + if r18 + s17 << r18 + else + break + end + end + r17 = instantiate_node(SyntaxNode,input, i17...index, s17) + s0 << r17 + if r17 + s19, i19 = [], index + loop do + i20, s20 = index, [] + r21 = _nt_field_name + s20 << r21 + if r21 + s22, i22 = [], index + loop do + r23 = _nt_space + if r23 + s22 << r23 + else + break + end + end + if s22.empty? + @index = i22 + r22 = nil + else + r22 = instantiate_node(SyntaxNode,input, i22...index, s22) + end + s20 << r22 + if r22 + i24, s24 = index, [] + r25 = _nt_int + s24 << r25 + if r25 + i27, s27 = index, [] + s28, i28 = [], index + loop do + r29 = _nt_space + if r29 + s28 << r29 + else + break + end + end + r28 = instantiate_node(SyntaxNode,input, i28...index, s28) + s27 << r28 + if r28 + if (match_len = has_terminal?('-', false, index)) + r30 = true + @index += match_len + else + terminal_parse_failure('\'-\'') + r30 = nil + end + s27 << r30 + if r30 + s31, i31 = [], index + loop do + r32 = _nt_space + if r32 + s31 << r32 + else + break + end + end + r31 = instantiate_node(SyntaxNode,input, i31...index, s31) + s27 << r31 + if r31 + r33 = _nt_int + s27 << r33 + end + end + end + if s27.last + r27 = instantiate_node(SyntaxNode,input, i27...index, s27) + r27.extend(BitfieldDefinition0) + else + @index = i27 + r27 = nil + end + if r27 + r26 = r27 + else + r26 = instantiate_node(SyntaxNode,input, index...index) + end + s24 << r26 + end + if s24.last + r24 = instantiate_node(SyntaxNode,input, i24...index, s24) + r24.extend(BitfieldDefinition1) + else + @index = i24 + r24 = nil + end + s20 << r24 + if r24 + s34, i34 = [], index + loop do + r35 = _nt_space + if r35 + s34 << r35 + else + break + end + end + if s34.empty? + @index = i34 + r34 = nil + else + r34 = instantiate_node(SyntaxNode,input, i34...index, s34) + end + s20 << r34 + end + end + end + if s20.last + r20 = instantiate_node(SyntaxNode,input, i20...index, s20) + r20.extend(BitfieldDefinition2) + else + @index = i20 + r20 = nil + end + if r20 + s19 << r20 + else + break + end + end + if s19.empty? + @index = i19 + r19 = nil + else + r19 = instantiate_node(SyntaxNode,input, i19...index, s19) + end + s0 << r19 + if r19 + s36, i36 = [], index + loop do + r37 = _nt_space + if r37 + s36 << r37 + else + break + end + end + r36 = instantiate_node(SyntaxNode,input, i36...index, s36) + s0 << r36 + if r36 + if (match_len = has_terminal?('}', false, index)) + r38 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r38 = nil + end + s0 << r38 + end + end + end + end + end + end + end + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::BitfieldDefinitionSyntaxNode,input, i0...index, s0) + r0.extend(BitfieldDefinition3) + else + @index = i0 + r0 = nil + end + + node_cache[:bitfield_definition][start_index] = r0 + + r0 + end + + module StructDefinition0 + def type_name + elements[0] + end + + def id + elements[2] + end + + end + + module StructDefinition1 + def user_type_name + elements[2] + end + + def member + elements[6] + end + + end + + def _nt_struct_definition + start_index = index + if node_cache[:struct_definition].has_key?(index) + cached = node_cache[:struct_definition][index] + if cached + node_cache[:struct_definition][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('struct', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'struct\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + r4 = _nt_user_type_name + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + if (match_len = has_terminal?('{', false, index)) + r7 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r7 = nil + end + s0 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s0 << r8 + if r8 + s10, i10 = [], index + loop do + i11, s11 = index, [] + r12 = _nt_type_name + s11 << r12 + if r12 + s13, i13 = [], index + loop do + r14 = _nt_space + if r14 + s13 << r14 + else + break + end + end + if s13.empty? + @index = i13 + r13 = nil + else + r13 = instantiate_node(SyntaxNode,input, i13...index, s13) + end + s11 << r13 + if r13 + r15 = _nt_id + s11 << r15 + if r15 + s16, i16 = [], index + loop do + r17 = _nt_space + if r17 + s16 << r17 + else + break + end + end + r16 = instantiate_node(SyntaxNode,input, i16...index, s16) + s11 << r16 + if r16 + if (match_len = has_terminal?(';', false, index)) + r18 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r18 = nil + end + s11 << r18 + if r18 + s19, i19 = [], index + loop do + r20 = _nt_space + if r20 + s19 << r20 + else + break + end + end + r19 = instantiate_node(SyntaxNode,input, i19...index, s19) + s11 << r19 + end + end + end + end + end + if s11.last + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + r11.extend(StructDefinition0) + else + @index = i11 + r11 = nil + end + if r11 + s10 << r11 + else + break + end + end + if s10.empty? + @index = i10 + r10 = nil + else + r10 = instantiate_node(SyntaxNode,input, i10...index, s10) + end + s0 << r10 + if r10 + if (match_len = has_terminal?('}', false, index)) + r21 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r21 = nil + end + s0 << r21 + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::StructDefinitionSyntaxNode,input, i0...index, s0) + r0.extend(StructDefinition1) + else + @index = i0 + r0 = nil + end + + node_cache[:struct_definition][start_index] = r0 + + r0 + end + + module VersionString0 + end + + def _nt_version_string + start_index = index + if node_cache[:version_string].has_key?(index) + cached = node_cache[:version_string][index] + if cached + node_cache[:version_string][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + s1, i1 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r2 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r2 = nil + end + if r2 + s1 << r2 + else + break + end + end + if s1.empty? + @index = i1 + r1 = nil + else + r1 = instantiate_node(SyntaxNode,input, i1...index, s1) + end + s0 << r1 + if r1 + if (match_len = has_terminal?('.', false, index)) + r3 = true + @index += match_len + else + terminal_parse_failure('\'.\'') + r3 = nil + end + s0 << r3 + if r3 + s4, i4 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r5 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r5 = nil + end + if r5 + s4 << r5 + else + break + end + end + if s4.empty? + @index = i4 + r4 = nil + else + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + end + s0 << r4 + end + end + if s0.last + r0 = instantiate_node(SyntaxNode,input, i0...index, s0) + r0.extend(VersionString0) + else + @index = i0 + r0 = nil + end + + node_cache[:version_string][start_index] = r0 + + r0 + end + + module Int0 + end + + module Int1 + end + + module Int2 + end + + module Int3 + end + + module Int4 + end + + module Int5 + end + + module Int6 + end + + module Int7 + end + + module Int8 + end + + module Int9 + end + + module Int10 + end + + module Int11 + end + + module Int12 + end + + module Int13 + end + + module Int14 + end + + module Int15 + end + + module Int16 + end + + def _nt_int + start_index = index + if node_cache[:int].has_key?(index) + cached = node_cache[:int][index] + if cached + node_cache[:int][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + i3 = index + s4, i4 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r5 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r5 = nil + end + if r5 + s4 << r5 + else + break + end + end + if s4.empty? + @index = i4 + r4 = nil + else + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + end + if r4 + r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true + r3 = r4 + else + if (match_len = has_terminal?('MXLEN', false, index)) + r6 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'MXLEN\'') + r6 = nil + end + if r6 + r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true + r3 = r6 + else + @index = i3 + r3 = nil + end + end + if r3 + r2 = r3 + else + r2 = instantiate_node(SyntaxNode,input, index...index) + end + s1 << r2 + if r2 + if (match_len = has_terminal?("'", false, index)) + r7 = true + @index += match_len + else + terminal_parse_failure('"\'"') + r7 = nil + end + s1 << r7 + if r7 + if (match_len = has_terminal?('b', false, index)) + r8 = true + @index += match_len + else + terminal_parse_failure('\'b\'') + r8 = nil + end + s1 << r8 + if r8 + if has_terminal?(@regexps[gr = '\A[0-1xX]'] ||= Regexp.new(gr), :regexp, index) + r9 = true + @index += 1 + else + terminal_parse_failure('[0-1xX]') + r9 = nil + end + s1 << r9 + if r9 + s10, i10 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-1_xX]'] ||= Regexp.new(gr), :regexp, index) + r11 = true + @index += 1 + else + terminal_parse_failure('[0-1_xX]') + r11 = nil + end + if r11 + s10 << r11 + else + break + end + end + r10 = instantiate_node(SyntaxNode,input, i10...index, s10) + s1 << r10 + end + end + end + end + if s1.last + r1 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i1...index, s1) + r1.extend(Int0) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + i12, s12 = index, [] + i14 = index + s15, i15 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r16 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r16 = nil + end + if r16 + s15 << r16 + else + break + end + end + if s15.empty? + @index = i15 + r15 = nil + else + r15 = instantiate_node(SyntaxNode,input, i15...index, s15) + end + if r15 + r15 = SyntaxNode.new(input, (index-1)...index) if r15 == true + r14 = r15 + else + if (match_len = has_terminal?('MXLEN', false, index)) + r17 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'MXLEN\'') + r17 = nil + end + if r17 + r17 = SyntaxNode.new(input, (index-1)...index) if r17 == true + r14 = r17 + else + @index = i14 + r14 = nil + end + end + if r14 + r13 = r14 + else + r13 = instantiate_node(SyntaxNode,input, index...index) + end + s12 << r13 + if r13 + if (match_len = has_terminal?("'", false, index)) + r18 = true + @index += match_len + else + terminal_parse_failure('"\'"') + r18 = nil + end + s12 << r18 + if r18 + if (match_len = has_terminal?('o', false, index)) + r19 = true + @index += match_len + else + terminal_parse_failure('\'o\'') + r19 = nil + end + s12 << r19 + if r19 + if has_terminal?(@regexps[gr = '\A[0-7xX]'] ||= Regexp.new(gr), :regexp, index) + r20 = true + @index += 1 + else + terminal_parse_failure('[0-7xX]') + r20 = nil + end + s12 << r20 + if r20 + s21, i21 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-7_xX]'] ||= Regexp.new(gr), :regexp, index) + r22 = true + @index += 1 + else + terminal_parse_failure('[0-7_xX]') + r22 = nil + end + if r22 + s21 << r22 + else + break + end + end + r21 = instantiate_node(SyntaxNode,input, i21...index, s21) + s12 << r21 + end + end + end + end + if s12.last + r12 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i12...index, s12) + r12.extend(Int1) + else + @index = i12 + r12 = nil + end + if r12 + r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true + r0 = r12 + else + i23, s23 = index, [] + i25 = index + s26, i26 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r27 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r27 = nil + end + if r27 + s26 << r27 + else + break + end + end + if s26.empty? + @index = i26 + r26 = nil + else + r26 = instantiate_node(SyntaxNode,input, i26...index, s26) + end + if r26 + r26 = SyntaxNode.new(input, (index-1)...index) if r26 == true + r25 = r26 + else + if (match_len = has_terminal?('MXLEN', false, index)) + r28 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'MXLEN\'') + r28 = nil + end + if r28 + r28 = SyntaxNode.new(input, (index-1)...index) if r28 == true + r25 = r28 + else + @index = i25 + r25 = nil + end + end + if r25 + r24 = r25 + else + r24 = instantiate_node(SyntaxNode,input, index...index) + end + s23 << r24 + if r24 + if (match_len = has_terminal?("'", false, index)) + r29 = true + @index += match_len + else + terminal_parse_failure('"\'"') + r29 = nil + end + s23 << r29 + if r29 + if (match_len = has_terminal?('d', false, index)) + r31 = true + @index += match_len + else + terminal_parse_failure('\'d\'') + r31 = nil + end + if r31 + r30 = r31 + else + r30 = instantiate_node(SyntaxNode,input, index...index) + end + s23 << r30 + if r30 + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r32 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r32 = nil + end + s23 << r32 + if r32 + s33, i33 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9_]'] ||= Regexp.new(gr), :regexp, index) + r34 = true + @index += 1 + else + terminal_parse_failure('[0-9_]') + r34 = nil + end + if r34 + s33 << r34 + else + break + end + end + r33 = instantiate_node(SyntaxNode,input, i33...index, s33) + s23 << r33 + end + end + end + end + if s23.last + r23 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i23...index, s23) + r23.extend(Int2) + else + @index = i23 + r23 = nil + end + if r23 + r23 = SyntaxNode.new(input, (index-1)...index) if r23 == true + r0 = r23 + else + i35, s35 = index, [] + i37 = index + s38, i38 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r39 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r39 = nil + end + if r39 + s38 << r39 + else + break + end + end + if s38.empty? + @index = i38 + r38 = nil + else + r38 = instantiate_node(SyntaxNode,input, i38...index, s38) + end + if r38 + r38 = SyntaxNode.new(input, (index-1)...index) if r38 == true + r37 = r38 + else + if (match_len = has_terminal?('MXLEN', false, index)) + r40 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'MXLEN\'') + r40 = nil + end + if r40 + r40 = SyntaxNode.new(input, (index-1)...index) if r40 == true + r37 = r40 + else + @index = i37 + r37 = nil + end + end + if r37 + r36 = r37 + else + r36 = instantiate_node(SyntaxNode,input, index...index) + end + s35 << r36 + if r36 + if (match_len = has_terminal?("'", false, index)) + r41 = true + @index += match_len + else + terminal_parse_failure('"\'"') + r41 = nil + end + s35 << r41 + if r41 + if (match_len = has_terminal?('h', false, index)) + r42 = true + @index += match_len + else + terminal_parse_failure('\'h\'') + r42 = nil + end + s35 << r42 + if r42 + if has_terminal?(@regexps[gr = '\A[0-9a-fA-FxX]'] ||= Regexp.new(gr), :regexp, index) + r43 = true + @index += 1 + else + terminal_parse_failure('[0-9a-fA-FxX]') + r43 = nil + end + s35 << r43 + if r43 + s44, i44 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9a-fA-F_xX]'] ||= Regexp.new(gr), :regexp, index) + r45 = true + @index += 1 + else + terminal_parse_failure('[0-9a-fA-F_xX]') + r45 = nil + end + if r45 + s44 << r45 + else + break + end + end + r44 = instantiate_node(SyntaxNode,input, i44...index, s44) + s35 << r44 + end + end + end + end + if s35.last + r35 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i35...index, s35) + r35.extend(Int3) + else + @index = i35 + r35 = nil + end + if r35 + r35 = SyntaxNode.new(input, (index-1)...index) if r35 == true + r0 = r35 + else + i46, s46 = index, [] + i48 = index + s49, i49 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r50 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r50 = nil + end + if r50 + s49 << r50 + else + break + end + end + if s49.empty? + @index = i49 + r49 = nil + else + r49 = instantiate_node(SyntaxNode,input, i49...index, s49) + end + if r49 + r49 = SyntaxNode.new(input, (index-1)...index) if r49 == true + r48 = r49 + else + if (match_len = has_terminal?('MXLEN', false, index)) + r51 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'MXLEN\'') + r51 = nil + end + if r51 + r51 = SyntaxNode.new(input, (index-1)...index) if r51 == true + r48 = r51 + else + @index = i48 + r48 = nil + end + end + if r48 + r47 = r48 + else + r47 = instantiate_node(SyntaxNode,input, index...index) + end + s46 << r47 + if r47 + if (match_len = has_terminal?("'", false, index)) + r52 = true + @index += match_len + else + terminal_parse_failure('"\'"') + r52 = nil + end + s46 << r52 + if r52 + if (match_len = has_terminal?('sb', false, index)) + r53 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'sb\'') + r53 = nil + end + s46 << r53 + if r53 + if has_terminal?(@regexps[gr = '\A[0-1xX]'] ||= Regexp.new(gr), :regexp, index) + r54 = true + @index += 1 + else + terminal_parse_failure('[0-1xX]') + r54 = nil + end + s46 << r54 + if r54 + s55, i55 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-1_xX]'] ||= Regexp.new(gr), :regexp, index) + r56 = true + @index += 1 + else + terminal_parse_failure('[0-1_xX]') + r56 = nil + end + if r56 + s55 << r56 + else + break + end + end + r55 = instantiate_node(SyntaxNode,input, i55...index, s55) + s46 << r55 + end + end + end + end + if s46.last + r46 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i46...index, s46) + r46.extend(Int4) + else + @index = i46 + r46 = nil + end + if r46 + r46 = SyntaxNode.new(input, (index-1)...index) if r46 == true + r0 = r46 + else + i57, s57 = index, [] + i59 = index + s60, i60 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r61 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r61 = nil + end + if r61 + s60 << r61 + else + break + end + end + if s60.empty? + @index = i60 + r60 = nil + else + r60 = instantiate_node(SyntaxNode,input, i60...index, s60) + end + if r60 + r60 = SyntaxNode.new(input, (index-1)...index) if r60 == true + r59 = r60 + else + if (match_len = has_terminal?('MXLEN', false, index)) + r62 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'MXLEN\'') + r62 = nil + end + if r62 + r62 = SyntaxNode.new(input, (index-1)...index) if r62 == true + r59 = r62 + else + @index = i59 + r59 = nil + end + end + if r59 + r58 = r59 + else + r58 = instantiate_node(SyntaxNode,input, index...index) + end + s57 << r58 + if r58 + if (match_len = has_terminal?("'", false, index)) + r63 = true + @index += match_len + else + terminal_parse_failure('"\'"') + r63 = nil + end + s57 << r63 + if r63 + if (match_len = has_terminal?('so', false, index)) + r64 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'so\'') + r64 = nil + end + s57 << r64 + if r64 + if has_terminal?(@regexps[gr = '\A[0-7xX]'] ||= Regexp.new(gr), :regexp, index) + r65 = true + @index += 1 + else + terminal_parse_failure('[0-7xX]') + r65 = nil + end + s57 << r65 + if r65 + s66, i66 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-7_xX]'] ||= Regexp.new(gr), :regexp, index) + r67 = true + @index += 1 + else + terminal_parse_failure('[0-7_xX]') + r67 = nil + end + if r67 + s66 << r67 + else + break + end + end + r66 = instantiate_node(SyntaxNode,input, i66...index, s66) + s57 << r66 + end + end + end + end + if s57.last + r57 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i57...index, s57) + r57.extend(Int5) + else + @index = i57 + r57 = nil + end + if r57 + r57 = SyntaxNode.new(input, (index-1)...index) if r57 == true + r0 = r57 + else + i68, s68 = index, [] + i70 = index + s71, i71 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r72 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r72 = nil + end + if r72 + s71 << r72 + else + break + end + end + if s71.empty? + @index = i71 + r71 = nil + else + r71 = instantiate_node(SyntaxNode,input, i71...index, s71) + end + if r71 + r71 = SyntaxNode.new(input, (index-1)...index) if r71 == true + r70 = r71 + else + if (match_len = has_terminal?('MXLEN', false, index)) + r73 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'MXLEN\'') + r73 = nil + end + if r73 + r73 = SyntaxNode.new(input, (index-1)...index) if r73 == true + r70 = r73 + else + @index = i70 + r70 = nil + end + end + if r70 + r69 = r70 + else + r69 = instantiate_node(SyntaxNode,input, index...index) + end + s68 << r69 + if r69 + if (match_len = has_terminal?("'", false, index)) + r74 = true + @index += match_len + else + terminal_parse_failure('"\'"') + r74 = nil + end + s68 << r74 + if r74 + if (match_len = has_terminal?('s', false, index)) + r75 = true + @index += match_len + else + terminal_parse_failure('\'s\'') + r75 = nil + end + s68 << r75 + if r75 + if (match_len = has_terminal?('d', false, index)) + r77 = true + @index += match_len + else + terminal_parse_failure('\'d\'') + r77 = nil + end + if r77 + r76 = r77 + else + r76 = instantiate_node(SyntaxNode,input, index...index) + end + s68 << r76 + if r76 + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r78 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r78 = nil + end + s68 << r78 + if r78 + s79, i79 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9_]'] ||= Regexp.new(gr), :regexp, index) + r80 = true + @index += 1 + else + terminal_parse_failure('[0-9_]') + r80 = nil + end + if r80 + s79 << r80 + else + break + end + end + r79 = instantiate_node(SyntaxNode,input, i79...index, s79) + s68 << r79 + end + end + end + end + end + if s68.last + r68 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i68...index, s68) + r68.extend(Int6) + else + @index = i68 + r68 = nil + end + if r68 + r68 = SyntaxNode.new(input, (index-1)...index) if r68 == true + r0 = r68 + else + i81, s81 = index, [] + i83 = index + s84, i84 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r85 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r85 = nil + end + if r85 + s84 << r85 + else + break + end + end + if s84.empty? + @index = i84 + r84 = nil + else + r84 = instantiate_node(SyntaxNode,input, i84...index, s84) + end + if r84 + r84 = SyntaxNode.new(input, (index-1)...index) if r84 == true + r83 = r84 + else + if (match_len = has_terminal?('MXLEN', false, index)) + r86 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'MXLEN\'') + r86 = nil + end + if r86 + r86 = SyntaxNode.new(input, (index-1)...index) if r86 == true + r83 = r86 + else + @index = i83 + r83 = nil + end + end + if r83 + r82 = r83 + else + r82 = instantiate_node(SyntaxNode,input, index...index) + end + s81 << r82 + if r82 + if (match_len = has_terminal?("'", false, index)) + r87 = true + @index += match_len + else + terminal_parse_failure('"\'"') + r87 = nil + end + s81 << r87 + if r87 + if (match_len = has_terminal?('sh', false, index)) + r88 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'sh\'') + r88 = nil + end + s81 << r88 + if r88 + if has_terminal?(@regexps[gr = '\A[0-9a-fA-FxX]'] ||= Regexp.new(gr), :regexp, index) + r89 = true + @index += 1 + else + terminal_parse_failure('[0-9a-fA-FxX]') + r89 = nil + end + s81 << r89 + if r89 + s90, i90 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9a-fA-F_xX]'] ||= Regexp.new(gr), :regexp, index) + r91 = true + @index += 1 + else + terminal_parse_failure('[0-9a-fA-F_xX]') + r91 = nil + end + if r91 + s90 << r91 + else + break + end + end + r90 = instantiate_node(SyntaxNode,input, i90...index, s90) + s81 << r90 + end + end + end + end + if s81.last + r81 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i81...index, s81) + r81.extend(Int7) + else + @index = i81 + r81 = nil + end + if r81 + r81 = SyntaxNode.new(input, (index-1)...index) if r81 == true + r0 = r81 + else + i92, s92 = index, [] + if (match_len = has_terminal?('0b', false, index)) + r93 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'0b\'') + r93 = nil + end + s92 << r93 + if r93 + if has_terminal?(@regexps[gr = '\A[0-1]'] ||= Regexp.new(gr), :regexp, index) + r94 = true + @index += 1 + else + terminal_parse_failure('[0-1]') + r94 = nil + end + s92 << r94 + if r94 + s95, i95 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-1_]'] ||= Regexp.new(gr), :regexp, index) + r96 = true + @index += 1 + else + terminal_parse_failure('[0-1_]') + r96 = nil + end + if r96 + s95 << r96 + else + break + end + end + r95 = instantiate_node(SyntaxNode,input, i95...index, s95) + s92 << r95 + if r95 + if (match_len = has_terminal?('s', false, index)) + r97 = true + @index += match_len + else + terminal_parse_failure('\'s\'') + r97 = nil + end + s92 << r97 + end + end + end + if s92.last + r92 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i92...index, s92) + r92.extend(Int8) + else + @index = i92 + r92 = nil + end + if r92 + r92 = SyntaxNode.new(input, (index-1)...index) if r92 == true + r0 = r92 + else + i98, s98 = index, [] + if (match_len = has_terminal?('0', false, index)) + r99 = true + @index += match_len + else + terminal_parse_failure('\'0\'') + r99 = nil + end + s98 << r99 + if r99 + if has_terminal?(@regexps[gr = '\A[0-7]'] ||= Regexp.new(gr), :regexp, index) + r100 = true + @index += 1 + else + terminal_parse_failure('[0-7]') + r100 = nil + end + s98 << r100 + if r100 + s101, i101 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-7_]'] ||= Regexp.new(gr), :regexp, index) + r102 = true + @index += 1 + else + terminal_parse_failure('[0-7_]') + r102 = nil + end + if r102 + s101 << r102 + else + break + end + end + r101 = instantiate_node(SyntaxNode,input, i101...index, s101) + s98 << r101 + if r101 + if (match_len = has_terminal?('s', false, index)) + r103 = true + @index += match_len + else + terminal_parse_failure('\'s\'') + r103 = nil + end + s98 << r103 + end + end + end + if s98.last + r98 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i98...index, s98) + r98.extend(Int9) + else + @index = i98 + r98 = nil + end + if r98 + r98 = SyntaxNode.new(input, (index-1)...index) if r98 == true + r0 = r98 + else + i104, s104 = index, [] + if has_terminal?(@regexps[gr = '\A[1-9]'] ||= Regexp.new(gr), :regexp, index) + r105 = true + @index += 1 + else + terminal_parse_failure('[1-9]') + r105 = nil + end + s104 << r105 + if r105 + s106, i106 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r107 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r107 = nil + end + if r107 + s106 << r107 + else + break + end + end + r106 = instantiate_node(SyntaxNode,input, i106...index, s106) + s104 << r106 + if r106 + if (match_len = has_terminal?('s', false, index)) + r108 = true + @index += match_len + else + terminal_parse_failure('\'s\'') + r108 = nil + end + s104 << r108 + end + end + if s104.last + r104 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i104...index, s104) + r104.extend(Int10) + else + @index = i104 + r104 = nil + end + if r104 + r104 = SyntaxNode.new(input, (index-1)...index) if r104 == true + r0 = r104 + else + i109, s109 = index, [] + if (match_len = has_terminal?('0x', false, index)) + r110 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'0x\'') + r110 = nil + end + s109 << r110 + if r110 + if has_terminal?(@regexps[gr = '\A[0-9a-fA-F]'] ||= Regexp.new(gr), :regexp, index) + r111 = true + @index += 1 + else + terminal_parse_failure('[0-9a-fA-F]') + r111 = nil + end + s109 << r111 + if r111 + s112, i112 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9a-fA-F]'] ||= Regexp.new(gr), :regexp, index) + r113 = true + @index += 1 + else + terminal_parse_failure('[0-9a-fA-F]') + r113 = nil + end + if r113 + s112 << r113 + else + break + end + end + r112 = instantiate_node(SyntaxNode,input, i112...index, s112) + s109 << r112 + if r112 + if (match_len = has_terminal?('s', false, index)) + r114 = true + @index += match_len + else + terminal_parse_failure('\'s\'') + r114 = nil + end + s109 << r114 + end + end + end + if s109.last + r109 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i109...index, s109) + r109.extend(Int11) + else + @index = i109 + r109 = nil + end + if r109 + r109 = SyntaxNode.new(input, (index-1)...index) if r109 == true + r0 = r109 + else + i115, s115 = index, [] + if (match_len = has_terminal?('0b', false, index)) + r116 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'0b\'') + r116 = nil + end + s115 << r116 + if r116 + if has_terminal?(@regexps[gr = '\A[0-1]'] ||= Regexp.new(gr), :regexp, index) + r117 = true + @index += 1 + else + terminal_parse_failure('[0-1]') + r117 = nil + end + s115 << r117 + if r117 + s118, i118 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-1_]'] ||= Regexp.new(gr), :regexp, index) + r119 = true + @index += 1 + else + terminal_parse_failure('[0-1_]') + r119 = nil + end + if r119 + s118 << r119 + else + break + end + end + r118 = instantiate_node(SyntaxNode,input, i118...index, s118) + s115 << r118 + end + end + if s115.last + r115 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i115...index, s115) + r115.extend(Int12) + else + @index = i115 + r115 = nil + end + if r115 + r115 = SyntaxNode.new(input, (index-1)...index) if r115 == true + r0 = r115 + else + i120, s120 = index, [] + if (match_len = has_terminal?('0', false, index)) + r121 = true + @index += match_len + else + terminal_parse_failure('\'0\'') + r121 = nil + end + s120 << r121 + if r121 + if has_terminal?(@regexps[gr = '\A[0-7]'] ||= Regexp.new(gr), :regexp, index) + r122 = true + @index += 1 + else + terminal_parse_failure('[0-7]') + r122 = nil + end + s120 << r122 + if r122 + s123, i123 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-7_]'] ||= Regexp.new(gr), :regexp, index) + r124 = true + @index += 1 + else + terminal_parse_failure('[0-7_]') + r124 = nil + end + if r124 + s123 << r124 + else + break + end + end + r123 = instantiate_node(SyntaxNode,input, i123...index, s123) + s120 << r123 + end + end + if s120.last + r120 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i120...index, s120) + r120.extend(Int13) + else + @index = i120 + r120 = nil + end + if r120 + r120 = SyntaxNode.new(input, (index-1)...index) if r120 == true + r0 = r120 + else + i125, s125 = index, [] + if has_terminal?(@regexps[gr = '\A[1-9]'] ||= Regexp.new(gr), :regexp, index) + r126 = true + @index += 1 + else + terminal_parse_failure('[1-9]') + r126 = nil + end + s125 << r126 + if r126 + s127, i127 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9]'] ||= Regexp.new(gr), :regexp, index) + r128 = true + @index += 1 + else + terminal_parse_failure('[0-9]') + r128 = nil + end + if r128 + s127 << r128 + else + break + end + end + r127 = instantiate_node(SyntaxNode,input, i127...index, s127) + s125 << r127 + end + if s125.last + r125 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i125...index, s125) + r125.extend(Int14) + else + @index = i125 + r125 = nil + end + if r125 + r125 = SyntaxNode.new(input, (index-1)...index) if r125 == true + r0 = r125 + else + i129, s129 = index, [] + if (match_len = has_terminal?('0x', false, index)) + r130 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'0x\'') + r130 = nil + end + s129 << r130 + if r130 + if has_terminal?(@regexps[gr = '\A[0-9a-fA-F]'] ||= Regexp.new(gr), :regexp, index) + r131 = true + @index += 1 + else + terminal_parse_failure('[0-9a-fA-F]') + r131 = nil + end + s129 << r131 + if r131 + s132, i132 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[0-9a-fA-F]'] ||= Regexp.new(gr), :regexp, index) + r133 = true + @index += 1 + else + terminal_parse_failure('[0-9a-fA-F]') + r133 = nil + end + if r133 + s132 << r133 + else + break + end + end + r132 = instantiate_node(SyntaxNode,input, i132...index, s132) + s129 << r132 + end + end + if s129.last + r129 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i129...index, s129) + r129.extend(Int15) + else + @index = i129 + r129 = nil + end + if r129 + r129 = SyntaxNode.new(input, (index-1)...index) if r129 == true + r0 = r129 + else + i134, s134 = index, [] + if (match_len = has_terminal?('0', false, index)) + r135 = true + @index += match_len + else + terminal_parse_failure('\'0\'') + r135 = nil + end + s134 << r135 + if r135 + if (match_len = has_terminal?('s', false, index)) + r137 = true + @index += match_len + else + terminal_parse_failure('\'s\'') + r137 = nil + end + if r137 + r136 = r137 + else + r136 = instantiate_node(SyntaxNode,input, index...index) + end + s134 << r136 + end + if s134.last + r134 = instantiate_node(Idl::IntLiteralSyntaxNode,input, i134...index, s134) + r134.extend(Int16) + else + @index = i134 + r134 = nil + end + if r134 + r134 = SyntaxNode.new(input, (index-1)...index) if r134 == true + r0 = r134 + else + @index = i0 + r0 = nil + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + + node_cache[:int][start_index] = r0 + + r0 + end + + def _nt_p0_binary_operator + start_index = index + if node_cache[:p0_binary_operator].has_key?(index) + cached = node_cache[:p0_binary_operator][index] + if cached + node_cache[:p0_binary_operator][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + if (match_len = has_terminal?('/', false, index)) + r1 = true + @index += match_len + else + terminal_parse_failure('\'/\'') + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + if (match_len = has_terminal?('%', false, index)) + r2 = true + @index += match_len + else + terminal_parse_failure('\'%\'') + r2 = nil + end + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + if (match_len = has_terminal?('`*', false, index)) + r3 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'`*\'') + r3 = nil + end + if r3 + r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true + r0 = r3 + else + if (match_len = has_terminal?('*', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'*\'') + r4 = nil + end + if r4 + r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true + r0 = r4 + else + @index = i0 + r0 = nil + end + end + end + end + + node_cache[:p0_binary_operator][start_index] = r0 + + r0 + end + + def _nt_p1_binary_operator + start_index = index + if node_cache[:p1_binary_operator].has_key?(index) + cached = node_cache[:p1_binary_operator][index] + if cached + node_cache[:p1_binary_operator][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + if (match_len = has_terminal?('`+', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'`+\'') + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + if (match_len = has_terminal?('`-', false, index)) + r2 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'`-\'') + r2 = nil + end + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + if (match_len = has_terminal?('+', false, index)) + r3 = true + @index += match_len + else + terminal_parse_failure('\'+\'') + r3 = nil + end + if r3 + r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true + r0 = r3 + else + if (match_len = has_terminal?('-', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'-\'') + r4 = nil + end + if r4 + r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true + r0 = r4 + else + @index = i0 + r0 = nil + end + end + end + end + + node_cache[:p1_binary_operator][start_index] = r0 + + r0 + end + + def _nt_p2_binary_operator + start_index = index + if node_cache[:p2_binary_operator].has_key?(index) + cached = node_cache[:p2_binary_operator][index] + if cached + node_cache[:p2_binary_operator][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + if (match_len = has_terminal?('`<<', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'`<<\'') + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + if (match_len = has_terminal?('<<', false, index)) + r2 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'<<\'') + r2 = nil + end + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + if (match_len = has_terminal?('>>>', false, index)) + r3 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'>>>\'') + r3 = nil + end + if r3 + r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true + r0 = r3 + else + if (match_len = has_terminal?('>>', false, index)) + r4 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'>>\'') + r4 = nil + end + if r4 + r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true + r0 = r4 + else + @index = i0 + r0 = nil + end + end + end + end + + node_cache[:p2_binary_operator][start_index] = r0 + + r0 + end + + def _nt_p3_binary_operator + start_index = index + if node_cache[:p3_binary_operator].has_key?(index) + cached = node_cache[:p3_binary_operator][index] + if cached + node_cache[:p3_binary_operator][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + if (match_len = has_terminal?('<=', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'<=\'') + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + if (match_len = has_terminal?('>=', false, index)) + r2 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'>=\'') + r2 = nil + end + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + if (match_len = has_terminal?('<', false, index)) + r3 = true + @index += match_len + else + terminal_parse_failure('\'<\'') + r3 = nil + end + if r3 + r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true + r0 = r3 + else + if (match_len = has_terminal?('>', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'>\'') + r4 = nil + end + if r4 + r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true + r0 = r4 + else + @index = i0 + r0 = nil + end + end + end + end + + node_cache[:p3_binary_operator][start_index] = r0 + + r0 + end + + def _nt_p3_template_binary_operator + start_index = index + if node_cache[:p3_template_binary_operator].has_key?(index) + cached = node_cache[:p3_template_binary_operator][index] + if cached + node_cache[:p3_template_binary_operator][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + if (match_len = has_terminal?('<=', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'<=\'') + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + if (match_len = has_terminal?('<', false, index)) + r2 = true + @index += match_len + else + terminal_parse_failure('\'<\'') + r2 = nil + end + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + @index = i0 + r0 = nil + end + end + + node_cache[:p3_template_binary_operator][start_index] = r0 + + r0 + end + + def _nt_p4_binary_operator + start_index = index + if node_cache[:p4_binary_operator].has_key?(index) + cached = node_cache[:p4_binary_operator][index] + if cached + node_cache[:p4_binary_operator][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + if (match_len = has_terminal?('!=', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'!=\'') + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + if (match_len = has_terminal?('==', false, index)) + r2 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'==\'') + r2 = nil + end + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + @index = i0 + r0 = nil + end + end + + node_cache[:p4_binary_operator][start_index] = r0 + + r0 + end + + module P5BinaryOperator0 + end + + def _nt_p5_binary_operator + start_index = index + if node_cache[:p5_binary_operator].has_key?(index) + cached = node_cache[:p5_binary_operator][index] + if cached + node_cache[:p5_binary_operator][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('&', false, index)) + r1 = true + @index += match_len + else + terminal_parse_failure('\'&\'') + r1 = nil + end + s0 << r1 + if r1 + i2 = index + if (match_len = has_terminal?('&', false, index)) + r3 = true + @index += match_len + else + terminal_parse_failure('\'&\'') + r3 = nil + end + if r3 + @index = i2 + r2 = nil + terminal_parse_failure('\'&\'', true) + else + @terminal_failures.pop + @index = i2 + r2 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r2 + end + if s0.last + r0 = instantiate_node(SyntaxNode,input, i0...index, s0) + r0.extend(P5BinaryOperator0) + else + @index = i0 + r0 = nil + end + + node_cache[:p5_binary_operator][start_index] = r0 + + r0 + end + + def _nt_p6_binary_operator + start_index = index + if node_cache[:p6_binary_operator].has_key?(index) + cached = node_cache[:p6_binary_operator][index] + if cached + node_cache[:p6_binary_operator][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + if (match_len = has_terminal?('^', false, index)) + r0 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'^\'') + r0 = nil + end + + node_cache[:p6_binary_operator][start_index] = r0 + + r0 + end + + module P7BinaryOperator0 + end + + def _nt_p7_binary_operator + start_index = index + if node_cache[:p7_binary_operator].has_key?(index) + cached = node_cache[:p7_binary_operator][index] + if cached + node_cache[:p7_binary_operator][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('|', false, index)) + r1 = true + @index += match_len + else + terminal_parse_failure('\'|\'') + r1 = nil + end + s0 << r1 + if r1 + i2 = index + if (match_len = has_terminal?('|', false, index)) + r3 = true + @index += match_len + else + terminal_parse_failure('\'|\'') + r3 = nil + end + if r3 + @index = i2 + r2 = nil + terminal_parse_failure('\'|\'', true) + else + @terminal_failures.pop + @index = i2 + r2 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r2 + end + if s0.last + r0 = instantiate_node(SyntaxNode,input, i0...index, s0) + r0.extend(P7BinaryOperator0) + else + @index = i0 + r0 = nil + end + + node_cache[:p7_binary_operator][start_index] = r0 + + r0 + end + + def _nt_p8_binary_operator + start_index = index + if node_cache[:p8_binary_operator].has_key?(index) + cached = node_cache[:p8_binary_operator][index] + if cached + node_cache[:p8_binary_operator][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + if (match_len = has_terminal?('&&', false, index)) + r0 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'&&\'') + r0 = nil + end + + node_cache[:p8_binary_operator][start_index] = r0 + + r0 + end + + def _nt_p9_binary_operator + start_index = index + if node_cache[:p9_binary_operator].has_key?(index) + cached = node_cache[:p9_binary_operator][index] + if cached + node_cache[:p9_binary_operator][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + if (match_len = has_terminal?('||', false, index)) + r0 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'||\'') + r0 = nil + end + + node_cache[:p9_binary_operator][start_index] = r0 + + r0 + end + + def _nt_unary_operator + start_index = index + if node_cache[:unary_operator].has_key?(index) + cached = node_cache[:unary_operator][index] + if cached + node_cache[:unary_operator][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + if (match_len = has_terminal?('~', false, index)) + r1 = true + @index += match_len + else + terminal_parse_failure('\'~\'') + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + if (match_len = has_terminal?('-', false, index)) + r2 = true + @index += match_len + else + terminal_parse_failure('\'-\'') + r2 = nil + end + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + if (match_len = has_terminal?('!', false, index)) + r3 = true + @index += match_len + else + terminal_parse_failure('\'!\'') + r3 = nil + end + if r3 + r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true + r0 = r3 + else + @index = i0 + r0 = nil + end + end + end + + node_cache[:unary_operator][start_index] = r0 + + r0 + end + + module P0BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module P0BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_p0_binary_expression + start_index = index + if node_cache[:p0_binary_expression].has_key?(index) + cached = node_cache[:p0_binary_expression][index] + if cached + node_cache[:p0_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_unary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p0_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_unary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(P0BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(P0BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_unary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:p0_binary_expression][start_index] = r0 + + r0 + end + + module P1BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module P1BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_p1_binary_expression + start_index = index + if node_cache[:p1_binary_expression].has_key?(index) + cached = node_cache[:p1_binary_expression][index] + if cached + node_cache[:p1_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_p0_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p1_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p0_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(P1BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(P1BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_p0_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:p1_binary_expression][start_index] = r0 + + r0 + end + + module P2BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module P2BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_p2_binary_expression + start_index = index + if node_cache[:p2_binary_expression].has_key?(index) + cached = node_cache[:p2_binary_expression][index] + if cached + node_cache[:p2_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_p1_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p2_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p1_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(P2BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(P2BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_p1_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:p2_binary_expression][start_index] = r0 + + r0 + end + + module P3BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module P3BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_p3_binary_expression + start_index = index + if node_cache[:p3_binary_expression].has_key?(index) + cached = node_cache[:p3_binary_expression][index] + if cached + node_cache[:p3_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_p2_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p3_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p2_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(P3BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(P3BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_p2_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:p3_binary_expression][start_index] = r0 + + r0 + end + + module TemplateSafeP3BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module TemplateSafeP3BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_template_safe_p3_binary_expression + start_index = index + if node_cache[:template_safe_p3_binary_expression].has_key?(index) + cached = node_cache[:template_safe_p3_binary_expression][index] + if cached + node_cache[:template_safe_p3_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_p2_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p3_template_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p2_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(TemplateSafeP3BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(TemplateSafeP3BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_p2_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:template_safe_p3_binary_expression][start_index] = r0 + + r0 + end + + module P4BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module P4BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_p4_binary_expression + start_index = index + if node_cache[:p4_binary_expression].has_key?(index) + cached = node_cache[:p4_binary_expression][index] + if cached + node_cache[:p4_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_p3_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p4_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p3_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(P4BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(P4BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_p3_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:p4_binary_expression][start_index] = r0 + + r0 + end + + module TemplateSafeP4BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module TemplateSafeP4BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_template_safe_p4_binary_expression + start_index = index + if node_cache[:template_safe_p4_binary_expression].has_key?(index) + cached = node_cache[:template_safe_p4_binary_expression][index] + if cached + node_cache[:template_safe_p4_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_template_safe_p3_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p4_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p3_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(TemplateSafeP4BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(TemplateSafeP4BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_template_safe_p3_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:template_safe_p4_binary_expression][start_index] = r0 + + r0 + end + + module P5BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module P5BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_p5_binary_expression + start_index = index + if node_cache[:p5_binary_expression].has_key?(index) + cached = node_cache[:p5_binary_expression][index] + if cached + node_cache[:p5_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_p4_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p5_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p4_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(P5BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(P5BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_p4_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:p5_binary_expression][start_index] = r0 + + r0 + end + + module TemplateSafeP5BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module TemplateSafeP5BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_template_safe_p5_binary_expression + start_index = index + if node_cache[:template_safe_p5_binary_expression].has_key?(index) + cached = node_cache[:template_safe_p5_binary_expression][index] + if cached + node_cache[:template_safe_p5_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_template_safe_p4_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p5_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p4_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(TemplateSafeP5BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(TemplateSafeP5BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_template_safe_p4_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:template_safe_p5_binary_expression][start_index] = r0 + + r0 + end + + module P6BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module P6BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_p6_binary_expression + start_index = index + if node_cache[:p6_binary_expression].has_key?(index) + cached = node_cache[:p6_binary_expression][index] + if cached + node_cache[:p6_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_p5_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p6_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p5_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(P6BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(P6BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_p5_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:p6_binary_expression][start_index] = r0 + + r0 + end + + module TemplateSafeP6BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module TemplateSafeP6BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_template_safe_p6_binary_expression + start_index = index + if node_cache[:template_safe_p6_binary_expression].has_key?(index) + cached = node_cache[:template_safe_p6_binary_expression][index] + if cached + node_cache[:template_safe_p6_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_template_safe_p5_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p6_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p5_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(TemplateSafeP6BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(TemplateSafeP6BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_template_safe_p5_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:template_safe_p6_binary_expression][start_index] = r0 + + r0 + end + + module P7BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module P7BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_p7_binary_expression + start_index = index + if node_cache[:p7_binary_expression].has_key?(index) + cached = node_cache[:p7_binary_expression][index] + if cached + node_cache[:p7_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_p6_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p7_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p6_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(P7BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(P7BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_p6_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:p7_binary_expression][start_index] = r0 + + r0 + end + + module TemplateSafeP7BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module TemplateSafeP7BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_template_safe_p7_binary_expression + start_index = index + if node_cache[:template_safe_p7_binary_expression].has_key?(index) + cached = node_cache[:template_safe_p7_binary_expression][index] + if cached + node_cache[:template_safe_p7_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_template_safe_p6_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p7_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p6_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(TemplateSafeP7BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(TemplateSafeP7BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_template_safe_p6_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:template_safe_p7_binary_expression][start_index] = r0 + + r0 + end + + module P8BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module P8BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_p8_binary_expression + start_index = index + if node_cache[:p8_binary_expression].has_key?(index) + cached = node_cache[:p8_binary_expression][index] + if cached + node_cache[:p8_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_p7_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p8_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p7_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(P8BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(P8BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_p7_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:p8_binary_expression][start_index] = r0 + + r0 + end + + module TemplateSafeP8BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module TemplateSafeP8BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_template_safe_p8_binary_expression + start_index = index + if node_cache[:template_safe_p8_binary_expression].has_key?(index) + cached = node_cache[:template_safe_p8_binary_expression][index] + if cached + node_cache[:template_safe_p8_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_template_safe_p7_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p8_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p7_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(TemplateSafeP8BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(TemplateSafeP8BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_template_safe_p7_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:template_safe_p8_binary_expression][start_index] = r0 + + r0 + end + + module P9BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module P9BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_p9_binary_expression + start_index = index + if node_cache[:p9_binary_expression].has_key?(index) + cached = node_cache[:p9_binary_expression][index] + if cached + node_cache[:p9_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_p8_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p9_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p8_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(P9BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(P9BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_p8_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:p9_binary_expression][start_index] = r0 + + r0 + end + + module TemplateSafeP9BinaryExpression0 + def op + elements[1] + end + + def r + elements[3] + end + end + + module TemplateSafeP9BinaryExpression1 + def l + elements[0] + end + + def r + elements[1] + end + end + + def _nt_template_safe_p9_binary_expression + start_index = index + if node_cache[:template_safe_p9_binary_expression].has_key?(index) + cached = node_cache[:template_safe_p9_binary_expression][index] + if cached + node_cache[:template_safe_p9_binary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_template_safe_p8_binary_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + r7 = _nt_p9_binary_operator + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_p8_binary_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(TemplateSafeP9BinaryExpression0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BinaryExpressionRightSyntaxNode,input, i1...index, s1) + r1.extend(TemplateSafeP9BinaryExpression1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r11 = _nt_template_safe_p8_binary_expression + if r11 + r11 = SyntaxNode.new(input, (index-1)...index) if r11 == true + r0 = r11 + else + @index = i0 + r0 = nil + end + end + + node_cache[:template_safe_p9_binary_expression][start_index] = r0 + + r0 + end + + module ParenExpression0 + def e + elements[2] + end + + end + + def _nt_paren_expression + start_index = index + if node_cache[:paren_expression].has_key?(index) + cached = node_cache[:paren_expression][index] + if cached + node_cache[:paren_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('(', false, index)) + r1 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + r4 = _nt_expression + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + if (match_len = has_terminal?(')', false, index)) + r7 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r7 = nil + end + s0 << r7 + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::ParenExpressionSyntaxNode,input, i0...index, s0) + r0.extend(ParenExpression0) + else + @index = i0 + r0 = nil + end + + node_cache[:paren_expression][start_index] = r0 + + r0 + end + + module ReplicationExpression0 + def n + elements[2] + end + + def v + elements[6] + end + + end + + def _nt_replication_expression + start_index = index + if node_cache[:replication_expression].has_key?(index) + cached = node_cache[:replication_expression][index] + if cached + node_cache[:replication_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('{', false, index)) + r1 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + r4 = _nt_expression + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + if (match_len = has_terminal?('{', false, index)) + r7 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r7 = nil + end + s0 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s0 << r8 + if r8 + r10 = _nt_expression + s0 << r10 + if r10 + s11, i11 = [], index + loop do + r12 = _nt_space + if r12 + s11 << r12 + else + break + end + end + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + s0 << r11 + if r11 + if (match_len = has_terminal?('}', false, index)) + r13 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r13 = nil + end + s0 << r13 + if r13 + s14, i14 = [], index + loop do + r15 = _nt_space + if r15 + s14 << r15 + else + break + end + end + r14 = instantiate_node(SyntaxNode,input, i14...index, s14) + s0 << r14 + if r14 + if (match_len = has_terminal?('}', false, index)) + r16 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r16 = nil + end + s0 << r16 + end + end + end + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::ReplicationExpressionSyntaxNode,input, i0...index, s0) + r0.extend(ReplicationExpression0) + else + @index = i0 + r0 = nil + end + + node_cache[:replication_expression][start_index] = r0 + + r0 + end + + module ConcatenationExpression0 + def expression + elements[3] + end + end + + module ConcatenationExpression1 + def first + elements[2] + end + + def rest + elements[3] + end + + end + + def _nt_concatenation_expression + start_index = index + if node_cache[:concatenation_expression].has_key?(index) + cached = node_cache[:concatenation_expression][index] + if cached + node_cache[:concatenation_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('{', false, index)) + r1 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + r4 = _nt_expression + s0 << r4 + if r4 + s5, i5 = [], index + loop do + i6, s6 = index, [] + s7, i7 = [], index + loop do + r8 = _nt_space + if r8 + s7 << r8 + else + break + end + end + r7 = instantiate_node(SyntaxNode,input, i7...index, s7) + s6 << r7 + if r7 + if (match_len = has_terminal?(',', false, index)) + r9 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r9 = nil + end + s6 << r9 + if r9 + s10, i10 = [], index + loop do + r11 = _nt_space + if r11 + s10 << r11 + else + break + end + end + r10 = instantiate_node(SyntaxNode,input, i10...index, s10) + s6 << r10 + if r10 + r12 = _nt_expression + s6 << r12 + end + end + end + if s6.last + r6 = instantiate_node(SyntaxNode,input, i6...index, s6) + r6.extend(ConcatenationExpression0) + else + @index = i6 + r6 = nil + end + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + s13, i13 = [], index + loop do + r14 = _nt_space + if r14 + s13 << r14 + else + break + end + end + r13 = instantiate_node(SyntaxNode,input, i13...index, s13) + s0 << r13 + if r13 + if (match_len = has_terminal?('}', false, index)) + r15 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r15 = nil + end + s0 << r15 + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::ConcatenationExpressionSyntaxNode,input, i0...index, s0) + r0.extend(ConcatenationExpression1) + else + @index = i0 + r0 = nil + end + + node_cache[:concatenation_expression][start_index] = r0 + + r0 + end + + module CsrFieldAccessExpression0 + def csr + elements[0] + end + + def csr_field_name + elements[4] + end + end + + def _nt_csr_field_access_expression + start_index = index + if node_cache[:csr_field_access_expression].has_key?(index) + cached = node_cache[:csr_field_access_expression][index] + if cached + node_cache[:csr_field_access_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_csr_register_access_expression + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('.', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'.\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_csr_field_name + s0 << r7 + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::CsrFieldReadExpressionSyntaxNode,input, i0...index, s0) + r0.extend(CsrFieldAccessExpression0) + else + @index = i0 + r0 = nil + end + + node_cache[:csr_field_access_expression][start_index] = r0 + + r0 + end + + module CsrRegisterAccessExpression0 + def csr_name + elements[4] + end + + end + + def _nt_csr_register_access_expression + start_index = index + if node_cache[:csr_register_access_expression].has_key?(index) + cached = node_cache[:csr_register_access_expression][index] + if cached + node_cache[:csr_register_access_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('CSR', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'CSR\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('[', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'[\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_csr_name + s0 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s0 << r8 + if r8 + if (match_len = has_terminal?(']', false, index)) + r10 = true + @index += match_len + else + terminal_parse_failure('\']\'') + r10 = nil + end + s0 << r10 + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::CsrReadExpressionSyntaxNode,input, i0...index, s0) + r0.extend(CsrRegisterAccessExpression0) + else + @index = i0 + r0 = nil + end + + node_cache[:csr_register_access_expression][start_index] = r0 + + r0 + end + + def _nt_field_access_eligible_expression + start_index = index + if node_cache[:field_access_eligible_expression].has_key?(index) + cached = node_cache[:field_access_eligible_expression][index] + if cached + node_cache[:field_access_eligible_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + r1 = _nt_paren_expression + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r2 = _nt_function_call + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + r3 = _nt_rval + if r3 + r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true + r0 = r3 + else + @index = i0 + r0 = nil + end + end + end + + node_cache[:field_access_eligible_expression][start_index] = r0 + + r0 + end + + module FieldAccessExpression0 + def field_access_eligible_expression + elements[0] + end + + def field_name + elements[4] + end + end + + def _nt_field_access_expression + start_index = index + if node_cache[:field_access_expression].has_key?(index) + cached = node_cache[:field_access_expression][index] + if cached + node_cache[:field_access_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_field_access_eligible_expression + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('.', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'.\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_field_name + s0 << r7 + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::FieldAccessExpressionSyntaxNode,input, i0...index, s0) + r0.extend(FieldAccessExpression0) + else + @index = i0 + r0 = nil + end + + node_cache[:field_access_expression][start_index] = r0 + + r0 + end + + def _nt_ary_eligible_expression + start_index = index + if node_cache[:ary_eligible_expression].has_key?(index) + cached = node_cache[:ary_eligible_expression][index] + if cached + node_cache[:ary_eligible_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + r1 = _nt_enum_to_a + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r2 = _nt_paren_expression + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + r3 = _nt_replication_expression + if r3 + r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true + r0 = r3 + else + r4 = _nt_concatenation_expression + if r4 + r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true + r0 = r4 + else + r5 = _nt_field_access_expression + if r5 + r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true + r0 = r5 + else + r6 = _nt_function_call + if r6 + r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true + r0 = r6 + else + r7 = _nt_csr_field_access_expression + if r7 + r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true + r0 = r7 + else + r8 = _nt_bits_cast + if r8 + r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true + r0 = r8 + else + r9 = _nt_rval + if r9 + r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true + r0 = r9 + else + @index = i0 + r0 = nil + end + end + end + end + end + end + end + end + end + + node_cache[:ary_eligible_expression][start_index] = r0 + + r0 + end + + module AryAccess0 + def expression + elements[0] + end + + end + + module AryAccess1 + def msb + elements[2] + end + + def lsb + elements[3] + end + + end + + module AryAccess2 + def a + elements[0] + end + + def brackets + elements[2] + end + end + + def _nt_ary_access + start_index = index + if node_cache[:ary_access].has_key?(index) + cached = node_cache[:ary_access][index] + if cached + node_cache[:ary_access][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_ary_eligible_expression + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + s4, i4 = [], index + loop do + i5, s5 = index, [] + if (match_len = has_terminal?('[', false, index)) + r6 = true + @index += match_len + else + terminal_parse_failure('\'[\'') + r6 = nil + end + s5 << r6 + if r6 + s7, i7 = [], index + loop do + r8 = _nt_space + if r8 + s7 << r8 + else + break + end + end + r7 = instantiate_node(SyntaxNode,input, i7...index, s7) + s5 << r7 + if r7 + i10, s10 = index, [] + r11 = _nt_expression + s10 << r11 + if r11 + s12, i12 = [], index + loop do + r13 = _nt_space + if r13 + s12 << r13 + else + break + end + end + r12 = instantiate_node(SyntaxNode,input, i12...index, s12) + s10 << r12 + if r12 + if (match_len = has_terminal?(':', false, index)) + r14 = true + @index += match_len + else + terminal_parse_failure('\':\'') + r14 = nil + end + s10 << r14 + if r14 + s15, i15 = [], index + loop do + r16 = _nt_space + if r16 + s15 << r16 + else + break + end + end + r15 = instantiate_node(SyntaxNode,input, i15...index, s15) + s10 << r15 + end + end + end + if s10.last + r10 = instantiate_node(SyntaxNode,input, i10...index, s10) + r10.extend(AryAccess0) + else + @index = i10 + r10 = nil + end + if r10 + r9 = r10 + else + r9 = instantiate_node(SyntaxNode,input, index...index) + end + s5 << r9 + if r9 + r17 = _nt_expression + s5 << r17 + if r17 + s18, i18 = [], index + loop do + r19 = _nt_space + if r19 + s18 << r19 + else + break + end + end + r18 = instantiate_node(SyntaxNode,input, i18...index, s18) + s5 << r18 + if r18 + if (match_len = has_terminal?(']', false, index)) + r20 = true + @index += match_len + else + terminal_parse_failure('\']\'') + r20 = nil + end + s5 << r20 + if r20 + s21, i21 = [], index + loop do + r22 = _nt_space + if r22 + s21 << r22 + else + break + end + end + r21 = instantiate_node(SyntaxNode,input, i21...index, s21) + s5 << r21 + end + end + end + end + end + end + if s5.last + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + r5.extend(AryAccess1) + else + @index = i5 + r5 = nil + end + if r5 + s4 << r5 + else + break + end + end + if s4.empty? + @index = i4 + r4 = nil + else + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + end + s0 << r4 + end + end + if s0.last + r0 = instantiate_node(Idl::AryAccessSyntaxNode,input, i0...index, s0) + r0.extend(AryAccess2) + else + @index = i0 + r0 = nil + end + + node_cache[:ary_access][start_index] = r0 + + r0 + end + + module PostDec0 + def rval + elements[0] + end + + end + + def _nt_post_dec + start_index = index + if node_cache[:post_dec].has_key?(index) + cached = node_cache[:post_dec][index] + if cached + node_cache[:post_dec][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_rval + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('--', false, index)) + r4 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'--\'') + r4 = nil + end + s0 << r4 + end + end + if s0.last + r0 = instantiate_node(Idl::PostDecrementExpressionSyntaxNode,input, i0...index, s0) + r0.extend(PostDec0) + else + @index = i0 + r0 = nil + end + + node_cache[:post_dec][start_index] = r0 + + r0 + end + + module PostInc0 + def rval + elements[0] + end + + end + + def _nt_post_inc + start_index = index + if node_cache[:post_inc].has_key?(index) + cached = node_cache[:post_inc][index] + if cached + node_cache[:post_inc][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_rval + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('++', false, index)) + r4 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'++\'') + r4 = nil + end + s0 << r4 + end + end + if s0.last + r0 = instantiate_node(Idl::PostIncrementExpressionSyntaxNode,input, i0...index, s0) + r0.extend(PostInc0) + else + @index = i0 + r0 = nil + end + + node_cache[:post_inc][start_index] = r0 + + r0 + end + + module BitsCast0 + def expr + elements[4] + end + + end + + def _nt_bits_cast + start_index = index + if node_cache[:bits_cast].has_key?(index) + cached = node_cache[:bits_cast][index] + if cached + node_cache[:bits_cast][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('$bits', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'$bits\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('(', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + i7 = index + r8 = _nt_csr_register_access_expression + if r8 + r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true + r7 = r8 + else + r9 = _nt_enum_ref + if r9 + r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true + r7 = r9 + else + r10 = _nt_expression + if r10 + r10 = SyntaxNode.new(input, (index-1)...index) if r10 == true + r7 = r10 + else + @index = i7 + r7 = nil + end + end + end + s0 << r7 + if r7 + s11, i11 = [], index + loop do + r12 = _nt_space + if r12 + s11 << r12 + else + break + end + end + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + s0 << r11 + if r11 + if (match_len = has_terminal?(')', false, index)) + r13 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r13 = nil + end + s0 << r13 + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::BitsCastSyntaxNode,input, i0...index, s0) + r0.extend(BitsCast0) + else + @index = i0 + r0 = nil + end + + node_cache[:bits_cast][start_index] = r0 + + r0 + end + + module EnumToA0 + def user_type_name + elements[4] + end + + end + + def _nt_enum_to_a + start_index = index + if node_cache[:enum_to_a].has_key?(index) + cached = node_cache[:enum_to_a][index] + if cached + node_cache[:enum_to_a][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('$enum_to_a', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'$enum_to_a\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('(', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_user_type_name + s0 << r7 + if r7 + if (match_len = has_terminal?(')', false, index)) + r8 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r8 = nil + end + s0 << r8 + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::EnumArrayCastSyntaxNode,input, i0...index, s0) + r0.extend(EnumToA0) + else + @index = i0 + r0 = nil + end + + node_cache[:enum_to_a][start_index] = r0 + + r0 + end + + module UnaryExpression0 + def expression + elements[3] + end + end + + module UnaryExpression1 + def first + elements[2] + end + + def rest + elements[3] + end + + end + + module UnaryExpression2 + def expression + elements[4] + end + + end + + module UnaryExpression3 + def expression + elements[4] + end + + end + + module UnaryExpression4 + def user_type_name + elements[4] + end + + end + + module UnaryExpression5 + def user_type_name + elements[4] + end + + end + + module UnaryExpression6 + def user_type_name + elements[4] + end + + def expression + elements[8] + end + + end + + module UnaryExpression7 + def expression + elements[4] + end + + end + + module UnaryExpression8 + def ary + elements[4] + end + + def value + elements[8] + end + + end + + module UnaryExpression9 + def o + elements[0] + end + + def e + elements[2] + end + end + + def _nt_unary_expression + start_index = index + if node_cache[:unary_expression].has_key?(index) + cached = node_cache[:unary_expression][index] + if cached + node_cache[:unary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + if (match_len = has_terminal?('true', false, index)) + r1 = instantiate_node(Idl::TrueExpressionSyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'true\'') + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + if (match_len = has_terminal?('false', false, index)) + r2 = instantiate_node(Idl::FalseExpressionSyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'false\'') + r2 = nil + end + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + i3, s3 = index, [] + if (match_len = has_terminal?('[', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'[\'') + r4 = nil + end + s3 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s3 << r5 + if r5 + r7 = _nt_expression + s3 << r7 + if r7 + s8, i8 = [], index + loop do + i9, s9 = index, [] + s10, i10 = [], index + loop do + r11 = _nt_space + if r11 + s10 << r11 + else + break + end + end + r10 = instantiate_node(SyntaxNode,input, i10...index, s10) + s9 << r10 + if r10 + if (match_len = has_terminal?(',', false, index)) + r12 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r12 = nil + end + s9 << r12 + if r12 + s13, i13 = [], index + loop do + r14 = _nt_space + if r14 + s13 << r14 + else + break + end + end + r13 = instantiate_node(SyntaxNode,input, i13...index, s13) + s9 << r13 + if r13 + r15 = _nt_expression + s9 << r15 + end + end + end + if s9.last + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + r9.extend(UnaryExpression0) + else + @index = i9 + r9 = nil + end + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s3 << r8 + if r8 + s16, i16 = [], index + loop do + r17 = _nt_space + if r17 + s16 << r17 + else + break + end + end + r16 = instantiate_node(SyntaxNode,input, i16...index, s16) + s3 << r16 + if r16 + if (match_len = has_terminal?(']', false, index)) + r18 = true + @index += match_len + else + terminal_parse_failure('\']\'') + r18 = nil + end + s3 << r18 + end + end + end + end + end + if s3.last + r3 = instantiate_node(Idl::ArrayLiteralSyntaxNode,input, i3...index, s3) + r3.extend(UnaryExpression1) + else + @index = i3 + r3 = nil + end + if r3 + r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true + r0 = r3 + else + r19 = _nt_ary_access + if r19 + r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true + r0 = r19 + else + i20, s20 = index, [] + if (match_len = has_terminal?('$width', false, index)) + r21 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'$width\'') + r21 = nil + end + s20 << r21 + if r21 + s22, i22 = [], index + loop do + r23 = _nt_space + if r23 + s22 << r23 + else + break + end + end + r22 = instantiate_node(SyntaxNode,input, i22...index, s22) + s20 << r22 + if r22 + if (match_len = has_terminal?('(', false, index)) + r24 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r24 = nil + end + s20 << r24 + if r24 + s25, i25 = [], index + loop do + r26 = _nt_space + if r26 + s25 << r26 + else + break + end + end + r25 = instantiate_node(SyntaxNode,input, i25...index, s25) + s20 << r25 + if r25 + r27 = _nt_expression + s20 << r27 + if r27 + s28, i28 = [], index + loop do + r29 = _nt_space + if r29 + s28 << r29 + else + break + end + end + r28 = instantiate_node(SyntaxNode,input, i28...index, s28) + s20 << r28 + if r28 + if (match_len = has_terminal?(')', false, index)) + r30 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r30 = nil + end + s20 << r30 + end + end + end + end + end + end + if s20.last + r20 = instantiate_node(Idl::WidthRevealSyntaxNode,input, i20...index, s20) + r20.extend(UnaryExpression2) + else + @index = i20 + r20 = nil + end + if r20 + r20 = SyntaxNode.new(input, (index-1)...index) if r20 == true + r0 = r20 + else + i31, s31 = index, [] + if (match_len = has_terminal?('$signed', false, index)) + r32 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'$signed\'') + r32 = nil + end + s31 << r32 + if r32 + s33, i33 = [], index + loop do + r34 = _nt_space + if r34 + s33 << r34 + else + break + end + end + r33 = instantiate_node(SyntaxNode,input, i33...index, s33) + s31 << r33 + if r33 + if (match_len = has_terminal?('(', false, index)) + r35 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r35 = nil + end + s31 << r35 + if r35 + s36, i36 = [], index + loop do + r37 = _nt_space + if r37 + s36 << r37 + else + break + end + end + r36 = instantiate_node(SyntaxNode,input, i36...index, s36) + s31 << r36 + if r36 + r38 = _nt_expression + s31 << r38 + if r38 + s39, i39 = [], index + loop do + r40 = _nt_space + if r40 + s39 << r40 + else + break + end + end + r39 = instantiate_node(SyntaxNode,input, i39...index, s39) + s31 << r39 + if r39 + if (match_len = has_terminal?(')', false, index)) + r41 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r41 = nil + end + s31 << r41 + end + end + end + end + end + end + if s31.last + r31 = instantiate_node(Idl::SignCastSyntaxNode,input, i31...index, s31) + r31.extend(UnaryExpression3) + else + @index = i31 + r31 = nil + end + if r31 + r31 = SyntaxNode.new(input, (index-1)...index) if r31 == true + r0 = r31 + else + r42 = _nt_bits_cast + if r42 + r42 = SyntaxNode.new(input, (index-1)...index) if r42 == true + r0 = r42 + else + i43, s43 = index, [] + if (match_len = has_terminal?('$enum_size', false, index)) + r44 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'$enum_size\'') + r44 = nil + end + s43 << r44 + if r44 + s45, i45 = [], index + loop do + r46 = _nt_space + if r46 + s45 << r46 + else + break + end + end + r45 = instantiate_node(SyntaxNode,input, i45...index, s45) + s43 << r45 + if r45 + if (match_len = has_terminal?('(', false, index)) + r47 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r47 = nil + end + s43 << r47 + if r47 + s48, i48 = [], index + loop do + r49 = _nt_space + if r49 + s48 << r49 + else + break + end + end + r48 = instantiate_node(SyntaxNode,input, i48...index, s48) + s43 << r48 + if r48 + r50 = _nt_user_type_name + s43 << r50 + if r50 + if (match_len = has_terminal?(')', false, index)) + r51 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r51 = nil + end + s43 << r51 + end + end + end + end + end + if s43.last + r43 = instantiate_node(Idl::EnumSizeSyntaxNode,input, i43...index, s43) + r43.extend(UnaryExpression4) + else + @index = i43 + r43 = nil + end + if r43 + r43 = SyntaxNode.new(input, (index-1)...index) if r43 == true + r0 = r43 + else + i52, s52 = index, [] + if (match_len = has_terminal?('$enum_element_size', false, index)) + r53 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'$enum_element_size\'') + r53 = nil + end + s52 << r53 + if r53 + s54, i54 = [], index + loop do + r55 = _nt_space + if r55 + s54 << r55 + else + break + end + end + r54 = instantiate_node(SyntaxNode,input, i54...index, s54) + s52 << r54 + if r54 + if (match_len = has_terminal?('(', false, index)) + r56 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r56 = nil + end + s52 << r56 + if r56 + s57, i57 = [], index + loop do + r58 = _nt_space + if r58 + s57 << r58 + else + break + end + end + r57 = instantiate_node(SyntaxNode,input, i57...index, s57) + s52 << r57 + if r57 + r59 = _nt_user_type_name + s52 << r59 + if r59 + if (match_len = has_terminal?(')', false, index)) + r60 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r60 = nil + end + s52 << r60 + end + end + end + end + end + if s52.last + r52 = instantiate_node(Idl::EnumElementSizeSyntaxNode,input, i52...index, s52) + r52.extend(UnaryExpression5) + else + @index = i52 + r52 = nil + end + if r52 + r52 = SyntaxNode.new(input, (index-1)...index) if r52 == true + r0 = r52 + else + r61 = _nt_enum_to_a + if r61 + r61 = SyntaxNode.new(input, (index-1)...index) if r61 == true + r0 = r61 + else + i62, s62 = index, [] + if (match_len = has_terminal?('$enum', false, index)) + r63 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'$enum\'') + r63 = nil + end + s62 << r63 + if r63 + s64, i64 = [], index + loop do + r65 = _nt_space + if r65 + s64 << r65 + else + break + end + end + r64 = instantiate_node(SyntaxNode,input, i64...index, s64) + s62 << r64 + if r64 + if (match_len = has_terminal?('(', false, index)) + r66 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r66 = nil + end + s62 << r66 + if r66 + s67, i67 = [], index + loop do + r68 = _nt_space + if r68 + s67 << r68 + else + break + end + end + r67 = instantiate_node(SyntaxNode,input, i67...index, s67) + s62 << r67 + if r67 + r69 = _nt_user_type_name + s62 << r69 + if r69 + s70, i70 = [], index + loop do + r71 = _nt_space + if r71 + s70 << r71 + else + break + end + end + r70 = instantiate_node(SyntaxNode,input, i70...index, s70) + s62 << r70 + if r70 + if (match_len = has_terminal?(',', false, index)) + r72 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r72 = nil + end + s62 << r72 + if r72 + s73, i73 = [], index + loop do + r74 = _nt_space + if r74 + s73 << r74 + else + break + end + end + r73 = instantiate_node(SyntaxNode,input, i73...index, s73) + s62 << r73 + if r73 + r75 = _nt_expression + s62 << r75 + if r75 + s76, i76 = [], index + loop do + r77 = _nt_space + if r77 + s76 << r77 + else + break + end + end + r76 = instantiate_node(SyntaxNode,input, i76...index, s76) + s62 << r76 + if r76 + if (match_len = has_terminal?(')', false, index)) + r78 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r78 = nil + end + s62 << r78 + end + end + end + end + end + end + end + end + end + end + if s62.last + r62 = instantiate_node(Idl::EnumCastSyntaxNode,input, i62...index, s62) + r62.extend(UnaryExpression6) + else + @index = i62 + r62 = nil + end + if r62 + r62 = SyntaxNode.new(input, (index-1)...index) if r62 == true + r0 = r62 + else + i79, s79 = index, [] + if (match_len = has_terminal?('$array_size', false, index)) + r80 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'$array_size\'') + r80 = nil + end + s79 << r80 + if r80 + s81, i81 = [], index + loop do + r82 = _nt_space + if r82 + s81 << r82 + else + break + end + end + r81 = instantiate_node(SyntaxNode,input, i81...index, s81) + s79 << r81 + if r81 + if (match_len = has_terminal?('(', false, index)) + r83 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r83 = nil + end + s79 << r83 + if r83 + s84, i84 = [], index + loop do + r85 = _nt_space + if r85 + s84 << r85 + else + break + end + end + r84 = instantiate_node(SyntaxNode,input, i84...index, s84) + s79 << r84 + if r84 + r86 = _nt_expression + s79 << r86 + if r86 + if (match_len = has_terminal?(')', false, index)) + r87 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r87 = nil + end + s79 << r87 + end + end + end + end + end + if s79.last + r79 = instantiate_node(Idl::ArraySizeSyntaxNode,input, i79...index, s79) + r79.extend(UnaryExpression7) + else + @index = i79 + r79 = nil + end + if r79 + r79 = SyntaxNode.new(input, (index-1)...index) if r79 == true + r0 = r79 + else + i88, s88 = index, [] + if (match_len = has_terminal?('$array_includes?', false, index)) + r89 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'$array_includes?\'') + r89 = nil + end + s88 << r89 + if r89 + s90, i90 = [], index + loop do + r91 = _nt_space + if r91 + s90 << r91 + else + break + end + end + r90 = instantiate_node(SyntaxNode,input, i90...index, s90) + s88 << r90 + if r90 + if (match_len = has_terminal?('(', false, index)) + r92 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r92 = nil + end + s88 << r92 + if r92 + s93, i93 = [], index + loop do + r94 = _nt_space + if r94 + s93 << r94 + else + break + end + end + r93 = instantiate_node(SyntaxNode,input, i93...index, s93) + s88 << r93 + if r93 + r95 = _nt_ary_eligible_expression + s88 << r95 + if r95 + s96, i96 = [], index + loop do + r97 = _nt_space + if r97 + s96 << r97 + else + break + end + end + r96 = instantiate_node(SyntaxNode,input, i96...index, s96) + s88 << r96 + if r96 + if (match_len = has_terminal?(',', false, index)) + r98 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r98 = nil + end + s88 << r98 + if r98 + s99, i99 = [], index + loop do + r100 = _nt_space + if r100 + s99 << r100 + else + break + end + end + r99 = instantiate_node(SyntaxNode,input, i99...index, s99) + s88 << r99 + if r99 + r101 = _nt_expression + s88 << r101 + if r101 + s102, i102 = [], index + loop do + r103 = _nt_space + if r103 + s102 << r103 + else + break + end + end + r102 = instantiate_node(SyntaxNode,input, i102...index, s102) + s88 << r102 + if r102 + if (match_len = has_terminal?(')', false, index)) + r104 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r104 = nil + end + s88 << r104 + end + end + end + end + end + end + end + end + end + end + if s88.last + r88 = instantiate_node(Idl::ArrayIncludesSyntaxNode,input, i88...index, s88) + r88.extend(UnaryExpression8) + else + @index = i88 + r88 = nil + end + if r88 + r88 = SyntaxNode.new(input, (index-1)...index) if r88 == true + r0 = r88 + else + r105 = _nt_paren_expression + if r105 + r105 = SyntaxNode.new(input, (index-1)...index) if r105 == true + r0 = r105 + else + i106, s106 = index, [] + r107 = _nt_unary_operator + s106 << r107 + if r107 + s108, i108 = [], index + loop do + r109 = _nt_space + if r109 + s108 << r109 + else + break + end + end + r108 = instantiate_node(SyntaxNode,input, i108...index, s108) + s106 << r108 + if r108 + r110 = _nt_unary_expression + s106 << r110 + end + end + if s106.last + r106 = instantiate_node(Idl::UnaryOperatorExpressionSyntaxNode,input, i106...index, s106) + r106.extend(UnaryExpression9) + else + @index = i106 + r106 = nil + end + if r106 + r106 = SyntaxNode.new(input, (index-1)...index) if r106 == true + r0 = r106 + else + r111 = _nt_post_dec + if r111 + r111 = SyntaxNode.new(input, (index-1)...index) if r111 == true + r0 = r111 + else + r112 = _nt_post_inc + if r112 + r112 = SyntaxNode.new(input, (index-1)...index) if r112 == true + r0 = r112 + else + r113 = _nt_replication_expression + if r113 + r113 = SyntaxNode.new(input, (index-1)...index) if r113 == true + r0 = r113 + else + r114 = _nt_concatenation_expression + if r114 + r114 = SyntaxNode.new(input, (index-1)...index) if r114 == true + r0 = r114 + else + r115 = _nt_field_access_expression + if r115 + r115 = SyntaxNode.new(input, (index-1)...index) if r115 == true + r0 = r115 + else + r116 = _nt_function_call + if r116 + r116 = SyntaxNode.new(input, (index-1)...index) if r116 == true + r0 = r116 + else + r117 = _nt_csr_field_access_expression + if r117 + r117 = SyntaxNode.new(input, (index-1)...index) if r117 == true + r0 = r117 + else + r118 = _nt_enum_ref + if r118 + r118 = SyntaxNode.new(input, (index-1)...index) if r118 == true + r0 = r118 + else + r119 = _nt_rval + if r119 + r119 = SyntaxNode.new(input, (index-1)...index) if r119 == true + r0 = r119 + else + @index = i0 + r0 = nil + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + + node_cache[:unary_expression][start_index] = r0 + + r0 + end + + module TernaryExpression0 + def e + elements[0] + end + + def t + elements[4] + end + + def f + elements[8] + end + end + + def _nt_ternary_expression + start_index = index + if node_cache[:ternary_expression].has_key?(index) + cached = node_cache[:ternary_expression][index] + if cached + node_cache[:ternary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_p9_binary_expression + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('?', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'?\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_expression + s0 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s0 << r8 + if r8 + if (match_len = has_terminal?(':', false, index)) + r10 = true + @index += match_len + else + terminal_parse_failure('\':\'') + r10 = nil + end + s0 << r10 + if r10 + s11, i11 = [], index + loop do + r12 = _nt_space + if r12 + s11 << r12 + else + break + end + end + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + s0 << r11 + if r11 + r13 = _nt_expression + s0 << r13 + end + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::TernaryOperatorExpressionSyntaxNode,input, i0...index, s0) + r0.extend(TernaryExpression0) + else + @index = i0 + r0 = nil + end + + node_cache[:ternary_expression][start_index] = r0 + + r0 + end + + module TemplateSafeTernaryExpression0 + def e + elements[0] + end + + def t + elements[4] + end + + def f + elements[8] + end + end + + def _nt_template_safe_ternary_expression + start_index = index + if node_cache[:template_safe_ternary_expression].has_key?(index) + cached = node_cache[:template_safe_ternary_expression][index] + if cached + node_cache[:template_safe_ternary_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_template_safe_p9_binary_expression + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('?', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'?\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_expression + s0 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s0 << r8 + if r8 + if (match_len = has_terminal?(':', false, index)) + r10 = true + @index += match_len + else + terminal_parse_failure('\':\'') + r10 = nil + end + s0 << r10 + if r10 + s11, i11 = [], index + loop do + r12 = _nt_space + if r12 + s11 << r12 + else + break + end + end + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + s0 << r11 + if r11 + r13 = _nt_expression + s0 << r13 + end + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::TernaryOperatorExpressionSyntaxNode,input, i0...index, s0) + r0.extend(TemplateSafeTernaryExpression0) + else + @index = i0 + r0 = nil + end + + node_cache[:template_safe_ternary_expression][start_index] = r0 + + r0 + end + + module ImplicationExpression0 + def antecedent + elements[0] + end + + def consequent + elements[4] + end + end + + def _nt_implication_expression + start_index = index + if node_cache[:implication_expression].has_key?(index) + cached = node_cache[:implication_expression][index] + if cached + node_cache[:implication_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r2 = _nt_p9_binary_expression + if r2 + r1 = r2 + else + r1 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r1 + if r1 + s3, i3 = [], index + loop do + r4 = _nt_space + if r4 + s3 << r4 + else + break + end + end + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + s0 << r3 + if r3 + if (match_len = has_terminal?('->', false, index)) + r5 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'->\'') + r5 = nil + end + s0 << r5 + if r5 + s6, i6 = [], index + loop do + r7 = _nt_space + if r7 + s6 << r7 + else + break + end + end + r6 = instantiate_node(SyntaxNode,input, i6...index, s6) + s0 << r6 + if r6 + r8 = _nt_p9_binary_expression + s0 << r8 + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::ImplicationExpressionSyntaxNode,input, i0...index, s0) + r0.extend(ImplicationExpression0) + else + @index = i0 + r0 = nil + end + + node_cache[:implication_expression][start_index] = r0 + + r0 + end + + module ImplicationForLoop0 + def s + elements[0] + end + + end + + module ImplicationForLoop1 + def for_loop_iteration_variable_declaration + elements[4] + end + + def condition + elements[8] + end + + def action + elements[12] + end + + def stmts + elements[18] + end + + end + + def _nt_implication_for_loop + start_index = index + if node_cache[:implication_for_loop].has_key?(index) + cached = node_cache[:implication_for_loop][index] + if cached + node_cache[:implication_for_loop][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('for', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'for\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('(', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_for_loop_iteration_variable_declaration + s0 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s0 << r8 + if r8 + if (match_len = has_terminal?(';', false, index)) + r10 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r10 = nil + end + s0 << r10 + if r10 + s11, i11 = [], index + loop do + r12 = _nt_space + if r12 + s11 << r12 + else + break + end + end + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + s0 << r11 + if r11 + r13 = _nt_expression + s0 << r13 + if r13 + s14, i14 = [], index + loop do + r15 = _nt_space + if r15 + s14 << r15 + else + break + end + end + r14 = instantiate_node(SyntaxNode,input, i14...index, s14) + s0 << r14 + if r14 + if (match_len = has_terminal?(';', false, index)) + r16 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r16 = nil + end + s0 << r16 + if r16 + s17, i17 = [], index + loop do + r18 = _nt_space + if r18 + s17 << r18 + else + break + end + end + r17 = instantiate_node(SyntaxNode,input, i17...index, s17) + s0 << r17 + if r17 + i19 = index + r20 = _nt_assignment + if r20 + r20 = SyntaxNode.new(input, (index-1)...index) if r20 == true + r19 = r20 + else + r21 = _nt_post_inc + if r21 + r21 = SyntaxNode.new(input, (index-1)...index) if r21 == true + r19 = r21 + else + r22 = _nt_post_dec + if r22 + r22 = SyntaxNode.new(input, (index-1)...index) if r22 == true + r19 = r22 + else + @index = i19 + r19 = nil + end + end + end + s0 << r19 + if r19 + s23, i23 = [], index + loop do + r24 = _nt_space + if r24 + s23 << r24 + else + break + end + end + r23 = instantiate_node(SyntaxNode,input, i23...index, s23) + s0 << r23 + if r23 + if (match_len = has_terminal?(')', false, index)) + r25 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r25 = nil + end + s0 << r25 + if r25 + s26, i26 = [], index + loop do + r27 = _nt_space + if r27 + s26 << r27 + else + break + end + end + r26 = instantiate_node(SyntaxNode,input, i26...index, s26) + s0 << r26 + if r26 + if (match_len = has_terminal?('{', false, index)) + r28 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r28 = nil + end + s0 << r28 + if r28 + s29, i29 = [], index + loop do + r30 = _nt_space + if r30 + s29 << r30 + else + break + end + end + r29 = instantiate_node(SyntaxNode,input, i29...index, s29) + s0 << r29 + if r29 + s31, i31 = [], index + loop do + i32, s32 = index, [] + i33 = index + r34 = _nt_implication_statement + if r34 + r34 = SyntaxNode.new(input, (index-1)...index) if r34 == true + r33 = r34 + else + r35 = _nt_implication_for_loop + if r35 + r35 = SyntaxNode.new(input, (index-1)...index) if r35 == true + r33 = r35 + else + @index = i33 + r33 = nil + end + end + s32 << r33 + if r33 + s36, i36 = [], index + loop do + r37 = _nt_space + if r37 + s36 << r37 + else + break + end + end + r36 = instantiate_node(SyntaxNode,input, i36...index, s36) + s32 << r36 + end + if s32.last + r32 = instantiate_node(SyntaxNode,input, i32...index, s32) + r32.extend(ImplicationForLoop0) + else + @index = i32 + r32 = nil + end + if r32 + s31 << r32 + else + break + end + end + if s31.empty? + @index = i31 + r31 = nil + else + r31 = instantiate_node(SyntaxNode,input, i31...index, s31) + end + s0 << r31 + if r31 + if (match_len = has_terminal?('}', false, index)) + r38 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r38 = nil + end + s0 << r38 + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::ForLoopSyntaxNode,input, i0...index, s0) + r0.extend(ImplicationForLoop1) + else + @index = i0 + r0 = nil + end + + node_cache[:implication_for_loop][start_index] = r0 + + r0 + end + + module ImplicationStatement0 + def implication_expression + elements[0] + end + + end + + def _nt_implication_statement + start_index = index + if node_cache[:implication_statement].has_key?(index) + cached = node_cache[:implication_statement][index] + if cached + node_cache[:implication_statement][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_implication_expression + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?(';', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r4 = nil + end + s0 << r4 + end + end + if s0.last + r0 = instantiate_node(Idl::ImplicationStatementSyntaxNode,input, i0...index, s0) + r0.extend(ImplicationStatement0) + else + @index = i0 + r0 = nil + end + + node_cache[:implication_statement][start_index] = r0 + + r0 + end + + module ConstraintBody0 + def i + elements[0] + end + + end + + module ConstraintBody1 + def b + elements[1] + end + end + + def _nt_constraint_body + start_index = index + if node_cache[:constraint_body].has_key?(index) + cached = node_cache[:constraint_body][index] + if cached + node_cache[:constraint_body][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + s1, i1 = [], index + loop do + r2 = _nt_space + if r2 + s1 << r2 + else + break + end + end + r1 = instantiate_node(SyntaxNode,input, i1...index, s1) + s0 << r1 + if r1 + s3, i3 = [], index + loop do + i4, s4 = index, [] + i5 = index + r6 = _nt_implication_statement + if r6 + r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true + r5 = r6 + else + r7 = _nt_implication_for_loop + if r7 + r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true + r5 = r7 + else + @index = i5 + r5 = nil + end + end + s4 << r5 + if r5 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(ConstraintBody0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s0 << r3 + end + if s0.last + r0 = instantiate_node(Idl::ConstraintBodySyntaxNode,input, i0...index, s0) + r0.extend(ConstraintBody1) + else + @index = i0 + r0 = nil + end + + node_cache[:constraint_body][start_index] = r0 + + r0 + end + + def _nt_expression + start_index = index + if node_cache[:expression].has_key?(index) + cached = node_cache[:expression][index] + if cached + node_cache[:expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + r1 = _nt_ternary_expression + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r2 = _nt_p9_binary_expression + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + @index = i0 + r0 = nil + end + end + + node_cache[:expression][start_index] = r0 + + r0 + end + + def _nt_template_safe_expression + start_index = index + if node_cache[:template_safe_expression].has_key?(index) + cached = node_cache[:template_safe_expression][index] + if cached + node_cache[:template_safe_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + r1 = _nt_template_safe_ternary_expression + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r2 = _nt_template_safe_p9_binary_expression + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + @index = i0 + r0 = nil + end + end + + node_cache[:template_safe_expression][start_index] = r0 + + r0 + end + + module FunctionCallTemplateArguments0 + def arg + elements[3] + end + end + + module FunctionCallTemplateArguments1 + def first + elements[0] + end + + def rest + elements[1] + end + end + + def _nt_function_call_template_arguments + start_index = index + if node_cache[:function_call_template_arguments].has_key?(index) + cached = node_cache[:function_call_template_arguments][index] + if cached + node_cache[:function_call_template_arguments][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_template_safe_expression + s0 << r1 + if r1 + s2, i2 = [], index + loop do + i3, s3 = index, [] + s4, i4 = [], index + loop do + r5 = _nt_space + if r5 + s4 << r5 + else + break + end + end + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + s3 << r4 + if r4 + if (match_len = has_terminal?(',', false, index)) + r6 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r6 = nil + end + s3 << r6 + if r6 + s7, i7 = [], index + loop do + r8 = _nt_space + if r8 + s7 << r8 + else + break + end + end + r7 = instantiate_node(SyntaxNode,input, i7...index, s7) + s3 << r7 + if r7 + r9 = _nt_template_safe_expression + s3 << r9 + end + end + end + if s3.last + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + r3.extend(FunctionCallTemplateArguments0) + else + @index = i3 + r3 = nil + end + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + end + if s0.last + r0 = instantiate_node(SyntaxNode,input, i0...index, s0) + r0.extend(FunctionCallTemplateArguments1) + else + @index = i0 + r0 = nil + end + + node_cache[:function_call_template_arguments][start_index] = r0 + + r0 + end + + module FunctionCall0 + def csr + elements[0] + end + + def expression + elements[8] + end + + end + + module FunctionCall1 + def csr + elements[0] + end + + def function_name + elements[4] + end + + def function_arg_list + elements[8] + end + + end + + module FunctionCall2 + def targs + elements[3] + end + + end + + module FunctionCall3 + def function_name + elements[0] + end + + def t + elements[1] + end + + def function_arg_list + elements[5] + end + + end + + def _nt_function_call + start_index = index + if node_cache[:function_call].has_key?(index) + cached = node_cache[:function_call][index] + if cached + node_cache[:function_call][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_csr_register_access_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + r4 = _nt_space + if r4 + s3 << r4 + else + break + end + end + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + s1 << r3 + if r3 + if (match_len = has_terminal?('.', false, index)) + r5 = true + @index += match_len + else + terminal_parse_failure('\'.\'') + r5 = nil + end + s1 << r5 + if r5 + s6, i6 = [], index + loop do + r7 = _nt_space + if r7 + s6 << r7 + else + break + end + end + r6 = instantiate_node(SyntaxNode,input, i6...index, s6) + s1 << r6 + if r6 + if (match_len = has_terminal?('sw_write', false, index)) + r8 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'sw_write\'') + r8 = nil + end + s1 << r8 + if r8 + s9, i9 = [], index + loop do + r10 = _nt_space + if r10 + s9 << r10 + else + break + end + end + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + s1 << r9 + if r9 + if (match_len = has_terminal?('(', false, index)) + r11 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r11 = nil + end + s1 << r11 + if r11 + s12, i12 = [], index + loop do + r13 = _nt_space + if r13 + s12 << r13 + else + break + end + end + r12 = instantiate_node(SyntaxNode,input, i12...index, s12) + s1 << r12 + if r12 + r14 = _nt_expression + s1 << r14 + if r14 + s15, i15 = [], index + loop do + r16 = _nt_space + if r16 + s15 << r16 + else + break + end + end + r15 = instantiate_node(SyntaxNode,input, i15...index, s15) + s1 << r15 + if r15 + if (match_len = has_terminal?(')', false, index)) + r17 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r17 = nil + end + s1 << r17 + end + end + end + end + end + end + end + end + end + end + if s1.last + r1 = instantiate_node(Idl::CsrSoftwareWriteSyntaxNode,input, i1...index, s1) + r1.extend(FunctionCall0) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + i18, s18 = index, [] + r19 = _nt_csr_register_access_expression + s18 << r19 + if r19 + s20, i20 = [], index + loop do + r21 = _nt_space + if r21 + s20 << r21 + else + break + end + end + r20 = instantiate_node(SyntaxNode,input, i20...index, s20) + s18 << r20 + if r20 + if (match_len = has_terminal?('.', false, index)) + r22 = true + @index += match_len + else + terminal_parse_failure('\'.\'') + r22 = nil + end + s18 << r22 + if r22 + s23, i23 = [], index + loop do + r24 = _nt_space + if r24 + s23 << r24 + else + break + end + end + r23 = instantiate_node(SyntaxNode,input, i23...index, s23) + s18 << r23 + if r23 + r25 = _nt_function_name + s18 << r25 + if r25 + s26, i26 = [], index + loop do + r27 = _nt_space + if r27 + s26 << r27 + else + break + end + end + r26 = instantiate_node(SyntaxNode,input, i26...index, s26) + s18 << r26 + if r26 + if (match_len = has_terminal?('(', false, index)) + r28 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r28 = nil + end + s18 << r28 + if r28 + s29, i29 = [], index + loop do + r30 = _nt_space + if r30 + s29 << r30 + else + break + end + end + r29 = instantiate_node(SyntaxNode,input, i29...index, s29) + s18 << r29 + if r29 + r31 = _nt_function_arg_list + s18 << r31 + if r31 + s32, i32 = [], index + loop do + r33 = _nt_space + if r33 + s32 << r33 + else + break + end + end + r32 = instantiate_node(SyntaxNode,input, i32...index, s32) + s18 << r32 + if r32 + if (match_len = has_terminal?(')', false, index)) + r34 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r34 = nil + end + s18 << r34 + end + end + end + end + end + end + end + end + end + end + if s18.last + r18 = instantiate_node(Idl::CsrFunctionCallSyntaxNode,input, i18...index, s18) + r18.extend(FunctionCall1) + else + @index = i18 + r18 = nil + end + if r18 + r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true + r0 = r18 + else + i35, s35 = index, [] + r36 = _nt_function_name + s35 << r36 + if r36 + i38, s38 = index, [] + s39, i39 = [], index + loop do + r40 = _nt_space + if r40 + s39 << r40 + else + break + end + end + r39 = instantiate_node(SyntaxNode,input, i39...index, s39) + s38 << r39 + if r39 + if (match_len = has_terminal?('<', false, index)) + r41 = true + @index += match_len + else + terminal_parse_failure('\'<\'') + r41 = nil + end + s38 << r41 + if r41 + s42, i42 = [], index + loop do + r43 = _nt_space + if r43 + s42 << r43 + else + break + end + end + r42 = instantiate_node(SyntaxNode,input, i42...index, s42) + s38 << r42 + if r42 + r44 = _nt_function_call_template_arguments + s38 << r44 + if r44 + s45, i45 = [], index + loop do + r46 = _nt_space + if r46 + s45 << r46 + else + break + end + end + r45 = instantiate_node(SyntaxNode,input, i45...index, s45) + s38 << r45 + if r45 + if (match_len = has_terminal?('>', false, index)) + r47 = true + @index += match_len + else + terminal_parse_failure('\'>\'') + r47 = nil + end + s38 << r47 + end + end + end + end + end + if s38.last + r38 = instantiate_node(SyntaxNode,input, i38...index, s38) + r38.extend(FunctionCall2) + else + @index = i38 + r38 = nil + end + if r38 + r37 = r38 + else + r37 = instantiate_node(SyntaxNode,input, index...index) + end + s35 << r37 + if r37 + s48, i48 = [], index + loop do + r49 = _nt_space + if r49 + s48 << r49 + else + break + end + end + r48 = instantiate_node(SyntaxNode,input, i48...index, s48) + s35 << r48 + if r48 + if (match_len = has_terminal?('(', false, index)) + r50 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r50 = nil + end + s35 << r50 + if r50 + s51, i51 = [], index + loop do + r52 = _nt_space + if r52 + s51 << r52 + else + break + end + end + r51 = instantiate_node(SyntaxNode,input, i51...index, s51) + s35 << r51 + if r51 + r53 = _nt_function_arg_list + s35 << r53 + if r53 + s54, i54 = [], index + loop do + r55 = _nt_space + if r55 + s54 << r55 + else + break + end + end + r54 = instantiate_node(SyntaxNode,input, i54...index, s54) + s35 << r54 + if r54 + if (match_len = has_terminal?(')', false, index)) + r56 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r56 = nil + end + s35 << r56 + end + end + end + end + end + end + end + if s35.last + r35 = instantiate_node(Idl::FunctionCallExpressionSyntaxNode,input, i35...index, s35) + r35.extend(FunctionCall3) + else + @index = i35 + r35 = nil + end + if r35 + r35 = SyntaxNode.new(input, (index-1)...index) if r35 == true + r0 = r35 + else + @index = i0 + r0 = nil + end + end + end + + node_cache[:function_call][start_index] = r0 + + r0 + end + + module FunctionName0 + end + + def _nt_function_name + start_index = index + if node_cache[:function_name].has_key?(index) + cached = node_cache[:function_name][index] + if cached + node_cache[:function_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + i1 = index + r2 = _nt_reserved + if r2 + @index = i1 + r1 = nil + else + @index = i1 + r1 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r1 + if r1 + if has_terminal?(@regexps[gr = '\A[a-zA-Z]'] ||= Regexp.new(gr), :regexp, index) + r3 = true + @index += 1 + else + terminal_parse_failure('[a-zA-Z]') + r3 = nil + end + s0 << r3 + if r3 + s4, i4 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[a-zA-Z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r5 = true + @index += 1 + else + terminal_parse_failure('[a-zA-Z0-9_]') + r5 = nil + end + if r5 + s4 << r5 + else + break + end + end + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + s0 << r4 + if r4 + if (match_len = has_terminal?('?', false, index)) + r7 = true + @index += match_len + else + terminal_parse_failure('\'?\'') + r7 = nil + end + if r7 + r6 = r7 + else + r6 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r6 + end + end + end + if s0.last + r0 = instantiate_node(SyntaxNode,input, i0...index, s0) + r0.extend(FunctionName0) + else + @index = i0 + r0 = nil + end + + node_cache[:function_name][start_index] = r0 + + r0 + end + + module FunctionArgList0 + def expression + elements[3] + end + end + + module FunctionArgList1 + def first + elements[0] + end + + def rest + elements[1] + end + end + + def _nt_function_arg_list + start_index = index + if node_cache[:function_arg_list].has_key?(index) + cached = node_cache[:function_arg_list][index] + if cached + node_cache[:function_arg_list][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r2 = _nt_expression + if r2 + r1 = r2 + else + r1 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r1 + if r1 + s3, i3 = [], index + loop do + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s4 << r5 + if r5 + if (match_len = has_terminal?(',', false, index)) + r7 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r7 = nil + end + s4 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s4 << r8 + if r8 + r10 = _nt_expression + s4 << r10 + end + end + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(FunctionArgList0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + s0 << r3 + end + if s0.last + r0 = instantiate_node(SyntaxNode,input, i0...index, s0) + r0.extend(FunctionArgList1) + else + @index = i0 + r0 = nil + end + + node_cache[:function_arg_list][start_index] = r0 + + r0 + end + + module BodyFunctionDefinition0 + end + + module BodyFunctionDefinition1 + def single_declaration + elements[3] + end + end + + module BodyFunctionDefinition2 + def first + elements[2] + end + + def rest + elements[3] + end + + end + + module BodyFunctionDefinition3 + def type_name + elements[3] + end + end + + module BodyFunctionDefinition4 + def first + elements[2] + end + + def rest + elements[3] + end + + end + + module BodyFunctionDefinition5 + def single_declaration + elements[3] + end + end + + module BodyFunctionDefinition6 + def first + elements[2] + end + + def rest + elements[3] + end + + end + + module BodyFunctionDefinition7 + def function_body + elements[4] + end + + end + + module BodyFunctionDefinition8 + def type + elements[0] + end + + def function_name + elements[3] + end + + def targs + elements[7] + end + + def ret + elements[8] + end + + def args + elements[9] + end + + def desc + elements[14] + end + + def body_block + elements[17] + end + + end + + def _nt_body_function_definition + start_index = index + if node_cache[:body_function_definition].has_key?(index) + cached = node_cache[:body_function_definition][index] + if cached + node_cache[:body_function_definition][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + i2, s2 = index, [] + if (match_len = has_terminal?('external', false, index)) + r3 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'external\'') + r3 = nil + end + s2 << r3 + if r3 + s4, i4 = [], index + loop do + r5 = _nt_space + if r5 + s4 << r5 + else + break + end + end + if s4.empty? + @index = i4 + r4 = nil + else + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + end + s2 << r4 + end + if s2.last + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + r2.extend(BodyFunctionDefinition0) + else + @index = i2 + r2 = nil + end + if r2 + r1 = r2 + else + r1 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r1 + if r1 + if (match_len = has_terminal?('function', false, index)) + r6 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'function\'') + r6 = nil + end + s0 << r6 + if r6 + s7, i7 = [], index + loop do + r8 = _nt_space + if r8 + s7 << r8 + else + break + end + end + if s7.empty? + @index = i7 + r7 = nil + else + r7 = instantiate_node(SyntaxNode,input, i7...index, s7) + end + s0 << r7 + if r7 + r9 = _nt_function_name + s0 << r9 + if r9 + s10, i10 = [], index + loop do + r11 = _nt_space + if r11 + s10 << r11 + else + break + end + end + r10 = instantiate_node(SyntaxNode,input, i10...index, s10) + s0 << r10 + if r10 + if (match_len = has_terminal?('{', false, index)) + r12 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r12 = nil + end + s0 << r12 + if r12 + s13, i13 = [], index + loop do + r14 = _nt_space + if r14 + s13 << r14 + else + break + end + end + r13 = instantiate_node(SyntaxNode,input, i13...index, s13) + s0 << r13 + if r13 + i16, s16 = index, [] + if (match_len = has_terminal?('template', false, index)) + r17 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'template\'') + r17 = nil + end + s16 << r17 + if r17 + s18, i18 = [], index + loop do + r19 = _nt_space + if r19 + s18 << r19 + else + break + end + end + if s18.empty? + @index = i18 + r18 = nil + else + r18 = instantiate_node(SyntaxNode,input, i18...index, s18) + end + s16 << r18 + if r18 + r20 = _nt_single_declaration + s16 << r20 + if r20 + s21, i21 = [], index + loop do + i22, s22 = index, [] + s23, i23 = [], index + loop do + r24 = _nt_space + if r24 + s23 << r24 + else + break + end + end + r23 = instantiate_node(SyntaxNode,input, i23...index, s23) + s22 << r23 + if r23 + if (match_len = has_terminal?(',', false, index)) + r25 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r25 = nil + end + s22 << r25 + if r25 + s26, i26 = [], index + loop do + r27 = _nt_space + if r27 + s26 << r27 + else + break + end + end + r26 = instantiate_node(SyntaxNode,input, i26...index, s26) + s22 << r26 + if r26 + r28 = _nt_single_declaration + s22 << r28 + end + end + end + if s22.last + r22 = instantiate_node(SyntaxNode,input, i22...index, s22) + r22.extend(BodyFunctionDefinition1) + else + @index = i22 + r22 = nil + end + if r22 + s21 << r22 + else + break + end + end + r21 = instantiate_node(SyntaxNode,input, i21...index, s21) + s16 << r21 + if r21 + s29, i29 = [], index + loop do + r30 = _nt_space + if r30 + s29 << r30 + else + break + end + end + if s29.empty? + @index = i29 + r29 = nil + else + r29 = instantiate_node(SyntaxNode,input, i29...index, s29) + end + s16 << r29 + end + end + end + end + if s16.last + r16 = instantiate_node(SyntaxNode,input, i16...index, s16) + r16.extend(BodyFunctionDefinition2) + else + @index = i16 + r16 = nil + end + if r16 + r15 = r16 + else + r15 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r15 + if r15 + i32, s32 = index, [] + if (match_len = has_terminal?('returns', false, index)) + r33 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'returns\'') + r33 = nil + end + s32 << r33 + if r33 + s34, i34 = [], index + loop do + r35 = _nt_space + if r35 + s34 << r35 + else + break + end + end + if s34.empty? + @index = i34 + r34 = nil + else + r34 = instantiate_node(SyntaxNode,input, i34...index, s34) + end + s32 << r34 + if r34 + r36 = _nt_type_name + s32 << r36 + if r36 + s37, i37 = [], index + loop do + i38, s38 = index, [] + s39, i39 = [], index + loop do + r40 = _nt_space + if r40 + s39 << r40 + else + break + end + end + r39 = instantiate_node(SyntaxNode,input, i39...index, s39) + s38 << r39 + if r39 + if (match_len = has_terminal?(',', false, index)) + r41 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r41 = nil + end + s38 << r41 + if r41 + s42, i42 = [], index + loop do + r43 = _nt_space + if r43 + s42 << r43 + else + break + end + end + r42 = instantiate_node(SyntaxNode,input, i42...index, s42) + s38 << r42 + if r42 + r44 = _nt_type_name + s38 << r44 + end + end + end + if s38.last + r38 = instantiate_node(SyntaxNode,input, i38...index, s38) + r38.extend(BodyFunctionDefinition3) + else + @index = i38 + r38 = nil + end + if r38 + s37 << r38 + else + break + end + end + r37 = instantiate_node(SyntaxNode,input, i37...index, s37) + s32 << r37 + if r37 + s45, i45 = [], index + loop do + r46 = _nt_space + if r46 + s45 << r46 + else + break + end + end + if s45.empty? + @index = i45 + r45 = nil + else + r45 = instantiate_node(SyntaxNode,input, i45...index, s45) + end + s32 << r45 + end + end + end + end + if s32.last + r32 = instantiate_node(SyntaxNode,input, i32...index, s32) + r32.extend(BodyFunctionDefinition4) + else + @index = i32 + r32 = nil + end + if r32 + r31 = r32 + else + r31 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r31 + if r31 + i48, s48 = index, [] + if (match_len = has_terminal?('arguments', false, index)) + r49 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'arguments\'') + r49 = nil + end + s48 << r49 + if r49 + s50, i50 = [], index + loop do + r51 = _nt_space + if r51 + s50 << r51 + else + break + end + end + if s50.empty? + @index = i50 + r50 = nil + else + r50 = instantiate_node(SyntaxNode,input, i50...index, s50) + end + s48 << r50 + if r50 + r52 = _nt_single_declaration + s48 << r52 + if r52 + s53, i53 = [], index + loop do + i54, s54 = index, [] + s55, i55 = [], index + loop do + r56 = _nt_space + if r56 + s55 << r56 + else + break + end + end + r55 = instantiate_node(SyntaxNode,input, i55...index, s55) + s54 << r55 + if r55 + if (match_len = has_terminal?(',', false, index)) + r57 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r57 = nil + end + s54 << r57 + if r57 + s58, i58 = [], index + loop do + r59 = _nt_space + if r59 + s58 << r59 + else + break + end + end + r58 = instantiate_node(SyntaxNode,input, i58...index, s58) + s54 << r58 + if r58 + r60 = _nt_single_declaration + s54 << r60 + end + end + end + if s54.last + r54 = instantiate_node(SyntaxNode,input, i54...index, s54) + r54.extend(BodyFunctionDefinition5) + else + @index = i54 + r54 = nil + end + if r54 + s53 << r54 + else + break + end + end + r53 = instantiate_node(SyntaxNode,input, i53...index, s53) + s48 << r53 + if r53 + s61, i61 = [], index + loop do + r62 = _nt_space + if r62 + s61 << r62 + else + break + end + end + if s61.empty? + @index = i61 + r61 = nil + else + r61 = instantiate_node(SyntaxNode,input, i61...index, s61) + end + s48 << r61 + end + end + end + end + if s48.last + r48 = instantiate_node(SyntaxNode,input, i48...index, s48) + r48.extend(BodyFunctionDefinition6) + else + @index = i48 + r48 = nil + end + if r48 + r47 = r48 + else + r47 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r47 + if r47 + if (match_len = has_terminal?('description', false, index)) + r63 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'description\'') + r63 = nil + end + s0 << r63 + if r63 + s64, i64 = [], index + loop do + r65 = _nt_space + if r65 + s64 << r65 + else + break + end + end + r64 = instantiate_node(SyntaxNode,input, i64...index, s64) + s0 << r64 + if r64 + if (match_len = has_terminal?('{', false, index)) + r66 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r66 = nil + end + s0 << r66 + if r66 + s67, i67 = [], index + loop do + r68 = _nt_space + if r68 + s67 << r68 + else + break + end + end + r67 = instantiate_node(SyntaxNode,input, i67...index, s67) + s0 << r67 + if r67 + s69, i69 = [], index + loop do + i70 = index + if has_terminal?(@regexps[gr = '\A[^}]'] ||= Regexp.new(gr), :regexp, index) + r71 = true + @index += 1 + else + terminal_parse_failure('[^}]') + r71 = nil + end + if r71 + r71 = SyntaxNode.new(input, (index-1)...index) if r71 == true + r70 = r71 + else + if (match_len = has_terminal?("\n", false, index)) + r72 = true + @index += match_len + else + terminal_parse_failure('"\\n"') + r72 = nil + end + if r72 + r72 = SyntaxNode.new(input, (index-1)...index) if r72 == true + r70 = r72 + else + @index = i70 + r70 = nil + end + end + if r70 + s69 << r70 + else + break + end + end + if s69.empty? + @index = i69 + r69 = nil + else + r69 = instantiate_node(SyntaxNode,input, i69...index, s69) + end + s0 << r69 + if r69 + if (match_len = has_terminal?('}', false, index)) + r73 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r73 = nil + end + s0 << r73 + if r73 + s74, i74 = [], index + loop do + r75 = _nt_space + if r75 + s74 << r75 + else + break + end + end + r74 = instantiate_node(SyntaxNode,input, i74...index, s74) + s0 << r74 + if r74 + i76, s76 = index, [] + if (match_len = has_terminal?('body', false, index)) + r77 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'body\'') + r77 = nil + end + s76 << r77 + if r77 + s78, i78 = [], index + loop do + r79 = _nt_space + if r79 + s78 << r79 + else + break + end + end + r78 = instantiate_node(SyntaxNode,input, i78...index, s78) + s76 << r78 + if r78 + if (match_len = has_terminal?('{', false, index)) + r80 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r80 = nil + end + s76 << r80 + if r80 + s81, i81 = [], index + loop do + r82 = _nt_space + if r82 + s81 << r82 + else + break + end + end + r81 = instantiate_node(SyntaxNode,input, i81...index, s81) + s76 << r81 + if r81 + r83 = _nt_function_body + s76 << r83 + if r83 + s84, i84 = [], index + loop do + r85 = _nt_space + if r85 + s84 << r85 + else + break + end + end + r84 = instantiate_node(SyntaxNode,input, i84...index, s84) + s76 << r84 + if r84 + if (match_len = has_terminal?('}', false, index)) + r86 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r86 = nil + end + s76 << r86 + if r86 + s87, i87 = [], index + loop do + r88 = _nt_space + if r88 + s87 << r88 + else + break + end + end + r87 = instantiate_node(SyntaxNode,input, i87...index, s87) + s76 << r87 + end + end + end + end + end + end + end + if s76.last + r76 = instantiate_node(SyntaxNode,input, i76...index, s76) + r76.extend(BodyFunctionDefinition7) + else + @index = i76 + r76 = nil + end + s0 << r76 + if r76 + if (match_len = has_terminal?('}', false, index)) + r89 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r89 = nil + end + s0 << r89 + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::FunctionDefSyntaxNode,input, i0...index, s0) + r0.extend(BodyFunctionDefinition8) + else + @index = i0 + r0 = nil + end + + node_cache[:body_function_definition][start_index] = r0 + + r0 + end + + module BuiltinFunctionDefinition0 + def first + elements[2] + end + + end + + module BuiltinFunctionDefinition1 + def single_declaration + elements[3] + end + end + + module BuiltinFunctionDefinition2 + def first + elements[2] + end + + def rest + elements[3] + end + + end + + module BuiltinFunctionDefinition3 + def type + elements[0] + end + + def function_name + elements[4] + end + + def ret + elements[8] + end + + def args + elements[9] + end + + def desc + elements[14] + end + + end + + def _nt_builtin_function_definition + start_index = index + if node_cache[:builtin_function_definition].has_key?(index) + cached = node_cache[:builtin_function_definition][index] + if cached + node_cache[:builtin_function_definition][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + i1 = index + if (match_len = has_terminal?('builtin', false, index)) + r2 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'builtin\'') + r2 = nil + end + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r1 = r2 + else + if (match_len = has_terminal?('generated', false, index)) + r3 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'generated\'') + r3 = nil + end + if r3 + r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true + r1 = r3 + else + @index = i1 + r1 = nil + end + end + s0 << r1 + if r1 + s4, i4 = [], index + loop do + r5 = _nt_space + if r5 + s4 << r5 + else + break + end + end + if s4.empty? + @index = i4 + r4 = nil + else + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + end + s0 << r4 + if r4 + if (match_len = has_terminal?('function', false, index)) + r6 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'function\'') + r6 = nil + end + s0 << r6 + if r6 + s7, i7 = [], index + loop do + r8 = _nt_space + if r8 + s7 << r8 + else + break + end + end + if s7.empty? + @index = i7 + r7 = nil + else + r7 = instantiate_node(SyntaxNode,input, i7...index, s7) + end + s0 << r7 + if r7 + r9 = _nt_function_name + s0 << r9 + if r9 + s10, i10 = [], index + loop do + r11 = _nt_space + if r11 + s10 << r11 + else + break + end + end + r10 = instantiate_node(SyntaxNode,input, i10...index, s10) + s0 << r10 + if r10 + if (match_len = has_terminal?('{', false, index)) + r12 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r12 = nil + end + s0 << r12 + if r12 + s13, i13 = [], index + loop do + r14 = _nt_space + if r14 + s13 << r14 + else + break + end + end + r13 = instantiate_node(SyntaxNode,input, i13...index, s13) + s0 << r13 + if r13 + i16, s16 = index, [] + if (match_len = has_terminal?('returns', false, index)) + r17 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'returns\'') + r17 = nil + end + s16 << r17 + if r17 + s18, i18 = [], index + loop do + r19 = _nt_space + if r19 + s18 << r19 + else + break + end + end + if s18.empty? + @index = i18 + r18 = nil + else + r18 = instantiate_node(SyntaxNode,input, i18...index, s18) + end + s16 << r18 + if r18 + r20 = _nt_type_name + s16 << r20 + if r20 + s21, i21 = [], index + loop do + r22 = _nt_space + if r22 + s21 << r22 + else + break + end + end + if s21.empty? + @index = i21 + r21 = nil + else + r21 = instantiate_node(SyntaxNode,input, i21...index, s21) + end + s16 << r21 + end + end + end + if s16.last + r16 = instantiate_node(SyntaxNode,input, i16...index, s16) + r16.extend(BuiltinFunctionDefinition0) + else + @index = i16 + r16 = nil + end + if r16 + r15 = r16 + else + r15 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r15 + if r15 + i24, s24 = index, [] + if (match_len = has_terminal?('arguments', false, index)) + r25 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'arguments\'') + r25 = nil + end + s24 << r25 + if r25 + s26, i26 = [], index + loop do + r27 = _nt_space + if r27 + s26 << r27 + else + break + end + end + if s26.empty? + @index = i26 + r26 = nil + else + r26 = instantiate_node(SyntaxNode,input, i26...index, s26) + end + s24 << r26 + if r26 + r28 = _nt_single_declaration + s24 << r28 + if r28 + s29, i29 = [], index + loop do + i30, s30 = index, [] + s31, i31 = [], index + loop do + r32 = _nt_space + if r32 + s31 << r32 + else + break + end + end + r31 = instantiate_node(SyntaxNode,input, i31...index, s31) + s30 << r31 + if r31 + if (match_len = has_terminal?(',', false, index)) + r33 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r33 = nil + end + s30 << r33 + if r33 + s34, i34 = [], index + loop do + r35 = _nt_space + if r35 + s34 << r35 + else + break + end + end + r34 = instantiate_node(SyntaxNode,input, i34...index, s34) + s30 << r34 + if r34 + r36 = _nt_single_declaration + s30 << r36 + end + end + end + if s30.last + r30 = instantiate_node(SyntaxNode,input, i30...index, s30) + r30.extend(BuiltinFunctionDefinition1) + else + @index = i30 + r30 = nil + end + if r30 + s29 << r30 + else + break + end + end + r29 = instantiate_node(SyntaxNode,input, i29...index, s29) + s24 << r29 + if r29 + s37, i37 = [], index + loop do + r38 = _nt_space + if r38 + s37 << r38 + else + break + end + end + if s37.empty? + @index = i37 + r37 = nil + else + r37 = instantiate_node(SyntaxNode,input, i37...index, s37) + end + s24 << r37 + end + end + end + end + if s24.last + r24 = instantiate_node(SyntaxNode,input, i24...index, s24) + r24.extend(BuiltinFunctionDefinition2) + else + @index = i24 + r24 = nil + end + if r24 + r23 = r24 + else + r23 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r23 + if r23 + if (match_len = has_terminal?('description', false, index)) + r39 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'description\'') + r39 = nil + end + s0 << r39 + if r39 + s40, i40 = [], index + loop do + r41 = _nt_space + if r41 + s40 << r41 + else + break + end + end + r40 = instantiate_node(SyntaxNode,input, i40...index, s40) + s0 << r40 + if r40 + if (match_len = has_terminal?('{', false, index)) + r42 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r42 = nil + end + s0 << r42 + if r42 + s43, i43 = [], index + loop do + r44 = _nt_space + if r44 + s43 << r44 + else + break + end + end + r43 = instantiate_node(SyntaxNode,input, i43...index, s43) + s0 << r43 + if r43 + s45, i45 = [], index + loop do + i46 = index + if has_terminal?(@regexps[gr = '\A[^}]'] ||= Regexp.new(gr), :regexp, index) + r47 = true + @index += 1 + else + terminal_parse_failure('[^}]') + r47 = nil + end + if r47 + r47 = SyntaxNode.new(input, (index-1)...index) if r47 == true + r46 = r47 + else + if (match_len = has_terminal?("\n", false, index)) + r48 = true + @index += match_len + else + terminal_parse_failure('"\\n"') + r48 = nil + end + if r48 + r48 = SyntaxNode.new(input, (index-1)...index) if r48 == true + r46 = r48 + else + @index = i46 + r46 = nil + end + end + if r46 + s45 << r46 + else + break + end + end + if s45.empty? + @index = i45 + r45 = nil + else + r45 = instantiate_node(SyntaxNode,input, i45...index, s45) + end + s0 << r45 + if r45 + if (match_len = has_terminal?('}', false, index)) + r49 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r49 = nil + end + s0 << r49 + if r49 + s50, i50 = [], index + loop do + r51 = _nt_space + if r51 + s50 << r51 + else + break + end + end + r50 = instantiate_node(SyntaxNode,input, i50...index, s50) + s0 << r50 + if r50 + if (match_len = has_terminal?('}', false, index)) + r52 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r52 = nil + end + s0 << r52 + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::FunctionDefSyntaxNode,input, i0...index, s0) + r0.extend(BuiltinFunctionDefinition3) + else + @index = i0 + r0 = nil + end + + node_cache[:builtin_function_definition][start_index] = r0 + + r0 + end + + module Fetch0 + def function_body + elements[4] + end + + end + + def _nt_fetch + start_index = index + if node_cache[:fetch].has_key?(index) + cached = node_cache[:fetch][index] + if cached + node_cache[:fetch][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('fetch', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'fetch\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('{', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_function_body + s0 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s0 << r8 + if r8 + if (match_len = has_terminal?('}', false, index)) + r10 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r10 = nil + end + s0 << r10 + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::FetchSyntaxNode,input, i0...index, s0) + r0.extend(Fetch0) + else + @index = i0 + r0 = nil + end + + node_cache[:fetch][start_index] = r0 + + r0 + end + + def _nt_function_definition + start_index = index + if node_cache[:function_definition].has_key?(index) + cached = node_cache[:function_definition][index] + if cached + node_cache[:function_definition][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + r1 = _nt_builtin_function_definition + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r2 = _nt_body_function_definition + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + @index = i0 + r0 = nil + end + end + + node_cache[:function_definition][start_index] = r0 + + r0 + end + + def _nt_rval + start_index = index + if node_cache[:rval].has_key?(index) + cached = node_cache[:rval][index] + if cached + node_cache[:rval][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + r1 = _nt_int + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r2 = _nt_builtin_read_only_var + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + r3 = _nt_builtin_read_write_var + if r3 + r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true + r0 = r3 + else + r4 = _nt_string + if r4 + r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true + r0 = r4 + else + r5 = _nt_id + if r5 + r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true + r0 = r5 + else + @index = i0 + r0 = nil + end + end + end + end + end + + node_cache[:rval][start_index] = r0 + + r0 + end + + module Assignment0 + def var + elements[2] + end + + end + + module Assignment1 + def first + elements[1] + end + + def rest + elements[3] + end + + def function_call + elements[8] + end + end + + module Assignment2 + def rval + elements[4] + end + end + + module Assignment3 + def var + elements[0] + end + + def rval + elements[4] + end + end + + module Assignment4 + def csr_field_access_expression + elements[0] + end + + def rval + elements[4] + end + end + + module Assignment5 + def id + elements[0] + end + + def field_name + elements[4] + end + + def rval + elements[8] + end + end + + module Assignment6 + def var + elements[0] + end + + def msb + elements[4] + end + + def lsb + elements[8] + end + + def rval + elements[14] + end + end + + module Assignment7 + def var + elements[0] + end + + def idx + elements[4] + end + + def rval + elements[10] + end + end + + def _nt_assignment + start_index = index + if node_cache[:assignment].has_key?(index) + cached = node_cache[:assignment][index] + if cached + node_cache[:assignment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + if (match_len = has_terminal?('(', false, index)) + r2 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r2 = nil + end + s1 << r2 + if r2 + i3 = index + r4 = _nt_id + if r4 + r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true + r3 = r4 + else + r5 = _nt_dontcare_lvalue + if r5 + r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true + r3 = r5 + else + @index = i3 + r3 = nil + end + end + s1 << r3 + if r3 + s6, i6 = [], index + loop do + r7 = _nt_space + if r7 + s6 << r7 + else + break + end + end + r6 = instantiate_node(SyntaxNode,input, i6...index, s6) + s1 << r6 + if r6 + s8, i8 = [], index + loop do + i9, s9 = index, [] + if (match_len = has_terminal?(',', false, index)) + r10 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r10 = nil + end + s9 << r10 + if r10 + s11, i11 = [], index + loop do + r12 = _nt_space + if r12 + s11 << r12 + else + break + end + end + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + s9 << r11 + if r11 + i13 = index + r14 = _nt_id + if r14 + r14 = SyntaxNode.new(input, (index-1)...index) if r14 == true + r13 = r14 + else + r15 = _nt_dontcare_lvalue + if r15 + r15 = SyntaxNode.new(input, (index-1)...index) if r15 == true + r13 = r15 + else + @index = i13 + r13 = nil + end + end + s9 << r13 + if r13 + s16, i16 = [], index + loop do + r17 = _nt_space + if r17 + s16 << r17 + else + break + end + end + r16 = instantiate_node(SyntaxNode,input, i16...index, s16) + s9 << r16 + end + end + end + if s9.last + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + r9.extend(Assignment0) + else + @index = i9 + r9 = nil + end + if r9 + s8 << r9 + else + break + end + end + if s8.empty? + @index = i8 + r8 = nil + else + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + end + s1 << r8 + if r8 + if (match_len = has_terminal?(')', false, index)) + r18 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r18 = nil + end + s1 << r18 + if r18 + s19, i19 = [], index + loop do + r20 = _nt_space + if r20 + s19 << r20 + else + break + end + end + r19 = instantiate_node(SyntaxNode,input, i19...index, s19) + s1 << r19 + if r19 + if (match_len = has_terminal?('=', false, index)) + r21 = true + @index += match_len + else + terminal_parse_failure('\'=\'') + r21 = nil + end + s1 << r21 + if r21 + s22, i22 = [], index + loop do + r23 = _nt_space + if r23 + s22 << r23 + else + break + end + end + r22 = instantiate_node(SyntaxNode,input, i22...index, s22) + s1 << r22 + if r22 + r24 = _nt_function_call + s1 << r24 + end + end + end + end + end + end + end + end + if s1.last + r1 = instantiate_node(Idl::MultiVariableAssignmentSyntaxNode,input, i1...index, s1) + r1.extend(Assignment1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r25 = _nt_single_declaration_with_initialization + if r25 + r25 = SyntaxNode.new(input, (index-1)...index) if r25 == true + r0 = r25 + else + i26, s26 = index, [] + if (match_len = has_terminal?('$pc', false, index)) + r27 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'$pc\'') + r27 = nil + end + s26 << r27 + if r27 + s28, i28 = [], index + loop do + r29 = _nt_space + if r29 + s28 << r29 + else + break + end + end + r28 = instantiate_node(SyntaxNode,input, i28...index, s28) + s26 << r28 + if r28 + if (match_len = has_terminal?('=', false, index)) + r30 = true + @index += match_len + else + terminal_parse_failure('\'=\'') + r30 = nil + end + s26 << r30 + if r30 + s31, i31 = [], index + loop do + r32 = _nt_space + if r32 + s31 << r32 + else + break + end + end + r31 = instantiate_node(SyntaxNode,input, i31...index, s31) + s26 << r31 + if r31 + r33 = _nt_expression + s26 << r33 + end + end + end + end + if s26.last + r26 = instantiate_node(Idl::PcAssignmentSyntaxNode,input, i26...index, s26) + r26.extend(Assignment2) + else + @index = i26 + r26 = nil + end + if r26 + r26 = SyntaxNode.new(input, (index-1)...index) if r26 == true + r0 = r26 + else + i34, s34 = index, [] + r35 = _nt_id + s34 << r35 + if r35 + s36, i36 = [], index + loop do + r37 = _nt_space + if r37 + s36 << r37 + else + break + end + end + r36 = instantiate_node(SyntaxNode,input, i36...index, s36) + s34 << r36 + if r36 + if (match_len = has_terminal?('=', false, index)) + r38 = true + @index += match_len + else + terminal_parse_failure('\'=\'') + r38 = nil + end + s34 << r38 + if r38 + s39, i39 = [], index + loop do + r40 = _nt_space + if r40 + s39 << r40 + else + break + end + end + r39 = instantiate_node(SyntaxNode,input, i39...index, s39) + s34 << r39 + if r39 + r41 = _nt_expression + s34 << r41 + end + end + end + end + if s34.last + r34 = instantiate_node(Idl::VariableAssignmentSyntaxNode,input, i34...index, s34) + r34.extend(Assignment3) + else + @index = i34 + r34 = nil + end + if r34 + r34 = SyntaxNode.new(input, (index-1)...index) if r34 == true + r0 = r34 + else + i42, s42 = index, [] + r43 = _nt_csr_field_access_expression + s42 << r43 + if r43 + s44, i44 = [], index + loop do + r45 = _nt_space + if r45 + s44 << r45 + else + break + end + end + r44 = instantiate_node(SyntaxNode,input, i44...index, s44) + s42 << r44 + if r44 + if (match_len = has_terminal?('=', false, index)) + r46 = true + @index += match_len + else + terminal_parse_failure('\'=\'') + r46 = nil + end + s42 << r46 + if r46 + s47, i47 = [], index + loop do + r48 = _nt_space + if r48 + s47 << r48 + else + break + end + end + r47 = instantiate_node(SyntaxNode,input, i47...index, s47) + s42 << r47 + if r47 + r49 = _nt_expression + s42 << r49 + end + end + end + end + if s42.last + r42 = instantiate_node(Idl::CsrFieldAssignmentSyntaxNode,input, i42...index, s42) + r42.extend(Assignment4) + else + @index = i42 + r42 = nil + end + if r42 + r42 = SyntaxNode.new(input, (index-1)...index) if r42 == true + r0 = r42 + else + i50, s50 = index, [] + r51 = _nt_id + s50 << r51 + if r51 + s52, i52 = [], index + loop do + r53 = _nt_space + if r53 + s52 << r53 + else + break + end + end + r52 = instantiate_node(SyntaxNode,input, i52...index, s52) + s50 << r52 + if r52 + if (match_len = has_terminal?('.', false, index)) + r54 = true + @index += match_len + else + terminal_parse_failure('\'.\'') + r54 = nil + end + s50 << r54 + if r54 + s55, i55 = [], index + loop do + r56 = _nt_space + if r56 + s55 << r56 + else + break + end + end + r55 = instantiate_node(SyntaxNode,input, i55...index, s55) + s50 << r55 + if r55 + r57 = _nt_field_name + s50 << r57 + if r57 + s58, i58 = [], index + loop do + r59 = _nt_space + if r59 + s58 << r59 + else + break + end + end + r58 = instantiate_node(SyntaxNode,input, i58...index, s58) + s50 << r58 + if r58 + if (match_len = has_terminal?('=', false, index)) + r60 = true + @index += match_len + else + terminal_parse_failure('\'=\'') + r60 = nil + end + s50 << r60 + if r60 + s61, i61 = [], index + loop do + r62 = _nt_space + if r62 + s61 << r62 + else + break + end + end + r61 = instantiate_node(SyntaxNode,input, i61...index, s61) + s50 << r61 + if r61 + r63 = _nt_expression + s50 << r63 + end + end + end + end + end + end + end + end + if s50.last + r50 = instantiate_node(Idl::FieldAssignmentSyntaxNode,input, i50...index, s50) + r50.extend(Assignment5) + else + @index = i50 + r50 = nil + end + if r50 + r50 = SyntaxNode.new(input, (index-1)...index) if r50 == true + r0 = r50 + else + i64, s64 = index, [] + r65 = _nt_ary_eligible_expression + s64 << r65 + if r65 + s66, i66 = [], index + loop do + r67 = _nt_space + if r67 + s66 << r67 + else + break + end + end + r66 = instantiate_node(SyntaxNode,input, i66...index, s66) + s64 << r66 + if r66 + if (match_len = has_terminal?('[', false, index)) + r68 = true + @index += match_len + else + terminal_parse_failure('\'[\'') + r68 = nil + end + s64 << r68 + if r68 + s69, i69 = [], index + loop do + r70 = _nt_space + if r70 + s69 << r70 + else + break + end + end + r69 = instantiate_node(SyntaxNode,input, i69...index, s69) + s64 << r69 + if r69 + r71 = _nt_expression + s64 << r71 + if r71 + s72, i72 = [], index + loop do + r73 = _nt_space + if r73 + s72 << r73 + else + break + end + end + r72 = instantiate_node(SyntaxNode,input, i72...index, s72) + s64 << r72 + if r72 + if (match_len = has_terminal?(':', false, index)) + r74 = true + @index += match_len + else + terminal_parse_failure('\':\'') + r74 = nil + end + s64 << r74 + if r74 + s75, i75 = [], index + loop do + r76 = _nt_space + if r76 + s75 << r76 + else + break + end + end + r75 = instantiate_node(SyntaxNode,input, i75...index, s75) + s64 << r75 + if r75 + r77 = _nt_expression + s64 << r77 + if r77 + s78, i78 = [], index + loop do + r79 = _nt_space + if r79 + s78 << r79 + else + break + end + end + r78 = instantiate_node(SyntaxNode,input, i78...index, s78) + s64 << r78 + if r78 + if (match_len = has_terminal?(']', false, index)) + r80 = true + @index += match_len + else + terminal_parse_failure('\']\'') + r80 = nil + end + s64 << r80 + if r80 + s81, i81 = [], index + loop do + r82 = _nt_space + if r82 + s81 << r82 + else + break + end + end + r81 = instantiate_node(SyntaxNode,input, i81...index, s81) + s64 << r81 + if r81 + if (match_len = has_terminal?('=', false, index)) + r83 = true + @index += match_len + else + terminal_parse_failure('\'=\'') + r83 = nil + end + s64 << r83 + if r83 + s84, i84 = [], index + loop do + r85 = _nt_space + if r85 + s84 << r85 + else + break + end + end + r84 = instantiate_node(SyntaxNode,input, i84...index, s84) + s64 << r84 + if r84 + r86 = _nt_expression + s64 << r86 + end + end + end + end + end + end + end + end + end + end + end + end + end + end + if s64.last + r64 = instantiate_node(Idl::AryRangeAssignmentSyntaxNode,input, i64...index, s64) + r64.extend(Assignment6) + else + @index = i64 + r64 = nil + end + if r64 + r64 = SyntaxNode.new(input, (index-1)...index) if r64 == true + r0 = r64 + else + i87, s87 = index, [] + r88 = _nt_ary_eligible_expression + s87 << r88 + if r88 + s89, i89 = [], index + loop do + r90 = _nt_space + if r90 + s89 << r90 + else + break + end + end + r89 = instantiate_node(SyntaxNode,input, i89...index, s89) + s87 << r89 + if r89 + if (match_len = has_terminal?('[', false, index)) + r91 = true + @index += match_len + else + terminal_parse_failure('\'[\'') + r91 = nil + end + s87 << r91 + if r91 + s92, i92 = [], index + loop do + r93 = _nt_space + if r93 + s92 << r93 + else + break + end + end + r92 = instantiate_node(SyntaxNode,input, i92...index, s92) + s87 << r92 + if r92 + r94 = _nt_expression + s87 << r94 + if r94 + s95, i95 = [], index + loop do + r96 = _nt_space + if r96 + s95 << r96 + else + break + end + end + r95 = instantiate_node(SyntaxNode,input, i95...index, s95) + s87 << r95 + if r95 + if (match_len = has_terminal?(']', false, index)) + r97 = true + @index += match_len + else + terminal_parse_failure('\']\'') + r97 = nil + end + s87 << r97 + if r97 + s98, i98 = [], index + loop do + r99 = _nt_space + if r99 + s98 << r99 + else + break + end + end + r98 = instantiate_node(SyntaxNode,input, i98...index, s98) + s87 << r98 + if r98 + if (match_len = has_terminal?('=', false, index)) + r100 = true + @index += match_len + else + terminal_parse_failure('\'=\'') + r100 = nil + end + s87 << r100 + if r100 + s101, i101 = [], index + loop do + r102 = _nt_space + if r102 + s101 << r102 + else + break + end + end + r101 = instantiate_node(SyntaxNode,input, i101...index, s101) + s87 << r101 + if r101 + r103 = _nt_expression + s87 << r103 + end + end + end + end + end + end + end + end + end + end + if s87.last + r87 = instantiate_node(Idl::AryElementAssignmentSyntaxNode,input, i87...index, s87) + r87.extend(Assignment7) + else + @index = i87 + r87 = nil + end + if r87 + r87 = SyntaxNode.new(input, (index-1)...index) if r87 == true + r0 = r87 + else + @index = i0 + r0 = nil + end + end + end + end + end + end + end + end + + node_cache[:assignment][start_index] = r0 + + r0 + end + + module ArySizeDecl0 + def expression + elements[2] + end + + end + + def _nt_ary_size_decl + start_index = index + if node_cache[:ary_size_decl].has_key?(index) + cached = node_cache[:ary_size_decl][index] + if cached + node_cache[:ary_size_decl][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('[', false, index)) + r1 = true + @index += match_len + else + terminal_parse_failure('\'[\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + r4 = _nt_expression + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + if (match_len = has_terminal?(']', false, index)) + r7 = true + @index += match_len + else + terminal_parse_failure('\']\'') + r7 = nil + end + s0 << r7 + end + end + end + end + if s0.last + r0 = instantiate_node(SyntaxNode,input, i0...index, s0) + r0.extend(ArySizeDecl0) + else + @index = i0 + r0 = nil + end + + node_cache[:ary_size_decl][start_index] = r0 + + r0 + end + + module SingleDeclarationWithInitialization0 + def type_name + elements[0] + end + + def id + elements[2] + end + + def ary_size + elements[4] + end + + def rval + elements[8] + end + end + + def _nt_single_declaration_with_initialization + start_index = index + if node_cache[:single_declaration_with_initialization].has_key?(index) + cached = node_cache[:single_declaration_with_initialization][index] + if cached + node_cache[:single_declaration_with_initialization][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_type_name + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + if s2.empty? + @index = i2 + r2 = nil + else + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + end + s0 << r2 + if r2 + r4 = _nt_id + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r8 = _nt_ary_size_decl + if r8 + r7 = r8 + else + r7 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r7 + if r7 + s9, i9 = [], index + loop do + r10 = _nt_space + if r10 + s9 << r10 + else + break + end + end + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + s0 << r9 + if r9 + if (match_len = has_terminal?('=', false, index)) + r11 = true + @index += match_len + else + terminal_parse_failure('\'=\'') + r11 = nil + end + s0 << r11 + if r11 + s12, i12 = [], index + loop do + r13 = _nt_space + if r13 + s12 << r13 + else + break + end + end + r12 = instantiate_node(SyntaxNode,input, i12...index, s12) + s0 << r12 + if r12 + r14 = _nt_expression + s0 << r14 + end + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::VariableDeclarationWithInitializationSyntaxNode,input, i0...index, s0) + r0.extend(SingleDeclarationWithInitialization0) + else + @index = i0 + r0 = nil + end + + node_cache[:single_declaration_with_initialization][start_index] = r0 + + r0 + end + + module ForLoopIterationVariableDeclaration0 + def type_name + elements[0] + end + + def id + elements[2] + end + + def ary_size + elements[4] + end + + def rval + elements[8] + end + end + + def _nt_for_loop_iteration_variable_declaration + start_index = index + if node_cache[:for_loop_iteration_variable_declaration].has_key?(index) + cached = node_cache[:for_loop_iteration_variable_declaration][index] + if cached + node_cache[:for_loop_iteration_variable_declaration][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_type_name + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + if s2.empty? + @index = i2 + r2 = nil + else + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + end + s0 << r2 + if r2 + r4 = _nt_id + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r8 = _nt_ary_size_decl + if r8 + r7 = r8 + else + r7 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r7 + if r7 + s9, i9 = [], index + loop do + r10 = _nt_space + if r10 + s9 << r10 + else + break + end + end + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + s0 << r9 + if r9 + if (match_len = has_terminal?('=', false, index)) + r11 = true + @index += match_len + else + terminal_parse_failure('\'=\'') + r11 = nil + end + s0 << r11 + if r11 + s12, i12 = [], index + loop do + r13 = _nt_space + if r13 + s12 << r13 + else + break + end + end + r12 = instantiate_node(SyntaxNode,input, i12...index, s12) + s0 << r12 + if r12 + r14 = _nt_expression + s0 << r14 + end + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::ForLoopIterationVariableDeclarationSyntaxNode,input, i0...index, s0) + r0.extend(ForLoopIterationVariableDeclaration0) + else + @index = i0 + r0 = nil + end + + node_cache[:for_loop_iteration_variable_declaration][start_index] = r0 + + r0 + end + + module Declaration0 + def id + elements[3] + end + end + + module Declaration1 + def type_name + elements[0] + end + + def first + elements[2] + end + + def rest + elements[4] + end + + end + + def _nt_declaration + start_index = index + if node_cache[:declaration].has_key?(index) + cached = node_cache[:declaration][index] + if cached + node_cache[:declaration][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_type_name + s1 << r2 + if r2 + s3, i3 = [], index + loop do + r4 = _nt_space + if r4 + s3 << r4 + else + break + end + end + if s3.empty? + @index = i3 + r3 = nil + else + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + end + s1 << r3 + if r3 + r5 = _nt_id + s1 << r5 + if r5 + s6, i6 = [], index + loop do + r7 = _nt_space + if r7 + s6 << r7 + else + break + end + end + r6 = instantiate_node(SyntaxNode,input, i6...index, s6) + s1 << r6 + if r6 + s8, i8 = [], index + loop do + i9, s9 = index, [] + s10, i10 = [], index + loop do + r11 = _nt_space + if r11 + s10 << r11 + else + break + end + end + r10 = instantiate_node(SyntaxNode,input, i10...index, s10) + s9 << r10 + if r10 + if (match_len = has_terminal?(',', false, index)) + r12 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r12 = nil + end + s9 << r12 + if r12 + s13, i13 = [], index + loop do + r14 = _nt_space + if r14 + s13 << r14 + else + break + end + end + r13 = instantiate_node(SyntaxNode,input, i13...index, s13) + s9 << r13 + if r13 + r15 = _nt_id + s9 << r15 + end + end + end + if s9.last + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + r9.extend(Declaration0) + else + @index = i9 + r9 = nil + end + if r9 + s8 << r9 + else + break + end + end + if s8.empty? + @index = i8 + r8 = nil + else + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + end + s1 << r8 + if r8 + s16, i16 = [], index + loop do + r17 = _nt_space + if r17 + s16 << r17 + else + break + end + end + r16 = instantiate_node(SyntaxNode,input, i16...index, s16) + s1 << r16 + end + end + end + end + end + if s1.last + r1 = instantiate_node(Idl::MultiVariableDeclarationSyntaxNode,input, i1...index, s1) + r1.extend(Declaration1) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r18 = _nt_single_declaration + if r18 + r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true + r0 = r18 + else + @index = i0 + r0 = nil + end + end + + node_cache[:declaration][start_index] = r0 + + r0 + end + + module SingleDeclaration0 + def ary_size_decl + elements[1] + end + end + + module SingleDeclaration1 + def type_name + elements[0] + end + + def id + elements[2] + end + + def ary_size + elements[3] + end + end + + def _nt_single_declaration + start_index = index + if node_cache[:single_declaration].has_key?(index) + cached = node_cache[:single_declaration][index] + if cached + node_cache[:single_declaration][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + r1 = _nt_type_name + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + if s2.empty? + @index = i2 + r2 = nil + else + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + end + s0 << r2 + if r2 + r4 = _nt_id + s0 << r4 + if r4 + i6, s6 = index, [] + s7, i7 = [], index + loop do + r8 = _nt_space + if r8 + s7 << r8 + else + break + end + end + r7 = instantiate_node(SyntaxNode,input, i7...index, s7) + s6 << r7 + if r7 + r9 = _nt_ary_size_decl + s6 << r9 + end + if s6.last + r6 = instantiate_node(SyntaxNode,input, i6...index, s6) + r6.extend(SingleDeclaration0) + else + @index = i6 + r6 = nil + end + if r6 + r5 = r6 + else + r5 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r5 + end + end + end + if s0.last + r0 = instantiate_node(Idl::VariableDeclarationSyntaxNode,input, i0...index, s0) + r0.extend(SingleDeclaration1) + else + @index = i0 + r0 = nil + end + + node_cache[:single_declaration][start_index] = r0 + + r0 + end + + module Statement0 + def a + elements[0] + end + + def expression + elements[4] + end + + end + + module Statement1 + def a + elements[0] + end + + end + + def _nt_statement + start_index = index + if node_cache[:statement].has_key?(index) + cached = node_cache[:statement][index] + if cached + node_cache[:statement][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + i2 = index + r3 = _nt_function_call + if r3 + r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true + r2 = r3 + else + r4 = _nt_assignment + if r4 + r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true + r2 = r4 + else + @index = i2 + r2 = nil + end + end + s1 << r2 + if r2 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s1 << r5 + if r5 + if (match_len = has_terminal?('if', false, index)) + r7 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'if\'') + r7 = nil + end + s1 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s1 << r8 + if r8 + r10 = _nt_expression + s1 << r10 + if r10 + s11, i11 = [], index + loop do + r12 = _nt_space + if r12 + s11 << r12 + else + break + end + end + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + s1 << r11 + if r11 + if (match_len = has_terminal?(';', false, index)) + r13 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r13 = nil + end + s1 << r13 + end + end + end + end + end + end + if s1.last + r1 = instantiate_node(Idl::ConditionalStatementSyntaxNode,input, i1...index, s1) + r1.extend(Statement0) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + i14, s14 = index, [] + i15 = index + r16 = _nt_function_call + if r16 + r16 = SyntaxNode.new(input, (index-1)...index) if r16 == true + r15 = r16 + else + r17 = _nt_assignment + if r17 + r17 = SyntaxNode.new(input, (index-1)...index) if r17 == true + r15 = r17 + else + r18 = _nt_declaration + if r18 + r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true + r15 = r18 + else + @index = i15 + r15 = nil + end + end + end + s14 << r15 + if r15 + s19, i19 = [], index + loop do + r20 = _nt_space + if r20 + s19 << r20 + else + break + end + end + r19 = instantiate_node(SyntaxNode,input, i19...index, s19) + s14 << r19 + if r19 + if (match_len = has_terminal?(';', false, index)) + r21 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r21 = nil + end + s14 << r21 + end + end + if s14.last + r14 = instantiate_node(Idl::StatementSyntaxNode,input, i14...index, s14) + r14.extend(Statement1) + else + @index = i14 + r14 = nil + end + if r14 + r14 = SyntaxNode.new(input, (index-1)...index) if r14 == true + r0 = r14 + else + @index = i0 + r0 = nil + end + end + + node_cache[:statement][start_index] = r0 + + r0 + end + + def _nt_dontcare_lvalue + start_index = index + if node_cache[:dontcare_lvalue].has_key?(index) + cached = node_cache[:dontcare_lvalue][index] + if cached + node_cache[:dontcare_lvalue][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + if (match_len = has_terminal?('-', false, index)) + r0 = instantiate_node(Idl::DontCareLvalueSyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'-\'') + r0 = nil + end + + node_cache[:dontcare_lvalue][start_index] = r0 + + r0 + end + + def _nt_dontcare_return + start_index = index + if node_cache[:dontcare_return].has_key?(index) + cached = node_cache[:dontcare_return][index] + if cached + node_cache[:dontcare_return][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + if (match_len = has_terminal?('-', false, index)) + r0 = instantiate_node(Idl::DontCareReturnSyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'-\'') + r0 = nil + end + + node_cache[:dontcare_return][start_index] = r0 + + r0 + end + + module ReturnExpression0 + def e + elements[1] + end + end + + module ReturnExpression1 + def e + elements[3] + end + end + + module ReturnExpression2 + def first + elements[0] + end + + def rest + elements[1] + end + end + + module ReturnExpression3 + def vals + elements[1] + end + end + + def _nt_return_expression + start_index = index + if node_cache[:return_expression].has_key?(index) + cached = node_cache[:return_expression][index] + if cached + node_cache[:return_expression][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('return', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'return\'') + r1 = nil + end + s0 << r1 + if r1 + i2, s2 = index, [] + i4, s4 = index, [] + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + if s5.empty? + @index = i5 + r5 = nil + else + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + end + s4 << r5 + if r5 + i7 = index + r8 = _nt_expression + if r8 + r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true + r7 = r8 + else + r9 = _nt_dontcare_return + if r9 + r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true + r7 = r9 + else + @index = i7 + r7 = nil + end + end + s4 << r7 + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(ReturnExpression0) + else + @index = i4 + r4 = nil + end + if r4 + r3 = r4 + else + r3 = instantiate_node(SyntaxNode,input, index...index) + end + s2 << r3 + if r3 + s10, i10 = [], index + loop do + i11, s11 = index, [] + s12, i12 = [], index + loop do + r13 = _nt_space + if r13 + s12 << r13 + else + break + end + end + r12 = instantiate_node(SyntaxNode,input, i12...index, s12) + s11 << r12 + if r12 + if (match_len = has_terminal?(',', false, index)) + r14 = true + @index += match_len + else + terminal_parse_failure('\',\'') + r14 = nil + end + s11 << r14 + if r14 + s15, i15 = [], index + loop do + r16 = _nt_space + if r16 + s15 << r16 + else + break + end + end + r15 = instantiate_node(SyntaxNode,input, i15...index, s15) + s11 << r15 + if r15 + i17 = index + r18 = _nt_expression + if r18 + r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true + r17 = r18 + else + r19 = _nt_dontcare_return + if r19 + r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true + r17 = r19 + else + @index = i17 + r17 = nil + end + end + s11 << r17 + end + end + end + if s11.last + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + r11.extend(ReturnExpression1) + else + @index = i11 + r11 = nil + end + if r11 + s10 << r11 + else + break + end + end + r10 = instantiate_node(SyntaxNode,input, i10...index, s10) + s2 << r10 + end + if s2.last + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + r2.extend(ReturnExpression2) + else + @index = i2 + r2 = nil + end + s0 << r2 + end + if s0.last + r0 = instantiate_node(Idl::ReturnExpressionSyntaxNode,input, i0...index, s0) + r0.extend(ReturnExpression3) + else + @index = i0 + r0 = nil + end + + node_cache[:return_expression][start_index] = r0 + + r0 + end + + module ReturnStatement0 + def return_expression + elements[0] + end + + def expression + elements[4] + end + + end + + module ReturnStatement1 + def return_expression + elements[0] + end + + end + + def _nt_return_statement + start_index = index + if node_cache[:return_statement].has_key?(index) + cached = node_cache[:return_statement][index] + if cached + node_cache[:return_statement][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + r2 = _nt_return_expression + s1 << r2 + if r2 + s3, i3 = [], index + loop do + r4 = _nt_space + if r4 + s3 << r4 + else + break + end + end + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + s1 << r3 + if r3 + if (match_len = has_terminal?('if', false, index)) + r5 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'if\'') + r5 = nil + end + s1 << r5 + if r5 + s6, i6 = [], index + loop do + r7 = _nt_space + if r7 + s6 << r7 + else + break + end + end + r6 = instantiate_node(SyntaxNode,input, i6...index, s6) + s1 << r6 + if r6 + r8 = _nt_expression + s1 << r8 + if r8 + s9, i9 = [], index + loop do + r10 = _nt_space + if r10 + s9 << r10 + else + break + end + end + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + s1 << r9 + if r9 + if (match_len = has_terminal?(';', false, index)) + r11 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r11 = nil + end + s1 << r11 + end + end + end + end + end + end + if s1.last + r1 = instantiate_node(Idl::ConditionalReturnStatementSyntaxNode,input, i1...index, s1) + r1.extend(ReturnStatement0) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + i12, s12 = index, [] + r13 = _nt_return_expression + s12 << r13 + if r13 + s14, i14 = [], index + loop do + r15 = _nt_space + if r15 + s14 << r15 + else + break + end + end + r14 = instantiate_node(SyntaxNode,input, i14...index, s14) + s12 << r14 + if r14 + if (match_len = has_terminal?(';', false, index)) + r16 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r16 = nil + end + s12 << r16 + end + end + if s12.last + r12 = instantiate_node(Idl::ReturnStatementSyntaxNode,input, i12...index, s12) + r12.extend(ReturnStatement1) + else + @index = i12 + r12 = nil + end + if r12 + r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true + r0 = r12 + else + @index = i0 + r0 = nil + end + end + + node_cache[:return_statement][start_index] = r0 + + r0 + end + + module FunctionIfBlock0 + def e + elements[0] + end + + end + + module FunctionIfBlock1 + def e + elements[0] + end + + end + + module FunctionIfBlock2 + def expression + elements[7] + end + + def body + elements[13] + end + + end + + module FunctionIfBlock3 + def e + elements[0] + end + + end + + module FunctionIfBlock4 + def body + elements[5] + end + + end + + module FunctionIfBlock5 + def if_cond + elements[4] + end + + def if_body + elements[10] + end + + def elseifs + elements[12] + end + + def final_else + elements[13] + end + end + + def _nt_function_if_block + start_index = index + if node_cache[:function_if_block].has_key?(index) + cached = node_cache[:function_if_block][index] + if cached + node_cache[:function_if_block][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('if', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'if\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('(', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_expression + s0 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s0 << r8 + if r8 + if (match_len = has_terminal?(')', false, index)) + r10 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r10 = nil + end + s0 << r10 + if r10 + s11, i11 = [], index + loop do + r12 = _nt_space + if r12 + s11 << r12 + else + break + end + end + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + s0 << r11 + if r11 + if (match_len = has_terminal?('{', false, index)) + r13 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r13 = nil + end + s0 << r13 + if r13 + s14, i14 = [], index + loop do + r15 = _nt_space + if r15 + s14 << r15 + else + break + end + end + r14 = instantiate_node(SyntaxNode,input, i14...index, s14) + s0 << r14 + if r14 + s16, i16 = [], index + loop do + i17, s17 = index, [] + i18 = index + r19 = _nt_statement + if r19 + r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true + r18 = r19 + else + r20 = _nt_return_statement + if r20 + r20 = SyntaxNode.new(input, (index-1)...index) if r20 == true + r18 = r20 + else + r21 = _nt_function_if_block + if r21 + r21 = SyntaxNode.new(input, (index-1)...index) if r21 == true + r18 = r21 + else + r22 = _nt_for_loop + if r22 + r22 = SyntaxNode.new(input, (index-1)...index) if r22 == true + r18 = r22 + else + @index = i18 + r18 = nil + end + end + end + end + s17 << r18 + if r18 + s23, i23 = [], index + loop do + r24 = _nt_space + if r24 + s23 << r24 + else + break + end + end + r23 = instantiate_node(SyntaxNode,input, i23...index, s23) + s17 << r23 + end + if s17.last + r17 = instantiate_node(SyntaxNode,input, i17...index, s17) + r17.extend(FunctionIfBlock0) + else + @index = i17 + r17 = nil + end + if r17 + s16 << r17 + else + break + end + end + if s16.empty? + @index = i16 + r16 = nil + else + r16 = instantiate_node(SyntaxNode,input, i16...index, s16) + end + s0 << r16 + if r16 + if (match_len = has_terminal?('}', false, index)) + r25 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r25 = nil + end + s0 << r25 + if r25 + s26, i26 = [], index + loop do + i27, s27 = index, [] + s28, i28 = [], index + loop do + r29 = _nt_space + if r29 + s28 << r29 + else + break + end + end + r28 = instantiate_node(SyntaxNode,input, i28...index, s28) + s27 << r28 + if r28 + if (match_len = has_terminal?('else', false, index)) + r30 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'else\'') + r30 = nil + end + s27 << r30 + if r30 + s31, i31 = [], index + loop do + r32 = _nt_space + if r32 + s31 << r32 + else + break + end + end + if s31.empty? + @index = i31 + r31 = nil + else + r31 = instantiate_node(SyntaxNode,input, i31...index, s31) + end + s27 << r31 + if r31 + if (match_len = has_terminal?('if', false, index)) + r33 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'if\'') + r33 = nil + end + s27 << r33 + if r33 + s34, i34 = [], index + loop do + r35 = _nt_space + if r35 + s34 << r35 + else + break + end + end + r34 = instantiate_node(SyntaxNode,input, i34...index, s34) + s27 << r34 + if r34 + if (match_len = has_terminal?('(', false, index)) + r36 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r36 = nil + end + s27 << r36 + if r36 + s37, i37 = [], index + loop do + r38 = _nt_space + if r38 + s37 << r38 + else + break + end + end + r37 = instantiate_node(SyntaxNode,input, i37...index, s37) + s27 << r37 + if r37 + r39 = _nt_expression + s27 << r39 + if r39 + s40, i40 = [], index + loop do + r41 = _nt_space + if r41 + s40 << r41 + else + break + end + end + r40 = instantiate_node(SyntaxNode,input, i40...index, s40) + s27 << r40 + if r40 + if (match_len = has_terminal?(')', false, index)) + r42 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r42 = nil + end + s27 << r42 + if r42 + s43, i43 = [], index + loop do + r44 = _nt_space + if r44 + s43 << r44 + else + break + end + end + r43 = instantiate_node(SyntaxNode,input, i43...index, s43) + s27 << r43 + if r43 + if (match_len = has_terminal?('{', false, index)) + r45 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r45 = nil + end + s27 << r45 + if r45 + s46, i46 = [], index + loop do + r47 = _nt_space + if r47 + s46 << r47 + else + break + end + end + r46 = instantiate_node(SyntaxNode,input, i46...index, s46) + s27 << r46 + if r46 + s48, i48 = [], index + loop do + i49, s49 = index, [] + i50 = index + r51 = _nt_statement + if r51 + r51 = SyntaxNode.new(input, (index-1)...index) if r51 == true + r50 = r51 + else + r52 = _nt_return_statement + if r52 + r52 = SyntaxNode.new(input, (index-1)...index) if r52 == true + r50 = r52 + else + r53 = _nt_function_if_block + if r53 + r53 = SyntaxNode.new(input, (index-1)...index) if r53 == true + r50 = r53 + else + r54 = _nt_for_loop + if r54 + r54 = SyntaxNode.new(input, (index-1)...index) if r54 == true + r50 = r54 + else + @index = i50 + r50 = nil + end + end + end + end + s49 << r50 + if r50 + s55, i55 = [], index + loop do + r56 = _nt_space + if r56 + s55 << r56 + else + break + end + end + r55 = instantiate_node(SyntaxNode,input, i55...index, s55) + s49 << r55 + end + if s49.last + r49 = instantiate_node(SyntaxNode,input, i49...index, s49) + r49.extend(FunctionIfBlock1) + else + @index = i49 + r49 = nil + end + if r49 + s48 << r49 + else + break + end + end + if s48.empty? + @index = i48 + r48 = nil + else + r48 = instantiate_node(SyntaxNode,input, i48...index, s48) + end + s27 << r48 + if r48 + if (match_len = has_terminal?('}', false, index)) + r57 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r57 = nil + end + s27 << r57 + end + end + end + end + end + end + end + end + end + end + end + end + end + end + if s27.last + r27 = instantiate_node(SyntaxNode,input, i27...index, s27) + r27.extend(FunctionIfBlock2) + else + @index = i27 + r27 = nil + end + if r27 + s26 << r27 + else + break + end + end + r26 = instantiate_node(SyntaxNode,input, i26...index, s26) + s0 << r26 + if r26 + i59, s59 = index, [] + s60, i60 = [], index + loop do + r61 = _nt_space + if r61 + s60 << r61 + else + break + end + end + r60 = instantiate_node(SyntaxNode,input, i60...index, s60) + s59 << r60 + if r60 + if (match_len = has_terminal?('else', false, index)) + r62 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'else\'') + r62 = nil + end + s59 << r62 + if r62 + s63, i63 = [], index + loop do + r64 = _nt_space + if r64 + s63 << r64 + else + break + end + end + r63 = instantiate_node(SyntaxNode,input, i63...index, s63) + s59 << r63 + if r63 + if (match_len = has_terminal?('{', false, index)) + r65 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r65 = nil + end + s59 << r65 + if r65 + s66, i66 = [], index + loop do + r67 = _nt_space + if r67 + s66 << r67 + else + break + end + end + r66 = instantiate_node(SyntaxNode,input, i66...index, s66) + s59 << r66 + if r66 + s68, i68 = [], index + loop do + i69, s69 = index, [] + i70 = index + r71 = _nt_statement + if r71 + r71 = SyntaxNode.new(input, (index-1)...index) if r71 == true + r70 = r71 + else + r72 = _nt_return_statement + if r72 + r72 = SyntaxNode.new(input, (index-1)...index) if r72 == true + r70 = r72 + else + r73 = _nt_function_if_block + if r73 + r73 = SyntaxNode.new(input, (index-1)...index) if r73 == true + r70 = r73 + else + r74 = _nt_for_loop + if r74 + r74 = SyntaxNode.new(input, (index-1)...index) if r74 == true + r70 = r74 + else + @index = i70 + r70 = nil + end + end + end + end + s69 << r70 + if r70 + s75, i75 = [], index + loop do + r76 = _nt_space + if r76 + s75 << r76 + else + break + end + end + r75 = instantiate_node(SyntaxNode,input, i75...index, s75) + s69 << r75 + end + if s69.last + r69 = instantiate_node(SyntaxNode,input, i69...index, s69) + r69.extend(FunctionIfBlock3) + else + @index = i69 + r69 = nil + end + if r69 + s68 << r69 + else + break + end + end + if s68.empty? + @index = i68 + r68 = nil + else + r68 = instantiate_node(SyntaxNode,input, i68...index, s68) + end + s59 << r68 + if r68 + if (match_len = has_terminal?('}', false, index)) + r77 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r77 = nil + end + s59 << r77 + end + end + end + end + end + end + if s59.last + r59 = instantiate_node(SyntaxNode,input, i59...index, s59) + r59.extend(FunctionIfBlock4) + else + @index = i59 + r59 = nil + end + if r59 + r58 = r59 + else + r58 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r58 + end + end + end + end + end + end + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::IfSyntaxNode,input, i0...index, s0) + r0.extend(FunctionIfBlock5) + else + @index = i0 + r0 = nil + end + + node_cache[:function_if_block][start_index] = r0 + + r0 + end + + module ExecuteIfBlock0 + def e + elements[0] + end + + end + + module ExecuteIfBlock1 + def e + elements[0] + end + + end + + module ExecuteIfBlock2 + def expression + elements[7] + end + + def body + elements[13] + end + + end + + module ExecuteIfBlock3 + def e + elements[0] + end + + end + + module ExecuteIfBlock4 + def body + elements[5] + end + + end + + module ExecuteIfBlock5 + def if_cond + elements[4] + end + + def if_body + elements[10] + end + + def elseifs + elements[12] + end + + def final_else + elements[13] + end + end + + def _nt_execute_if_block + start_index = index + if node_cache[:execute_if_block].has_key?(index) + cached = node_cache[:execute_if_block][index] + if cached + node_cache[:execute_if_block][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('if', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'if\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('(', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_expression + s0 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s0 << r8 + if r8 + if (match_len = has_terminal?(')', false, index)) + r10 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r10 = nil + end + s0 << r10 + if r10 + s11, i11 = [], index + loop do + r12 = _nt_space + if r12 + s11 << r12 + else + break + end + end + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + s0 << r11 + if r11 + if (match_len = has_terminal?('{', false, index)) + r13 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r13 = nil + end + s0 << r13 + if r13 + s14, i14 = [], index + loop do + r15 = _nt_space + if r15 + s14 << r15 + else + break + end + end + r14 = instantiate_node(SyntaxNode,input, i14...index, s14) + s0 << r14 + if r14 + s16, i16 = [], index + loop do + i17, s17 = index, [] + i18 = index + r19 = _nt_statement + if r19 + r19 = SyntaxNode.new(input, (index-1)...index) if r19 == true + r18 = r19 + else + r20 = _nt_execute_if_block + if r20 + r20 = SyntaxNode.new(input, (index-1)...index) if r20 == true + r18 = r20 + else + r21 = _nt_for_loop + if r21 + r21 = SyntaxNode.new(input, (index-1)...index) if r21 == true + r18 = r21 + else + @index = i18 + r18 = nil + end + end + end + s17 << r18 + if r18 + s22, i22 = [], index + loop do + r23 = _nt_space + if r23 + s22 << r23 + else + break + end + end + r22 = instantiate_node(SyntaxNode,input, i22...index, s22) + s17 << r22 + end + if s17.last + r17 = instantiate_node(SyntaxNode,input, i17...index, s17) + r17.extend(ExecuteIfBlock0) + else + @index = i17 + r17 = nil + end + if r17 + s16 << r17 + else + break + end + end + if s16.empty? + @index = i16 + r16 = nil + else + r16 = instantiate_node(SyntaxNode,input, i16...index, s16) + end + s0 << r16 + if r16 + if (match_len = has_terminal?('}', false, index)) + r24 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r24 = nil + end + s0 << r24 + if r24 + s25, i25 = [], index + loop do + i26, s26 = index, [] + s27, i27 = [], index + loop do + r28 = _nt_space + if r28 + s27 << r28 + else + break + end + end + r27 = instantiate_node(SyntaxNode,input, i27...index, s27) + s26 << r27 + if r27 + if (match_len = has_terminal?('else', false, index)) + r29 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'else\'') + r29 = nil + end + s26 << r29 + if r29 + s30, i30 = [], index + loop do + r31 = _nt_space + if r31 + s30 << r31 + else + break + end + end + if s30.empty? + @index = i30 + r30 = nil + else + r30 = instantiate_node(SyntaxNode,input, i30...index, s30) + end + s26 << r30 + if r30 + if (match_len = has_terminal?('if', false, index)) + r32 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'if\'') + r32 = nil + end + s26 << r32 + if r32 + s33, i33 = [], index + loop do + r34 = _nt_space + if r34 + s33 << r34 + else + break + end + end + r33 = instantiate_node(SyntaxNode,input, i33...index, s33) + s26 << r33 + if r33 + if (match_len = has_terminal?('(', false, index)) + r35 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r35 = nil + end + s26 << r35 + if r35 + s36, i36 = [], index + loop do + r37 = _nt_space + if r37 + s36 << r37 + else + break + end + end + r36 = instantiate_node(SyntaxNode,input, i36...index, s36) + s26 << r36 + if r36 + r38 = _nt_expression + s26 << r38 + if r38 + s39, i39 = [], index + loop do + r40 = _nt_space + if r40 + s39 << r40 + else + break + end + end + r39 = instantiate_node(SyntaxNode,input, i39...index, s39) + s26 << r39 + if r39 + if (match_len = has_terminal?(')', false, index)) + r41 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r41 = nil + end + s26 << r41 + if r41 + s42, i42 = [], index + loop do + r43 = _nt_space + if r43 + s42 << r43 + else + break + end + end + r42 = instantiate_node(SyntaxNode,input, i42...index, s42) + s26 << r42 + if r42 + if (match_len = has_terminal?('{', false, index)) + r44 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r44 = nil + end + s26 << r44 + if r44 + s45, i45 = [], index + loop do + r46 = _nt_space + if r46 + s45 << r46 + else + break + end + end + r45 = instantiate_node(SyntaxNode,input, i45...index, s45) + s26 << r45 + if r45 + s47, i47 = [], index + loop do + i48, s48 = index, [] + i49 = index + r50 = _nt_statement + if r50 + r50 = SyntaxNode.new(input, (index-1)...index) if r50 == true + r49 = r50 + else + r51 = _nt_execute_if_block + if r51 + r51 = SyntaxNode.new(input, (index-1)...index) if r51 == true + r49 = r51 + else + r52 = _nt_for_loop + if r52 + r52 = SyntaxNode.new(input, (index-1)...index) if r52 == true + r49 = r52 + else + @index = i49 + r49 = nil + end + end + end + s48 << r49 + if r49 + s53, i53 = [], index + loop do + r54 = _nt_space + if r54 + s53 << r54 + else + break + end + end + r53 = instantiate_node(SyntaxNode,input, i53...index, s53) + s48 << r53 + end + if s48.last + r48 = instantiate_node(SyntaxNode,input, i48...index, s48) + r48.extend(ExecuteIfBlock1) + else + @index = i48 + r48 = nil + end + if r48 + s47 << r48 + else + break + end + end + if s47.empty? + @index = i47 + r47 = nil + else + r47 = instantiate_node(SyntaxNode,input, i47...index, s47) + end + s26 << r47 + if r47 + if (match_len = has_terminal?('}', false, index)) + r55 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r55 = nil + end + s26 << r55 + end + end + end + end + end + end + end + end + end + end + end + end + end + end + if s26.last + r26 = instantiate_node(SyntaxNode,input, i26...index, s26) + r26.extend(ExecuteIfBlock2) + else + @index = i26 + r26 = nil + end + if r26 + s25 << r26 + else + break + end + end + r25 = instantiate_node(SyntaxNode,input, i25...index, s25) + s0 << r25 + if r25 + i57, s57 = index, [] + s58, i58 = [], index + loop do + r59 = _nt_space + if r59 + s58 << r59 + else + break + end + end + r58 = instantiate_node(SyntaxNode,input, i58...index, s58) + s57 << r58 + if r58 + if (match_len = has_terminal?('else', false, index)) + r60 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'else\'') + r60 = nil + end + s57 << r60 + if r60 + s61, i61 = [], index + loop do + r62 = _nt_space + if r62 + s61 << r62 + else + break + end + end + r61 = instantiate_node(SyntaxNode,input, i61...index, s61) + s57 << r61 + if r61 + if (match_len = has_terminal?('{', false, index)) + r63 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r63 = nil + end + s57 << r63 + if r63 + s64, i64 = [], index + loop do + r65 = _nt_space + if r65 + s64 << r65 + else + break + end + end + r64 = instantiate_node(SyntaxNode,input, i64...index, s64) + s57 << r64 + if r64 + s66, i66 = [], index + loop do + i67, s67 = index, [] + i68 = index + r69 = _nt_statement + if r69 + r69 = SyntaxNode.new(input, (index-1)...index) if r69 == true + r68 = r69 + else + r70 = _nt_execute_if_block + if r70 + r70 = SyntaxNode.new(input, (index-1)...index) if r70 == true + r68 = r70 + else + r71 = _nt_for_loop + if r71 + r71 = SyntaxNode.new(input, (index-1)...index) if r71 == true + r68 = r71 + else + @index = i68 + r68 = nil + end + end + end + s67 << r68 + if r68 + s72, i72 = [], index + loop do + r73 = _nt_space + if r73 + s72 << r73 + else + break + end + end + r72 = instantiate_node(SyntaxNode,input, i72...index, s72) + s67 << r72 + end + if s67.last + r67 = instantiate_node(SyntaxNode,input, i67...index, s67) + r67.extend(ExecuteIfBlock3) + else + @index = i67 + r67 = nil + end + if r67 + s66 << r67 + else + break + end + end + if s66.empty? + @index = i66 + r66 = nil + else + r66 = instantiate_node(SyntaxNode,input, i66...index, s66) + end + s57 << r66 + if r66 + if (match_len = has_terminal?('}', false, index)) + r74 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r74 = nil + end + s57 << r74 + end + end + end + end + end + end + if s57.last + r57 = instantiate_node(SyntaxNode,input, i57...index, s57) + r57.extend(ExecuteIfBlock4) + else + @index = i57 + r57 = nil + end + if r57 + r56 = r57 + else + r56 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r56 + end + end + end + end + end + end + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::IfSyntaxNode,input, i0...index, s0) + r0.extend(ExecuteIfBlock5) + else + @index = i0 + r0 = nil + end + + node_cache[:execute_if_block][start_index] = r0 + + r0 + end + + module ForLoop0 + def s + elements[0] + end + + end + + module ForLoop1 + def for_loop_iteration_variable_declaration + elements[4] + end + + def condition + elements[8] + end + + def action + elements[12] + end + + def stmts + elements[18] + end + + end + + def _nt_for_loop + start_index = index + if node_cache[:for_loop].has_key?(index) + cached = node_cache[:for_loop][index] + if cached + node_cache[:for_loop][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('for', false, index)) + r1 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'for\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + r3 = _nt_space + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('(', false, index)) + r4 = true + @index += match_len + else + terminal_parse_failure('\'(\'') + r4 = nil + end + s0 << r4 + if r4 + s5, i5 = [], index + loop do + r6 = _nt_space + if r6 + s5 << r6 + else + break + end + end + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + s0 << r5 + if r5 + r7 = _nt_for_loop_iteration_variable_declaration + s0 << r7 + if r7 + s8, i8 = [], index + loop do + r9 = _nt_space + if r9 + s8 << r9 + else + break + end + end + r8 = instantiate_node(SyntaxNode,input, i8...index, s8) + s0 << r8 + if r8 + if (match_len = has_terminal?(';', false, index)) + r10 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r10 = nil + end + s0 << r10 + if r10 + s11, i11 = [], index + loop do + r12 = _nt_space + if r12 + s11 << r12 + else + break + end + end + r11 = instantiate_node(SyntaxNode,input, i11...index, s11) + s0 << r11 + if r11 + r13 = _nt_expression + s0 << r13 + if r13 + s14, i14 = [], index + loop do + r15 = _nt_space + if r15 + s14 << r15 + else + break + end + end + r14 = instantiate_node(SyntaxNode,input, i14...index, s14) + s0 << r14 + if r14 + if (match_len = has_terminal?(';', false, index)) + r16 = true + @index += match_len + else + terminal_parse_failure('\';\'') + r16 = nil + end + s0 << r16 + if r16 + s17, i17 = [], index + loop do + r18 = _nt_space + if r18 + s17 << r18 + else + break + end + end + r17 = instantiate_node(SyntaxNode,input, i17...index, s17) + s0 << r17 + if r17 + i19 = index + r20 = _nt_assignment + if r20 + r20 = SyntaxNode.new(input, (index-1)...index) if r20 == true + r19 = r20 + else + r21 = _nt_post_inc + if r21 + r21 = SyntaxNode.new(input, (index-1)...index) if r21 == true + r19 = r21 + else + r22 = _nt_post_dec + if r22 + r22 = SyntaxNode.new(input, (index-1)...index) if r22 == true + r19 = r22 + else + @index = i19 + r19 = nil + end + end + end + s0 << r19 + if r19 + s23, i23 = [], index + loop do + r24 = _nt_space + if r24 + s23 << r24 + else + break + end + end + r23 = instantiate_node(SyntaxNode,input, i23...index, s23) + s0 << r23 + if r23 + if (match_len = has_terminal?(')', false, index)) + r25 = true + @index += match_len + else + terminal_parse_failure('\')\'') + r25 = nil + end + s0 << r25 + if r25 + s26, i26 = [], index + loop do + r27 = _nt_space + if r27 + s26 << r27 + else + break + end + end + r26 = instantiate_node(SyntaxNode,input, i26...index, s26) + s0 << r26 + if r26 + if (match_len = has_terminal?('{', false, index)) + r28 = true + @index += match_len + else + terminal_parse_failure('\'{\'') + r28 = nil + end + s0 << r28 + if r28 + s29, i29 = [], index + loop do + r30 = _nt_space + if r30 + s29 << r30 + else + break + end + end + r29 = instantiate_node(SyntaxNode,input, i29...index, s29) + s0 << r29 + if r29 + s31, i31 = [], index + loop do + i32, s32 = index, [] + i33 = index + r34 = _nt_statement + if r34 + r34 = SyntaxNode.new(input, (index-1)...index) if r34 == true + r33 = r34 + else + r35 = _nt_return_statement + if r35 + r35 = SyntaxNode.new(input, (index-1)...index) if r35 == true + r33 = r35 + else + r36 = _nt_function_if_block + if r36 + r36 = SyntaxNode.new(input, (index-1)...index) if r36 == true + r33 = r36 + else + r37 = _nt_for_loop + if r37 + r37 = SyntaxNode.new(input, (index-1)...index) if r37 == true + r33 = r37 + else + @index = i33 + r33 = nil + end + end + end + end + s32 << r33 + if r33 + s38, i38 = [], index + loop do + r39 = _nt_space + if r39 + s38 << r39 + else + break + end + end + r38 = instantiate_node(SyntaxNode,input, i38...index, s38) + s32 << r38 + end + if s32.last + r32 = instantiate_node(SyntaxNode,input, i32...index, s32) + r32.extend(ForLoop0) + else + @index = i32 + r32 = nil + end + if r32 + s31 << r32 + else + break + end + end + if s31.empty? + @index = i31 + r31 = nil + else + r31 = instantiate_node(SyntaxNode,input, i31...index, s31) + end + s0 << r31 + if r31 + if (match_len = has_terminal?('}', false, index)) + r40 = true + @index += match_len + else + terminal_parse_failure('\'}\'') + r40 = nil + end + s0 << r40 + if r40 + s41, i41 = [], index + loop do + r42 = _nt_space + if r42 + s41 << r42 + else + break + end + end + r41 = instantiate_node(SyntaxNode,input, i41...index, s41) + s0 << r41 + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + if s0.last + r0 = instantiate_node(Idl::ForLoopSyntaxNode,input, i0...index, s0) + r0.extend(ForLoop1) + else + @index = i0 + r0 = nil + end + + node_cache[:for_loop][start_index] = r0 + + r0 + end + + module BuiltinTypeName0 + end + + module BuiltinTypeName1 + def i + elements[4] + end + + end + + module BuiltinTypeName2 + end + + module BuiltinTypeName3 + end + + module BuiltinTypeName4 + end + + module BuiltinTypeName5 + end + + def _nt_builtin_type_name + start_index = index + if node_cache[:builtin_type_name].has_key?(index) + cached = node_cache[:builtin_type_name][index] + if cached + node_cache[:builtin_type_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + if (match_len = has_terminal?('XReg', false, index)) + r2 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'XReg\'') + r2 = nil + end + s1 << r2 + if r2 + i3 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9]'] ||= Regexp.new(gr), :regexp, index) + r4 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9]') + r4 = nil + end + if r4 + @index = i3 + r3 = nil + terminal_parse_failure('[A-Za-z0-9]', true) + else + @terminal_failures.pop + @index = i3 + r3 = instantiate_node(SyntaxNode,input, index...index) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(Idl::BuiltinTypeNameSyntaxNode,input, i1...index, s1) + r1.extend(BuiltinTypeName0) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + i5, s5 = index, [] + if (match_len = has_terminal?('Bits', false, index)) + r6 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'Bits\'') + r6 = nil + end + s5 << r6 + if r6 + s7, i7 = [], index + loop do + r8 = _nt_space + if r8 + s7 << r8 + else + break + end + end + r7 = instantiate_node(SyntaxNode,input, i7...index, s7) + s5 << r7 + if r7 + if (match_len = has_terminal?('<', false, index)) + r9 = true + @index += match_len + else + terminal_parse_failure('\'<\'') + r9 = nil + end + s5 << r9 + if r9 + s10, i10 = [], index + loop do + r11 = _nt_space + if r11 + s10 << r11 + else + break + end + end + r10 = instantiate_node(SyntaxNode,input, i10...index, s10) + s5 << r10 + if r10 + r12 = _nt_template_safe_expression + s5 << r12 + if r12 + s13, i13 = [], index + loop do + r14 = _nt_space + if r14 + s13 << r14 + else + break + end + end + r13 = instantiate_node(SyntaxNode,input, i13...index, s13) + s5 << r13 + if r13 + if (match_len = has_terminal?('>', false, index)) + r15 = true + @index += match_len + else + terminal_parse_failure('\'>\'') + r15 = nil + end + s5 << r15 + if r15 + i16 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9]'] ||= Regexp.new(gr), :regexp, index) + r17 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9]') + r17 = nil + end + if r17 + @index = i16 + r16 = nil + terminal_parse_failure('[A-Za-z0-9]', true) + else + @terminal_failures.pop + @index = i16 + r16 = instantiate_node(SyntaxNode,input, index...index) + end + s5 << r16 + end + end + end + end + end + end + end + if s5.last + r5 = instantiate_node(Idl::BuiltinTypeNameSyntaxNode,input, i5...index, s5) + r5.extend(BuiltinTypeName1) + else + @index = i5 + r5 = nil + end + if r5 + r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true + r0 = r5 + else + i18, s18 = index, [] + if (match_len = has_terminal?('Boolean', false, index)) + r19 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'Boolean\'') + r19 = nil + end + s18 << r19 + if r19 + i20 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9]'] ||= Regexp.new(gr), :regexp, index) + r21 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9]') + r21 = nil + end + if r21 + @index = i20 + r20 = nil + terminal_parse_failure('[A-Za-z0-9]', true) + else + @terminal_failures.pop + @index = i20 + r20 = instantiate_node(SyntaxNode,input, index...index) + end + s18 << r20 + end + if s18.last + r18 = instantiate_node(Idl::BuiltinTypeNameSyntaxNode,input, i18...index, s18) + r18.extend(BuiltinTypeName2) + else + @index = i18 + r18 = nil + end + if r18 + r18 = SyntaxNode.new(input, (index-1)...index) if r18 == true + r0 = r18 + else + i22, s22 = index, [] + if (match_len = has_terminal?('String', false, index)) + r23 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'String\'') + r23 = nil + end + s22 << r23 + if r23 + i24 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9]'] ||= Regexp.new(gr), :regexp, index) + r25 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9]') + r25 = nil + end + if r25 + @index = i24 + r24 = nil + terminal_parse_failure('[A-Za-z0-9]', true) + else + @terminal_failures.pop + @index = i24 + r24 = instantiate_node(SyntaxNode,input, index...index) + end + s22 << r24 + end + if s22.last + r22 = instantiate_node(Idl::BuiltinTypeNameSyntaxNode,input, i22...index, s22) + r22.extend(BuiltinTypeName3) + else + @index = i22 + r22 = nil + end + if r22 + r22 = SyntaxNode.new(input, (index-1)...index) if r22 == true + r0 = r22 + else + i26, s26 = index, [] + if (match_len = has_terminal?('U64', false, index)) + r27 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'U64\'') + r27 = nil + end + s26 << r27 + if r27 + i28 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9]'] ||= Regexp.new(gr), :regexp, index) + r29 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9]') + r29 = nil + end + if r29 + @index = i28 + r28 = nil + terminal_parse_failure('[A-Za-z0-9]', true) + else + @terminal_failures.pop + @index = i28 + r28 = instantiate_node(SyntaxNode,input, index...index) + end + s26 << r28 + end + if s26.last + r26 = instantiate_node(Idl::BuiltinTypeNameSyntaxNode,input, i26...index, s26) + r26.extend(BuiltinTypeName4) + else + @index = i26 + r26 = nil + end + if r26 + r26 = SyntaxNode.new(input, (index-1)...index) if r26 == true + r0 = r26 + else + i30, s30 = index, [] + if (match_len = has_terminal?('U32', false, index)) + r31 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'U32\'') + r31 = nil + end + s30 << r31 + if r31 + i32 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9]'] ||= Regexp.new(gr), :regexp, index) + r33 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9]') + r33 = nil + end + if r33 + @index = i32 + r32 = nil + terminal_parse_failure('[A-Za-z0-9]', true) + else + @terminal_failures.pop + @index = i32 + r32 = instantiate_node(SyntaxNode,input, index...index) + end + s30 << r32 + end + if s30.last + r30 = instantiate_node(Idl::BuiltinTypeNameSyntaxNode,input, i30...index, s30) + r30.extend(BuiltinTypeName5) + else + @index = i30 + r30 = nil + end + if r30 + r30 = SyntaxNode.new(input, (index-1)...index) if r30 == true + r0 = r30 + else + @index = i0 + r0 = nil + end + end + end + end + end + end + + node_cache[:builtin_type_name][start_index] = r0 + + r0 + end + + module Keyword0 + end + + module Keyword1 + end + + module Keyword2 + end + + module Keyword3 + end + + module Keyword4 + end + + module Keyword5 + end + + module Keyword6 + end + + module Keyword7 + end + + module Keyword8 + end + + module Keyword9 + end + + module Keyword10 + end + + module Keyword11 + end + + module Keyword12 + end + + module Keyword13 + end + + module Keyword14 + end + + module Keyword15 + end + + def _nt_keyword + start_index = index + if node_cache[:keyword].has_key?(index) + cached = node_cache[:keyword][index] + if cached + node_cache[:keyword][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + if (match_len = has_terminal?('if', false, index)) + r2 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'if\'') + r2 = nil + end + s1 << r2 + if r2 + i3 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r4 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r4 = nil + end + if r4 + @index = i3 + r3 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i3 + r3 = instantiate_node(SyntaxNode,input, index...index) + end + s1 << r3 + end + if s1.last + r1 = instantiate_node(SyntaxNode,input, i1...index, s1) + r1.extend(Keyword0) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + i5, s5 = index, [] + if (match_len = has_terminal?('else', false, index)) + r6 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'else\'') + r6 = nil + end + s5 << r6 + if r6 + i7 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r8 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r8 = nil + end + if r8 + @index = i7 + r7 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i7 + r7 = instantiate_node(SyntaxNode,input, index...index) + end + s5 << r7 + end + if s5.last + r5 = instantiate_node(SyntaxNode,input, i5...index, s5) + r5.extend(Keyword1) + else + @index = i5 + r5 = nil + end + if r5 + r5 = SyntaxNode.new(input, (index-1)...index) if r5 == true + r0 = r5 + else + i9, s9 = index, [] + if (match_len = has_terminal?('for', false, index)) + r10 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'for\'') + r10 = nil + end + s9 << r10 + if r10 + i11 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r12 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r12 = nil + end + if r12 + @index = i11 + r11 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i11 + r11 = instantiate_node(SyntaxNode,input, index...index) + end + s9 << r11 + end + if s9.last + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + r9.extend(Keyword2) + else + @index = i9 + r9 = nil + end + if r9 + r9 = SyntaxNode.new(input, (index-1)...index) if r9 == true + r0 = r9 + else + i13, s13 = index, [] + if (match_len = has_terminal?('return', false, index)) + r14 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'return\'') + r14 = nil + end + s13 << r14 + if r14 + i15 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r16 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r16 = nil + end + if r16 + @index = i15 + r15 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i15 + r15 = instantiate_node(SyntaxNode,input, index...index) + end + s13 << r15 + end + if s13.last + r13 = instantiate_node(SyntaxNode,input, i13...index, s13) + r13.extend(Keyword3) + else + @index = i13 + r13 = nil + end + if r13 + r13 = SyntaxNode.new(input, (index-1)...index) if r13 == true + r0 = r13 + else + i17, s17 = index, [] + if (match_len = has_terminal?('returns', false, index)) + r18 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'returns\'') + r18 = nil + end + s17 << r18 + if r18 + i19 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r20 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r20 = nil + end + if r20 + @index = i19 + r19 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i19 + r19 = instantiate_node(SyntaxNode,input, index...index) + end + s17 << r19 + end + if s17.last + r17 = instantiate_node(SyntaxNode,input, i17...index, s17) + r17.extend(Keyword4) + else + @index = i17 + r17 = nil + end + if r17 + r17 = SyntaxNode.new(input, (index-1)...index) if r17 == true + r0 = r17 + else + i21, s21 = index, [] + if (match_len = has_terminal?('arguments', false, index)) + r22 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'arguments\'') + r22 = nil + end + s21 << r22 + if r22 + i23 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r24 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r24 = nil + end + if r24 + @index = i23 + r23 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i23 + r23 = instantiate_node(SyntaxNode,input, index...index) + end + s21 << r23 + end + if s21.last + r21 = instantiate_node(SyntaxNode,input, i21...index, s21) + r21.extend(Keyword5) + else + @index = i21 + r21 = nil + end + if r21 + r21 = SyntaxNode.new(input, (index-1)...index) if r21 == true + r0 = r21 + else + i25, s25 = index, [] + if (match_len = has_terminal?('description', false, index)) + r26 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'description\'') + r26 = nil + end + s25 << r26 + if r26 + i27 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r28 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r28 = nil + end + if r28 + @index = i27 + r27 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i27 + r27 = instantiate_node(SyntaxNode,input, index...index) + end + s25 << r27 + end + if s25.last + r25 = instantiate_node(SyntaxNode,input, i25...index, s25) + r25.extend(Keyword6) + else + @index = i25 + r25 = nil + end + if r25 + r25 = SyntaxNode.new(input, (index-1)...index) if r25 == true + r0 = r25 + else + i29, s29 = index, [] + if (match_len = has_terminal?('body', false, index)) + r30 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'body\'') + r30 = nil + end + s29 << r30 + if r30 + i31 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r32 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r32 = nil + end + if r32 + @index = i31 + r31 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i31 + r31 = instantiate_node(SyntaxNode,input, index...index) + end + s29 << r31 + end + if s29.last + r29 = instantiate_node(SyntaxNode,input, i29...index, s29) + r29.extend(Keyword7) + else + @index = i29 + r29 = nil + end + if r29 + r29 = SyntaxNode.new(input, (index-1)...index) if r29 == true + r0 = r29 + else + i33, s33 = index, [] + if (match_len = has_terminal?('function', false, index)) + r34 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'function\'') + r34 = nil + end + s33 << r34 + if r34 + i35 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r36 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r36 = nil + end + if r36 + @index = i35 + r35 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i35 + r35 = instantiate_node(SyntaxNode,input, index...index) + end + s33 << r35 + end + if s33.last + r33 = instantiate_node(SyntaxNode,input, i33...index, s33) + r33.extend(Keyword8) + else + @index = i33 + r33 = nil + end + if r33 + r33 = SyntaxNode.new(input, (index-1)...index) if r33 == true + r0 = r33 + else + i37, s37 = index, [] + if (match_len = has_terminal?('builtin', false, index)) + r38 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'builtin\'') + r38 = nil + end + s37 << r38 + if r38 + i39 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r40 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r40 = nil + end + if r40 + @index = i39 + r39 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i39 + r39 = instantiate_node(SyntaxNode,input, index...index) + end + s37 << r39 + end + if s37.last + r37 = instantiate_node(SyntaxNode,input, i37...index, s37) + r37.extend(Keyword9) + else + @index = i37 + r37 = nil + end + if r37 + r37 = SyntaxNode.new(input, (index-1)...index) if r37 == true + r0 = r37 + else + i41, s41 = index, [] + if (match_len = has_terminal?('generated', false, index)) + r42 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'generated\'') + r42 = nil + end + s41 << r42 + if r42 + i43 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r44 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r44 = nil + end + if r44 + @index = i43 + r43 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i43 + r43 = instantiate_node(SyntaxNode,input, index...index) + end + s41 << r43 + end + if s41.last + r41 = instantiate_node(SyntaxNode,input, i41...index, s41) + r41.extend(Keyword10) + else + @index = i41 + r41 = nil + end + if r41 + r41 = SyntaxNode.new(input, (index-1)...index) if r41 == true + r0 = r41 + else + i45, s45 = index, [] + if (match_len = has_terminal?('enum', false, index)) + r46 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'enum\'') + r46 = nil + end + s45 << r46 + if r46 + i47 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r48 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r48 = nil + end + if r48 + @index = i47 + r47 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i47 + r47 = instantiate_node(SyntaxNode,input, index...index) + end + s45 << r47 + end + if s45.last + r45 = instantiate_node(SyntaxNode,input, i45...index, s45) + r45.extend(Keyword11) + else + @index = i45 + r45 = nil + end + if r45 + r45 = SyntaxNode.new(input, (index-1)...index) if r45 == true + r0 = r45 + else + i49, s49 = index, [] + if (match_len = has_terminal?('bitfield', false, index)) + r50 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'bitfield\'') + r50 = nil + end + s49 << r50 + if r50 + i51 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r52 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r52 = nil + end + if r52 + @index = i51 + r51 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i51 + r51 = instantiate_node(SyntaxNode,input, index...index) + end + s49 << r51 + end + if s49.last + r49 = instantiate_node(SyntaxNode,input, i49...index, s49) + r49.extend(Keyword12) + else + @index = i49 + r49 = nil + end + if r49 + r49 = SyntaxNode.new(input, (index-1)...index) if r49 == true + r0 = r49 + else + i53, s53 = index, [] + if (match_len = has_terminal?('CSR', false, index)) + r54 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'CSR\'') + r54 = nil + end + s53 << r54 + if r54 + i55 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r56 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r56 = nil + end + if r56 + @index = i55 + r55 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i55 + r55 = instantiate_node(SyntaxNode,input, index...index) + end + s53 << r55 + end + if s53.last + r53 = instantiate_node(SyntaxNode,input, i53...index, s53) + r53.extend(Keyword13) + else + @index = i53 + r53 = nil + end + if r53 + r53 = SyntaxNode.new(input, (index-1)...index) if r53 == true + r0 = r53 + else + i57, s57 = index, [] + if (match_len = has_terminal?('true', false, index)) + r58 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'true\'') + r58 = nil + end + s57 << r58 + if r58 + i59 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r60 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r60 = nil + end + if r60 + @index = i59 + r59 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i59 + r59 = instantiate_node(SyntaxNode,input, index...index) + end + s57 << r59 + end + if s57.last + r57 = instantiate_node(SyntaxNode,input, i57...index, s57) + r57.extend(Keyword14) + else + @index = i57 + r57 = nil + end + if r57 + r57 = SyntaxNode.new(input, (index-1)...index) if r57 == true + r0 = r57 + else + i61, s61 = index, [] + if (match_len = has_terminal?('false', false, index)) + r62 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'false\'') + r62 = nil + end + s61 << r62 + if r62 + i63 = index + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r64 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r64 = nil + end + if r64 + @index = i63 + r63 = nil + terminal_parse_failure('[A-Za-z0-9_]', true) + else + @terminal_failures.pop + @index = i63 + r63 = instantiate_node(SyntaxNode,input, index...index) + end + s61 << r63 + end + if s61.last + r61 = instantiate_node(SyntaxNode,input, i61...index, s61) + r61.extend(Keyword15) + else + @index = i61 + r61 = nil + end + if r61 + r61 = SyntaxNode.new(input, (index-1)...index) if r61 == true + r0 = r61 + else + @index = i0 + r0 = nil + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + end + + node_cache[:keyword][start_index] = r0 + + r0 + end + + module UserTypeName0 + end + + def _nt_user_type_name + start_index = index + if node_cache[:user_type_name].has_key?(index) + cached = node_cache[:user_type_name][index] + if cached + node_cache[:user_type_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + i1 = index + r2 = _nt_reserved + if r2 + @index = i1 + r1 = nil + else + @index = i1 + r1 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r1 + if r1 + if has_terminal?(@regexps[gr = '\A[A-Z]'] ||= Regexp.new(gr), :regexp, index) + r3 = true + @index += 1 + else + terminal_parse_failure('[A-Z]') + r3 = nil + end + s0 << r3 + if r3 + s4, i4 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[A-Za-z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r5 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z0-9_]') + r5 = nil + end + if r5 + s4 << r5 + else + break + end + end + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + s0 << r4 + end + end + if s0.last + r0 = instantiate_node(Idl::UserTypeNameSyntaxNode,input, i0...index, s0) + r0.extend(UserTypeName0) + else + @index = i0 + r0 = nil + end + + node_cache[:user_type_name][start_index] = r0 + + r0 + end + + module FieldName0 + end + + def _nt_field_name + start_index = index + if node_cache[:field_name].has_key?(index) + cached = node_cache[:field_name][index] + if cached + node_cache[:field_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if has_terminal?(@regexps[gr = '\A[a-zA-Z]'] ||= Regexp.new(gr), :regexp, index) + r1 = true + @index += 1 + else + terminal_parse_failure('[a-zA-Z]') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[a-zA-Z0-9_]'] ||= Regexp.new(gr), :regexp, index) + r3 = true + @index += 1 + else + terminal_parse_failure('[a-zA-Z0-9_]') + r3 = nil + end + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + end + if s0.last + r0 = instantiate_node(SyntaxNode,input, i0...index, s0) + r0.extend(FieldName0) + else + @index = i0 + r0 = nil + end + + node_cache[:field_name][start_index] = r0 + + r0 + end + + def _nt_type_name + start_index = index + if node_cache[:type_name].has_key?(index) + cached = node_cache[:type_name][index] + if cached + node_cache[:type_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + r1 = _nt_builtin_type_name + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r2 = _nt_user_type_name + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + @index = i0 + r0 = nil + end + end + + node_cache[:type_name][start_index] = r0 + + r0 + end + + def _nt_reserved + start_index = index + if node_cache[:reserved].has_key?(index) + cached = node_cache[:reserved][index] + if cached + node_cache[:reserved][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + r1 = _nt_builtin_type_name + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r2 = _nt_keyword + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + @index = i0 + r0 = nil + end + end + + node_cache[:reserved][start_index] = r0 + + r0 + end + + module Comment0 + end + + module Comment1 + def content + elements[1] + end + + end + + def _nt_comment + start_index = index + if node_cache[:comment].has_key?(index) + cached = node_cache[:comment][index] + if cached + node_cache[:comment][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('#', false, index)) + r1 = true + @index += match_len + else + terminal_parse_failure('\'#\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + i3, s3 = index, [] + i4 = index + if (match_len = has_terminal?("\n", false, index)) + r5 = true + @index += match_len + else + terminal_parse_failure('"\\n"') + r5 = nil + end + if r5 + @index = i4 + r4 = nil + terminal_parse_failure('"\\n"', true) + else + @terminal_failures.pop + @index = i4 + r4 = instantiate_node(SyntaxNode,input, index...index) + end + s3 << r4 + if r4 + if index < input_length + r6 = true + @index += 1 + else + terminal_parse_failure("any character") + r6 = nil + end + s3 << r6 + end + if s3.last + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + r3.extend(Comment0) + else + @index = i3 + r3 = nil + end + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?("\n", false, index)) + r7 = true + @index += match_len + else + terminal_parse_failure('"\\n"') + r7 = nil + end + s0 << r7 + end + end + if s0.last + r0 = instantiate_node(SyntaxNode,input, i0...index, s0) + r0.extend(Comment1) + else + @index = i0 + r0 = nil + end + + node_cache[:comment][start_index] = r0 + + r0 + end + + def _nt_function_statement + start_index = index + if node_cache[:function_statement].has_key?(index) + cached = node_cache[:function_statement][index] + if cached + node_cache[:function_statement][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + r1 = _nt_return_statement + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r2 = _nt_statement + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + else + r3 = _nt_function_if_block + if r3 + r3 = SyntaxNode.new(input, (index-1)...index) if r3 == true + r0 = r3 + else + r4 = _nt_for_loop + if r4 + r4 = SyntaxNode.new(input, (index-1)...index) if r4 == true + r0 = r4 + else + @index = i0 + r0 = nil + end + end + end + end + + node_cache[:function_statement][start_index] = r0 + + r0 + end + + module FunctionBody0 + def choice + elements[0] + end + + end + + module FunctionBody1 + def func_stmt_list + elements[1] + end + end + + def _nt_function_body + start_index = index + if node_cache[:function_body].has_key?(index) + cached = node_cache[:function_body][index] + if cached + node_cache[:function_body][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + s1, i1 = [], index + loop do + r2 = _nt_space + if r2 + s1 << r2 + else + break + end + end + r1 = instantiate_node(SyntaxNode,input, i1...index, s1) + s0 << r1 + if r1 + s3, i3 = [], index + loop do + i4, s4 = index, [] + r5 = _nt_function_statement + s4 << r5 + if r5 + s6, i6 = [], index + loop do + r7 = _nt_space + if r7 + s6 << r7 + else + break + end + end + r6 = instantiate_node(SyntaxNode,input, i6...index, s6) + s4 << r6 + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(FunctionBody0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + s0 << r3 + end + if s0.last + r0 = instantiate_node(Idl::FunctionBodySyntaxNode,input, i0...index, s0) + r0.extend(FunctionBody1) + else + @index = i0 + r0 = nil + end + + node_cache[:function_body][start_index] = r0 + + r0 + end + + module InstructionOperation0 + def choice + elements[0] + end + + end + + module InstructionOperation1 + def op_stmt_list + elements[1] + end + end + + def _nt_instruction_operation + start_index = index + if node_cache[:instruction_operation].has_key?(index) + cached = node_cache[:instruction_operation][index] + if cached + node_cache[:instruction_operation][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + s1, i1 = [], index + loop do + r2 = _nt_space + if r2 + s1 << r2 + else + break + end + end + r1 = instantiate_node(SyntaxNode,input, i1...index, s1) + s0 << r1 + if r1 + s3, i3 = [], index + loop do + i4, s4 = index, [] + i5 = index + r6 = _nt_statement + if r6 + r6 = SyntaxNode.new(input, (index-1)...index) if r6 == true + r5 = r6 + else + r7 = _nt_execute_if_block + if r7 + r7 = SyntaxNode.new(input, (index-1)...index) if r7 == true + r5 = r7 + else + r8 = _nt_for_loop + if r8 + r8 = SyntaxNode.new(input, (index-1)...index) if r8 == true + r5 = r8 + else + @index = i5 + r5 = nil + end + end + end + s4 << r5 + if r5 + s9, i9 = [], index + loop do + r10 = _nt_space + if r10 + s9 << r10 + else + break + end + end + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + s4 << r9 + end + if s4.last + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + r4.extend(InstructionOperation0) + else + @index = i4 + r4 = nil + end + if r4 + s3 << r4 + else + break + end + end + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + s0 << r3 + end + if s0.last + r0 = instantiate_node(Idl::InstructionOperationSyntaxNode,input, i0...index, s0) + r0.extend(InstructionOperation1) + else + @index = i0 + r0 = nil + end + + node_cache[:instruction_operation][start_index] = r0 + + r0 + end + + module Id0 + end + + def _nt_id + start_index = index + if node_cache[:id].has_key?(index) + cached = node_cache[:id][index] + if cached + node_cache[:id][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + i1 = index + r2 = _nt_reserved + if r2 + @index = i1 + r1 = nil + else + @index = i1 + r1 = instantiate_node(SyntaxNode,input, index...index) + end + s0 << r1 + if r1 + if has_terminal?(@regexps[gr = '\A[A-Za-z]'] ||= Regexp.new(gr), :regexp, index) + r3 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z]') + r3 = nil + end + s0 << r3 + if r3 + s4, i4 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[A-Za-z_0-9]'] ||= Regexp.new(gr), :regexp, index) + r5 = true + @index += 1 + else + terminal_parse_failure('[A-Za-z_0-9]') + r5 = nil + end + if r5 + s4 << r5 + else + break + end + end + r4 = instantiate_node(SyntaxNode,input, i4...index, s4) + s0 << r4 + end + end + if s0.last + r0 = instantiate_node(Idl::IdSyntaxNode,input, i0...index, s0) + r0.extend(Id0) + else + @index = i0 + r0 = nil + end + + node_cache[:id][start_index] = r0 + + r0 + end + + def _nt_builtin_read_only_var + start_index = index + if node_cache[:builtin_read_only_var].has_key?(index) + cached = node_cache[:builtin_read_only_var][index] + if cached + node_cache[:builtin_read_only_var][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + if (match_len = has_terminal?("$encoding", false, index)) + r0 = instantiate_node(Idl::BuiltinVariableSyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('"$encoding"') + r0 = nil + end + + node_cache[:builtin_read_only_var][start_index] = r0 + + r0 + end + + def _nt_builtin_read_write_var + start_index = index + if node_cache[:builtin_read_write_var].has_key?(index) + cached = node_cache[:builtin_read_write_var][index] + if cached + node_cache[:builtin_read_write_var][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + if (match_len = has_terminal?("$pc", false, index)) + r0 = instantiate_node(Idl::BuiltinVariableSyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('"$pc"') + r0 = nil + end + + node_cache[:builtin_read_write_var][start_index] = r0 + + r0 + end + + module CsrName0 + end + + def _nt_csr_name + start_index = index + if node_cache[:csr_name].has_key?(index) + cached = node_cache[:csr_name][index] + if cached + node_cache[:csr_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if has_terminal?(@regexps[gr = '\A[a-z]'] ||= Regexp.new(gr), :regexp, index) + r1 = true + @index += 1 + else + terminal_parse_failure('[a-z]') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[a-z0-9_.]'] ||= Regexp.new(gr), :regexp, index) + r3 = true + @index += 1 + else + terminal_parse_failure('[a-z0-9_.]') + r3 = nil + end + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + end + if s0.last + r0 = instantiate_node(SyntaxNode,input, i0...index, s0) + r0.extend(CsrName0) + else + @index = i0 + r0 = nil + end + + node_cache[:csr_name][start_index] = r0 + + r0 + end + + module CsrFieldName0 + end + + def _nt_csr_field_name + start_index = index + if node_cache[:csr_field_name].has_key?(index) + cached = node_cache[:csr_field_name][index] + if cached + node_cache[:csr_field_name][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if has_terminal?(@regexps[gr = '\A[a-zA-Z]'] ||= Regexp.new(gr), :regexp, index) + r1 = true + @index += 1 + else + terminal_parse_failure('[a-zA-Z]') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + if has_terminal?(@regexps[gr = '\A[a-zA-Z0-9]'] ||= Regexp.new(gr), :regexp, index) + r3 = true + @index += 1 + else + terminal_parse_failure('[a-zA-Z0-9]') + r3 = nil + end + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + end + if s0.last + r0 = instantiate_node(SyntaxNode,input, i0...index, s0) + r0.extend(CsrFieldName0) + else + @index = i0 + r0 = nil + end + + node_cache[:csr_field_name][start_index] = r0 + + r0 + end + + module VarWrite0 + def csr_name + elements[4] + end + + end + + def _nt_var_write + start_index = index + if node_cache[:var_write].has_key?(index) + cached = node_cache[:var_write][index] + if cached + node_cache[:var_write][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + i1, s1 = index, [] + if (match_len = has_terminal?('CSR', false, index)) + r2 = instantiate_node(SyntaxNode,input, index...(index + match_len)) + @index += match_len + else + terminal_parse_failure('\'CSR\'') + r2 = nil + end + s1 << r2 + if r2 + s3, i3 = [], index + loop do + r4 = _nt_space + if r4 + s3 << r4 + else + break + end + end + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + s1 << r3 + if r3 + if (match_len = has_terminal?('[', false, index)) + r5 = true + @index += match_len + else + terminal_parse_failure('\'[\'') + r5 = nil + end + s1 << r5 + if r5 + s6, i6 = [], index + loop do + r7 = _nt_space + if r7 + s6 << r7 + else + break + end + end + r6 = instantiate_node(SyntaxNode,input, i6...index, s6) + s1 << r6 + if r6 + r8 = _nt_csr_name + s1 << r8 + if r8 + s9, i9 = [], index + loop do + r10 = _nt_space + if r10 + s9 << r10 + else + break + end + end + r9 = instantiate_node(SyntaxNode,input, i9...index, s9) + s1 << r9 + if r9 + if (match_len = has_terminal?(']', false, index)) + r11 = true + @index += match_len + else + terminal_parse_failure('\']\'') + r11 = nil + end + s1 << r11 + end + end + end + end + end + end + if s1.last + r1 = instantiate_node(Idl::CsrWriteSyntaxNode,input, i1...index, s1) + r1.extend(VarWrite0) + else + @index = i1 + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + else + r12 = _nt_id + if r12 + r12 = SyntaxNode.new(input, (index-1)...index) if r12 == true + r0 = r12 + else + @index = i0 + r0 = nil + end + end + + node_cache[:var_write][start_index] = r0 + + r0 + end + + module String0 + end + + module String1 + end + + def _nt_string + start_index = index + if node_cache[:string].has_key?(index) + cached = node_cache[:string][index] + if cached + node_cache[:string][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0, s0 = index, [] + if (match_len = has_terminal?('"', false, index)) + r1 = true + @index += match_len + else + terminal_parse_failure('\'"\'') + r1 = nil + end + s0 << r1 + if r1 + s2, i2 = [], index + loop do + i3, s3 = index, [] + i4 = index + if (match_len = has_terminal?('"', false, index)) + r5 = true + @index += match_len + else + terminal_parse_failure('\'"\'') + r5 = nil + end + if r5 + @index = i4 + r4 = nil + terminal_parse_failure('\'"\'', true) + else + @terminal_failures.pop + @index = i4 + r4 = instantiate_node(SyntaxNode,input, index...index) + end + s3 << r4 + if r4 + if index < input_length + r6 = true + @index += 1 + else + terminal_parse_failure("any character") + r6 = nil + end + s3 << r6 + end + if s3.last + r3 = instantiate_node(SyntaxNode,input, i3...index, s3) + r3.extend(String0) + else + @index = i3 + r3 = nil + end + if r3 + s2 << r3 + else + break + end + end + r2 = instantiate_node(SyntaxNode,input, i2...index, s2) + s0 << r2 + if r2 + if (match_len = has_terminal?('"', false, index)) + r7 = true + @index += match_len + else + terminal_parse_failure('\'"\'') + r7 = nil + end + s0 << r7 + end + end + if s0.last + r0 = instantiate_node(Idl::StringLiteralSyntaxNode,input, i0...index, s0) + r0.extend(String1) + else + @index = i0 + r0 = nil + end + + node_cache[:string][start_index] = r0 + + r0 + end + + module Space0 + def space? = true + end + + def _nt_space + start_index = index + if node_cache[:space].has_key?(index) + cached = node_cache[:space][index] + if cached + node_cache[:space][index] = cached = SyntaxNode.new(input, index...(index + 1)) if cached == true + @index = cached.interval.end + end + return cached + end + + i0 = index + if has_terminal?(@regexps[gr = '\A[ \\n]'] ||= Regexp.new(gr), :regexp, index) + r1 = true + @index += 1 + else + terminal_parse_failure('[ \\n]') + r1 = nil + end + if r1 + r1 = SyntaxNode.new(input, (index-1)...index) if r1 == true + r0 = r1 + r0.extend(Space0) + r0.extend(Space0) + else + r2 = _nt_comment + if r2 + r2 = SyntaxNode.new(input, (index-1)...index) if r2 == true + r0 = r2 + r0.extend(Space0) + r0.extend(Space0) + else + @index = i0 + r0 = nil + end + end + + node_cache[:space][start_index] = r0 + + r0 + end + +end + +class IdlParser < Treetop::Runtime::CompiledParser + include Idl +end diff --git a/tools/ruby-gems/idlc/lib/idlc/interfaces.rb b/tools/ruby-gems/idlc/lib/idlc/interfaces.rb index 79fd01632e..688f52817e 100644 --- a/tools/ruby-gems/idlc/lib/idlc/interfaces.rb +++ b/tools/ruby-gems/idlc/lib/idlc/interfaces.rb @@ -1,8 +1,8 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# frozen_string_literal: true # typed: strict +# frozen_string_literal: true require "sorbet-runtime" @@ -15,18 +15,29 @@ module RuntimeParam extend T::Helpers interface! + include Kernel + ValueType = - T.type_alias { T.any(Integer, T::Boolean, String, T::Array[Integer], T::Array[T::Boolean]) } + T.type_alias { T.any(Integer, T::Boolean, String, T::Array[Integer], T::Array[Integer], T::Array[T::Boolean], T::Array[String]) } sig { abstract.returns(String) } def name; end sig { abstract.returns(String) } - def desc; end + def description; end + + sig { abstract.returns(T::Boolean) } + def schema_known?; end sig { abstract.returns(Schema) } def schema; end + sig { abstract.returns(T::Array[Schema]) } + def possible_schemas; end + + sig { abstract.returns(T::Array[Schema]) } + def all_schemas; end + sig { abstract.returns(T::Boolean) } def value_known?; end @@ -54,6 +65,9 @@ def min_val_known?; end sig { abstract.returns(Integer) } def min_val; end + + sig { abstract.returns(Type) } + def to_idl_type; end end module CsrField @@ -87,10 +101,19 @@ def base32_only?; end sig { abstract.params(base: T.nilable(Integer)).returns(T::Range[Integer]) } def location(base); end + sig { abstract.params(base: T.nilable(Integer)).returns(Integer) } + def width(base); end + + sig { abstract.params(base: T.nilable(Integer)).returns(T.nilable(String)) } + def type(base); end + # whether or not the field is supposed to exist/be implemented in the # execution context sig { abstract.returns(T::Boolean) } def exists?; end + + sig { abstract.returns(ValueRbType) } + def reset_value; end end module Csr @@ -117,9 +140,5 @@ def fields; end # otherwise, returns nil sig { abstract.returns(T.nilable(Integer)) } def value; end - - # whether or not the CSR can exist if ext_name is not implemented - sig { abstract.params(ext_name: String).returns(T::Boolean) } - def implemented_without?(ext_name); end end end diff --git a/tools/ruby-gems/idlc/lib/idlc/log.rb b/tools/ruby-gems/idlc/lib/idlc/log.rb new file mode 100644 index 0000000000..878a1826b2 --- /dev/null +++ b/tools/ruby-gems/idlc/lib/idlc/log.rb @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: true +# frozen_string_literal: true + +require "logger" + +require "sorbet-runtime" + +module Idl + extend T::Sig + + sig { returns(Logger).checked(:tests) } + def self.logger + @logger ||= Logger.new($stdout, level: :warn) + end + + sig { params(logger: Logger).returns(Logger) } + def self.set_logger(logger) + @logger = logger + end +end diff --git a/tools/ruby-gems/idlc/lib/idlc/passes/gen_adoc.rb b/tools/ruby-gems/idlc/lib/idlc/passes/gen_adoc.rb index e0218297c7..1e124066b0 100644 --- a/tools/ruby-gems/idlc/lib/idlc/passes/gen_adoc.rb +++ b/tools/ruby-gems/idlc/lib/idlc/passes/gen_adoc.rb @@ -1,3 +1,4 @@ +# typed: false # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear @@ -17,17 +18,17 @@ def gen_adoc(indent = 0, indent_spaces: 2) = "" end class AryRangeAssignmentAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}#{variable.gen_adoc(indent, indent_spaces: )}[#{msb.gen_adoc(0, indent_spaces:)}:#{lsb.gen_adoc(0, indent_spaces:)}] = #{write_value.gen_adoc(0, indent_spaces:)}" + "#{' ' * indent}#{variable.gen_adoc(indent, indent_spaces:)}[#{msb.gen_adoc(0, indent_spaces:)}:#{lsb.gen_adoc(0, indent_spaces:)}] = #{write_value.gen_adoc(0, indent_spaces:)}" end end class ConditionalReturnStatementAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}#{return_expression.gen_adoc(indent, indent_spaces: )} if (#{condition.gen_adoc(0, indent_spaces:)});" + "#{' ' * indent}#{return_expression.gen_adoc(indent, indent_spaces:)} if (#{condition.gen_adoc(0, indent_spaces:)});" end end class ReturnExpressionAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}return #{return_value_nodes.map{ |r| r.gen_adoc(0, indent_spaces: )}.join(', ')}" + "#{' ' * indent}return #{return_value_nodes.map { |r| r.gen_adoc(0, indent_spaces:) }.join(', ')}" end end class IfBodyAst < AstNode @@ -42,49 +43,49 @@ def gen_adoc(indent = 0, indent_spaces: 2) class PostIncrementExpressionAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}#{rval.gen_adoc(indent, indent_spaces: )}++" + "#{' ' * indent}#{rval.gen_adoc(indent, indent_spaces:)}++" end end class PostDecrementExpressionAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}#{rval.gen_adoc(indent, indent_spaces: )}--" + "#{' ' * indent}#{rval.gen_adoc(indent, indent_spaces:)}--" end end class StringLiteralAst < AstNode def gen_adoc(indent, indent_spaces: 2) # text_value will include leading and trailing quotes - "#{' '*indent}#{text_value}" + "#{' ' * indent}#{text_value}" end end class DontCareReturnAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}-" + "#{' ' * indent}-" end end class UserTypeNameAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}#{text_value}" + "#{' ' * indent}#{text_value}" end end class MultiVariableAssignmentAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}(#{variables.map { |v| v.gen_adoc(0, indent_spaces: )}.join(', ')} = #{function_call.gen_adoc(0, indent_spaces:)})" + "#{' ' * indent}(#{variables.map { |v| v.gen_adoc(0, indent_spaces:) }.join(', ')} = #{function_call.gen_adoc(0, indent_spaces:)})" end end class CsrFunctionCallAst < AstNode def gen_adoc(indent, indent_spaces: 2) args_adoc = args.map { |arg| arg.gen_adoc(0) } - "#{' '*indent}#{csr.gen_adoc(indent, indent_spaces:)}.#{function_name}(#{args_adoc.join(', ')})" + "#{' ' * indent}#{csr.gen_adoc(indent, indent_spaces:)}.#{function_name}(#{args_adoc.join(', ')})" end end class CsrSoftwareWriteAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}#{csr.gen_adoc(indent, indent_spaces:)}.sw_write(#{expression.gen_adoc(0, indent_spaces:)})" + "#{' ' * indent}#{csr.gen_adoc(indent, indent_spaces:)}.sw_write(#{expression.gen_adoc(0, indent_spaces:)})" end end class FieldAccessExpressionAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}#{obj.gen_adoc(indent, indent_spaces: )}.#{@field_name}" + "#{' ' * indent}#{obj.gen_adoc(indent, indent_spaces:)}.#{@field_name}" end end class FieldAssignmentAst < AstNode @@ -94,68 +95,78 @@ def gen_adoc(indent, indent_spaces: 2) end class ConcatenationExpressionAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}{#{expressions.map { |e| e.gen_adoc(0, indent_spaces: )}.join(', ')}}" + "#{' ' * indent}{#{expressions.map { |e| e.gen_adoc(0, indent_spaces:) }.join(', ')}}" end end class BitsCastAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}$bits(#{expr.gen_adoc(0, indent_spaces: )})" + "#{' ' * indent}$bits(#{expr.gen_adoc(0, indent_spaces:)})" end end class EnumCastAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}$enum(#{enum_name.gen_adoc(0, indent_spaces:)}, #{expression.gen_adoc(0, indent_spaces: )})" + "#{' ' * indent}$enum(#{enum_name.gen_adoc(0, indent_spaces:)}, #{expression.gen_adoc(0, indent_spaces:)})" end end class CsrFieldAssignmentAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}#{csr_field.gen_adoc(indent, indent_spaces:)} = #{write_value.gen_adoc(0, indent_spaces:)}" + "#{' ' * indent}#{csr_field.gen_adoc(indent, indent_spaces:)} = #{write_value.gen_adoc(0, indent_spaces:)}" end end class EnumRefAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}#{class_name}::#{member_name}" + "#{' ' * indent}#{class_name}::#{member_name}" end end class EnumSizeAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}$enum_size(#{enum_class.gen_adoc(0, indent_spaces:)})" + "#{' ' * indent}$enum_size(#{enum_class.gen_adoc(0, indent_spaces:)})" end end class EnumElementSizeAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}$enum_element_size(#{enum_class.gen_adoc(0, indent_spaces:)})" + "#{' ' * indent}$enum_element_size(#{enum_class.gen_adoc(0, indent_spaces:)})" end end class EnumArrayCastAst < AstNode def gen_adoc(indent, indent_spaces: 2) - "#{' '*indent}$enum_to_a(#{enum_class.gen_adoc(0, indent_spaces:)})" + "#{' ' * indent}$enum_to_a(#{enum_class.gen_adoc(0, indent_spaces:)})" end end class ParenExpressionAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}(#{expression.gen_adoc(indent, indent_spaces:)})" + "#{' ' * indent}(#{expression.gen_adoc(indent, indent_spaces:)})" end end class IntLiteralAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) raise "?" if text_value.empty? - "#{' '*indent}#{text_value}" + "#{' ' * indent}#{text_value}" + end + end + class TrueExpressionAst < AstNode + def gen_adoc(indent = 0, indent_spaces: 2) + "#{' ' * indent}true" + end + end + class FalseExpressionAst < AstNode + def gen_adoc(indent = 0, indent_spaces: 2) + "#{' ' * indent}false" end end class IdAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}#{text_value}" + "#{' ' * indent}#{text_value}" end end class SignCastAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}$signed+++(+++#{expression.gen_adoc(0, indent_spaces:)})" + "#{' ' * indent}$signed+++(+++#{expression.gen_adoc(0, indent_spaces:)})" end end class AryRangeAccessAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}#{var.gen_adoc(indent, indent_spaces:)}[#{msb.gen_adoc(0, indent_spaces:)}:#{lsb.gen_adoc(0, indent_spaces:)}]" + "#{' ' * indent}#{var.gen_adoc(indent, indent_spaces:)}[#{msb.gen_adoc(0, indent_spaces:)}:#{lsb.gen_adoc(0, indent_spaces:)}]" end end @@ -180,7 +191,7 @@ def gen_adoc(indent = 0, indent_spaces: 2) class BuiltinTypeNameAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) if @type_name == "Bits" - "#{' '*indent}Bits<#{bits_expression.gen_adoc(0, indent_spaces:)}>" + "#{' ' * indent}Bits<#{bits_expression.gen_adoc(0, indent_spaces:)}>" else to_idl end @@ -189,11 +200,11 @@ def gen_adoc(indent = 0, indent_spaces: 2) class ForLoopAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - lines = ["#{' '*indent}for pass:[(]#{init.gen_adoc(0, indent_spaces:)}; #{condition.gen_adoc(0, indent_spaces:)}; #{update.gen_adoc(0, indent_spaces:)}) {"] + lines = ["#{' ' * indent}for pass:[(]#{init.gen_adoc(0, indent_spaces:)}; #{condition.gen_adoc(0, indent_spaces:)}; #{update.gen_adoc(0, indent_spaces:)}) {"] stmts.each do |s| lines << s.gen_adoc(indent + indent_spaces, indent_spaces:) end - lines << "#{' '*indent}}" + lines << "#{' ' * indent}}" lines.join("\n") end end @@ -216,31 +227,31 @@ def gen_adoc(indent = 0, indent_spaces: 2) class AryElementAccessAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}#{var.gen_adoc(indent, indent_spaces:)}[#{index.gen_adoc(0, indent_spaces:)}]" + "#{' ' * indent}#{var.gen_adoc(indent, indent_spaces:)}[#{index.gen_adoc(0, indent_spaces:)}]" end end class BinaryExpressionAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}#{lhs.gen_adoc(0, indent_spaces:)} #{op.sub("+", "pass:[+]").sub("`", "pass:[`]")} #{rhs.gen_adoc(0, indent_spaces:)}" + "#{' ' * indent}#{lhs.gen_adoc(0, indent_spaces:)} #{op.sub("+", "pass:[+]").sub("`", "pass:[`]")} #{rhs.gen_adoc(0, indent_spaces:)}" end end class VariableAssignmentAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}#{lhs.gen_adoc(0, indent_spaces:)} = #{rhs.gen_adoc(0, indent_spaces:)}" + "#{' ' * indent}#{lhs.gen_adoc(0, indent_spaces:)} = #{rhs.gen_adoc(0, indent_spaces:)}" end end class PcAssignmentAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}$pc = #{rhs.gen_adoc(0, indent_spaces:)}" + "#{' ' * indent}$pc = #{rhs.gen_adoc(0, indent_spaces:)}" end end class AryElementAssignmentAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}#{lhs.gen_adoc(0, indent_spaces:)}[#{idx.gen_adoc(0, indent_spaces:)}] = #{rhs.gen_adoc(0, indent_spaces:)}" + "#{' ' * indent}#{lhs.gen_adoc(0, indent_spaces:)}[#{idx.gen_adoc(0, indent_spaces:)}] = #{rhs.gen_adoc(0, indent_spaces:)}" end end @@ -252,7 +263,7 @@ def gen_adoc(indent = 0, indent_spaces: 2) class UnaryOperatorExpressionAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}#{op}#{exp.gen_adoc(0, indent_spaces:)}" + "#{' ' * indent}#{op}#{exp.gen_adoc(0, indent_spaces:)}" end end @@ -264,68 +275,74 @@ def gen_adoc(indent = 0, indent_spaces: 2) class ReplicationExpressionAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}{#{n.gen_adoc(0, indent_spaces:)}{#{v.gen_adoc(indent, indent_spaces:)}}}" + "#{' ' * indent}{#{n.gen_adoc(0, indent_spaces:)}{#{v.gen_adoc(indent, indent_spaces:)}}}" end end class ConditionalStatementAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}#{action.gen_adoc(0, indent_spaces:)} if (#{condition.gen_adoc(0, indent_spaces:)});" + "#{' ' * indent}#{action.gen_adoc(0, indent_spaces:)} if (#{condition.gen_adoc(0, indent_spaces:)});" end end class FunctionCallExpressionAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) after_name = [] - after_name << "<#{template_arg_nodes.map { |t| t.gen_adoc(0, indent_spaces:)}.join(', ')}>" unless template_arg_nodes.empty? - after_name << "pass:[(]#{arg_nodes.map { |a| a.gen_adoc(0, indent_spaces: ) }.join(', ')})" - "#{' '*indent}" + link_to_udb_doc_idl_func("#{name}") + "#{after_name.join ''}" + after_name << "<#{template_arg_nodes.map { |t| t.gen_adoc(0, indent_spaces:) }.join(', ')}>" unless template_arg_nodes.empty? + after_name << "pass:[(]#{arg_nodes.map { |a| a.gen_adoc(0, indent_spaces:) }.join(', ')})" + "#{' ' * indent}" + link_to_udb_doc_idl_func("#{name}") + "#{after_name.join ''}" end end class ArraySizeAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}$array_size(#{expression.gen_adoc(0, indent_spaces:)})" + "#{' ' * indent}$array_size(#{expression.gen_adoc(0, indent_spaces:)})" + end + end + + class ArrayIncludesAst < AstNode + def gen_adoc(indent = 0, indent_spaces: 2) + "#{' ' * indent}$array_includes?(#{ary.gen_adoc(0, indent_spaces:)}, #{expr.gen_adoc(0, indent_spaces:)})" end end class FunctionBodyAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - statements.map{ |s| "#{' ' * indent}#{s.gen_adoc(0, indent_spaces:)}" }.join("\n") + statements.map { |s| "#{' ' * indent}#{s.gen_adoc(0, indent_spaces:)}" }.join("\n") end end class CsrFieldReadExpressionAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}" + link_to_udb_doc_csr_field("#{@csr_obj.name}", "#{@field_name}") + "#{' ' * indent}" + link_to_udb_doc_csr_field("#{@csr_name}", "#{@field_name}") end end class CsrReadExpressionAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - "#{' '*indent}" + link_to_udb_doc_csr("#{csr_name}") + "#{' ' * indent}" + link_to_udb_doc_csr("#{csr_name}") end end class IfAst < AstNode def gen_adoc(indent = 0, indent_spaces: 2) - lines = ["#{' '*indent}if pass:[(]#{if_cond.gen_adoc(0, indent_spaces:)}) {"] + lines = ["#{' ' * indent}if pass:[(]#{if_cond.gen_adoc(0, indent_spaces:)}) {"] if_body.stmts.each do |s| lines << s.gen_adoc(indent + indent_spaces, indent_spaces:) end elseifs.each do |eif| - lines << "#{' '*indent}} else if pass:[(]#{eif.cond.gen_adoc(0, indent_spaces:)}) {" + lines << "#{' ' * indent}} else if pass:[(]#{eif.cond.gen_adoc(0, indent_spaces:)}) {" eif.body.stmts.each do |s| lines << s.gen_adoc(indent + indent_spaces, indent_spaces:) end end unless final_else_body.stmts.empty? - lines << "#{' '*indent}} else {" + lines << "#{' ' * indent}} else {" final_else_body.stmts.each do |s| lines << s.gen_adoc(indent + indent_spaces, indent_spaces:) end end - lines << "#{' '*indent}}" + lines << "#{' ' * indent}}" lines.join("\n") end diff --git a/tools/ruby-gems/idlc/lib/idlc/passes/gen_option_adoc.rb b/tools/ruby-gems/idlc/lib/idlc/passes/gen_option_adoc.rb index 7d6b1977c5..96e94e6963 100644 --- a/tools/ruby-gems/idlc/lib/idlc/passes/gen_option_adoc.rb +++ b/tools/ruby-gems/idlc/lib/idlc/passes/gen_option_adoc.rb @@ -1,3 +1,4 @@ +# typed: false # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear @@ -84,6 +85,14 @@ def gen_option_adoc end end + class TrueExpressionAst < AstNode + def gen_option_adoc = "true" + end + + class FalseExpressionAst < AstNode + def gen_option_adoc = "false" + end + class IdAst < AstNode def gen_option_adoc text_value diff --git a/tools/ruby-gems/idlc/lib/idlc/passes/reachable_functions.rb b/tools/ruby-gems/idlc/lib/idlc/passes/reachable_functions.rb index 1ee4736067..9d95fc9d90 100644 --- a/tools/ruby-gems/idlc/lib/idlc/passes/reachable_functions.rb +++ b/tools/ruby-gems/idlc/lib/idlc/passes/reachable_functions.rb @@ -1,3 +1,4 @@ +# typed: false # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear @@ -20,7 +21,13 @@ class FunctionCallExpressionAst def reachable_functions(symtab, cache = {}) func_def_type = func_type(symtab) - tvals = template_values(symtab) + tvals = nil + value_result = value_try do + tvals = template_values(symtab) + end + value_else(value_result) do + raise "In #{input_file}:#{input_line}\n Cannot find reachable functions for #{text_value} because template values are not known" + end body_symtab = func_def_type.apply_template_values(tvals, self) diff --git a/tools/ruby-gems/idlc/lib/idlc/symbol_table.rb b/tools/ruby-gems/idlc/lib/idlc/symbol_table.rb index 0bb86d3dd9..3c4c9f3ebc 100644 --- a/tools/ruby-gems/idlc/lib/idlc/symbol_table.rb +++ b/tools/ruby-gems/idlc/lib/idlc/symbol_table.rb @@ -6,6 +6,7 @@ require "sorbet-runtime" +require_relative "log" require_relative "type" require_relative "interfaces" @@ -22,7 +23,7 @@ def initialize(name, type, value = nil, decode_var: false, template_index: nil, raise ArgumentError, "Expecting a Type, got #{type.class.name}" unless type.is_a?(Type) @type = type - @type.qualify(:template_var) + @type.qualify(:template_var) unless template_index.nil? @type.freeze @value = value raise "unexpected" unless decode_var.is_a?(TrueClass) || decode_var.is_a?(FalseClass) @@ -151,11 +152,28 @@ def initialize(name:, element_values:, element_names:) end end + PossibleXlensCallbackType = T.type_alias { T.proc.returns(T::Array[Integer]) } + sig { returns(T::Boolean) } - def multi_xlen? = @possible_xlens.size > 1 + def multi_xlen? = possible_xlens.size > 1 + + class MemoizedState < T::Struct + prop :possible_xlens, T.nilable(T::Array[Integer]) + prop :params_hash, T.nilable(T::Hash[String, RuntimeParam]) + end sig { returns(T::Array[Integer]) } - attr_reader :possible_xlens + def possible_xlens + @memo.possible_xlens ||= + begin + if @possible_xlens_cb.nil? + Idl.logger.error "Symbol table was not initialized with a possible xlens callback, so #possible_xlens is not available" + raise + end + + @possible_xlens_cb.call + end + end ImplementedCallbackType = T.type_alias { T.proc.params(arg0: String).returns(T.nilable(T::Boolean)) } @@ -184,6 +202,8 @@ class BuiltinFunctionCallbacks < T::Struct prop :implemented_csr, ImplementedCsrCallbackType end + attr_reader :builtin_funcs + sig { params(csr_name: String).returns(T::Boolean) } def csr?(csr_name) = csr_hash.key?(csr_name) @@ -197,25 +217,29 @@ def csr(csr_name) = csr_hash[csr_name] def param(param_name) = params_hash[param_name] sig { returns(T::Hash[String, RuntimeParam]) } - def params_hash = @params.map { |p| [p.name.freeze, p.freeze] }.to_h.freeze + def params_hash + @memo.params_hash ||= @params.map { |p| [p.name.freeze, p.freeze] }.to_h.freeze + end sig { params( mxlen: T.nilable(Integer), - possible_xlens: T::Array[Integer], - params: T::Array[RuntimeParam], + possible_xlens_cb: T.nilable(PossibleXlensCallbackType), + builtin_global_vars: T::Array[Var], builtin_enums: T::Array[EnumDef], builtin_funcs: T.nilable(BuiltinFunctionCallbacks), csrs: T::Array[Csr], + params: T::Array[RuntimeParam], name: String ).void } - def initialize(mxlen: nil, possible_xlens: [32, 64], params: [], builtin_enums: [], builtin_funcs: nil, csrs: [], name: "") + def initialize(mxlen: nil, possible_xlens_cb: nil, builtin_global_vars: [], builtin_enums: [], builtin_funcs: nil, csrs: [], params: [], name: "") @mutex = Thread::Mutex.new @mxlen = mxlen - @possible_xlens = possible_xlens + @possible_xlens_cb = possible_xlens_cb @callstack = [nil] @name = name + @memo = MemoizedState.new # builtin types @scopes = [{ @@ -237,20 +261,19 @@ def initialize(mxlen: nil, possible_xlens: [32, 64], params: [], builtin_enums: ) }] - params.each do |param| - if param.value_known? - add!(param.name, Var.new(param.name, param.idl_type, param.value, param: true)) - else - add!(param.name, Var.new(param.name, param.idl_type, param: true)) - end + builtin_global_vars.each do |v| + add!(v.name, v) end - @params = params.freeze builtin_enums.each do |enum_def| add!(enum_def.name, EnumerationType.new(enum_def.name, enum_def.element_names, enum_def.element_values)) end @builtin_funcs = builtin_funcs @csrs = csrs @csr_hash = @csrs.map { |csr| [csr.name.freeze, csr].freeze }.to_h.freeze + @params = params + + # set up the global clone that be used as a mutable table + @global_clone_pool = T.let([], T::Array[SymbolTable]) end # @return [String] inspection string @@ -270,9 +293,6 @@ def deep_freeze # set frozen_hash so that we can quickly compare symtabs @frozen_hash = [@scopes.hash, @name.hash].hash - # set up the global clone that be used as a mutable table - @global_clone_pool = Concurrent::Array.new - 5.times do copy = SymbolTable.allocate copy.instance_variable_set(:@scopes, [@scopes[0]]) @@ -280,7 +300,8 @@ def deep_freeze copy.instance_variable_set(:@mxlen, @mxlen) copy.instance_variable_set(:@mutex, @mutex) copy.instance_variable_set(:@name, @name) - copy.instance_variable_set(:@possible_xlens, @possible_xlens) + copy.instance_variable_set(:@memo, @memo.dup) + copy.instance_variable_set(:@possible_xlens_cb, @possible_xlens_cb) copy.instance_variable_set(:@params, @params) copy.instance_variable_set(:@builtin_funcs, @builtin_funcs) copy.instance_variable_set(:@csrs, @csrs) @@ -433,6 +454,7 @@ def levels end # pretty-print the symbol table contents + sig { void } def print @scopes.each do |s| s.each do |name, obj| @@ -456,7 +478,7 @@ def global_clone end # need more! - $logger.info "Allocating more SymbolTables" + Idl.logger.debug "Allocating more SymbolTables" 5.times do copy = SymbolTable.allocate copy.instance_variable_set(:@scopes, [@scopes[0]]) @@ -464,7 +486,8 @@ def global_clone copy.instance_variable_set(:@mxlen, @mxlen) copy.instance_variable_set(:@mutex, @mutex) copy.instance_variable_set(:@name, @name) - copy.instance_variable_set(:@possible_xlens, @possible_xlens) + copy.instance_variable_set(:@memo, @memo.dup) + copy.instance_variable_set(:@possible_xlens_cb, @possible_xlens_cb) copy.instance_variable_set(:@params, @params) copy.instance_variable_set(:@builtin_funcs, @builtin_funcs) copy.instance_variable_set(:@csrs, @csrs) diff --git a/tools/ruby-gems/idlc/lib/idlc/syntax_node.rb b/tools/ruby-gems/idlc/lib/idlc/syntax_node.rb index 22d431dbaf..20f156618f 100644 --- a/tools/ruby-gems/idlc/lib/idlc/syntax_node.rb +++ b/tools/ruby-gems/idlc/lib/idlc/syntax_node.rb @@ -2,8 +2,8 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# frozen_string_literal: true # typed: true +# frozen_string_literal: true require "sorbet-runtime" @@ -51,6 +51,6 @@ class SyntaxNode < Treetop::Runtime::SyntaxNode extend T::Helpers sig { overridable.returns(Idl::AstNode) } - def to_ast = raise "Must override" + def to_ast = raise "Must override to_ast for #{self.class.name}" end end diff --git a/tools/ruby-gems/idlc/lib/idlc/type.rb b/tools/ruby-gems/idlc/lib/idlc/type.rb index 70b0e3c0b0..f2c8c359da 100644 --- a/tools/ruby-gems/idlc/lib/idlc/type.rb +++ b/tools/ruby-gems/idlc/lib/idlc/type.rb @@ -79,7 +79,7 @@ def default sig { returns(Symbol) } attr_reader :kind - sig { returns(T::Array[Symbol])} + sig { returns(T::Array[Symbol]) } attr_reader :qualifiers sig { returns(T.any(Integer, Symbol)) } @@ -105,11 +105,11 @@ def qualify(qualifier) def self.from_typename(type_name, cfg_arch) case type_name - when 'XReg' + when "XReg" return Type.new(:bits, width: cfg_arch.param_values["MXLEN"]) - when 'FReg' + when "FReg" return Type.new(:freg, width: 32) - when 'DReg' + when "DReg" return Type.new(:dreg, width: 64) when /Bits<((?:0x)?[0-9a-fA-F]+)>/ Type.new(:bits, width: $1.to_i) @@ -147,7 +147,7 @@ def initialize(kind, qualifiers: [], width: nil, width_ast: nil, max_width: nil, raise "Array must have a subtype" unless @sub_type end if kind == :csr - raise 'CSR type must have a csr argument' if csr.nil? + raise "CSR type must have a csr argument" if csr.nil? @csr = csr raise "CSR types must have a width" if width.nil? @@ -332,7 +332,7 @@ def to_idl end def to_s - ((@qualifiers.nil? || @qualifiers.empty?) ? '' : "#{@qualifiers.map(&:to_s).join(' ')} ") + \ + ((@qualifiers.nil? || @qualifiers.empty?) ? "" : "#{@qualifiers.map(&:to_s).join(' ')} ") + \ if @kind == :bits "Bits<#{@width}>" elsif @kind == :enum @@ -342,7 +342,7 @@ def to_s elsif @kind == :enum_ref "enum #{@enum_class.name}" elsif @kind == :tuple - "(#{@tuple_types.map{ |t| t.to_s }.join(',')})" + "(#{@tuple_types.map { |t| t.to_s }.join(',')})" elsif @kind == :bitfield "bitfield #{@name}" elsif @kind == :array @@ -438,6 +438,7 @@ def make_known # @return [Idl::Type] Type of a scalar # @param schema [Hash] JSON Schema description of a scalar + sig { params(schema: T::Hash[String, T.untyped]).returns(T.nilable(Type)) } def self.from_json_schema_scalar_type(schema) if schema.key?("type") case schema["type"] @@ -471,14 +472,60 @@ def self.from_json_schema_scalar_type(schema) else raise "Unhandled const type" end + elsif schema.key?("enum") + raise "Mixed types in enum" unless schema["enum"].all? { |e| e.class == schema["enum"].fetch(0).class } + + case schema["enum"].fetch(0) + when TrueClass, FalseClass + Type.new(:boolean) + when Integer + Type.new(:bits, width: schema["enum"].map { |e| e.bit_length }.max) + when String + Type.new(:string, width: schema["enum"].map { |e| e.length }.max) + else + raise "unhandled enum type" + end + elsif schema.key?("allOf") + subschema_types = schema.fetch("allOf").map { |subschema| from_json_schema_scalar_type(subschema) }.compact + raise "No subschema has a defined type" if subschema_types.empty? + + if subschema_types.fetch(0).kind == :string + raise "Subschema types do not agree" unless subschema_types[1..].all? { |t| t.kind == :string } + + subschema_types.fetch(0) + elsif subschema_types.fetch(0).kind == :boolean + raise "Subschema types do not agree" unless subschema_types[1..].all? { |t| t.kind == :boolean } + + subschema_types.fetch(0) + elsif subschema_types.fetch(0).kind == :bits + raise "Subschema types do not agree" unless subschema_types[1..].all? { |t| t.kind == :bits } + + unknown_width_type = subschema_types.find { |t| t.width == :unknown } + return unknown_width_type unless unknown_width_type.nil? + + subschema_types.max { |t1, t2| t1.width <=> t2.width } + else + raise "unhandled subschema type" + end + elsif schema.key?("$ref") + if schema.fetch("$ref") == "schema_defs.json#/$defs/uint32" + Type.new(:bits, width: 32) + elsif schema.fetch("$ref") == "schema_defs.json#/$defs/uint64" + Type.new(:bits, width: 64) + else + raise "unhandled ref: #{schema.fetch("$ref")}" + end + elsif schema.key?("not") + nil else - raise "unhandled scalar schema" + raise "unhandled scalar schema:\n#{schema}" end end private_class_method :from_json_schema_scalar_type # @return [Idl::Type] Type of array # @param schema [Hash] JSON Schema description of an array + sig { params(schema: T::Hash[String, T.untyped]).returns(Type) } def self.from_json_schema_array_type(schema) width = schema["minItems"] if !schema.key?("minItems") || !schema.key?("maxItems") || (schema["minItems"] != schema["maxItems"]) @@ -486,13 +533,10 @@ def self.from_json_schema_array_type(schema) end if schema["items"].is_a?(Hash) - case schema["items"]["type"] - when "boolean", "integer", "string" - Type.new(:array, width:, sub_type: from_json_schema_scalar_type(schema["items"])) - when "array" - Type.new(:array, width:, sub_type: from_json_schema_array_type(schema["items"])) - end - elsif schema["items"].is_a?(Array) + Type.new(:array, width:, sub_type: from_json_schema(schema["items"])) + else + raise "unexpected #{schema}" unless schema["items"].is_a?(Array) + # this ia an array with each element specified sub_type = T.let(nil, T.nilable(Type)) schema["items"].each do |item_schema| @@ -519,13 +563,20 @@ def self.from_json_schema_array_type(schema) private_class_method :from_json_schema_array_type # @returns [Idl::Type] Type described by JSON +schema+ + sig { params(schema: T::Hash[String, T.untyped]).returns(T.nilable(Type)) } def self.from_json_schema(schema) hsh = schema.to_h - case hsh["type"] - when "boolean", "integer", "string" + if hsh.key?("type") + case hsh["type"] + when "boolean", "integer", "string" + from_json_schema_scalar_type(hsh) + when "array" + from_json_schema_array_type(hsh) + else + raise "unexpected" + end + else from_json_schema_scalar_type(hsh) - when "array" - from_json_schema_array_type(hsh) end end end @@ -918,11 +969,11 @@ def initialize(xlen) end def to_s - 'XReg' + "XReg" end def to_cxx - 'XReg' + "XReg" end end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/annotations/activesupport.rbi b/tools/ruby-gems/idlc/sorbet/rbi/annotations/activesupport.rbi index b7965de925..bde37b43de 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/annotations/activesupport.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/annotations/activesupport.rbi @@ -461,3 +461,8 @@ class ActiveSupport::ErrorReporter sig { params(error: T.any(Exception, String), severity: T.nilable(Symbol), context: T::Hash[Symbol, T.untyped], source: T.nilable(String)).void } def unexpected(error, severity: T.unsafe(nil), context: T.unsafe(nil), source: T.unsafe(nil)); end end + +module ActiveSupport::Testing::Assertions + sig { type_parameters(:Block).params(block: T.proc.returns(T.type_parameter(:Block))).returns(T.type_parameter(:Block)) } + def assert_nothing_raised(&block); end +end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/activesupport@8.0.2.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/activesupport@8.0.3.rbi similarity index 99% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/activesupport@8.0.2.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/activesupport@8.0.3.rbi index 99a45724bb..8c41351b7a 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/activesupport@8.0.2.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/activesupport@8.0.3.rbi @@ -1442,13 +1442,15 @@ end # source://activesupport//lib/active_support/json/decoding.rb#11 module ActiveSupport::JSON class << self - # Parses a JSON string (JavaScript Object Notation) into a hash. + # Parses a JSON string (JavaScript Object Notation) into a Ruby object. # See http://www.json.org for more info. # # ActiveSupport::JSON.decode("{\"team\":\"rails\",\"players\":\"36\"}") - # => {"team" => "rails", "players" => "36"} + # # => {"team" => "rails", "players" => "36"} + # ActiveSupport::JSON.decode("2.39") + # # => 2.39 # - # source://activesupport//lib/active_support/json/decoding.rb#22 + # source://activesupport//lib/active_support/json/decoding.rb#24 def decode(json); end # Dumps objects in JSON (JavaScript Object Notation). @@ -1505,13 +1507,15 @@ module ActiveSupport::JSON # source://activesupport//lib/active_support/json/encoding.rb#40 def encode(value, options = T.unsafe(nil)); end - # Parses a JSON string (JavaScript Object Notation) into a hash. + # Parses a JSON string (JavaScript Object Notation) into a Ruby object. # See http://www.json.org for more info. # # ActiveSupport::JSON.decode("{\"team\":\"rails\",\"players\":\"36\"}") - # => {"team" => "rails", "players" => "36"} + # # => {"team" => "rails", "players" => "36"} + # ActiveSupport::JSON.decode("2.39") + # # => 2.39 # - # source://activesupport//lib/active_support/json/decoding.rb#22 + # source://activesupport//lib/active_support/json/decoding.rb#24 def load(json); end # Returns the class of the error that will be raised when there is an @@ -1525,12 +1529,12 @@ module ActiveSupport::JSON # Rails.logger.warn("Attempted to decode invalid JSON: #{some_string}") # end # - # source://activesupport//lib/active_support/json/decoding.rb#43 + # source://activesupport//lib/active_support/json/decoding.rb#45 def parse_error; end private - # source://activesupport//lib/active_support/json/decoding.rb#48 + # source://activesupport//lib/active_support/json/decoding.rb#50 def convert_dates_from(data); end end end @@ -1684,7 +1688,7 @@ module ActiveSupport::LazyLoadHooks # loaded. If the component has already loaded, the block is executed # immediately. # - # Options: + # ==== Options # # * :yield - Yields the object that run_load_hooks to +block+. # * :run_once - Given +block+ will run only once. @@ -3296,7 +3300,7 @@ module ActiveSupport::Tryable def try!(*args, **_arg1, &block); end end -# source://activesupport//lib/active_support/core_ext/object/to_query.rb#39 +# source://activesupport//lib/active_support/core_ext/object/to_query.rb#40 class Array include ::Enumerable @@ -3330,7 +3334,7 @@ class Array # Calls to_param on all its elements and joins the result with # slashes. This is used by url_for in Action Pack. # - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#42 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#43 def to_param; end # Converts an array into a string suitable for use as a URL query string, @@ -3338,7 +3342,7 @@ class Array # # ['Rails', 'coding'].to_query('hobbies') # => "hobbies%5B%5D=Rails&hobbies%5B%5D=coding" # - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#50 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#51 def to_query(key); end # Converts the array to a comma-separated sentence where the last element is @@ -4441,7 +4445,7 @@ class DateTime < ::Date # datetime.formatted_offset # => "-06:00" # datetime.formatted_offset(false) # => "-0600" # - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#51 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#53 def formatted_offset(colon = T.unsafe(nil), alternate_utc_string = T.unsafe(nil)); end # Returns a Time instance of the simultaneous time in the UTC timezone. @@ -4482,7 +4486,7 @@ class DateTime < ::Date # Overrides the default inspect method with a human readable one, e.g., "Mon, 21 Feb 2005 14:30:00 +0000". # - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#56 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#58 def inspect; end # Returns a Time instance of the simultaneous time in the system timezone. @@ -4512,12 +4516,12 @@ class DateTime < ::Date # Returns the fraction of a second as nanoseconds # - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#94 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#96 def nsec; end # Overrides the default inspect method with a human readable one, e.g., "Mon, 21 Feb 2005 14:30:00 +0000". # - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#56 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#58 def readable_inspect; end # Returns the number of seconds since 00:00:00. @@ -4554,14 +4558,15 @@ class DateTime < ::Date # Converts +self+ to a floating-point number of seconds, including fractional microseconds, since the Unix epoch. # - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#79 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#81 def to_f; end # Convert to a formatted string. See Time::DATE_FORMATS for predefined formats. # # This method is aliased to to_formatted_s. # - # === Examples + # ==== Examples + # # datetime = DateTime.civil(2007, 12, 4, 0, 0, 0, 0) # => Tue, 04 Dec 2007 00:00:00 +0000 # # datetime.to_fs(:db) # => "2007-12-04 00:00:00" @@ -4573,7 +4578,8 @@ class DateTime < ::Date # datetime.to_fs(:rfc822) # => "Tue, 04 Dec 2007 00:00:00 +0000" # datetime.to_fs(:iso8601) # => "2007-12-04T00:00:00+00:00" # - # == Adding your own datetime formats to to_fs + # ==== Adding your own datetime formats to +to_fs+ + # # DateTime formats are shared with Time. You can add your own to the # Time::DATE_FORMATS hash. Use the format name as the hash key and # either a strftime string or Proc instance that takes a time or @@ -4583,14 +4589,15 @@ class DateTime < ::Date # Time::DATE_FORMATS[:month_and_year] = '%B %Y' # Time::DATE_FORMATS[:short_ordinal] = lambda { |time| time.strftime("%B #{time.day.ordinalize}") } # - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#35 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#37 def to_formatted_s(format = T.unsafe(nil)); end # Convert to a formatted string. See Time::DATE_FORMATS for predefined formats. # # This method is aliased to to_formatted_s. # - # === Examples + # ==== Examples + # # datetime = DateTime.civil(2007, 12, 4, 0, 0, 0, 0) # => Tue, 04 Dec 2007 00:00:00 +0000 # # datetime.to_fs(:db) # => "2007-12-04 00:00:00" @@ -4602,7 +4609,8 @@ class DateTime < ::Date # datetime.to_fs(:rfc822) # => "Tue, 04 Dec 2007 00:00:00 +0000" # datetime.to_fs(:iso8601) # => "2007-12-04T00:00:00+00:00" # - # == Adding your own datetime formats to to_fs + # ==== Adding your own datetime formats to +to_fs+ + # # DateTime formats are shared with Time. You can add your own to the # Time::DATE_FORMATS hash. Use the format name as the hash key and # either a strftime string or Proc instance that takes a time or @@ -4612,17 +4620,17 @@ class DateTime < ::Date # Time::DATE_FORMATS[:month_and_year] = '%B %Y' # Time::DATE_FORMATS[:short_ordinal] = lambda { |time| time.strftime("%B #{time.day.ordinalize}") } # - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#35 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#37 def to_fs(format = T.unsafe(nil)); end # Converts +self+ to an integer number of seconds since the Unix epoch. # - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#84 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#86 def to_i; end # Returns the fraction of a second as microseconds # - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#89 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#91 def usec; end # Returns a Time instance of the simultaneous time in the UTC timezone. @@ -4647,10 +4655,10 @@ class DateTime < ::Date private - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#99 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#101 def offset_in_seconds; end - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#103 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#105 def seconds_since_unix_epoch; end class << self @@ -4662,7 +4670,7 @@ class DateTime < ::Date # DateTime.civil_from_format :local, 2012, 12, 17 # # => Mon, 17 Dec 2012 00:00:00 +0000 # - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#69 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#71 def civil_from_format(utc_or_local, year, month = T.unsafe(nil), day = T.unsafe(nil), hour = T.unsafe(nil), min = T.unsafe(nil), sec = T.unsafe(nil)); end # Returns Time.zone.now.to_datetime when Time.zone or @@ -4915,14 +4923,14 @@ class Exception def as_json(options = T.unsafe(nil)); end end -# source://activesupport//lib/active_support/core_ext/object/to_query.rb#32 +# source://activesupport//lib/active_support/core_ext/object/to_query.rb#33 class FalseClass # source://activesupport//lib/active_support/core_ext/object/json.rb#87 def as_json(options = T.unsafe(nil)); end # Returns +self+. # - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#34 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#35 def to_param; end end @@ -5109,7 +5117,7 @@ class Hash # The string pairs "key=value" that conform the query string # are sorted lexicographically in ascending order. # - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#75 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#76 def to_param(namespace = T.unsafe(nil)); end # Returns a string representation of the receiver suitable for use as a URL @@ -5126,7 +5134,7 @@ class Hash # The string pairs "key=value" that conform the query string # are sorted lexicographically in ascending order. # - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#75 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#76 def to_query(namespace = T.unsafe(nil)); end private @@ -5257,7 +5265,6 @@ IO::EWOULDBLOCKWaitReadable = IO::EAGAINWaitReadable IO::EWOULDBLOCKWaitWritable = IO::EAGAINWaitWritable IO::PRIORITY = T.let(T.unsafe(nil), Integer) IO::READABLE = T.let(T.unsafe(nil), Integer) -class IO::TimeoutError < ::IOError; end IO::WRITABLE = T.let(T.unsafe(nil), Integer) # source://activesupport//lib/active_support/core_ext/object/json.rb#243 @@ -5871,16 +5878,14 @@ class NameError < ::StandardError include ::DidYouMean::Correctable end -# source://activesupport//lib/active_support/core_ext/object/to_query.rb#18 +# source://activesupport//lib/active_support/core_ext/object/to_query.rb#19 class NilClass - include ::Treetop::Compiler::Metagrammar::LabeledExpressionSequenceBody0 - # source://activesupport//lib/active_support/core_ext/object/json.rb#93 def as_json(options = T.unsafe(nil)); end # Returns +self+. # - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#20 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#21 def to_param; end # Calling +try+ on +nil+ always returns +nil+. @@ -5895,14 +5900,14 @@ class NilClass # @person.try(:children).try(:first).try(:name) # # source://activesupport//lib/active_support/core_ext/object/try.rb#148 - def try(*_arg0); end + def try(*_arg0, &_arg1); end # Calling +try!+ on +nil+ always returns +nil+. # # nil.try!(:name) # => nil # # source://activesupport//lib/active_support/core_ext/object/try.rb#155 - def try!(*_arg0); end + def try!(*_arg0, &_arg1); end end # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#12 @@ -5937,7 +5942,7 @@ end # using that rescue idiom. # ++ # -# source://activesupport//lib/active_support/core_ext/object/to_query.rb#5 +# source://activesupport//lib/active_support/core_ext/object/to_query.rb#6 class Object < ::BasicObject include ::Kernel include ::PP::ObjectMixin @@ -6015,13 +6020,13 @@ class Object < ::BasicObject # Alias of to_s. # - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#7 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#8 def to_param; end # Converts an object into a string suitable for use as a URL query string, # using the given key as the param name. # - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#13 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#14 def to_query(key); end end @@ -6315,12 +6320,12 @@ class String # class. If the proxy class doesn't respond to a certain method, it's forwarded to the encapsulated string. # # >> "lj".mb_chars.upcase.to_s - # => "LJ" + # # => "LJ" # # NOTE: Ruby 2.4 and later support native Unicode case mappings: # # >> "lj".upcase - # => "LJ" + # # => "LJ" # # == \Method chaining # @@ -6721,14 +6726,14 @@ end # source://activesupport//lib/active_support/core_ext/time/conversions.rb#8 Time::DATE_FORMATS = T.let(T.unsafe(nil), Hash) -# source://activesupport//lib/active_support/core_ext/object/to_query.rb#25 +# source://activesupport//lib/active_support/core_ext/object/to_query.rb#26 class TrueClass # source://activesupport//lib/active_support/core_ext/object/json.rb#81 def as_json(options = T.unsafe(nil)); end # Returns +self+. # - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#27 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#28 def to_param; end end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/bigdecimal@3.2.2.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/bigdecimal@3.2.2.rbi deleted file mode 100644 index 51da807c43..0000000000 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/bigdecimal@3.2.2.rbi +++ /dev/null @@ -1,80 +0,0 @@ -# typed: true - -# DO NOT EDIT MANUALLY -# This is an autogenerated file for types exported from the `bigdecimal` gem. -# Please instead update this file by running `bin/tapioca gem bigdecimal`. - - -# source://bigdecimal//lib/bigdecimal/util.rb#78 -class BigDecimal < ::Numeric - # call-seq: - # a.to_d -> bigdecimal - # - # Returns self. - # - # require 'bigdecimal/util' - # - # d = BigDecimal("3.14") - # d.to_d # => 0.314e1 - # - # source://bigdecimal//lib/bigdecimal/util.rb#110 - def to_d; end - - # call-seq: - # a.to_digits -> string - # - # Converts a BigDecimal to a String of the form "nnnnnn.mmm". - # This method is deprecated; use BigDecimal#to_s("F") instead. - # - # require 'bigdecimal/util' - # - # d = BigDecimal("3.14") - # d.to_digits # => "3.14" - # - # source://bigdecimal//lib/bigdecimal/util.rb#90 - def to_digits; end -end - -BigDecimal::VERSION = T.let(T.unsafe(nil), String) - -# source://bigdecimal//lib/bigdecimal/util.rb#138 -class Complex < ::Numeric - # call-seq: - # cmp.to_d -> bigdecimal - # cmp.to_d(precision) -> bigdecimal - # - # Returns the value as a BigDecimal. - # - # The +precision+ parameter is required for a rational complex number. - # This parameter is used to determine the number of significant digits - # for the result. - # - # require 'bigdecimal' - # require 'bigdecimal/util' - # - # Complex(0.1234567, 0).to_d(4) # => 0.1235e0 - # Complex(Rational(22, 7), 0).to_d(3) # => 0.314e1 - # - # See also Kernel.BigDecimal. - # - # source://bigdecimal//lib/bigdecimal/util.rb#157 - def to_d(*args); end -end - -# source://bigdecimal//lib/bigdecimal/util.rb#171 -class NilClass - include ::Treetop::Compiler::Metagrammar::LabeledExpressionSequenceBody0 - - # call-seq: - # nil.to_d -> bigdecimal - # - # Returns nil represented as a BigDecimal. - # - # require 'bigdecimal' - # require 'bigdecimal/util' - # - # nil.to_d # => 0.0 - # - # source://bigdecimal//lib/bigdecimal/util.rb#182 - def to_d; end -end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/bigdecimal@3.3.1.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/bigdecimal@3.3.1.rbi new file mode 100644 index 0000000000..26d79c0ef1 --- /dev/null +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/bigdecimal@3.3.1.rbi @@ -0,0 +1,190 @@ +# typed: false + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `bigdecimal` gem. +# Please instead update this file by running `bin/tapioca gem bigdecimal`. + + +# source://bigdecimal//lib/bigdecimal.rb#13 +class BigDecimal < ::Numeric + # call-seq: + # self ** other -> bigdecimal + # + # Returns the \BigDecimal value of +self+ raised to power +other+: + # + # b = BigDecimal('3.14') + # b ** 2 # => 0.98596e1 + # b ** 2.0 # => 0.98596e1 + # b ** Rational(2, 1) # => 0.98596e1 + # + # Related: BigDecimal#power. + # + # source://bigdecimal//lib/bigdecimal.rb#77 + def **(y); end + + # call-seq: + # power(n) + # power(n, prec) + # + # Returns the value raised to the power of n. + # + # Also available as the operator **. + # + # source://bigdecimal//lib/bigdecimal.rb#97 + def power(y, prec = T.unsafe(nil)); end + + # Returns the square root of the value. + # + # Result has at least prec significant digits. + # + # @raise [FloatDomainError] + # + # source://bigdecimal//lib/bigdecimal.rb#211 + def sqrt(prec); end + + # call-seq: + # a.to_d -> bigdecimal + # + # Returns self. + # + # require 'bigdecimal/util' + # + # d = BigDecimal("3.14") + # d.to_d # => 0.314e1 + # + # source://bigdecimal//lib/bigdecimal/util.rb#110 + def to_d; end + + # call-seq: + # a.to_digits -> string + # + # Converts a BigDecimal to a String of the form "nnnnnn.mmm". + # This method is deprecated; use BigDecimal#to_s("F") instead. + # + # require 'bigdecimal/util' + # + # d = BigDecimal("3.14") + # d.to_digits # => "3.14" + # + # source://bigdecimal//lib/bigdecimal/util.rb#90 + def to_digits; end +end + +# source://bigdecimal//lib/bigdecimal.rb#14 +module BigDecimal::Internal + class << self + # Coerce x to BigDecimal with the specified precision. + # TODO: some methods (example: BigMath.exp) require more precision than specified to coerce. + # + # @raise [ArgumentError] + # + # source://bigdecimal//lib/bigdecimal.rb#18 + def coerce_to_bigdecimal(x, prec, method_name); end + + # source://bigdecimal//lib/bigdecimal.rb#30 + def coerce_validate_prec(prec, method_name, accept_zero: T.unsafe(nil)); end + + # source://bigdecimal//lib/bigdecimal.rb#50 + def infinity_computation_result; end + + # source://bigdecimal//lib/bigdecimal.rb#57 + def nan_computation_result; end + end +end + +BigDecimal::VERSION = T.let(T.unsafe(nil), String) + +# Core BigMath methods for BigDecimal (log, exp) are defined here. +# Other methods (sin, cos, atan) are defined in 'bigdecimal/math.rb'. +# +# source://bigdecimal//lib/bigdecimal.rb#237 +module BigMath + class << self + # call-seq: + # BigMath.exp(decimal, numeric) -> BigDecimal + # + # Computes the value of e (the base of natural logarithms) raised to the + # power of +decimal+, to the specified number of digits of precision. + # + # If +decimal+ is infinity, returns Infinity. + # + # If +decimal+ is NaN, returns NaN. + # + # source://bigdecimal//lib/bigdecimal.rb#328 + def exp(x, prec); end + + # call-seq: + # BigMath.log(decimal, numeric) -> BigDecimal + # + # Computes the natural logarithm of +decimal+ to the specified number of + # digits of precision, +numeric+. + # + # If +decimal+ is zero or negative, raises Math::DomainError. + # + # If +decimal+ is positive infinity, returns Infinity. + # + # If +decimal+ is NaN, returns NaN. + # + # @raise [Math::DomainError] + # + # source://bigdecimal//lib/bigdecimal.rb#251 + def log(x, prec); end + + private + + # source://bigdecimal//lib/bigdecimal.rb#306 + def _exp_taylor(x, prec); end + end +end + +# source://bigdecimal//lib/bigdecimal/util.rb#141 +class Complex < ::Numeric + # call-seq: + # cmp.to_d -> bigdecimal + # cmp.to_d(precision) -> bigdecimal + # + # Returns the value as a BigDecimal. + # If the imaginary part is not +0+, an error is raised + # + # The +precision+ parameter is used to determine the number of + # significant digits for the result. When +precision+ is set to +0+, + # the number of digits to represent the float being converted is determined + # automatically. + # The default +precision+ is +0+. + # + # require 'bigdecimal' + # require 'bigdecimal/util' + # + # Complex(0.1234567, 0).to_d(4) # => 0.1235e0 + # Complex(Rational(22, 7), 0).to_d(3) # => 0.314e1 + # Complex(1, 1).to_d # raises ArgumentError + # + # See also Kernel.BigDecimal. + # + # source://bigdecimal//lib/bigdecimal/util.rb#164 + def to_d(precision = T.unsafe(nil)); end +end + +# source://bigdecimal//lib/bigdecimal/util.rb#116 +class Rational < ::Numeric + # call-seq: + # rat.to_d(precision) -> bigdecimal + # + # Returns the value as a BigDecimal. + # + # The +precision+ parameter is used to determine the number of + # significant digits for the result. When +precision+ is set to +0+, + # the number of digits to represent the float being converted is determined + # automatically. + # The default +precision+ is +0+. + # + # require 'bigdecimal' + # require 'bigdecimal/util' + # + # Rational(22, 7).to_d(3) # => 0.314e1 + # + # See also Kernel.BigDecimal. + # + # source://bigdecimal//lib/bigdecimal/util.rb#135 + def to_d(precision = T.unsafe(nil)); end +end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/connection_pool@2.5.3.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/connection_pool@2.5.4.rbi similarity index 100% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/connection_pool@2.5.3.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/connection_pool@2.5.4.rbi diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/json@2.12.2.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/json@2.15.1.rbi similarity index 91% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/json@2.12.2.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/json@2.15.1.rbi index 0abf66eb64..72769548e9 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/json@2.12.2.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/json@2.15.1.rbi @@ -152,6 +152,24 @@ end # # --- # +# Option +allow_duplicate_key+ specifies whether duplicate keys in objects +# should be ignored or cause an error to be raised: +# +# When not specified: +# # The last value is used and a deprecation warning emitted. +# JSON.parse('{"a": 1, "a":2}') => {"a" => 2} +# # warning: detected duplicate keys in JSON object. +# # This will raise an error in json 3.0 unless enabled via `allow_duplicate_key: true` +# +# When set to `+true+` +# # The last value is used. +# JSON.parse('{"a": 1, "a":2}') => {"a" => 2} +# +# When set to `+false+`, the future default: +# JSON.parse('{"a": 1, "a":2}') => duplicate key at line 1 column 1 (JSON::ParserError) +# +# --- +# # Option +allow_nan+ (boolean) specifies whether to allow # NaN, Infinity, and MinusInfinity in +source+; # defaults to +false+. @@ -168,8 +186,23 @@ end # ruby = JSON.parse(source, {allow_nan: true}) # ruby # => [NaN, Infinity, -Infinity] # +# --- +# +# Option +allow_trailing_comma+ (boolean) specifies whether to allow +# trailing commas in objects and arrays; +# defaults to +false+. +# +# With the default, +false+: +# JSON.parse('[1,]') # unexpected character: ']' at line 1 column 4 (JSON::ParserError) +# +# When enabled: +# JSON.parse('[1,]', allow_trailing_comma: true) # => [1] +# # ====== Output Options # +# Option +freeze+ (boolean) specifies whether the returned objects will be frozen; +# defaults to +false+. +# # Option +symbolize_names+ (boolean) specifies whether returned \Hash keys # should be Symbols; # defaults to +false+ (use Strings). @@ -299,6 +332,25 @@ end # # --- # +# Option +allow_duplicate_key+ (boolean) specifies whether +# hashes with duplicate keys should be allowed or produce an error. +# defaults to emit a deprecation warning. +# +# With the default, (not set): +# Warning[:deprecated] = true +# JSON.generate({ foo: 1, "foo" => 2 }) +# # warning: detected duplicate key "foo" in {foo: 1, "foo" => 2}. +# # This will raise an error in json 3.0 unless enabled via `allow_duplicate_key: true` +# # => '{"foo":1,"foo":2}' +# +# With false +# JSON.generate({ foo: 1, "foo" => 2 }, allow_duplicate_key: false) +# # detected duplicate key "foo" in {foo: 1, "foo" => 2} (JSON::GeneratorError) +# +# In version 3.0, false will become the default. +# +# --- +# # Option +max_nesting+ (\Integer) specifies the maximum nesting depth # in +obj+; defaults to +100+. # @@ -376,6 +428,9 @@ end # # == \JSON Additions # +# Note that JSON Additions must only be used with trusted data, and is +# deprecated. +# # When you "round trip" a non-\String object from Ruby to \JSON and back, # you have a new \String, instead of the object you began with: # ruby0 = Range.new(0, 2) @@ -638,7 +693,7 @@ module JSON # Output: # {"foo":[0,1],"bar":{"baz":2,"bat":3},"bam":"bad"} # - # source://json//lib/json/common.rb#892 + # source://json//lib/json/common.rb#918 def dump(obj, anIO = T.unsafe(nil), limit = T.unsafe(nil), kwargs = T.unsafe(nil)); end # :call-seq: @@ -655,10 +710,10 @@ module JSON # # Raises SystemStackError (stack level too deep): # JSON.fast_generate(a) # - # source://json//lib/json/common.rb#445 + # source://json//lib/json/common.rb#465 def fast_generate(obj, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#937 + # source://json//lib/json/common.rb#963 def fast_unparse(*_arg0, **_arg1, &_arg2); end # :call-seq: @@ -666,7 +721,7 @@ module JSON # # Returns a \String containing the generated \JSON data. # - # See also JSON.fast_generate, JSON.pretty_generate. + # See also JSON.pretty_generate. # # Argument +obj+ is the Ruby object to be converted to \JSON. # @@ -697,7 +752,7 @@ module JSON # # Raises JSON::NestingError (nesting of 100 is too deep): # JSON.generate(a) # - # source://json//lib/json/common.rb#424 + # source://json//lib/json/common.rb#444 def generate(obj, opts = T.unsafe(nil)); end # :call-seq: @@ -814,6 +869,7 @@ module JSON # when Array # obj.map! {|v| deserialize_obj v } # end + # obj # }) # pp ruby # Output: @@ -835,7 +891,7 @@ module JSON # #"Admin", "password"=>"0wn3d"}>} # - # source://json//lib/json/common.rb#826 + # source://json//lib/json/common.rb#852 def load(source, proc = T.unsafe(nil), options = T.unsafe(nil)); end # :call-seq: @@ -846,7 +902,7 @@ module JSON # # See method #parse. # - # source://json//lib/json/common.rb#373 + # source://json//lib/json/common.rb#393 def load_file(filespec, opts = T.unsafe(nil)); end # :call-seq: @@ -857,7 +913,7 @@ module JSON # # See method #parse! # - # source://json//lib/json/common.rb#384 + # source://json//lib/json/common.rb#404 def load_file!(filespec, opts = T.unsafe(nil)); end # :call-seq: @@ -908,7 +964,7 @@ module JSON # # Raises JSON::ParserError (783: unexpected token at ''): # JSON.parse('') # - # source://json//lib/json/common.rb#336 + # source://json//lib/json/common.rb#356 def parse(source, opts = T.unsafe(nil)); end # :call-seq: @@ -923,7 +979,7 @@ module JSON # which disables checking for nesting depth. # - Option +allow_nan+, if not provided, defaults to +true+. # - # source://json//lib/json/common.rb#358 + # source://json//lib/json/common.rb#378 def parse!(source, opts = T.unsafe(nil)); end # :call-seq: @@ -956,20 +1012,20 @@ module JSON # } # } # - # source://json//lib/json/common.rb#492 + # source://json//lib/json/common.rb#512 def pretty_generate(obj, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#947 + # source://json//lib/json/common.rb#973 def pretty_unparse(*_arg0, **_arg1, &_arg2); end - # source://json//lib/json/common.rb#957 + # source://json//lib/json/common.rb#983 def restore(*_arg0, **_arg1, &_arg2); end # :stopdoc: # All these were meant to be deprecated circa 2009, but were just set as undocumented # so usage still exist in the wild. # - # source://json//lib/json/common.rb#927 + # source://json//lib/json/common.rb#953 def unparse(*_arg0, **_arg1, &_arg2); end # :call-seq: @@ -1080,6 +1136,7 @@ module JSON # when Array # obj.map! {|v| deserialize_obj v } # end + # obj # }) # pp ruby # Output: @@ -1101,7 +1158,7 @@ module JSON # #"Admin", "password"=>"0wn3d"}>} # - # source://json//lib/json/common.rb#666 + # source://json//lib/json/common.rb#687 def unsafe_load(source, proc = T.unsafe(nil), options = T.unsafe(nil)); end class << self @@ -1117,20 +1174,20 @@ module JSON # ruby = [0, 1, nil] # JSON[ruby] # => '[0,1,null]' # - # source://json//lib/json/common.rb#126 + # source://json//lib/json/common.rb#127 def [](object, opts = T.unsafe(nil)); end # Returns the current create identifier. # See also JSON.create_id=. # - # source://json//lib/json/common.rb#219 + # source://json//lib/json/common.rb#239 def create_id; end # Sets create identifier, which is used to decide if the _json_create_ # hook of a class should be called; initial value is +json_class+: # JSON.create_id # => 'json_class' # - # source://json//lib/json/common.rb#213 + # source://json//lib/json/common.rb#233 def create_id=(new_value); end # Return the constant located at _path_. The format of _path_ has to be @@ -1138,9 +1195,12 @@ module JSON # level (absolute namespace path?). If there doesn't exist a constant at # the given path, an ArgumentError is raised. # - # source://json//lib/json/common.rb#153 + # source://json//lib/json/common.rb#154 def deep_const_get(path); end + # source://json//lib/json/common.rb#99 + def deprecation_warning(message, uplevel = T.unsafe(nil)); end + # :call-seq: # JSON.dump(obj, io = nil, limit = nil) # @@ -1169,7 +1229,7 @@ module JSON # Output: # {"foo":[0,1],"bar":{"baz":2,"bat":3},"bam":"bad"} # - # source://json//lib/json/common.rb#892 + # source://json//lib/json/common.rb#918 def dump(obj, anIO = T.unsafe(nil), limit = T.unsafe(nil), kwargs = T.unsafe(nil)); end # :call-seq: @@ -1186,10 +1246,10 @@ module JSON # # Raises SystemStackError (stack level too deep): # JSON.fast_generate(a) # - # source://json//lib/json/common.rb#445 + # source://json//lib/json/common.rb#465 def fast_generate(obj, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#937 + # source://json//lib/json/common.rb#963 def fast_unparse(*_arg0, **_arg1, &_arg2); end # :call-seq: @@ -1197,7 +1257,7 @@ module JSON # # Returns a \String containing the generated \JSON data. # - # See also JSON.fast_generate, JSON.pretty_generate. + # See also JSON.pretty_generate. # # Argument +obj+ is the Ruby object to be converted to \JSON. # @@ -1228,17 +1288,17 @@ module JSON # # Raises JSON::NestingError (nesting of 100 is too deep): # JSON.generate(a) # - # source://json//lib/json/common.rb#424 + # source://json//lib/json/common.rb#444 def generate(obj, opts = T.unsafe(nil)); end # Returns the JSON generator module that is used by JSON. # - # source://json//lib/json/common.rb#181 + # source://json//lib/json/common.rb#182 def generator; end # Set the module _generator_ to be used by JSON. # - # source://json//lib/json/common.rb#160 + # source://json//lib/json/common.rb#161 def generator=(generator); end # :call-seq: @@ -1355,6 +1415,7 @@ module JSON # when Array # obj.map! {|v| deserialize_obj v } # end + # obj # }) # pp ruby # Output: @@ -1376,7 +1437,7 @@ module JSON # #"Admin", "password"=>"0wn3d"}>} # - # source://json//lib/json/common.rb#826 + # source://json//lib/json/common.rb#852 def load(source, proc = T.unsafe(nil), options = T.unsafe(nil)); end # :call-seq: @@ -1387,7 +1448,7 @@ module JSON # # See method #parse. # - # source://json//lib/json/common.rb#373 + # source://json//lib/json/common.rb#393 def load_file(filespec, opts = T.unsafe(nil)); end # :call-seq: @@ -1398,7 +1459,7 @@ module JSON # # See method #parse! # - # source://json//lib/json/common.rb#384 + # source://json//lib/json/common.rb#404 def load_file!(filespec, opts = T.unsafe(nil)); end # :call-seq: @@ -1449,7 +1510,7 @@ module JSON # # Raises JSON::ParserError (783: unexpected token at ''): # JSON.parse('') # - # source://json//lib/json/common.rb#336 + # source://json//lib/json/common.rb#356 def parse(source, opts = T.unsafe(nil)); end # :call-seq: @@ -1464,17 +1525,17 @@ module JSON # which disables checking for nesting depth. # - Option +allow_nan+, if not provided, defaults to +true+. # - # source://json//lib/json/common.rb#358 + # source://json//lib/json/common.rb#378 def parse!(source, opts = T.unsafe(nil)); end # Returns the JSON parser class that is used by JSON. # - # source://json//lib/json/common.rb#140 + # source://json//lib/json/common.rb#141 def parser; end # Set the JSON parser class _parser_ to be used by JSON. # - # source://json//lib/json/common.rb#143 + # source://json//lib/json/common.rb#144 def parser=(parser); end # :call-seq: @@ -1507,30 +1568,30 @@ module JSON # } # } # - # source://json//lib/json/common.rb#492 + # source://json//lib/json/common.rb#512 def pretty_generate(obj, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#947 + # source://json//lib/json/common.rb#973 def pretty_unparse(*_arg0, **_arg1, &_arg2); end - # source://json//lib/json/common.rb#957 + # source://json//lib/json/common.rb#983 def restore(*_arg0, **_arg1, &_arg2); end # Sets or Returns the JSON generator state class that is used by JSON. # - # source://json//lib/json/common.rb#184 + # source://json//lib/json/common.rb#185 def state; end # Sets or Returns the JSON generator state class that is used by JSON. # - # source://json//lib/json/common.rb#184 + # source://json//lib/json/common.rb#185 def state=(_arg0); end # :stopdoc: # All these were meant to be deprecated circa 2009, but were just set as undocumented # so usage still exist in the wild. # - # source://json//lib/json/common.rb#927 + # source://json//lib/json/common.rb#953 def unparse(*_arg0, **_arg1, &_arg2); end # :call-seq: @@ -1641,6 +1702,7 @@ module JSON # when Array # obj.map! {|v| deserialize_obj v } # end + # obj # }) # pp ruby # Output: @@ -1662,16 +1724,21 @@ module JSON # #"Admin", "password"=>"0wn3d"}>} # - # source://json//lib/json/common.rb#666 + # source://json//lib/json/common.rb#687 def unsafe_load(source, proc = T.unsafe(nil), options = T.unsafe(nil)); end private - # source://json//lib/json/common.rb#970 + # source://json//lib/json/common.rb#996 def const_missing(const_name); end - # source://json//lib/json/common.rb#188 + # source://json//lib/json/common.rb#208 def deprecated_singleton_attr_accessor(*attrs); end + + # Called from the extension when a hash has both string and symbol keys + # + # source://json//lib/json/common.rb#190 + def on_mixed_keys_hash(hash, do_raise); end end end @@ -1685,7 +1752,7 @@ end # # MyApp::JSONC_CODER.load(document) # -# source://json//lib/json/common.rb#996 +# source://json//lib/json/common.rb#1022 class JSON::Coder # :call-seq: # JSON.new(options = nil, &block) @@ -1694,7 +1761,7 @@ class JSON::Coder # See {Parsing Options}[#module-JSON-label-Parsing+Options], and {Generating Options}[#module-JSON-label-Generating+Options]. # # For generation, the strict: true option is always set. When a Ruby object with no native \JSON counterpart is - # encoutered, the block provided to the initialize method is invoked, and must return a Ruby object that has a native + # encountered, the block provided to the initialize method is invoked, and must return a Ruby object that has a native # \JSON counterpart: # # module MyApp @@ -1712,7 +1779,7 @@ class JSON::Coder # # @return [Coder] a new instance of Coder # - # source://json//lib/json/common.rb#1020 + # source://json//lib/json/common.rb#1046 def initialize(options = T.unsafe(nil), &as_json); end # call-seq: @@ -1721,7 +1788,7 @@ class JSON::Coder # # Serialize the given object into a \JSON document. # - # source://json//lib/json/common.rb#1038 + # source://json//lib/json/common.rb#1064 def dump(object, io = T.unsafe(nil)); end # call-seq: @@ -1730,7 +1797,7 @@ class JSON::Coder # # Serialize the given object into a \JSON document. # - # source://json//lib/json/common.rb#1038 + # source://json//lib/json/common.rb#1064 def generate(object, io = T.unsafe(nil)); end # call-seq: @@ -1738,7 +1805,7 @@ class JSON::Coder # # Parse the given \JSON document and return an equivalent Ruby object. # - # source://json//lib/json/common.rb#1047 + # source://json//lib/json/common.rb#1073 def load(source); end # call-seq: @@ -1746,7 +1813,7 @@ class JSON::Coder # # Parse the given \JSON document and return an equivalent Ruby object. # - # source://json//lib/json/common.rb#1056 + # source://json//lib/json/common.rb#1082 def load_file(path); end # call-seq: @@ -1754,52 +1821,36 @@ class JSON::Coder # # Parse the given \JSON document and return an equivalent Ruby object. # - # source://json//lib/json/common.rb#1047 + # source://json//lib/json/common.rb#1073 def parse(source); end end -module JSON::Ext::Generator::GeneratorMethods::String - mixes_in_class_methods ::JSON::Ext::Generator::GeneratorMethods::String::Extend -end - # source://json//lib/json/ext/generator/state.rb#6 class JSON::Ext::Generator::State # call-seq: new(opts = {}) # # Instantiates a new State object, configured by _opts_. # - # _opts_ can have the following keys: - # - # * *indent*: a string used to indent levels (default: ''), - # * *space*: a string that is put after, a : or , delimiter (default: ''), - # * *space_before*: a string that is put before a : pair delimiter (default: ''), - # * *object_nl*: a string that is put at the end of a JSON object (default: ''), - # * *array_nl*: a string that is put at the end of a JSON array (default: ''), - # * *allow_nan*: true if NaN, Infinity, and -Infinity should be - # generated, otherwise an exception is thrown, if these values are - # encountered. This options defaults to false. - # * *ascii_only*: true if only ASCII characters should be generated. This - # option defaults to false. - # * *buffer_initial_length*: sets the initial length of the generator's - # internal buffer. + # Argument +opts+, if given, contains a \Hash of options for the generation. + # See {Generating Options}[#module-JSON-label-Generating+Options]. # # @return [State] a new instance of State # - # source://json//lib/json/ext/generator/state.rb#25 + # source://json//lib/json/ext/generator/state.rb#13 def initialize(opts = T.unsafe(nil)); end # call-seq: [](name) # # Returns the value returned by method +name+. # - # source://json//lib/json/ext/generator/state.rb#84 + # source://json//lib/json/ext/generator/state.rb#77 def [](name); end # call-seq: []=(name, value) # # Sets the attribute name to value. # - # source://json//lib/json/ext/generator/state.rb#96 + # source://json//lib/json/ext/generator/state.rb#89 def []=(name, value); end # call-seq: configure(opts) @@ -1807,7 +1858,7 @@ class JSON::Ext::Generator::State # Configure this State instance with the Hash _opts_, and return # itself. # - # source://json//lib/json/ext/generator/state.rb#35 + # source://json//lib/json/ext/generator/state.rb#23 def configure(opts); end # call-seq: configure(opts) @@ -1815,7 +1866,7 @@ class JSON::Ext::Generator::State # Configure this State instance with the Hash _opts_, and return # itself. # - # source://json//lib/json/ext/generator/state.rb#35 + # source://json//lib/json/ext/generator/state.rb#23 def merge(opts); end # call-seq: to_h @@ -1823,7 +1874,7 @@ class JSON::Ext::Generator::State # Returns the configuration instance variables as a hash, that can be # passed to the configure method. # - # source://json//lib/json/ext/generator/state.rb#54 + # source://json//lib/json/ext/generator/state.rb#42 def to_h; end # call-seq: to_h @@ -1831,7 +1882,7 @@ class JSON::Ext::Generator::State # Returns the configuration instance variables as a hash, that can be # passed to the configure method. # - # source://json//lib/json/ext/generator/state.rb#54 + # source://json//lib/json/ext/generator/state.rb#42 def to_hash; end end @@ -1861,13 +1912,13 @@ JSON::Ext::Parser::Config = JSON::Ext::ParserConfig # to string interpolation. # # Note: no validation is performed on the provided string. It is the -# responsability of the caller to ensure the string contains valid JSON. +# responsibility of the caller to ensure the string contains valid JSON. # -# source://json//lib/json/common.rb#272 +# source://json//lib/json/common.rb#292 class JSON::Fragment < ::Struct # @return [Fragment] a new instance of Fragment # - # source://json//lib/json/common.rb#273 + # source://json//lib/json/common.rb#293 def initialize(json); end # Returns the value of attribute json @@ -1881,7 +1932,7 @@ class JSON::Fragment < ::Struct # @return [Object] the newly set value def json=(_); end - # source://json//lib/json/common.rb#281 + # source://json//lib/json/common.rb#301 def to_json(state = T.unsafe(nil), *_arg1); end class << self @@ -1895,34 +1946,34 @@ end # This exception is raised if a generator or unparser error occurs. # -# source://json//lib/json/common.rb#242 +# source://json//lib/json/common.rb#262 class JSON::GeneratorError < ::JSON::JSONError # @return [GeneratorError] a new instance of GeneratorError # - # source://json//lib/json/common.rb#245 + # source://json//lib/json/common.rb#265 def initialize(message, invalid_object = T.unsafe(nil)); end - # source://json//lib/json/common.rb#250 + # source://json//lib/json/common.rb#270 def detailed_message(*_arg0, **_arg1, &_arg2); end # Returns the value of attribute invalid_object. # - # source://json//lib/json/common.rb#243 + # source://json//lib/json/common.rb#263 def invalid_object; end end # source://json//lib/json/generic_object.rb#9 class JSON::GenericObject < ::OpenStruct - # source://json//lib/json/generic_object.rb#67 + # source://json//lib/json/generic_object.rb#59 def as_json(*_arg0); end # source://json//lib/json/generic_object.rb#51 def to_hash; end - # source://json//lib/json/generic_object.rb#71 + # source://json//lib/json/generic_object.rb#63 def to_json(*a); end - # source://json//lib/json/generic_object.rb#63 + # source://json//lib/json/generic_object.rb#55 def |(other); end class << self @@ -1952,27 +2003,27 @@ class JSON::GenericObject < ::OpenStruct end end -# source://json//lib/json/common.rb#341 +# source://json//lib/json/common.rb#361 JSON::PARSE_L_OPTIONS = T.let(T.unsafe(nil), Hash) -# source://json//lib/json/common.rb#454 +# source://json//lib/json/common.rb#474 JSON::PRETTY_GENERATE_OPTIONS = T.let(T.unsafe(nil), Hash) -# source://json//lib/json/common.rb#146 +# source://json//lib/json/common.rb#147 JSON::Parser = JSON::Ext::Parser # This exception is raised if a parser error occurs. # -# source://json//lib/json/common.rb#233 +# source://json//lib/json/common.rb#253 class JSON::ParserError < ::JSON::JSONError # Returns the value of attribute column. # - # source://json//lib/json/common.rb#234 + # source://json//lib/json/common.rb#254 def column; end # Returns the value of attribute line. # - # source://json//lib/json/common.rb#234 + # source://json//lib/json/common.rb#254 def line; end end @@ -1987,12 +2038,12 @@ module JSON::ParserOptions # source://json//lib/json/common.rb#40 def array_class_proc(array_class, on_load); end - # TODO: exctract :create_additions support to another gem for version 3.0 + # TODO: extract :create_additions support to another gem for version 3.0 # # source://json//lib/json/common.rb#52 def create_additions_proc(opts); end - # source://json//lib/json/common.rb#91 + # source://json//lib/json/common.rb#90 def create_additions_warning; end # source://json//lib/json/common.rb#29 @@ -2000,10 +2051,10 @@ module JSON::ParserOptions end end -# source://json//lib/json/common.rb#175 +# source://json//lib/json/common.rb#176 JSON::State = JSON::Ext::Generator::State -# source://json//lib/json/common.rb#1062 +# source://json//lib/json/common.rb#1088 module Kernel private @@ -2014,25 +2065,24 @@ module Kernel # The _opts_ argument is passed through to generate/parse respectively. See # generate and parse for their documentation. # - # source://json//lib/json/common.rb#1101 + # source://json//lib/json/common.rb#1127 def JSON(object, opts = T.unsafe(nil)); end # Outputs _objs_ to STDOUT as JSON strings in the shortest form, that is in # one line. # - # source://json//lib/json/common.rb#1067 + # source://json//lib/json/common.rb#1093 def j(*objs); end # Outputs _objs_ to STDOUT as JSON strings in a pretty format, with # indentation and over many lines. # - # source://json//lib/json/common.rb#1082 + # source://json//lib/json/common.rb#1108 def jj(*objs); end end class NilClass include ::JSON::Ext::Generator::GeneratorMethods::NilClass - include ::Treetop::Compiler::Metagrammar::LabeledExpressionSequenceBody0 end class Object < ::BasicObject @@ -2044,7 +2094,6 @@ end class String include ::Comparable include ::JSON::Ext::Generator::GeneratorMethods::String - extend ::JSON::Ext::Generator::GeneratorMethods::String::Extend end class TrueClass diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/minitest@5.25.5.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/minitest@5.26.0.rbi similarity index 81% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/minitest@5.25.5.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/minitest@5.26.0.rbi index f47a1481f3..4c682419ab 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/minitest@5.25.5.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/minitest@5.26.0.rbi @@ -14,7 +14,7 @@ module Minitest # Internal run method. Responsible for telling all Runnable # sub-classes to run. # - # source://minitest//lib/minitest.rb#323 + # source://minitest//lib/minitest.rb#325 def __run(reporter, options); end # A simple hook allowing you to run a block of code after everything @@ -45,10 +45,10 @@ module Minitest # source://minitest//lib/minitest.rb#19 def cattr_accessor(name); end - # source://minitest//lib/minitest.rb#1216 + # source://minitest//lib/minitest.rb#1218 def clock_time; end - # source://minitest//lib/minitest.rb#303 + # source://minitest//lib/minitest.rb#305 def empty_run!(options); end # source://minitest//lib/minitest.rb#20 @@ -57,7 +57,7 @@ module Minitest # source://minitest//lib/minitest.rb#20 def extensions=(_arg0); end - # source://minitest//lib/minitest.rb#336 + # source://minitest//lib/minitest.rb#338 def filter_backtrace(bt); end # source://minitest//lib/minitest.rb#20 @@ -104,17 +104,18 @@ module Minitest # Minitest.process_args # Minitest.init_plugins # Minitest.__run(reporter, options) - # Runnable.runnables.each + # Runnable.runnables.each |runnable_klass| # runnable_klass.run(reporter, options) - # self.runnable_methods.each - # self.run_one_method(self, runnable_method, reporter) - # Minitest.run_one_method(klass, runnable_method) - # klass.new(runnable_method).run + # filtered_methods = runnable_methods.select {...}.reject {...} + # filtered_methods.each |runnable_method| + # runnable_klass.run_one_method(self, runnable_method, reporter) + # Minitest.run_one_method(runnable_klass, runnable_method) + # runnable_klass.new(runnable_method).run # - # source://minitest//lib/minitest.rb#269 + # source://minitest//lib/minitest.rb#270 def run(args = T.unsafe(nil)); end - # source://minitest//lib/minitest.rb#1207 + # source://minitest//lib/minitest.rb#1209 def run_one_method(klass, method_name); end # source://minitest//lib/minitest.rb#20 @@ -128,24 +129,24 @@ end # Defines the API for Reporters. Subclass this and override whatever # you want. Go nuts. # -# source://minitest//lib/minitest.rb#687 +# source://minitest//lib/minitest.rb#689 class Minitest::AbstractReporter # @return [AbstractReporter] a new instance of AbstractReporter # - # source://minitest//lib/minitest.rb#689 + # source://minitest//lib/minitest.rb#691 def initialize; end # Did this run pass? # # @return [Boolean] # - # source://minitest//lib/minitest.rb#724 + # source://minitest//lib/minitest.rb#726 def passed?; end # About to start running a test. This allows a reporter to show # that it is starting or that we are in the middle of a test run. # - # source://minitest//lib/minitest.rb#703 + # source://minitest//lib/minitest.rb#705 def prerecord(klass, name); end # Output and record the result of the test. Call @@ -153,43 +154,43 @@ class Minitest::AbstractReporter # result character string. Stores the result of the run if the run # did not pass. # - # source://minitest//lib/minitest.rb#712 + # source://minitest//lib/minitest.rb#714 def record(result); end # Outputs the summary of the run. # - # source://minitest//lib/minitest.rb#718 + # source://minitest//lib/minitest.rb#720 def report; end # Starts reporting on the run. # - # source://minitest//lib/minitest.rb#696 + # source://minitest//lib/minitest.rb#698 def start; end - # source://minitest//lib/minitest.rb#728 + # source://minitest//lib/minitest.rb#730 def synchronize(&block); end end # Represents run failures. # -# source://minitest//lib/minitest.rb#1020 +# source://minitest//lib/minitest.rb#1022 class Minitest::Assertion < ::Exception - # source://minitest//lib/minitest.rb#1023 + # source://minitest//lib/minitest.rb#1025 def error; end # Where was this run before an assertion was raised? # - # source://minitest//lib/minitest.rb#1030 + # source://minitest//lib/minitest.rb#1032 def location; end - # source://minitest//lib/minitest.rb#1038 + # source://minitest//lib/minitest.rb#1040 def result_code; end - # source://minitest//lib/minitest.rb#1042 + # source://minitest//lib/minitest.rb#1044 def result_label; end end -# source://minitest//lib/minitest.rb#1021 +# source://minitest//lib/minitest.rb#1023 Minitest::Assertion::RE = T.let(T.unsafe(nil), Regexp) # Minitest Assertions. All assertion methods accept a +msg+ which is @@ -396,7 +397,7 @@ module Minitest::Assertions # capture IO for subprocesses. Use #capture_subprocess_io for # that. # - # source://minitest//lib/minitest/assertions.rb#538 + # source://minitest//lib/minitest/assertions.rb#533 def capture_io; end # Captures $stdout and $stderr into strings, using Tempfile to @@ -413,7 +414,7 @@ module Minitest::Assertions # NOTE: This method is approximately 10x slower than #capture_io so # only use it when you need to test the output of a subprocess. # - # source://minitest//lib/minitest/assertions.rb#571 + # source://minitest//lib/minitest/assertions.rb#566 def capture_subprocess_io; end # Returns a diff between +exp+ and +act+. If there is no known @@ -428,24 +429,24 @@ module Minitest::Assertions # Returns details for exception +e+ # - # source://minitest//lib/minitest/assertions.rb#603 + # source://minitest//lib/minitest/assertions.rb#598 def exception_details(e, msg); end # Fails after a given date (in the local time zone). This allows # you to put time-bombs in your tests if you need to keep # something around until a later date lest you forget about it. # - # source://minitest//lib/minitest/assertions.rb#619 + # source://minitest//lib/minitest/assertions.rb#614 def fail_after(y, m, d, msg); end # Fails with +msg+. # - # source://minitest//lib/minitest/assertions.rb#626 + # source://minitest//lib/minitest/assertions.rb#621 def flunk(msg = T.unsafe(nil)); end # Returns a proc that will output +msg+ along with the default message. # - # source://minitest//lib/minitest/assertions.rb#634 + # source://minitest//lib/minitest/assertions.rb#629 def message(msg = T.unsafe(nil), ending = T.unsafe(nil), &default); end # This returns a human-readable version of +obj+. By default @@ -467,62 +468,62 @@ module Minitest::Assertions # used for counting assertions # - # source://minitest//lib/minitest/assertions.rb#645 + # source://minitest//lib/minitest/assertions.rb#640 def pass(_msg = T.unsafe(nil)); end # Fails if +test+ is truthy. # - # source://minitest//lib/minitest/assertions.rb#652 + # source://minitest//lib/minitest/assertions.rb#647 def refute(test, msg = T.unsafe(nil)); end # Fails if +obj+ is empty. # - # source://minitest//lib/minitest/assertions.rb#660 + # source://minitest//lib/minitest/assertions.rb#655 def refute_empty(obj, msg = T.unsafe(nil)); end # Fails if exp == act. # # For floats use refute_in_delta. # - # source://minitest//lib/minitest/assertions.rb#671 + # source://minitest//lib/minitest/assertions.rb#666 def refute_equal(exp, act, msg = T.unsafe(nil)); end # For comparing Floats. Fails if +exp+ is within +delta+ of +act+. # # refute_in_delta Math::PI, (22.0 / 7.0) # - # source://minitest//lib/minitest/assertions.rb#683 + # source://minitest//lib/minitest/assertions.rb#678 def refute_in_delta(exp, act, delta = T.unsafe(nil), msg = T.unsafe(nil)); end # For comparing Floats. Fails if +exp+ and +act+ have a relative error # less than +epsilon+. # - # source://minitest//lib/minitest/assertions.rb#695 + # source://minitest//lib/minitest/assertions.rb#690 def refute_in_epsilon(a, b, epsilon = T.unsafe(nil), msg = T.unsafe(nil)); end # Fails if +collection+ includes +obj+. # - # source://minitest//lib/minitest/assertions.rb#702 + # source://minitest//lib/minitest/assertions.rb#697 def refute_includes(collection, obj, msg = T.unsafe(nil)); end # Fails if +obj+ is an instance of +cls+. # - # source://minitest//lib/minitest/assertions.rb#713 + # source://minitest//lib/minitest/assertions.rb#708 def refute_instance_of(cls, obj, msg = T.unsafe(nil)); end # Fails if +obj+ is a kind of +cls+. # - # source://minitest//lib/minitest/assertions.rb#723 + # source://minitest//lib/minitest/assertions.rb#718 def refute_kind_of(cls, obj, msg = T.unsafe(nil)); end # Fails if +matcher+ =~ +obj+. # - # source://minitest//lib/minitest/assertions.rb#731 + # source://minitest//lib/minitest/assertions.rb#726 def refute_match(matcher, obj, msg = T.unsafe(nil)); end # Fails if +obj+ is nil. # - # source://minitest//lib/minitest/assertions.rb#741 + # source://minitest//lib/minitest/assertions.rb#736 def refute_nil(obj, msg = T.unsafe(nil)); end # Fails if +o1+ is not +op+ +o2+. Eg: @@ -530,12 +531,12 @@ module Minitest::Assertions # refute_operator 1, :>, 2 #=> pass # refute_operator 1, :<, 2 #=> fail # - # source://minitest//lib/minitest/assertions.rb#776 + # source://minitest//lib/minitest/assertions.rb#771 def refute_operator(o1, op, o2 = T.unsafe(nil), msg = T.unsafe(nil)); end # Fails if +path+ exists. # - # source://minitest//lib/minitest/assertions.rb#785 + # source://minitest//lib/minitest/assertions.rb#780 def refute_path_exists(path, msg = T.unsafe(nil)); end # For testing with pattern matching (only supported with Ruby 3.0 and later) @@ -551,7 +552,7 @@ module Minitest::Assertions # # @raise [NotImplementedError] # - # source://minitest//lib/minitest/assertions.rb#758 + # source://minitest//lib/minitest/assertions.rb#753 def refute_pattern; end # For testing with predicates. @@ -562,18 +563,18 @@ module Minitest::Assertions # # str.wont_be :empty? # - # source://minitest//lib/minitest/assertions.rb#799 + # source://minitest//lib/minitest/assertions.rb#794 def refute_predicate(o1, op, msg = T.unsafe(nil)); end # Fails if +obj+ responds to the message +meth+. # include_all defaults to false to match Object#respond_to? # - # source://minitest//lib/minitest/assertions.rb#808 + # source://minitest//lib/minitest/assertions.rb#803 def refute_respond_to(obj, meth, msg = T.unsafe(nil), include_all: T.unsafe(nil)); end # Fails if +exp+ is the same (by object identity) as +act+. # - # source://minitest//lib/minitest/assertions.rb#817 + # source://minitest//lib/minitest/assertions.rb#812 def refute_same(exp, act, msg = T.unsafe(nil)); end # Skips the current run. If run in verbose-mode, the skipped run @@ -582,7 +583,7 @@ module Minitest::Assertions # # @raise [Minitest::Skip] # - # source://minitest//lib/minitest/assertions.rb#830 + # source://minitest//lib/minitest/assertions.rb#825 def skip(msg = T.unsafe(nil), _ignored = T.unsafe(nil)); end # Skips the current run until a given date (in the local time @@ -590,14 +591,14 @@ module Minitest::Assertions # date, but still holds you accountable and prevents you from # forgetting it. # - # source://minitest//lib/minitest/assertions.rb#842 + # source://minitest//lib/minitest/assertions.rb#837 def skip_until(y, m, d, msg); end # Was this testcase skipped? Meant for #teardown. # # @return [Boolean] # - # source://minitest//lib/minitest/assertions.rb#851 + # source://minitest//lib/minitest/assertions.rb#846 def skipped?; end # Returns things to diff [expect, butwas], or [nil, nil] if nothing to diff. @@ -636,75 +637,75 @@ Minitest::Assertions::UNDEFINED = T.let(T.unsafe(nil), Object) # # See Minitest.backtrace_filter=. # -# source://minitest//lib/minitest.rb#1175 +# source://minitest//lib/minitest.rb#1177 class Minitest::BacktraceFilter # @return [BacktraceFilter] a new instance of BacktraceFilter # - # source://minitest//lib/minitest.rb#1184 + # source://minitest//lib/minitest.rb#1186 def initialize(regexp = T.unsafe(nil)); end # Filter +bt+ to something useful. Returns the whole thing if # $DEBUG (ruby) or $MT_DEBUG (env). # - # source://minitest//lib/minitest.rb#1192 + # source://minitest//lib/minitest.rb#1194 def filter(bt); end # The regular expression to use to filter backtraces. Defaults to +MT_RE+. # - # source://minitest//lib/minitest.rb#1182 + # source://minitest//lib/minitest.rb#1184 def regexp; end # The regular expression to use to filter backtraces. Defaults to +MT_RE+. # - # source://minitest//lib/minitest.rb#1182 + # source://minitest//lib/minitest.rb#1184 def regexp=(_arg0); end end -# source://minitest//lib/minitest.rb#1177 +# source://minitest//lib/minitest.rb#1179 Minitest::BacktraceFilter::MT_RE = T.let(T.unsafe(nil), Regexp) # Dispatch to multiple reporters as one. # -# source://minitest//lib/minitest.rb#969 +# source://minitest//lib/minitest.rb#971 class Minitest::CompositeReporter < ::Minitest::AbstractReporter # @return [CompositeReporter] a new instance of CompositeReporter # - # source://minitest//lib/minitest.rb#975 + # source://minitest//lib/minitest.rb#977 def initialize(*reporters); end # Add another reporter to the mix. # - # source://minitest//lib/minitest.rb#987 + # source://minitest//lib/minitest.rb#989 def <<(reporter); end - # source://minitest//lib/minitest.rb#980 + # source://minitest//lib/minitest.rb#982 def io; end # @return [Boolean] # - # source://minitest//lib/minitest.rb#991 + # source://minitest//lib/minitest.rb#993 def passed?; end - # source://minitest//lib/minitest.rb#999 + # source://minitest//lib/minitest.rb#1001 def prerecord(klass, name); end - # source://minitest//lib/minitest.rb#1006 + # source://minitest//lib/minitest.rb#1008 def record(result); end - # source://minitest//lib/minitest.rb#1012 + # source://minitest//lib/minitest.rb#1014 def report; end # The list of reporters to dispatch to. # - # source://minitest//lib/minitest.rb#973 + # source://minitest//lib/minitest.rb#975 def reporters; end # The list of reporters to dispatch to. # - # source://minitest//lib/minitest.rb#973 + # source://minitest//lib/minitest.rb#975 def reporters=(_arg0); end - # source://minitest//lib/minitest.rb#995 + # source://minitest//lib/minitest.rb#997 def start; end end @@ -733,48 +734,48 @@ end # # ... lots of test methods ... # end # -# source://minitest//lib/minitest.rb#1119 +# source://minitest//lib/minitest.rb#1121 module Minitest::Guard # Is this running on jruby? # # @return [Boolean] # - # source://minitest//lib/minitest.rb#1124 + # source://minitest//lib/minitest.rb#1126 def jruby?(platform = T.unsafe(nil)); end # Is this running on maglev? # # @return [Boolean] # - # source://minitest//lib/minitest.rb#1131 + # source://minitest//lib/minitest.rb#1133 def maglev?(platform = T.unsafe(nil)); end # Is this running on mri? # # @return [Boolean] # - # source://minitest//lib/minitest.rb#1141 + # source://minitest//lib/minitest.rb#1143 def mri?(platform = T.unsafe(nil)); end # Is this running on macOS? # # @return [Boolean] # - # source://minitest//lib/minitest.rb#1148 + # source://minitest//lib/minitest.rb#1150 def osx?(platform = T.unsafe(nil)); end # Is this running on rubinius? # # @return [Boolean] # - # source://minitest//lib/minitest.rb#1155 + # source://minitest//lib/minitest.rb#1157 def rubinius?(platform = T.unsafe(nil)); end # Is this running on windows? # # @return [Boolean] # - # source://minitest//lib/minitest.rb#1165 + # source://minitest//lib/minitest.rb#1167 def windows?(platform = T.unsafe(nil)); end end @@ -837,36 +838,36 @@ end # plugin, pull this out of the composite and replace it with your # own. # -# source://minitest//lib/minitest.rb#759 +# source://minitest//lib/minitest.rb#761 class Minitest::ProgressReporter < ::Minitest::Reporter - # source://minitest//lib/minitest.rb#760 + # source://minitest//lib/minitest.rb#762 def prerecord(klass, name); end - # source://minitest//lib/minitest.rb#767 + # source://minitest//lib/minitest.rb#769 def record(result); end end # Shared code for anything that can get passed to a Reporter. See # Minitest::Test & Minitest::Result. # -# source://minitest//lib/minitest.rb#581 +# source://minitest//lib/minitest.rb#583 module Minitest::Reportable # @raise [NotImplementedError] # - # source://minitest//lib/minitest.rb#603 + # source://minitest//lib/minitest.rb#605 def class_name; end # Did this run error? # # @return [Boolean] # - # source://minitest//lib/minitest.rb#624 + # source://minitest//lib/minitest.rb#626 def error?; end # The location identifier of this test. Depends on a method # existing called class_name. # - # source://minitest//lib/minitest.rb#598 + # source://minitest//lib/minitest.rb#600 def location; end # Did this run pass? @@ -876,50 +877,50 @@ module Minitest::Reportable # # @return [Boolean] # - # source://minitest//lib/minitest.rb#588 + # source://minitest//lib/minitest.rb#590 def passed?; end # Returns ".", "F", or "E" based on the result of the run. # - # source://minitest//lib/minitest.rb#610 + # source://minitest//lib/minitest.rb#612 def result_code; end # Was this run skipped? # # @return [Boolean] # - # source://minitest//lib/minitest.rb#617 + # source://minitest//lib/minitest.rb#619 def skipped?; end end -# source://minitest//lib/minitest.rb#592 +# source://minitest//lib/minitest.rb#594 Minitest::Reportable::BASE_DIR = T.let(T.unsafe(nil), String) -# source://minitest//lib/minitest.rb#735 +# source://minitest//lib/minitest.rb#737 class Minitest::Reporter < ::Minitest::AbstractReporter # @return [Reporter] a new instance of Reporter # - # source://minitest//lib/minitest.rb#744 + # source://minitest//lib/minitest.rb#746 def initialize(io = T.unsafe(nil), options = T.unsafe(nil)); end # The IO used to report. # - # source://minitest//lib/minitest.rb#737 + # source://minitest//lib/minitest.rb#739 def io; end # The IO used to report. # - # source://minitest//lib/minitest.rb#737 + # source://minitest//lib/minitest.rb#739 def io=(_arg0); end # Command-line options for this run. # - # source://minitest//lib/minitest.rb#742 + # source://minitest//lib/minitest.rb#744 def options; end # Command-line options for this run. # - # source://minitest//lib/minitest.rb#742 + # source://minitest//lib/minitest.rb#744 def options=(_arg0); end end @@ -929,80 +930,80 @@ end # blow up. By using Result.from(a_test) you can be reasonably sure # that the test result can be marshalled. # -# source://minitest//lib/minitest.rb#636 +# source://minitest//lib/minitest.rb#638 class Minitest::Result < ::Minitest::Runnable include ::Minitest::Reportable - # source://minitest//lib/minitest.rb#670 + # source://minitest//lib/minitest.rb#672 def class_name; end # The class name of the test result. # - # source://minitest//lib/minitest.rb#645 + # source://minitest//lib/minitest.rb#647 def klass; end # The class name of the test result. # - # source://minitest//lib/minitest.rb#645 + # source://minitest//lib/minitest.rb#647 def klass=(_arg0); end # The location of the test method. # - # source://minitest//lib/minitest.rb#650 + # source://minitest//lib/minitest.rb#652 def source_location; end # The location of the test method. # - # source://minitest//lib/minitest.rb#650 + # source://minitest//lib/minitest.rb#652 def source_location=(_arg0); end - # source://minitest//lib/minitest.rb#674 + # source://minitest//lib/minitest.rb#676 def to_s; end class << self # Create a new test result from a Runnable instance. # - # source://minitest//lib/minitest.rb#655 + # source://minitest//lib/minitest.rb#657 def from(runnable); end end end # re-open # -# source://minitest//lib/minitest.rb#349 +# source://minitest//lib/minitest.rb#351 class Minitest::Runnable # @return [Runnable] a new instance of Runnable # - # source://minitest//lib/minitest.rb#512 + # source://minitest//lib/minitest.rb#514 def initialize(name); end # Number of assertions executed in this run. # - # source://minitest//lib/minitest.rb#353 + # source://minitest//lib/minitest.rb#355 def assertions; end # Number of assertions executed in this run. # - # source://minitest//lib/minitest.rb#353 + # source://minitest//lib/minitest.rb#355 def assertions=(_arg0); end - # source://minitest//lib/minitest.rb#508 + # source://minitest//lib/minitest.rb#510 def failure; end # An assertion raised during the run, if any. # - # source://minitest//lib/minitest.rb#358 + # source://minitest//lib/minitest.rb#360 def failures; end # An assertion raised during the run, if any. # - # source://minitest//lib/minitest.rb#358 + # source://minitest//lib/minitest.rb#360 def failures=(_arg0); end - # source://minitest//lib/minitest.rb#494 + # source://minitest//lib/minitest.rb#496 def marshal_dump; end - # source://minitest//lib/minitest.rb#504 + # source://minitest//lib/minitest.rb#506 def marshal_load(ary); end # Metadata you attach to the test results that get sent to the reporter. @@ -1012,29 +1013,29 @@ class Minitest::Runnable # NOTE: this data *must* be plain (read: marshal-able) data! # Hashes! Arrays! Strings! # - # source://minitest//lib/minitest.rb#527 + # source://minitest//lib/minitest.rb#529 def metadata; end # Sets metadata, mainly used for +Result.from+. # - # source://minitest//lib/minitest.rb#534 + # source://minitest//lib/minitest.rb#536 def metadata=(_arg0); end # Returns true if metadata exists. # # @return [Boolean] # - # source://minitest//lib/minitest.rb#539 + # source://minitest//lib/minitest.rb#541 def metadata?; end # Name of the run. # - # source://minitest//lib/minitest.rb#376 + # source://minitest//lib/minitest.rb#378 def name; end # Set the name of the run. # - # source://minitest//lib/minitest.rb#383 + # source://minitest//lib/minitest.rb#385 def name=(o); end # Did this run pass? @@ -1045,7 +1046,7 @@ class Minitest::Runnable # @raise [NotImplementedError] # @return [Boolean] # - # source://minitest//lib/minitest.rb#556 + # source://minitest//lib/minitest.rb#558 def passed?; end # Returns a single character string to print based on the result @@ -1054,14 +1055,14 @@ class Minitest::Runnable # # @raise [NotImplementedError] # - # source://minitest//lib/minitest.rb#565 + # source://minitest//lib/minitest.rb#567 def result_code; end # Runs a single method. Needs to return self. # # @raise [NotImplementedError] # - # source://minitest//lib/minitest.rb#546 + # source://minitest//lib/minitest.rb#548 def run; end # Was this run skipped? See #passed? for more information. @@ -1069,42 +1070,42 @@ class Minitest::Runnable # @raise [NotImplementedError] # @return [Boolean] # - # source://minitest//lib/minitest.rb#572 + # source://minitest//lib/minitest.rb#574 def skipped?; end # The time it took to run. # - # source://minitest//lib/minitest.rb#363 + # source://minitest//lib/minitest.rb#365 def time; end # The time it took to run. # - # source://minitest//lib/minitest.rb#363 + # source://minitest//lib/minitest.rb#365 def time=(_arg0); end - # source://minitest//lib/minitest.rb#365 + # source://minitest//lib/minitest.rb#367 def time_it; end class << self - # source://minitest//lib/minitest.rb#1226 + # source://minitest//lib/minitest.rb#1228 def inherited(klass); end # Returns all instance methods matching the pattern +re+. # - # source://minitest//lib/minitest.rb#390 + # source://minitest//lib/minitest.rb#392 def methods_matching(re); end - # source://minitest//lib/minitest.rb#464 + # source://minitest//lib/minitest.rb#466 def on_signal(name, action); end - # source://minitest//lib/minitest.rb#394 + # source://minitest//lib/minitest.rb#396 def reset; end # Responsible for running all runnable methods in a given class, # each in its own instance. Each instance is passed to the # reporter to record. # - # source://minitest//lib/minitest.rb#405 + # source://minitest//lib/minitest.rb#407 def run(reporter, options = T.unsafe(nil)); end # Runs a single method and has the reporter record the result. @@ -1112,7 +1113,7 @@ class Minitest::Runnable # that subclasses can specialize the running of an individual # test. See Minitest::ParallelTest::ClassMethods for an example. # - # source://minitest//lib/minitest.rb#445 + # source://minitest//lib/minitest.rb#447 def run_one_method(klass, method_name, reporter); end # Each subclass of Runnable is responsible for overriding this @@ -1120,33 +1121,33 @@ class Minitest::Runnable # # @raise [NotImplementedError] # - # source://minitest//lib/minitest.rb#481 + # source://minitest//lib/minitest.rb#483 def runnable_methods; end # Returns all subclasses of Runnable. # - # source://minitest//lib/minitest.rb#488 + # source://minitest//lib/minitest.rb#490 def runnables; end # Defines the order to run tests (:random by default). Override # this or use a convenience method to change it for your tests. # - # source://minitest//lib/minitest.rb#454 + # source://minitest//lib/minitest.rb#456 def test_order; end - # source://minitest//lib/minitest.rb#458 + # source://minitest//lib/minitest.rb#460 def with_info_handler(reporter, &block); end end end -# source://minitest//lib/minitest.rb#462 +# source://minitest//lib/minitest.rb#464 Minitest::Runnable::SIGNALS = T.let(T.unsafe(nil), Hash) # Assertion raised when skipping a run. # -# source://minitest//lib/minitest.rb#1050 +# source://minitest//lib/minitest.rb#1052 class Minitest::Skip < ::Minitest::Assertion - # source://minitest//lib/minitest.rb#1051 + # source://minitest//lib/minitest.rb#1053 def result_label; end end @@ -1170,123 +1171,123 @@ end # end # end # -# source://minitest//lib/minitest.rb#795 +# source://minitest//lib/minitest.rb#797 class Minitest::StatisticsReporter < ::Minitest::Reporter # @return [StatisticsReporter] a new instance of StatisticsReporter # - # source://minitest//lib/minitest.rb#844 + # source://minitest//lib/minitest.rb#846 def initialize(io = T.unsafe(nil), options = T.unsafe(nil)); end # Total number of assertions. # - # source://minitest//lib/minitest.rb#799 + # source://minitest//lib/minitest.rb#801 def assertions; end # Total number of assertions. # - # source://minitest//lib/minitest.rb#799 + # source://minitest//lib/minitest.rb#801 def assertions=(_arg0); end # Total number of test cases. # - # source://minitest//lib/minitest.rb#804 + # source://minitest//lib/minitest.rb#806 def count; end # Total number of test cases. # - # source://minitest//lib/minitest.rb#804 + # source://minitest//lib/minitest.rb#806 def count=(_arg0); end # Total number of tests that erred. # - # source://minitest//lib/minitest.rb#832 + # source://minitest//lib/minitest.rb#834 def errors; end # Total number of tests that erred. # - # source://minitest//lib/minitest.rb#832 + # source://minitest//lib/minitest.rb#834 def errors=(_arg0); end # Total number of tests that failed. # - # source://minitest//lib/minitest.rb#827 + # source://minitest//lib/minitest.rb#829 def failures; end # Total number of tests that failed. # - # source://minitest//lib/minitest.rb#827 + # source://minitest//lib/minitest.rb#829 def failures=(_arg0); end # @return [Boolean] # - # source://minitest//lib/minitest.rb#858 + # source://minitest//lib/minitest.rb#860 def passed?; end - # source://minitest//lib/minitest.rb#866 + # source://minitest//lib/minitest.rb#868 def record(result); end # Report on the tracked statistics. # - # source://minitest//lib/minitest.rb#876 + # source://minitest//lib/minitest.rb#878 def report; end # An +Array+ of test cases that failed or were skipped. # - # source://minitest//lib/minitest.rb#809 + # source://minitest//lib/minitest.rb#811 def results; end # An +Array+ of test cases that failed or were skipped. # - # source://minitest//lib/minitest.rb#809 + # source://minitest//lib/minitest.rb#811 def results=(_arg0); end # Total number of tests that where skipped. # - # source://minitest//lib/minitest.rb#842 + # source://minitest//lib/minitest.rb#844 def skips; end # Total number of tests that where skipped. # - # source://minitest//lib/minitest.rb#842 + # source://minitest//lib/minitest.rb#844 def skips=(_arg0); end - # source://minitest//lib/minitest.rb#862 + # source://minitest//lib/minitest.rb#864 def start; end # Time the test run started. If available, the monotonic clock is # used and this is a +Float+, otherwise it's an instance of # +Time+. # - # source://minitest//lib/minitest.rb#816 + # source://minitest//lib/minitest.rb#818 def start_time; end # Time the test run started. If available, the monotonic clock is # used and this is a +Float+, otherwise it's an instance of # +Time+. # - # source://minitest//lib/minitest.rb#816 + # source://minitest//lib/minitest.rb#818 def start_time=(_arg0); end # Test run time. If available, the monotonic clock is used and # this is a +Float+, otherwise it's an instance of +Time+. # - # source://minitest//lib/minitest.rb#822 + # source://minitest//lib/minitest.rb#824 def total_time; end # Test run time. If available, the monotonic clock is used and # this is a +Float+, otherwise it's an instance of +Time+. # - # source://minitest//lib/minitest.rb#822 + # source://minitest//lib/minitest.rb#824 def total_time=(_arg0); end # Total number of tests that warned. # - # source://minitest//lib/minitest.rb#837 + # source://minitest//lib/minitest.rb#839 def warnings; end # Total number of tests that warned. # - # source://minitest//lib/minitest.rb#837 + # source://minitest//lib/minitest.rb#839 def warnings=(_arg0); end end @@ -1298,36 +1299,36 @@ end # plugin, pull this out of the composite and replace it with your # own. # -# source://minitest//lib/minitest.rb#897 +# source://minitest//lib/minitest.rb#899 class Minitest::SummaryReporter < ::Minitest::StatisticsReporter - # source://minitest//lib/minitest.rb#930 + # source://minitest//lib/minitest.rb#932 def aggregated_results(io); end - # source://minitest//lib/minitest.rb#899 + # source://minitest//lib/minitest.rb#901 def old_sync; end - # source://minitest//lib/minitest.rb#899 + # source://minitest//lib/minitest.rb#901 def old_sync=(_arg0); end - # source://minitest//lib/minitest.rb#913 + # source://minitest//lib/minitest.rb#915 def report; end - # source://minitest//lib/minitest.rb#901 + # source://minitest//lib/minitest.rb#903 def start; end - # source://minitest//lib/minitest.rb#925 + # source://minitest//lib/minitest.rb#927 def statistics; end - # source://minitest//lib/minitest.rb#950 + # source://minitest//lib/minitest.rb#952 def summary; end - # source://minitest//lib/minitest.rb#898 + # source://minitest//lib/minitest.rb#900 def sync; end - # source://minitest//lib/minitest.rb#898 + # source://minitest//lib/minitest.rb#900 def sync=(_arg0); end - # source://minitest//lib/minitest.rb#946 + # source://minitest//lib/minitest.rb#948 def to_s; end end @@ -1346,24 +1347,24 @@ class Minitest::Test < ::Minitest::Runnable # LifecycleHooks # - # source://minitest//lib/minitest/test.rb#189 + # source://minitest//lib/minitest/test.rb#190 def capture_exceptions; end # source://minitest//lib/minitest/test.rb#15 def class_name; end - # source://minitest//lib/minitest/test.rb#206 + # source://minitest//lib/minitest/test.rb#207 def neuter_exception(e); end - # source://minitest//lib/minitest/test.rb#217 + # source://minitest//lib/minitest/test.rb#218 def new_exception(klass, msg, bt, kill = T.unsafe(nil)); end # Runs a single test with setup/teardown hooks. # - # source://minitest//lib/minitest/test.rb#87 + # source://minitest//lib/minitest/test.rb#88 def run; end - # source://minitest//lib/minitest/test.rb#199 + # source://minitest//lib/minitest/test.rb#200 def sanitize_exception(e); end class << self @@ -1406,7 +1407,7 @@ class Minitest::Test < ::Minitest::Runnable # #test_order, the methods are either sorted, randomized # (default), or run in parallel. # - # source://minitest//lib/minitest/test.rb#70 + # source://minitest//lib/minitest/test.rb#71 def runnable_methods; end end end @@ -1415,7 +1416,7 @@ end # meant for library writers, NOT for regular test authors. See # #before_setup for an example. # -# source://minitest//lib/minitest/test.rb#112 +# source://minitest//lib/minitest/test.rb#113 module Minitest::Test::LifecycleHooks # Runs before every test, after setup. This hook is meant for # libraries to extend minitest. It is not meant to be used by @@ -1423,7 +1424,7 @@ module Minitest::Test::LifecycleHooks # # See #before_setup for an example. # - # source://minitest//lib/minitest/test.rb#162 + # source://minitest//lib/minitest/test.rb#163 def after_setup; end # Runs after every test, after teardown. This hook is meant for @@ -1432,7 +1433,7 @@ module Minitest::Test::LifecycleHooks # # See #before_setup for an example. # - # source://minitest//lib/minitest/test.rb#186 + # source://minitest//lib/minitest/test.rb#187 def after_teardown; end # Runs before every test, before setup. This hook is meant for @@ -1467,7 +1468,7 @@ module Minitest::Test::LifecycleHooks # include MyMinitestPlugin # end # - # source://minitest//lib/minitest/test.rb#147 + # source://minitest//lib/minitest/test.rb#148 def before_setup; end # Runs after every test, before teardown. This hook is meant for @@ -1476,19 +1477,19 @@ module Minitest::Test::LifecycleHooks # # See #before_setup for an example. # - # source://minitest//lib/minitest/test.rb#171 + # source://minitest//lib/minitest/test.rb#172 def before_teardown; end # Runs before every test. Use this to set up before each test # run. # - # source://minitest//lib/minitest/test.rb#153 + # source://minitest//lib/minitest/test.rb#154 def setup; end # Runs after every test. Use this to clean up after each test # run. # - # source://minitest//lib/minitest/test.rb#177 + # source://minitest//lib/minitest/test.rb#178 def teardown; end end @@ -1503,43 +1504,43 @@ Minitest::Test::TEARDOWN_METHODS = T.let(T.unsafe(nil), Array) # Assertion wrapping an unexpected error that was raised during a run. # -# source://minitest//lib/minitest.rb#1059 +# source://minitest//lib/minitest.rb#1061 class Minitest::UnexpectedError < ::Minitest::Assertion include ::Minitest::Compress # @return [UnexpectedError] a new instance of UnexpectedError # - # source://minitest//lib/minitest.rb#1065 + # source://minitest//lib/minitest.rb#1067 def initialize(error); end - # source://minitest//lib/minitest.rb#1078 + # source://minitest//lib/minitest.rb#1080 def backtrace; end # TODO: figure out how to use `cause` instead # - # source://minitest//lib/minitest.rb#1063 + # source://minitest//lib/minitest.rb#1065 def error; end # TODO: figure out how to use `cause` instead # - # source://minitest//lib/minitest.rb#1063 + # source://minitest//lib/minitest.rb#1065 def error=(_arg0); end - # source://minitest//lib/minitest.rb#1084 + # source://minitest//lib/minitest.rb#1086 def message; end - # source://minitest//lib/minitest.rb#1090 + # source://minitest//lib/minitest.rb#1092 def result_label; end end -# source://minitest//lib/minitest.rb#1082 +# source://minitest//lib/minitest.rb#1084 Minitest::UnexpectedError::BASE_RE = T.let(T.unsafe(nil), Regexp) # Assertion raised on warning when running in -Werror mode. # -# source://minitest//lib/minitest.rb#1098 +# source://minitest//lib/minitest.rb#1100 class Minitest::UnexpectedWarning < ::Minitest::Assertion - # source://minitest//lib/minitest.rb#1099 + # source://minitest//lib/minitest.rb#1101 def result_label; end end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/parser@3.3.8.0.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/parser@3.3.9.0.rbi similarity index 100% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/parser@3.3.8.0.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/parser@3.3.9.0.rbi diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/prism@1.4.0.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/prism@1.5.2.rbi similarity index 77% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/prism@1.4.0.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/prism@1.5.2.rbi index 5a92b9dd44..e693c16c5c 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/prism@1.4.0.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/prism@1.5.2.rbi @@ -34,7 +34,7 @@ class Parser::Base; end # "Parsing Ruby is suddenly manageable!" # - You, hopefully # -# source://prism//lib/prism.rb#8 +# source://prism//lib/prism.rb#9 module Prism class << self # Mirror the Prism.dump API by using the serialization API. @@ -55,7 +55,7 @@ module Prism # # For supported options, see Prism::parse. # - # source://prism//lib/prism.rb#47 + # source://prism//lib/prism.rb#48 sig { params(source: String, options: T::Hash[Symbol, T.untyped]).returns(Prism::LexCompat::Result) } def lex_compat(source, **options); end @@ -69,7 +69,7 @@ module Prism # returns the same tokens. Raises SyntaxError if the syntax in source is # invalid. # - # source://prism//lib/prism.rb#57 + # source://prism//lib/prism.rb#58 sig { params(source: String).returns(T::Array[T.untyped]) } def lex_ripper(source); end @@ -78,7 +78,7 @@ module Prism # # Load the serialized AST using the source as a reference into a tree. # - # source://prism//lib/prism.rb#65 + # source://prism//lib/prism.rb#66 sig { params(source: String, serialized: String, freeze: T.nilable(T::Boolean)).returns(Prism::ParseResult) } def load(source, serialized, freeze = T.unsafe(nil)); end @@ -137,7 +137,7 @@ module Prism # suitable for passing into one of the Prism.* methods that accepts the # `scopes` option. # - # source://prism//lib/prism/parse_result.rb#907 + # source://prism//lib/prism/parse_result.rb#908 sig { params(locals: T::Array[Symbol], forwarding: T::Array[Symbol]).returns(Prism::Scope) } def scope(locals: T.unsafe(nil), forwarding: T.unsafe(nil)); end end @@ -152,17 +152,17 @@ end # eagerly converted to UTF-8, this class will be used as well. This is because # at that point we will treat everything as single-byte characters. # -# source://prism//lib/prism/parse_result.rb#253 +# source://prism//lib/prism/parse_result.rb#254 class Prism::ASCIISource < ::Prism::Source # Return the column number in characters for the given byte offset. # - # source://prism//lib/prism/parse_result.rb#260 + # source://prism//lib/prism/parse_result.rb#261 sig { params(byte_offset: Integer).returns(Integer) } def character_column(byte_offset); end # Return the character offset for the given byte offset. # - # source://prism//lib/prism/parse_result.rb#255 + # source://prism//lib/prism/parse_result.rb#256 sig { params(byte_offset: Integer).returns(Integer) } def character_offset(byte_offset); end @@ -170,7 +170,7 @@ class Prism::ASCIISource < ::Prism::Source # same interface. We can do this because code units are always equivalent to # byte offsets for ASCII-only sources. # - # source://prism//lib/prism/parse_result.rb#277 + # source://prism//lib/prism/parse_result.rb#278 sig do params( encoding: Encoding @@ -182,7 +182,7 @@ class Prism::ASCIISource < ::Prism::Source # `code_units_offset`, which is a more expensive operation. This is # essentially the same as `Prism::Source#column`. # - # source://prism//lib/prism/parse_result.rb#284 + # source://prism//lib/prism/parse_result.rb#285 sig { params(byte_offset: Integer, encoding: Encoding).returns(Integer) } def code_units_column(byte_offset, encoding); end @@ -193,7 +193,7 @@ class Prism::ASCIISource < ::Prism::Source # concept of code units that differs from the number of characters in other # encodings, it is not captured here. # - # source://prism//lib/prism/parse_result.rb#270 + # source://prism//lib/prism/parse_result.rb#271 sig { params(byte_offset: Integer, encoding: Encoding).returns(Integer) } def code_units_offset(byte_offset, encoding); end end @@ -203,13 +203,13 @@ end # alias $foo $bar # ^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#316 +# source://prism//lib/prism/node.rb#319 class Prism::AliasGlobalVariableNode < ::Prism::Node # Initialize a new AliasGlobalVariableNode node. # # @return [AliasGlobalVariableNode] a new instance of AliasGlobalVariableNode # - # source://prism//lib/prism/node.rb#318 + # source://prism//lib/prism/node.rb#321 sig do params( source: Prism::Source, @@ -226,36 +226,36 @@ class Prism::AliasGlobalVariableNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#411 + # source://prism//lib/prism/node.rb#414 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#329 + # source://prism//lib/prism/node.rb#332 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#334 + # source://prism//lib/prism/node.rb#337 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#344 + # source://prism//lib/prism/node.rb#347 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#339 + # source://prism//lib/prism/node.rb#342 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?new_name: GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode, ?old_name: GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode | SymbolNode | MissingNode, ?keyword_loc: Location) -> AliasGlobalVariableNode # - # source://prism//lib/prism/node.rb#349 + # source://prism//lib/prism/node.rb#352 sig do params( node_id: Integer, @@ -268,16 +268,16 @@ class Prism::AliasGlobalVariableNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), new_name: T.unsafe(nil), old_name: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#334 + # source://prism//lib/prism/node.rb#337 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, new_name: GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode, old_name: GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode | SymbolNode | MissingNode, keyword_loc: Location } # - # source://prism//lib/prism/node.rb#357 + # source://prism//lib/prism/node.rb#360 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -286,13 +286,13 @@ class Prism::AliasGlobalVariableNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#395 + # source://prism//lib/prism/node.rb#398 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#390 + # source://prism//lib/prism/node.rb#393 sig { returns(String) } def keyword; end @@ -301,7 +301,7 @@ class Prism::AliasGlobalVariableNode < ::Prism::Node # alias $foo $bar # ^^^^^ # - # source://prism//lib/prism/node.rb#377 + # source://prism//lib/prism/node.rb#380 sig { returns(Prism::Location) } def keyword_loc; end @@ -310,7 +310,7 @@ class Prism::AliasGlobalVariableNode < ::Prism::Node # alias $foo $bar # ^^^^ # - # source://prism//lib/prism/node.rb#365 + # source://prism//lib/prism/node.rb#368 sig { returns(T.any(Prism::GlobalVariableReadNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode)) } def new_name; end @@ -319,7 +319,7 @@ class Prism::AliasGlobalVariableNode < ::Prism::Node # alias $foo $bar # ^^^^ # - # source://prism//lib/prism/node.rb#371 + # source://prism//lib/prism/node.rb#374 sig do returns(T.any(Prism::GlobalVariableReadNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::SymbolNode, Prism::MissingNode)) end @@ -328,19 +328,19 @@ class Prism::AliasGlobalVariableNode < ::Prism::Node # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#385 + # source://prism//lib/prism/node.rb#388 def save_keyword_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#400 + # source://prism//lib/prism/node.rb#403 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#405 + # source://prism//lib/prism/node.rb#408 def type; end end end @@ -350,13 +350,13 @@ end # alias foo bar # ^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#423 +# source://prism//lib/prism/node.rb#426 class Prism::AliasMethodNode < ::Prism::Node # Initialize a new AliasMethodNode node. # # @return [AliasMethodNode] a new instance of AliasMethodNode # - # source://prism//lib/prism/node.rb#425 + # source://prism//lib/prism/node.rb#428 sig do params( source: Prism::Source, @@ -373,36 +373,36 @@ class Prism::AliasMethodNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#530 + # source://prism//lib/prism/node.rb#533 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#436 + # source://prism//lib/prism/node.rb#439 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#441 + # source://prism//lib/prism/node.rb#444 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#451 + # source://prism//lib/prism/node.rb#454 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#446 + # source://prism//lib/prism/node.rb#449 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?new_name: SymbolNode | InterpolatedSymbolNode, ?old_name: SymbolNode | InterpolatedSymbolNode | GlobalVariableReadNode | MissingNode, ?keyword_loc: Location) -> AliasMethodNode # - # source://prism//lib/prism/node.rb#456 + # source://prism//lib/prism/node.rb#459 sig do params( node_id: Integer, @@ -415,16 +415,16 @@ class Prism::AliasMethodNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), new_name: T.unsafe(nil), old_name: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#441 + # source://prism//lib/prism/node.rb#444 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, new_name: SymbolNode | InterpolatedSymbolNode, old_name: SymbolNode | InterpolatedSymbolNode | GlobalVariableReadNode | MissingNode, keyword_loc: Location } # - # source://prism//lib/prism/node.rb#464 + # source://prism//lib/prism/node.rb#467 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -433,13 +433,13 @@ class Prism::AliasMethodNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#514 + # source://prism//lib/prism/node.rb#517 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#509 + # source://prism//lib/prism/node.rb#512 sig { returns(String) } def keyword; end @@ -448,7 +448,7 @@ class Prism::AliasMethodNode < ::Prism::Node # alias foo bar # ^^^^^ # - # source://prism//lib/prism/node.rb#496 + # source://prism//lib/prism/node.rb#499 sig { returns(Prism::Location) } def keyword_loc; end @@ -463,7 +463,7 @@ class Prism::AliasMethodNode < ::Prism::Node # alias :"#{foo}" :"#{bar}" # ^^^^^^^^^ # - # source://prism//lib/prism/node.rb#478 + # source://prism//lib/prism/node.rb#481 sig { returns(T.any(Prism::SymbolNode, Prism::InterpolatedSymbolNode)) } def new_name; end @@ -478,7 +478,7 @@ class Prism::AliasMethodNode < ::Prism::Node # alias :"#{foo}" :"#{bar}" # ^^^^^^^^^ # - # source://prism//lib/prism/node.rb#490 + # source://prism//lib/prism/node.rb#493 sig do returns(T.any(Prism::SymbolNode, Prism::InterpolatedSymbolNode, Prism::GlobalVariableReadNode, Prism::MissingNode)) end @@ -487,19 +487,19 @@ class Prism::AliasMethodNode < ::Prism::Node # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#504 + # source://prism//lib/prism/node.rb#507 def save_keyword_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#519 + # source://prism//lib/prism/node.rb#522 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#524 + # source://prism//lib/prism/node.rb#527 def type; end end end @@ -509,13 +509,13 @@ end # foo => bar | baz # ^^^^^^^^^ # -# source://prism//lib/prism/node.rb#542 +# source://prism//lib/prism/node.rb#545 class Prism::AlternationPatternNode < ::Prism::Node # Initialize a new AlternationPatternNode node. # # @return [AlternationPatternNode] a new instance of AlternationPatternNode # - # source://prism//lib/prism/node.rb#544 + # source://prism//lib/prism/node.rb#547 sig do params( source: Prism::Source, @@ -532,36 +532,36 @@ class Prism::AlternationPatternNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#637 + # source://prism//lib/prism/node.rb#640 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#555 + # source://prism//lib/prism/node.rb#558 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#560 + # source://prism//lib/prism/node.rb#563 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#570 + # source://prism//lib/prism/node.rb#573 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#565 + # source://prism//lib/prism/node.rb#568 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?left: Prism::node, ?right: Prism::node, ?operator_loc: Location) -> AlternationPatternNode # - # source://prism//lib/prism/node.rb#575 + # source://prism//lib/prism/node.rb#578 sig do params( node_id: Integer, @@ -574,16 +574,16 @@ class Prism::AlternationPatternNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#560 + # source://prism//lib/prism/node.rb#563 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node, right: Prism::node, operator_loc: Location } # - # source://prism//lib/prism/node.rb#583 + # source://prism//lib/prism/node.rb#586 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -592,7 +592,7 @@ class Prism::AlternationPatternNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#621 + # source://prism//lib/prism/node.rb#624 sig { override.returns(String) } def inspect; end @@ -601,13 +601,13 @@ class Prism::AlternationPatternNode < ::Prism::Node # foo => bar | baz # ^^^ # - # source://prism//lib/prism/node.rb#591 + # source://prism//lib/prism/node.rb#594 sig { returns(Prism::Node) } def left; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#616 + # source://prism//lib/prism/node.rb#619 sig { returns(String) } def operator; end @@ -616,7 +616,7 @@ class Prism::AlternationPatternNode < ::Prism::Node # foo => bar | baz # ^ # - # source://prism//lib/prism/node.rb#603 + # source://prism//lib/prism/node.rb#606 sig { returns(Prism::Location) } def operator_loc; end @@ -625,26 +625,26 @@ class Prism::AlternationPatternNode < ::Prism::Node # foo => bar | baz # ^^^ # - # source://prism//lib/prism/node.rb#597 + # source://prism//lib/prism/node.rb#600 sig { returns(Prism::Node) } def right; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#611 + # source://prism//lib/prism/node.rb#614 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#626 + # source://prism//lib/prism/node.rb#629 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#631 + # source://prism//lib/prism/node.rb#634 def type; end end end @@ -654,13 +654,13 @@ end # left and right # ^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#649 +# source://prism//lib/prism/node.rb#652 class Prism::AndNode < ::Prism::Node # Initialize a new AndNode node. # # @return [AndNode] a new instance of AndNode # - # source://prism//lib/prism/node.rb#651 + # source://prism//lib/prism/node.rb#654 sig do params( source: Prism::Source, @@ -677,36 +677,36 @@ class Prism::AndNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#750 + # source://prism//lib/prism/node.rb#753 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#662 + # source://prism//lib/prism/node.rb#665 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#667 + # source://prism//lib/prism/node.rb#670 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#677 + # source://prism//lib/prism/node.rb#680 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#672 + # source://prism//lib/prism/node.rb#675 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?left: Prism::node, ?right: Prism::node, ?operator_loc: Location) -> AndNode # - # source://prism//lib/prism/node.rb#682 + # source://prism//lib/prism/node.rb#685 sig do params( node_id: Integer, @@ -719,16 +719,16 @@ class Prism::AndNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#667 + # source://prism//lib/prism/node.rb#670 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node, right: Prism::node, operator_loc: Location } # - # source://prism//lib/prism/node.rb#690 + # source://prism//lib/prism/node.rb#693 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -737,7 +737,7 @@ class Prism::AndNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#734 + # source://prism//lib/prism/node.rb#737 sig { override.returns(String) } def inspect; end @@ -749,13 +749,13 @@ class Prism::AndNode < ::Prism::Node # 1 && 2 # ^ # - # source://prism//lib/prism/node.rb#701 + # source://prism//lib/prism/node.rb#704 sig { returns(Prism::Node) } def left; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#729 + # source://prism//lib/prism/node.rb#732 sig { returns(String) } def operator; end @@ -764,7 +764,7 @@ class Prism::AndNode < ::Prism::Node # left and right # ^^^ # - # source://prism//lib/prism/node.rb#716 + # source://prism//lib/prism/node.rb#719 sig { returns(Prism::Location) } def operator_loc; end @@ -776,26 +776,26 @@ class Prism::AndNode < ::Prism::Node # 1 and 2 # ^ # - # source://prism//lib/prism/node.rb#710 + # source://prism//lib/prism/node.rb#713 sig { returns(Prism::Node) } def right; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#724 + # source://prism//lib/prism/node.rb#727 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#739 + # source://prism//lib/prism/node.rb#742 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#744 + # source://prism//lib/prism/node.rb#747 def type; end end end @@ -805,13 +805,13 @@ end # return foo, bar, baz # ^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#762 +# source://prism//lib/prism/node.rb#765 class Prism::ArgumentsNode < ::Prism::Node # Initialize a new ArgumentsNode node. # # @return [ArgumentsNode] a new instance of ArgumentsNode # - # source://prism//lib/prism/node.rb#764 + # source://prism//lib/prism/node.rb#767 sig do params( source: Prism::Source, @@ -826,12 +826,12 @@ class Prism::ArgumentsNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#853 + # source://prism//lib/prism/node.rb#856 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#773 + # source://prism//lib/prism/node.rb#776 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -840,25 +840,25 @@ class Prism::ArgumentsNode < ::Prism::Node # foo(bar, baz) # ^^^^^^^^ # - # source://prism//lib/prism/node.rb#834 + # source://prism//lib/prism/node.rb#837 sig { returns(T::Array[Prism::Node]) } def arguments; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#778 + # source://prism//lib/prism/node.rb#781 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#788 + # source://prism//lib/prism/node.rb#791 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#783 + # source://prism//lib/prism/node.rb#786 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end @@ -866,7 +866,7 @@ class Prism::ArgumentsNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#806 + # source://prism//lib/prism/node.rb#809 sig { returns(T::Boolean) } def contains_forwarding?; end @@ -874,7 +874,7 @@ class Prism::ArgumentsNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#816 + # source://prism//lib/prism/node.rb#819 sig { returns(T::Boolean) } def contains_keyword_splat?; end @@ -882,7 +882,7 @@ class Prism::ArgumentsNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#811 + # source://prism//lib/prism/node.rb#814 sig { returns(T::Boolean) } def contains_keywords?; end @@ -890,7 +890,7 @@ class Prism::ArgumentsNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#826 + # source://prism//lib/prism/node.rb#829 sig { returns(T::Boolean) } def contains_multiple_splats?; end @@ -898,13 +898,13 @@ class Prism::ArgumentsNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#821 + # source://prism//lib/prism/node.rb#824 sig { returns(T::Boolean) } def contains_splat?; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?arguments: Array[Prism::node]) -> ArgumentsNode # - # source://prism//lib/prism/node.rb#793 + # source://prism//lib/prism/node.rb#796 sig do params( node_id: Integer, @@ -915,16 +915,16 @@ class Prism::ArgumentsNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), arguments: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#778 + # source://prism//lib/prism/node.rb#781 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, arguments: Array[Prism::node] } # - # source://prism//lib/prism/node.rb#801 + # source://prism//lib/prism/node.rb#804 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -933,52 +933,52 @@ class Prism::ArgumentsNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#837 + # source://prism//lib/prism/node.rb#840 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#842 + # source://prism//lib/prism/node.rb#845 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#847 + # source://prism//lib/prism/node.rb#850 def type; end end end # Flags for arguments nodes. # -# source://prism//lib/prism/node.rb#18459 +# source://prism//lib/prism/node.rb#18630 module Prism::ArgumentsNodeFlags; end # if the arguments contain forwarding # -# source://prism//lib/prism/node.rb#18461 +# source://prism//lib/prism/node.rb#18632 Prism::ArgumentsNodeFlags::CONTAINS_FORWARDING = T.let(T.unsafe(nil), Integer) # if the arguments contain keywords # -# source://prism//lib/prism/node.rb#18464 +# source://prism//lib/prism/node.rb#18635 Prism::ArgumentsNodeFlags::CONTAINS_KEYWORDS = T.let(T.unsafe(nil), Integer) # if the arguments contain a keyword splat # -# source://prism//lib/prism/node.rb#18467 +# source://prism//lib/prism/node.rb#18638 Prism::ArgumentsNodeFlags::CONTAINS_KEYWORD_SPLAT = T.let(T.unsafe(nil), Integer) # if the arguments contain multiple splats # -# source://prism//lib/prism/node.rb#18473 +# source://prism//lib/prism/node.rb#18644 Prism::ArgumentsNodeFlags::CONTAINS_MULTIPLE_SPLATS = T.let(T.unsafe(nil), Integer) # if the arguments contain a splat # -# source://prism//lib/prism/node.rb#18470 +# source://prism//lib/prism/node.rb#18641 Prism::ArgumentsNodeFlags::CONTAINS_SPLAT = T.let(T.unsafe(nil), Integer) # Represents an array literal. This can be a regular array using brackets or a special array using % like %w or %i. @@ -986,13 +986,13 @@ Prism::ArgumentsNodeFlags::CONTAINS_SPLAT = T.let(T.unsafe(nil), Integer) # [1, 2, 3] # ^^^^^^^^^ # -# source://prism//lib/prism/node.rb#865 +# source://prism//lib/prism/node.rb#868 class Prism::ArrayNode < ::Prism::Node # Initialize a new ArrayNode node. # # @return [ArrayNode] a new instance of ArrayNode # - # source://prism//lib/prism/node.rb#867 + # source://prism//lib/prism/node.rb#870 sig do params( source: Prism::Source, @@ -1009,24 +1009,24 @@ class Prism::ArrayNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#993 + # source://prism//lib/prism/node.rb#996 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#878 + # source://prism//lib/prism/node.rb#881 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#883 + # source://prism//lib/prism/node.rb#886 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String? # - # source://prism//lib/prism/node.rb#972 + # source://prism//lib/prism/node.rb#975 sig { returns(T.nilable(String)) } def closing; end @@ -1037,19 +1037,19 @@ class Prism::ArrayNode < ::Prism::Node # %I(apple orange banana) # ")" # foo = 1, 2, 3 # nil # - # source://prism//lib/prism/node.rb#948 + # source://prism//lib/prism/node.rb#951 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#893 + # source://prism//lib/prism/node.rb#896 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#888 + # source://prism//lib/prism/node.rb#891 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end @@ -1057,13 +1057,13 @@ class Prism::ArrayNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#911 + # source://prism//lib/prism/node.rb#914 sig { returns(T::Boolean) } def contains_splat?; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?elements: Array[Prism::node], ?opening_loc: Location?, ?closing_loc: Location?) -> ArrayNode # - # source://prism//lib/prism/node.rb#898 + # source://prism//lib/prism/node.rb#901 sig do params( node_id: Integer, @@ -1076,22 +1076,22 @@ class Prism::ArrayNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), elements: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#883 + # source://prism//lib/prism/node.rb#886 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, elements: Array[Prism::node], opening_loc: Location?, closing_loc: Location? } # - # source://prism//lib/prism/node.rb#906 + # source://prism//lib/prism/node.rb#909 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # Represent the list of zero or more [non-void expressions](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression) within the array. # - # source://prism//lib/prism/node.rb#916 + # source://prism//lib/prism/node.rb#919 sig { returns(T::Array[Prism::Node]) } def elements; end @@ -1100,13 +1100,13 @@ class Prism::ArrayNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#977 + # source://prism//lib/prism/node.rb#980 sig { override.returns(String) } def inspect; end # def opening: () -> String? # - # source://prism//lib/prism/node.rb#967 + # source://prism//lib/prism/node.rb#970 sig { returns(T.nilable(String)) } def opening; end @@ -1117,44 +1117,44 @@ class Prism::ArrayNode < ::Prism::Node # %I(apple orange banana) # "%I(" # foo = 1, 2, 3 # nil # - # source://prism//lib/prism/node.rb#924 + # source://prism//lib/prism/node.rb#927 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#962 + # source://prism//lib/prism/node.rb#965 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#938 + # source://prism//lib/prism/node.rb#941 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#982 + # source://prism//lib/prism/node.rb#985 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#987 + # source://prism//lib/prism/node.rb#990 def type; end end end # Flags for array nodes. # -# source://prism//lib/prism/node.rb#18477 +# source://prism//lib/prism/node.rb#18648 module Prism::ArrayNodeFlags; end # if array contains splat nodes # -# source://prism//lib/prism/node.rb#18479 +# source://prism//lib/prism/node.rb#18650 Prism::ArrayNodeFlags::CONTAINS_SPLAT = T.let(T.unsafe(nil), Integer) # Represents an array pattern in pattern matching. @@ -1174,20 +1174,20 @@ Prism::ArrayNodeFlags::CONTAINS_SPLAT = T.let(T.unsafe(nil), Integer) # foo in Bar[1, 2, 3] # ^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#1019 +# source://prism//lib/prism/node.rb#1022 class Prism::ArrayPatternNode < ::Prism::Node # Initialize a new ArrayPatternNode node. # # @return [ArrayPatternNode] a new instance of ArrayPatternNode # - # source://prism//lib/prism/node.rb#1021 + # source://prism//lib/prism/node.rb#1024 sig do params( source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), requireds: T::Array[Prism::Node], rest: T.nilable(Prism::Node), posts: T::Array[Prism::Node], @@ -1200,24 +1200,24 @@ class Prism::ArrayPatternNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#1164 + # source://prism//lib/prism/node.rb#1176 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#1035 + # source://prism//lib/prism/node.rb#1038 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1040 + # source://prism//lib/prism/node.rb#1043 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String? # - # source://prism//lib/prism/node.rb#1143 + # source://prism//lib/prism/node.rb#1155 sig { returns(T.nilable(String)) } def closing; end @@ -1226,37 +1226,46 @@ class Prism::ArrayPatternNode < ::Prism::Node # foo in [1, 2] # ^ # - # source://prism//lib/prism/node.rb#1119 + # source://prism//lib/prism/node.rb#1131 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#1055 + # source://prism//lib/prism/node.rb#1058 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#1045 + # source://prism//lib/prism/node.rb#1048 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # attr_reader constant: ConstantReadNode | ConstantPathNode | nil + # Represents the optional constant preceding the Array + # + # foo in Bar[] + # ^^^ # - # source://prism//lib/prism/node.rb#1073 - sig { returns(T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode))) } + # foo in Bar[1, 2, 3] + # ^^^ + # + # foo in Bar::Baz[1, 2, 3] + # ^^^^^^^^ + # + # source://prism//lib/prism/node.rb#1085 + sig { returns(T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode))) } def constant; end - # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantReadNode | ConstantPathNode | nil, ?requireds: Array[Prism::node], ?rest: Prism::node?, ?posts: Array[Prism::node], ?opening_loc: Location?, ?closing_loc: Location?) -> ArrayPatternNode + # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantPathNode | ConstantReadNode | nil, ?requireds: Array[Prism::node], ?rest: Prism::node?, ?posts: Array[Prism::node], ?opening_loc: Location?, ?closing_loc: Location?) -> ArrayPatternNode # - # source://prism//lib/prism/node.rb#1060 + # source://prism//lib/prism/node.rb#1063 sig do params( node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), requireds: T::Array[Prism::Node], rest: T.nilable(Prism::Node), posts: T::Array[Prism::Node], @@ -1266,16 +1275,16 @@ class Prism::ArrayPatternNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), constant: T.unsafe(nil), requireds: T.unsafe(nil), rest: T.unsafe(nil), posts: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1040 + # source://prism//lib/prism/node.rb#1043 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, constant: ConstantReadNode | ConstantPathNode | nil, requireds: Array[Prism::node], rest: Prism::node?, posts: Array[Prism::node], opening_loc: Location?, closing_loc: Location? } + # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, constant: ConstantPathNode | ConstantReadNode | nil, requireds: Array[Prism::node], rest: Prism::node?, posts: Array[Prism::node], opening_loc: Location?, closing_loc: Location? } # - # source://prism//lib/prism/node.rb#1068 + # source://prism//lib/prism/node.rb#1071 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -1284,13 +1293,13 @@ class Prism::ArrayPatternNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#1148 + # source://prism//lib/prism/node.rb#1160 sig { override.returns(String) } def inspect; end # def opening: () -> String? # - # source://prism//lib/prism/node.rb#1138 + # source://prism//lib/prism/node.rb#1150 sig { returns(T.nilable(String)) } def opening; end @@ -1299,7 +1308,7 @@ class Prism::ArrayPatternNode < ::Prism::Node # foo in [1, 2] # ^ # - # source://prism//lib/prism/node.rb#1097 + # source://prism//lib/prism/node.rb#1109 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end @@ -1308,7 +1317,7 @@ class Prism::ArrayPatternNode < ::Prism::Node # foo in *bar, baz # ^^^ # - # source://prism//lib/prism/node.rb#1091 + # source://prism//lib/prism/node.rb#1103 sig { returns(T::Array[Prism::Node]) } def posts; end @@ -1317,7 +1326,7 @@ class Prism::ArrayPatternNode < ::Prism::Node # foo in [1, 2] # ^ ^ # - # source://prism//lib/prism/node.rb#1079 + # source://prism//lib/prism/node.rb#1091 sig { returns(T::Array[Prism::Node]) } def requireds; end @@ -1326,32 +1335,32 @@ class Prism::ArrayPatternNode < ::Prism::Node # foo in *bar # ^^^^ # - # source://prism//lib/prism/node.rb#1085 + # source://prism//lib/prism/node.rb#1097 sig { returns(T.nilable(Prism::Node)) } def rest; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#1133 + # source://prism//lib/prism/node.rb#1145 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#1111 + # source://prism//lib/prism/node.rb#1123 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#1153 + # source://prism//lib/prism/node.rb#1165 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#1158 + # source://prism//lib/prism/node.rb#1170 def type; end end end @@ -1361,13 +1370,13 @@ end # { a => b } # ^^^^^^ # -# source://prism//lib/prism/node.rb#1181 +# source://prism//lib/prism/node.rb#1193 class Prism::AssocNode < ::Prism::Node # Initialize a new AssocNode node. # # @return [AssocNode] a new instance of AssocNode # - # source://prism//lib/prism/node.rb#1183 + # source://prism//lib/prism/node.rb#1195 sig do params( source: Prism::Source, @@ -1384,36 +1393,36 @@ class Prism::AssocNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#1291 + # source://prism//lib/prism/node.rb#1303 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#1194 + # source://prism//lib/prism/node.rb#1206 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1199 + # source://prism//lib/prism/node.rb#1211 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#1209 + # source://prism//lib/prism/node.rb#1221 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#1204 + # source://prism//lib/prism/node.rb#1216 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?key: Prism::node, ?value: Prism::node, ?operator_loc: Location?) -> AssocNode # - # source://prism//lib/prism/node.rb#1214 + # source://prism//lib/prism/node.rb#1226 sig do params( node_id: Integer, @@ -1426,16 +1435,16 @@ class Prism::AssocNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), key: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1199 + # source://prism//lib/prism/node.rb#1211 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, key: Prism::node, value: Prism::node, operator_loc: Location? } # - # source://prism//lib/prism/node.rb#1222 + # source://prism//lib/prism/node.rb#1234 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -1444,7 +1453,7 @@ class Prism::AssocNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#1275 + # source://prism//lib/prism/node.rb#1287 sig { override.returns(String) } def inspect; end @@ -1459,13 +1468,13 @@ class Prism::AssocNode < ::Prism::Node # { def a; end => 1 } # ^^^^^^^^^^ # - # source://prism//lib/prism/node.rb#1236 + # source://prism//lib/prism/node.rb#1248 sig { returns(Prism::Node) } def key; end # def operator: () -> String? # - # source://prism//lib/prism/node.rb#1270 + # source://prism//lib/prism/node.rb#1282 sig { returns(T.nilable(String)) } def operator; end @@ -1474,19 +1483,19 @@ class Prism::AssocNode < ::Prism::Node # { foo => bar } # ^^ # - # source://prism//lib/prism/node.rb#1251 + # source://prism//lib/prism/node.rb#1263 sig { returns(T.nilable(Prism::Location)) } def operator_loc; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#1265 + # source://prism//lib/prism/node.rb#1277 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#1280 + # source://prism//lib/prism/node.rb#1292 sig { override.returns(Symbol) } def type; end @@ -1498,14 +1507,14 @@ class Prism::AssocNode < ::Prism::Node # { x: 1 } # ^ # - # source://prism//lib/prism/node.rb#1245 + # source://prism//lib/prism/node.rb#1257 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#1285 + # source://prism//lib/prism/node.rb#1297 def type; end end end @@ -1515,13 +1524,13 @@ end # { **foo } # ^^^^^ # -# source://prism//lib/prism/node.rb#1303 +# source://prism//lib/prism/node.rb#1315 class Prism::AssocSplatNode < ::Prism::Node # Initialize a new AssocSplatNode node. # # @return [AssocSplatNode] a new instance of AssocSplatNode # - # source://prism//lib/prism/node.rb#1305 + # source://prism//lib/prism/node.rb#1317 sig do params( source: Prism::Source, @@ -1537,36 +1546,36 @@ class Prism::AssocSplatNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#1393 + # source://prism//lib/prism/node.rb#1405 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#1315 + # source://prism//lib/prism/node.rb#1327 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1320 + # source://prism//lib/prism/node.rb#1332 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#1332 + # source://prism//lib/prism/node.rb#1344 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#1325 + # source://prism//lib/prism/node.rb#1337 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?value: Prism::node?, ?operator_loc: Location) -> AssocSplatNode # - # source://prism//lib/prism/node.rb#1337 + # source://prism//lib/prism/node.rb#1349 sig do params( node_id: Integer, @@ -1578,16 +1587,16 @@ class Prism::AssocSplatNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1320 + # source://prism//lib/prism/node.rb#1332 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Prism::node?, operator_loc: Location } # - # source://prism//lib/prism/node.rb#1345 + # source://prism//lib/prism/node.rb#1357 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -1596,13 +1605,13 @@ class Prism::AssocSplatNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#1377 + # source://prism//lib/prism/node.rb#1389 sig { override.returns(String) } def inspect; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#1372 + # source://prism//lib/prism/node.rb#1384 sig { returns(String) } def operator; end @@ -1611,19 +1620,19 @@ class Prism::AssocSplatNode < ::Prism::Node # { **x } # ^^ # - # source://prism//lib/prism/node.rb#1359 + # source://prism//lib/prism/node.rb#1371 sig { returns(Prism::Location) } def operator_loc; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#1367 + # source://prism//lib/prism/node.rb#1379 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#1382 + # source://prism//lib/prism/node.rb#1394 sig { override.returns(Symbol) } def type; end @@ -1632,21 +1641,21 @@ class Prism::AssocSplatNode < ::Prism::Node # { **foo } # ^^^ # - # source://prism//lib/prism/node.rb#1353 + # source://prism//lib/prism/node.rb#1365 sig { returns(T.nilable(Prism::Node)) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#1387 + # source://prism//lib/prism/node.rb#1399 def type; end end end # The FFI backend is used on other Ruby implementations. # -# source://prism//lib/prism.rb#81 +# source://prism//lib/prism.rb#83 Prism::BACKEND = T.let(T.unsafe(nil), Symbol) # Represents reading a reference to a field in the previous match. @@ -1654,49 +1663,49 @@ Prism::BACKEND = T.let(T.unsafe(nil), Symbol) # $' # ^^ # -# source://prism//lib/prism/node.rb#1404 +# source://prism//lib/prism/node.rb#1416 class Prism::BackReferenceReadNode < ::Prism::Node # Initialize a new BackReferenceReadNode node. # # @return [BackReferenceReadNode] a new instance of BackReferenceReadNode # - # source://prism//lib/prism/node.rb#1406 + # source://prism//lib/prism/node.rb#1418 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#1471 + # source://prism//lib/prism/node.rb#1483 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#1415 + # source://prism//lib/prism/node.rb#1427 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1420 + # source://prism//lib/prism/node.rb#1432 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#1430 + # source://prism//lib/prism/node.rb#1442 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#1425 + # source://prism//lib/prism/node.rb#1437 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol) -> BackReferenceReadNode # - # source://prism//lib/prism/node.rb#1435 + # source://prism//lib/prism/node.rb#1447 sig do params( node_id: Integer, @@ -1707,16 +1716,16 @@ class Prism::BackReferenceReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1420 + # source://prism//lib/prism/node.rb#1432 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#1443 + # source://prism//lib/prism/node.rb#1455 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -1725,7 +1734,7 @@ class Prism::BackReferenceReadNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#1455 + # source://prism//lib/prism/node.rb#1467 sig { override.returns(String) } def inspect; end @@ -1735,20 +1744,20 @@ class Prism::BackReferenceReadNode < ::Prism::Node # # $+ # name `:$+` # - # source://prism//lib/prism/node.rb#1452 + # source://prism//lib/prism/node.rb#1464 sig { returns(Symbol) } def name; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#1460 + # source://prism//lib/prism/node.rb#1472 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#1465 + # source://prism//lib/prism/node.rb#1477 def type; end end end @@ -1758,24 +1767,24 @@ end # implement each one that they need. For a default implementation that # continues walking the tree, see the Visitor class. # -# source://prism//lib/prism/visitor.rb#14 +# source://prism//lib/prism/visitor.rb#17 class Prism::BasicVisitor # Calls `accept` on the given node if it is not `nil`, which in turn should # call back into this visitor by calling the appropriate `visit_*` method. # - # source://prism//lib/prism/visitor.rb#17 + # source://prism//lib/prism/visitor.rb#20 sig { params(node: T.nilable(Prism::Node)).void } def visit(node); end # Visits each node in `nodes` by calling `accept` on each one. # - # source://prism//lib/prism/visitor.rb#23 + # source://prism//lib/prism/visitor.rb#26 sig { params(nodes: T::Array[T.nilable(Prism::Node)]).void } def visit_all(nodes); end # Visits the child nodes of `node` by calling `accept` on each one. # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#32 sig { params(node: Prism::Node).void } def visit_child_nodes(node); end end @@ -1787,13 +1796,13 @@ end # end # ^^^^^ # -# source://prism//lib/prism/node.rb#1483 +# source://prism//lib/prism/node.rb#1495 class Prism::BeginNode < ::Prism::Node # Initialize a new BeginNode node. # # @return [BeginNode] a new instance of BeginNode # - # source://prism//lib/prism/node.rb#1485 + # source://prism//lib/prism/node.rb#1497 sig do params( source: Prism::Source, @@ -1813,18 +1822,18 @@ class Prism::BeginNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#1631 + # source://prism//lib/prism/node.rb#1643 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#1499 + # source://prism//lib/prism/node.rb#1511 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # def begin_keyword: () -> String? # - # source://prism//lib/prism/node.rb#1605 + # source://prism//lib/prism/node.rb#1617 sig { returns(T.nilable(String)) } def begin_keyword; end @@ -1833,31 +1842,31 @@ class Prism::BeginNode < ::Prism::Node # begin x end # ^^^^^ # - # source://prism//lib/prism/node.rb#1540 + # source://prism//lib/prism/node.rb#1552 sig { returns(T.nilable(Prism::Location)) } def begin_keyword_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1504 + # source://prism//lib/prism/node.rb#1516 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#1519 + # source://prism//lib/prism/node.rb#1531 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#1509 + # source://prism//lib/prism/node.rb#1521 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?begin_keyword_loc: Location?, ?statements: StatementsNode?, ?rescue_clause: RescueNode?, ?else_clause: ElseNode?, ?ensure_clause: EnsureNode?, ?end_keyword_loc: Location?) -> BeginNode # - # source://prism//lib/prism/node.rb#1524 + # source://prism//lib/prism/node.rb#1536 sig do params( node_id: Integer, @@ -1873,16 +1882,16 @@ class Prism::BeginNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), begin_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), rescue_clause: T.unsafe(nil), else_clause: T.unsafe(nil), ensure_clause: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1504 + # source://prism//lib/prism/node.rb#1516 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, begin_keyword_loc: Location?, statements: StatementsNode?, rescue_clause: RescueNode?, else_clause: ElseNode?, ensure_clause: EnsureNode?, end_keyword_loc: Location? } # - # source://prism//lib/prism/node.rb#1532 + # source://prism//lib/prism/node.rb#1544 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -1891,13 +1900,13 @@ class Prism::BeginNode < ::Prism::Node # begin x; rescue y; else z; end # ^^^^^^ # - # source://prism//lib/prism/node.rb#1574 + # source://prism//lib/prism/node.rb#1586 sig { returns(T.nilable(Prism::ElseNode)) } def else_clause; end # def end_keyword: () -> String? # - # source://prism//lib/prism/node.rb#1610 + # source://prism//lib/prism/node.rb#1622 sig { returns(T.nilable(String)) } def end_keyword; end @@ -1906,7 +1915,7 @@ class Prism::BeginNode < ::Prism::Node # begin x end # ^^^ # - # source://prism//lib/prism/node.rb#1586 + # source://prism//lib/prism/node.rb#1598 sig { returns(T.nilable(Prism::Location)) } def end_keyword_loc; end @@ -1915,7 +1924,7 @@ class Prism::BeginNode < ::Prism::Node # begin x; ensure y; end # ^^^^^^^^ # - # source://prism//lib/prism/node.rb#1580 + # source://prism//lib/prism/node.rb#1592 sig { returns(T.nilable(Prism::EnsureNode)) } def ensure_clause; end @@ -1924,11 +1933,11 @@ class Prism::BeginNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#1615 + # source://prism//lib/prism/node.rb#1627 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/parse_result/newlines.rb#79 + # source://prism//lib/prism/parse_result/newlines.rb#80 def newline_flag!(lines); end # Represents the rescue clause within the begin block. @@ -1936,20 +1945,20 @@ class Prism::BeginNode < ::Prism::Node # begin x; rescue y; end # ^^^^^^^^ # - # source://prism//lib/prism/node.rb#1568 + # source://prism//lib/prism/node.rb#1580 sig { returns(T.nilable(Prism::RescueNode)) } def rescue_clause; end # Save the begin_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#1554 + # source://prism//lib/prism/node.rb#1566 def save_begin_keyword_loc(repository); end # Save the end_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#1600 + # source://prism//lib/prism/node.rb#1612 def save_end_keyword_loc(repository); end # Represents the statements within the begin block. @@ -1957,20 +1966,20 @@ class Prism::BeginNode < ::Prism::Node # begin x end # ^ # - # source://prism//lib/prism/node.rb#1562 + # source://prism//lib/prism/node.rb#1574 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#1620 + # source://prism//lib/prism/node.rb#1632 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#1625 + # source://prism//lib/prism/node.rb#1637 def type; end end end @@ -1980,13 +1989,13 @@ end # bar(&args) # ^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#1646 +# source://prism//lib/prism/node.rb#1658 class Prism::BlockArgumentNode < ::Prism::Node # Initialize a new BlockArgumentNode node. # # @return [BlockArgumentNode] a new instance of BlockArgumentNode # - # source://prism//lib/prism/node.rb#1648 + # source://prism//lib/prism/node.rb#1660 sig do params( source: Prism::Source, @@ -2002,36 +2011,36 @@ class Prism::BlockArgumentNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#1736 + # source://prism//lib/prism/node.rb#1748 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#1658 + # source://prism//lib/prism/node.rb#1670 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1663 + # source://prism//lib/prism/node.rb#1675 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#1675 + # source://prism//lib/prism/node.rb#1687 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#1668 + # source://prism//lib/prism/node.rb#1680 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?expression: Prism::node?, ?operator_loc: Location) -> BlockArgumentNode # - # source://prism//lib/prism/node.rb#1680 + # source://prism//lib/prism/node.rb#1692 sig do params( node_id: Integer, @@ -2043,16 +2052,16 @@ class Prism::BlockArgumentNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), expression: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1663 + # source://prism//lib/prism/node.rb#1675 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, expression: Prism::node?, operator_loc: Location } # - # source://prism//lib/prism/node.rb#1688 + # source://prism//lib/prism/node.rb#1700 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -2061,7 +2070,7 @@ class Prism::BlockArgumentNode < ::Prism::Node # foo(&args) # ^^^^^ # - # source://prism//lib/prism/node.rb#1696 + # source://prism//lib/prism/node.rb#1708 sig { returns(T.nilable(Prism::Node)) } def expression; end @@ -2070,13 +2079,13 @@ class Prism::BlockArgumentNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#1720 + # source://prism//lib/prism/node.rb#1732 sig { override.returns(String) } def inspect; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#1715 + # source://prism//lib/prism/node.rb#1727 sig { returns(String) } def operator; end @@ -2085,26 +2094,26 @@ class Prism::BlockArgumentNode < ::Prism::Node # foo(&args) # ^ # - # source://prism//lib/prism/node.rb#1702 + # source://prism//lib/prism/node.rb#1714 sig { returns(Prism::Location) } def operator_loc; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#1710 + # source://prism//lib/prism/node.rb#1722 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#1725 + # source://prism//lib/prism/node.rb#1737 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#1730 + # source://prism//lib/prism/node.rb#1742 def type; end end end @@ -2114,49 +2123,49 @@ end # a { |; b| } # ^ # -# source://prism//lib/prism/node.rb#1747 +# source://prism//lib/prism/node.rb#1759 class Prism::BlockLocalVariableNode < ::Prism::Node # Initialize a new BlockLocalVariableNode node. # # @return [BlockLocalVariableNode] a new instance of BlockLocalVariableNode # - # source://prism//lib/prism/node.rb#1749 + # source://prism//lib/prism/node.rb#1761 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#1818 + # source://prism//lib/prism/node.rb#1830 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#1758 + # source://prism//lib/prism/node.rb#1770 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1763 + # source://prism//lib/prism/node.rb#1775 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#1773 + # source://prism//lib/prism/node.rb#1785 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#1768 + # source://prism//lib/prism/node.rb#1780 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol) -> BlockLocalVariableNode # - # source://prism//lib/prism/node.rb#1778 + # source://prism//lib/prism/node.rb#1790 sig do params( node_id: Integer, @@ -2167,16 +2176,16 @@ class Prism::BlockLocalVariableNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1763 + # source://prism//lib/prism/node.rb#1775 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#1786 + # source://prism//lib/prism/node.rb#1798 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -2185,7 +2194,7 @@ class Prism::BlockLocalVariableNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#1802 + # source://prism//lib/prism/node.rb#1814 sig { override.returns(String) } def inspect; end @@ -2194,7 +2203,7 @@ class Prism::BlockLocalVariableNode < ::Prism::Node # a { |; b| } # name `:b` # ^ # - # source://prism//lib/prism/node.rb#1799 + # source://prism//lib/prism/node.rb#1811 sig { returns(Symbol) } def name; end @@ -2202,20 +2211,20 @@ class Prism::BlockLocalVariableNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#1791 + # source://prism//lib/prism/node.rb#1803 sig { returns(T::Boolean) } def repeated_parameter?; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#1807 + # source://prism//lib/prism/node.rb#1819 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#1812 + # source://prism//lib/prism/node.rb#1824 def type; end end end @@ -2225,13 +2234,13 @@ end # [1, 2, 3].each { |i| puts x } # ^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#1829 +# source://prism//lib/prism/node.rb#1841 class Prism::BlockNode < ::Prism::Node # Initialize a new BlockNode node. # # @return [BlockNode] a new instance of BlockNode # - # source://prism//lib/prism/node.rb#1831 + # source://prism//lib/prism/node.rb#1843 sig do params( source: Prism::Source, @@ -2250,12 +2259,12 @@ class Prism::BlockNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#1960 + # source://prism//lib/prism/node.rb#1972 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#1844 + # source://prism//lib/prism/node.rb#1856 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -2264,19 +2273,19 @@ class Prism::BlockNode < ::Prism::Node # [1, 2, 3].each { |i| puts x } # ^^^^^^ # - # source://prism//lib/prism/node.rb#1899 + # source://prism//lib/prism/node.rb#1911 sig { returns(T.nilable(T.any(Prism::StatementsNode, Prism::BeginNode))) } def body; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1849 + # source://prism//lib/prism/node.rb#1861 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#1939 + # source://prism//lib/prism/node.rb#1951 sig { returns(String) } def closing; end @@ -2285,25 +2294,25 @@ class Prism::BlockNode < ::Prism::Node # [1, 2, 3].each { |i| puts x } # ^ # - # source://prism//lib/prism/node.rb#1921 + # source://prism//lib/prism/node.rb#1933 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#1862 + # source://prism//lib/prism/node.rb#1874 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#1854 + # source://prism//lib/prism/node.rb#1866 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?locals: Array[Symbol], ?parameters: BlockParametersNode | NumberedParametersNode | ItParametersNode | nil, ?body: StatementsNode | BeginNode | nil, ?opening_loc: Location, ?closing_loc: Location) -> BlockNode # - # source://prism//lib/prism/node.rb#1867 + # source://prism//lib/prism/node.rb#1879 sig do params( node_id: Integer, @@ -2318,16 +2327,16 @@ class Prism::BlockNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), parameters: T.unsafe(nil), body: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1849 + # source://prism//lib/prism/node.rb#1861 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], parameters: BlockParametersNode | NumberedParametersNode | ItParametersNode | nil, body: StatementsNode | BeginNode | nil, opening_loc: Location, closing_loc: Location } # - # source://prism//lib/prism/node.rb#1875 + # source://prism//lib/prism/node.rb#1887 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -2336,7 +2345,7 @@ class Prism::BlockNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#1944 + # source://prism//lib/prism/node.rb#1956 sig { override.returns(String) } def inspect; end @@ -2345,13 +2354,13 @@ class Prism::BlockNode < ::Prism::Node # [1, 2, 3].each { |i| puts x } # locals: [:i] # ^ # - # source://prism//lib/prism/node.rb#1883 + # source://prism//lib/prism/node.rb#1895 sig { returns(T::Array[Symbol]) } def locals; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#1934 + # source://prism//lib/prism/node.rb#1946 sig { returns(String) } def opening; end @@ -2360,7 +2369,7 @@ class Prism::BlockNode < ::Prism::Node # [1, 2, 3].each { |i| puts x } # ^ # - # source://prism//lib/prism/node.rb#1905 + # source://prism//lib/prism/node.rb#1917 sig { returns(Prism::Location) } def opening_loc; end @@ -2373,32 +2382,32 @@ class Prism::BlockNode < ::Prism::Node # [1, 2, 3].each { puts it } # ^^^^^^^^^^^ # - # source://prism//lib/prism/node.rb#1893 + # source://prism//lib/prism/node.rb#1905 sig { returns(T.nilable(T.any(Prism::BlockParametersNode, Prism::NumberedParametersNode, Prism::ItParametersNode))) } def parameters; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#1929 + # source://prism//lib/prism/node.rb#1941 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#1913 + # source://prism//lib/prism/node.rb#1925 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#1949 + # source://prism//lib/prism/node.rb#1961 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#1954 + # source://prism//lib/prism/node.rb#1966 def type; end end end @@ -2409,13 +2418,13 @@ end # ^^ # end # -# source://prism//lib/prism/node.rb#1976 +# source://prism//lib/prism/node.rb#1988 class Prism::BlockParameterNode < ::Prism::Node # Initialize a new BlockParameterNode node. # # @return [BlockParameterNode] a new instance of BlockParameterNode # - # source://prism//lib/prism/node.rb#1978 + # source://prism//lib/prism/node.rb#1990 sig do params( source: Prism::Source, @@ -2432,36 +2441,36 @@ class Prism::BlockParameterNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#2094 + # source://prism//lib/prism/node.rb#2106 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#1989 + # source://prism//lib/prism/node.rb#2001 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1994 + # source://prism//lib/prism/node.rb#2006 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#2004 + # source://prism//lib/prism/node.rb#2016 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#1999 + # source://prism//lib/prism/node.rb#2011 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol?, ?name_loc: Location?, ?operator_loc: Location) -> BlockParameterNode # - # source://prism//lib/prism/node.rb#2009 + # source://prism//lib/prism/node.rb#2021 sig do params( node_id: Integer, @@ -2474,16 +2483,16 @@ class Prism::BlockParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#1994 + # source://prism//lib/prism/node.rb#2006 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol?, name_loc: Location?, operator_loc: Location } # - # source://prism//lib/prism/node.rb#2017 + # source://prism//lib/prism/node.rb#2029 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -2492,7 +2501,7 @@ class Prism::BlockParameterNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#2078 + # source://prism//lib/prism/node.rb#2090 sig { override.returns(String) } def inspect; end @@ -2502,7 +2511,7 @@ class Prism::BlockParameterNode < ::Prism::Node # ^ # end # - # source://prism//lib/prism/node.rb#2031 + # source://prism//lib/prism/node.rb#2043 sig { returns(T.nilable(Symbol)) } def name; end @@ -2511,13 +2520,13 @@ class Prism::BlockParameterNode < ::Prism::Node # def a(&b) # ^ # - # source://prism//lib/prism/node.rb#2037 + # source://prism//lib/prism/node.rb#2049 sig { returns(T.nilable(Prism::Location)) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#2073 + # source://prism//lib/prism/node.rb#2085 sig { returns(String) } def operator; end @@ -2527,7 +2536,7 @@ class Prism::BlockParameterNode < ::Prism::Node # ^ # end # - # source://prism//lib/prism/node.rb#2060 + # source://prism//lib/prism/node.rb#2072 sig { returns(Prism::Location) } def operator_loc; end @@ -2535,32 +2544,32 @@ class Prism::BlockParameterNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2022 + # source://prism//lib/prism/node.rb#2034 sig { returns(T::Boolean) } def repeated_parameter?; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2051 + # source://prism//lib/prism/node.rb#2063 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2068 + # source://prism//lib/prism/node.rb#2080 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#2083 + # source://prism//lib/prism/node.rb#2095 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#2088 + # source://prism//lib/prism/node.rb#2100 def type; end end end @@ -2574,13 +2583,13 @@ end # ^^^^^^^^^^^^^^^^^ # end # -# source://prism//lib/prism/node.rb#2111 +# source://prism//lib/prism/node.rb#2123 class Prism::BlockParametersNode < ::Prism::Node # Initialize a new BlockParametersNode node. # # @return [BlockParametersNode] a new instance of BlockParametersNode # - # source://prism//lib/prism/node.rb#2113 + # source://prism//lib/prism/node.rb#2125 sig do params( source: Prism::Source, @@ -2598,24 +2607,24 @@ class Prism::BlockParametersNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#2259 + # source://prism//lib/prism/node.rb#2271 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#2125 + # source://prism//lib/prism/node.rb#2137 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#2130 + # source://prism//lib/prism/node.rb#2142 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String? # - # source://prism//lib/prism/node.rb#2238 + # source://prism//lib/prism/node.rb#2250 sig { returns(T.nilable(String)) } def closing; end @@ -2628,25 +2637,25 @@ class Prism::BlockParametersNode < ::Prism::Node # ^ # end # - # source://prism//lib/prism/node.rb#2214 + # source://prism//lib/prism/node.rb#2226 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#2143 + # source://prism//lib/prism/node.rb#2155 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#2135 + # source://prism//lib/prism/node.rb#2147 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?parameters: ParametersNode?, ?locals: Array[BlockLocalVariableNode], ?opening_loc: Location?, ?closing_loc: Location?) -> BlockParametersNode # - # source://prism//lib/prism/node.rb#2148 + # source://prism//lib/prism/node.rb#2160 sig do params( node_id: Integer, @@ -2660,16 +2669,16 @@ class Prism::BlockParametersNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), parameters: T.unsafe(nil), locals: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#2130 + # source://prism//lib/prism/node.rb#2142 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, parameters: ParametersNode?, locals: Array[BlockLocalVariableNode], opening_loc: Location?, closing_loc: Location? } # - # source://prism//lib/prism/node.rb#2156 + # source://prism//lib/prism/node.rb#2168 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -2678,7 +2687,7 @@ class Prism::BlockParametersNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#2243 + # source://prism//lib/prism/node.rb#2255 sig { override.returns(String) } def inspect; end @@ -2691,13 +2700,13 @@ class Prism::BlockParametersNode < ::Prism::Node # ^^^^^ # end # - # source://prism//lib/prism/node.rb#2178 + # source://prism//lib/prism/node.rb#2190 sig { returns(T::Array[Prism::BlockLocalVariableNode]) } def locals; end # def opening: () -> String? # - # source://prism//lib/prism/node.rb#2233 + # source://prism//lib/prism/node.rb#2245 sig { returns(T.nilable(String)) } def opening; end @@ -2710,7 +2719,7 @@ class Prism::BlockParametersNode < ::Prism::Node # ^ # end # - # source://prism//lib/prism/node.rb#2188 + # source://prism//lib/prism/node.rb#2200 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end @@ -2723,32 +2732,32 @@ class Prism::BlockParametersNode < ::Prism::Node # ^^^^^^^^ # end # - # source://prism//lib/prism/node.rb#2168 + # source://prism//lib/prism/node.rb#2180 sig { returns(T.nilable(Prism::ParametersNode)) } def parameters; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2228 + # source://prism//lib/prism/node.rb#2240 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2202 + # source://prism//lib/prism/node.rb#2214 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#2248 + # source://prism//lib/prism/node.rb#2260 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#2253 + # source://prism//lib/prism/node.rb#2265 def type; end end end @@ -2758,13 +2767,13 @@ end # break foo # ^^^^^^^^^ # -# source://prism//lib/prism/node.rb#2273 +# source://prism//lib/prism/node.rb#2285 class Prism::BreakNode < ::Prism::Node # Initialize a new BreakNode node. # # @return [BreakNode] a new instance of BreakNode # - # source://prism//lib/prism/node.rb#2275 + # source://prism//lib/prism/node.rb#2287 sig do params( source: Prism::Source, @@ -2780,12 +2789,12 @@ class Prism::BreakNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#2363 + # source://prism//lib/prism/node.rb#2375 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#2285 + # source://prism//lib/prism/node.rb#2297 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -2794,31 +2803,31 @@ class Prism::BreakNode < ::Prism::Node # break foo # ^^^ # - # source://prism//lib/prism/node.rb#2323 + # source://prism//lib/prism/node.rb#2335 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#2290 + # source://prism//lib/prism/node.rb#2302 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#2302 + # source://prism//lib/prism/node.rb#2314 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#2295 + # source://prism//lib/prism/node.rb#2307 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?arguments: ArgumentsNode?, ?keyword_loc: Location) -> BreakNode # - # source://prism//lib/prism/node.rb#2307 + # source://prism//lib/prism/node.rb#2319 sig do params( node_id: Integer, @@ -2830,16 +2839,16 @@ class Prism::BreakNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), arguments: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#2290 + # source://prism//lib/prism/node.rb#2302 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, arguments: ArgumentsNode?, keyword_loc: Location } # - # source://prism//lib/prism/node.rb#2315 + # source://prism//lib/prism/node.rb#2327 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -2848,13 +2857,13 @@ class Prism::BreakNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#2347 + # source://prism//lib/prism/node.rb#2359 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#2342 + # source://prism//lib/prism/node.rb#2354 sig { returns(String) } def keyword; end @@ -2863,26 +2872,26 @@ class Prism::BreakNode < ::Prism::Node # break foo # ^^^^^ # - # source://prism//lib/prism/node.rb#2329 + # source://prism//lib/prism/node.rb#2341 sig { returns(Prism::Location) } def keyword_loc; end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2337 + # source://prism//lib/prism/node.rb#2349 def save_keyword_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#2352 + # source://prism//lib/prism/node.rb#2364 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#2357 + # source://prism//lib/prism/node.rb#2369 def type; end end end @@ -2892,13 +2901,13 @@ end # foo.bar &&= value # ^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#2374 +# source://prism//lib/prism/node.rb#2386 class Prism::CallAndWriteNode < ::Prism::Node # Initialize a new CallAndWriteNode node. # # @return [CallAndWriteNode] a new instance of CallAndWriteNode # - # source://prism//lib/prism/node.rb#2376 + # source://prism//lib/prism/node.rb#2388 sig do params( source: Prism::Source, @@ -2919,12 +2928,12 @@ class Prism::CallAndWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#2562 + # source://prism//lib/prism/node.rb#2574 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#2391 + # source://prism//lib/prism/node.rb#2403 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -2932,13 +2941,13 @@ class Prism::CallAndWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2437 + # source://prism//lib/prism/node.rb#2449 sig { returns(T::Boolean) } def attribute_write?; end # def call_operator: () -> String? # - # source://prism//lib/prism/node.rb#2531 + # source://prism//lib/prism/node.rb#2543 sig { returns(T.nilable(String)) } def call_operator; end @@ -2947,31 +2956,31 @@ class Prism::CallAndWriteNode < ::Prism::Node # foo.bar &&= value # ^ # - # source://prism//lib/prism/node.rb#2456 + # source://prism//lib/prism/node.rb#2468 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#2396 + # source://prism//lib/prism/node.rb#2408 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#2409 + # source://prism//lib/prism/node.rb#2421 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#2401 + # source://prism//lib/prism/node.rb#2413 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node?, ?call_operator_loc: Location?, ?message_loc: Location?, ?read_name: Symbol, ?write_name: Symbol, ?operator_loc: Location, ?value: Prism::node) -> CallAndWriteNode # - # source://prism//lib/prism/node.rb#2414 + # source://prism//lib/prism/node.rb#2426 sig do params( node_id: Integer, @@ -2988,16 +2997,16 @@ class Prism::CallAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), message_loc: T.unsafe(nil), read_name: T.unsafe(nil), write_name: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#2396 + # source://prism//lib/prism/node.rb#2408 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, message_loc: Location?, read_name: Symbol, write_name: Symbol, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#2422 + # source://prism//lib/prism/node.rb#2434 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -3008,19 +3017,19 @@ class Prism::CallAndWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2442 + # source://prism//lib/prism/node.rb#2454 sig { returns(T::Boolean) } def ignore_visibility?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#2546 + # source://prism//lib/prism/node.rb#2558 sig { override.returns(String) } def inspect; end # def message: () -> String? # - # source://prism//lib/prism/node.rb#2536 + # source://prism//lib/prism/node.rb#2548 sig { returns(T.nilable(String)) } def message; end @@ -3029,13 +3038,13 @@ class Prism::CallAndWriteNode < ::Prism::Node # foo.bar &&= value # ^^^ # - # source://prism//lib/prism/node.rb#2478 + # source://prism//lib/prism/node.rb#2490 sig { returns(T.nilable(Prism::Location)) } def message_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#2541 + # source://prism//lib/prism/node.rb#2553 sig { returns(String) } def operator; end @@ -3044,7 +3053,7 @@ class Prism::CallAndWriteNode < ::Prism::Node # foo.bar &&= value # ^^^ # - # source://prism//lib/prism/node.rb#2512 + # source://prism//lib/prism/node.rb#2524 sig { returns(Prism::Location) } def operator_loc; end @@ -3053,7 +3062,7 @@ class Prism::CallAndWriteNode < ::Prism::Node # foo.bar &&= value # read_name `:bar` # ^^^ # - # source://prism//lib/prism/node.rb#2500 + # source://prism//lib/prism/node.rb#2512 sig { returns(Symbol) } def read_name; end @@ -3062,7 +3071,7 @@ class Prism::CallAndWriteNode < ::Prism::Node # foo.bar &&= value # ^^^ # - # source://prism//lib/prism/node.rb#2450 + # source://prism//lib/prism/node.rb#2462 sig { returns(T.nilable(Prism::Node)) } def receiver; end @@ -3070,31 +3079,31 @@ class Prism::CallAndWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2427 + # source://prism//lib/prism/node.rb#2439 sig { returns(T::Boolean) } def safe_navigation?; end # Save the call_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2470 + # source://prism//lib/prism/node.rb#2482 def save_call_operator_loc(repository); end # Save the message_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2492 + # source://prism//lib/prism/node.rb#2504 def save_message_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2520 + # source://prism//lib/prism/node.rb#2532 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#2551 + # source://prism//lib/prism/node.rb#2563 sig { override.returns(Symbol) } def type; end @@ -3103,7 +3112,7 @@ class Prism::CallAndWriteNode < ::Prism::Node # foo.bar &&= value # ^^^^^ # - # source://prism//lib/prism/node.rb#2528 + # source://prism//lib/prism/node.rb#2540 sig { returns(Prism::Node) } def value; end @@ -3111,7 +3120,7 @@ class Prism::CallAndWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2432 + # source://prism//lib/prism/node.rb#2444 sig { returns(T::Boolean) } def variable_call?; end @@ -3120,14 +3129,14 @@ class Prism::CallAndWriteNode < ::Prism::Node # foo.bar &&= value # write_name `:bar=` # ^^^ # - # source://prism//lib/prism/node.rb#2506 + # source://prism//lib/prism/node.rb#2518 sig { returns(Symbol) } def write_name; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#2556 + # source://prism//lib/prism/node.rb#2568 def type; end end end @@ -3152,13 +3161,13 @@ end # foo&.bar # ^^^^^^^^ # -# source://prism//lib/prism/node.rb#2594 +# source://prism//lib/prism/node.rb#2606 class Prism::CallNode < ::Prism::Node # Initialize a new CallNode node. # # @return [CallNode] a new instance of CallNode # - # source://prism//lib/prism/node.rb#2596 + # source://prism//lib/prism/node.rb#2608 sig do params( source: Prism::Source, @@ -3180,12 +3189,12 @@ class Prism::CallNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#2825 + # source://prism//lib/prism/node.rb#2837 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#2612 + # source://prism//lib/prism/node.rb#2624 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -3194,7 +3203,7 @@ class Prism::CallNode < ::Prism::Node # foo(bar) # ^^^ # - # source://prism//lib/prism/node.rb#2758 + # source://prism//lib/prism/node.rb#2770 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end @@ -3202,7 +3211,7 @@ class Prism::CallNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2659 + # source://prism//lib/prism/node.rb#2671 sig { returns(T::Boolean) } def attribute_write?; end @@ -3211,13 +3220,13 @@ class Prism::CallNode < ::Prism::Node # foo { |a| a } # ^^^^^^^^^ # - # source://prism//lib/prism/node.rb#2786 + # source://prism//lib/prism/node.rb#2798 sig { returns(T.nilable(T.any(Prism::BlockNode, Prism::BlockArgumentNode))) } def block; end # def call_operator: () -> String? # - # source://prism//lib/prism/node.rb#2789 + # source://prism//lib/prism/node.rb#2801 sig { returns(T.nilable(String)) } def call_operator; end @@ -3229,19 +3238,19 @@ class Prism::CallNode < ::Prism::Node # foo&.bar # ^^ # - # source://prism//lib/prism/node.rb#2687 + # source://prism//lib/prism/node.rb#2699 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#2617 + # source://prism//lib/prism/node.rb#2629 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String? # - # source://prism//lib/prism/node.rb#2804 + # source://prism//lib/prism/node.rb#2816 sig { returns(T.nilable(String)) } def closing; end @@ -3250,25 +3259,25 @@ class Prism::CallNode < ::Prism::Node # foo(bar) # ^ # - # source://prism//lib/prism/node.rb#2764 + # source://prism//lib/prism/node.rb#2776 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#2631 + # source://prism//lib/prism/node.rb#2643 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#2622 + # source://prism//lib/prism/node.rb#2634 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node?, ?call_operator_loc: Location?, ?name: Symbol, ?message_loc: Location?, ?opening_loc: Location?, ?arguments: ArgumentsNode?, ?closing_loc: Location?, ?block: BlockNode | BlockArgumentNode | nil) -> CallNode # - # source://prism//lib/prism/node.rb#2636 + # source://prism//lib/prism/node.rb#2648 sig do params( node_id: Integer, @@ -3286,16 +3295,16 @@ class Prism::CallNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), name: T.unsafe(nil), message_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#2617 + # source://prism//lib/prism/node.rb#2629 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, name: Symbol, message_loc: Location?, opening_loc: Location?, arguments: ArgumentsNode?, closing_loc: Location?, block: BlockNode | BlockArgumentNode | nil } # - # source://prism//lib/prism/node.rb#2644 + # source://prism//lib/prism/node.rb#2656 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -3312,7 +3321,7 @@ class Prism::CallNode < ::Prism::Node # sometimes you want the location of the full message including the inner # space and the = sign. This method provides that. # - # source://prism//lib/prism/node_ext.rb#331 + # source://prism//lib/prism/node_ext.rb#334 sig { returns(T.nilable(Prism::Location)) } def full_message_loc; end @@ -3320,19 +3329,19 @@ class Prism::CallNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2664 + # source://prism//lib/prism/node.rb#2676 sig { returns(T::Boolean) } def ignore_visibility?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#2809 + # source://prism//lib/prism/node.rb#2821 sig { override.returns(String) } def inspect; end # def message: () -> String? # - # source://prism//lib/prism/node.rb#2794 + # source://prism//lib/prism/node.rb#2806 sig { returns(T.nilable(String)) } def message; end @@ -3341,7 +3350,7 @@ class Prism::CallNode < ::Prism::Node # foo.bar # ^^^ # - # source://prism//lib/prism/node.rb#2715 + # source://prism//lib/prism/node.rb#2727 sig { returns(T.nilable(Prism::Location)) } def message_loc; end @@ -3350,13 +3359,13 @@ class Prism::CallNode < ::Prism::Node # foo.bar # name `:foo` # ^^^ # - # source://prism//lib/prism/node.rb#2709 + # source://prism//lib/prism/node.rb#2721 sig { returns(Symbol) } def name; end # def opening: () -> String? # - # source://prism//lib/prism/node.rb#2799 + # source://prism//lib/prism/node.rb#2811 sig { returns(T.nilable(String)) } def opening; end @@ -3364,7 +3373,7 @@ class Prism::CallNode < ::Prism::Node # foo(bar) # ^ # - # source://prism//lib/prism/node.rb#2736 + # source://prism//lib/prism/node.rb#2748 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end @@ -3379,7 +3388,7 @@ class Prism::CallNode < ::Prism::Node # foo + bar # ^^^ # - # source://prism//lib/prism/node.rb#2678 + # source://prism//lib/prism/node.rb#2690 sig { returns(T.nilable(Prism::Node)) } def receiver; end @@ -3387,37 +3396,37 @@ class Prism::CallNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2649 + # source://prism//lib/prism/node.rb#2661 sig { returns(T::Boolean) } def safe_navigation?; end # Save the call_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2701 + # source://prism//lib/prism/node.rb#2713 def save_call_operator_loc(repository); end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2778 + # source://prism//lib/prism/node.rb#2790 def save_closing_loc(repository); end # Save the message_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2729 + # source://prism//lib/prism/node.rb#2741 def save_message_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2750 + # source://prism//lib/prism/node.rb#2762 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#2814 + # source://prism//lib/prism/node.rb#2826 sig { override.returns(Symbol) } def type; end @@ -3425,41 +3434,41 @@ class Prism::CallNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2654 + # source://prism//lib/prism/node.rb#2666 sig { returns(T::Boolean) } def variable_call?; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#2819 + # source://prism//lib/prism/node.rb#2831 def type; end end end # Flags for call nodes. # -# source://prism//lib/prism/node.rb#18483 +# source://prism//lib/prism/node.rb#18654 module Prism::CallNodeFlags; end # a call that is an attribute write, so the value being written should be returned # -# source://prism//lib/prism/node.rb#18491 +# source://prism//lib/prism/node.rb#18662 Prism::CallNodeFlags::ATTRIBUTE_WRITE = T.let(T.unsafe(nil), Integer) # a call that ignores method visibility # -# source://prism//lib/prism/node.rb#18494 +# source://prism//lib/prism/node.rb#18665 Prism::CallNodeFlags::IGNORE_VISIBILITY = T.let(T.unsafe(nil), Integer) # &. operator # -# source://prism//lib/prism/node.rb#18485 +# source://prism//lib/prism/node.rb#18656 Prism::CallNodeFlags::SAFE_NAVIGATION = T.let(T.unsafe(nil), Integer) # a call that could have been a local variable # -# source://prism//lib/prism/node.rb#18488 +# source://prism//lib/prism/node.rb#18659 Prism::CallNodeFlags::VARIABLE_CALL = T.let(T.unsafe(nil), Integer) # Represents the use of an assignment operator on a call. @@ -3467,13 +3476,13 @@ Prism::CallNodeFlags::VARIABLE_CALL = T.let(T.unsafe(nil), Integer) # foo.bar += baz # ^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#2843 +# source://prism//lib/prism/node.rb#2855 class Prism::CallOperatorWriteNode < ::Prism::Node # Initialize a new CallOperatorWriteNode node. # # @return [CallOperatorWriteNode] a new instance of CallOperatorWriteNode # - # source://prism//lib/prism/node.rb#2845 + # source://prism//lib/prism/node.rb#2857 sig do params( source: Prism::Source, @@ -3495,12 +3504,12 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#3033 + # source://prism//lib/prism/node.rb#3045 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#2861 + # source://prism//lib/prism/node.rb#2873 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -3508,7 +3517,7 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2907 + # source://prism//lib/prism/node.rb#2919 sig { returns(T::Boolean) } def attribute_write?; end @@ -3517,7 +3526,7 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # foo.bar += value # binary_operator `:+` # ^ # - # source://prism//lib/prism/node.rb#2982 + # source://prism//lib/prism/node.rb#2994 sig { returns(Symbol) } def binary_operator; end @@ -3526,13 +3535,13 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # foo.bar += value # ^^ # - # source://prism//lib/prism/node.rb#2988 + # source://prism//lib/prism/node.rb#3000 sig { returns(Prism::Location) } def binary_operator_loc; end # def call_operator: () -> String? # - # source://prism//lib/prism/node.rb#3007 + # source://prism//lib/prism/node.rb#3019 sig { returns(T.nilable(String)) } def call_operator; end @@ -3541,31 +3550,31 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # foo.bar += value # ^ # - # source://prism//lib/prism/node.rb#2926 + # source://prism//lib/prism/node.rb#2938 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#2866 + # source://prism//lib/prism/node.rb#2878 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#2879 + # source://prism//lib/prism/node.rb#2891 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#2871 + # source://prism//lib/prism/node.rb#2883 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node?, ?call_operator_loc: Location?, ?message_loc: Location?, ?read_name: Symbol, ?write_name: Symbol, ?binary_operator: Symbol, ?binary_operator_loc: Location, ?value: Prism::node) -> CallOperatorWriteNode # - # source://prism//lib/prism/node.rb#2884 + # source://prism//lib/prism/node.rb#2896 sig do params( node_id: Integer, @@ -3583,16 +3592,16 @@ class Prism::CallOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), message_loc: T.unsafe(nil), read_name: T.unsafe(nil), write_name: T.unsafe(nil), binary_operator: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#2866 + # source://prism//lib/prism/node.rb#2878 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, message_loc: Location?, read_name: Symbol, write_name: Symbol, binary_operator: Symbol, binary_operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#2892 + # source://prism//lib/prism/node.rb#2904 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -3603,19 +3612,19 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2912 + # source://prism//lib/prism/node.rb#2924 sig { returns(T::Boolean) } def ignore_visibility?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#3017 + # source://prism//lib/prism/node.rb#3029 sig { override.returns(String) } def inspect; end # def message: () -> String? # - # source://prism//lib/prism/node.rb#3012 + # source://prism//lib/prism/node.rb#3024 sig { returns(T.nilable(String)) } def message; end @@ -3624,20 +3633,20 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # foo.bar += value # ^^^ # - # source://prism//lib/prism/node.rb#2948 + # source://prism//lib/prism/node.rb#2960 sig { returns(T.nilable(Prism::Location)) } def message_loc; end # Returns the binary operator used to modify the receiver. This method is # deprecated in favor of #binary_operator. # - # source://prism//lib/prism/node_ext.rb#339 + # source://prism//lib/prism/node_ext.rb#342 def operator; end # Returns the location of the binary operator used to modify the receiver. # This method is deprecated in favor of #binary_operator_loc. # - # source://prism//lib/prism/node_ext.rb#346 + # source://prism//lib/prism/node_ext.rb#349 def operator_loc; end # Represents the name of the method being called. @@ -3645,7 +3654,7 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # foo.bar += value # read_name `:bar` # ^^^ # - # source://prism//lib/prism/node.rb#2970 + # source://prism//lib/prism/node.rb#2982 sig { returns(Symbol) } def read_name; end @@ -3654,7 +3663,7 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # foo.bar += value # ^^^ # - # source://prism//lib/prism/node.rb#2920 + # source://prism//lib/prism/node.rb#2932 sig { returns(T.nilable(Prism::Node)) } def receiver; end @@ -3662,31 +3671,31 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2897 + # source://prism//lib/prism/node.rb#2909 sig { returns(T::Boolean) } def safe_navigation?; end # Save the binary_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2996 + # source://prism//lib/prism/node.rb#3008 def save_binary_operator_loc(repository); end # Save the call_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2940 + # source://prism//lib/prism/node.rb#2952 def save_call_operator_loc(repository); end # Save the message_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#2962 + # source://prism//lib/prism/node.rb#2974 def save_message_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#3022 + # source://prism//lib/prism/node.rb#3034 sig { override.returns(Symbol) } def type; end @@ -3695,7 +3704,7 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # foo.bar += value # ^^^^^ # - # source://prism//lib/prism/node.rb#3004 + # source://prism//lib/prism/node.rb#3016 sig { returns(Prism::Node) } def value; end @@ -3703,7 +3712,7 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#2902 + # source://prism//lib/prism/node.rb#2914 sig { returns(T::Boolean) } def variable_call?; end @@ -3712,14 +3721,14 @@ class Prism::CallOperatorWriteNode < ::Prism::Node # foo.bar += value # write_name `:bar=` # ^^^ # - # source://prism//lib/prism/node.rb#2976 + # source://prism//lib/prism/node.rb#2988 sig { returns(Symbol) } def write_name; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#3027 + # source://prism//lib/prism/node.rb#3039 def type; end end end @@ -3729,13 +3738,13 @@ end # foo.bar ||= value # ^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#3051 +# source://prism//lib/prism/node.rb#3063 class Prism::CallOrWriteNode < ::Prism::Node # Initialize a new CallOrWriteNode node. # # @return [CallOrWriteNode] a new instance of CallOrWriteNode # - # source://prism//lib/prism/node.rb#3053 + # source://prism//lib/prism/node.rb#3065 sig do params( source: Prism::Source, @@ -3756,12 +3765,12 @@ class Prism::CallOrWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#3239 + # source://prism//lib/prism/node.rb#3251 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#3068 + # source://prism//lib/prism/node.rb#3080 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -3769,13 +3778,13 @@ class Prism::CallOrWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#3114 + # source://prism//lib/prism/node.rb#3126 sig { returns(T::Boolean) } def attribute_write?; end # def call_operator: () -> String? # - # source://prism//lib/prism/node.rb#3208 + # source://prism//lib/prism/node.rb#3220 sig { returns(T.nilable(String)) } def call_operator; end @@ -3784,31 +3793,31 @@ class Prism::CallOrWriteNode < ::Prism::Node # foo.bar ||= value # ^ # - # source://prism//lib/prism/node.rb#3133 + # source://prism//lib/prism/node.rb#3145 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3073 + # source://prism//lib/prism/node.rb#3085 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#3086 + # source://prism//lib/prism/node.rb#3098 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#3078 + # source://prism//lib/prism/node.rb#3090 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node?, ?call_operator_loc: Location?, ?message_loc: Location?, ?read_name: Symbol, ?write_name: Symbol, ?operator_loc: Location, ?value: Prism::node) -> CallOrWriteNode # - # source://prism//lib/prism/node.rb#3091 + # source://prism//lib/prism/node.rb#3103 sig do params( node_id: Integer, @@ -3825,16 +3834,16 @@ class Prism::CallOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), message_loc: T.unsafe(nil), read_name: T.unsafe(nil), write_name: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3073 + # source://prism//lib/prism/node.rb#3085 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, message_loc: Location?, read_name: Symbol, write_name: Symbol, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#3099 + # source://prism//lib/prism/node.rb#3111 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -3845,19 +3854,19 @@ class Prism::CallOrWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#3119 + # source://prism//lib/prism/node.rb#3131 sig { returns(T::Boolean) } def ignore_visibility?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#3223 + # source://prism//lib/prism/node.rb#3235 sig { override.returns(String) } def inspect; end # def message: () -> String? # - # source://prism//lib/prism/node.rb#3213 + # source://prism//lib/prism/node.rb#3225 sig { returns(T.nilable(String)) } def message; end @@ -3866,13 +3875,13 @@ class Prism::CallOrWriteNode < ::Prism::Node # foo.bar ||= value # ^^^ # - # source://prism//lib/prism/node.rb#3155 + # source://prism//lib/prism/node.rb#3167 sig { returns(T.nilable(Prism::Location)) } def message_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#3218 + # source://prism//lib/prism/node.rb#3230 sig { returns(String) } def operator; end @@ -3881,7 +3890,7 @@ class Prism::CallOrWriteNode < ::Prism::Node # foo.bar ||= value # ^^^ # - # source://prism//lib/prism/node.rb#3189 + # source://prism//lib/prism/node.rb#3201 sig { returns(Prism::Location) } def operator_loc; end @@ -3890,7 +3899,7 @@ class Prism::CallOrWriteNode < ::Prism::Node # foo.bar ||= value # read_name `:bar` # ^^^ # - # source://prism//lib/prism/node.rb#3177 + # source://prism//lib/prism/node.rb#3189 sig { returns(Symbol) } def read_name; end @@ -3899,7 +3908,7 @@ class Prism::CallOrWriteNode < ::Prism::Node # foo.bar ||= value # ^^^ # - # source://prism//lib/prism/node.rb#3127 + # source://prism//lib/prism/node.rb#3139 sig { returns(T.nilable(Prism::Node)) } def receiver; end @@ -3907,31 +3916,31 @@ class Prism::CallOrWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#3104 + # source://prism//lib/prism/node.rb#3116 sig { returns(T::Boolean) } def safe_navigation?; end # Save the call_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3147 + # source://prism//lib/prism/node.rb#3159 def save_call_operator_loc(repository); end # Save the message_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3169 + # source://prism//lib/prism/node.rb#3181 def save_message_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3197 + # source://prism//lib/prism/node.rb#3209 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#3228 + # source://prism//lib/prism/node.rb#3240 sig { override.returns(Symbol) } def type; end @@ -3940,7 +3949,7 @@ class Prism::CallOrWriteNode < ::Prism::Node # foo.bar ||= value # ^^^^^ # - # source://prism//lib/prism/node.rb#3205 + # source://prism//lib/prism/node.rb#3217 sig { returns(Prism::Node) } def value; end @@ -3948,7 +3957,7 @@ class Prism::CallOrWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#3109 + # source://prism//lib/prism/node.rb#3121 sig { returns(T::Boolean) } def variable_call?; end @@ -3957,14 +3966,14 @@ class Prism::CallOrWriteNode < ::Prism::Node # foo.bar ||= value # write_name `:bar=` # ^^^ # - # source://prism//lib/prism/node.rb#3183 + # source://prism//lib/prism/node.rb#3195 sig { returns(Symbol) } def write_name; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#3233 + # source://prism//lib/prism/node.rb#3245 def type; end end end @@ -3982,13 +3991,13 @@ end # for foo.bar in baz do end # ^^^^^^^ # -# source://prism//lib/prism/node.rb#3264 +# source://prism//lib/prism/node.rb#3276 class Prism::CallTargetNode < ::Prism::Node # Initialize a new CallTargetNode node. # # @return [CallTargetNode] a new instance of CallTargetNode # - # source://prism//lib/prism/node.rb#3266 + # source://prism//lib/prism/node.rb#3278 sig do params( source: Prism::Source, @@ -4006,12 +4015,12 @@ class Prism::CallTargetNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#3401 + # source://prism//lib/prism/node.rb#3413 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#3278 + # source://prism//lib/prism/node.rb#3290 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -4019,13 +4028,13 @@ class Prism::CallTargetNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#3321 + # source://prism//lib/prism/node.rb#3333 sig { returns(T::Boolean) } def attribute_write?; end # def call_operator: () -> String # - # source://prism//lib/prism/node.rb#3375 + # source://prism//lib/prism/node.rb#3387 sig { returns(String) } def call_operator; end @@ -4034,31 +4043,31 @@ class Prism::CallTargetNode < ::Prism::Node # foo.bar = 1 # ^ # - # source://prism//lib/prism/node.rb#3340 + # source://prism//lib/prism/node.rb#3352 sig { returns(Prism::Location) } def call_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3283 + # source://prism//lib/prism/node.rb#3295 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#3293 + # source://prism//lib/prism/node.rb#3305 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#3288 + # source://prism//lib/prism/node.rb#3300 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node, ?call_operator_loc: Location, ?name: Symbol, ?message_loc: Location) -> CallTargetNode # - # source://prism//lib/prism/node.rb#3298 + # source://prism//lib/prism/node.rb#3310 sig do params( node_id: Integer, @@ -4072,16 +4081,16 @@ class Prism::CallTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), name: T.unsafe(nil), message_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3283 + # source://prism//lib/prism/node.rb#3295 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node, call_operator_loc: Location, name: Symbol, message_loc: Location } # - # source://prism//lib/prism/node.rb#3306 + # source://prism//lib/prism/node.rb#3318 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -4092,19 +4101,19 @@ class Prism::CallTargetNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#3326 + # source://prism//lib/prism/node.rb#3338 sig { returns(T::Boolean) } def ignore_visibility?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#3385 + # source://prism//lib/prism/node.rb#3397 sig { override.returns(String) } def inspect; end # def message: () -> String # - # source://prism//lib/prism/node.rb#3380 + # source://prism//lib/prism/node.rb#3392 sig { returns(String) } def message; end @@ -4113,7 +4122,7 @@ class Prism::CallTargetNode < ::Prism::Node # foo.bar = 1 # ^^^ # - # source://prism//lib/prism/node.rb#3362 + # source://prism//lib/prism/node.rb#3374 sig { returns(Prism::Location) } def message_loc; end @@ -4122,7 +4131,7 @@ class Prism::CallTargetNode < ::Prism::Node # foo.bar = 1 # name `:foo` # ^^^ # - # source://prism//lib/prism/node.rb#3356 + # source://prism//lib/prism/node.rb#3368 sig { returns(Symbol) } def name; end @@ -4131,7 +4140,7 @@ class Prism::CallTargetNode < ::Prism::Node # foo.bar = 1 # ^^^ # - # source://prism//lib/prism/node.rb#3334 + # source://prism//lib/prism/node.rb#3346 sig { returns(Prism::Node) } def receiver; end @@ -4139,25 +4148,25 @@ class Prism::CallTargetNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#3311 + # source://prism//lib/prism/node.rb#3323 sig { returns(T::Boolean) } def safe_navigation?; end # Save the call_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3348 + # source://prism//lib/prism/node.rb#3360 def save_call_operator_loc(repository); end # Save the message_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3370 + # source://prism//lib/prism/node.rb#3382 def save_message_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#3390 + # source://prism//lib/prism/node.rb#3402 sig { override.returns(Symbol) } def type; end @@ -4165,14 +4174,14 @@ class Prism::CallTargetNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#3316 + # source://prism//lib/prism/node.rb#3328 sig { returns(T::Boolean) } def variable_call?; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#3395 + # source://prism//lib/prism/node.rb#3407 def type; end end end @@ -4182,13 +4191,13 @@ end # foo => [bar => baz] # ^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#3415 +# source://prism//lib/prism/node.rb#3427 class Prism::CapturePatternNode < ::Prism::Node # Initialize a new CapturePatternNode node. # # @return [CapturePatternNode] a new instance of CapturePatternNode # - # source://prism//lib/prism/node.rb#3417 + # source://prism//lib/prism/node.rb#3429 sig do params( source: Prism::Source, @@ -4205,36 +4214,36 @@ class Prism::CapturePatternNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#3510 + # source://prism//lib/prism/node.rb#3522 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#3428 + # source://prism//lib/prism/node.rb#3440 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3433 + # source://prism//lib/prism/node.rb#3445 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#3443 + # source://prism//lib/prism/node.rb#3455 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#3438 + # source://prism//lib/prism/node.rb#3450 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?value: Prism::node, ?target: LocalVariableTargetNode, ?operator_loc: Location) -> CapturePatternNode # - # source://prism//lib/prism/node.rb#3448 + # source://prism//lib/prism/node.rb#3460 sig do params( node_id: Integer, @@ -4247,16 +4256,16 @@ class Prism::CapturePatternNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil), target: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3433 + # source://prism//lib/prism/node.rb#3445 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Prism::node, target: LocalVariableTargetNode, operator_loc: Location } # - # source://prism//lib/prism/node.rb#3456 + # source://prism//lib/prism/node.rb#3468 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -4265,13 +4274,13 @@ class Prism::CapturePatternNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#3494 + # source://prism//lib/prism/node.rb#3506 sig { override.returns(String) } def inspect; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#3489 + # source://prism//lib/prism/node.rb#3501 sig { returns(String) } def operator; end @@ -4280,14 +4289,14 @@ class Prism::CapturePatternNode < ::Prism::Node # foo => bar # ^^ # - # source://prism//lib/prism/node.rb#3476 + # source://prism//lib/prism/node.rb#3488 sig { returns(Prism::Location) } def operator_loc; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3484 + # source://prism//lib/prism/node.rb#3496 def save_operator_loc(repository); end # Represents the target of the capture. @@ -4295,13 +4304,13 @@ class Prism::CapturePatternNode < ::Prism::Node # foo => bar # ^^^ # - # source://prism//lib/prism/node.rb#3470 + # source://prism//lib/prism/node.rb#3482 sig { returns(Prism::LocalVariableTargetNode) } def target; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#3499 + # source://prism//lib/prism/node.rb#3511 sig { override.returns(Symbol) } def type; end @@ -4310,14 +4319,14 @@ class Prism::CapturePatternNode < ::Prism::Node # foo => bar # ^^^ # - # source://prism//lib/prism/node.rb#3464 + # source://prism//lib/prism/node.rb#3476 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#3504 + # source://prism//lib/prism/node.rb#3516 def type; end end end @@ -4329,13 +4338,13 @@ end # end # ^^^^^^^^^ # -# source://prism//lib/prism/node.rb#3524 +# source://prism//lib/prism/node.rb#3536 class Prism::CaseMatchNode < ::Prism::Node # Initialize a new CaseMatchNode node. # # @return [CaseMatchNode] a new instance of CaseMatchNode # - # source://prism//lib/prism/node.rb#3526 + # source://prism//lib/prism/node.rb#3538 sig do params( source: Prism::Source, @@ -4354,18 +4363,18 @@ class Prism::CaseMatchNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#3652 + # source://prism//lib/prism/node.rb#3664 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#3539 + # source://prism//lib/prism/node.rb#3551 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # def case_keyword: () -> String # - # source://prism//lib/prism/node.rb#3626 + # source://prism//lib/prism/node.rb#3638 sig { returns(String) } def case_keyword; end @@ -4374,25 +4383,25 @@ class Prism::CaseMatchNode < ::Prism::Node # case true; in false; end # ^^^^ # - # source://prism//lib/prism/node.rb#3597 + # source://prism//lib/prism/node.rb#3609 sig { returns(Prism::Location) } def case_keyword_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3544 + # source://prism//lib/prism/node.rb#3556 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#3558 + # source://prism//lib/prism/node.rb#3570 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#3549 + # source://prism//lib/prism/node.rb#3561 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end @@ -4401,19 +4410,19 @@ class Prism::CaseMatchNode < ::Prism::Node # case true; in false; end # ^^^^^^^^ # - # source://prism//lib/prism/node.rb#3585 + # source://prism//lib/prism/node.rb#3597 sig { returns(T::Array[Prism::InNode]) } def conditions; end # Returns the else clause of the case match node. This method is deprecated # in favor of #else_clause. # - # source://prism//lib/prism/node_ext.rb#467 + # source://prism//lib/prism/node_ext.rb#470 def consequent; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?predicate: Prism::node?, ?conditions: Array[InNode], ?else_clause: ElseNode?, ?case_keyword_loc: Location, ?end_keyword_loc: Location) -> CaseMatchNode # - # source://prism//lib/prism/node.rb#3563 + # source://prism//lib/prism/node.rb#3575 sig do params( node_id: Integer, @@ -4428,16 +4437,16 @@ class Prism::CaseMatchNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), predicate: T.unsafe(nil), conditions: T.unsafe(nil), else_clause: T.unsafe(nil), case_keyword_loc: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3544 + # source://prism//lib/prism/node.rb#3556 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, predicate: Prism::node?, conditions: Array[InNode], else_clause: ElseNode?, case_keyword_loc: Location, end_keyword_loc: Location } # - # source://prism//lib/prism/node.rb#3571 + # source://prism//lib/prism/node.rb#3583 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -4446,13 +4455,13 @@ class Prism::CaseMatchNode < ::Prism::Node # case true; in false; else; end # ^^^^ # - # source://prism//lib/prism/node.rb#3591 + # source://prism//lib/prism/node.rb#3603 sig { returns(T.nilable(Prism::ElseNode)) } def else_clause; end # def end_keyword: () -> String # - # source://prism//lib/prism/node.rb#3631 + # source://prism//lib/prism/node.rb#3643 sig { returns(String) } def end_keyword; end @@ -4461,7 +4470,7 @@ class Prism::CaseMatchNode < ::Prism::Node # case true; in false; end # ^^^ # - # source://prism//lib/prism/node.rb#3613 + # source://prism//lib/prism/node.rb#3625 sig { returns(Prism::Location) } def end_keyword_loc; end @@ -4470,7 +4479,7 @@ class Prism::CaseMatchNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#3636 + # source://prism//lib/prism/node.rb#3648 sig { override.returns(String) } def inspect; end @@ -4479,32 +4488,32 @@ class Prism::CaseMatchNode < ::Prism::Node # case true; in false; end # ^^^^ # - # source://prism//lib/prism/node.rb#3579 + # source://prism//lib/prism/node.rb#3591 sig { returns(T.nilable(Prism::Node)) } def predicate; end # Save the case_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3605 + # source://prism//lib/prism/node.rb#3617 def save_case_keyword_loc(repository); end # Save the end_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3621 + # source://prism//lib/prism/node.rb#3633 def save_end_keyword_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#3641 + # source://prism//lib/prism/node.rb#3653 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#3646 + # source://prism//lib/prism/node.rb#3658 def type; end end end @@ -4516,13 +4525,13 @@ end # end # ^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#3669 +# source://prism//lib/prism/node.rb#3681 class Prism::CaseNode < ::Prism::Node # Initialize a new CaseNode node. # # @return [CaseNode] a new instance of CaseNode # - # source://prism//lib/prism/node.rb#3671 + # source://prism//lib/prism/node.rb#3683 sig do params( source: Prism::Source, @@ -4541,18 +4550,18 @@ class Prism::CaseNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#3797 + # source://prism//lib/prism/node.rb#3809 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#3684 + # source://prism//lib/prism/node.rb#3696 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # def case_keyword: () -> String # - # source://prism//lib/prism/node.rb#3771 + # source://prism//lib/prism/node.rb#3783 sig { returns(String) } def case_keyword; end @@ -4561,25 +4570,25 @@ class Prism::CaseNode < ::Prism::Node # case true; when false; end # ^^^^ # - # source://prism//lib/prism/node.rb#3742 + # source://prism//lib/prism/node.rb#3754 sig { returns(Prism::Location) } def case_keyword_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3689 + # source://prism//lib/prism/node.rb#3701 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#3703 + # source://prism//lib/prism/node.rb#3715 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#3694 + # source://prism//lib/prism/node.rb#3706 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end @@ -4588,19 +4597,19 @@ class Prism::CaseNode < ::Prism::Node # case true; when false; end # ^^^^^^^^^^ # - # source://prism//lib/prism/node.rb#3730 + # source://prism//lib/prism/node.rb#3742 sig { returns(T::Array[Prism::WhenNode]) } def conditions; end # Returns the else clause of the case node. This method is deprecated in # favor of #else_clause. # - # source://prism//lib/prism/node_ext.rb#476 + # source://prism//lib/prism/node_ext.rb#479 def consequent; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?predicate: Prism::node?, ?conditions: Array[WhenNode], ?else_clause: ElseNode?, ?case_keyword_loc: Location, ?end_keyword_loc: Location) -> CaseNode # - # source://prism//lib/prism/node.rb#3708 + # source://prism//lib/prism/node.rb#3720 sig do params( node_id: Integer, @@ -4615,16 +4624,16 @@ class Prism::CaseNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), predicate: T.unsafe(nil), conditions: T.unsafe(nil), else_clause: T.unsafe(nil), case_keyword_loc: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3689 + # source://prism//lib/prism/node.rb#3701 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, predicate: Prism::node?, conditions: Array[WhenNode], else_clause: ElseNode?, case_keyword_loc: Location, end_keyword_loc: Location } # - # source://prism//lib/prism/node.rb#3716 + # source://prism//lib/prism/node.rb#3728 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -4633,13 +4642,13 @@ class Prism::CaseNode < ::Prism::Node # case true; when false; else; end # ^^^^ # - # source://prism//lib/prism/node.rb#3736 + # source://prism//lib/prism/node.rb#3748 sig { returns(T.nilable(Prism::ElseNode)) } def else_clause; end # def end_keyword: () -> String # - # source://prism//lib/prism/node.rb#3776 + # source://prism//lib/prism/node.rb#3788 sig { returns(String) } def end_keyword; end @@ -4648,7 +4657,7 @@ class Prism::CaseNode < ::Prism::Node # case true; when false; end # ^^^ # - # source://prism//lib/prism/node.rb#3758 + # source://prism//lib/prism/node.rb#3770 sig { returns(Prism::Location) } def end_keyword_loc; end @@ -4657,41 +4666,41 @@ class Prism::CaseNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#3781 + # source://prism//lib/prism/node.rb#3793 sig { override.returns(String) } def inspect; end # Represents the predicate of the case statement. This can be either `nil` or any [non-void expressions](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). # # case true; when false; end - # ^^^^ + # ^^^^ # - # source://prism//lib/prism/node.rb#3724 + # source://prism//lib/prism/node.rb#3736 sig { returns(T.nilable(Prism::Node)) } def predicate; end # Save the case_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3750 + # source://prism//lib/prism/node.rb#3762 def save_case_keyword_loc(repository); end # Save the end_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3766 + # source://prism//lib/prism/node.rb#3778 def save_end_keyword_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#3786 + # source://prism//lib/prism/node.rb#3798 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#3791 + # source://prism//lib/prism/node.rb#3803 def type; end end end @@ -4701,13 +4710,13 @@ end # class Foo end # ^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#3812 +# source://prism//lib/prism/node.rb#3824 class Prism::ClassNode < ::Prism::Node # Initialize a new ClassNode node. # # @return [ClassNode] a new instance of ClassNode # - # source://prism//lib/prism/node.rb#3814 + # source://prism//lib/prism/node.rb#3826 sig do params( source: Prism::Source, @@ -4729,60 +4738,67 @@ class Prism::ClassNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#3958 + # source://prism//lib/prism/node.rb#3988 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#3830 + # source://prism//lib/prism/node.rb#3842 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # attr_reader body: StatementsNode | BeginNode | nil + # Represents the body of the class. + # + # class Foo + # foo + # ^^^ # - # source://prism//lib/prism/node.rb#3908 + # source://prism//lib/prism/node.rb#3933 sig { returns(T.nilable(T.any(Prism::StatementsNode, Prism::BeginNode))) } def body; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3835 + # source://prism//lib/prism/node.rb#3847 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def class_keyword: () -> String # - # source://prism//lib/prism/node.rb#3927 + # source://prism//lib/prism/node.rb#3957 sig { returns(String) } def class_keyword; end - # attr_reader class_keyword_loc: Location + # Represents the location of the `class` keyword. + # + # class Foo end + # ^^^^^ # - # source://prism//lib/prism/node.rb#3870 + # source://prism//lib/prism/node.rb#3885 sig { returns(Prism::Location) } def class_keyword_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#3849 + # source://prism//lib/prism/node.rb#3861 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#3840 + # source://prism//lib/prism/node.rb#3852 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # attr_reader constant_path: ConstantReadNode | ConstantPathNode | CallNode # - # source://prism//lib/prism/node.rb#3883 + # source://prism//lib/prism/node.rb#3898 sig { returns(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode, Prism::CallNode)) } def constant_path; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?locals: Array[Symbol], ?class_keyword_loc: Location, ?constant_path: ConstantReadNode | ConstantPathNode | CallNode, ?inheritance_operator_loc: Location?, ?superclass: Prism::node?, ?body: StatementsNode | BeginNode | nil, ?end_keyword_loc: Location, ?name: Symbol) -> ClassNode # - # source://prism//lib/prism/node.rb#3854 + # source://prism//lib/prism/node.rb#3866 sig do params( node_id: Integer, @@ -4800,28 +4816,31 @@ class Prism::ClassNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), class_keyword_loc: T.unsafe(nil), constant_path: T.unsafe(nil), inheritance_operator_loc: T.unsafe(nil), superclass: T.unsafe(nil), body: T.unsafe(nil), end_keyword_loc: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3835 + # source://prism//lib/prism/node.rb#3847 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], class_keyword_loc: Location, constant_path: ConstantReadNode | ConstantPathNode | CallNode, inheritance_operator_loc: Location?, superclass: Prism::node?, body: StatementsNode | BeginNode | nil, end_keyword_loc: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#3862 + # source://prism//lib/prism/node.rb#3874 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # def end_keyword: () -> String # - # source://prism//lib/prism/node.rb#3937 + # source://prism//lib/prism/node.rb#3967 sig { returns(String) } def end_keyword; end - # attr_reader end_keyword_loc: Location + # Represents the location of the `end` keyword. + # + # class Foo end + # ^^^ # - # source://prism//lib/prism/node.rb#3911 + # source://prism//lib/prism/node.rb#3939 sig { returns(Prism::Location) } def end_keyword_loc; end @@ -4830,68 +4849,76 @@ class Prism::ClassNode < ::Prism::Node # def inheritance_operator: () -> String? # - # source://prism//lib/prism/node.rb#3932 + # source://prism//lib/prism/node.rb#3962 sig { returns(T.nilable(String)) } def inheritance_operator; end - # attr_reader inheritance_operator_loc: Location? + # Represents the location of the `<` operator. + # + # class Foo < Bar + # ^ # - # source://prism//lib/prism/node.rb#3886 + # source://prism//lib/prism/node.rb#3904 sig { returns(T.nilable(Prism::Location)) } def inheritance_operator_loc; end # def inspect -> String # - # source://prism//lib/prism/node.rb#3942 + # source://prism//lib/prism/node.rb#3972 sig { override.returns(String) } def inspect; end # attr_reader locals: Array[Symbol] # - # source://prism//lib/prism/node.rb#3867 + # source://prism//lib/prism/node.rb#3879 sig { returns(T::Array[Symbol]) } def locals; end - # attr_reader name: Symbol + # The name of the class. + # + # class Foo end # name `:Foo` # - # source://prism//lib/prism/node.rb#3924 + # source://prism//lib/prism/node.rb#3954 sig { returns(Symbol) } def name; end # Save the class_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3878 + # source://prism//lib/prism/node.rb#3893 def save_class_keyword_loc(repository); end # Save the end_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3919 + # source://prism//lib/prism/node.rb#3947 def save_end_keyword_loc(repository); end # Save the inheritance_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#3900 + # source://prism//lib/prism/node.rb#3918 def save_inheritance_operator_loc(repository); end - # attr_reader superclass: Prism::node? + # Represents the superclass of the class. + # + # class Foo < Bar + # ^^^ # - # source://prism//lib/prism/node.rb#3905 + # source://prism//lib/prism/node.rb#3926 sig { returns(T.nilable(Prism::Node)) } def superclass; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#3947 + # source://prism//lib/prism/node.rb#3977 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#3952 + # source://prism//lib/prism/node.rb#3982 def type; end end end @@ -4901,13 +4928,13 @@ end # @@target &&= value # ^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#3976 +# source://prism//lib/prism/node.rb#4006 class Prism::ClassVariableAndWriteNode < ::Prism::Node # Initialize a new ClassVariableAndWriteNode node. # # @return [ClassVariableAndWriteNode] a new instance of ClassVariableAndWriteNode # - # source://prism//lib/prism/node.rb#3978 + # source://prism//lib/prism/node.rb#4008 sig do params( source: Prism::Source, @@ -4925,36 +4952,36 @@ class Prism::ClassVariableAndWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#4088 + # source://prism//lib/prism/node.rb#4118 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#3990 + # source://prism//lib/prism/node.rb#4020 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3995 + # source://prism//lib/prism/node.rb#4025 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#4005 + # source://prism//lib/prism/node.rb#4035 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#4000 + # source://prism//lib/prism/node.rb#4030 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?operator_loc: Location, ?value: Prism::node) -> ClassVariableAndWriteNode # - # source://prism//lib/prism/node.rb#4010 + # source://prism//lib/prism/node.rb#4040 sig do params( node_id: Integer, @@ -4968,20 +4995,20 @@ class Prism::ClassVariableAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#3995 + # source://prism//lib/prism/node.rb#4025 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#4018 + # source://prism//lib/prism/node.rb#4048 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#164 + # source://prism//lib/prism/desugar_compiler.rb#165 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -4989,7 +5016,7 @@ class Prism::ClassVariableAndWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#4072 + # source://prism//lib/prism/node.rb#4102 sig { override.returns(String) } def inspect; end @@ -4998,7 +5025,7 @@ class Prism::ClassVariableAndWriteNode < ::Prism::Node # @@target &&= value # name `:@@target` # ^^^^^^^^ # - # source://prism//lib/prism/node.rb#4026 + # source://prism//lib/prism/node.rb#4056 sig { returns(Symbol) } def name; end @@ -5007,13 +5034,13 @@ class Prism::ClassVariableAndWriteNode < ::Prism::Node # @@target &&= value # ^^^^^^^^ # - # source://prism//lib/prism/node.rb#4032 + # source://prism//lib/prism/node.rb#4062 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#4067 + # source://prism//lib/prism/node.rb#4097 sig { returns(String) } def operator; end @@ -5022,25 +5049,25 @@ class Prism::ClassVariableAndWriteNode < ::Prism::Node # @@target &&= value # ^^^ # - # source://prism//lib/prism/node.rb#4048 + # source://prism//lib/prism/node.rb#4078 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4040 + # source://prism//lib/prism/node.rb#4070 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4056 + # source://prism//lib/prism/node.rb#4086 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#4077 + # source://prism//lib/prism/node.rb#4107 sig { override.returns(Symbol) } def type; end @@ -5049,14 +5076,14 @@ class Prism::ClassVariableAndWriteNode < ::Prism::Node # @@target &&= value # ^^^^^ # - # source://prism//lib/prism/node.rb#4064 + # source://prism//lib/prism/node.rb#4094 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#4082 + # source://prism//lib/prism/node.rb#4112 def type; end end end @@ -5066,13 +5093,13 @@ end # @@target += value # ^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#4101 +# source://prism//lib/prism/node.rb#4131 class Prism::ClassVariableOperatorWriteNode < ::Prism::Node # Initialize a new ClassVariableOperatorWriteNode node. # # @return [ClassVariableOperatorWriteNode] a new instance of ClassVariableOperatorWriteNode # - # source://prism//lib/prism/node.rb#4103 + # source://prism//lib/prism/node.rb#4133 sig do params( source: Prism::Source, @@ -5091,48 +5118,48 @@ class Prism::ClassVariableOperatorWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#4200 + # source://prism//lib/prism/node.rb#4230 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#4116 + # source://prism//lib/prism/node.rb#4146 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader binary_operator: Symbol # - # source://prism//lib/prism/node.rb#4181 + # source://prism//lib/prism/node.rb#4211 sig { returns(Symbol) } def binary_operator; end # attr_reader binary_operator_loc: Location # - # source://prism//lib/prism/node.rb#4165 + # source://prism//lib/prism/node.rb#4195 sig { returns(Prism::Location) } def binary_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4121 + # source://prism//lib/prism/node.rb#4151 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#4131 + # source://prism//lib/prism/node.rb#4161 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#4126 + # source://prism//lib/prism/node.rb#4156 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?binary_operator_loc: Location, ?value: Prism::node, ?binary_operator: Symbol) -> ClassVariableOperatorWriteNode # - # source://prism//lib/prism/node.rb#4136 + # source://prism//lib/prism/node.rb#4166 sig do params( node_id: Integer, @@ -5147,20 +5174,20 @@ class Prism::ClassVariableOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4121 + # source://prism//lib/prism/node.rb#4151 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, binary_operator_loc: Location, value: Prism::node, binary_operator: Symbol } # - # source://prism//lib/prism/node.rb#4144 + # source://prism//lib/prism/node.rb#4174 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#176 + # source://prism//lib/prism/desugar_compiler.rb#177 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -5168,62 +5195,62 @@ class Prism::ClassVariableOperatorWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#4184 + # source://prism//lib/prism/node.rb#4214 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#4149 + # source://prism//lib/prism/node.rb#4179 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#4152 + # source://prism//lib/prism/node.rb#4182 sig { returns(Prism::Location) } def name_loc; end # Returns the binary operator used to modify the receiver. This method is # deprecated in favor of #binary_operator. # - # source://prism//lib/prism/node_ext.rb#355 + # source://prism//lib/prism/node_ext.rb#358 def operator; end # Returns the location of the binary operator used to modify the receiver. # This method is deprecated in favor of #binary_operator_loc. # - # source://prism//lib/prism/node_ext.rb#362 + # source://prism//lib/prism/node_ext.rb#365 def operator_loc; end # Save the binary_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4173 + # source://prism//lib/prism/node.rb#4203 def save_binary_operator_loc(repository); end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4160 + # source://prism//lib/prism/node.rb#4190 def save_name_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#4189 + # source://prism//lib/prism/node.rb#4219 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#4178 + # source://prism//lib/prism/node.rb#4208 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#4194 + # source://prism//lib/prism/node.rb#4224 def type; end end end @@ -5233,13 +5260,13 @@ end # @@target ||= value # ^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#4214 +# source://prism//lib/prism/node.rb#4244 class Prism::ClassVariableOrWriteNode < ::Prism::Node # Initialize a new ClassVariableOrWriteNode node. # # @return [ClassVariableOrWriteNode] a new instance of ClassVariableOrWriteNode # - # source://prism//lib/prism/node.rb#4216 + # source://prism//lib/prism/node.rb#4246 sig do params( source: Prism::Source, @@ -5257,36 +5284,36 @@ class Prism::ClassVariableOrWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#4314 + # source://prism//lib/prism/node.rb#4344 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#4228 + # source://prism//lib/prism/node.rb#4258 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4233 + # source://prism//lib/prism/node.rb#4263 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#4243 + # source://prism//lib/prism/node.rb#4273 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#4238 + # source://prism//lib/prism/node.rb#4268 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?operator_loc: Location, ?value: Prism::node) -> ClassVariableOrWriteNode # - # source://prism//lib/prism/node.rb#4248 + # source://prism//lib/prism/node.rb#4278 sig do params( node_id: Integer, @@ -5300,20 +5327,20 @@ class Prism::ClassVariableOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4233 + # source://prism//lib/prism/node.rb#4263 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#4256 + # source://prism//lib/prism/node.rb#4286 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#170 + # source://prism//lib/prism/desugar_compiler.rb#171 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -5321,62 +5348,62 @@ class Prism::ClassVariableOrWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#4298 + # source://prism//lib/prism/node.rb#4328 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#4261 + # source://prism//lib/prism/node.rb#4291 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#4264 + # source://prism//lib/prism/node.rb#4294 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#4293 + # source://prism//lib/prism/node.rb#4323 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#4277 + # source://prism//lib/prism/node.rb#4307 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4272 + # source://prism//lib/prism/node.rb#4302 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4285 + # source://prism//lib/prism/node.rb#4315 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#4303 + # source://prism//lib/prism/node.rb#4333 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#4290 + # source://prism//lib/prism/node.rb#4320 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#4308 + # source://prism//lib/prism/node.rb#4338 def type; end end end @@ -5386,49 +5413,49 @@ end # @@foo # ^^^^^ # -# source://prism//lib/prism/node.rb#4327 +# source://prism//lib/prism/node.rb#4357 class Prism::ClassVariableReadNode < ::Prism::Node # Initialize a new ClassVariableReadNode node. # # @return [ClassVariableReadNode] a new instance of ClassVariableReadNode # - # source://prism//lib/prism/node.rb#4329 + # source://prism//lib/prism/node.rb#4359 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#4394 + # source://prism//lib/prism/node.rb#4424 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#4338 + # source://prism//lib/prism/node.rb#4368 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4343 + # source://prism//lib/prism/node.rb#4373 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#4353 + # source://prism//lib/prism/node.rb#4383 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#4348 + # source://prism//lib/prism/node.rb#4378 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol) -> ClassVariableReadNode # - # source://prism//lib/prism/node.rb#4358 + # source://prism//lib/prism/node.rb#4388 sig do params( node_id: Integer, @@ -5439,16 +5466,16 @@ class Prism::ClassVariableReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4343 + # source://prism//lib/prism/node.rb#4373 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#4366 + # source://prism//lib/prism/node.rb#4396 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -5457,7 +5484,7 @@ class Prism::ClassVariableReadNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#4378 + # source://prism//lib/prism/node.rb#4408 sig { override.returns(String) } def inspect; end @@ -5467,20 +5494,20 @@ class Prism::ClassVariableReadNode < ::Prism::Node # # @@_test # name `:@@_test` # - # source://prism//lib/prism/node.rb#4375 + # source://prism//lib/prism/node.rb#4405 sig { returns(Symbol) } def name; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#4383 + # source://prism//lib/prism/node.rb#4413 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#4388 + # source://prism//lib/prism/node.rb#4418 def type; end end end @@ -5490,49 +5517,49 @@ end # @@foo, @@bar = baz # ^^^^^ ^^^^^ # -# source://prism//lib/prism/node.rb#4404 +# source://prism//lib/prism/node.rb#4434 class Prism::ClassVariableTargetNode < ::Prism::Node # Initialize a new ClassVariableTargetNode node. # # @return [ClassVariableTargetNode] a new instance of ClassVariableTargetNode # - # source://prism//lib/prism/node.rb#4406 + # source://prism//lib/prism/node.rb#4436 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#4467 + # source://prism//lib/prism/node.rb#4497 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#4415 + # source://prism//lib/prism/node.rb#4445 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4420 + # source://prism//lib/prism/node.rb#4450 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#4430 + # source://prism//lib/prism/node.rb#4460 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#4425 + # source://prism//lib/prism/node.rb#4455 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol) -> ClassVariableTargetNode # - # source://prism//lib/prism/node.rb#4435 + # source://prism//lib/prism/node.rb#4465 sig do params( node_id: Integer, @@ -5543,16 +5570,16 @@ class Prism::ClassVariableTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4420 + # source://prism//lib/prism/node.rb#4450 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#4443 + # source://prism//lib/prism/node.rb#4473 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -5561,26 +5588,26 @@ class Prism::ClassVariableTargetNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#4451 + # source://prism//lib/prism/node.rb#4481 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#4448 + # source://prism//lib/prism/node.rb#4478 sig { returns(Symbol) } def name; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#4456 + # source://prism//lib/prism/node.rb#4486 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#4461 + # source://prism//lib/prism/node.rb#4491 def type; end end end @@ -5590,13 +5617,13 @@ end # @@foo = 1 # ^^^^^^^^^ # -# source://prism//lib/prism/node.rb#4477 +# source://prism//lib/prism/node.rb#4507 class Prism::ClassVariableWriteNode < ::Prism::Node # Initialize a new ClassVariableWriteNode node. # # @return [ClassVariableWriteNode] a new instance of ClassVariableWriteNode # - # source://prism//lib/prism/node.rb#4479 + # source://prism//lib/prism/node.rb#4509 sig do params( source: Prism::Source, @@ -5614,36 +5641,36 @@ class Prism::ClassVariableWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#4593 + # source://prism//lib/prism/node.rb#4623 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#4491 + # source://prism//lib/prism/node.rb#4521 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4496 + # source://prism//lib/prism/node.rb#4526 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#4506 + # source://prism//lib/prism/node.rb#4536 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#4501 + # source://prism//lib/prism/node.rb#4531 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?value: Prism::node, ?operator_loc: Location) -> ClassVariableWriteNode # - # source://prism//lib/prism/node.rb#4511 + # source://prism//lib/prism/node.rb#4541 sig do params( node_id: Integer, @@ -5657,16 +5684,16 @@ class Prism::ClassVariableWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4496 + # source://prism//lib/prism/node.rb#4526 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node, operator_loc: Location } # - # source://prism//lib/prism/node.rb#4519 + # source://prism//lib/prism/node.rb#4549 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -5675,7 +5702,7 @@ class Prism::ClassVariableWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#4577 + # source://prism//lib/prism/node.rb#4607 sig { override.returns(String) } def inspect; end @@ -5685,7 +5712,7 @@ class Prism::ClassVariableWriteNode < ::Prism::Node # # @@_test = :test # name `@@_test` # - # source://prism//lib/prism/node.rb#4528 + # source://prism//lib/prism/node.rb#4558 sig { returns(Symbol) } def name; end @@ -5694,13 +5721,13 @@ class Prism::ClassVariableWriteNode < ::Prism::Node # @@foo = :bar # ^^^^^ # - # source://prism//lib/prism/node.rb#4534 + # source://prism//lib/prism/node.rb#4564 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#4572 + # source://prism//lib/prism/node.rb#4602 sig { returns(String) } def operator; end @@ -5709,25 +5736,25 @@ class Prism::ClassVariableWriteNode < ::Prism::Node # @@foo = :bar # ^ # - # source://prism//lib/prism/node.rb#4559 + # source://prism//lib/prism/node.rb#4589 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4542 + # source://prism//lib/prism/node.rb#4572 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4567 + # source://prism//lib/prism/node.rb#4597 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#4582 + # source://prism//lib/prism/node.rb#4612 sig { override.returns(Symbol) } def type; end @@ -5739,14 +5766,14 @@ class Prism::ClassVariableWriteNode < ::Prism::Node # @@_xyz = 123 # ^^^ # - # source://prism//lib/prism/node.rb#4553 + # source://prism//lib/prism/node.rb#4583 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#4587 + # source://prism//lib/prism/node.rb#4617 def type; end end end @@ -5765,49 +5792,49 @@ end # introduce some kind of LRU cache to limit the number of entries, but this # has not yet been implemented. # -# source://prism//lib/prism/parse_result.rb#189 +# source://prism//lib/prism/parse_result.rb#190 class Prism::CodeUnitsCache # Initialize a new cache with the given source and encoding. # # @return [CodeUnitsCache] a new instance of CodeUnitsCache # - # source://prism//lib/prism/parse_result.rb#215 + # source://prism//lib/prism/parse_result.rb#216 sig { params(source: String, encoding: Encoding).void } def initialize(source, encoding); end # Retrieve the code units offset from the given byte offset. # - # source://prism//lib/prism/parse_result.rb#229 + # source://prism//lib/prism/parse_result.rb#230 sig { params(byte_offset: Integer).returns(Integer) } def [](byte_offset); end end -# source://prism//lib/prism/parse_result.rb#201 +# source://prism//lib/prism/parse_result.rb#202 class Prism::CodeUnitsCache::LengthCounter # @return [LengthCounter] a new instance of LengthCounter # - # source://prism//lib/prism/parse_result.rb#202 + # source://prism//lib/prism/parse_result.rb#203 def initialize(source, encoding); end - # source://prism//lib/prism/parse_result.rb#207 + # source://prism//lib/prism/parse_result.rb#208 def count(byte_offset, byte_length); end end -# source://prism//lib/prism/parse_result.rb#190 +# source://prism//lib/prism/parse_result.rb#191 class Prism::CodeUnitsCache::UTF16Counter # @return [UTF16Counter] a new instance of UTF16Counter # - # source://prism//lib/prism/parse_result.rb#191 + # source://prism//lib/prism/parse_result.rb#192 def initialize(source, encoding); end - # source://prism//lib/prism/parse_result.rb#196 + # source://prism//lib/prism/parse_result.rb#197 def count(byte_offset, byte_length); end end # This represents a comment that was encountered during parsing. It is the # base class for all comment types. # -# source://prism//lib/prism/parse_result.rb#524 +# source://prism//lib/prism/parse_result.rb#525 class Prism::Comment abstract! @@ -5815,25 +5842,25 @@ class Prism::Comment # # @return [Comment] a new instance of Comment # - # source://prism//lib/prism/parse_result.rb#529 + # source://prism//lib/prism/parse_result.rb#530 sig { params(location: Prism::Location).void } def initialize(location); end # Implement the hash pattern matching interface for Comment. # - # source://prism//lib/prism/parse_result.rb#534 + # source://prism//lib/prism/parse_result.rb#535 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # The location of this comment in the source. # - # source://prism//lib/prism/parse_result.rb#526 + # source://prism//lib/prism/parse_result.rb#527 sig { returns(Prism::Location) } def location; end # Returns the content of the comment by slicing it from the source code. # - # source://prism//lib/prism/parse_result.rb#539 + # source://prism//lib/prism/parse_result.rb#540 sig { returns(String) } def slice; end @@ -5858,930 +5885,779 @@ end # Prism.parse("1 + 2").value.accept(SExpressions.new) # # => [:program, [[[:call, [[:integer], [:arguments, [[:integer]]]]]]]] # -# source://prism//lib/prism/compiler.rb#27 +# source://prism//lib/prism/compiler.rb#30 class Prism::Compiler < ::Prism::Visitor # Visit an individual node. # - # source://prism//lib/prism/compiler.rb#29 + # source://prism//lib/prism/compiler.rb#32 sig { params(node: T.nilable(Prism::Node)).returns(T.untyped) } def visit(node); end - # Visit the child nodes of the given node. # Compile a AliasGlobalVariableNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#47 def visit_alias_global_variable_node(node); end - # Visit the child nodes of the given node. # Compile a AliasMethodNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#52 def visit_alias_method_node(node); end # Visit a list of nodes. # - # source://prism//lib/prism/compiler.rb#34 + # source://prism//lib/prism/compiler.rb#37 sig { params(nodes: T::Array[T.nilable(Prism::Node)]).returns(T::Array[T.untyped]) } def visit_all(nodes); end - # Visit the child nodes of the given node. # Compile a AlternationPatternNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#57 def visit_alternation_pattern_node(node); end - # Visit the child nodes of the given node. # Compile a AndNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#62 def visit_and_node(node); end - # Visit the child nodes of the given node. # Compile a ArgumentsNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#67 def visit_arguments_node(node); end - # Visit the child nodes of the given node. # Compile a ArrayNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#72 def visit_array_node(node); end - # Visit the child nodes of the given node. # Compile a ArrayPatternNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#77 def visit_array_pattern_node(node); end - # Visit the child nodes of the given node. # Compile a AssocNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#82 def visit_assoc_node(node); end - # Visit the child nodes of the given node. # Compile a AssocSplatNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#87 def visit_assoc_splat_node(node); end - # Visit the child nodes of the given node. # Compile a BackReferenceReadNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#92 def visit_back_reference_read_node(node); end - # Visit the child nodes of the given node. # Compile a BeginNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#97 def visit_begin_node(node); end - # Visit the child nodes of the given node. # Compile a BlockArgumentNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#102 def visit_block_argument_node(node); end - # Visit the child nodes of the given node. # Compile a BlockLocalVariableNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#107 def visit_block_local_variable_node(node); end - # Visit the child nodes of the given node. # Compile a BlockNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#112 def visit_block_node(node); end - # Visit the child nodes of the given node. # Compile a BlockParameterNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#117 def visit_block_parameter_node(node); end - # Visit the child nodes of the given node. # Compile a BlockParametersNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#122 def visit_block_parameters_node(node); end - # Visit the child nodes of the given node. # Compile a BreakNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#127 def visit_break_node(node); end - # Visit the child nodes of the given node. # Compile a CallAndWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#132 def visit_call_and_write_node(node); end - # Visit the child nodes of the given node. # Compile a CallNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#137 def visit_call_node(node); end - # Visit the child nodes of the given node. # Compile a CallOperatorWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#142 def visit_call_operator_write_node(node); end - # Visit the child nodes of the given node. # Compile a CallOrWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#147 def visit_call_or_write_node(node); end - # Visit the child nodes of the given node. # Compile a CallTargetNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#152 def visit_call_target_node(node); end - # Visit the child nodes of the given node. # Compile a CapturePatternNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#157 def visit_capture_pattern_node(node); end - # Visit the child nodes of the given node. # Compile a CaseMatchNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#162 def visit_case_match_node(node); end - # Visit the child nodes of the given node. # Compile a CaseNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#167 def visit_case_node(node); end # Visit the child nodes of the given node. # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#42 sig { params(node: Prism::Node).returns(T::Array[T.untyped]) } def visit_child_nodes(node); end - # Visit the child nodes of the given node. # Compile a ClassNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#172 def visit_class_node(node); end - # Visit the child nodes of the given node. # Compile a ClassVariableAndWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#177 def visit_class_variable_and_write_node(node); end - # Visit the child nodes of the given node. # Compile a ClassVariableOperatorWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#182 def visit_class_variable_operator_write_node(node); end - # Visit the child nodes of the given node. # Compile a ClassVariableOrWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#187 def visit_class_variable_or_write_node(node); end - # Visit the child nodes of the given node. # Compile a ClassVariableReadNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#192 def visit_class_variable_read_node(node); end - # Visit the child nodes of the given node. # Compile a ClassVariableTargetNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#197 def visit_class_variable_target_node(node); end - # Visit the child nodes of the given node. # Compile a ClassVariableWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#202 def visit_class_variable_write_node(node); end - # Visit the child nodes of the given node. # Compile a ConstantAndWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#207 def visit_constant_and_write_node(node); end - # Visit the child nodes of the given node. # Compile a ConstantOperatorWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#212 def visit_constant_operator_write_node(node); end - # Visit the child nodes of the given node. # Compile a ConstantOrWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#217 def visit_constant_or_write_node(node); end - # Visit the child nodes of the given node. # Compile a ConstantPathAndWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#222 def visit_constant_path_and_write_node(node); end - # Visit the child nodes of the given node. # Compile a ConstantPathNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#227 def visit_constant_path_node(node); end - # Visit the child nodes of the given node. # Compile a ConstantPathOperatorWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#232 def visit_constant_path_operator_write_node(node); end - # Visit the child nodes of the given node. # Compile a ConstantPathOrWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#237 def visit_constant_path_or_write_node(node); end - # Visit the child nodes of the given node. # Compile a ConstantPathTargetNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#242 def visit_constant_path_target_node(node); end - # Visit the child nodes of the given node. # Compile a ConstantPathWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#247 def visit_constant_path_write_node(node); end - # Visit the child nodes of the given node. # Compile a ConstantReadNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#252 def visit_constant_read_node(node); end - # Visit the child nodes of the given node. # Compile a ConstantTargetNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#257 def visit_constant_target_node(node); end - # Visit the child nodes of the given node. # Compile a ConstantWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#262 def visit_constant_write_node(node); end - # Visit the child nodes of the given node. # Compile a DefNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#267 def visit_def_node(node); end - # Visit the child nodes of the given node. # Compile a DefinedNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#272 def visit_defined_node(node); end - # Visit the child nodes of the given node. # Compile a ElseNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#277 def visit_else_node(node); end - # Visit the child nodes of the given node. # Compile a EmbeddedStatementsNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#282 def visit_embedded_statements_node(node); end - # Visit the child nodes of the given node. # Compile a EmbeddedVariableNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#287 def visit_embedded_variable_node(node); end - # Visit the child nodes of the given node. # Compile a EnsureNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#292 def visit_ensure_node(node); end - # Visit the child nodes of the given node. # Compile a FalseNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#297 def visit_false_node(node); end - # Visit the child nodes of the given node. # Compile a FindPatternNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#302 def visit_find_pattern_node(node); end - # Visit the child nodes of the given node. # Compile a FlipFlopNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#307 def visit_flip_flop_node(node); end - # Visit the child nodes of the given node. # Compile a FloatNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#312 def visit_float_node(node); end - # Visit the child nodes of the given node. # Compile a ForNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#317 def visit_for_node(node); end - # Visit the child nodes of the given node. # Compile a ForwardingArgumentsNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#322 def visit_forwarding_arguments_node(node); end - # Visit the child nodes of the given node. # Compile a ForwardingParameterNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#327 def visit_forwarding_parameter_node(node); end - # Visit the child nodes of the given node. # Compile a ForwardingSuperNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#332 def visit_forwarding_super_node(node); end - # Visit the child nodes of the given node. # Compile a GlobalVariableAndWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#337 def visit_global_variable_and_write_node(node); end - # Visit the child nodes of the given node. # Compile a GlobalVariableOperatorWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#342 def visit_global_variable_operator_write_node(node); end - # Visit the child nodes of the given node. # Compile a GlobalVariableOrWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#347 def visit_global_variable_or_write_node(node); end - # Visit the child nodes of the given node. # Compile a GlobalVariableReadNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#352 def visit_global_variable_read_node(node); end - # Visit the child nodes of the given node. # Compile a GlobalVariableTargetNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#357 def visit_global_variable_target_node(node); end - # Visit the child nodes of the given node. # Compile a GlobalVariableWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#362 def visit_global_variable_write_node(node); end - # Visit the child nodes of the given node. # Compile a HashNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#367 def visit_hash_node(node); end - # Visit the child nodes of the given node. # Compile a HashPatternNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#372 def visit_hash_pattern_node(node); end - # Visit the child nodes of the given node. # Compile a IfNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#377 def visit_if_node(node); end - # Visit the child nodes of the given node. # Compile a ImaginaryNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#382 def visit_imaginary_node(node); end - # Visit the child nodes of the given node. # Compile a ImplicitNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#387 def visit_implicit_node(node); end - # Visit the child nodes of the given node. # Compile a ImplicitRestNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#392 def visit_implicit_rest_node(node); end - # Visit the child nodes of the given node. # Compile a InNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#397 def visit_in_node(node); end - # Visit the child nodes of the given node. # Compile a IndexAndWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#402 def visit_index_and_write_node(node); end - # Visit the child nodes of the given node. # Compile a IndexOperatorWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#407 def visit_index_operator_write_node(node); end - # Visit the child nodes of the given node. # Compile a IndexOrWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#412 def visit_index_or_write_node(node); end - # Visit the child nodes of the given node. # Compile a IndexTargetNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#417 def visit_index_target_node(node); end - # Visit the child nodes of the given node. # Compile a InstanceVariableAndWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#422 def visit_instance_variable_and_write_node(node); end - # Visit the child nodes of the given node. # Compile a InstanceVariableOperatorWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#427 def visit_instance_variable_operator_write_node(node); end - # Visit the child nodes of the given node. # Compile a InstanceVariableOrWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#432 def visit_instance_variable_or_write_node(node); end - # Visit the child nodes of the given node. # Compile a InstanceVariableReadNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#437 def visit_instance_variable_read_node(node); end - # Visit the child nodes of the given node. # Compile a InstanceVariableTargetNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#442 def visit_instance_variable_target_node(node); end - # Visit the child nodes of the given node. # Compile a InstanceVariableWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#447 def visit_instance_variable_write_node(node); end - # Visit the child nodes of the given node. # Compile a IntegerNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#452 def visit_integer_node(node); end - # Visit the child nodes of the given node. # Compile a InterpolatedMatchLastLineNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#457 def visit_interpolated_match_last_line_node(node); end - # Visit the child nodes of the given node. # Compile a InterpolatedRegularExpressionNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#462 def visit_interpolated_regular_expression_node(node); end - # Visit the child nodes of the given node. # Compile a InterpolatedStringNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#467 def visit_interpolated_string_node(node); end - # Visit the child nodes of the given node. # Compile a InterpolatedSymbolNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#472 def visit_interpolated_symbol_node(node); end - # Visit the child nodes of the given node. # Compile a InterpolatedXStringNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#477 def visit_interpolated_x_string_node(node); end - # Visit the child nodes of the given node. # Compile a ItLocalVariableReadNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#482 def visit_it_local_variable_read_node(node); end - # Visit the child nodes of the given node. # Compile a ItParametersNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#487 def visit_it_parameters_node(node); end - # Visit the child nodes of the given node. # Compile a KeywordHashNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#492 def visit_keyword_hash_node(node); end - # Visit the child nodes of the given node. # Compile a KeywordRestParameterNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#497 def visit_keyword_rest_parameter_node(node); end - # Visit the child nodes of the given node. # Compile a LambdaNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#502 def visit_lambda_node(node); end - # Visit the child nodes of the given node. # Compile a LocalVariableAndWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#507 def visit_local_variable_and_write_node(node); end - # Visit the child nodes of the given node. # Compile a LocalVariableOperatorWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#512 def visit_local_variable_operator_write_node(node); end - # Visit the child nodes of the given node. # Compile a LocalVariableOrWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#517 def visit_local_variable_or_write_node(node); end - # Visit the child nodes of the given node. # Compile a LocalVariableReadNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#522 def visit_local_variable_read_node(node); end - # Visit the child nodes of the given node. # Compile a LocalVariableTargetNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#527 def visit_local_variable_target_node(node); end - # Visit the child nodes of the given node. # Compile a LocalVariableWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#532 def visit_local_variable_write_node(node); end - # Visit the child nodes of the given node. # Compile a MatchLastLineNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#537 def visit_match_last_line_node(node); end - # Visit the child nodes of the given node. # Compile a MatchPredicateNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#542 def visit_match_predicate_node(node); end - # Visit the child nodes of the given node. # Compile a MatchRequiredNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#547 def visit_match_required_node(node); end - # Visit the child nodes of the given node. # Compile a MatchWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#552 def visit_match_write_node(node); end - # Visit the child nodes of the given node. # Compile a MissingNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#557 def visit_missing_node(node); end - # Visit the child nodes of the given node. # Compile a ModuleNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#562 def visit_module_node(node); end - # Visit the child nodes of the given node. # Compile a MultiTargetNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#567 def visit_multi_target_node(node); end - # Visit the child nodes of the given node. # Compile a MultiWriteNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#572 def visit_multi_write_node(node); end - # Visit the child nodes of the given node. # Compile a NextNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#577 def visit_next_node(node); end - # Visit the child nodes of the given node. # Compile a NilNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#582 def visit_nil_node(node); end - # Visit the child nodes of the given node. # Compile a NoKeywordsParameterNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#587 def visit_no_keywords_parameter_node(node); end - # Visit the child nodes of the given node. # Compile a NumberedParametersNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#592 def visit_numbered_parameters_node(node); end - # Visit the child nodes of the given node. # Compile a NumberedReferenceReadNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#597 def visit_numbered_reference_read_node(node); end - # Visit the child nodes of the given node. # Compile a OptionalKeywordParameterNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#602 def visit_optional_keyword_parameter_node(node); end - # Visit the child nodes of the given node. # Compile a OptionalParameterNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#607 def visit_optional_parameter_node(node); end - # Visit the child nodes of the given node. # Compile a OrNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#612 def visit_or_node(node); end - # Visit the child nodes of the given node. # Compile a ParametersNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#617 def visit_parameters_node(node); end - # Visit the child nodes of the given node. # Compile a ParenthesesNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#622 def visit_parentheses_node(node); end - # Visit the child nodes of the given node. # Compile a PinnedExpressionNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#627 def visit_pinned_expression_node(node); end - # Visit the child nodes of the given node. # Compile a PinnedVariableNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#632 def visit_pinned_variable_node(node); end - # Visit the child nodes of the given node. # Compile a PostExecutionNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#637 def visit_post_execution_node(node); end - # Visit the child nodes of the given node. # Compile a PreExecutionNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#642 def visit_pre_execution_node(node); end - # Visit the child nodes of the given node. # Compile a ProgramNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#647 def visit_program_node(node); end - # Visit the child nodes of the given node. # Compile a RangeNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#652 def visit_range_node(node); end - # Visit the child nodes of the given node. # Compile a RationalNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#657 def visit_rational_node(node); end - # Visit the child nodes of the given node. # Compile a RedoNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#662 def visit_redo_node(node); end - # Visit the child nodes of the given node. # Compile a RegularExpressionNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#667 def visit_regular_expression_node(node); end - # Visit the child nodes of the given node. # Compile a RequiredKeywordParameterNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#672 def visit_required_keyword_parameter_node(node); end - # Visit the child nodes of the given node. # Compile a RequiredParameterNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#677 def visit_required_parameter_node(node); end - # Visit the child nodes of the given node. # Compile a RescueModifierNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#682 def visit_rescue_modifier_node(node); end - # Visit the child nodes of the given node. # Compile a RescueNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#687 def visit_rescue_node(node); end - # Visit the child nodes of the given node. # Compile a RestParameterNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#692 def visit_rest_parameter_node(node); end - # Visit the child nodes of the given node. # Compile a RetryNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#697 def visit_retry_node(node); end - # Visit the child nodes of the given node. # Compile a ReturnNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#702 def visit_return_node(node); end - # Visit the child nodes of the given node. # Compile a SelfNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#707 def visit_self_node(node); end - # Visit the child nodes of the given node. # Compile a ShareableConstantNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#712 def visit_shareable_constant_node(node); end - # Visit the child nodes of the given node. # Compile a SingletonClassNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#717 def visit_singleton_class_node(node); end - # Visit the child nodes of the given node. # Compile a SourceEncodingNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#722 def visit_source_encoding_node(node); end - # Visit the child nodes of the given node. # Compile a SourceFileNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#727 def visit_source_file_node(node); end - # Visit the child nodes of the given node. # Compile a SourceLineNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#732 def visit_source_line_node(node); end - # Visit the child nodes of the given node. # Compile a SplatNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#737 def visit_splat_node(node); end - # Visit the child nodes of the given node. # Compile a StatementsNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#742 def visit_statements_node(node); end - # Visit the child nodes of the given node. # Compile a StringNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#747 def visit_string_node(node); end - # Visit the child nodes of the given node. # Compile a SuperNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#752 def visit_super_node(node); end - # Visit the child nodes of the given node. # Compile a SymbolNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#757 def visit_symbol_node(node); end - # Visit the child nodes of the given node. # Compile a TrueNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#762 def visit_true_node(node); end - # Visit the child nodes of the given node. # Compile a UndefNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#767 def visit_undef_node(node); end - # Visit the child nodes of the given node. # Compile a UnlessNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#772 def visit_unless_node(node); end - # Visit the child nodes of the given node. # Compile a UntilNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#777 def visit_until_node(node); end - # Visit the child nodes of the given node. # Compile a WhenNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#782 def visit_when_node(node); end - # Visit the child nodes of the given node. # Compile a WhileNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#787 def visit_while_node(node); end - # Visit the child nodes of the given node. # Compile a XStringNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#792 def visit_x_string_node(node); end - # Visit the child nodes of the given node. # Compile a YieldNode node # - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#797 def visit_yield_node(node); end end @@ -6790,13 +6666,13 @@ end # Target &&= value # ^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#4606 +# source://prism//lib/prism/node.rb#4636 class Prism::ConstantAndWriteNode < ::Prism::Node # Initialize a new ConstantAndWriteNode node. # # @return [ConstantAndWriteNode] a new instance of ConstantAndWriteNode # - # source://prism//lib/prism/node.rb#4608 + # source://prism//lib/prism/node.rb#4638 sig do params( source: Prism::Source, @@ -6814,36 +6690,36 @@ class Prism::ConstantAndWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#4706 + # source://prism//lib/prism/node.rb#4736 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#4620 + # source://prism//lib/prism/node.rb#4650 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4625 + # source://prism//lib/prism/node.rb#4655 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#4635 + # source://prism//lib/prism/node.rb#4665 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#4630 + # source://prism//lib/prism/node.rb#4660 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?operator_loc: Location, ?value: Prism::node) -> ConstantAndWriteNode # - # source://prism//lib/prism/node.rb#4640 + # source://prism//lib/prism/node.rb#4670 sig do params( node_id: Integer, @@ -6857,20 +6733,20 @@ class Prism::ConstantAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4625 + # source://prism//lib/prism/node.rb#4655 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#4648 + # source://prism//lib/prism/node.rb#4678 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#182 + # source://prism//lib/prism/desugar_compiler.rb#183 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -6878,62 +6754,62 @@ class Prism::ConstantAndWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#4690 + # source://prism//lib/prism/node.rb#4720 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#4653 + # source://prism//lib/prism/node.rb#4683 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#4656 + # source://prism//lib/prism/node.rb#4686 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#4685 + # source://prism//lib/prism/node.rb#4715 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#4669 + # source://prism//lib/prism/node.rb#4699 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4664 + # source://prism//lib/prism/node.rb#4694 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4677 + # source://prism//lib/prism/node.rb#4707 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#4695 + # source://prism//lib/prism/node.rb#4725 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#4682 + # source://prism//lib/prism/node.rb#4712 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#4700 + # source://prism//lib/prism/node.rb#4730 def type; end end end @@ -6943,13 +6819,13 @@ end # Target += value # ^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#4719 +# source://prism//lib/prism/node.rb#4749 class Prism::ConstantOperatorWriteNode < ::Prism::Node # Initialize a new ConstantOperatorWriteNode node. # # @return [ConstantOperatorWriteNode] a new instance of ConstantOperatorWriteNode # - # source://prism//lib/prism/node.rb#4721 + # source://prism//lib/prism/node.rb#4751 sig do params( source: Prism::Source, @@ -6968,48 +6844,48 @@ class Prism::ConstantOperatorWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#4818 + # source://prism//lib/prism/node.rb#4848 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#4734 + # source://prism//lib/prism/node.rb#4764 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader binary_operator: Symbol # - # source://prism//lib/prism/node.rb#4799 + # source://prism//lib/prism/node.rb#4829 sig { returns(Symbol) } def binary_operator; end # attr_reader binary_operator_loc: Location # - # source://prism//lib/prism/node.rb#4783 + # source://prism//lib/prism/node.rb#4813 sig { returns(Prism::Location) } def binary_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4739 + # source://prism//lib/prism/node.rb#4769 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#4749 + # source://prism//lib/prism/node.rb#4779 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#4744 + # source://prism//lib/prism/node.rb#4774 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?binary_operator_loc: Location, ?value: Prism::node, ?binary_operator: Symbol) -> ConstantOperatorWriteNode # - # source://prism//lib/prism/node.rb#4754 + # source://prism//lib/prism/node.rb#4784 sig do params( node_id: Integer, @@ -7024,20 +6900,20 @@ class Prism::ConstantOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4739 + # source://prism//lib/prism/node.rb#4769 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, binary_operator_loc: Location, value: Prism::node, binary_operator: Symbol } # - # source://prism//lib/prism/node.rb#4762 + # source://prism//lib/prism/node.rb#4792 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#194 + # source://prism//lib/prism/desugar_compiler.rb#195 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -7045,62 +6921,62 @@ class Prism::ConstantOperatorWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#4802 + # source://prism//lib/prism/node.rb#4832 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#4767 + # source://prism//lib/prism/node.rb#4797 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#4770 + # source://prism//lib/prism/node.rb#4800 sig { returns(Prism::Location) } def name_loc; end # Returns the binary operator used to modify the receiver. This method is # deprecated in favor of #binary_operator. # - # source://prism//lib/prism/node_ext.rb#371 + # source://prism//lib/prism/node_ext.rb#374 def operator; end # Returns the location of the binary operator used to modify the receiver. # This method is deprecated in favor of #binary_operator_loc. # - # source://prism//lib/prism/node_ext.rb#378 + # source://prism//lib/prism/node_ext.rb#381 def operator_loc; end # Save the binary_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4791 + # source://prism//lib/prism/node.rb#4821 def save_binary_operator_loc(repository); end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4778 + # source://prism//lib/prism/node.rb#4808 def save_name_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#4807 + # source://prism//lib/prism/node.rb#4837 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#4796 + # source://prism//lib/prism/node.rb#4826 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#4812 + # source://prism//lib/prism/node.rb#4842 def type; end end end @@ -7110,13 +6986,13 @@ end # Target ||= value # ^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#4832 +# source://prism//lib/prism/node.rb#4862 class Prism::ConstantOrWriteNode < ::Prism::Node # Initialize a new ConstantOrWriteNode node. # # @return [ConstantOrWriteNode] a new instance of ConstantOrWriteNode # - # source://prism//lib/prism/node.rb#4834 + # source://prism//lib/prism/node.rb#4864 sig do params( source: Prism::Source, @@ -7134,36 +7010,36 @@ class Prism::ConstantOrWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#4932 + # source://prism//lib/prism/node.rb#4962 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#4846 + # source://prism//lib/prism/node.rb#4876 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4851 + # source://prism//lib/prism/node.rb#4881 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#4861 + # source://prism//lib/prism/node.rb#4891 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#4856 + # source://prism//lib/prism/node.rb#4886 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?operator_loc: Location, ?value: Prism::node) -> ConstantOrWriteNode # - # source://prism//lib/prism/node.rb#4866 + # source://prism//lib/prism/node.rb#4896 sig do params( node_id: Integer, @@ -7177,20 +7053,20 @@ class Prism::ConstantOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4851 + # source://prism//lib/prism/node.rb#4881 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#4874 + # source://prism//lib/prism/node.rb#4904 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#188 + # source://prism//lib/prism/desugar_compiler.rb#189 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -7198,62 +7074,62 @@ class Prism::ConstantOrWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#4916 + # source://prism//lib/prism/node.rb#4946 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#4879 + # source://prism//lib/prism/node.rb#4909 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#4882 + # source://prism//lib/prism/node.rb#4912 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#4911 + # source://prism//lib/prism/node.rb#4941 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#4895 + # source://prism//lib/prism/node.rb#4925 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4890 + # source://prism//lib/prism/node.rb#4920 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#4903 + # source://prism//lib/prism/node.rb#4933 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#4921 + # source://prism//lib/prism/node.rb#4951 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#4908 + # source://prism//lib/prism/node.rb#4938 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#4926 + # source://prism//lib/prism/node.rb#4956 def type; end end end @@ -7263,13 +7139,13 @@ end # Parent::Child &&= value # ^^^^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#4945 +# source://prism//lib/prism/node.rb#4975 class Prism::ConstantPathAndWriteNode < ::Prism::Node # Initialize a new ConstantPathAndWriteNode node. # # @return [ConstantPathAndWriteNode] a new instance of ConstantPathAndWriteNode # - # source://prism//lib/prism/node.rb#4947 + # source://prism//lib/prism/node.rb#4977 sig do params( source: Prism::Source, @@ -7286,36 +7162,36 @@ class Prism::ConstantPathAndWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#5031 + # source://prism//lib/prism/node.rb#5061 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#4958 + # source://prism//lib/prism/node.rb#4988 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4963 + # source://prism//lib/prism/node.rb#4993 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#4973 + # source://prism//lib/prism/node.rb#5003 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#4968 + # source://prism//lib/prism/node.rb#4998 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?target: ConstantPathNode, ?operator_loc: Location, ?value: Prism::node) -> ConstantPathAndWriteNode # - # source://prism//lib/prism/node.rb#4978 + # source://prism//lib/prism/node.rb#5008 sig do params( node_id: Integer, @@ -7328,16 +7204,16 @@ class Prism::ConstantPathAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), target: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#4963 + # source://prism//lib/prism/node.rb#4993 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, target: ConstantPathNode, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#4986 + # source://prism//lib/prism/node.rb#5016 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -7346,50 +7222,50 @@ class Prism::ConstantPathAndWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#5015 + # source://prism//lib/prism/node.rb#5045 sig { override.returns(String) } def inspect; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#5010 + # source://prism//lib/prism/node.rb#5040 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#4994 + # source://prism//lib/prism/node.rb#5024 sig { returns(Prism::Location) } def operator_loc; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#5002 + # source://prism//lib/prism/node.rb#5032 def save_operator_loc(repository); end # attr_reader target: ConstantPathNode # - # source://prism//lib/prism/node.rb#4991 + # source://prism//lib/prism/node.rb#5021 sig { returns(Prism::ConstantPathNode) } def target; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#5020 + # source://prism//lib/prism/node.rb#5050 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#5007 + # source://prism//lib/prism/node.rb#5037 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#5025 + # source://prism//lib/prism/node.rb#5055 def type; end end end @@ -7399,13 +7275,13 @@ end # Foo::Bar # ^^^^^^^^ # -# source://prism//lib/prism/node.rb#5043 +# source://prism//lib/prism/node.rb#5073 class Prism::ConstantPathNode < ::Prism::Node # Initialize a new ConstantPathNode node. # # @return [ConstantPathNode] a new instance of ConstantPathNode # - # source://prism//lib/prism/node.rb#5045 + # source://prism//lib/prism/node.rb#5075 sig do params( source: Prism::Source, @@ -7423,12 +7299,12 @@ class Prism::ConstantPathNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#5166 + # source://prism//lib/prism/node.rb#5196 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#5057 + # source://prism//lib/prism/node.rb#5087 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -7436,30 +7312,30 @@ class Prism::ConstantPathNode < ::Prism::Node # constant read or a missing node. To not cause a breaking change, we # continue to supply that API. # - # source://prism//lib/prism/node_ext.rb#202 + # source://prism//lib/prism/node_ext.rb#205 def child; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5062 + # source://prism//lib/prism/node.rb#5092 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#5074 + # source://prism//lib/prism/node.rb#5104 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#5067 + # source://prism//lib/prism/node.rb#5097 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?parent: Prism::node?, ?name: Symbol?, ?delimiter_loc: Location, ?name_loc: Location) -> ConstantPathNode # - # source://prism//lib/prism/node.rb#5079 + # source://prism//lib/prism/node.rb#5109 sig do params( node_id: Integer, @@ -7473,22 +7349,22 @@ class Prism::ConstantPathNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), parent: T.unsafe(nil), name: T.unsafe(nil), delimiter_loc: T.unsafe(nil), name_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5062 + # source://prism//lib/prism/node.rb#5092 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, parent: Prism::node?, name: Symbol?, delimiter_loc: Location, name_loc: Location } # - # source://prism//lib/prism/node.rb#5087 + # source://prism//lib/prism/node.rb#5117 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # def delimiter: () -> String # - # source://prism//lib/prism/node.rb#5145 + # source://prism//lib/prism/node.rb#5175 sig { returns(String) } def delimiter; end @@ -7500,7 +7376,7 @@ class Prism::ConstantPathNode < ::Prism::Node # One::Two # ^^ # - # source://prism//lib/prism/node.rb#5113 + # source://prism//lib/prism/node.rb#5143 sig { returns(Prism::Location) } def delimiter_loc; end @@ -7509,26 +7385,26 @@ class Prism::ConstantPathNode < ::Prism::Node # Returns the full name of this constant path. For example: "Foo::Bar" # - # source://prism//lib/prism/node_ext.rb#195 + # source://prism//lib/prism/node_ext.rb#198 sig { returns(String) } def full_name; end # Returns the list of parts for the full name of this constant path. # For example: [:Foo, :Bar] # - # source://prism//lib/prism/node_ext.rb#173 + # source://prism//lib/prism/node_ext.rb#176 sig { returns(T::Array[Symbol]) } def full_name_parts; end # def inspect -> String # - # source://prism//lib/prism/node.rb#5150 + # source://prism//lib/prism/node.rb#5180 sig { override.returns(String) } def inspect; end # The name of the constant being accessed. This could be `nil` in the event of a syntax error. # - # source://prism//lib/prism/node.rb#5104 + # source://prism//lib/prism/node.rb#5134 sig { returns(T.nilable(Symbol)) } def name; end @@ -7540,7 +7416,7 @@ class Prism::ConstantPathNode < ::Prism::Node # One::Two # ^^^ # - # source://prism//lib/prism/node.rb#5132 + # source://prism//lib/prism/node.rb#5162 sig { returns(Prism::Location) } def name_loc; end @@ -7555,32 +7431,32 @@ class Prism::ConstantPathNode < ::Prism::Node # a.b::C # ^^^ # - # source://prism//lib/prism/node.rb#5101 + # source://prism//lib/prism/node.rb#5131 sig { returns(T.nilable(Prism::Node)) } def parent; end # Save the delimiter_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#5121 + # source://prism//lib/prism/node.rb#5151 def save_delimiter_loc(repository); end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#5140 + # source://prism//lib/prism/node.rb#5170 def save_name_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#5155 + # source://prism//lib/prism/node.rb#5185 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#5160 + # source://prism//lib/prism/node.rb#5190 def type; end end end @@ -7592,14 +7468,14 @@ end # var::Bar::Baz -> raises because the first part of the constant path is a # local variable # -# source://prism//lib/prism/node_ext.rb#164 +# source://prism//lib/prism/node_ext.rb#167 class Prism::ConstantPathNode::DynamicPartsInConstantPathError < ::StandardError; end # An error class raised when missing nodes are found while computing a # constant path's full name. For example: # Foo:: -> raises because the constant path is missing the last part # -# source://prism//lib/prism/node_ext.rb#169 +# source://prism//lib/prism/node_ext.rb#172 class Prism::ConstantPathNode::MissingNodesInConstantPathError < ::StandardError; end # Represents assigning to a constant path using an operator that isn't `=`. @@ -7607,13 +7483,13 @@ class Prism::ConstantPathNode::MissingNodesInConstantPathError < ::StandardError # Parent::Child += value # ^^^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#5179 +# source://prism//lib/prism/node.rb#5209 class Prism::ConstantPathOperatorWriteNode < ::Prism::Node # Initialize a new ConstantPathOperatorWriteNode node. # # @return [ConstantPathOperatorWriteNode] a new instance of ConstantPathOperatorWriteNode # - # source://prism//lib/prism/node.rb#5181 + # source://prism//lib/prism/node.rb#5211 sig do params( source: Prism::Source, @@ -7631,48 +7507,48 @@ class Prism::ConstantPathOperatorWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#5264 + # source://prism//lib/prism/node.rb#5294 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#5193 + # source://prism//lib/prism/node.rb#5223 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader binary_operator: Symbol # - # source://prism//lib/prism/node.rb#5245 + # source://prism//lib/prism/node.rb#5275 sig { returns(Symbol) } def binary_operator; end # attr_reader binary_operator_loc: Location # - # source://prism//lib/prism/node.rb#5229 + # source://prism//lib/prism/node.rb#5259 sig { returns(Prism::Location) } def binary_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5198 + # source://prism//lib/prism/node.rb#5228 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#5208 + # source://prism//lib/prism/node.rb#5238 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#5203 + # source://prism//lib/prism/node.rb#5233 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?target: ConstantPathNode, ?binary_operator_loc: Location, ?value: Prism::node, ?binary_operator: Symbol) -> ConstantPathOperatorWriteNode # - # source://prism//lib/prism/node.rb#5213 + # source://prism//lib/prism/node.rb#5243 sig do params( node_id: Integer, @@ -7686,16 +7562,16 @@ class Prism::ConstantPathOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), target: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5198 + # source://prism//lib/prism/node.rb#5228 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, target: ConstantPathNode, binary_operator_loc: Location, value: Prism::node, binary_operator: Symbol } # - # source://prism//lib/prism/node.rb#5221 + # source://prism//lib/prism/node.rb#5251 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -7704,50 +7580,50 @@ class Prism::ConstantPathOperatorWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#5248 + # source://prism//lib/prism/node.rb#5278 sig { override.returns(String) } def inspect; end # Returns the binary operator used to modify the receiver. This method is # deprecated in favor of #binary_operator. # - # source://prism//lib/prism/node_ext.rb#387 + # source://prism//lib/prism/node_ext.rb#390 def operator; end # Returns the location of the binary operator used to modify the receiver. # This method is deprecated in favor of #binary_operator_loc. # - # source://prism//lib/prism/node_ext.rb#394 + # source://prism//lib/prism/node_ext.rb#397 def operator_loc; end # Save the binary_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#5237 + # source://prism//lib/prism/node.rb#5267 def save_binary_operator_loc(repository); end # attr_reader target: ConstantPathNode # - # source://prism//lib/prism/node.rb#5226 + # source://prism//lib/prism/node.rb#5256 sig { returns(Prism::ConstantPathNode) } def target; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#5253 + # source://prism//lib/prism/node.rb#5283 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#5242 + # source://prism//lib/prism/node.rb#5272 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#5258 + # source://prism//lib/prism/node.rb#5288 def type; end end end @@ -7757,13 +7633,13 @@ end # Parent::Child ||= value # ^^^^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#5277 +# source://prism//lib/prism/node.rb#5307 class Prism::ConstantPathOrWriteNode < ::Prism::Node # Initialize a new ConstantPathOrWriteNode node. # # @return [ConstantPathOrWriteNode] a new instance of ConstantPathOrWriteNode # - # source://prism//lib/prism/node.rb#5279 + # source://prism//lib/prism/node.rb#5309 sig do params( source: Prism::Source, @@ -7780,36 +7656,36 @@ class Prism::ConstantPathOrWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#5363 + # source://prism//lib/prism/node.rb#5393 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#5290 + # source://prism//lib/prism/node.rb#5320 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5295 + # source://prism//lib/prism/node.rb#5325 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#5305 + # source://prism//lib/prism/node.rb#5335 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#5300 + # source://prism//lib/prism/node.rb#5330 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?target: ConstantPathNode, ?operator_loc: Location, ?value: Prism::node) -> ConstantPathOrWriteNode # - # source://prism//lib/prism/node.rb#5310 + # source://prism//lib/prism/node.rb#5340 sig do params( node_id: Integer, @@ -7822,16 +7698,16 @@ class Prism::ConstantPathOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), target: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5295 + # source://prism//lib/prism/node.rb#5325 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, target: ConstantPathNode, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#5318 + # source://prism//lib/prism/node.rb#5348 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -7840,50 +7716,50 @@ class Prism::ConstantPathOrWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#5347 + # source://prism//lib/prism/node.rb#5377 sig { override.returns(String) } def inspect; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#5342 + # source://prism//lib/prism/node.rb#5372 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#5326 + # source://prism//lib/prism/node.rb#5356 sig { returns(Prism::Location) } def operator_loc; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#5334 + # source://prism//lib/prism/node.rb#5364 def save_operator_loc(repository); end # attr_reader target: ConstantPathNode # - # source://prism//lib/prism/node.rb#5323 + # source://prism//lib/prism/node.rb#5353 sig { returns(Prism::ConstantPathNode) } def target; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#5352 + # source://prism//lib/prism/node.rb#5382 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#5339 + # source://prism//lib/prism/node.rb#5369 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#5357 + # source://prism//lib/prism/node.rb#5387 def type; end end end @@ -7893,13 +7769,13 @@ end # Foo::Foo, Bar::Bar = baz # ^^^^^^^^ ^^^^^^^^ # -# source://prism//lib/prism/node.rb#5375 +# source://prism//lib/prism/node.rb#5405 class Prism::ConstantPathTargetNode < ::Prism::Node # Initialize a new ConstantPathTargetNode node. # # @return [ConstantPathTargetNode] a new instance of ConstantPathTargetNode # - # source://prism//lib/prism/node.rb#5377 + # source://prism//lib/prism/node.rb#5407 sig do params( source: Prism::Source, @@ -7917,12 +7793,12 @@ class Prism::ConstantPathTargetNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#5477 + # source://prism//lib/prism/node.rb#5507 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#5389 + # source://prism//lib/prism/node.rb#5419 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -7930,30 +7806,30 @@ class Prism::ConstantPathTargetNode < ::Prism::Node # constant read or a missing node. To not cause a breaking change, we # continue to supply that API. # - # source://prism//lib/prism/node_ext.rb#243 + # source://prism//lib/prism/node_ext.rb#246 def child; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5394 + # source://prism//lib/prism/node.rb#5424 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#5406 + # source://prism//lib/prism/node.rb#5436 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#5399 + # source://prism//lib/prism/node.rb#5429 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?parent: Prism::node?, ?name: Symbol?, ?delimiter_loc: Location, ?name_loc: Location) -> ConstantPathTargetNode # - # source://prism//lib/prism/node.rb#5411 + # source://prism//lib/prism/node.rb#5441 sig do params( node_id: Integer, @@ -7967,28 +7843,28 @@ class Prism::ConstantPathTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), parent: T.unsafe(nil), name: T.unsafe(nil), delimiter_loc: T.unsafe(nil), name_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5394 + # source://prism//lib/prism/node.rb#5424 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, parent: Prism::node?, name: Symbol?, delimiter_loc: Location, name_loc: Location } # - # source://prism//lib/prism/node.rb#5419 + # source://prism//lib/prism/node.rb#5449 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # def delimiter: () -> String # - # source://prism//lib/prism/node.rb#5456 + # source://prism//lib/prism/node.rb#5486 sig { returns(String) } def delimiter; end # attr_reader delimiter_loc: Location # - # source://prism//lib/prism/node.rb#5430 + # source://prism//lib/prism/node.rb#5460 sig { returns(Prism::Location) } def delimiter_loc; end @@ -7997,63 +7873,63 @@ class Prism::ConstantPathTargetNode < ::Prism::Node # Returns the full name of this constant path. For example: "Foo::Bar" # - # source://prism//lib/prism/node_ext.rb#236 + # source://prism//lib/prism/node_ext.rb#239 sig { returns(String) } def full_name; end # Returns the list of parts for the full name of this constant path. # For example: [:Foo, :Bar] # - # source://prism//lib/prism/node_ext.rb#216 + # source://prism//lib/prism/node_ext.rb#219 sig { returns(T::Array[Symbol]) } def full_name_parts; end # def inspect -> String # - # source://prism//lib/prism/node.rb#5461 + # source://prism//lib/prism/node.rb#5491 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol? # - # source://prism//lib/prism/node.rb#5427 + # source://prism//lib/prism/node.rb#5457 sig { returns(T.nilable(Symbol)) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#5443 + # source://prism//lib/prism/node.rb#5473 sig { returns(Prism::Location) } def name_loc; end # attr_reader parent: Prism::node? # - # source://prism//lib/prism/node.rb#5424 + # source://prism//lib/prism/node.rb#5454 sig { returns(T.nilable(Prism::Node)) } def parent; end # Save the delimiter_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#5438 + # source://prism//lib/prism/node.rb#5468 def save_delimiter_loc(repository); end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#5451 + # source://prism//lib/prism/node.rb#5481 def save_name_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#5466 + # source://prism//lib/prism/node.rb#5496 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#5471 + # source://prism//lib/prism/node.rb#5501 def type; end end end @@ -8069,13 +7945,13 @@ end # ::Foo::Bar = 1 # ^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#5496 +# source://prism//lib/prism/node.rb#5526 class Prism::ConstantPathWriteNode < ::Prism::Node # Initialize a new ConstantPathWriteNode node. # # @return [ConstantPathWriteNode] a new instance of ConstantPathWriteNode # - # source://prism//lib/prism/node.rb#5498 + # source://prism//lib/prism/node.rb#5528 sig do params( source: Prism::Source, @@ -8092,36 +7968,36 @@ class Prism::ConstantPathWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#5594 + # source://prism//lib/prism/node.rb#5624 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#5509 + # source://prism//lib/prism/node.rb#5539 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5514 + # source://prism//lib/prism/node.rb#5544 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#5524 + # source://prism//lib/prism/node.rb#5554 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#5519 + # source://prism//lib/prism/node.rb#5549 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?target: ConstantPathNode, ?operator_loc: Location, ?value: Prism::node) -> ConstantPathWriteNode # - # source://prism//lib/prism/node.rb#5529 + # source://prism//lib/prism/node.rb#5559 sig do params( node_id: Integer, @@ -8134,16 +8010,16 @@ class Prism::ConstantPathWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), target: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5514 + # source://prism//lib/prism/node.rb#5544 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, target: ConstantPathNode, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#5537 + # source://prism//lib/prism/node.rb#5567 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -8152,13 +8028,13 @@ class Prism::ConstantPathWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#5578 + # source://prism//lib/prism/node.rb#5608 sig { override.returns(String) } def inspect; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#5573 + # source://prism//lib/prism/node.rb#5603 sig { returns(String) } def operator; end @@ -8167,14 +8043,14 @@ class Prism::ConstantPathWriteNode < ::Prism::Node # ::ABC = 123 # ^ # - # source://prism//lib/prism/node.rb#5554 + # source://prism//lib/prism/node.rb#5584 sig { returns(Prism::Location) } def operator_loc; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#5562 + # source://prism//lib/prism/node.rb#5592 def save_operator_loc(repository); end # A node representing the constant path being written to. @@ -8185,13 +8061,13 @@ class Prism::ConstantPathWriteNode < ::Prism::Node # ::Foo = :abc # ^^^^^ # - # source://prism//lib/prism/node.rb#5548 + # source://prism//lib/prism/node.rb#5578 sig { returns(Prism::ConstantPathNode) } def target; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#5583 + # source://prism//lib/prism/node.rb#5613 sig { override.returns(Symbol) } def type; end @@ -8200,14 +8076,14 @@ class Prism::ConstantPathWriteNode < ::Prism::Node # FOO::BAR = :abc # ^^^^ # - # source://prism//lib/prism/node.rb#5570 + # source://prism//lib/prism/node.rb#5600 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#5588 + # source://prism//lib/prism/node.rb#5618 def type; end end end @@ -8217,49 +8093,49 @@ end # Foo # ^^^ # -# source://prism//lib/prism/node.rb#5606 +# source://prism//lib/prism/node.rb#5636 class Prism::ConstantReadNode < ::Prism::Node # Initialize a new ConstantReadNode node. # # @return [ConstantReadNode] a new instance of ConstantReadNode # - # source://prism//lib/prism/node.rb#5608 + # source://prism//lib/prism/node.rb#5638 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#5673 + # source://prism//lib/prism/node.rb#5703 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#5617 + # source://prism//lib/prism/node.rb#5647 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5622 + # source://prism//lib/prism/node.rb#5652 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#5632 + # source://prism//lib/prism/node.rb#5662 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#5627 + # source://prism//lib/prism/node.rb#5657 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol) -> ConstantReadNode # - # source://prism//lib/prism/node.rb#5637 + # source://prism//lib/prism/node.rb#5667 sig do params( node_id: Integer, @@ -8270,16 +8146,16 @@ class Prism::ConstantReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5622 + # source://prism//lib/prism/node.rb#5652 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#5645 + # source://prism//lib/prism/node.rb#5675 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -8288,20 +8164,20 @@ class Prism::ConstantReadNode < ::Prism::Node # Returns the full name of this constant. For example: "Foo" # - # source://prism//lib/prism/node_ext.rb#139 + # source://prism//lib/prism/node_ext.rb#142 sig { returns(String) } def full_name; end # Returns the list of parts for the full name of this constant. # For example: [:Foo] # - # source://prism//lib/prism/node_ext.rb#134 + # source://prism//lib/prism/node_ext.rb#137 sig { returns(T::Array[Symbol]) } def full_name_parts; end # def inspect -> String # - # source://prism//lib/prism/node.rb#5657 + # source://prism//lib/prism/node.rb#5687 sig { override.returns(String) } def inspect; end @@ -8311,20 +8187,20 @@ class Prism::ConstantReadNode < ::Prism::Node # # SOME_CONSTANT # name `:SOME_CONSTANT` # - # source://prism//lib/prism/node.rb#5654 + # source://prism//lib/prism/node.rb#5684 sig { returns(Symbol) } def name; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#5662 + # source://prism//lib/prism/node.rb#5692 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#5667 + # source://prism//lib/prism/node.rb#5697 def type; end end end @@ -8334,49 +8210,49 @@ end # Foo, Bar = baz # ^^^ ^^^ # -# source://prism//lib/prism/node.rb#5683 +# source://prism//lib/prism/node.rb#5713 class Prism::ConstantTargetNode < ::Prism::Node # Initialize a new ConstantTargetNode node. # # @return [ConstantTargetNode] a new instance of ConstantTargetNode # - # source://prism//lib/prism/node.rb#5685 + # source://prism//lib/prism/node.rb#5715 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#5746 + # source://prism//lib/prism/node.rb#5776 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#5694 + # source://prism//lib/prism/node.rb#5724 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5699 + # source://prism//lib/prism/node.rb#5729 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#5709 + # source://prism//lib/prism/node.rb#5739 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#5704 + # source://prism//lib/prism/node.rb#5734 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol) -> ConstantTargetNode # - # source://prism//lib/prism/node.rb#5714 + # source://prism//lib/prism/node.rb#5744 sig do params( node_id: Integer, @@ -8387,16 +8263,16 @@ class Prism::ConstantTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5699 + # source://prism//lib/prism/node.rb#5729 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#5722 + # source://prism//lib/prism/node.rb#5752 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -8405,39 +8281,39 @@ class Prism::ConstantTargetNode < ::Prism::Node # Returns the full name of this constant. For example: "Foo" # - # source://prism//lib/prism/node_ext.rb#262 + # source://prism//lib/prism/node_ext.rb#265 sig { returns(String) } def full_name; end # Returns the list of parts for the full name of this constant. # For example: [:Foo] # - # source://prism//lib/prism/node_ext.rb#257 + # source://prism//lib/prism/node_ext.rb#260 sig { returns(T::Array[Symbol]) } def full_name_parts; end # def inspect -> String # - # source://prism//lib/prism/node.rb#5730 + # source://prism//lib/prism/node.rb#5760 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#5727 + # source://prism//lib/prism/node.rb#5757 sig { returns(Symbol) } def name; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#5735 + # source://prism//lib/prism/node.rb#5765 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#5740 + # source://prism//lib/prism/node.rb#5770 def type; end end end @@ -8447,13 +8323,13 @@ end # Foo = 1 # ^^^^^^^ # -# source://prism//lib/prism/node.rb#5756 +# source://prism//lib/prism/node.rb#5786 class Prism::ConstantWriteNode < ::Prism::Node # Initialize a new ConstantWriteNode node. # # @return [ConstantWriteNode] a new instance of ConstantWriteNode # - # source://prism//lib/prism/node.rb#5758 + # source://prism//lib/prism/node.rb#5788 sig do params( source: Prism::Source, @@ -8471,36 +8347,36 @@ class Prism::ConstantWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#5872 + # source://prism//lib/prism/node.rb#5902 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#5770 + # source://prism//lib/prism/node.rb#5800 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5775 + # source://prism//lib/prism/node.rb#5805 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#5785 + # source://prism//lib/prism/node.rb#5815 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#5780 + # source://prism//lib/prism/node.rb#5810 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?value: Prism::node, ?operator_loc: Location) -> ConstantWriteNode # - # source://prism//lib/prism/node.rb#5790 + # source://prism//lib/prism/node.rb#5820 sig do params( node_id: Integer, @@ -8514,16 +8390,16 @@ class Prism::ConstantWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5775 + # source://prism//lib/prism/node.rb#5805 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node, operator_loc: Location } # - # source://prism//lib/prism/node.rb#5798 + # source://prism//lib/prism/node.rb#5828 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -8532,20 +8408,20 @@ class Prism::ConstantWriteNode < ::Prism::Node # Returns the full name of this constant. For example: "Foo" # - # source://prism//lib/prism/node_ext.rb#152 + # source://prism//lib/prism/node_ext.rb#155 sig { returns(String) } def full_name; end # Returns the list of parts for the full name of this constant. # For example: [:Foo] # - # source://prism//lib/prism/node_ext.rb#147 + # source://prism//lib/prism/node_ext.rb#150 sig { returns(T::Array[Symbol]) } def full_name_parts; end # def inspect -> String # - # source://prism//lib/prism/node.rb#5856 + # source://prism//lib/prism/node.rb#5886 sig { override.returns(String) } def inspect; end @@ -8555,7 +8431,7 @@ class Prism::ConstantWriteNode < ::Prism::Node # # XYZ = 1 # name `:XYZ` # - # source://prism//lib/prism/node.rb#5807 + # source://prism//lib/prism/node.rb#5837 sig { returns(Symbol) } def name; end @@ -8564,13 +8440,13 @@ class Prism::ConstantWriteNode < ::Prism::Node # FOO = 1 # ^^^ # - # source://prism//lib/prism/node.rb#5813 + # source://prism//lib/prism/node.rb#5843 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#5851 + # source://prism//lib/prism/node.rb#5881 sig { returns(String) } def operator; end @@ -8579,25 +8455,25 @@ class Prism::ConstantWriteNode < ::Prism::Node # FOO = :bar # ^ # - # source://prism//lib/prism/node.rb#5838 + # source://prism//lib/prism/node.rb#5868 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#5821 + # source://prism//lib/prism/node.rb#5851 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#5846 + # source://prism//lib/prism/node.rb#5876 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#5861 + # source://prism//lib/prism/node.rb#5891 sig { override.returns(Symbol) } def type; end @@ -8609,14 +8485,14 @@ class Prism::ConstantWriteNode < ::Prism::Node # MyClass = Class.new # ^^^^^^^^^ # - # source://prism//lib/prism/node.rb#5832 + # source://prism//lib/prism/node.rb#5862 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#5866 + # source://prism//lib/prism/node.rb#5896 def type; end end end @@ -8673,13 +8549,13 @@ end # # This is mostly helpful in the context of generating trees programmatically. # -# source://prism//lib/prism/dsl.rb#61 +# source://prism//lib/prism/dsl.rb#64 module Prism::DSL extend ::Prism::DSL # Create a new AliasGlobalVariableNode node. # - # source://prism//lib/prism/dsl.rb#77 + # source://prism//lib/prism/dsl.rb#80 sig do params( source: Prism::Source, @@ -8695,7 +8571,7 @@ module Prism::DSL # Create a new AliasMethodNode node. # - # source://prism//lib/prism/dsl.rb#82 + # source://prism//lib/prism/dsl.rb#85 sig do params( source: Prism::Source, @@ -8711,7 +8587,7 @@ module Prism::DSL # Create a new AlternationPatternNode node. # - # source://prism//lib/prism/dsl.rb#87 + # source://prism//lib/prism/dsl.rb#90 sig do params( source: Prism::Source, @@ -8727,7 +8603,7 @@ module Prism::DSL # Create a new AndNode node. # - # source://prism//lib/prism/dsl.rb#92 + # source://prism//lib/prism/dsl.rb#95 sig do params( source: Prism::Source, @@ -8743,7 +8619,7 @@ module Prism::DSL # Create a new ArgumentsNode node. # - # source://prism//lib/prism/dsl.rb#97 + # source://prism//lib/prism/dsl.rb#100 sig do params( source: Prism::Source, @@ -8757,13 +8633,13 @@ module Prism::DSL # Retrieve the value of one of the ArgumentsNodeFlags flags. # - # source://prism//lib/prism/dsl.rb#832 + # source://prism//lib/prism/dsl.rb#835 sig { params(name: Symbol).returns(Integer) } def arguments_node_flag(name); end # Create a new ArrayNode node. # - # source://prism//lib/prism/dsl.rb#102 + # source://prism//lib/prism/dsl.rb#105 sig do params( source: Prism::Source, @@ -8779,20 +8655,20 @@ module Prism::DSL # Retrieve the value of one of the ArrayNodeFlags flags. # - # source://prism//lib/prism/dsl.rb#844 + # source://prism//lib/prism/dsl.rb#847 sig { params(name: Symbol).returns(Integer) } def array_node_flag(name); end # Create a new ArrayPatternNode node. # - # source://prism//lib/prism/dsl.rb#107 + # source://prism//lib/prism/dsl.rb#110 sig do params( source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), requireds: T::Array[Prism::Node], rest: T.nilable(Prism::Node), posts: T::Array[Prism::Node], @@ -8804,7 +8680,7 @@ module Prism::DSL # Create a new AssocNode node. # - # source://prism//lib/prism/dsl.rb#112 + # source://prism//lib/prism/dsl.rb#115 sig do params( source: Prism::Source, @@ -8820,7 +8696,7 @@ module Prism::DSL # Create a new AssocSplatNode node. # - # source://prism//lib/prism/dsl.rb#117 + # source://prism//lib/prism/dsl.rb#120 sig do params( source: Prism::Source, @@ -8835,7 +8711,7 @@ module Prism::DSL # Create a new BackReferenceReadNode node. # - # source://prism//lib/prism/dsl.rb#122 + # source://prism//lib/prism/dsl.rb#125 sig do params( source: Prism::Source, @@ -8849,7 +8725,7 @@ module Prism::DSL # Create a new BeginNode node. # - # source://prism//lib/prism/dsl.rb#127 + # source://prism//lib/prism/dsl.rb#130 sig do params( source: Prism::Source, @@ -8868,7 +8744,7 @@ module Prism::DSL # Create a new BlockArgumentNode node. # - # source://prism//lib/prism/dsl.rb#132 + # source://prism//lib/prism/dsl.rb#135 sig do params( source: Prism::Source, @@ -8883,7 +8759,7 @@ module Prism::DSL # Create a new BlockLocalVariableNode node. # - # source://prism//lib/prism/dsl.rb#137 + # source://prism//lib/prism/dsl.rb#140 sig do params( source: Prism::Source, @@ -8897,7 +8773,7 @@ module Prism::DSL # Create a new BlockNode node. # - # source://prism//lib/prism/dsl.rb#142 + # source://prism//lib/prism/dsl.rb#145 sig do params( source: Prism::Source, @@ -8915,7 +8791,7 @@ module Prism::DSL # Create a new BlockParameterNode node. # - # source://prism//lib/prism/dsl.rb#147 + # source://prism//lib/prism/dsl.rb#150 sig do params( source: Prism::Source, @@ -8931,7 +8807,7 @@ module Prism::DSL # Create a new BlockParametersNode node. # - # source://prism//lib/prism/dsl.rb#152 + # source://prism//lib/prism/dsl.rb#155 sig do params( source: Prism::Source, @@ -8948,7 +8824,7 @@ module Prism::DSL # Create a new BreakNode node. # - # source://prism//lib/prism/dsl.rb#157 + # source://prism//lib/prism/dsl.rb#160 sig do params( source: Prism::Source, @@ -8963,7 +8839,7 @@ module Prism::DSL # Create a new CallAndWriteNode node. # - # source://prism//lib/prism/dsl.rb#162 + # source://prism//lib/prism/dsl.rb#165 sig do params( source: Prism::Source, @@ -8983,7 +8859,7 @@ module Prism::DSL # Create a new CallNode node. # - # source://prism//lib/prism/dsl.rb#167 + # source://prism//lib/prism/dsl.rb#170 sig do params( source: Prism::Source, @@ -9004,13 +8880,13 @@ module Prism::DSL # Retrieve the value of one of the CallNodeFlags flags. # - # source://prism//lib/prism/dsl.rb#852 + # source://prism//lib/prism/dsl.rb#855 sig { params(name: Symbol).returns(Integer) } def call_node_flag(name); end # Create a new CallOperatorWriteNode node. # - # source://prism//lib/prism/dsl.rb#172 + # source://prism//lib/prism/dsl.rb#175 sig do params( source: Prism::Source, @@ -9031,7 +8907,7 @@ module Prism::DSL # Create a new CallOrWriteNode node. # - # source://prism//lib/prism/dsl.rb#177 + # source://prism//lib/prism/dsl.rb#180 sig do params( source: Prism::Source, @@ -9051,7 +8927,7 @@ module Prism::DSL # Create a new CallTargetNode node. # - # source://prism//lib/prism/dsl.rb#182 + # source://prism//lib/prism/dsl.rb#185 sig do params( source: Prism::Source, @@ -9068,7 +8944,7 @@ module Prism::DSL # Create a new CapturePatternNode node. # - # source://prism//lib/prism/dsl.rb#187 + # source://prism//lib/prism/dsl.rb#190 sig do params( source: Prism::Source, @@ -9084,7 +8960,7 @@ module Prism::DSL # Create a new CaseMatchNode node. # - # source://prism//lib/prism/dsl.rb#192 + # source://prism//lib/prism/dsl.rb#195 sig do params( source: Prism::Source, @@ -9102,7 +8978,7 @@ module Prism::DSL # Create a new CaseNode node. # - # source://prism//lib/prism/dsl.rb#197 + # source://prism//lib/prism/dsl.rb#200 sig do params( source: Prism::Source, @@ -9120,7 +8996,7 @@ module Prism::DSL # Create a new ClassNode node. # - # source://prism//lib/prism/dsl.rb#202 + # source://prism//lib/prism/dsl.rb#205 sig do params( source: Prism::Source, @@ -9141,7 +9017,7 @@ module Prism::DSL # Create a new ClassVariableAndWriteNode node. # - # source://prism//lib/prism/dsl.rb#207 + # source://prism//lib/prism/dsl.rb#210 sig do params( source: Prism::Source, @@ -9158,7 +9034,7 @@ module Prism::DSL # Create a new ClassVariableOperatorWriteNode node. # - # source://prism//lib/prism/dsl.rb#212 + # source://prism//lib/prism/dsl.rb#215 sig do params( source: Prism::Source, @@ -9176,7 +9052,7 @@ module Prism::DSL # Create a new ClassVariableOrWriteNode node. # - # source://prism//lib/prism/dsl.rb#217 + # source://prism//lib/prism/dsl.rb#220 sig do params( source: Prism::Source, @@ -9193,7 +9069,7 @@ module Prism::DSL # Create a new ClassVariableReadNode node. # - # source://prism//lib/prism/dsl.rb#222 + # source://prism//lib/prism/dsl.rb#225 sig do params( source: Prism::Source, @@ -9207,7 +9083,7 @@ module Prism::DSL # Create a new ClassVariableTargetNode node. # - # source://prism//lib/prism/dsl.rb#227 + # source://prism//lib/prism/dsl.rb#230 sig do params( source: Prism::Source, @@ -9221,7 +9097,7 @@ module Prism::DSL # Create a new ClassVariableWriteNode node. # - # source://prism//lib/prism/dsl.rb#232 + # source://prism//lib/prism/dsl.rb#235 sig do params( source: Prism::Source, @@ -9238,7 +9114,7 @@ module Prism::DSL # Create a new ConstantAndWriteNode node. # - # source://prism//lib/prism/dsl.rb#237 + # source://prism//lib/prism/dsl.rb#240 sig do params( source: Prism::Source, @@ -9255,7 +9131,7 @@ module Prism::DSL # Create a new ConstantOperatorWriteNode node. # - # source://prism//lib/prism/dsl.rb#242 + # source://prism//lib/prism/dsl.rb#245 sig do params( source: Prism::Source, @@ -9273,7 +9149,7 @@ module Prism::DSL # Create a new ConstantOrWriteNode node. # - # source://prism//lib/prism/dsl.rb#247 + # source://prism//lib/prism/dsl.rb#250 sig do params( source: Prism::Source, @@ -9290,7 +9166,7 @@ module Prism::DSL # Create a new ConstantPathAndWriteNode node. # - # source://prism//lib/prism/dsl.rb#252 + # source://prism//lib/prism/dsl.rb#255 sig do params( source: Prism::Source, @@ -9306,7 +9182,7 @@ module Prism::DSL # Create a new ConstantPathNode node. # - # source://prism//lib/prism/dsl.rb#257 + # source://prism//lib/prism/dsl.rb#260 sig do params( source: Prism::Source, @@ -9323,7 +9199,7 @@ module Prism::DSL # Create a new ConstantPathOperatorWriteNode node. # - # source://prism//lib/prism/dsl.rb#262 + # source://prism//lib/prism/dsl.rb#265 sig do params( source: Prism::Source, @@ -9340,7 +9216,7 @@ module Prism::DSL # Create a new ConstantPathOrWriteNode node. # - # source://prism//lib/prism/dsl.rb#267 + # source://prism//lib/prism/dsl.rb#270 sig do params( source: Prism::Source, @@ -9356,7 +9232,7 @@ module Prism::DSL # Create a new ConstantPathTargetNode node. # - # source://prism//lib/prism/dsl.rb#272 + # source://prism//lib/prism/dsl.rb#275 sig do params( source: Prism::Source, @@ -9373,7 +9249,7 @@ module Prism::DSL # Create a new ConstantPathWriteNode node. # - # source://prism//lib/prism/dsl.rb#277 + # source://prism//lib/prism/dsl.rb#280 sig do params( source: Prism::Source, @@ -9389,7 +9265,7 @@ module Prism::DSL # Create a new ConstantReadNode node. # - # source://prism//lib/prism/dsl.rb#282 + # source://prism//lib/prism/dsl.rb#285 sig do params( source: Prism::Source, @@ -9403,7 +9279,7 @@ module Prism::DSL # Create a new ConstantTargetNode node. # - # source://prism//lib/prism/dsl.rb#287 + # source://prism//lib/prism/dsl.rb#290 sig do params( source: Prism::Source, @@ -9417,7 +9293,7 @@ module Prism::DSL # Create a new ConstantWriteNode node. # - # source://prism//lib/prism/dsl.rb#292 + # source://prism//lib/prism/dsl.rb#295 sig do params( source: Prism::Source, @@ -9434,7 +9310,7 @@ module Prism::DSL # Create a new DefNode node. # - # source://prism//lib/prism/dsl.rb#297 + # source://prism//lib/prism/dsl.rb#300 sig do params( source: Prism::Source, @@ -9459,7 +9335,7 @@ module Prism::DSL # Create a new DefinedNode node. # - # source://prism//lib/prism/dsl.rb#302 + # source://prism//lib/prism/dsl.rb#305 sig do params( source: Prism::Source, @@ -9476,7 +9352,7 @@ module Prism::DSL # Create a new ElseNode node. # - # source://prism//lib/prism/dsl.rb#307 + # source://prism//lib/prism/dsl.rb#310 sig do params( source: Prism::Source, @@ -9492,7 +9368,7 @@ module Prism::DSL # Create a new EmbeddedStatementsNode node. # - # source://prism//lib/prism/dsl.rb#312 + # source://prism//lib/prism/dsl.rb#315 sig do params( source: Prism::Source, @@ -9508,7 +9384,7 @@ module Prism::DSL # Create a new EmbeddedVariableNode node. # - # source://prism//lib/prism/dsl.rb#317 + # source://prism//lib/prism/dsl.rb#320 sig do params( source: Prism::Source, @@ -9523,13 +9399,13 @@ module Prism::DSL # Retrieve the value of one of the EncodingFlags flags. # - # source://prism//lib/prism/dsl.rb#863 + # source://prism//lib/prism/dsl.rb#866 sig { params(name: Symbol).returns(Integer) } def encoding_flag(name); end # Create a new EnsureNode node. # - # source://prism//lib/prism/dsl.rb#322 + # source://prism//lib/prism/dsl.rb#325 sig do params( source: Prism::Source, @@ -9545,7 +9421,7 @@ module Prism::DSL # Create a new FalseNode node. # - # source://prism//lib/prism/dsl.rb#327 + # source://prism//lib/prism/dsl.rb#330 sig do params( source: Prism::Source, @@ -9558,14 +9434,14 @@ module Prism::DSL # Create a new FindPatternNode node. # - # source://prism//lib/prism/dsl.rb#332 + # source://prism//lib/prism/dsl.rb#335 sig do params( source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), left: Prism::SplatNode, requireds: T::Array[Prism::Node], right: T.any(Prism::SplatNode, Prism::MissingNode), @@ -9577,7 +9453,7 @@ module Prism::DSL # Create a new FlipFlopNode node. # - # source://prism//lib/prism/dsl.rb#337 + # source://prism//lib/prism/dsl.rb#340 sig do params( source: Prism::Source, @@ -9593,7 +9469,7 @@ module Prism::DSL # Create a new FloatNode node. # - # source://prism//lib/prism/dsl.rb#342 + # source://prism//lib/prism/dsl.rb#345 sig do params( source: Prism::Source, @@ -9607,7 +9483,7 @@ module Prism::DSL # Create a new ForNode node. # - # source://prism//lib/prism/dsl.rb#347 + # source://prism//lib/prism/dsl.rb#350 sig do params( source: Prism::Source, @@ -9627,7 +9503,7 @@ module Prism::DSL # Create a new ForwardingArgumentsNode node. # - # source://prism//lib/prism/dsl.rb#352 + # source://prism//lib/prism/dsl.rb#355 sig do params( source: Prism::Source, @@ -9640,7 +9516,7 @@ module Prism::DSL # Create a new ForwardingParameterNode node. # - # source://prism//lib/prism/dsl.rb#357 + # source://prism//lib/prism/dsl.rb#360 sig do params( source: Prism::Source, @@ -9653,7 +9529,7 @@ module Prism::DSL # Create a new ForwardingSuperNode node. # - # source://prism//lib/prism/dsl.rb#362 + # source://prism//lib/prism/dsl.rb#365 sig do params( source: Prism::Source, @@ -9667,7 +9543,7 @@ module Prism::DSL # Create a new GlobalVariableAndWriteNode node. # - # source://prism//lib/prism/dsl.rb#367 + # source://prism//lib/prism/dsl.rb#370 sig do params( source: Prism::Source, @@ -9684,7 +9560,7 @@ module Prism::DSL # Create a new GlobalVariableOperatorWriteNode node. # - # source://prism//lib/prism/dsl.rb#372 + # source://prism//lib/prism/dsl.rb#375 sig do params( source: Prism::Source, @@ -9702,7 +9578,7 @@ module Prism::DSL # Create a new GlobalVariableOrWriteNode node. # - # source://prism//lib/prism/dsl.rb#377 + # source://prism//lib/prism/dsl.rb#380 sig do params( source: Prism::Source, @@ -9719,7 +9595,7 @@ module Prism::DSL # Create a new GlobalVariableReadNode node. # - # source://prism//lib/prism/dsl.rb#382 + # source://prism//lib/prism/dsl.rb#385 sig do params( source: Prism::Source, @@ -9733,7 +9609,7 @@ module Prism::DSL # Create a new GlobalVariableTargetNode node. # - # source://prism//lib/prism/dsl.rb#387 + # source://prism//lib/prism/dsl.rb#390 sig do params( source: Prism::Source, @@ -9747,7 +9623,7 @@ module Prism::DSL # Create a new GlobalVariableWriteNode node. # - # source://prism//lib/prism/dsl.rb#392 + # source://prism//lib/prism/dsl.rb#395 sig do params( source: Prism::Source, @@ -9764,7 +9640,7 @@ module Prism::DSL # Create a new HashNode node. # - # source://prism//lib/prism/dsl.rb#397 + # source://prism//lib/prism/dsl.rb#400 sig do params( source: Prism::Source, @@ -9780,14 +9656,14 @@ module Prism::DSL # Create a new HashPatternNode node. # - # source://prism//lib/prism/dsl.rb#402 + # source://prism//lib/prism/dsl.rb#405 sig do params( source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), elements: T::Array[Prism::AssocNode], rest: T.nilable(T.any(Prism::AssocSplatNode, Prism::NoKeywordsParameterNode)), opening_loc: T.nilable(Prism::Location), @@ -9798,7 +9674,7 @@ module Prism::DSL # Create a new IfNode node. # - # source://prism//lib/prism/dsl.rb#407 + # source://prism//lib/prism/dsl.rb#410 sig do params( source: Prism::Source, @@ -9817,7 +9693,7 @@ module Prism::DSL # Create a new ImaginaryNode node. # - # source://prism//lib/prism/dsl.rb#412 + # source://prism//lib/prism/dsl.rb#415 sig do params( source: Prism::Source, @@ -9831,7 +9707,7 @@ module Prism::DSL # Create a new ImplicitNode node. # - # source://prism//lib/prism/dsl.rb#417 + # source://prism//lib/prism/dsl.rb#420 sig do params( source: Prism::Source, @@ -9845,7 +9721,7 @@ module Prism::DSL # Create a new ImplicitRestNode node. # - # source://prism//lib/prism/dsl.rb#422 + # source://prism//lib/prism/dsl.rb#425 sig do params( source: Prism::Source, @@ -9858,7 +9734,7 @@ module Prism::DSL # Create a new InNode node. # - # source://prism//lib/prism/dsl.rb#427 + # source://prism//lib/prism/dsl.rb#430 sig do params( source: Prism::Source, @@ -9875,7 +9751,7 @@ module Prism::DSL # Create a new IndexAndWriteNode node. # - # source://prism//lib/prism/dsl.rb#432 + # source://prism//lib/prism/dsl.rb#435 sig do params( source: Prism::Source, @@ -9896,7 +9772,7 @@ module Prism::DSL # Create a new IndexOperatorWriteNode node. # - # source://prism//lib/prism/dsl.rb#437 + # source://prism//lib/prism/dsl.rb#440 sig do params( source: Prism::Source, @@ -9918,7 +9794,7 @@ module Prism::DSL # Create a new IndexOrWriteNode node. # - # source://prism//lib/prism/dsl.rb#442 + # source://prism//lib/prism/dsl.rb#445 sig do params( source: Prism::Source, @@ -9939,7 +9815,7 @@ module Prism::DSL # Create a new IndexTargetNode node. # - # source://prism//lib/prism/dsl.rb#447 + # source://prism//lib/prism/dsl.rb#450 sig do params( source: Prism::Source, @@ -9957,7 +9833,7 @@ module Prism::DSL # Create a new InstanceVariableAndWriteNode node. # - # source://prism//lib/prism/dsl.rb#452 + # source://prism//lib/prism/dsl.rb#455 sig do params( source: Prism::Source, @@ -9974,7 +9850,7 @@ module Prism::DSL # Create a new InstanceVariableOperatorWriteNode node. # - # source://prism//lib/prism/dsl.rb#457 + # source://prism//lib/prism/dsl.rb#460 sig do params( source: Prism::Source, @@ -9992,7 +9868,7 @@ module Prism::DSL # Create a new InstanceVariableOrWriteNode node. # - # source://prism//lib/prism/dsl.rb#462 + # source://prism//lib/prism/dsl.rb#465 sig do params( source: Prism::Source, @@ -10009,7 +9885,7 @@ module Prism::DSL # Create a new InstanceVariableReadNode node. # - # source://prism//lib/prism/dsl.rb#467 + # source://prism//lib/prism/dsl.rb#470 sig do params( source: Prism::Source, @@ -10023,7 +9899,7 @@ module Prism::DSL # Create a new InstanceVariableTargetNode node. # - # source://prism//lib/prism/dsl.rb#472 + # source://prism//lib/prism/dsl.rb#475 sig do params( source: Prism::Source, @@ -10037,7 +9913,7 @@ module Prism::DSL # Create a new InstanceVariableWriteNode node. # - # source://prism//lib/prism/dsl.rb#477 + # source://prism//lib/prism/dsl.rb#480 sig do params( source: Prism::Source, @@ -10054,13 +9930,13 @@ module Prism::DSL # Retrieve the value of one of the IntegerBaseFlags flags. # - # source://prism//lib/prism/dsl.rb#872 + # source://prism//lib/prism/dsl.rb#875 sig { params(name: Symbol).returns(Integer) } def integer_base_flag(name); end # Create a new IntegerNode node. # - # source://prism//lib/prism/dsl.rb#482 + # source://prism//lib/prism/dsl.rb#485 sig do params( source: Prism::Source, @@ -10074,7 +9950,7 @@ module Prism::DSL # Create a new InterpolatedMatchLastLineNode node. # - # source://prism//lib/prism/dsl.rb#487 + # source://prism//lib/prism/dsl.rb#490 sig do params( source: Prism::Source, @@ -10090,7 +9966,7 @@ module Prism::DSL # Create a new InterpolatedRegularExpressionNode node. # - # source://prism//lib/prism/dsl.rb#492 + # source://prism//lib/prism/dsl.rb#495 sig do params( source: Prism::Source, @@ -10106,7 +9982,7 @@ module Prism::DSL # Create a new InterpolatedStringNode node. # - # source://prism//lib/prism/dsl.rb#497 + # source://prism//lib/prism/dsl.rb#500 sig do params( source: Prism::Source, @@ -10122,13 +9998,13 @@ module Prism::DSL # Retrieve the value of one of the InterpolatedStringNodeFlags flags. # - # source://prism//lib/prism/dsl.rb#883 + # source://prism//lib/prism/dsl.rb#886 sig { params(name: Symbol).returns(Integer) } def interpolated_string_node_flag(name); end # Create a new InterpolatedSymbolNode node. # - # source://prism//lib/prism/dsl.rb#502 + # source://prism//lib/prism/dsl.rb#505 sig do params( source: Prism::Source, @@ -10144,7 +10020,7 @@ module Prism::DSL # Create a new InterpolatedXStringNode node. # - # source://prism//lib/prism/dsl.rb#507 + # source://prism//lib/prism/dsl.rb#510 sig do params( source: Prism::Source, @@ -10160,7 +10036,7 @@ module Prism::DSL # Create a new ItLocalVariableReadNode node. # - # source://prism//lib/prism/dsl.rb#512 + # source://prism//lib/prism/dsl.rb#515 sig do params( source: Prism::Source, @@ -10173,7 +10049,7 @@ module Prism::DSL # Create a new ItParametersNode node. # - # source://prism//lib/prism/dsl.rb#517 + # source://prism//lib/prism/dsl.rb#520 sig do params( source: Prism::Source, @@ -10186,7 +10062,7 @@ module Prism::DSL # Create a new KeywordHashNode node. # - # source://prism//lib/prism/dsl.rb#522 + # source://prism//lib/prism/dsl.rb#525 sig do params( source: Prism::Source, @@ -10200,13 +10076,13 @@ module Prism::DSL # Retrieve the value of one of the KeywordHashNodeFlags flags. # - # source://prism//lib/prism/dsl.rb#892 + # source://prism//lib/prism/dsl.rb#895 sig { params(name: Symbol).returns(Integer) } def keyword_hash_node_flag(name); end # Create a new KeywordRestParameterNode node. # - # source://prism//lib/prism/dsl.rb#527 + # source://prism//lib/prism/dsl.rb#530 sig do params( source: Prism::Source, @@ -10222,7 +10098,7 @@ module Prism::DSL # Create a new LambdaNode node. # - # source://prism//lib/prism/dsl.rb#532 + # source://prism//lib/prism/dsl.rb#535 sig do params( source: Prism::Source, @@ -10241,7 +10117,7 @@ module Prism::DSL # Create a new LocalVariableAndWriteNode node. # - # source://prism//lib/prism/dsl.rb#537 + # source://prism//lib/prism/dsl.rb#540 sig do params( source: Prism::Source, @@ -10259,7 +10135,7 @@ module Prism::DSL # Create a new LocalVariableOperatorWriteNode node. # - # source://prism//lib/prism/dsl.rb#542 + # source://prism//lib/prism/dsl.rb#545 sig do params( source: Prism::Source, @@ -10278,7 +10154,7 @@ module Prism::DSL # Create a new LocalVariableOrWriteNode node. # - # source://prism//lib/prism/dsl.rb#547 + # source://prism//lib/prism/dsl.rb#550 sig do params( source: Prism::Source, @@ -10296,7 +10172,7 @@ module Prism::DSL # Create a new LocalVariableReadNode node. # - # source://prism//lib/prism/dsl.rb#552 + # source://prism//lib/prism/dsl.rb#555 sig do params( source: Prism::Source, @@ -10311,7 +10187,7 @@ module Prism::DSL # Create a new LocalVariableTargetNode node. # - # source://prism//lib/prism/dsl.rb#557 + # source://prism//lib/prism/dsl.rb#560 sig do params( source: Prism::Source, @@ -10326,7 +10202,7 @@ module Prism::DSL # Create a new LocalVariableWriteNode node. # - # source://prism//lib/prism/dsl.rb#562 + # source://prism//lib/prism/dsl.rb#565 sig do params( source: Prism::Source, @@ -10344,19 +10220,19 @@ module Prism::DSL # Create a new Location object. # - # source://prism//lib/prism/dsl.rb#72 + # source://prism//lib/prism/dsl.rb#75 sig { params(source: Prism::Source, start_offset: Integer, length: Integer).returns(Prism::Location) } def location(source: T.unsafe(nil), start_offset: T.unsafe(nil), length: T.unsafe(nil)); end # Retrieve the value of one of the LoopFlags flags. # - # source://prism//lib/prism/dsl.rb#900 + # source://prism//lib/prism/dsl.rb#903 sig { params(name: Symbol).returns(Integer) } def loop_flag(name); end # Create a new MatchLastLineNode node. # - # source://prism//lib/prism/dsl.rb#567 + # source://prism//lib/prism/dsl.rb#570 sig do params( source: Prism::Source, @@ -10373,7 +10249,7 @@ module Prism::DSL # Create a new MatchPredicateNode node. # - # source://prism//lib/prism/dsl.rb#572 + # source://prism//lib/prism/dsl.rb#575 sig do params( source: Prism::Source, @@ -10389,7 +10265,7 @@ module Prism::DSL # Create a new MatchRequiredNode node. # - # source://prism//lib/prism/dsl.rb#577 + # source://prism//lib/prism/dsl.rb#580 sig do params( source: Prism::Source, @@ -10405,7 +10281,7 @@ module Prism::DSL # Create a new MatchWriteNode node. # - # source://prism//lib/prism/dsl.rb#582 + # source://prism//lib/prism/dsl.rb#585 sig do params( source: Prism::Source, @@ -10420,7 +10296,7 @@ module Prism::DSL # Create a new MissingNode node. # - # source://prism//lib/prism/dsl.rb#587 + # source://prism//lib/prism/dsl.rb#590 sig do params( source: Prism::Source, @@ -10433,7 +10309,7 @@ module Prism::DSL # Create a new ModuleNode node. # - # source://prism//lib/prism/dsl.rb#592 + # source://prism//lib/prism/dsl.rb#595 sig do params( source: Prism::Source, @@ -10452,7 +10328,7 @@ module Prism::DSL # Create a new MultiTargetNode node. # - # source://prism//lib/prism/dsl.rb#597 + # source://prism//lib/prism/dsl.rb#600 sig do params( source: Prism::Source, @@ -10470,7 +10346,7 @@ module Prism::DSL # Create a new MultiWriteNode node. # - # source://prism//lib/prism/dsl.rb#602 + # source://prism//lib/prism/dsl.rb#605 sig do params( source: Prism::Source, @@ -10490,7 +10366,7 @@ module Prism::DSL # Create a new NextNode node. # - # source://prism//lib/prism/dsl.rb#607 + # source://prism//lib/prism/dsl.rb#610 sig do params( source: Prism::Source, @@ -10505,7 +10381,7 @@ module Prism::DSL # Create a new NilNode node. # - # source://prism//lib/prism/dsl.rb#612 + # source://prism//lib/prism/dsl.rb#615 sig do params( source: Prism::Source, @@ -10518,7 +10394,7 @@ module Prism::DSL # Create a new NoKeywordsParameterNode node. # - # source://prism//lib/prism/dsl.rb#617 + # source://prism//lib/prism/dsl.rb#620 sig do params( source: Prism::Source, @@ -10533,7 +10409,7 @@ module Prism::DSL # Create a new NumberedParametersNode node. # - # source://prism//lib/prism/dsl.rb#622 + # source://prism//lib/prism/dsl.rb#625 sig do params( source: Prism::Source, @@ -10547,7 +10423,7 @@ module Prism::DSL # Create a new NumberedReferenceReadNode node. # - # source://prism//lib/prism/dsl.rb#627 + # source://prism//lib/prism/dsl.rb#630 sig do params( source: Prism::Source, @@ -10561,7 +10437,7 @@ module Prism::DSL # Create a new OptionalKeywordParameterNode node. # - # source://prism//lib/prism/dsl.rb#632 + # source://prism//lib/prism/dsl.rb#635 sig do params( source: Prism::Source, @@ -10577,7 +10453,7 @@ module Prism::DSL # Create a new OptionalParameterNode node. # - # source://prism//lib/prism/dsl.rb#637 + # source://prism//lib/prism/dsl.rb#640 sig do params( source: Prism::Source, @@ -10594,7 +10470,7 @@ module Prism::DSL # Create a new OrNode node. # - # source://prism//lib/prism/dsl.rb#642 + # source://prism//lib/prism/dsl.rb#645 sig do params( source: Prism::Source, @@ -10610,13 +10486,13 @@ module Prism::DSL # Retrieve the value of one of the ParameterFlags flags. # - # source://prism//lib/prism/dsl.rb#908 + # source://prism//lib/prism/dsl.rb#911 sig { params(name: Symbol).returns(Integer) } def parameter_flag(name); end # Create a new ParametersNode node. # - # source://prism//lib/prism/dsl.rb#647 + # source://prism//lib/prism/dsl.rb#650 sig do params( source: Prism::Source, @@ -10636,7 +10512,7 @@ module Prism::DSL # Create a new ParenthesesNode node. # - # source://prism//lib/prism/dsl.rb#652 + # source://prism//lib/prism/dsl.rb#655 sig do params( source: Prism::Source, @@ -10652,13 +10528,13 @@ module Prism::DSL # Retrieve the value of one of the ParenthesesNodeFlags flags. # - # source://prism//lib/prism/dsl.rb#916 + # source://prism//lib/prism/dsl.rb#919 sig { params(name: Symbol).returns(Integer) } def parentheses_node_flag(name); end # Create a new PinnedExpressionNode node. # - # source://prism//lib/prism/dsl.rb#657 + # source://prism//lib/prism/dsl.rb#660 sig do params( source: Prism::Source, @@ -10675,7 +10551,7 @@ module Prism::DSL # Create a new PinnedVariableNode node. # - # source://prism//lib/prism/dsl.rb#662 + # source://prism//lib/prism/dsl.rb#665 sig do params( source: Prism::Source, @@ -10690,7 +10566,7 @@ module Prism::DSL # Create a new PostExecutionNode node. # - # source://prism//lib/prism/dsl.rb#667 + # source://prism//lib/prism/dsl.rb#670 sig do params( source: Prism::Source, @@ -10707,7 +10583,7 @@ module Prism::DSL # Create a new PreExecutionNode node. # - # source://prism//lib/prism/dsl.rb#672 + # source://prism//lib/prism/dsl.rb#675 sig do params( source: Prism::Source, @@ -10724,7 +10600,7 @@ module Prism::DSL # Create a new ProgramNode node. # - # source://prism//lib/prism/dsl.rb#677 + # source://prism//lib/prism/dsl.rb#680 sig do params( source: Prism::Source, @@ -10739,13 +10615,13 @@ module Prism::DSL # Retrieve the value of one of the RangeFlags flags. # - # source://prism//lib/prism/dsl.rb#924 + # source://prism//lib/prism/dsl.rb#927 sig { params(name: Symbol).returns(Integer) } def range_flag(name); end # Create a new RangeNode node. # - # source://prism//lib/prism/dsl.rb#682 + # source://prism//lib/prism/dsl.rb#685 sig do params( source: Prism::Source, @@ -10761,7 +10637,7 @@ module Prism::DSL # Create a new RationalNode node. # - # source://prism//lib/prism/dsl.rb#687 + # source://prism//lib/prism/dsl.rb#690 sig do params( source: Prism::Source, @@ -10776,7 +10652,7 @@ module Prism::DSL # Create a new RedoNode node. # - # source://prism//lib/prism/dsl.rb#692 + # source://prism//lib/prism/dsl.rb#695 sig do params( source: Prism::Source, @@ -10789,13 +10665,13 @@ module Prism::DSL # Retrieve the value of one of the RegularExpressionFlags flags. # - # source://prism//lib/prism/dsl.rb#932 + # source://prism//lib/prism/dsl.rb#935 sig { params(name: Symbol).returns(Integer) } def regular_expression_flag(name); end # Create a new RegularExpressionNode node. # - # source://prism//lib/prism/dsl.rb#697 + # source://prism//lib/prism/dsl.rb#700 sig do params( source: Prism::Source, @@ -10812,7 +10688,7 @@ module Prism::DSL # Create a new RequiredKeywordParameterNode node. # - # source://prism//lib/prism/dsl.rb#702 + # source://prism//lib/prism/dsl.rb#705 sig do params( source: Prism::Source, @@ -10827,7 +10703,7 @@ module Prism::DSL # Create a new RequiredParameterNode node. # - # source://prism//lib/prism/dsl.rb#707 + # source://prism//lib/prism/dsl.rb#710 sig do params( source: Prism::Source, @@ -10841,7 +10717,7 @@ module Prism::DSL # Create a new RescueModifierNode node. # - # source://prism//lib/prism/dsl.rb#712 + # source://prism//lib/prism/dsl.rb#715 sig do params( source: Prism::Source, @@ -10857,7 +10733,7 @@ module Prism::DSL # Create a new RescueNode node. # - # source://prism//lib/prism/dsl.rb#717 + # source://prism//lib/prism/dsl.rb#720 sig do params( source: Prism::Source, @@ -10877,7 +10753,7 @@ module Prism::DSL # Create a new RestParameterNode node. # - # source://prism//lib/prism/dsl.rb#722 + # source://prism//lib/prism/dsl.rb#725 sig do params( source: Prism::Source, @@ -10893,7 +10769,7 @@ module Prism::DSL # Create a new RetryNode node. # - # source://prism//lib/prism/dsl.rb#727 + # source://prism//lib/prism/dsl.rb#730 sig do params( source: Prism::Source, @@ -10906,7 +10782,7 @@ module Prism::DSL # Create a new ReturnNode node. # - # source://prism//lib/prism/dsl.rb#732 + # source://prism//lib/prism/dsl.rb#735 sig do params( source: Prism::Source, @@ -10921,7 +10797,7 @@ module Prism::DSL # Create a new SelfNode node. # - # source://prism//lib/prism/dsl.rb#737 + # source://prism//lib/prism/dsl.rb#740 sig do params( source: Prism::Source, @@ -10934,7 +10810,7 @@ module Prism::DSL # Create a new ShareableConstantNode node. # - # source://prism//lib/prism/dsl.rb#742 + # source://prism//lib/prism/dsl.rb#745 sig do params( source: Prism::Source, @@ -10948,13 +10824,13 @@ module Prism::DSL # Retrieve the value of one of the ShareableConstantNodeFlags flags. # - # source://prism//lib/prism/dsl.rb#950 + # source://prism//lib/prism/dsl.rb#953 sig { params(name: Symbol).returns(Integer) } def shareable_constant_node_flag(name); end # Create a new SingletonClassNode node. # - # source://prism//lib/prism/dsl.rb#747 + # source://prism//lib/prism/dsl.rb#750 sig do params( source: Prism::Source, @@ -10973,13 +10849,13 @@ module Prism::DSL # Create a new Source object. # - # source://prism//lib/prism/dsl.rb#67 + # source://prism//lib/prism/dsl.rb#70 sig { params(string: String).returns(Prism::Source) } def source(string); end # Create a new SourceEncodingNode node. # - # source://prism//lib/prism/dsl.rb#752 + # source://prism//lib/prism/dsl.rb#755 sig do params( source: Prism::Source, @@ -10992,7 +10868,7 @@ module Prism::DSL # Create a new SourceFileNode node. # - # source://prism//lib/prism/dsl.rb#757 + # source://prism//lib/prism/dsl.rb#760 sig do params( source: Prism::Source, @@ -11006,7 +10882,7 @@ module Prism::DSL # Create a new SourceLineNode node. # - # source://prism//lib/prism/dsl.rb#762 + # source://prism//lib/prism/dsl.rb#765 sig do params( source: Prism::Source, @@ -11019,7 +10895,7 @@ module Prism::DSL # Create a new SplatNode node. # - # source://prism//lib/prism/dsl.rb#767 + # source://prism//lib/prism/dsl.rb#770 sig do params( source: Prism::Source, @@ -11034,7 +10910,7 @@ module Prism::DSL # Create a new StatementsNode node. # - # source://prism//lib/prism/dsl.rb#772 + # source://prism//lib/prism/dsl.rb#775 sig do params( source: Prism::Source, @@ -11048,13 +10924,13 @@ module Prism::DSL # Retrieve the value of one of the StringFlags flags. # - # source://prism//lib/prism/dsl.rb#960 + # source://prism//lib/prism/dsl.rb#963 sig { params(name: Symbol).returns(Integer) } def string_flag(name); end # Create a new StringNode node. # - # source://prism//lib/prism/dsl.rb#777 + # source://prism//lib/prism/dsl.rb#780 sig do params( source: Prism::Source, @@ -11071,7 +10947,7 @@ module Prism::DSL # Create a new SuperNode node. # - # source://prism//lib/prism/dsl.rb#782 + # source://prism//lib/prism/dsl.rb#785 sig do params( source: Prism::Source, @@ -11089,13 +10965,13 @@ module Prism::DSL # Retrieve the value of one of the SymbolFlags flags. # - # source://prism//lib/prism/dsl.rb#971 + # source://prism//lib/prism/dsl.rb#974 sig { params(name: Symbol).returns(Integer) } def symbol_flag(name); end # Create a new SymbolNode node. # - # source://prism//lib/prism/dsl.rb#787 + # source://prism//lib/prism/dsl.rb#790 sig do params( source: Prism::Source, @@ -11112,7 +10988,7 @@ module Prism::DSL # Create a new TrueNode node. # - # source://prism//lib/prism/dsl.rb#792 + # source://prism//lib/prism/dsl.rb#795 sig do params( source: Prism::Source, @@ -11125,7 +11001,7 @@ module Prism::DSL # Create a new UndefNode node. # - # source://prism//lib/prism/dsl.rb#797 + # source://prism//lib/prism/dsl.rb#800 sig do params( source: Prism::Source, @@ -11140,7 +11016,7 @@ module Prism::DSL # Create a new UnlessNode node. # - # source://prism//lib/prism/dsl.rb#802 + # source://prism//lib/prism/dsl.rb#805 sig do params( source: Prism::Source, @@ -11159,7 +11035,7 @@ module Prism::DSL # Create a new UntilNode node. # - # source://prism//lib/prism/dsl.rb#807 + # source://prism//lib/prism/dsl.rb#810 sig do params( source: Prism::Source, @@ -11177,7 +11053,7 @@ module Prism::DSL # Create a new WhenNode node. # - # source://prism//lib/prism/dsl.rb#812 + # source://prism//lib/prism/dsl.rb#815 sig do params( source: Prism::Source, @@ -11194,7 +11070,7 @@ module Prism::DSL # Create a new WhileNode node. # - # source://prism//lib/prism/dsl.rb#817 + # source://prism//lib/prism/dsl.rb#820 sig do params( source: Prism::Source, @@ -11212,7 +11088,7 @@ module Prism::DSL # Create a new XStringNode node. # - # source://prism//lib/prism/dsl.rb#822 + # source://prism//lib/prism/dsl.rb#825 sig do params( source: Prism::Source, @@ -11229,7 +11105,7 @@ module Prism::DSL # Create a new YieldNode node. # - # source://prism//lib/prism/dsl.rb#827 + # source://prism//lib/prism/dsl.rb#830 sig do params( source: Prism::Source, @@ -11249,21 +11125,21 @@ module Prism::DSL # The default location object that gets attached to nodes if no location is # specified, which uses the given source. # - # source://prism//lib/prism/dsl.rb#990 + # source://prism//lib/prism/dsl.rb#993 sig { returns(Prism::Location) } def default_location; end # The default node that gets attached to nodes if no node is specified for a # required node field. # - # source://prism//lib/prism/dsl.rb#996 + # source://prism//lib/prism/dsl.rb#999 sig { params(source: Prism::Source, location: Prism::Location).returns(Prism::Node) } def default_node(source, location); end # The default source object that gets attached to nodes and locations if no # source is specified. # - # source://prism//lib/prism/dsl.rb#984 + # source://prism//lib/prism/dsl.rb#987 sig { returns(Prism::Source) } def default_source; end end @@ -11274,13 +11150,13 @@ end # end # ^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#5886 +# source://prism//lib/prism/node.rb#5916 class Prism::DefNode < ::Prism::Node # Initialize a new DefNode node. # # @return [DefNode] a new instance of DefNode # - # source://prism//lib/prism/node.rb#5888 + # source://prism//lib/prism/node.rb#5918 sig do params( source: Prism::Source, @@ -11306,42 +11182,42 @@ class Prism::DefNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#6127 + # source://prism//lib/prism/node.rb#6157 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#5908 + # source://prism//lib/prism/node.rb#5938 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader body: StatementsNode | BeginNode | nil # - # source://prism//lib/prism/node.rb#5967 + # source://prism//lib/prism/node.rb#5997 sig { returns(T.nilable(T.any(Prism::StatementsNode, Prism::BeginNode))) } def body; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5913 + # source://prism//lib/prism/node.rb#5943 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#5927 + # source://prism//lib/prism/node.rb#5957 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#5918 + # source://prism//lib/prism/node.rb#5948 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?receiver: Prism::node?, ?parameters: ParametersNode?, ?body: StatementsNode | BeginNode | nil, ?locals: Array[Symbol], ?def_keyword_loc: Location, ?operator_loc: Location?, ?lparen_loc: Location?, ?rparen_loc: Location?, ?equal_loc: Location?, ?end_keyword_loc: Location?) -> DefNode # - # source://prism//lib/prism/node.rb#5932 + # source://prism//lib/prism/node.rb#5962 sig do params( node_id: Integer, @@ -11363,52 +11239,52 @@ class Prism::DefNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), receiver: T.unsafe(nil), parameters: T.unsafe(nil), body: T.unsafe(nil), locals: T.unsafe(nil), def_keyword_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), lparen_loc: T.unsafe(nil), rparen_loc: T.unsafe(nil), equal_loc: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#5913 + # source://prism//lib/prism/node.rb#5943 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, receiver: Prism::node?, parameters: ParametersNode?, body: StatementsNode | BeginNode | nil, locals: Array[Symbol], def_keyword_loc: Location, operator_loc: Location?, lparen_loc: Location?, rparen_loc: Location?, equal_loc: Location?, end_keyword_loc: Location? } # - # source://prism//lib/prism/node.rb#5940 + # source://prism//lib/prism/node.rb#5970 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # def def_keyword: () -> String # - # source://prism//lib/prism/node.rb#6081 + # source://prism//lib/prism/node.rb#6111 sig { returns(String) } def def_keyword; end # attr_reader def_keyword_loc: Location # - # source://prism//lib/prism/node.rb#5973 + # source://prism//lib/prism/node.rb#6003 sig { returns(Prism::Location) } def def_keyword_loc; end # def end_keyword: () -> String? # - # source://prism//lib/prism/node.rb#6106 + # source://prism//lib/prism/node.rb#6136 sig { returns(T.nilable(String)) } def end_keyword; end # attr_reader end_keyword_loc: Location? # - # source://prism//lib/prism/node.rb#6062 + # source://prism//lib/prism/node.rb#6092 sig { returns(T.nilable(Prism::Location)) } def end_keyword_loc; end # def equal: () -> String? # - # source://prism//lib/prism/node.rb#6101 + # source://prism//lib/prism/node.rb#6131 sig { returns(T.nilable(String)) } def equal; end # attr_reader equal_loc: Location? # - # source://prism//lib/prism/node.rb#6043 + # source://prism//lib/prism/node.rb#6073 sig { returns(T.nilable(Prism::Location)) } def equal_loc; end @@ -11417,128 +11293,128 @@ class Prism::DefNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#6111 + # source://prism//lib/prism/node.rb#6141 sig { override.returns(String) } def inspect; end # attr_reader locals: Array[Symbol] # - # source://prism//lib/prism/node.rb#5970 + # source://prism//lib/prism/node.rb#6000 sig { returns(T::Array[Symbol]) } def locals; end # def lparen: () -> String? # - # source://prism//lib/prism/node.rb#6091 + # source://prism//lib/prism/node.rb#6121 sig { returns(T.nilable(String)) } def lparen; end # attr_reader lparen_loc: Location? # - # source://prism//lib/prism/node.rb#6005 + # source://prism//lib/prism/node.rb#6035 sig { returns(T.nilable(Prism::Location)) } def lparen_loc; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#5945 + # source://prism//lib/prism/node.rb#5975 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#5948 + # source://prism//lib/prism/node.rb#5978 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String? # - # source://prism//lib/prism/node.rb#6086 + # source://prism//lib/prism/node.rb#6116 sig { returns(T.nilable(String)) } def operator; end # attr_reader operator_loc: Location? # - # source://prism//lib/prism/node.rb#5986 + # source://prism//lib/prism/node.rb#6016 sig { returns(T.nilable(Prism::Location)) } def operator_loc; end # attr_reader parameters: ParametersNode? # - # source://prism//lib/prism/node.rb#5964 + # source://prism//lib/prism/node.rb#5994 sig { returns(T.nilable(Prism::ParametersNode)) } def parameters; end # attr_reader receiver: Prism::node? # - # source://prism//lib/prism/node.rb#5961 + # source://prism//lib/prism/node.rb#5991 sig { returns(T.nilable(Prism::Node)) } def receiver; end # def rparen: () -> String? # - # source://prism//lib/prism/node.rb#6096 + # source://prism//lib/prism/node.rb#6126 sig { returns(T.nilable(String)) } def rparen; end # attr_reader rparen_loc: Location? # - # source://prism//lib/prism/node.rb#6024 + # source://prism//lib/prism/node.rb#6054 sig { returns(T.nilable(Prism::Location)) } def rparen_loc; end # Save the def_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#5981 + # source://prism//lib/prism/node.rb#6011 def save_def_keyword_loc(repository); end # Save the end_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6076 + # source://prism//lib/prism/node.rb#6106 def save_end_keyword_loc(repository); end # Save the equal_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6057 + # source://prism//lib/prism/node.rb#6087 def save_equal_loc(repository); end # Save the lparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6019 + # source://prism//lib/prism/node.rb#6049 def save_lparen_loc(repository); end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#5956 + # source://prism//lib/prism/node.rb#5986 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6000 + # source://prism//lib/prism/node.rb#6030 def save_operator_loc(repository); end # Save the rparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6038 + # source://prism//lib/prism/node.rb#6068 def save_rparen_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#6116 + # source://prism//lib/prism/node.rb#6146 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#6121 + # source://prism//lib/prism/node.rb#6151 def type; end end end @@ -11548,13 +11424,13 @@ end # defined?(a) # ^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#6149 +# source://prism//lib/prism/node.rb#6179 class Prism::DefinedNode < ::Prism::Node # Initialize a new DefinedNode node. # # @return [DefinedNode] a new instance of DefinedNode # - # source://prism//lib/prism/node.rb#6151 + # source://prism//lib/prism/node.rb#6181 sig do params( source: Prism::Source, @@ -11572,36 +11448,36 @@ class Prism::DefinedNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#6281 + # source://prism//lib/prism/node.rb#6311 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#6163 + # source://prism//lib/prism/node.rb#6193 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6168 + # source://prism//lib/prism/node.rb#6198 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#6178 + # source://prism//lib/prism/node.rb#6208 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#6173 + # source://prism//lib/prism/node.rb#6203 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?lparen_loc: Location?, ?value: Prism::node, ?rparen_loc: Location?, ?keyword_loc: Location) -> DefinedNode # - # source://prism//lib/prism/node.rb#6183 + # source://prism//lib/prism/node.rb#6213 sig do params( node_id: Integer, @@ -11615,16 +11491,16 @@ class Prism::DefinedNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), lparen_loc: T.unsafe(nil), value: T.unsafe(nil), rparen_loc: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6168 + # source://prism//lib/prism/node.rb#6198 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, lparen_loc: Location?, value: Prism::node, rparen_loc: Location?, keyword_loc: Location } # - # source://prism//lib/prism/node.rb#6191 + # source://prism//lib/prism/node.rb#6221 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -11633,128 +11509,128 @@ class Prism::DefinedNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#6265 + # source://prism//lib/prism/node.rb#6295 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#6260 + # source://prism//lib/prism/node.rb#6290 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#6237 + # source://prism//lib/prism/node.rb#6267 sig { returns(Prism::Location) } def keyword_loc; end # def lparen: () -> String? # - # source://prism//lib/prism/node.rb#6250 + # source://prism//lib/prism/node.rb#6280 sig { returns(T.nilable(String)) } def lparen; end # attr_reader lparen_loc: Location? # - # source://prism//lib/prism/node.rb#6196 + # source://prism//lib/prism/node.rb#6226 sig { returns(T.nilable(Prism::Location)) } def lparen_loc; end # def rparen: () -> String? # - # source://prism//lib/prism/node.rb#6255 + # source://prism//lib/prism/node.rb#6285 sig { returns(T.nilable(String)) } def rparen; end # attr_reader rparen_loc: Location? # - # source://prism//lib/prism/node.rb#6218 + # source://prism//lib/prism/node.rb#6248 sig { returns(T.nilable(Prism::Location)) } def rparen_loc; end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6245 + # source://prism//lib/prism/node.rb#6275 def save_keyword_loc(repository); end # Save the lparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6210 + # source://prism//lib/prism/node.rb#6240 def save_lparen_loc(repository); end # Save the rparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6232 + # source://prism//lib/prism/node.rb#6262 def save_rparen_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#6270 + # source://prism//lib/prism/node.rb#6300 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#6215 + # source://prism//lib/prism/node.rb#6245 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#6275 + # source://prism//lib/prism/node.rb#6305 def type; end end end -# source://prism//lib/prism/desugar_compiler.rb#4 +# source://prism//lib/prism/desugar_compiler.rb#5 class Prism::DesugarAndWriteNode include ::Prism::DSL # @return [DesugarAndWriteNode] a new instance of DesugarAndWriteNode # - # source://prism//lib/prism/desugar_compiler.rb#9 + # source://prism//lib/prism/desugar_compiler.rb#10 def initialize(node, default_source, read_class, write_class, **arguments); end # Returns the value of attribute arguments. # - # source://prism//lib/prism/desugar_compiler.rb#7 + # source://prism//lib/prism/desugar_compiler.rb#8 def arguments; end # Desugar `x &&= y` to `x && x = y` # - # source://prism//lib/prism/desugar_compiler.rb#18 + # source://prism//lib/prism/desugar_compiler.rb#19 def compile; end # Returns the value of attribute default_source. # - # source://prism//lib/prism/desugar_compiler.rb#7 + # source://prism//lib/prism/desugar_compiler.rb#8 def default_source; end # Returns the value of attribute node. # - # source://prism//lib/prism/desugar_compiler.rb#7 + # source://prism//lib/prism/desugar_compiler.rb#8 def node; end # Returns the value of attribute read_class. # - # source://prism//lib/prism/desugar_compiler.rb#7 + # source://prism//lib/prism/desugar_compiler.rb#8 def read_class; end # Returns the value of attribute write_class. # - # source://prism//lib/prism/desugar_compiler.rb#7 + # source://prism//lib/prism/desugar_compiler.rb#8 def write_class; end end # DesugarCompiler is a compiler that desugars Ruby code into a more primitive # form. This is useful for consumers that want to deal with fewer node types. # -# source://prism//lib/prism/desugar_compiler.rb#255 +# source://prism//lib/prism/desugar_compiler.rb#256 class Prism::DesugarCompiler < ::Prism::MutationCompiler # @@foo &&= bar # @@ -11762,7 +11638,7 @@ class Prism::DesugarCompiler < ::Prism::MutationCompiler # # @@foo && @@foo = bar # - # source://prism//lib/prism/desugar_compiler.rb#261 + # source://prism//lib/prism/desugar_compiler.rb#262 def visit_class_variable_and_write_node(node); end # @@foo += bar @@ -11771,7 +11647,7 @@ class Prism::DesugarCompiler < ::Prism::MutationCompiler # # @@foo = @@foo + bar # - # source://prism//lib/prism/desugar_compiler.rb#279 + # source://prism//lib/prism/desugar_compiler.rb#280 def visit_class_variable_operator_write_node(node); end # @@foo ||= bar @@ -11780,7 +11656,7 @@ class Prism::DesugarCompiler < ::Prism::MutationCompiler # # defined?(@@foo) ? @@foo : @@foo = bar # - # source://prism//lib/prism/desugar_compiler.rb#270 + # source://prism//lib/prism/desugar_compiler.rb#271 def visit_class_variable_or_write_node(node); end # Foo &&= bar @@ -11789,7 +11665,7 @@ class Prism::DesugarCompiler < ::Prism::MutationCompiler # # Foo && Foo = bar # - # source://prism//lib/prism/desugar_compiler.rb#288 + # source://prism//lib/prism/desugar_compiler.rb#289 def visit_constant_and_write_node(node); end # Foo += bar @@ -11798,7 +11674,7 @@ class Prism::DesugarCompiler < ::Prism::MutationCompiler # # Foo = Foo + bar # - # source://prism//lib/prism/desugar_compiler.rb#306 + # source://prism//lib/prism/desugar_compiler.rb#307 def visit_constant_operator_write_node(node); end # Foo ||= bar @@ -11807,7 +11683,7 @@ class Prism::DesugarCompiler < ::Prism::MutationCompiler # # defined?(Foo) ? Foo : Foo = bar # - # source://prism//lib/prism/desugar_compiler.rb#297 + # source://prism//lib/prism/desugar_compiler.rb#298 def visit_constant_or_write_node(node); end # $foo &&= bar @@ -11816,7 +11692,7 @@ class Prism::DesugarCompiler < ::Prism::MutationCompiler # # $foo && $foo = bar # - # source://prism//lib/prism/desugar_compiler.rb#315 + # source://prism//lib/prism/desugar_compiler.rb#316 def visit_global_variable_and_write_node(node); end # $foo += bar @@ -11825,7 +11701,7 @@ class Prism::DesugarCompiler < ::Prism::MutationCompiler # # $foo = $foo + bar # - # source://prism//lib/prism/desugar_compiler.rb#333 + # source://prism//lib/prism/desugar_compiler.rb#334 def visit_global_variable_operator_write_node(node); end # $foo ||= bar @@ -11834,22 +11710,22 @@ class Prism::DesugarCompiler < ::Prism::MutationCompiler # # defined?($foo) ? $foo : $foo = bar # - # source://prism//lib/prism/desugar_compiler.rb#324 + # source://prism//lib/prism/desugar_compiler.rb#325 def visit_global_variable_or_write_node(node); end # becomes # - # source://prism//lib/prism/desugar_compiler.rb#342 + # source://prism//lib/prism/desugar_compiler.rb#343 def visit_instance_variable_and_write_node(node); end # becomes # - # source://prism//lib/prism/desugar_compiler.rb#360 + # source://prism//lib/prism/desugar_compiler.rb#361 def visit_instance_variable_operator_write_node(node); end # becomes # - # source://prism//lib/prism/desugar_compiler.rb#351 + # source://prism//lib/prism/desugar_compiler.rb#352 def visit_instance_variable_or_write_node(node); end # foo &&= bar @@ -11858,7 +11734,7 @@ class Prism::DesugarCompiler < ::Prism::MutationCompiler # # foo && foo = bar # - # source://prism//lib/prism/desugar_compiler.rb#369 + # source://prism//lib/prism/desugar_compiler.rb#370 def visit_local_variable_and_write_node(node); end # foo += bar @@ -11867,7 +11743,7 @@ class Prism::DesugarCompiler < ::Prism::MutationCompiler # # foo = foo + bar # - # source://prism//lib/prism/desugar_compiler.rb#387 + # source://prism//lib/prism/desugar_compiler.rb#388 def visit_local_variable_operator_write_node(node); end # foo ||= bar @@ -11876,127 +11752,127 @@ class Prism::DesugarCompiler < ::Prism::MutationCompiler # # foo || foo = bar # - # source://prism//lib/prism/desugar_compiler.rb#378 + # source://prism//lib/prism/desugar_compiler.rb#379 def visit_local_variable_or_write_node(node); end end -# source://prism//lib/prism/desugar_compiler.rb#86 +# source://prism//lib/prism/desugar_compiler.rb#87 class Prism::DesugarOperatorWriteNode include ::Prism::DSL # @return [DesugarOperatorWriteNode] a new instance of DesugarOperatorWriteNode # - # source://prism//lib/prism/desugar_compiler.rb#91 + # source://prism//lib/prism/desugar_compiler.rb#92 def initialize(node, default_source, read_class, write_class, **arguments); end # Returns the value of attribute arguments. # - # source://prism//lib/prism/desugar_compiler.rb#89 + # source://prism//lib/prism/desugar_compiler.rb#90 def arguments; end # Desugar `x += y` to `x = x + y` # - # source://prism//lib/prism/desugar_compiler.rb#100 + # source://prism//lib/prism/desugar_compiler.rb#101 def compile; end # Returns the value of attribute default_source. # - # source://prism//lib/prism/desugar_compiler.rb#89 + # source://prism//lib/prism/desugar_compiler.rb#90 def default_source; end # Returns the value of attribute node. # - # source://prism//lib/prism/desugar_compiler.rb#89 + # source://prism//lib/prism/desugar_compiler.rb#90 def node; end # Returns the value of attribute read_class. # - # source://prism//lib/prism/desugar_compiler.rb#89 + # source://prism//lib/prism/desugar_compiler.rb#90 def read_class; end # Returns the value of attribute write_class. # - # source://prism//lib/prism/desugar_compiler.rb#89 + # source://prism//lib/prism/desugar_compiler.rb#90 def write_class; end end -# source://prism//lib/prism/desugar_compiler.rb#35 +# source://prism//lib/prism/desugar_compiler.rb#36 class Prism::DesugarOrWriteDefinedNode include ::Prism::DSL # @return [DesugarOrWriteDefinedNode] a new instance of DesugarOrWriteDefinedNode # - # source://prism//lib/prism/desugar_compiler.rb#40 + # source://prism//lib/prism/desugar_compiler.rb#41 def initialize(node, default_source, read_class, write_class, **arguments); end # Returns the value of attribute arguments. # - # source://prism//lib/prism/desugar_compiler.rb#38 + # source://prism//lib/prism/desugar_compiler.rb#39 def arguments; end # Desugar `x ||= y` to `defined?(x) ? x : x = y` # - # source://prism//lib/prism/desugar_compiler.rb#49 + # source://prism//lib/prism/desugar_compiler.rb#50 def compile; end # Returns the value of attribute default_source. # - # source://prism//lib/prism/desugar_compiler.rb#38 + # source://prism//lib/prism/desugar_compiler.rb#39 def default_source; end # Returns the value of attribute node. # - # source://prism//lib/prism/desugar_compiler.rb#38 + # source://prism//lib/prism/desugar_compiler.rb#39 def node; end # Returns the value of attribute read_class. # - # source://prism//lib/prism/desugar_compiler.rb#38 + # source://prism//lib/prism/desugar_compiler.rb#39 def read_class; end # Returns the value of attribute write_class. # - # source://prism//lib/prism/desugar_compiler.rb#38 + # source://prism//lib/prism/desugar_compiler.rb#39 def write_class; end end -# source://prism//lib/prism/desugar_compiler.rb#130 +# source://prism//lib/prism/desugar_compiler.rb#131 class Prism::DesugarOrWriteNode include ::Prism::DSL # @return [DesugarOrWriteNode] a new instance of DesugarOrWriteNode # - # source://prism//lib/prism/desugar_compiler.rb#135 + # source://prism//lib/prism/desugar_compiler.rb#136 def initialize(node, default_source, read_class, write_class, **arguments); end # Returns the value of attribute arguments. # - # source://prism//lib/prism/desugar_compiler.rb#133 + # source://prism//lib/prism/desugar_compiler.rb#134 def arguments; end # Desugar `x ||= y` to `x || x = y` # - # source://prism//lib/prism/desugar_compiler.rb#144 + # source://prism//lib/prism/desugar_compiler.rb#145 def compile; end # Returns the value of attribute default_source. # - # source://prism//lib/prism/desugar_compiler.rb#133 + # source://prism//lib/prism/desugar_compiler.rb#134 def default_source; end # Returns the value of attribute node. # - # source://prism//lib/prism/desugar_compiler.rb#133 + # source://prism//lib/prism/desugar_compiler.rb#134 def node; end # Returns the value of attribute read_class. # - # source://prism//lib/prism/desugar_compiler.rb#133 + # source://prism//lib/prism/desugar_compiler.rb#134 def read_class; end # Returns the value of attribute write_class. # - # source://prism//lib/prism/desugar_compiler.rb#133 + # source://prism//lib/prism/desugar_compiler.rb#134 def write_class; end end @@ -12032,2491 +11908,2506 @@ end # integer = result.value.statements.body.first.receiver.receiver # dispatcher.dispatch_once(integer) # -# source://prism//lib/prism/dispatcher.rb#42 +# source://prism//lib/prism/dispatcher.rb#45 class Prism::Dispatcher < ::Prism::Visitor # Initialize a new dispatcher. # # @return [Dispatcher] a new instance of Dispatcher # - # source://prism//lib/prism/dispatcher.rb#47 + # source://prism//lib/prism/dispatcher.rb#50 def initialize; end # Walks `root` dispatching events to all registered listeners. # # def dispatch: (Node) -> void # - # source://prism//lib/prism/visitor.rb#17 + # source://prism//lib/prism/visitor.rb#20 def dispatch(node); end # Dispatches a single event for `node` to all registered listeners. # # def dispatch_once: (Node) -> void # - # source://prism//lib/prism/dispatcher.rb#66 + # source://prism//lib/prism/dispatcher.rb#82 def dispatch_once(node); end # attr_reader listeners: Hash[Symbol, Array[Listener]] # - # source://prism//lib/prism/dispatcher.rb#44 + # source://prism//lib/prism/dispatcher.rb#47 def listeners; end # Register a listener for one or more events. # # def register: (Listener, *Symbol) -> void # - # source://prism//lib/prism/dispatcher.rb#54 + # source://prism//lib/prism/dispatcher.rb#57 def register(listener, *events); end + # Register all public methods of a listener that match the pattern + # `on__(enter|leave)`. + # + # def register_public_methods: (Listener) -> void + # + # source://prism//lib/prism/dispatcher.rb#65 + def register_public_methods(listener); end + # Dispatch enter and leave events for AliasGlobalVariableNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#72 + # source://prism//lib/prism/dispatcher.rb#88 def visit_alias_global_variable_node(node); end # Dispatch enter and leave events for AliasMethodNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#80 + # source://prism//lib/prism/dispatcher.rb#96 def visit_alias_method_node(node); end # Dispatch enter and leave events for AlternationPatternNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#88 + # source://prism//lib/prism/dispatcher.rb#104 def visit_alternation_pattern_node(node); end # Dispatch enter and leave events for AndNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#96 + # source://prism//lib/prism/dispatcher.rb#112 def visit_and_node(node); end # Dispatch enter and leave events for ArgumentsNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#104 + # source://prism//lib/prism/dispatcher.rb#120 def visit_arguments_node(node); end # Dispatch enter and leave events for ArrayNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#112 + # source://prism//lib/prism/dispatcher.rb#128 def visit_array_node(node); end # Dispatch enter and leave events for ArrayPatternNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#120 + # source://prism//lib/prism/dispatcher.rb#136 def visit_array_pattern_node(node); end # Dispatch enter and leave events for AssocNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#128 + # source://prism//lib/prism/dispatcher.rb#144 def visit_assoc_node(node); end # Dispatch enter and leave events for AssocSplatNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#136 + # source://prism//lib/prism/dispatcher.rb#152 def visit_assoc_splat_node(node); end # Dispatch enter and leave events for BackReferenceReadNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#144 + # source://prism//lib/prism/dispatcher.rb#160 def visit_back_reference_read_node(node); end # Dispatch enter and leave events for BeginNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#152 + # source://prism//lib/prism/dispatcher.rb#168 def visit_begin_node(node); end # Dispatch enter and leave events for BlockArgumentNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#160 + # source://prism//lib/prism/dispatcher.rb#176 def visit_block_argument_node(node); end # Dispatch enter and leave events for BlockLocalVariableNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#168 + # source://prism//lib/prism/dispatcher.rb#184 def visit_block_local_variable_node(node); end # Dispatch enter and leave events for BlockNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#176 + # source://prism//lib/prism/dispatcher.rb#192 def visit_block_node(node); end # Dispatch enter and leave events for BlockParameterNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#184 + # source://prism//lib/prism/dispatcher.rb#200 def visit_block_parameter_node(node); end # Dispatch enter and leave events for BlockParametersNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#192 + # source://prism//lib/prism/dispatcher.rb#208 def visit_block_parameters_node(node); end # Dispatch enter and leave events for BreakNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#200 + # source://prism//lib/prism/dispatcher.rb#216 def visit_break_node(node); end # Dispatch enter and leave events for CallAndWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#208 + # source://prism//lib/prism/dispatcher.rb#224 def visit_call_and_write_node(node); end # Dispatch enter and leave events for CallNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#216 + # source://prism//lib/prism/dispatcher.rb#232 def visit_call_node(node); end # Dispatch enter and leave events for CallOperatorWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#224 + # source://prism//lib/prism/dispatcher.rb#240 def visit_call_operator_write_node(node); end # Dispatch enter and leave events for CallOrWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#232 + # source://prism//lib/prism/dispatcher.rb#248 def visit_call_or_write_node(node); end # Dispatch enter and leave events for CallTargetNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#240 + # source://prism//lib/prism/dispatcher.rb#256 def visit_call_target_node(node); end # Dispatch enter and leave events for CapturePatternNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#248 + # source://prism//lib/prism/dispatcher.rb#264 def visit_capture_pattern_node(node); end # Dispatch enter and leave events for CaseMatchNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#256 + # source://prism//lib/prism/dispatcher.rb#272 def visit_case_match_node(node); end # Dispatch enter and leave events for CaseNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#264 + # source://prism//lib/prism/dispatcher.rb#280 def visit_case_node(node); end # Dispatch enter and leave events for ClassNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#272 + # source://prism//lib/prism/dispatcher.rb#288 def visit_class_node(node); end # Dispatch enter and leave events for ClassVariableAndWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#280 + # source://prism//lib/prism/dispatcher.rb#296 def visit_class_variable_and_write_node(node); end # Dispatch enter and leave events for ClassVariableOperatorWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#288 + # source://prism//lib/prism/dispatcher.rb#304 def visit_class_variable_operator_write_node(node); end # Dispatch enter and leave events for ClassVariableOrWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#296 + # source://prism//lib/prism/dispatcher.rb#312 def visit_class_variable_or_write_node(node); end # Dispatch enter and leave events for ClassVariableReadNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#304 + # source://prism//lib/prism/dispatcher.rb#320 def visit_class_variable_read_node(node); end # Dispatch enter and leave events for ClassVariableTargetNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#312 + # source://prism//lib/prism/dispatcher.rb#328 def visit_class_variable_target_node(node); end # Dispatch enter and leave events for ClassVariableWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#320 + # source://prism//lib/prism/dispatcher.rb#336 def visit_class_variable_write_node(node); end # Dispatch enter and leave events for ConstantAndWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#328 + # source://prism//lib/prism/dispatcher.rb#344 def visit_constant_and_write_node(node); end # Dispatch enter and leave events for ConstantOperatorWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#336 + # source://prism//lib/prism/dispatcher.rb#352 def visit_constant_operator_write_node(node); end # Dispatch enter and leave events for ConstantOrWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#344 + # source://prism//lib/prism/dispatcher.rb#360 def visit_constant_or_write_node(node); end # Dispatch enter and leave events for ConstantPathAndWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#352 + # source://prism//lib/prism/dispatcher.rb#368 def visit_constant_path_and_write_node(node); end # Dispatch enter and leave events for ConstantPathNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#360 + # source://prism//lib/prism/dispatcher.rb#376 def visit_constant_path_node(node); end # Dispatch enter and leave events for ConstantPathOperatorWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#368 + # source://prism//lib/prism/dispatcher.rb#384 def visit_constant_path_operator_write_node(node); end # Dispatch enter and leave events for ConstantPathOrWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#376 + # source://prism//lib/prism/dispatcher.rb#392 def visit_constant_path_or_write_node(node); end # Dispatch enter and leave events for ConstantPathTargetNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#384 + # source://prism//lib/prism/dispatcher.rb#400 def visit_constant_path_target_node(node); end # Dispatch enter and leave events for ConstantPathWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#392 + # source://prism//lib/prism/dispatcher.rb#408 def visit_constant_path_write_node(node); end # Dispatch enter and leave events for ConstantReadNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#400 + # source://prism//lib/prism/dispatcher.rb#416 def visit_constant_read_node(node); end # Dispatch enter and leave events for ConstantTargetNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#408 + # source://prism//lib/prism/dispatcher.rb#424 def visit_constant_target_node(node); end # Dispatch enter and leave events for ConstantWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#416 + # source://prism//lib/prism/dispatcher.rb#432 def visit_constant_write_node(node); end # Dispatch enter and leave events for DefNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#424 + # source://prism//lib/prism/dispatcher.rb#440 def visit_def_node(node); end # Dispatch enter and leave events for DefinedNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#432 + # source://prism//lib/prism/dispatcher.rb#448 def visit_defined_node(node); end # Dispatch enter and leave events for ElseNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#440 + # source://prism//lib/prism/dispatcher.rb#456 def visit_else_node(node); end # Dispatch enter and leave events for EmbeddedStatementsNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#448 + # source://prism//lib/prism/dispatcher.rb#464 def visit_embedded_statements_node(node); end # Dispatch enter and leave events for EmbeddedVariableNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#456 + # source://prism//lib/prism/dispatcher.rb#472 def visit_embedded_variable_node(node); end # Dispatch enter and leave events for EnsureNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#464 + # source://prism//lib/prism/dispatcher.rb#480 def visit_ensure_node(node); end # Dispatch enter and leave events for FalseNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#472 + # source://prism//lib/prism/dispatcher.rb#488 def visit_false_node(node); end # Dispatch enter and leave events for FindPatternNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#480 + # source://prism//lib/prism/dispatcher.rb#496 def visit_find_pattern_node(node); end # Dispatch enter and leave events for FlipFlopNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#488 + # source://prism//lib/prism/dispatcher.rb#504 def visit_flip_flop_node(node); end # Dispatch enter and leave events for FloatNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#496 + # source://prism//lib/prism/dispatcher.rb#512 def visit_float_node(node); end # Dispatch enter and leave events for ForNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#504 + # source://prism//lib/prism/dispatcher.rb#520 def visit_for_node(node); end # Dispatch enter and leave events for ForwardingArgumentsNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#512 + # source://prism//lib/prism/dispatcher.rb#528 def visit_forwarding_arguments_node(node); end # Dispatch enter and leave events for ForwardingParameterNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#520 + # source://prism//lib/prism/dispatcher.rb#536 def visit_forwarding_parameter_node(node); end # Dispatch enter and leave events for ForwardingSuperNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#528 + # source://prism//lib/prism/dispatcher.rb#544 def visit_forwarding_super_node(node); end # Dispatch enter and leave events for GlobalVariableAndWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#536 + # source://prism//lib/prism/dispatcher.rb#552 def visit_global_variable_and_write_node(node); end # Dispatch enter and leave events for GlobalVariableOperatorWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#544 + # source://prism//lib/prism/dispatcher.rb#560 def visit_global_variable_operator_write_node(node); end # Dispatch enter and leave events for GlobalVariableOrWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#552 + # source://prism//lib/prism/dispatcher.rb#568 def visit_global_variable_or_write_node(node); end # Dispatch enter and leave events for GlobalVariableReadNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#560 + # source://prism//lib/prism/dispatcher.rb#576 def visit_global_variable_read_node(node); end # Dispatch enter and leave events for GlobalVariableTargetNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#568 + # source://prism//lib/prism/dispatcher.rb#584 def visit_global_variable_target_node(node); end # Dispatch enter and leave events for GlobalVariableWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#576 + # source://prism//lib/prism/dispatcher.rb#592 def visit_global_variable_write_node(node); end # Dispatch enter and leave events for HashNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#584 + # source://prism//lib/prism/dispatcher.rb#600 def visit_hash_node(node); end # Dispatch enter and leave events for HashPatternNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#592 + # source://prism//lib/prism/dispatcher.rb#608 def visit_hash_pattern_node(node); end # Dispatch enter and leave events for IfNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#600 + # source://prism//lib/prism/dispatcher.rb#616 def visit_if_node(node); end # Dispatch enter and leave events for ImaginaryNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#608 + # source://prism//lib/prism/dispatcher.rb#624 def visit_imaginary_node(node); end # Dispatch enter and leave events for ImplicitNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#616 + # source://prism//lib/prism/dispatcher.rb#632 def visit_implicit_node(node); end # Dispatch enter and leave events for ImplicitRestNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#624 + # source://prism//lib/prism/dispatcher.rb#640 def visit_implicit_rest_node(node); end # Dispatch enter and leave events for InNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#632 + # source://prism//lib/prism/dispatcher.rb#648 def visit_in_node(node); end # Dispatch enter and leave events for IndexAndWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#640 + # source://prism//lib/prism/dispatcher.rb#656 def visit_index_and_write_node(node); end # Dispatch enter and leave events for IndexOperatorWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#648 + # source://prism//lib/prism/dispatcher.rb#664 def visit_index_operator_write_node(node); end # Dispatch enter and leave events for IndexOrWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#656 + # source://prism//lib/prism/dispatcher.rb#672 def visit_index_or_write_node(node); end # Dispatch enter and leave events for IndexTargetNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#664 + # source://prism//lib/prism/dispatcher.rb#680 def visit_index_target_node(node); end # Dispatch enter and leave events for InstanceVariableAndWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#672 + # source://prism//lib/prism/dispatcher.rb#688 def visit_instance_variable_and_write_node(node); end # Dispatch enter and leave events for InstanceVariableOperatorWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#680 + # source://prism//lib/prism/dispatcher.rb#696 def visit_instance_variable_operator_write_node(node); end # Dispatch enter and leave events for InstanceVariableOrWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#688 + # source://prism//lib/prism/dispatcher.rb#704 def visit_instance_variable_or_write_node(node); end # Dispatch enter and leave events for InstanceVariableReadNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#696 + # source://prism//lib/prism/dispatcher.rb#712 def visit_instance_variable_read_node(node); end # Dispatch enter and leave events for InstanceVariableTargetNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#704 + # source://prism//lib/prism/dispatcher.rb#720 def visit_instance_variable_target_node(node); end # Dispatch enter and leave events for InstanceVariableWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#712 + # source://prism//lib/prism/dispatcher.rb#728 def visit_instance_variable_write_node(node); end # Dispatch enter and leave events for IntegerNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#720 + # source://prism//lib/prism/dispatcher.rb#736 def visit_integer_node(node); end # Dispatch enter and leave events for InterpolatedMatchLastLineNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#728 + # source://prism//lib/prism/dispatcher.rb#744 def visit_interpolated_match_last_line_node(node); end # Dispatch enter and leave events for InterpolatedRegularExpressionNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#736 + # source://prism//lib/prism/dispatcher.rb#752 def visit_interpolated_regular_expression_node(node); end # Dispatch enter and leave events for InterpolatedStringNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#744 + # source://prism//lib/prism/dispatcher.rb#760 def visit_interpolated_string_node(node); end # Dispatch enter and leave events for InterpolatedSymbolNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#752 + # source://prism//lib/prism/dispatcher.rb#768 def visit_interpolated_symbol_node(node); end # Dispatch enter and leave events for InterpolatedXStringNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#760 + # source://prism//lib/prism/dispatcher.rb#776 def visit_interpolated_x_string_node(node); end # Dispatch enter and leave events for ItLocalVariableReadNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#768 + # source://prism//lib/prism/dispatcher.rb#784 def visit_it_local_variable_read_node(node); end # Dispatch enter and leave events for ItParametersNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#776 + # source://prism//lib/prism/dispatcher.rb#792 def visit_it_parameters_node(node); end # Dispatch enter and leave events for KeywordHashNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#784 + # source://prism//lib/prism/dispatcher.rb#800 def visit_keyword_hash_node(node); end # Dispatch enter and leave events for KeywordRestParameterNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#792 + # source://prism//lib/prism/dispatcher.rb#808 def visit_keyword_rest_parameter_node(node); end # Dispatch enter and leave events for LambdaNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#800 + # source://prism//lib/prism/dispatcher.rb#816 def visit_lambda_node(node); end # Dispatch enter and leave events for LocalVariableAndWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#808 + # source://prism//lib/prism/dispatcher.rb#824 def visit_local_variable_and_write_node(node); end # Dispatch enter and leave events for LocalVariableOperatorWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#816 + # source://prism//lib/prism/dispatcher.rb#832 def visit_local_variable_operator_write_node(node); end # Dispatch enter and leave events for LocalVariableOrWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#824 + # source://prism//lib/prism/dispatcher.rb#840 def visit_local_variable_or_write_node(node); end # Dispatch enter and leave events for LocalVariableReadNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#832 + # source://prism//lib/prism/dispatcher.rb#848 def visit_local_variable_read_node(node); end # Dispatch enter and leave events for LocalVariableTargetNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#840 + # source://prism//lib/prism/dispatcher.rb#856 def visit_local_variable_target_node(node); end # Dispatch enter and leave events for LocalVariableWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#848 + # source://prism//lib/prism/dispatcher.rb#864 def visit_local_variable_write_node(node); end # Dispatch enter and leave events for MatchLastLineNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#856 + # source://prism//lib/prism/dispatcher.rb#872 def visit_match_last_line_node(node); end # Dispatch enter and leave events for MatchPredicateNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#864 + # source://prism//lib/prism/dispatcher.rb#880 def visit_match_predicate_node(node); end # Dispatch enter and leave events for MatchRequiredNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#872 + # source://prism//lib/prism/dispatcher.rb#888 def visit_match_required_node(node); end # Dispatch enter and leave events for MatchWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#880 + # source://prism//lib/prism/dispatcher.rb#896 def visit_match_write_node(node); end # Dispatch enter and leave events for MissingNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#888 + # source://prism//lib/prism/dispatcher.rb#904 def visit_missing_node(node); end # Dispatch enter and leave events for ModuleNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#896 + # source://prism//lib/prism/dispatcher.rb#912 def visit_module_node(node); end # Dispatch enter and leave events for MultiTargetNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#904 + # source://prism//lib/prism/dispatcher.rb#920 def visit_multi_target_node(node); end # Dispatch enter and leave events for MultiWriteNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#912 + # source://prism//lib/prism/dispatcher.rb#928 def visit_multi_write_node(node); end # Dispatch enter and leave events for NextNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#920 + # source://prism//lib/prism/dispatcher.rb#936 def visit_next_node(node); end # Dispatch enter and leave events for NilNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#928 + # source://prism//lib/prism/dispatcher.rb#944 def visit_nil_node(node); end # Dispatch enter and leave events for NoKeywordsParameterNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#936 + # source://prism//lib/prism/dispatcher.rb#952 def visit_no_keywords_parameter_node(node); end # Dispatch enter and leave events for NumberedParametersNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#944 + # source://prism//lib/prism/dispatcher.rb#960 def visit_numbered_parameters_node(node); end # Dispatch enter and leave events for NumberedReferenceReadNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#952 + # source://prism//lib/prism/dispatcher.rb#968 def visit_numbered_reference_read_node(node); end # Dispatch enter and leave events for OptionalKeywordParameterNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#960 + # source://prism//lib/prism/dispatcher.rb#976 def visit_optional_keyword_parameter_node(node); end # Dispatch enter and leave events for OptionalParameterNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#968 + # source://prism//lib/prism/dispatcher.rb#984 def visit_optional_parameter_node(node); end # Dispatch enter and leave events for OrNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#976 + # source://prism//lib/prism/dispatcher.rb#992 def visit_or_node(node); end # Dispatch enter and leave events for ParametersNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#984 + # source://prism//lib/prism/dispatcher.rb#1000 def visit_parameters_node(node); end # Dispatch enter and leave events for ParenthesesNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#992 + # source://prism//lib/prism/dispatcher.rb#1008 def visit_parentheses_node(node); end # Dispatch enter and leave events for PinnedExpressionNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1000 + # source://prism//lib/prism/dispatcher.rb#1016 def visit_pinned_expression_node(node); end # Dispatch enter and leave events for PinnedVariableNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1008 + # source://prism//lib/prism/dispatcher.rb#1024 def visit_pinned_variable_node(node); end # Dispatch enter and leave events for PostExecutionNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1016 + # source://prism//lib/prism/dispatcher.rb#1032 def visit_post_execution_node(node); end # Dispatch enter and leave events for PreExecutionNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1024 + # source://prism//lib/prism/dispatcher.rb#1040 def visit_pre_execution_node(node); end # Dispatch enter and leave events for ProgramNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1032 + # source://prism//lib/prism/dispatcher.rb#1048 def visit_program_node(node); end # Dispatch enter and leave events for RangeNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1040 + # source://prism//lib/prism/dispatcher.rb#1056 def visit_range_node(node); end # Dispatch enter and leave events for RationalNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1048 + # source://prism//lib/prism/dispatcher.rb#1064 def visit_rational_node(node); end # Dispatch enter and leave events for RedoNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1056 + # source://prism//lib/prism/dispatcher.rb#1072 def visit_redo_node(node); end # Dispatch enter and leave events for RegularExpressionNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1064 + # source://prism//lib/prism/dispatcher.rb#1080 def visit_regular_expression_node(node); end # Dispatch enter and leave events for RequiredKeywordParameterNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1072 + # source://prism//lib/prism/dispatcher.rb#1088 def visit_required_keyword_parameter_node(node); end # Dispatch enter and leave events for RequiredParameterNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1080 + # source://prism//lib/prism/dispatcher.rb#1096 def visit_required_parameter_node(node); end # Dispatch enter and leave events for RescueModifierNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1088 + # source://prism//lib/prism/dispatcher.rb#1104 def visit_rescue_modifier_node(node); end # Dispatch enter and leave events for RescueNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1096 + # source://prism//lib/prism/dispatcher.rb#1112 def visit_rescue_node(node); end # Dispatch enter and leave events for RestParameterNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1104 + # source://prism//lib/prism/dispatcher.rb#1120 def visit_rest_parameter_node(node); end # Dispatch enter and leave events for RetryNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1112 + # source://prism//lib/prism/dispatcher.rb#1128 def visit_retry_node(node); end # Dispatch enter and leave events for ReturnNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1120 + # source://prism//lib/prism/dispatcher.rb#1136 def visit_return_node(node); end # Dispatch enter and leave events for SelfNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1128 + # source://prism//lib/prism/dispatcher.rb#1144 def visit_self_node(node); end # Dispatch enter and leave events for ShareableConstantNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1136 + # source://prism//lib/prism/dispatcher.rb#1152 def visit_shareable_constant_node(node); end # Dispatch enter and leave events for SingletonClassNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1144 + # source://prism//lib/prism/dispatcher.rb#1160 def visit_singleton_class_node(node); end # Dispatch enter and leave events for SourceEncodingNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1152 + # source://prism//lib/prism/dispatcher.rb#1168 def visit_source_encoding_node(node); end # Dispatch enter and leave events for SourceFileNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1160 + # source://prism//lib/prism/dispatcher.rb#1176 def visit_source_file_node(node); end # Dispatch enter and leave events for SourceLineNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1168 + # source://prism//lib/prism/dispatcher.rb#1184 def visit_source_line_node(node); end # Dispatch enter and leave events for SplatNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1176 + # source://prism//lib/prism/dispatcher.rb#1192 def visit_splat_node(node); end # Dispatch enter and leave events for StatementsNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1184 + # source://prism//lib/prism/dispatcher.rb#1200 def visit_statements_node(node); end # Dispatch enter and leave events for StringNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1192 + # source://prism//lib/prism/dispatcher.rb#1208 def visit_string_node(node); end # Dispatch enter and leave events for SuperNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1200 + # source://prism//lib/prism/dispatcher.rb#1216 def visit_super_node(node); end # Dispatch enter and leave events for SymbolNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1208 + # source://prism//lib/prism/dispatcher.rb#1224 def visit_symbol_node(node); end # Dispatch enter and leave events for TrueNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1216 + # source://prism//lib/prism/dispatcher.rb#1232 def visit_true_node(node); end # Dispatch enter and leave events for UndefNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1224 + # source://prism//lib/prism/dispatcher.rb#1240 def visit_undef_node(node); end # Dispatch enter and leave events for UnlessNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1232 + # source://prism//lib/prism/dispatcher.rb#1248 def visit_unless_node(node); end # Dispatch enter and leave events for UntilNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1240 + # source://prism//lib/prism/dispatcher.rb#1256 def visit_until_node(node); end # Dispatch enter and leave events for WhenNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1248 + # source://prism//lib/prism/dispatcher.rb#1264 def visit_when_node(node); end # Dispatch enter and leave events for WhileNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1256 + # source://prism//lib/prism/dispatcher.rb#1272 def visit_while_node(node); end # Dispatch enter and leave events for XStringNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1264 + # source://prism//lib/prism/dispatcher.rb#1280 def visit_x_string_node(node); end # Dispatch enter and leave events for YieldNode nodes and continue # walking the tree. # - # source://prism//lib/prism/dispatcher.rb#1272 + # source://prism//lib/prism/dispatcher.rb#1288 def visit_yield_node(node); end + + private + + # Register a listener for the given events. + # + # source://prism//lib/prism/dispatcher.rb#70 + def register_events(listener, events); end end -# source://prism//lib/prism/dispatcher.rb#1278 +# source://prism//lib/prism/dispatcher.rb#1294 class Prism::Dispatcher::DispatchOnce < ::Prism::Visitor # @return [DispatchOnce] a new instance of DispatchOnce # - # source://prism//lib/prism/dispatcher.rb#1281 + # source://prism//lib/prism/dispatcher.rb#1297 def initialize(listeners); end # Returns the value of attribute listeners. # - # source://prism//lib/prism/dispatcher.rb#1279 + # source://prism//lib/prism/dispatcher.rb#1295 def listeners; end # Dispatch enter and leave events for AliasGlobalVariableNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1286 + # source://prism//lib/prism/dispatcher.rb#1302 def visit_alias_global_variable_node(node); end # Dispatch enter and leave events for AliasMethodNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1292 + # source://prism//lib/prism/dispatcher.rb#1308 def visit_alias_method_node(node); end # Dispatch enter and leave events for AlternationPatternNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1298 + # source://prism//lib/prism/dispatcher.rb#1314 def visit_alternation_pattern_node(node); end # Dispatch enter and leave events for AndNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1304 + # source://prism//lib/prism/dispatcher.rb#1320 def visit_and_node(node); end # Dispatch enter and leave events for ArgumentsNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1310 + # source://prism//lib/prism/dispatcher.rb#1326 def visit_arguments_node(node); end # Dispatch enter and leave events for ArrayNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1316 + # source://prism//lib/prism/dispatcher.rb#1332 def visit_array_node(node); end # Dispatch enter and leave events for ArrayPatternNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1322 + # source://prism//lib/prism/dispatcher.rb#1338 def visit_array_pattern_node(node); end # Dispatch enter and leave events for AssocNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1328 + # source://prism//lib/prism/dispatcher.rb#1344 def visit_assoc_node(node); end # Dispatch enter and leave events for AssocSplatNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1334 + # source://prism//lib/prism/dispatcher.rb#1350 def visit_assoc_splat_node(node); end # Dispatch enter and leave events for BackReferenceReadNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1340 + # source://prism//lib/prism/dispatcher.rb#1356 def visit_back_reference_read_node(node); end # Dispatch enter and leave events for BeginNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1346 + # source://prism//lib/prism/dispatcher.rb#1362 def visit_begin_node(node); end # Dispatch enter and leave events for BlockArgumentNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1352 + # source://prism//lib/prism/dispatcher.rb#1368 def visit_block_argument_node(node); end # Dispatch enter and leave events for BlockLocalVariableNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1358 + # source://prism//lib/prism/dispatcher.rb#1374 def visit_block_local_variable_node(node); end # Dispatch enter and leave events for BlockNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1364 + # source://prism//lib/prism/dispatcher.rb#1380 def visit_block_node(node); end # Dispatch enter and leave events for BlockParameterNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1370 + # source://prism//lib/prism/dispatcher.rb#1386 def visit_block_parameter_node(node); end # Dispatch enter and leave events for BlockParametersNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1376 + # source://prism//lib/prism/dispatcher.rb#1392 def visit_block_parameters_node(node); end # Dispatch enter and leave events for BreakNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1382 + # source://prism//lib/prism/dispatcher.rb#1398 def visit_break_node(node); end # Dispatch enter and leave events for CallAndWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1388 + # source://prism//lib/prism/dispatcher.rb#1404 def visit_call_and_write_node(node); end # Dispatch enter and leave events for CallNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1394 + # source://prism//lib/prism/dispatcher.rb#1410 def visit_call_node(node); end # Dispatch enter and leave events for CallOperatorWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1400 + # source://prism//lib/prism/dispatcher.rb#1416 def visit_call_operator_write_node(node); end # Dispatch enter and leave events for CallOrWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1406 + # source://prism//lib/prism/dispatcher.rb#1422 def visit_call_or_write_node(node); end # Dispatch enter and leave events for CallTargetNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1412 + # source://prism//lib/prism/dispatcher.rb#1428 def visit_call_target_node(node); end # Dispatch enter and leave events for CapturePatternNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1418 + # source://prism//lib/prism/dispatcher.rb#1434 def visit_capture_pattern_node(node); end # Dispatch enter and leave events for CaseMatchNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1424 + # source://prism//lib/prism/dispatcher.rb#1440 def visit_case_match_node(node); end # Dispatch enter and leave events for CaseNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1430 + # source://prism//lib/prism/dispatcher.rb#1446 def visit_case_node(node); end # Dispatch enter and leave events for ClassNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1436 + # source://prism//lib/prism/dispatcher.rb#1452 def visit_class_node(node); end # Dispatch enter and leave events for ClassVariableAndWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1442 + # source://prism//lib/prism/dispatcher.rb#1458 def visit_class_variable_and_write_node(node); end # Dispatch enter and leave events for ClassVariableOperatorWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1448 + # source://prism//lib/prism/dispatcher.rb#1464 def visit_class_variable_operator_write_node(node); end # Dispatch enter and leave events for ClassVariableOrWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1454 + # source://prism//lib/prism/dispatcher.rb#1470 def visit_class_variable_or_write_node(node); end # Dispatch enter and leave events for ClassVariableReadNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1460 + # source://prism//lib/prism/dispatcher.rb#1476 def visit_class_variable_read_node(node); end # Dispatch enter and leave events for ClassVariableTargetNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1466 + # source://prism//lib/prism/dispatcher.rb#1482 def visit_class_variable_target_node(node); end # Dispatch enter and leave events for ClassVariableWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1472 + # source://prism//lib/prism/dispatcher.rb#1488 def visit_class_variable_write_node(node); end # Dispatch enter and leave events for ConstantAndWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1478 + # source://prism//lib/prism/dispatcher.rb#1494 def visit_constant_and_write_node(node); end # Dispatch enter and leave events for ConstantOperatorWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1484 + # source://prism//lib/prism/dispatcher.rb#1500 def visit_constant_operator_write_node(node); end # Dispatch enter and leave events for ConstantOrWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1490 + # source://prism//lib/prism/dispatcher.rb#1506 def visit_constant_or_write_node(node); end # Dispatch enter and leave events for ConstantPathAndWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1496 + # source://prism//lib/prism/dispatcher.rb#1512 def visit_constant_path_and_write_node(node); end # Dispatch enter and leave events for ConstantPathNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1502 + # source://prism//lib/prism/dispatcher.rb#1518 def visit_constant_path_node(node); end # Dispatch enter and leave events for ConstantPathOperatorWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1508 + # source://prism//lib/prism/dispatcher.rb#1524 def visit_constant_path_operator_write_node(node); end # Dispatch enter and leave events for ConstantPathOrWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1514 + # source://prism//lib/prism/dispatcher.rb#1530 def visit_constant_path_or_write_node(node); end # Dispatch enter and leave events for ConstantPathTargetNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1520 + # source://prism//lib/prism/dispatcher.rb#1536 def visit_constant_path_target_node(node); end # Dispatch enter and leave events for ConstantPathWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1526 + # source://prism//lib/prism/dispatcher.rb#1542 def visit_constant_path_write_node(node); end # Dispatch enter and leave events for ConstantReadNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1532 + # source://prism//lib/prism/dispatcher.rb#1548 def visit_constant_read_node(node); end # Dispatch enter and leave events for ConstantTargetNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1538 + # source://prism//lib/prism/dispatcher.rb#1554 def visit_constant_target_node(node); end # Dispatch enter and leave events for ConstantWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1544 + # source://prism//lib/prism/dispatcher.rb#1560 def visit_constant_write_node(node); end # Dispatch enter and leave events for DefNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1550 + # source://prism//lib/prism/dispatcher.rb#1566 def visit_def_node(node); end # Dispatch enter and leave events for DefinedNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1556 + # source://prism//lib/prism/dispatcher.rb#1572 def visit_defined_node(node); end # Dispatch enter and leave events for ElseNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1562 + # source://prism//lib/prism/dispatcher.rb#1578 def visit_else_node(node); end # Dispatch enter and leave events for EmbeddedStatementsNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1568 + # source://prism//lib/prism/dispatcher.rb#1584 def visit_embedded_statements_node(node); end # Dispatch enter and leave events for EmbeddedVariableNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1574 + # source://prism//lib/prism/dispatcher.rb#1590 def visit_embedded_variable_node(node); end # Dispatch enter and leave events for EnsureNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1580 + # source://prism//lib/prism/dispatcher.rb#1596 def visit_ensure_node(node); end # Dispatch enter and leave events for FalseNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1586 + # source://prism//lib/prism/dispatcher.rb#1602 def visit_false_node(node); end # Dispatch enter and leave events for FindPatternNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1592 + # source://prism//lib/prism/dispatcher.rb#1608 def visit_find_pattern_node(node); end # Dispatch enter and leave events for FlipFlopNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1598 + # source://prism//lib/prism/dispatcher.rb#1614 def visit_flip_flop_node(node); end # Dispatch enter and leave events for FloatNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1604 + # source://prism//lib/prism/dispatcher.rb#1620 def visit_float_node(node); end # Dispatch enter and leave events for ForNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1610 + # source://prism//lib/prism/dispatcher.rb#1626 def visit_for_node(node); end # Dispatch enter and leave events for ForwardingArgumentsNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1616 + # source://prism//lib/prism/dispatcher.rb#1632 def visit_forwarding_arguments_node(node); end # Dispatch enter and leave events for ForwardingParameterNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1622 + # source://prism//lib/prism/dispatcher.rb#1638 def visit_forwarding_parameter_node(node); end # Dispatch enter and leave events for ForwardingSuperNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1628 + # source://prism//lib/prism/dispatcher.rb#1644 def visit_forwarding_super_node(node); end # Dispatch enter and leave events for GlobalVariableAndWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1634 + # source://prism//lib/prism/dispatcher.rb#1650 def visit_global_variable_and_write_node(node); end # Dispatch enter and leave events for GlobalVariableOperatorWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1640 + # source://prism//lib/prism/dispatcher.rb#1656 def visit_global_variable_operator_write_node(node); end # Dispatch enter and leave events for GlobalVariableOrWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1646 + # source://prism//lib/prism/dispatcher.rb#1662 def visit_global_variable_or_write_node(node); end # Dispatch enter and leave events for GlobalVariableReadNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1652 + # source://prism//lib/prism/dispatcher.rb#1668 def visit_global_variable_read_node(node); end # Dispatch enter and leave events for GlobalVariableTargetNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1658 + # source://prism//lib/prism/dispatcher.rb#1674 def visit_global_variable_target_node(node); end # Dispatch enter and leave events for GlobalVariableWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1664 + # source://prism//lib/prism/dispatcher.rb#1680 def visit_global_variable_write_node(node); end # Dispatch enter and leave events for HashNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1670 + # source://prism//lib/prism/dispatcher.rb#1686 def visit_hash_node(node); end # Dispatch enter and leave events for HashPatternNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1676 + # source://prism//lib/prism/dispatcher.rb#1692 def visit_hash_pattern_node(node); end # Dispatch enter and leave events for IfNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1682 + # source://prism//lib/prism/dispatcher.rb#1698 def visit_if_node(node); end # Dispatch enter and leave events for ImaginaryNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1688 + # source://prism//lib/prism/dispatcher.rb#1704 def visit_imaginary_node(node); end # Dispatch enter and leave events for ImplicitNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1694 + # source://prism//lib/prism/dispatcher.rb#1710 def visit_implicit_node(node); end # Dispatch enter and leave events for ImplicitRestNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1700 + # source://prism//lib/prism/dispatcher.rb#1716 def visit_implicit_rest_node(node); end # Dispatch enter and leave events for InNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1706 + # source://prism//lib/prism/dispatcher.rb#1722 def visit_in_node(node); end # Dispatch enter and leave events for IndexAndWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1712 + # source://prism//lib/prism/dispatcher.rb#1728 def visit_index_and_write_node(node); end # Dispatch enter and leave events for IndexOperatorWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1718 + # source://prism//lib/prism/dispatcher.rb#1734 def visit_index_operator_write_node(node); end # Dispatch enter and leave events for IndexOrWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1724 + # source://prism//lib/prism/dispatcher.rb#1740 def visit_index_or_write_node(node); end # Dispatch enter and leave events for IndexTargetNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1730 + # source://prism//lib/prism/dispatcher.rb#1746 def visit_index_target_node(node); end # Dispatch enter and leave events for InstanceVariableAndWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1736 + # source://prism//lib/prism/dispatcher.rb#1752 def visit_instance_variable_and_write_node(node); end # Dispatch enter and leave events for InstanceVariableOperatorWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1742 + # source://prism//lib/prism/dispatcher.rb#1758 def visit_instance_variable_operator_write_node(node); end # Dispatch enter and leave events for InstanceVariableOrWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1748 + # source://prism//lib/prism/dispatcher.rb#1764 def visit_instance_variable_or_write_node(node); end # Dispatch enter and leave events for InstanceVariableReadNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1754 + # source://prism//lib/prism/dispatcher.rb#1770 def visit_instance_variable_read_node(node); end # Dispatch enter and leave events for InstanceVariableTargetNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1760 + # source://prism//lib/prism/dispatcher.rb#1776 def visit_instance_variable_target_node(node); end # Dispatch enter and leave events for InstanceVariableWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1766 + # source://prism//lib/prism/dispatcher.rb#1782 def visit_instance_variable_write_node(node); end # Dispatch enter and leave events for IntegerNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1772 + # source://prism//lib/prism/dispatcher.rb#1788 def visit_integer_node(node); end # Dispatch enter and leave events for InterpolatedMatchLastLineNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1778 + # source://prism//lib/prism/dispatcher.rb#1794 def visit_interpolated_match_last_line_node(node); end # Dispatch enter and leave events for InterpolatedRegularExpressionNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1784 + # source://prism//lib/prism/dispatcher.rb#1800 def visit_interpolated_regular_expression_node(node); end # Dispatch enter and leave events for InterpolatedStringNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1790 + # source://prism//lib/prism/dispatcher.rb#1806 def visit_interpolated_string_node(node); end # Dispatch enter and leave events for InterpolatedSymbolNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1796 + # source://prism//lib/prism/dispatcher.rb#1812 def visit_interpolated_symbol_node(node); end # Dispatch enter and leave events for InterpolatedXStringNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1802 + # source://prism//lib/prism/dispatcher.rb#1818 def visit_interpolated_x_string_node(node); end # Dispatch enter and leave events for ItLocalVariableReadNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1808 + # source://prism//lib/prism/dispatcher.rb#1824 def visit_it_local_variable_read_node(node); end # Dispatch enter and leave events for ItParametersNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1814 + # source://prism//lib/prism/dispatcher.rb#1830 def visit_it_parameters_node(node); end # Dispatch enter and leave events for KeywordHashNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1820 + # source://prism//lib/prism/dispatcher.rb#1836 def visit_keyword_hash_node(node); end # Dispatch enter and leave events for KeywordRestParameterNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1826 + # source://prism//lib/prism/dispatcher.rb#1842 def visit_keyword_rest_parameter_node(node); end # Dispatch enter and leave events for LambdaNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1832 + # source://prism//lib/prism/dispatcher.rb#1848 def visit_lambda_node(node); end # Dispatch enter and leave events for LocalVariableAndWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1838 + # source://prism//lib/prism/dispatcher.rb#1854 def visit_local_variable_and_write_node(node); end # Dispatch enter and leave events for LocalVariableOperatorWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1844 + # source://prism//lib/prism/dispatcher.rb#1860 def visit_local_variable_operator_write_node(node); end # Dispatch enter and leave events for LocalVariableOrWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1850 + # source://prism//lib/prism/dispatcher.rb#1866 def visit_local_variable_or_write_node(node); end # Dispatch enter and leave events for LocalVariableReadNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1856 + # source://prism//lib/prism/dispatcher.rb#1872 def visit_local_variable_read_node(node); end # Dispatch enter and leave events for LocalVariableTargetNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1862 + # source://prism//lib/prism/dispatcher.rb#1878 def visit_local_variable_target_node(node); end # Dispatch enter and leave events for LocalVariableWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1868 + # source://prism//lib/prism/dispatcher.rb#1884 def visit_local_variable_write_node(node); end # Dispatch enter and leave events for MatchLastLineNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1874 + # source://prism//lib/prism/dispatcher.rb#1890 def visit_match_last_line_node(node); end # Dispatch enter and leave events for MatchPredicateNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1880 + # source://prism//lib/prism/dispatcher.rb#1896 def visit_match_predicate_node(node); end # Dispatch enter and leave events for MatchRequiredNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1886 + # source://prism//lib/prism/dispatcher.rb#1902 def visit_match_required_node(node); end # Dispatch enter and leave events for MatchWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1892 + # source://prism//lib/prism/dispatcher.rb#1908 def visit_match_write_node(node); end # Dispatch enter and leave events for MissingNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1898 + # source://prism//lib/prism/dispatcher.rb#1914 def visit_missing_node(node); end # Dispatch enter and leave events for ModuleNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1904 + # source://prism//lib/prism/dispatcher.rb#1920 def visit_module_node(node); end # Dispatch enter and leave events for MultiTargetNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1910 + # source://prism//lib/prism/dispatcher.rb#1926 def visit_multi_target_node(node); end # Dispatch enter and leave events for MultiWriteNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1916 + # source://prism//lib/prism/dispatcher.rb#1932 def visit_multi_write_node(node); end # Dispatch enter and leave events for NextNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1922 + # source://prism//lib/prism/dispatcher.rb#1938 def visit_next_node(node); end # Dispatch enter and leave events for NilNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1928 + # source://prism//lib/prism/dispatcher.rb#1944 def visit_nil_node(node); end # Dispatch enter and leave events for NoKeywordsParameterNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1934 + # source://prism//lib/prism/dispatcher.rb#1950 def visit_no_keywords_parameter_node(node); end # Dispatch enter and leave events for NumberedParametersNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1940 + # source://prism//lib/prism/dispatcher.rb#1956 def visit_numbered_parameters_node(node); end # Dispatch enter and leave events for NumberedReferenceReadNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1946 + # source://prism//lib/prism/dispatcher.rb#1962 def visit_numbered_reference_read_node(node); end # Dispatch enter and leave events for OptionalKeywordParameterNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1952 + # source://prism//lib/prism/dispatcher.rb#1968 def visit_optional_keyword_parameter_node(node); end # Dispatch enter and leave events for OptionalParameterNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1958 + # source://prism//lib/prism/dispatcher.rb#1974 def visit_optional_parameter_node(node); end # Dispatch enter and leave events for OrNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1964 + # source://prism//lib/prism/dispatcher.rb#1980 def visit_or_node(node); end # Dispatch enter and leave events for ParametersNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1970 + # source://prism//lib/prism/dispatcher.rb#1986 def visit_parameters_node(node); end # Dispatch enter and leave events for ParenthesesNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1976 + # source://prism//lib/prism/dispatcher.rb#1992 def visit_parentheses_node(node); end # Dispatch enter and leave events for PinnedExpressionNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1982 + # source://prism//lib/prism/dispatcher.rb#1998 def visit_pinned_expression_node(node); end # Dispatch enter and leave events for PinnedVariableNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1988 + # source://prism//lib/prism/dispatcher.rb#2004 def visit_pinned_variable_node(node); end # Dispatch enter and leave events for PostExecutionNode nodes. # - # source://prism//lib/prism/dispatcher.rb#1994 + # source://prism//lib/prism/dispatcher.rb#2010 def visit_post_execution_node(node); end # Dispatch enter and leave events for PreExecutionNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2000 + # source://prism//lib/prism/dispatcher.rb#2016 def visit_pre_execution_node(node); end # Dispatch enter and leave events for ProgramNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2006 + # source://prism//lib/prism/dispatcher.rb#2022 def visit_program_node(node); end # Dispatch enter and leave events for RangeNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2012 + # source://prism//lib/prism/dispatcher.rb#2028 def visit_range_node(node); end # Dispatch enter and leave events for RationalNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2018 + # source://prism//lib/prism/dispatcher.rb#2034 def visit_rational_node(node); end # Dispatch enter and leave events for RedoNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2024 + # source://prism//lib/prism/dispatcher.rb#2040 def visit_redo_node(node); end # Dispatch enter and leave events for RegularExpressionNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2030 + # source://prism//lib/prism/dispatcher.rb#2046 def visit_regular_expression_node(node); end # Dispatch enter and leave events for RequiredKeywordParameterNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2036 + # source://prism//lib/prism/dispatcher.rb#2052 def visit_required_keyword_parameter_node(node); end # Dispatch enter and leave events for RequiredParameterNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2042 + # source://prism//lib/prism/dispatcher.rb#2058 def visit_required_parameter_node(node); end # Dispatch enter and leave events for RescueModifierNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2048 + # source://prism//lib/prism/dispatcher.rb#2064 def visit_rescue_modifier_node(node); end # Dispatch enter and leave events for RescueNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2054 + # source://prism//lib/prism/dispatcher.rb#2070 def visit_rescue_node(node); end # Dispatch enter and leave events for RestParameterNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2060 + # source://prism//lib/prism/dispatcher.rb#2076 def visit_rest_parameter_node(node); end # Dispatch enter and leave events for RetryNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2066 + # source://prism//lib/prism/dispatcher.rb#2082 def visit_retry_node(node); end # Dispatch enter and leave events for ReturnNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2072 + # source://prism//lib/prism/dispatcher.rb#2088 def visit_return_node(node); end # Dispatch enter and leave events for SelfNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2078 + # source://prism//lib/prism/dispatcher.rb#2094 def visit_self_node(node); end # Dispatch enter and leave events for ShareableConstantNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2084 + # source://prism//lib/prism/dispatcher.rb#2100 def visit_shareable_constant_node(node); end # Dispatch enter and leave events for SingletonClassNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2090 + # source://prism//lib/prism/dispatcher.rb#2106 def visit_singleton_class_node(node); end # Dispatch enter and leave events for SourceEncodingNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2096 + # source://prism//lib/prism/dispatcher.rb#2112 def visit_source_encoding_node(node); end # Dispatch enter and leave events for SourceFileNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2102 + # source://prism//lib/prism/dispatcher.rb#2118 def visit_source_file_node(node); end # Dispatch enter and leave events for SourceLineNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2108 + # source://prism//lib/prism/dispatcher.rb#2124 def visit_source_line_node(node); end # Dispatch enter and leave events for SplatNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2114 + # source://prism//lib/prism/dispatcher.rb#2130 def visit_splat_node(node); end # Dispatch enter and leave events for StatementsNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2120 + # source://prism//lib/prism/dispatcher.rb#2136 def visit_statements_node(node); end # Dispatch enter and leave events for StringNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2126 + # source://prism//lib/prism/dispatcher.rb#2142 def visit_string_node(node); end # Dispatch enter and leave events for SuperNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2132 + # source://prism//lib/prism/dispatcher.rb#2148 def visit_super_node(node); end # Dispatch enter and leave events for SymbolNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2138 + # source://prism//lib/prism/dispatcher.rb#2154 def visit_symbol_node(node); end # Dispatch enter and leave events for TrueNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2144 + # source://prism//lib/prism/dispatcher.rb#2160 def visit_true_node(node); end # Dispatch enter and leave events for UndefNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2150 + # source://prism//lib/prism/dispatcher.rb#2166 def visit_undef_node(node); end # Dispatch enter and leave events for UnlessNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2156 + # source://prism//lib/prism/dispatcher.rb#2172 def visit_unless_node(node); end # Dispatch enter and leave events for UntilNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2162 + # source://prism//lib/prism/dispatcher.rb#2178 def visit_until_node(node); end # Dispatch enter and leave events for WhenNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2168 + # source://prism//lib/prism/dispatcher.rb#2184 def visit_when_node(node); end # Dispatch enter and leave events for WhileNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2174 + # source://prism//lib/prism/dispatcher.rb#2190 def visit_while_node(node); end # Dispatch enter and leave events for XStringNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2180 + # source://prism//lib/prism/dispatcher.rb#2196 def visit_x_string_node(node); end # Dispatch enter and leave events for YieldNode nodes. # - # source://prism//lib/prism/dispatcher.rb#2186 + # source://prism//lib/prism/dispatcher.rb#2202 def visit_yield_node(node); end end # This visitor provides the ability to call Node#to_dot, which converts a # subtree into a graphviz dot graph. # -# source://prism//lib/prism/dot_visitor.rb#14 +# source://prism//lib/prism/dot_visitor.rb#18 class Prism::DotVisitor < ::Prism::Visitor # Initialize a new dot visitor. # # @return [DotVisitor] a new instance of DotVisitor # - # source://prism//lib/prism/dot_visitor.rb#106 + # source://prism//lib/prism/dot_visitor.rb#110 def initialize; end # The digraph that is being built. # - # source://prism//lib/prism/dot_visitor.rb#103 + # source://prism//lib/prism/dot_visitor.rb#107 def digraph; end # Convert this visitor into a graphviz dot graph string. # - # source://prism//lib/prism/dot_visitor.rb#111 + # source://prism//lib/prism/dot_visitor.rb#115 def to_dot; end # Visit a AliasGlobalVariableNode node. # - # source://prism//lib/prism/dot_visitor.rb#116 + # source://prism//lib/prism/dot_visitor.rb#120 def visit_alias_global_variable_node(node); end # Visit a AliasMethodNode node. # - # source://prism//lib/prism/dot_visitor.rb#141 + # source://prism//lib/prism/dot_visitor.rb#145 def visit_alias_method_node(node); end # Visit a AlternationPatternNode node. # - # source://prism//lib/prism/dot_visitor.rb#166 + # source://prism//lib/prism/dot_visitor.rb#170 def visit_alternation_pattern_node(node); end # Visit a AndNode node. # - # source://prism//lib/prism/dot_visitor.rb#191 + # source://prism//lib/prism/dot_visitor.rb#195 def visit_and_node(node); end # Visit a ArgumentsNode node. # - # source://prism//lib/prism/dot_visitor.rb#216 + # source://prism//lib/prism/dot_visitor.rb#220 def visit_arguments_node(node); end # Visit a ArrayNode node. # - # source://prism//lib/prism/dot_visitor.rb#246 + # source://prism//lib/prism/dot_visitor.rb#250 def visit_array_node(node); end # Visit a ArrayPatternNode node. # - # source://prism//lib/prism/dot_visitor.rb#286 + # source://prism//lib/prism/dot_visitor.rb#290 def visit_array_pattern_node(node); end # Visit a AssocNode node. # - # source://prism//lib/prism/dot_visitor.rb#348 + # source://prism//lib/prism/dot_visitor.rb#352 def visit_assoc_node(node); end # Visit a AssocSplatNode node. # - # source://prism//lib/prism/dot_visitor.rb#375 + # source://prism//lib/prism/dot_visitor.rb#379 def visit_assoc_splat_node(node); end # Visit a BackReferenceReadNode node. # - # source://prism//lib/prism/dot_visitor.rb#398 + # source://prism//lib/prism/dot_visitor.rb#402 def visit_back_reference_read_node(node); end # Visit a BeginNode node. # - # source://prism//lib/prism/dot_visitor.rb#415 + # source://prism//lib/prism/dot_visitor.rb#419 def visit_begin_node(node); end # Visit a BlockArgumentNode node. # - # source://prism//lib/prism/dot_visitor.rb#463 + # source://prism//lib/prism/dot_visitor.rb#467 def visit_block_argument_node(node); end # Visit a BlockLocalVariableNode node. # - # source://prism//lib/prism/dot_visitor.rb#486 + # source://prism//lib/prism/dot_visitor.rb#490 def visit_block_local_variable_node(node); end # Visit a BlockNode node. # - # source://prism//lib/prism/dot_visitor.rb#506 + # source://prism//lib/prism/dot_visitor.rb#510 def visit_block_node(node); end # Visit a BlockParameterNode node. # - # source://prism//lib/prism/dot_visitor.rb#541 + # source://prism//lib/prism/dot_visitor.rb#545 def visit_block_parameter_node(node); end # Visit a BlockParametersNode node. # - # source://prism//lib/prism/dot_visitor.rb#569 + # source://prism//lib/prism/dot_visitor.rb#573 def visit_block_parameters_node(node); end # Visit a BreakNode node. # - # source://prism//lib/prism/dot_visitor.rb#612 + # source://prism//lib/prism/dot_visitor.rb#616 def visit_break_node(node); end # Visit a CallAndWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#635 + # source://prism//lib/prism/dot_visitor.rb#639 def visit_call_and_write_node(node); end # Visit a CallNode node. # - # source://prism//lib/prism/dot_visitor.rb#681 + # source://prism//lib/prism/dot_visitor.rb#685 def visit_call_node(node); end # Visit a CallOperatorWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#739 + # source://prism//lib/prism/dot_visitor.rb#743 def visit_call_operator_write_node(node); end # Visit a CallOrWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#788 + # source://prism//lib/prism/dot_visitor.rb#792 def visit_call_or_write_node(node); end # Visit a CallTargetNode node. # - # source://prism//lib/prism/dot_visitor.rb#834 + # source://prism//lib/prism/dot_visitor.rb#838 def visit_call_target_node(node); end # Visit a CapturePatternNode node. # - # source://prism//lib/prism/dot_visitor.rb#864 + # source://prism//lib/prism/dot_visitor.rb#868 def visit_capture_pattern_node(node); end # Visit a CaseMatchNode node. # - # source://prism//lib/prism/dot_visitor.rb#889 + # source://prism//lib/prism/dot_visitor.rb#893 def visit_case_match_node(node); end # Visit a CaseNode node. # - # source://prism//lib/prism/dot_visitor.rb#934 + # source://prism//lib/prism/dot_visitor.rb#938 def visit_case_node(node); end # Visit a ClassNode node. # - # source://prism//lib/prism/dot_visitor.rb#979 + # source://prism//lib/prism/dot_visitor.rb#983 def visit_class_node(node); end # Visit a ClassVariableAndWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1026 + # source://prism//lib/prism/dot_visitor.rb#1030 def visit_class_variable_and_write_node(node); end # Visit a ClassVariableOperatorWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1053 + # source://prism//lib/prism/dot_visitor.rb#1057 def visit_class_variable_operator_write_node(node); end # Visit a ClassVariableOrWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1083 + # source://prism//lib/prism/dot_visitor.rb#1087 def visit_class_variable_or_write_node(node); end # Visit a ClassVariableReadNode node. # - # source://prism//lib/prism/dot_visitor.rb#1110 + # source://prism//lib/prism/dot_visitor.rb#1114 def visit_class_variable_read_node(node); end # Visit a ClassVariableTargetNode node. # - # source://prism//lib/prism/dot_visitor.rb#1127 + # source://prism//lib/prism/dot_visitor.rb#1131 def visit_class_variable_target_node(node); end # Visit a ClassVariableWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1144 + # source://prism//lib/prism/dot_visitor.rb#1148 def visit_class_variable_write_node(node); end # Visit a ConstantAndWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1171 + # source://prism//lib/prism/dot_visitor.rb#1175 def visit_constant_and_write_node(node); end # Visit a ConstantOperatorWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1198 + # source://prism//lib/prism/dot_visitor.rb#1202 def visit_constant_operator_write_node(node); end # Visit a ConstantOrWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1228 + # source://prism//lib/prism/dot_visitor.rb#1232 def visit_constant_or_write_node(node); end # Visit a ConstantPathAndWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1255 + # source://prism//lib/prism/dot_visitor.rb#1259 def visit_constant_path_and_write_node(node); end # Visit a ConstantPathNode node. # - # source://prism//lib/prism/dot_visitor.rb#1280 + # source://prism//lib/prism/dot_visitor.rb#1284 def visit_constant_path_node(node); end # Visit a ConstantPathOperatorWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1309 + # source://prism//lib/prism/dot_visitor.rb#1313 def visit_constant_path_operator_write_node(node); end # Visit a ConstantPathOrWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1337 + # source://prism//lib/prism/dot_visitor.rb#1341 def visit_constant_path_or_write_node(node); end # Visit a ConstantPathTargetNode node. # - # source://prism//lib/prism/dot_visitor.rb#1362 + # source://prism//lib/prism/dot_visitor.rb#1366 def visit_constant_path_target_node(node); end # Visit a ConstantPathWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1391 + # source://prism//lib/prism/dot_visitor.rb#1395 def visit_constant_path_write_node(node); end # Visit a ConstantReadNode node. # - # source://prism//lib/prism/dot_visitor.rb#1416 + # source://prism//lib/prism/dot_visitor.rb#1420 def visit_constant_read_node(node); end # Visit a ConstantTargetNode node. # - # source://prism//lib/prism/dot_visitor.rb#1433 + # source://prism//lib/prism/dot_visitor.rb#1437 def visit_constant_target_node(node); end # Visit a ConstantWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1450 + # source://prism//lib/prism/dot_visitor.rb#1454 def visit_constant_write_node(node); end # Visit a DefNode node. # - # source://prism//lib/prism/dot_visitor.rb#1477 + # source://prism//lib/prism/dot_visitor.rb#1481 def visit_def_node(node); end # Visit a DefinedNode node. # - # source://prism//lib/prism/dot_visitor.rb#1546 + # source://prism//lib/prism/dot_visitor.rb#1550 def visit_defined_node(node); end # Visit a ElseNode node. # - # source://prism//lib/prism/dot_visitor.rb#1577 + # source://prism//lib/prism/dot_visitor.rb#1581 def visit_else_node(node); end # Visit a EmbeddedStatementsNode node. # - # source://prism//lib/prism/dot_visitor.rb#1605 + # source://prism//lib/prism/dot_visitor.rb#1609 def visit_embedded_statements_node(node); end # Visit a EmbeddedVariableNode node. # - # source://prism//lib/prism/dot_visitor.rb#1631 + # source://prism//lib/prism/dot_visitor.rb#1635 def visit_embedded_variable_node(node); end # Visit a EnsureNode node. # - # source://prism//lib/prism/dot_visitor.rb#1652 + # source://prism//lib/prism/dot_visitor.rb#1656 def visit_ensure_node(node); end # Visit a FalseNode node. # - # source://prism//lib/prism/dot_visitor.rb#1678 + # source://prism//lib/prism/dot_visitor.rb#1682 def visit_false_node(node); end # Visit a FindPatternNode node. # - # source://prism//lib/prism/dot_visitor.rb#1692 + # source://prism//lib/prism/dot_visitor.rb#1696 def visit_find_pattern_node(node); end # Visit a FlipFlopNode node. # - # source://prism//lib/prism/dot_visitor.rb#1743 + # source://prism//lib/prism/dot_visitor.rb#1747 def visit_flip_flop_node(node); end # Visit a FloatNode node. # - # source://prism//lib/prism/dot_visitor.rb#1775 + # source://prism//lib/prism/dot_visitor.rb#1779 def visit_float_node(node); end # Visit a ForNode node. # - # source://prism//lib/prism/dot_visitor.rb#1792 + # source://prism//lib/prism/dot_visitor.rb#1796 def visit_for_node(node); end # Visit a ForwardingArgumentsNode node. # - # source://prism//lib/prism/dot_visitor.rb#1834 + # source://prism//lib/prism/dot_visitor.rb#1838 def visit_forwarding_arguments_node(node); end # Visit a ForwardingParameterNode node. # - # source://prism//lib/prism/dot_visitor.rb#1848 + # source://prism//lib/prism/dot_visitor.rb#1852 def visit_forwarding_parameter_node(node); end # Visit a ForwardingSuperNode node. # - # source://prism//lib/prism/dot_visitor.rb#1862 + # source://prism//lib/prism/dot_visitor.rb#1866 def visit_forwarding_super_node(node); end # Visit a GlobalVariableAndWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1882 + # source://prism//lib/prism/dot_visitor.rb#1886 def visit_global_variable_and_write_node(node); end # Visit a GlobalVariableOperatorWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1909 + # source://prism//lib/prism/dot_visitor.rb#1913 def visit_global_variable_operator_write_node(node); end # Visit a GlobalVariableOrWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#1939 + # source://prism//lib/prism/dot_visitor.rb#1943 def visit_global_variable_or_write_node(node); end # Visit a GlobalVariableReadNode node. # - # source://prism//lib/prism/dot_visitor.rb#1966 + # source://prism//lib/prism/dot_visitor.rb#1970 def visit_global_variable_read_node(node); end # Visit a GlobalVariableTargetNode node. # - # source://prism//lib/prism/dot_visitor.rb#1983 + # source://prism//lib/prism/dot_visitor.rb#1987 def visit_global_variable_target_node(node); end # Visit a GlobalVariableWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#2000 + # source://prism//lib/prism/dot_visitor.rb#2004 def visit_global_variable_write_node(node); end # Visit a HashNode node. # - # source://prism//lib/prism/dot_visitor.rb#2027 + # source://prism//lib/prism/dot_visitor.rb#2031 def visit_hash_node(node); end # Visit a HashPatternNode node. # - # source://prism//lib/prism/dot_visitor.rb#2060 + # source://prism//lib/prism/dot_visitor.rb#2064 def visit_hash_pattern_node(node); end # Visit a IfNode node. # - # source://prism//lib/prism/dot_visitor.rb#2109 + # source://prism//lib/prism/dot_visitor.rb#2113 def visit_if_node(node); end # Visit a ImaginaryNode node. # - # source://prism//lib/prism/dot_visitor.rb#2154 + # source://prism//lib/prism/dot_visitor.rb#2158 def visit_imaginary_node(node); end # Visit a ImplicitNode node. # - # source://prism//lib/prism/dot_visitor.rb#2172 + # source://prism//lib/prism/dot_visitor.rb#2176 def visit_implicit_node(node); end # Visit a ImplicitRestNode node. # - # source://prism//lib/prism/dot_visitor.rb#2190 + # source://prism//lib/prism/dot_visitor.rb#2194 def visit_implicit_rest_node(node); end # Visit a InNode node. # - # source://prism//lib/prism/dot_visitor.rb#2204 + # source://prism//lib/prism/dot_visitor.rb#2208 def visit_in_node(node); end # Visit a IndexAndWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#2236 + # source://prism//lib/prism/dot_visitor.rb#2240 def visit_index_and_write_node(node); end # Visit a IndexOperatorWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#2289 + # source://prism//lib/prism/dot_visitor.rb#2293 def visit_index_operator_write_node(node); end # Visit a IndexOrWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#2345 + # source://prism//lib/prism/dot_visitor.rb#2349 def visit_index_or_write_node(node); end # Visit a IndexTargetNode node. # - # source://prism//lib/prism/dot_visitor.rb#2398 + # source://prism//lib/prism/dot_visitor.rb#2402 def visit_index_target_node(node); end # Visit a InstanceVariableAndWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#2437 + # source://prism//lib/prism/dot_visitor.rb#2441 def visit_instance_variable_and_write_node(node); end # Visit a InstanceVariableOperatorWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#2464 + # source://prism//lib/prism/dot_visitor.rb#2468 def visit_instance_variable_operator_write_node(node); end # Visit a InstanceVariableOrWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#2494 + # source://prism//lib/prism/dot_visitor.rb#2498 def visit_instance_variable_or_write_node(node); end # Visit a InstanceVariableReadNode node. # - # source://prism//lib/prism/dot_visitor.rb#2521 + # source://prism//lib/prism/dot_visitor.rb#2525 def visit_instance_variable_read_node(node); end # Visit a InstanceVariableTargetNode node. # - # source://prism//lib/prism/dot_visitor.rb#2538 + # source://prism//lib/prism/dot_visitor.rb#2542 def visit_instance_variable_target_node(node); end # Visit a InstanceVariableWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#2555 + # source://prism//lib/prism/dot_visitor.rb#2559 def visit_instance_variable_write_node(node); end # Visit a IntegerNode node. # - # source://prism//lib/prism/dot_visitor.rb#2582 + # source://prism//lib/prism/dot_visitor.rb#2586 def visit_integer_node(node); end # Visit a InterpolatedMatchLastLineNode node. # - # source://prism//lib/prism/dot_visitor.rb#2602 + # source://prism//lib/prism/dot_visitor.rb#2606 def visit_interpolated_match_last_line_node(node); end # Visit a InterpolatedRegularExpressionNode node. # - # source://prism//lib/prism/dot_visitor.rb#2638 + # source://prism//lib/prism/dot_visitor.rb#2642 def visit_interpolated_regular_expression_node(node); end # Visit a InterpolatedStringNode node. # - # source://prism//lib/prism/dot_visitor.rb#2674 + # source://prism//lib/prism/dot_visitor.rb#2678 def visit_interpolated_string_node(node); end # Visit a InterpolatedSymbolNode node. # - # source://prism//lib/prism/dot_visitor.rb#2714 + # source://prism//lib/prism/dot_visitor.rb#2718 def visit_interpolated_symbol_node(node); end # Visit a InterpolatedXStringNode node. # - # source://prism//lib/prism/dot_visitor.rb#2751 + # source://prism//lib/prism/dot_visitor.rb#2755 def visit_interpolated_x_string_node(node); end # Visit a ItLocalVariableReadNode node. # - # source://prism//lib/prism/dot_visitor.rb#2784 + # source://prism//lib/prism/dot_visitor.rb#2788 def visit_it_local_variable_read_node(node); end # Visit a ItParametersNode node. # - # source://prism//lib/prism/dot_visitor.rb#2798 + # source://prism//lib/prism/dot_visitor.rb#2802 def visit_it_parameters_node(node); end # Visit a KeywordHashNode node. # - # source://prism//lib/prism/dot_visitor.rb#2812 + # source://prism//lib/prism/dot_visitor.rb#2816 def visit_keyword_hash_node(node); end # Visit a KeywordRestParameterNode node. # - # source://prism//lib/prism/dot_visitor.rb#2842 + # source://prism//lib/prism/dot_visitor.rb#2846 def visit_keyword_rest_parameter_node(node); end # Visit a LambdaNode node. # - # source://prism//lib/prism/dot_visitor.rb#2870 + # source://prism//lib/prism/dot_visitor.rb#2874 def visit_lambda_node(node); end # Visit a LocalVariableAndWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#2908 + # source://prism//lib/prism/dot_visitor.rb#2912 def visit_local_variable_and_write_node(node); end # Visit a LocalVariableOperatorWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#2938 + # source://prism//lib/prism/dot_visitor.rb#2942 def visit_local_variable_operator_write_node(node); end # Visit a LocalVariableOrWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#2971 + # source://prism//lib/prism/dot_visitor.rb#2975 def visit_local_variable_or_write_node(node); end # Visit a LocalVariableReadNode node. # - # source://prism//lib/prism/dot_visitor.rb#3001 + # source://prism//lib/prism/dot_visitor.rb#3005 def visit_local_variable_read_node(node); end # Visit a LocalVariableTargetNode node. # - # source://prism//lib/prism/dot_visitor.rb#3021 + # source://prism//lib/prism/dot_visitor.rb#3025 def visit_local_variable_target_node(node); end # Visit a LocalVariableWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#3041 + # source://prism//lib/prism/dot_visitor.rb#3045 def visit_local_variable_write_node(node); end # Visit a MatchLastLineNode node. # - # source://prism//lib/prism/dot_visitor.rb#3071 + # source://prism//lib/prism/dot_visitor.rb#3075 def visit_match_last_line_node(node); end # Visit a MatchPredicateNode node. # - # source://prism//lib/prism/dot_visitor.rb#3100 + # source://prism//lib/prism/dot_visitor.rb#3104 def visit_match_predicate_node(node); end # Visit a MatchRequiredNode node. # - # source://prism//lib/prism/dot_visitor.rb#3125 + # source://prism//lib/prism/dot_visitor.rb#3129 def visit_match_required_node(node); end # Visit a MatchWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#3150 + # source://prism//lib/prism/dot_visitor.rb#3154 def visit_match_write_node(node); end # Visit a MissingNode node. # - # source://prism//lib/prism/dot_visitor.rb#3181 + # source://prism//lib/prism/dot_visitor.rb#3185 def visit_missing_node(node); end # Visit a ModuleNode node. # - # source://prism//lib/prism/dot_visitor.rb#3195 + # source://prism//lib/prism/dot_visitor.rb#3199 def visit_module_node(node); end # Visit a MultiTargetNode node. # - # source://prism//lib/prism/dot_visitor.rb#3231 + # source://prism//lib/prism/dot_visitor.rb#3235 def visit_multi_target_node(node); end # Visit a MultiWriteNode node. # - # source://prism//lib/prism/dot_visitor.rb#3287 + # source://prism//lib/prism/dot_visitor.rb#3291 def visit_multi_write_node(node); end # Visit a NextNode node. # - # source://prism//lib/prism/dot_visitor.rb#3350 + # source://prism//lib/prism/dot_visitor.rb#3354 def visit_next_node(node); end # Visit a NilNode node. # - # source://prism//lib/prism/dot_visitor.rb#3373 + # source://prism//lib/prism/dot_visitor.rb#3377 def visit_nil_node(node); end # Visit a NoKeywordsParameterNode node. # - # source://prism//lib/prism/dot_visitor.rb#3387 + # source://prism//lib/prism/dot_visitor.rb#3391 def visit_no_keywords_parameter_node(node); end # Visit a NumberedParametersNode node. # - # source://prism//lib/prism/dot_visitor.rb#3407 + # source://prism//lib/prism/dot_visitor.rb#3411 def visit_numbered_parameters_node(node); end # Visit a NumberedReferenceReadNode node. # - # source://prism//lib/prism/dot_visitor.rb#3424 + # source://prism//lib/prism/dot_visitor.rb#3428 def visit_numbered_reference_read_node(node); end # Visit a OptionalKeywordParameterNode node. # - # source://prism//lib/prism/dot_visitor.rb#3441 + # source://prism//lib/prism/dot_visitor.rb#3445 def visit_optional_keyword_parameter_node(node); end # Visit a OptionalParameterNode node. # - # source://prism//lib/prism/dot_visitor.rb#3468 + # source://prism//lib/prism/dot_visitor.rb#3472 def visit_optional_parameter_node(node); end # Visit a OrNode node. # - # source://prism//lib/prism/dot_visitor.rb#3498 + # source://prism//lib/prism/dot_visitor.rb#3502 def visit_or_node(node); end # Visit a ParametersNode node. # - # source://prism//lib/prism/dot_visitor.rb#3523 + # source://prism//lib/prism/dot_visitor.rb#3527 def visit_parameters_node(node); end # Visit a ParenthesesNode node. # - # source://prism//lib/prism/dot_visitor.rb#3607 + # source://prism//lib/prism/dot_visitor.rb#3611 def visit_parentheses_node(node); end # Visit a PinnedExpressionNode node. # - # source://prism//lib/prism/dot_visitor.rb#3636 + # source://prism//lib/prism/dot_visitor.rb#3640 def visit_pinned_expression_node(node); end # Visit a PinnedVariableNode node. # - # source://prism//lib/prism/dot_visitor.rb#3663 + # source://prism//lib/prism/dot_visitor.rb#3667 def visit_pinned_variable_node(node); end # Visit a PostExecutionNode node. # - # source://prism//lib/prism/dot_visitor.rb#3684 + # source://prism//lib/prism/dot_visitor.rb#3688 def visit_post_execution_node(node); end # Visit a PreExecutionNode node. # - # source://prism//lib/prism/dot_visitor.rb#3713 + # source://prism//lib/prism/dot_visitor.rb#3717 def visit_pre_execution_node(node); end # Visit a ProgramNode node. # - # source://prism//lib/prism/dot_visitor.rb#3742 + # source://prism//lib/prism/dot_visitor.rb#3746 def visit_program_node(node); end # Visit a RangeNode node. # - # source://prism//lib/prism/dot_visitor.rb#3763 + # source://prism//lib/prism/dot_visitor.rb#3767 def visit_range_node(node); end # Visit a RationalNode node. # - # source://prism//lib/prism/dot_visitor.rb#3795 + # source://prism//lib/prism/dot_visitor.rb#3799 def visit_rational_node(node); end # Visit a RedoNode node. # - # source://prism//lib/prism/dot_visitor.rb#3818 + # source://prism//lib/prism/dot_visitor.rb#3822 def visit_redo_node(node); end # Visit a RegularExpressionNode node. # - # source://prism//lib/prism/dot_visitor.rb#3832 + # source://prism//lib/prism/dot_visitor.rb#3836 def visit_regular_expression_node(node); end # Visit a RequiredKeywordParameterNode node. # - # source://prism//lib/prism/dot_visitor.rb#3861 + # source://prism//lib/prism/dot_visitor.rb#3865 def visit_required_keyword_parameter_node(node); end # Visit a RequiredParameterNode node. # - # source://prism//lib/prism/dot_visitor.rb#3884 + # source://prism//lib/prism/dot_visitor.rb#3888 def visit_required_parameter_node(node); end # Visit a RescueModifierNode node. # - # source://prism//lib/prism/dot_visitor.rb#3904 + # source://prism//lib/prism/dot_visitor.rb#3908 def visit_rescue_modifier_node(node); end # Visit a RescueNode node. # - # source://prism//lib/prism/dot_visitor.rb#3929 + # source://prism//lib/prism/dot_visitor.rb#3933 def visit_rescue_node(node); end # Visit a RestParameterNode node. # - # source://prism//lib/prism/dot_visitor.rb#3987 + # source://prism//lib/prism/dot_visitor.rb#3991 def visit_rest_parameter_node(node); end # Visit a RetryNode node. # - # source://prism//lib/prism/dot_visitor.rb#4015 + # source://prism//lib/prism/dot_visitor.rb#4019 def visit_retry_node(node); end # Visit a ReturnNode node. # - # source://prism//lib/prism/dot_visitor.rb#4029 + # source://prism//lib/prism/dot_visitor.rb#4033 def visit_return_node(node); end # Visit a SelfNode node. # - # source://prism//lib/prism/dot_visitor.rb#4052 + # source://prism//lib/prism/dot_visitor.rb#4056 def visit_self_node(node); end # Visit a ShareableConstantNode node. # - # source://prism//lib/prism/dot_visitor.rb#4066 + # source://prism//lib/prism/dot_visitor.rb#4070 def visit_shareable_constant_node(node); end # Visit a SingletonClassNode node. # - # source://prism//lib/prism/dot_visitor.rb#4087 + # source://prism//lib/prism/dot_visitor.rb#4091 def visit_singleton_class_node(node); end # Visit a SourceEncodingNode node. # - # source://prism//lib/prism/dot_visitor.rb#4123 + # source://prism//lib/prism/dot_visitor.rb#4127 def visit_source_encoding_node(node); end # Visit a SourceFileNode node. # - # source://prism//lib/prism/dot_visitor.rb#4137 + # source://prism//lib/prism/dot_visitor.rb#4141 def visit_source_file_node(node); end # Visit a SourceLineNode node. # - # source://prism//lib/prism/dot_visitor.rb#4157 + # source://prism//lib/prism/dot_visitor.rb#4161 def visit_source_line_node(node); end # Visit a SplatNode node. # - # source://prism//lib/prism/dot_visitor.rb#4171 + # source://prism//lib/prism/dot_visitor.rb#4175 def visit_splat_node(node); end # Visit a StatementsNode node. # - # source://prism//lib/prism/dot_visitor.rb#4194 + # source://prism//lib/prism/dot_visitor.rb#4198 def visit_statements_node(node); end # Visit a StringNode node. # - # source://prism//lib/prism/dot_visitor.rb#4221 + # source://prism//lib/prism/dot_visitor.rb#4225 def visit_string_node(node); end # Visit a SuperNode node. # - # source://prism//lib/prism/dot_visitor.rb#4254 + # source://prism//lib/prism/dot_visitor.rb#4258 def visit_super_node(node); end # Visit a SymbolNode node. # - # source://prism//lib/prism/dot_visitor.rb#4293 + # source://prism//lib/prism/dot_visitor.rb#4297 def visit_symbol_node(node); end # Visit a TrueNode node. # - # source://prism//lib/prism/dot_visitor.rb#4328 + # source://prism//lib/prism/dot_visitor.rb#4332 def visit_true_node(node); end # Visit a UndefNode node. # - # source://prism//lib/prism/dot_visitor.rb#4342 + # source://prism//lib/prism/dot_visitor.rb#4346 def visit_undef_node(node); end # Visit a UnlessNode node. # - # source://prism//lib/prism/dot_visitor.rb#4372 + # source://prism//lib/prism/dot_visitor.rb#4376 def visit_unless_node(node); end # Visit a UntilNode node. # - # source://prism//lib/prism/dot_visitor.rb#4415 + # source://prism//lib/prism/dot_visitor.rb#4419 def visit_until_node(node); end # Visit a WhenNode node. # - # source://prism//lib/prism/dot_visitor.rb#4455 + # source://prism//lib/prism/dot_visitor.rb#4459 def visit_when_node(node); end # Visit a WhileNode node. # - # source://prism//lib/prism/dot_visitor.rb#4496 + # source://prism//lib/prism/dot_visitor.rb#4500 def visit_while_node(node); end # Visit a XStringNode node. # - # source://prism//lib/prism/dot_visitor.rb#4536 + # source://prism//lib/prism/dot_visitor.rb#4540 def visit_x_string_node(node); end # Visit a YieldNode node. # - # source://prism//lib/prism/dot_visitor.rb#4565 + # source://prism//lib/prism/dot_visitor.rb#4569 def visit_yield_node(node); end private @@ -14524,186 +14415,186 @@ class Prism::DotVisitor < ::Prism::Visitor # Inspect a node that has arguments_node_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4611 + # source://prism//lib/prism/dot_visitor.rb#4615 def arguments_node_flags_inspect(node); end # Inspect a node that has array_node_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4623 + # source://prism//lib/prism/dot_visitor.rb#4627 def array_node_flags_inspect(node); end # Inspect a node that has call_node_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4631 + # source://prism//lib/prism/dot_visitor.rb#4635 def call_node_flags_inspect(node); end # Inspect a node that has encoding_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4642 + # source://prism//lib/prism/dot_visitor.rb#4646 def encoding_flags_inspect(node); end # Inspect a node that has integer_base_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4651 + # source://prism//lib/prism/dot_visitor.rb#4655 def integer_base_flags_inspect(node); end # Inspect a node that has interpolated_string_node_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4662 + # source://prism//lib/prism/dot_visitor.rb#4666 def interpolated_string_node_flags_inspect(node); end # Inspect a node that has keyword_hash_node_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4671 + # source://prism//lib/prism/dot_visitor.rb#4675 def keyword_hash_node_flags_inspect(node); end # Inspect a location to display the start and end line and column numbers. # - # source://prism//lib/prism/dot_visitor.rb#4605 + # source://prism//lib/prism/dot_visitor.rb#4609 def location_inspect(location); end # Inspect a node that has loop_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4679 + # source://prism//lib/prism/dot_visitor.rb#4683 def loop_flags_inspect(node); end # Generate a unique node ID for a node throughout the digraph. # - # source://prism//lib/prism/dot_visitor.rb#4600 + # source://prism//lib/prism/dot_visitor.rb#4604 def node_id(node); end # Inspect a node that has parameter_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4687 + # source://prism//lib/prism/dot_visitor.rb#4691 def parameter_flags_inspect(node); end # Inspect a node that has parentheses_node_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4695 + # source://prism//lib/prism/dot_visitor.rb#4699 def parentheses_node_flags_inspect(node); end # Inspect a node that has range_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4703 + # source://prism//lib/prism/dot_visitor.rb#4707 def range_flags_inspect(node); end # Inspect a node that has regular_expression_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4711 + # source://prism//lib/prism/dot_visitor.rb#4715 def regular_expression_flags_inspect(node); end # Inspect a node that has shareable_constant_node_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4729 + # source://prism//lib/prism/dot_visitor.rb#4733 def shareable_constant_node_flags_inspect(node); end # Inspect a node that has string_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4739 + # source://prism//lib/prism/dot_visitor.rb#4743 def string_flags_inspect(node); end # Inspect a node that has symbol_flags flags to display the flags as a # comma-separated list. # - # source://prism//lib/prism/dot_visitor.rb#4750 + # source://prism//lib/prism/dot_visitor.rb#4754 def symbol_flags_inspect(node); end end -# source://prism//lib/prism/dot_visitor.rb#59 +# source://prism//lib/prism/dot_visitor.rb#63 class Prism::DotVisitor::Digraph # @return [Digraph] a new instance of Digraph # - # source://prism//lib/prism/dot_visitor.rb#62 + # source://prism//lib/prism/dot_visitor.rb#66 def initialize; end - # source://prism//lib/prism/dot_visitor.rb#76 + # source://prism//lib/prism/dot_visitor.rb#80 def edge(value); end # Returns the value of attribute edges. # - # source://prism//lib/prism/dot_visitor.rb#60 + # source://prism//lib/prism/dot_visitor.rb#64 def edges; end - # source://prism//lib/prism/dot_visitor.rb#68 + # source://prism//lib/prism/dot_visitor.rb#72 def node(value); end # Returns the value of attribute nodes. # - # source://prism//lib/prism/dot_visitor.rb#60 + # source://prism//lib/prism/dot_visitor.rb#64 def nodes; end - # source://prism//lib/prism/dot_visitor.rb#80 + # source://prism//lib/prism/dot_visitor.rb#84 def to_dot; end - # source://prism//lib/prism/dot_visitor.rb#72 + # source://prism//lib/prism/dot_visitor.rb#76 def waypoint(value); end # Returns the value of attribute waypoints. # - # source://prism//lib/prism/dot_visitor.rb#60 + # source://prism//lib/prism/dot_visitor.rb#64 def waypoints; end end -# source://prism//lib/prism/dot_visitor.rb#15 +# source://prism//lib/prism/dot_visitor.rb#19 class Prism::DotVisitor::Field # @return [Field] a new instance of Field # - # source://prism//lib/prism/dot_visitor.rb#18 + # source://prism//lib/prism/dot_visitor.rb#22 def initialize(name, value, port); end # Returns the value of attribute name. # - # source://prism//lib/prism/dot_visitor.rb#16 + # source://prism//lib/prism/dot_visitor.rb#20 def name; end # Returns the value of attribute port. # - # source://prism//lib/prism/dot_visitor.rb#16 + # source://prism//lib/prism/dot_visitor.rb#20 def port; end - # source://prism//lib/prism/dot_visitor.rb#24 + # source://prism//lib/prism/dot_visitor.rb#28 def to_dot; end # Returns the value of attribute value. # - # source://prism//lib/prism/dot_visitor.rb#16 + # source://prism//lib/prism/dot_visitor.rb#20 def value; end end -# source://prism//lib/prism/dot_visitor.rb#33 +# source://prism//lib/prism/dot_visitor.rb#37 class Prism::DotVisitor::Table # @return [Table] a new instance of Table # - # source://prism//lib/prism/dot_visitor.rb#36 + # source://prism//lib/prism/dot_visitor.rb#40 def initialize(name); end - # source://prism//lib/prism/dot_visitor.rb#41 + # source://prism//lib/prism/dot_visitor.rb#45 def field(name, value = T.unsafe(nil), port: T.unsafe(nil)); end # Returns the value of attribute fields. # - # source://prism//lib/prism/dot_visitor.rb#34 + # source://prism//lib/prism/dot_visitor.rb#38 def fields; end # Returns the value of attribute name. # - # source://prism//lib/prism/dot_visitor.rb#34 + # source://prism//lib/prism/dot_visitor.rb#38 def name; end - # source://prism//lib/prism/dot_visitor.rb#45 + # source://prism//lib/prism/dot_visitor.rb#49 def to_dot; end end @@ -14712,13 +14603,13 @@ end # if a then b else c end # ^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#6294 +# source://prism//lib/prism/node.rb#6324 class Prism::ElseNode < ::Prism::Node # Initialize a new ElseNode node. # # @return [ElseNode] a new instance of ElseNode # - # source://prism//lib/prism/node.rb#6296 + # source://prism//lib/prism/node.rb#6326 sig do params( source: Prism::Source, @@ -14735,36 +14626,36 @@ class Prism::ElseNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#6403 + # source://prism//lib/prism/node.rb#6433 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#6307 + # source://prism//lib/prism/node.rb#6337 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6312 + # source://prism//lib/prism/node.rb#6342 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#6324 + # source://prism//lib/prism/node.rb#6354 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#6317 + # source://prism//lib/prism/node.rb#6347 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?else_keyword_loc: Location, ?statements: StatementsNode?, ?end_keyword_loc: Location?) -> ElseNode # - # source://prism//lib/prism/node.rb#6329 + # source://prism//lib/prism/node.rb#6359 sig do params( node_id: Integer, @@ -14777,40 +14668,40 @@ class Prism::ElseNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), else_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6312 + # source://prism//lib/prism/node.rb#6342 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, else_keyword_loc: Location, statements: StatementsNode?, end_keyword_loc: Location? } # - # source://prism//lib/prism/node.rb#6337 + # source://prism//lib/prism/node.rb#6367 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # def else_keyword: () -> String # - # source://prism//lib/prism/node.rb#6377 + # source://prism//lib/prism/node.rb#6407 sig { returns(String) } def else_keyword; end # attr_reader else_keyword_loc: Location # - # source://prism//lib/prism/node.rb#6342 + # source://prism//lib/prism/node.rb#6372 sig { returns(Prism::Location) } def else_keyword_loc; end # def end_keyword: () -> String? # - # source://prism//lib/prism/node.rb#6382 + # source://prism//lib/prism/node.rb#6412 sig { returns(T.nilable(String)) } def end_keyword; end # attr_reader end_keyword_loc: Location? # - # source://prism//lib/prism/node.rb#6358 + # source://prism//lib/prism/node.rb#6388 sig { returns(T.nilable(Prism::Location)) } def end_keyword_loc; end @@ -14819,38 +14710,38 @@ class Prism::ElseNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#6387 + # source://prism//lib/prism/node.rb#6417 sig { override.returns(String) } def inspect; end # Save the else_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6350 + # source://prism//lib/prism/node.rb#6380 def save_else_keyword_loc(repository); end # Save the end_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6372 + # source://prism//lib/prism/node.rb#6402 def save_end_keyword_loc(repository); end # attr_reader statements: StatementsNode? # - # source://prism//lib/prism/node.rb#6355 + # source://prism//lib/prism/node.rb#6385 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#6392 + # source://prism//lib/prism/node.rb#6422 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#6397 + # source://prism//lib/prism/node.rb#6427 def type; end end end @@ -14858,11 +14749,11 @@ end # EmbDocComment objects correspond to comments that are surrounded by =begin # and =end. # -# source://prism//lib/prism/parse_result.rb#561 +# source://prism//lib/prism/parse_result.rb#562 class Prism::EmbDocComment < ::Prism::Comment # Returns a string representation of this comment. # - # source://prism//lib/prism/parse_result.rb#568 + # source://prism//lib/prism/parse_result.rb#569 sig { returns(String) } def inspect; end @@ -14870,7 +14761,7 @@ class Prism::EmbDocComment < ::Prism::Comment # # @return [Boolean] # - # source://prism//lib/prism/parse_result.rb#563 + # source://prism//lib/prism/parse_result.rb#564 sig { override.returns(T::Boolean) } def trailing?; end end @@ -14880,13 +14771,13 @@ end # "foo #{bar}" # ^^^^^^ # -# source://prism//lib/prism/node.rb#6415 +# source://prism//lib/prism/node.rb#6445 class Prism::EmbeddedStatementsNode < ::Prism::Node # Initialize a new EmbeddedStatementsNode node. # # @return [EmbeddedStatementsNode] a new instance of EmbeddedStatementsNode # - # source://prism//lib/prism/node.rb#6417 + # source://prism//lib/prism/node.rb#6447 sig do params( source: Prism::Source, @@ -14903,48 +14794,48 @@ class Prism::EmbeddedStatementsNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#6518 + # source://prism//lib/prism/node.rb#6548 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#6428 + # source://prism//lib/prism/node.rb#6458 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6433 + # source://prism//lib/prism/node.rb#6463 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#6497 + # source://prism//lib/prism/node.rb#6527 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#6479 + # source://prism//lib/prism/node.rb#6509 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#6445 + # source://prism//lib/prism/node.rb#6475 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#6438 + # source://prism//lib/prism/node.rb#6468 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location, ?statements: StatementsNode?, ?closing_loc: Location) -> EmbeddedStatementsNode # - # source://prism//lib/prism/node.rb#6450 + # source://prism//lib/prism/node.rb#6480 sig do params( node_id: Integer, @@ -14957,16 +14848,16 @@ class Prism::EmbeddedStatementsNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), statements: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6433 + # source://prism//lib/prism/node.rb#6463 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, statements: StatementsNode?, closing_loc: Location } # - # source://prism//lib/prism/node.rb#6458 + # source://prism//lib/prism/node.rb#6488 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -14975,50 +14866,50 @@ class Prism::EmbeddedStatementsNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#6502 + # source://prism//lib/prism/node.rb#6532 sig { override.returns(String) } def inspect; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#6492 + # source://prism//lib/prism/node.rb#6522 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#6463 + # source://prism//lib/prism/node.rb#6493 sig { returns(Prism::Location) } def opening_loc; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6487 + # source://prism//lib/prism/node.rb#6517 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6471 + # source://prism//lib/prism/node.rb#6501 def save_opening_loc(repository); end # attr_reader statements: StatementsNode? # - # source://prism//lib/prism/node.rb#6476 + # source://prism//lib/prism/node.rb#6506 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#6507 + # source://prism//lib/prism/node.rb#6537 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#6512 + # source://prism//lib/prism/node.rb#6542 def type; end end end @@ -15028,13 +14919,13 @@ end # "foo #@bar" # ^^^^^ # -# source://prism//lib/prism/node.rb#6530 +# source://prism//lib/prism/node.rb#6560 class Prism::EmbeddedVariableNode < ::Prism::Node # Initialize a new EmbeddedVariableNode node. # # @return [EmbeddedVariableNode] a new instance of EmbeddedVariableNode # - # source://prism//lib/prism/node.rb#6532 + # source://prism//lib/prism/node.rb#6562 sig do params( source: Prism::Source, @@ -15050,36 +14941,36 @@ class Prism::EmbeddedVariableNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#6612 + # source://prism//lib/prism/node.rb#6642 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#6542 + # source://prism//lib/prism/node.rb#6572 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6547 + # source://prism//lib/prism/node.rb#6577 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#6557 + # source://prism//lib/prism/node.rb#6587 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#6552 + # source://prism//lib/prism/node.rb#6582 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?operator_loc: Location, ?variable: InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode) -> EmbeddedVariableNode # - # source://prism//lib/prism/node.rb#6562 + # source://prism//lib/prism/node.rb#6592 sig do params( node_id: Integer, @@ -15091,16 +14982,16 @@ class Prism::EmbeddedVariableNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), operator_loc: T.unsafe(nil), variable: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6547 + # source://prism//lib/prism/node.rb#6577 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, operator_loc: Location, variable: InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode } # - # source://prism//lib/prism/node.rb#6570 + # source://prism//lib/prism/node.rb#6600 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -15109,37 +15000,37 @@ class Prism::EmbeddedVariableNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#6596 + # source://prism//lib/prism/node.rb#6626 sig { override.returns(String) } def inspect; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#6591 + # source://prism//lib/prism/node.rb#6621 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#6575 + # source://prism//lib/prism/node.rb#6605 sig { returns(Prism::Location) } def operator_loc; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6583 + # source://prism//lib/prism/node.rb#6613 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#6601 + # source://prism//lib/prism/node.rb#6631 sig { override.returns(Symbol) } def type; end # attr_reader variable: InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode # - # source://prism//lib/prism/node.rb#6588 + # source://prism//lib/prism/node.rb#6618 sig do returns(T.any(Prism::InstanceVariableReadNode, Prism::ClassVariableReadNode, Prism::GlobalVariableReadNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode)) end @@ -15148,24 +15039,24 @@ class Prism::EmbeddedVariableNode < ::Prism::Node class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#6606 + # source://prism//lib/prism/node.rb#6636 def type; end end end # Flags for nodes that have unescaped content. # -# source://prism//lib/prism/node.rb#18498 +# source://prism//lib/prism/node.rb#18669 module Prism::EncodingFlags; end # internal bytes forced the encoding to binary # -# source://prism//lib/prism/node.rb#18503 +# source://prism//lib/prism/node.rb#18674 Prism::EncodingFlags::FORCED_BINARY_ENCODING = T.let(T.unsafe(nil), Integer) # internal bytes forced the encoding to UTF-8 # -# source://prism//lib/prism/node.rb#18500 +# source://prism//lib/prism/node.rb#18671 Prism::EncodingFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) # Represents an `ensure` clause in a `begin` statement. @@ -15177,13 +15068,13 @@ Prism::EncodingFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) # bar # end # -# source://prism//lib/prism/node.rb#6627 +# source://prism//lib/prism/node.rb#6657 class Prism::EnsureNode < ::Prism::Node # Initialize a new EnsureNode node. # # @return [EnsureNode] a new instance of EnsureNode # - # source://prism//lib/prism/node.rb#6629 + # source://prism//lib/prism/node.rb#6659 sig do params( source: Prism::Source, @@ -15200,36 +15091,36 @@ class Prism::EnsureNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#6730 + # source://prism//lib/prism/node.rb#6760 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#6640 + # source://prism//lib/prism/node.rb#6670 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6645 + # source://prism//lib/prism/node.rb#6675 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#6657 + # source://prism//lib/prism/node.rb#6687 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#6650 + # source://prism//lib/prism/node.rb#6680 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?ensure_keyword_loc: Location, ?statements: StatementsNode?, ?end_keyword_loc: Location) -> EnsureNode # - # source://prism//lib/prism/node.rb#6662 + # source://prism//lib/prism/node.rb#6692 sig do params( node_id: Integer, @@ -15242,40 +15133,40 @@ class Prism::EnsureNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), ensure_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6645 + # source://prism//lib/prism/node.rb#6675 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, ensure_keyword_loc: Location, statements: StatementsNode?, end_keyword_loc: Location } # - # source://prism//lib/prism/node.rb#6670 + # source://prism//lib/prism/node.rb#6700 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # def end_keyword: () -> String # - # source://prism//lib/prism/node.rb#6709 + # source://prism//lib/prism/node.rb#6739 sig { returns(String) } def end_keyword; end # attr_reader end_keyword_loc: Location # - # source://prism//lib/prism/node.rb#6691 + # source://prism//lib/prism/node.rb#6721 sig { returns(Prism::Location) } def end_keyword_loc; end # def ensure_keyword: () -> String # - # source://prism//lib/prism/node.rb#6704 + # source://prism//lib/prism/node.rb#6734 sig { returns(String) } def ensure_keyword; end # attr_reader ensure_keyword_loc: Location # - # source://prism//lib/prism/node.rb#6675 + # source://prism//lib/prism/node.rb#6705 sig { returns(Prism::Location) } def ensure_keyword_loc; end @@ -15284,38 +15175,38 @@ class Prism::EnsureNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#6714 + # source://prism//lib/prism/node.rb#6744 sig { override.returns(String) } def inspect; end # Save the end_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6699 + # source://prism//lib/prism/node.rb#6729 def save_end_keyword_loc(repository); end # Save the ensure_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6683 + # source://prism//lib/prism/node.rb#6713 def save_ensure_keyword_loc(repository); end # attr_reader statements: StatementsNode? # - # source://prism//lib/prism/node.rb#6688 + # source://prism//lib/prism/node.rb#6718 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#6719 + # source://prism//lib/prism/node.rb#6749 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#6724 + # source://prism//lib/prism/node.rb#6754 def type; end end end @@ -15325,62 +15216,62 @@ end # false # ^^^^^ # -# source://prism//lib/prism/node.rb#6742 +# source://prism//lib/prism/node.rb#6772 class Prism::FalseNode < ::Prism::Node # Initialize a new FalseNode node. # # @return [FalseNode] a new instance of FalseNode # - # source://prism//lib/prism/node.rb#6744 + # source://prism//lib/prism/node.rb#6774 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#6801 + # source://prism//lib/prism/node.rb#6831 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#6752 + # source://prism//lib/prism/node.rb#6782 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6757 + # source://prism//lib/prism/node.rb#6787 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#6767 + # source://prism//lib/prism/node.rb#6797 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#6762 + # source://prism//lib/prism/node.rb#6792 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> FalseNode # - # source://prism//lib/prism/node.rb#6772 + # source://prism//lib/prism/node.rb#6802 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::FalseNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6757 + # source://prism//lib/prism/node.rb#6787 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#6780 + # source://prism//lib/prism/node.rb#6810 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -15389,20 +15280,20 @@ class Prism::FalseNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#6785 + # source://prism//lib/prism/node.rb#6815 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#6790 + # source://prism//lib/prism/node.rb#6820 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#6795 + # source://prism//lib/prism/node.rb#6825 def type; end end end @@ -15418,20 +15309,23 @@ end # foo in Foo(*bar, baz, *qux) # ^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#6816 +# foo => *bar, baz, *qux +# ^^^^^^^^^^^^^^^ +# +# source://prism//lib/prism/node.rb#6849 class Prism::FindPatternNode < ::Prism::Node # Initialize a new FindPatternNode node. # # @return [FindPatternNode] a new instance of FindPatternNode # - # source://prism//lib/prism/node.rb#6818 + # source://prism//lib/prism/node.rb#6851 sig do params( source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), left: Prism::SplatNode, requireds: T::Array[Prism::Node], right: T.any(Prism::SplatNode, Prism::MissingNode), @@ -15444,60 +15338,69 @@ class Prism::FindPatternNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#6946 + # source://prism//lib/prism/node.rb#7012 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#6832 + # source://prism//lib/prism/node.rb#6865 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6837 + # source://prism//lib/prism/node.rb#6870 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String? # - # source://prism//lib/prism/node.rb#6925 + # source://prism//lib/prism/node.rb#6991 sig { returns(T.nilable(String)) } def closing; end - # attr_reader closing_loc: Location? + # The location of the closing brace. + # + # foo in [*bar, baz, *qux] + # ^ + # + # foo in Foo(*bar, baz, *qux) + # ^ # - # source://prism//lib/prism/node.rb#6901 + # source://prism//lib/prism/node.rb#6967 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#6852 + # source://prism//lib/prism/node.rb#6885 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#6842 + # source://prism//lib/prism/node.rb#6875 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # attr_reader constant: ConstantReadNode | ConstantPathNode | nil + # Represents the optional constant preceding the pattern # - # source://prism//lib/prism/node.rb#6870 - sig { returns(T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode))) } + # foo in Foo(*bar, baz, *qux) + # ^^^ + # + # source://prism//lib/prism/node.rb#6906 + sig { returns(T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode))) } def constant; end - # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantReadNode | ConstantPathNode | nil, ?left: SplatNode, ?requireds: Array[Prism::node], ?right: SplatNode | MissingNode, ?opening_loc: Location?, ?closing_loc: Location?) -> FindPatternNode + # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantPathNode | ConstantReadNode | nil, ?left: SplatNode, ?requireds: Array[Prism::node], ?right: SplatNode | MissingNode, ?opening_loc: Location?, ?closing_loc: Location?) -> FindPatternNode # - # source://prism//lib/prism/node.rb#6857 + # source://prism//lib/prism/node.rb#6890 sig do params( node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), left: Prism::SplatNode, requireds: T::Array[Prism::Node], right: T.any(Prism::SplatNode, Prism::MissingNode), @@ -15507,16 +15410,16 @@ class Prism::FindPatternNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), constant: T.unsafe(nil), left: T.unsafe(nil), requireds: T.unsafe(nil), right: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6837 + # source://prism//lib/prism/node.rb#6870 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, constant: ConstantReadNode | ConstantPathNode | nil, left: SplatNode, requireds: Array[Prism::node], right: SplatNode | MissingNode, opening_loc: Location?, closing_loc: Location? } + # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, constant: ConstantPathNode | ConstantReadNode | nil, left: SplatNode, requireds: Array[Prism::node], right: SplatNode | MissingNode, opening_loc: Location?, closing_loc: Location? } # - # source://prism//lib/prism/node.rb#6865 + # source://prism//lib/prism/node.rb#6898 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -15525,62 +15428,86 @@ class Prism::FindPatternNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#6930 + # source://prism//lib/prism/node.rb#6996 sig { override.returns(String) } def inspect; end - # attr_reader left: SplatNode + # Represents the first wildcard node in the pattern. + # + # foo in *bar, baz, *qux + # ^^^^ + # + # foo in Foo(*bar, baz, *qux) + # ^^^^ # - # source://prism//lib/prism/node.rb#6873 + # source://prism//lib/prism/node.rb#6915 sig { returns(Prism::SplatNode) } def left; end # def opening: () -> String? # - # source://prism//lib/prism/node.rb#6920 + # source://prism//lib/prism/node.rb#6986 sig { returns(T.nilable(String)) } def opening; end - # attr_reader opening_loc: Location? + # The location of the opening brace. + # + # foo in [*bar, baz, *qux] + # ^ # - # source://prism//lib/prism/node.rb#6882 + # foo in Foo(*bar, baz, *qux) + # ^ + # + # source://prism//lib/prism/node.rb#6942 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end - # attr_reader requireds: Array[Prism::node] + # Represents the nodes in between the wildcards. + # + # foo in *bar, baz, *qux + # ^^^ + # + # foo in Foo(*bar, baz, 1, *qux) + # ^^^^^^ # - # source://prism//lib/prism/node.rb#6876 + # source://prism//lib/prism/node.rb#6924 sig { returns(T::Array[Prism::Node]) } def requireds; end - # attr_reader right: SplatNode | MissingNode + # Represents the second wildcard node in the pattern. # - # source://prism//lib/prism/node.rb#6879 + # foo in *bar, baz, *qux + # ^^^^ + # + # foo in Foo(*bar, baz, *qux) + # ^^^^ + # + # source://prism//lib/prism/node.rb#6933 sig { returns(T.any(Prism::SplatNode, Prism::MissingNode)) } def right; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6915 + # source://prism//lib/prism/node.rb#6981 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#6896 + # source://prism//lib/prism/node.rb#6956 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#6935 + # source://prism//lib/prism/node.rb#7001 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#6940 + # source://prism//lib/prism/node.rb#7006 def type; end end end @@ -15590,13 +15517,13 @@ end # baz if foo .. bar # ^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#6962 +# source://prism//lib/prism/node.rb#7028 class Prism::FlipFlopNode < ::Prism::Node # Initialize a new FlipFlopNode node. # # @return [FlipFlopNode] a new instance of FlipFlopNode # - # source://prism//lib/prism/node.rb#6964 + # source://prism//lib/prism/node.rb#7030 sig do params( source: Prism::Source, @@ -15613,36 +15540,36 @@ class Prism::FlipFlopNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#7056 + # source://prism//lib/prism/node.rb#7122 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#6975 + # source://prism//lib/prism/node.rb#7041 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6980 + # source://prism//lib/prism/node.rb#7046 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#6993 + # source://prism//lib/prism/node.rb#7059 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#6985 + # source://prism//lib/prism/node.rb#7051 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?left: Prism::node?, ?right: Prism::node?, ?operator_loc: Location) -> FlipFlopNode # - # source://prism//lib/prism/node.rb#6998 + # source://prism//lib/prism/node.rb#7064 sig do params( node_id: Integer, @@ -15655,16 +15582,16 @@ class Prism::FlipFlopNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#6980 + # source://prism//lib/prism/node.rb#7046 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node?, right: Prism::node?, operator_loc: Location } # - # source://prism//lib/prism/node.rb#7006 + # source://prism//lib/prism/node.rb#7072 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -15672,7 +15599,7 @@ class Prism::FlipFlopNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#7011 + # source://prism//lib/prism/node.rb#7077 sig { returns(T::Boolean) } def exclude_end?; end @@ -15681,50 +15608,50 @@ class Prism::FlipFlopNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#7040 + # source://prism//lib/prism/node.rb#7106 sig { override.returns(String) } def inspect; end # attr_reader left: Prism::node? # - # source://prism//lib/prism/node.rb#7016 + # source://prism//lib/prism/node.rb#7082 sig { returns(T.nilable(Prism::Node)) } def left; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#7035 + # source://prism//lib/prism/node.rb#7101 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#7022 + # source://prism//lib/prism/node.rb#7088 sig { returns(Prism::Location) } def operator_loc; end # attr_reader right: Prism::node? # - # source://prism//lib/prism/node.rb#7019 + # source://prism//lib/prism/node.rb#7085 sig { returns(T.nilable(Prism::Node)) } def right; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#7030 + # source://prism//lib/prism/node.rb#7096 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#7045 + # source://prism//lib/prism/node.rb#7111 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#7050 + # source://prism//lib/prism/node.rb#7116 def type; end end end @@ -15734,62 +15661,62 @@ end # 1.0 # ^^^ # -# source://prism//lib/prism/node.rb#7069 +# source://prism//lib/prism/node.rb#7135 class Prism::FloatNode < ::Prism::Node # Initialize a new FloatNode node. # # @return [FloatNode] a new instance of FloatNode # - # source://prism//lib/prism/node.rb#7071 + # source://prism//lib/prism/node.rb#7137 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, value: Float).void } def initialize(source, node_id, location, flags, value); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#7132 + # source://prism//lib/prism/node.rb#7198 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#7080 + # source://prism//lib/prism/node.rb#7146 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7085 + # source://prism//lib/prism/node.rb#7151 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#7095 + # source://prism//lib/prism/node.rb#7161 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#7090 + # source://prism//lib/prism/node.rb#7156 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?value: Float) -> FloatNode # - # source://prism//lib/prism/node.rb#7100 + # source://prism//lib/prism/node.rb#7166 sig { params(node_id: Integer, location: Prism::Location, flags: Integer, value: Float).returns(Prism::FloatNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7085 + # source://prism//lib/prism/node.rb#7151 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Float } # - # source://prism//lib/prism/node.rb#7108 + # source://prism//lib/prism/node.rb#7174 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -15798,26 +15725,26 @@ class Prism::FloatNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#7116 + # source://prism//lib/prism/node.rb#7182 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#7121 + # source://prism//lib/prism/node.rb#7187 sig { override.returns(Symbol) } def type; end # The value of the floating point number as a Float. # - # source://prism//lib/prism/node.rb#7113 + # source://prism//lib/prism/node.rb#7179 sig { returns(Float) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#7126 + # source://prism//lib/prism/node.rb#7192 def type; end end end @@ -15827,13 +15754,13 @@ end # for i in a end # ^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#7142 +# source://prism//lib/prism/node.rb#7208 class Prism::ForNode < ::Prism::Node # Initialize a new ForNode node. # # @return [ForNode] a new instance of ForNode # - # source://prism//lib/prism/node.rb#7144 + # source://prism//lib/prism/node.rb#7210 sig do params( source: Prism::Source, @@ -15854,18 +15781,18 @@ class Prism::ForNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#7322 + # source://prism//lib/prism/node.rb#7388 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#7159 + # source://prism//lib/prism/node.rb#7225 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7164 + # source://prism//lib/prism/node.rb#7230 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end @@ -15874,25 +15801,25 @@ class Prism::ForNode < ::Prism::Node # for i in a end # ^ # - # source://prism//lib/prism/node.rb#7205 + # source://prism//lib/prism/node.rb#7271 sig { returns(Prism::Node) } def collection; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#7178 + # source://prism//lib/prism/node.rb#7244 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#7169 + # source://prism//lib/prism/node.rb#7235 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?index: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode, ?collection: Prism::node, ?statements: StatementsNode?, ?for_keyword_loc: Location, ?in_keyword_loc: Location, ?do_keyword_loc: Location?, ?end_keyword_loc: Location) -> ForNode # - # source://prism//lib/prism/node.rb#7183 + # source://prism//lib/prism/node.rb#7249 sig do params( node_id: Integer, @@ -15909,22 +15836,22 @@ class Prism::ForNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), index: T.unsafe(nil), collection: T.unsafe(nil), statements: T.unsafe(nil), for_keyword_loc: T.unsafe(nil), in_keyword_loc: T.unsafe(nil), do_keyword_loc: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7164 + # source://prism//lib/prism/node.rb#7230 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, index: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode, collection: Prism::node, statements: StatementsNode?, for_keyword_loc: Location, in_keyword_loc: Location, do_keyword_loc: Location?, end_keyword_loc: Location } # - # source://prism//lib/prism/node.rb#7191 + # source://prism//lib/prism/node.rb#7257 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # def do_keyword: () -> String? # - # source://prism//lib/prism/node.rb#7296 + # source://prism//lib/prism/node.rb#7362 sig { returns(T.nilable(String)) } def do_keyword; end @@ -15933,13 +15860,13 @@ class Prism::ForNode < ::Prism::Node # for i in a do end # ^^ # - # source://prism//lib/prism/node.rb#7251 + # source://prism//lib/prism/node.rb#7317 sig { returns(T.nilable(Prism::Location)) } def do_keyword_loc; end # def end_keyword: () -> String # - # source://prism//lib/prism/node.rb#7301 + # source://prism//lib/prism/node.rb#7367 sig { returns(String) } def end_keyword; end @@ -15948,7 +15875,7 @@ class Prism::ForNode < ::Prism::Node # for i in a end # ^^^ # - # source://prism//lib/prism/node.rb#7273 + # source://prism//lib/prism/node.rb#7339 sig { returns(Prism::Location) } def end_keyword_loc; end @@ -15957,7 +15884,7 @@ class Prism::ForNode < ::Prism::Node # def for_keyword: () -> String # - # source://prism//lib/prism/node.rb#7286 + # source://prism//lib/prism/node.rb#7352 sig { returns(String) } def for_keyword; end @@ -15966,13 +15893,13 @@ class Prism::ForNode < ::Prism::Node # for i in a end # ^^^ # - # source://prism//lib/prism/node.rb#7219 + # source://prism//lib/prism/node.rb#7285 sig { returns(Prism::Location) } def for_keyword_loc; end # def in_keyword: () -> String # - # source://prism//lib/prism/node.rb#7291 + # source://prism//lib/prism/node.rb#7357 sig { returns(String) } def in_keyword; end @@ -15981,7 +15908,7 @@ class Prism::ForNode < ::Prism::Node # for i in a end # ^^ # - # source://prism//lib/prism/node.rb#7235 + # source://prism//lib/prism/node.rb#7301 sig { returns(Prism::Location) } def in_keyword_loc; end @@ -15990,7 +15917,7 @@ class Prism::ForNode < ::Prism::Node # for i in a end # ^ # - # source://prism//lib/prism/node.rb#7199 + # source://prism//lib/prism/node.rb#7265 sig do returns(T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::MultiTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::MissingNode)) end @@ -15998,32 +15925,32 @@ class Prism::ForNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#7306 + # source://prism//lib/prism/node.rb#7372 sig { override.returns(String) } def inspect; end # Save the do_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#7265 + # source://prism//lib/prism/node.rb#7331 def save_do_keyword_loc(repository); end # Save the end_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#7281 + # source://prism//lib/prism/node.rb#7347 def save_end_keyword_loc(repository); end # Save the for_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#7227 + # source://prism//lib/prism/node.rb#7293 def save_for_keyword_loc(repository); end # Save the in_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#7243 + # source://prism//lib/prism/node.rb#7309 def save_in_keyword_loc(repository); end # Represents the body of statements to execute for each iteration of the loop. @@ -16033,20 +15960,20 @@ class Prism::ForNode < ::Prism::Node # ^^^^^^ # end # - # source://prism//lib/prism/node.rb#7213 + # source://prism//lib/prism/node.rb#7279 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#7311 + # source://prism//lib/prism/node.rb#7377 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#7316 + # source://prism//lib/prism/node.rb#7382 def type; end end end @@ -16058,62 +15985,62 @@ end # ^^^ # end # -# source://prism//lib/prism/node.rb#7340 +# source://prism//lib/prism/node.rb#7406 class Prism::ForwardingArgumentsNode < ::Prism::Node # Initialize a new ForwardingArgumentsNode node. # # @return [ForwardingArgumentsNode] a new instance of ForwardingArgumentsNode # - # source://prism//lib/prism/node.rb#7342 + # source://prism//lib/prism/node.rb#7408 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#7399 + # source://prism//lib/prism/node.rb#7465 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#7350 + # source://prism//lib/prism/node.rb#7416 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7355 + # source://prism//lib/prism/node.rb#7421 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#7365 + # source://prism//lib/prism/node.rb#7431 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#7360 + # source://prism//lib/prism/node.rb#7426 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> ForwardingArgumentsNode # - # source://prism//lib/prism/node.rb#7370 + # source://prism//lib/prism/node.rb#7436 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::ForwardingArgumentsNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7355 + # source://prism//lib/prism/node.rb#7421 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#7378 + # source://prism//lib/prism/node.rb#7444 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -16122,20 +16049,20 @@ class Prism::ForwardingArgumentsNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#7383 + # source://prism//lib/prism/node.rb#7449 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#7388 + # source://prism//lib/prism/node.rb#7454 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#7393 + # source://prism//lib/prism/node.rb#7459 def type; end end end @@ -16146,62 +16073,62 @@ end # ^^^ # end # -# source://prism//lib/prism/node.rb#7409 +# source://prism//lib/prism/node.rb#7475 class Prism::ForwardingParameterNode < ::Prism::Node # Initialize a new ForwardingParameterNode node. # # @return [ForwardingParameterNode] a new instance of ForwardingParameterNode # - # source://prism//lib/prism/node.rb#7411 + # source://prism//lib/prism/node.rb#7477 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#7468 + # source://prism//lib/prism/node.rb#7534 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#7419 + # source://prism//lib/prism/node.rb#7485 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7424 + # source://prism//lib/prism/node.rb#7490 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#7434 + # source://prism//lib/prism/node.rb#7500 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#7429 + # source://prism//lib/prism/node.rb#7495 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> ForwardingParameterNode # - # source://prism//lib/prism/node.rb#7439 + # source://prism//lib/prism/node.rb#7505 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::ForwardingParameterNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7424 + # source://prism//lib/prism/node.rb#7490 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#7447 + # source://prism//lib/prism/node.rb#7513 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -16210,20 +16137,20 @@ class Prism::ForwardingParameterNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#7452 + # source://prism//lib/prism/node.rb#7518 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#7457 + # source://prism//lib/prism/node.rb#7523 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#7462 + # source://prism//lib/prism/node.rb#7528 def type; end end end @@ -16233,13 +16160,13 @@ end # super # ^^^^^ # -# source://prism//lib/prism/node.rb#7477 +# source://prism//lib/prism/node.rb#7543 class Prism::ForwardingSuperNode < ::Prism::Node # Initialize a new ForwardingSuperNode node. # # @return [ForwardingSuperNode] a new instance of ForwardingSuperNode # - # source://prism//lib/prism/node.rb#7479 + # source://prism//lib/prism/node.rb#7545 sig do params( source: Prism::Source, @@ -16254,42 +16181,42 @@ class Prism::ForwardingSuperNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#7542 + # source://prism//lib/prism/node.rb#7608 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#7488 + # source://prism//lib/prism/node.rb#7554 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader block: BlockNode? # - # source://prism//lib/prism/node.rb#7523 + # source://prism//lib/prism/node.rb#7589 sig { returns(T.nilable(Prism::BlockNode)) } def block; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7493 + # source://prism//lib/prism/node.rb#7559 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#7505 + # source://prism//lib/prism/node.rb#7571 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#7498 + # source://prism//lib/prism/node.rb#7564 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?block: BlockNode?) -> ForwardingSuperNode # - # source://prism//lib/prism/node.rb#7510 + # source://prism//lib/prism/node.rb#7576 sig do params( node_id: Integer, @@ -16300,16 +16227,16 @@ class Prism::ForwardingSuperNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), block: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7493 + # source://prism//lib/prism/node.rb#7559 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, block: BlockNode? } # - # source://prism//lib/prism/node.rb#7518 + # source://prism//lib/prism/node.rb#7584 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -16318,20 +16245,20 @@ class Prism::ForwardingSuperNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#7526 + # source://prism//lib/prism/node.rb#7592 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#7531 + # source://prism//lib/prism/node.rb#7597 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#7536 + # source://prism//lib/prism/node.rb#7602 def type; end end end @@ -16341,13 +16268,13 @@ end # $target &&= value # ^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#7552 +# source://prism//lib/prism/node.rb#7618 class Prism::GlobalVariableAndWriteNode < ::Prism::Node # Initialize a new GlobalVariableAndWriteNode node. # # @return [GlobalVariableAndWriteNode] a new instance of GlobalVariableAndWriteNode # - # source://prism//lib/prism/node.rb#7554 + # source://prism//lib/prism/node.rb#7620 sig do params( source: Prism::Source, @@ -16365,36 +16292,36 @@ class Prism::GlobalVariableAndWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#7652 + # source://prism//lib/prism/node.rb#7718 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#7566 + # source://prism//lib/prism/node.rb#7632 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7571 + # source://prism//lib/prism/node.rb#7637 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#7581 + # source://prism//lib/prism/node.rb#7647 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#7576 + # source://prism//lib/prism/node.rb#7642 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?operator_loc: Location, ?value: Prism::node) -> GlobalVariableAndWriteNode # - # source://prism//lib/prism/node.rb#7586 + # source://prism//lib/prism/node.rb#7652 sig do params( node_id: Integer, @@ -16408,20 +16335,20 @@ class Prism::GlobalVariableAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7571 + # source://prism//lib/prism/node.rb#7637 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#7594 + # source://prism//lib/prism/node.rb#7660 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#200 + # source://prism//lib/prism/desugar_compiler.rb#201 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -16429,62 +16356,62 @@ class Prism::GlobalVariableAndWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#7636 + # source://prism//lib/prism/node.rb#7702 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#7599 + # source://prism//lib/prism/node.rb#7665 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#7602 + # source://prism//lib/prism/node.rb#7668 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#7631 + # source://prism//lib/prism/node.rb#7697 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#7615 + # source://prism//lib/prism/node.rb#7681 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#7610 + # source://prism//lib/prism/node.rb#7676 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#7623 + # source://prism//lib/prism/node.rb#7689 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#7641 + # source://prism//lib/prism/node.rb#7707 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#7628 + # source://prism//lib/prism/node.rb#7694 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#7646 + # source://prism//lib/prism/node.rb#7712 def type; end end end @@ -16494,13 +16421,13 @@ end # $target += value # ^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#7665 +# source://prism//lib/prism/node.rb#7731 class Prism::GlobalVariableOperatorWriteNode < ::Prism::Node # Initialize a new GlobalVariableOperatorWriteNode node. # # @return [GlobalVariableOperatorWriteNode] a new instance of GlobalVariableOperatorWriteNode # - # source://prism//lib/prism/node.rb#7667 + # source://prism//lib/prism/node.rb#7733 sig do params( source: Prism::Source, @@ -16519,48 +16446,48 @@ class Prism::GlobalVariableOperatorWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#7764 + # source://prism//lib/prism/node.rb#7830 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#7680 + # source://prism//lib/prism/node.rb#7746 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader binary_operator: Symbol # - # source://prism//lib/prism/node.rb#7745 + # source://prism//lib/prism/node.rb#7811 sig { returns(Symbol) } def binary_operator; end # attr_reader binary_operator_loc: Location # - # source://prism//lib/prism/node.rb#7729 + # source://prism//lib/prism/node.rb#7795 sig { returns(Prism::Location) } def binary_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7685 + # source://prism//lib/prism/node.rb#7751 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#7695 + # source://prism//lib/prism/node.rb#7761 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#7690 + # source://prism//lib/prism/node.rb#7756 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?binary_operator_loc: Location, ?value: Prism::node, ?binary_operator: Symbol) -> GlobalVariableOperatorWriteNode # - # source://prism//lib/prism/node.rb#7700 + # source://prism//lib/prism/node.rb#7766 sig do params( node_id: Integer, @@ -16575,20 +16502,20 @@ class Prism::GlobalVariableOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7685 + # source://prism//lib/prism/node.rb#7751 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, binary_operator_loc: Location, value: Prism::node, binary_operator: Symbol } # - # source://prism//lib/prism/node.rb#7708 + # source://prism//lib/prism/node.rb#7774 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#212 + # source://prism//lib/prism/desugar_compiler.rb#213 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -16596,62 +16523,62 @@ class Prism::GlobalVariableOperatorWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#7748 + # source://prism//lib/prism/node.rb#7814 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#7713 + # source://prism//lib/prism/node.rb#7779 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#7716 + # source://prism//lib/prism/node.rb#7782 sig { returns(Prism::Location) } def name_loc; end # Returns the binary operator used to modify the receiver. This method is # deprecated in favor of #binary_operator. # - # source://prism//lib/prism/node_ext.rb#403 + # source://prism//lib/prism/node_ext.rb#406 def operator; end # Returns the location of the binary operator used to modify the receiver. # This method is deprecated in favor of #binary_operator_loc. # - # source://prism//lib/prism/node_ext.rb#410 + # source://prism//lib/prism/node_ext.rb#413 def operator_loc; end # Save the binary_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#7737 + # source://prism//lib/prism/node.rb#7803 def save_binary_operator_loc(repository); end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#7724 + # source://prism//lib/prism/node.rb#7790 def save_name_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#7753 + # source://prism//lib/prism/node.rb#7819 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#7742 + # source://prism//lib/prism/node.rb#7808 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#7758 + # source://prism//lib/prism/node.rb#7824 def type; end end end @@ -16661,13 +16588,13 @@ end # $target ||= value # ^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#7778 +# source://prism//lib/prism/node.rb#7844 class Prism::GlobalVariableOrWriteNode < ::Prism::Node # Initialize a new GlobalVariableOrWriteNode node. # # @return [GlobalVariableOrWriteNode] a new instance of GlobalVariableOrWriteNode # - # source://prism//lib/prism/node.rb#7780 + # source://prism//lib/prism/node.rb#7846 sig do params( source: Prism::Source, @@ -16685,36 +16612,36 @@ class Prism::GlobalVariableOrWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#7878 + # source://prism//lib/prism/node.rb#7944 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#7792 + # source://prism//lib/prism/node.rb#7858 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7797 + # source://prism//lib/prism/node.rb#7863 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#7807 + # source://prism//lib/prism/node.rb#7873 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#7802 + # source://prism//lib/prism/node.rb#7868 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?operator_loc: Location, ?value: Prism::node) -> GlobalVariableOrWriteNode # - # source://prism//lib/prism/node.rb#7812 + # source://prism//lib/prism/node.rb#7878 sig do params( node_id: Integer, @@ -16728,20 +16655,20 @@ class Prism::GlobalVariableOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7797 + # source://prism//lib/prism/node.rb#7863 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#7820 + # source://prism//lib/prism/node.rb#7886 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#206 + # source://prism//lib/prism/desugar_compiler.rb#207 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -16749,62 +16676,62 @@ class Prism::GlobalVariableOrWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#7862 + # source://prism//lib/prism/node.rb#7928 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#7825 + # source://prism//lib/prism/node.rb#7891 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#7828 + # source://prism//lib/prism/node.rb#7894 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#7857 + # source://prism//lib/prism/node.rb#7923 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#7841 + # source://prism//lib/prism/node.rb#7907 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#7836 + # source://prism//lib/prism/node.rb#7902 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#7849 + # source://prism//lib/prism/node.rb#7915 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#7867 + # source://prism//lib/prism/node.rb#7933 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#7854 + # source://prism//lib/prism/node.rb#7920 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#7872 + # source://prism//lib/prism/node.rb#7938 def type; end end end @@ -16814,49 +16741,49 @@ end # $foo # ^^^^ # -# source://prism//lib/prism/node.rb#7891 +# source://prism//lib/prism/node.rb#7957 class Prism::GlobalVariableReadNode < ::Prism::Node # Initialize a new GlobalVariableReadNode node. # # @return [GlobalVariableReadNode] a new instance of GlobalVariableReadNode # - # source://prism//lib/prism/node.rb#7893 + # source://prism//lib/prism/node.rb#7959 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#7958 + # source://prism//lib/prism/node.rb#8024 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#7902 + # source://prism//lib/prism/node.rb#7968 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7907 + # source://prism//lib/prism/node.rb#7973 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#7917 + # source://prism//lib/prism/node.rb#7983 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#7912 + # source://prism//lib/prism/node.rb#7978 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol) -> GlobalVariableReadNode # - # source://prism//lib/prism/node.rb#7922 + # source://prism//lib/prism/node.rb#7988 sig do params( node_id: Integer, @@ -16867,16 +16794,16 @@ class Prism::GlobalVariableReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7907 + # source://prism//lib/prism/node.rb#7973 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#7930 + # source://prism//lib/prism/node.rb#7996 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -16885,7 +16812,7 @@ class Prism::GlobalVariableReadNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#7942 + # source://prism//lib/prism/node.rb#8008 sig { override.returns(String) } def inspect; end @@ -16895,20 +16822,20 @@ class Prism::GlobalVariableReadNode < ::Prism::Node # # $_Test # name `:$_Test` # - # source://prism//lib/prism/node.rb#7939 + # source://prism//lib/prism/node.rb#8005 sig { returns(Symbol) } def name; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#7947 + # source://prism//lib/prism/node.rb#8013 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#7952 + # source://prism//lib/prism/node.rb#8018 def type; end end end @@ -16918,49 +16845,49 @@ end # $foo, $bar = baz # ^^^^ ^^^^ # -# source://prism//lib/prism/node.rb#7968 +# source://prism//lib/prism/node.rb#8034 class Prism::GlobalVariableTargetNode < ::Prism::Node # Initialize a new GlobalVariableTargetNode node. # # @return [GlobalVariableTargetNode] a new instance of GlobalVariableTargetNode # - # source://prism//lib/prism/node.rb#7970 + # source://prism//lib/prism/node.rb#8036 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#8031 + # source://prism//lib/prism/node.rb#8097 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#7979 + # source://prism//lib/prism/node.rb#8045 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7984 + # source://prism//lib/prism/node.rb#8050 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#7994 + # source://prism//lib/prism/node.rb#8060 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#7989 + # source://prism//lib/prism/node.rb#8055 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol) -> GlobalVariableTargetNode # - # source://prism//lib/prism/node.rb#7999 + # source://prism//lib/prism/node.rb#8065 sig do params( node_id: Integer, @@ -16971,16 +16898,16 @@ class Prism::GlobalVariableTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#7984 + # source://prism//lib/prism/node.rb#8050 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#8007 + # source://prism//lib/prism/node.rb#8073 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -16989,26 +16916,26 @@ class Prism::GlobalVariableTargetNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#8015 + # source://prism//lib/prism/node.rb#8081 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#8012 + # source://prism//lib/prism/node.rb#8078 sig { returns(Symbol) } def name; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#8020 + # source://prism//lib/prism/node.rb#8086 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#8025 + # source://prism//lib/prism/node.rb#8091 def type; end end end @@ -17018,13 +16945,13 @@ end # $foo = 1 # ^^^^^^^^ # -# source://prism//lib/prism/node.rb#8041 +# source://prism//lib/prism/node.rb#8107 class Prism::GlobalVariableWriteNode < ::Prism::Node # Initialize a new GlobalVariableWriteNode node. # # @return [GlobalVariableWriteNode] a new instance of GlobalVariableWriteNode # - # source://prism//lib/prism/node.rb#8043 + # source://prism//lib/prism/node.rb#8109 sig do params( source: Prism::Source, @@ -17042,36 +16969,36 @@ class Prism::GlobalVariableWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#8157 + # source://prism//lib/prism/node.rb#8223 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#8055 + # source://prism//lib/prism/node.rb#8121 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8060 + # source://prism//lib/prism/node.rb#8126 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#8070 + # source://prism//lib/prism/node.rb#8136 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#8065 + # source://prism//lib/prism/node.rb#8131 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?value: Prism::node, ?operator_loc: Location) -> GlobalVariableWriteNode # - # source://prism//lib/prism/node.rb#8075 + # source://prism//lib/prism/node.rb#8141 sig do params( node_id: Integer, @@ -17085,16 +17012,16 @@ class Prism::GlobalVariableWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8060 + # source://prism//lib/prism/node.rb#8126 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node, operator_loc: Location } # - # source://prism//lib/prism/node.rb#8083 + # source://prism//lib/prism/node.rb#8149 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -17103,7 +17030,7 @@ class Prism::GlobalVariableWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#8141 + # source://prism//lib/prism/node.rb#8207 sig { override.returns(String) } def inspect; end @@ -17113,7 +17040,7 @@ class Prism::GlobalVariableWriteNode < ::Prism::Node # # $_Test = 123 # name `:$_Test` # - # source://prism//lib/prism/node.rb#8092 + # source://prism//lib/prism/node.rb#8158 sig { returns(Symbol) } def name; end @@ -17122,13 +17049,13 @@ class Prism::GlobalVariableWriteNode < ::Prism::Node # $foo = :bar # ^^^^ # - # source://prism//lib/prism/node.rb#8098 + # source://prism//lib/prism/node.rb#8164 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#8136 + # source://prism//lib/prism/node.rb#8202 sig { returns(String) } def operator; end @@ -17137,25 +17064,25 @@ class Prism::GlobalVariableWriteNode < ::Prism::Node # $foo = :bar # ^ # - # source://prism//lib/prism/node.rb#8123 + # source://prism//lib/prism/node.rb#8189 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#8106 + # source://prism//lib/prism/node.rb#8172 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#8131 + # source://prism//lib/prism/node.rb#8197 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#8146 + # source://prism//lib/prism/node.rb#8212 sig { override.returns(Symbol) } def type; end @@ -17167,14 +17094,14 @@ class Prism::GlobalVariableWriteNode < ::Prism::Node # $-xyz = 123 # ^^^ # - # source://prism//lib/prism/node.rb#8117 + # source://prism//lib/prism/node.rb#8183 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#8151 + # source://prism//lib/prism/node.rb#8217 def type; end end end @@ -17184,13 +17111,13 @@ end # { a => b } # ^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#8170 +# source://prism//lib/prism/node.rb#8236 class Prism::HashNode < ::Prism::Node # Initialize a new HashNode node. # # @return [HashNode] a new instance of HashNode # - # source://prism//lib/prism/node.rb#8172 + # source://prism//lib/prism/node.rb#8238 sig do params( source: Prism::Source, @@ -17207,24 +17134,24 @@ class Prism::HashNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#8283 + # source://prism//lib/prism/node.rb#8349 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#8183 + # source://prism//lib/prism/node.rb#8249 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8188 + # source://prism//lib/prism/node.rb#8254 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#8262 + # source://prism//lib/prism/node.rb#8328 sig { returns(String) } def closing; end @@ -17233,25 +17160,25 @@ class Prism::HashNode < ::Prism::Node # { a => b } # ^ # - # source://prism//lib/prism/node.rb#8244 + # source://prism//lib/prism/node.rb#8310 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#8198 + # source://prism//lib/prism/node.rb#8264 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#8193 + # source://prism//lib/prism/node.rb#8259 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location, ?elements: Array[AssocNode | AssocSplatNode], ?closing_loc: Location) -> HashNode # - # source://prism//lib/prism/node.rb#8203 + # source://prism//lib/prism/node.rb#8269 sig do params( node_id: Integer, @@ -17264,16 +17191,16 @@ class Prism::HashNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), elements: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8188 + # source://prism//lib/prism/node.rb#8254 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, elements: Array[AssocNode | AssocSplatNode], closing_loc: Location } # - # source://prism//lib/prism/node.rb#8211 + # source://prism//lib/prism/node.rb#8277 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -17285,7 +17212,7 @@ class Prism::HashNode < ::Prism::Node # { **foo } # ^^^^^ # - # source://prism//lib/prism/node.rb#8238 + # source://prism//lib/prism/node.rb#8304 sig { returns(T::Array[T.any(Prism::AssocNode, Prism::AssocSplatNode)]) } def elements; end @@ -17294,13 +17221,13 @@ class Prism::HashNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#8267 + # source://prism//lib/prism/node.rb#8333 sig { override.returns(String) } def inspect; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#8257 + # source://prism//lib/prism/node.rb#8323 sig { returns(String) } def opening; end @@ -17309,32 +17236,32 @@ class Prism::HashNode < ::Prism::Node # { a => b } # ^ # - # source://prism//lib/prism/node.rb#8219 + # source://prism//lib/prism/node.rb#8285 sig { returns(Prism::Location) } def opening_loc; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#8252 + # source://prism//lib/prism/node.rb#8318 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#8227 + # source://prism//lib/prism/node.rb#8293 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#8272 + # source://prism//lib/prism/node.rb#8338 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#8277 + # source://prism//lib/prism/node.rb#8343 def type; end end end @@ -17347,20 +17274,26 @@ end # foo => { a: 1, b: 2, **c } # ^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#8299 +# foo => Bar[a: 1, b: 2] +# ^^^^^^^^^^^^^^^ +# +# foo in { a: 1, b: 2 } +# ^^^^^^^^^^^^^^ +# +# source://prism//lib/prism/node.rb#8371 class Prism::HashPatternNode < ::Prism::Node # Initialize a new HashPatternNode node. # # @return [HashPatternNode] a new instance of HashPatternNode # - # source://prism//lib/prism/node.rb#8301 + # source://prism//lib/prism/node.rb#8373 sig do params( source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), elements: T::Array[Prism::AssocNode], rest: T.nilable(T.any(Prism::AssocSplatNode, Prism::NoKeywordsParameterNode)), opening_loc: T.nilable(Prism::Location), @@ -17372,60 +17305,72 @@ class Prism::HashPatternNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#8424 + # source://prism//lib/prism/node.rb#8526 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#8314 + # source://prism//lib/prism/node.rb#8386 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8319 + # source://prism//lib/prism/node.rb#8391 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String? # - # source://prism//lib/prism/node.rb#8403 + # source://prism//lib/prism/node.rb#8505 sig { returns(T.nilable(String)) } def closing; end - # attr_reader closing_loc: Location? + # The location of the closing brace. + # + # foo => { a: 1 } + # ^ # - # source://prism//lib/prism/node.rb#8379 + # foo => Bar[a: 1] + # ^ + # + # source://prism//lib/prism/node.rb#8481 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#8333 + # source://prism//lib/prism/node.rb#8405 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#8324 + # source://prism//lib/prism/node.rb#8396 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # attr_reader constant: ConstantReadNode | ConstantPathNode | nil + # Represents the optional constant preceding the Hash. # - # source://prism//lib/prism/node.rb#8351 - sig { returns(T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode))) } + # foo => Bar[a: 1, b: 2] + # ^^^ + # + # foo => Bar::Baz[a: 1, b: 2] + # ^^^^^^^^ + # + # source://prism//lib/prism/node.rb#8429 + sig { returns(T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode))) } def constant; end - # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantReadNode | ConstantPathNode | nil, ?elements: Array[AssocNode], ?rest: AssocSplatNode | NoKeywordsParameterNode | nil, ?opening_loc: Location?, ?closing_loc: Location?) -> HashPatternNode + # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?constant: ConstantPathNode | ConstantReadNode | nil, ?elements: Array[AssocNode], ?rest: AssocSplatNode | NoKeywordsParameterNode | nil, ?opening_loc: Location?, ?closing_loc: Location?) -> HashPatternNode # - # source://prism//lib/prism/node.rb#8338 + # source://prism//lib/prism/node.rb#8410 sig do params( node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), elements: T::Array[Prism::AssocNode], rest: T.nilable(T.any(Prism::AssocSplatNode, Prism::NoKeywordsParameterNode)), opening_loc: T.nilable(Prism::Location), @@ -17434,22 +17379,25 @@ class Prism::HashPatternNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), constant: T.unsafe(nil), elements: T.unsafe(nil), rest: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8319 + # source://prism//lib/prism/node.rb#8391 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, constant: ConstantReadNode | ConstantPathNode | nil, elements: Array[AssocNode], rest: AssocSplatNode | NoKeywordsParameterNode | nil, opening_loc: Location?, closing_loc: Location? } + # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, constant: ConstantPathNode | ConstantReadNode | nil, elements: Array[AssocNode], rest: AssocSplatNode | NoKeywordsParameterNode | nil, opening_loc: Location?, closing_loc: Location? } # - # source://prism//lib/prism/node.rb#8346 + # source://prism//lib/prism/node.rb#8418 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # attr_reader elements: Array[AssocNode] + # Represents the explicit named hash keys and values. # - # source://prism//lib/prism/node.rb#8354 + # foo => { a: 1, b:, ** } + # ^^^^^^^^ + # + # source://prism//lib/prism/node.rb#8435 sig { returns(T::Array[Prism::AssocNode]) } def elements; end @@ -17458,61 +17406,76 @@ class Prism::HashPatternNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#8408 + # source://prism//lib/prism/node.rb#8510 sig { override.returns(String) } def inspect; end # def opening: () -> String? # - # source://prism//lib/prism/node.rb#8398 + # source://prism//lib/prism/node.rb#8500 sig { returns(T.nilable(String)) } def opening; end - # attr_reader opening_loc: Location? + # The location of the opening brace. # - # source://prism//lib/prism/node.rb#8360 + # foo => { a: 1 } + # ^ + # + # foo => Bar[a: 1] + # ^ + # + # source://prism//lib/prism/node.rb#8456 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end - # attr_reader rest: AssocSplatNode | NoKeywordsParameterNode | nil + # Represents the rest of the Hash keys and values. This can be named, unnamed, or explicitly forbidden via `**nil`, this last one results in a `NoKeywordsParameterNode`. + # + # foo => { a: 1, b:, **c } + # ^^^ # - # source://prism//lib/prism/node.rb#8357 + # foo => { a: 1, b:, ** } + # ^^ + # + # foo => { a: 1, b:, **nil } + # ^^^^^ + # + # source://prism//lib/prism/node.rb#8447 sig { returns(T.nilable(T.any(Prism::AssocSplatNode, Prism::NoKeywordsParameterNode))) } def rest; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#8393 + # source://prism//lib/prism/node.rb#8495 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#8374 + # source://prism//lib/prism/node.rb#8470 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#8413 + # source://prism//lib/prism/node.rb#8515 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#8418 + # source://prism//lib/prism/node.rb#8520 def type; end end end -# source://prism//lib/prism/node_ext.rb#52 +# source://prism//lib/prism/node_ext.rb#55 module Prism::HeredocQuery # Returns true if this node was represented as a heredoc in the source code. # # @return [Boolean] # - # source://prism//lib/prism/node_ext.rb#54 + # source://prism//lib/prism/node_ext.rb#57 def heredoc?; end end @@ -17527,13 +17490,13 @@ end # foo ? bar : baz # ^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#8445 +# source://prism//lib/prism/node.rb#8547 class Prism::IfNode < ::Prism::Node # Initialize a new IfNode node. # # @return [IfNode] a new instance of IfNode # - # source://prism//lib/prism/node.rb#8447 + # source://prism//lib/prism/node.rb#8549 sig do params( source: Prism::Source, @@ -17553,42 +17516,42 @@ class Prism::IfNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#8641 + # source://prism//lib/prism/node.rb#8743 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#8461 + # source://prism//lib/prism/node.rb#8563 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8466 + # source://prism//lib/prism/node.rb#8568 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#8480 + # source://prism//lib/prism/node.rb#8582 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#8471 + # source://prism//lib/prism/node.rb#8573 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # Returns the subsequent if/elsif/else clause of the if node. This method is # deprecated in favor of #subsequent. # - # source://prism//lib/prism/node_ext.rb#485 + # source://prism//lib/prism/node_ext.rb#488 def consequent; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?if_keyword_loc: Location?, ?predicate: Prism::node, ?then_keyword_loc: Location?, ?statements: StatementsNode?, ?subsequent: ElseNode | IfNode | nil, ?end_keyword_loc: Location?) -> IfNode # - # source://prism//lib/prism/node.rb#8485 + # source://prism//lib/prism/node.rb#8587 sig do params( node_id: Integer, @@ -17604,22 +17567,22 @@ class Prism::IfNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), if_keyword_loc: T.unsafe(nil), predicate: T.unsafe(nil), then_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), subsequent: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8466 + # source://prism//lib/prism/node.rb#8568 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, if_keyword_loc: Location?, predicate: Prism::node, then_keyword_loc: Location?, statements: StatementsNode?, subsequent: ElseNode | IfNode | nil, end_keyword_loc: Location? } # - # source://prism//lib/prism/node.rb#8493 + # source://prism//lib/prism/node.rb#8595 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # def end_keyword: () -> String? # - # source://prism//lib/prism/node.rb#8620 + # source://prism//lib/prism/node.rb#8722 sig { returns(T.nilable(String)) } def end_keyword; end @@ -17630,7 +17593,7 @@ class Prism::IfNode < ::Prism::Node # end # ^^^ # - # source://prism//lib/prism/node.rb#8591 + # source://prism//lib/prism/node.rb#8693 sig { returns(T.nilable(Prism::Location)) } def end_keyword_loc; end @@ -17639,7 +17602,7 @@ class Prism::IfNode < ::Prism::Node # def if_keyword: () -> String? # - # source://prism//lib/prism/node.rb#8610 + # source://prism//lib/prism/node.rb#8712 sig { returns(T.nilable(String)) } def if_keyword; end @@ -17650,17 +17613,17 @@ class Prism::IfNode < ::Prism::Node # # The `if_keyword_loc` field will be `nil` when the `IfNode` represents a ternary expression. # - # source://prism//lib/prism/node.rb#8503 + # source://prism//lib/prism/node.rb#8605 sig { returns(T.nilable(Prism::Location)) } def if_keyword_loc; end # def inspect -> String # - # source://prism//lib/prism/node.rb#8625 + # source://prism//lib/prism/node.rb#8727 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/parse_result/newlines.rb#91 + # source://prism//lib/prism/parse_result/newlines.rb#92 def newline_flag!(lines); end # The node for the condition the `IfNode` is testing. @@ -17676,26 +17639,26 @@ class Prism::IfNode < ::Prism::Node # foo ? bar : baz # ^^^ # - # source://prism//lib/prism/node.rb#8533 + # source://prism//lib/prism/node.rb#8635 sig { returns(Prism::Node) } def predicate; end # Save the end_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#8605 + # source://prism//lib/prism/node.rb#8707 def save_end_keyword_loc(repository); end # Save the if_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#8517 + # source://prism//lib/prism/node.rb#8619 def save_if_keyword_loc(repository); end # Save the then_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#8556 + # source://prism//lib/prism/node.rb#8658 def save_then_keyword_loc(repository); end # Represents the body of statements that will be executed when the predicate is evaluated as truthy. Will be `nil` when no body is provided. @@ -17707,7 +17670,7 @@ class Prism::IfNode < ::Prism::Node # ^^^ # end # - # source://prism//lib/prism/node.rb#8568 + # source://prism//lib/prism/node.rb#8670 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end @@ -17725,13 +17688,13 @@ class Prism::IfNode < ::Prism::Node # if foo then bar else baz end # ^^^^^^^^^^^^ # - # source://prism//lib/prism/node.rb#8583 + # source://prism//lib/prism/node.rb#8685 sig { returns(T.nilable(T.any(Prism::ElseNode, Prism::IfNode))) } def subsequent; end # def then_keyword: () -> String? # - # source://prism//lib/prism/node.rb#8615 + # source://prism//lib/prism/node.rb#8717 sig { returns(T.nilable(String)) } def then_keyword; end @@ -17743,20 +17706,20 @@ class Prism::IfNode < ::Prism::Node # a ? b : c # ^ # - # source://prism//lib/prism/node.rb#8542 + # source://prism//lib/prism/node.rb#8644 sig { returns(T.nilable(Prism::Location)) } def then_keyword_loc; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#8630 + # source://prism//lib/prism/node.rb#8732 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#8635 + # source://prism//lib/prism/node.rb#8737 def type; end end end @@ -17766,13 +17729,13 @@ end # 1.0i # ^^^^ # -# source://prism//lib/prism/node.rb#8656 +# source://prism//lib/prism/node.rb#8758 class Prism::ImaginaryNode < ::Prism::Node # Initialize a new ImaginaryNode node. # # @return [ImaginaryNode] a new instance of ImaginaryNode # - # source://prism//lib/prism/node.rb#8658 + # source://prism//lib/prism/node.rb#8760 sig do params( source: Prism::Source, @@ -17787,36 +17750,36 @@ class Prism::ImaginaryNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#8719 + # source://prism//lib/prism/node.rb#8821 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#8667 + # source://prism//lib/prism/node.rb#8769 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8672 + # source://prism//lib/prism/node.rb#8774 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#8682 + # source://prism//lib/prism/node.rb#8784 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#8677 + # source://prism//lib/prism/node.rb#8779 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?numeric: FloatNode | IntegerNode | RationalNode) -> ImaginaryNode # - # source://prism//lib/prism/node.rb#8687 + # source://prism//lib/prism/node.rb#8789 sig do params( node_id: Integer, @@ -17827,16 +17790,16 @@ class Prism::ImaginaryNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), numeric: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8672 + # source://prism//lib/prism/node.rb#8774 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, numeric: FloatNode | IntegerNode | RationalNode } # - # source://prism//lib/prism/node.rb#8695 + # source://prism//lib/prism/node.rb#8797 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -17845,32 +17808,32 @@ class Prism::ImaginaryNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#8703 + # source://prism//lib/prism/node.rb#8805 sig { override.returns(String) } def inspect; end # attr_reader numeric: FloatNode | IntegerNode | RationalNode # - # source://prism//lib/prism/node.rb#8700 + # source://prism//lib/prism/node.rb#8802 sig { returns(T.any(Prism::FloatNode, Prism::IntegerNode, Prism::RationalNode)) } def numeric; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#8708 + # source://prism//lib/prism/node.rb#8810 sig { override.returns(Symbol) } def type; end # Returns the value of the node as a Ruby Complex. # - # source://prism//lib/prism/node_ext.rb#107 + # source://prism//lib/prism/node_ext.rb#110 sig { returns(Complex) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#8713 + # source://prism//lib/prism/node.rb#8815 def type; end end end @@ -17886,13 +17849,13 @@ end # foo in { bar: } # ^^^^ # -# source://prism//lib/prism/node.rb#8735 +# source://prism//lib/prism/node.rb#8837 class Prism::ImplicitNode < ::Prism::Node # Initialize a new ImplicitNode node. # # @return [ImplicitNode] a new instance of ImplicitNode # - # source://prism//lib/prism/node.rb#8737 + # source://prism//lib/prism/node.rb#8839 sig do params( source: Prism::Source, @@ -17907,36 +17870,36 @@ class Prism::ImplicitNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#8798 + # source://prism//lib/prism/node.rb#8900 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#8746 + # source://prism//lib/prism/node.rb#8848 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8751 + # source://prism//lib/prism/node.rb#8853 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#8761 + # source://prism//lib/prism/node.rb#8863 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#8756 + # source://prism//lib/prism/node.rb#8858 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?value: LocalVariableReadNode | CallNode | ConstantReadNode | LocalVariableTargetNode) -> ImplicitNode # - # source://prism//lib/prism/node.rb#8766 + # source://prism//lib/prism/node.rb#8868 sig do params( node_id: Integer, @@ -17947,16 +17910,16 @@ class Prism::ImplicitNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8751 + # source://prism//lib/prism/node.rb#8853 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: LocalVariableReadNode | CallNode | ConstantReadNode | LocalVariableTargetNode } # - # source://prism//lib/prism/node.rb#8774 + # source://prism//lib/prism/node.rb#8876 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -17965,19 +17928,19 @@ class Prism::ImplicitNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#8782 + # source://prism//lib/prism/node.rb#8884 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#8787 + # source://prism//lib/prism/node.rb#8889 sig { override.returns(Symbol) } def type; end # attr_reader value: LocalVariableReadNode | CallNode | ConstantReadNode | LocalVariableTargetNode # - # source://prism//lib/prism/node.rb#8779 + # source://prism//lib/prism/node.rb#8881 sig do returns(T.any(Prism::LocalVariableReadNode, Prism::CallNode, Prism::ConstantReadNode, Prism::LocalVariableTargetNode)) end @@ -17986,7 +17949,7 @@ class Prism::ImplicitNode < ::Prism::Node class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#8792 + # source://prism//lib/prism/node.rb#8894 def type; end end end @@ -18005,62 +17968,62 @@ end # foo, = bar # ^ # -# source://prism//lib/prism/node.rb#8817 +# source://prism//lib/prism/node.rb#8919 class Prism::ImplicitRestNode < ::Prism::Node # Initialize a new ImplicitRestNode node. # # @return [ImplicitRestNode] a new instance of ImplicitRestNode # - # source://prism//lib/prism/node.rb#8819 + # source://prism//lib/prism/node.rb#8921 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#8876 + # source://prism//lib/prism/node.rb#8978 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#8827 + # source://prism//lib/prism/node.rb#8929 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8832 + # source://prism//lib/prism/node.rb#8934 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#8842 + # source://prism//lib/prism/node.rb#8944 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#8837 + # source://prism//lib/prism/node.rb#8939 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> ImplicitRestNode # - # source://prism//lib/prism/node.rb#8847 + # source://prism//lib/prism/node.rb#8949 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::ImplicitRestNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8832 + # source://prism//lib/prism/node.rb#8934 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#8855 + # source://prism//lib/prism/node.rb#8957 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -18069,20 +18032,20 @@ class Prism::ImplicitRestNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#8860 + # source://prism//lib/prism/node.rb#8962 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#8865 + # source://prism//lib/prism/node.rb#8967 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#8870 + # source://prism//lib/prism/node.rb#8972 def type; end end end @@ -18092,13 +18055,13 @@ end # case a; in b then c end # ^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#8885 +# source://prism//lib/prism/node.rb#8987 class Prism::InNode < ::Prism::Node # Initialize a new InNode node. # # @return [InNode] a new instance of InNode # - # source://prism//lib/prism/node.rb#8887 + # source://prism//lib/prism/node.rb#8989 sig do params( source: Prism::Source, @@ -18116,36 +18079,36 @@ class Prism::InNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#8999 + # source://prism//lib/prism/node.rb#9101 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#8899 + # source://prism//lib/prism/node.rb#9001 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8904 + # source://prism//lib/prism/node.rb#9006 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#8917 + # source://prism//lib/prism/node.rb#9019 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#8909 + # source://prism//lib/prism/node.rb#9011 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?pattern: Prism::node, ?statements: StatementsNode?, ?in_loc: Location, ?then_loc: Location?) -> InNode # - # source://prism//lib/prism/node.rb#8922 + # source://prism//lib/prism/node.rb#9024 sig do params( node_id: Integer, @@ -18159,16 +18122,16 @@ class Prism::InNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), pattern: T.unsafe(nil), statements: T.unsafe(nil), in_loc: T.unsafe(nil), then_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#8904 + # source://prism//lib/prism/node.rb#9006 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, pattern: Prism::node, statements: StatementsNode?, in_loc: Location, then_loc: Location? } # - # source://prism//lib/prism/node.rb#8930 + # source://prism//lib/prism/node.rb#9032 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -18177,68 +18140,68 @@ class Prism::InNode < ::Prism::Node # def in: () -> String # - # source://prism//lib/prism/node.rb#8973 + # source://prism//lib/prism/node.rb#9075 sig { returns(String) } def in; end # attr_reader in_loc: Location # - # source://prism//lib/prism/node.rb#8941 + # source://prism//lib/prism/node.rb#9043 sig { returns(Prism::Location) } def in_loc; end # def inspect -> String # - # source://prism//lib/prism/node.rb#8983 + # source://prism//lib/prism/node.rb#9085 sig { override.returns(String) } def inspect; end # attr_reader pattern: Prism::node # - # source://prism//lib/prism/node.rb#8935 + # source://prism//lib/prism/node.rb#9037 sig { returns(Prism::Node) } def pattern; end # Save the in_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#8949 + # source://prism//lib/prism/node.rb#9051 def save_in_loc(repository); end # Save the then_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#8968 + # source://prism//lib/prism/node.rb#9070 def save_then_loc(repository); end # attr_reader statements: StatementsNode? # - # source://prism//lib/prism/node.rb#8938 + # source://prism//lib/prism/node.rb#9040 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # def then: () -> String? # - # source://prism//lib/prism/node.rb#8978 + # source://prism//lib/prism/node.rb#9080 sig { returns(T.nilable(String)) } def then; end # attr_reader then_loc: Location? # - # source://prism//lib/prism/node.rb#8954 + # source://prism//lib/prism/node.rb#9056 sig { returns(T.nilable(Prism::Location)) } def then_loc; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#8988 + # source://prism//lib/prism/node.rb#9090 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#8993 + # source://prism//lib/prism/node.rb#9095 def type; end end end @@ -18248,13 +18211,13 @@ end # foo.bar[baz] &&= value # ^^^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#9012 +# source://prism//lib/prism/node.rb#9114 class Prism::IndexAndWriteNode < ::Prism::Node # Initialize a new IndexAndWriteNode node. # # @return [IndexAndWriteNode] a new instance of IndexAndWriteNode # - # source://prism//lib/prism/node.rb#9014 + # source://prism//lib/prism/node.rb#9116 sig do params( source: Prism::Source, @@ -18276,18 +18239,18 @@ class Prism::IndexAndWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#9194 + # source://prism//lib/prism/node.rb#9296 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#9030 + # source://prism//lib/prism/node.rb#9132 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader arguments: ArgumentsNode? # - # source://prism//lib/prism/node.rb#9123 + # source://prism//lib/prism/node.rb#9225 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end @@ -18295,61 +18258,61 @@ class Prism::IndexAndWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9078 + # source://prism//lib/prism/node.rb#9180 sig { returns(T::Boolean) } def attribute_write?; end # attr_reader block: BlockArgumentNode? # - # source://prism//lib/prism/node.rb#9139 + # source://prism//lib/prism/node.rb#9241 sig { returns(T.nilable(Prism::BlockArgumentNode)) } def block; end # def call_operator: () -> String? # - # source://prism//lib/prism/node.rb#9158 + # source://prism//lib/prism/node.rb#9260 sig { returns(T.nilable(String)) } def call_operator; end # attr_reader call_operator_loc: Location? # - # source://prism//lib/prism/node.rb#9091 + # source://prism//lib/prism/node.rb#9193 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#9035 + # source://prism//lib/prism/node.rb#9137 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#9168 + # source://prism//lib/prism/node.rb#9270 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#9126 + # source://prism//lib/prism/node.rb#9228 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#9050 + # source://prism//lib/prism/node.rb#9152 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#9040 + # source://prism//lib/prism/node.rb#9142 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node?, ?call_operator_loc: Location?, ?opening_loc: Location, ?arguments: ArgumentsNode?, ?closing_loc: Location, ?block: BlockArgumentNode?, ?operator_loc: Location, ?value: Prism::node) -> IndexAndWriteNode # - # source://prism//lib/prism/node.rb#9055 + # source://prism//lib/prism/node.rb#9157 sig do params( node_id: Integer, @@ -18367,16 +18330,16 @@ class Prism::IndexAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#9035 + # source://prism//lib/prism/node.rb#9137 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, opening_loc: Location, arguments: ArgumentsNode?, closing_loc: Location, block: BlockArgumentNode?, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#9063 + # source://prism//lib/prism/node.rb#9165 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -18387,43 +18350,43 @@ class Prism::IndexAndWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9083 + # source://prism//lib/prism/node.rb#9185 sig { returns(T::Boolean) } def ignore_visibility?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#9178 + # source://prism//lib/prism/node.rb#9280 sig { override.returns(String) } def inspect; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#9163 + # source://prism//lib/prism/node.rb#9265 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#9110 + # source://prism//lib/prism/node.rb#9212 sig { returns(Prism::Location) } def opening_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#9173 + # source://prism//lib/prism/node.rb#9275 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#9142 + # source://prism//lib/prism/node.rb#9244 sig { returns(Prism::Location) } def operator_loc; end # attr_reader receiver: Prism::node? # - # source://prism//lib/prism/node.rb#9088 + # source://prism//lib/prism/node.rb#9190 sig { returns(T.nilable(Prism::Node)) } def receiver; end @@ -18431,43 +18394,43 @@ class Prism::IndexAndWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9068 + # source://prism//lib/prism/node.rb#9170 sig { returns(T::Boolean) } def safe_navigation?; end # Save the call_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9105 + # source://prism//lib/prism/node.rb#9207 def save_call_operator_loc(repository); end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9134 + # source://prism//lib/prism/node.rb#9236 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9118 + # source://prism//lib/prism/node.rb#9220 def save_opening_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9150 + # source://prism//lib/prism/node.rb#9252 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#9183 + # source://prism//lib/prism/node.rb#9285 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#9155 + # source://prism//lib/prism/node.rb#9257 sig { returns(Prism::Node) } def value; end @@ -18475,14 +18438,14 @@ class Prism::IndexAndWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9073 + # source://prism//lib/prism/node.rb#9175 sig { returns(T::Boolean) } def variable_call?; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#9188 + # source://prism//lib/prism/node.rb#9290 def type; end end end @@ -18492,13 +18455,13 @@ end # foo.bar[baz] += value # ^^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#9212 +# source://prism//lib/prism/node.rb#9314 class Prism::IndexOperatorWriteNode < ::Prism::Node # Initialize a new IndexOperatorWriteNode node. # # @return [IndexOperatorWriteNode] a new instance of IndexOperatorWriteNode # - # source://prism//lib/prism/node.rb#9214 + # source://prism//lib/prism/node.rb#9316 sig do params( source: Prism::Source, @@ -18521,18 +18484,18 @@ class Prism::IndexOperatorWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#9393 + # source://prism//lib/prism/node.rb#9495 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#9231 + # source://prism//lib/prism/node.rb#9333 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader arguments: ArgumentsNode? # - # source://prism//lib/prism/node.rb#9324 + # source://prism//lib/prism/node.rb#9426 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end @@ -18540,73 +18503,73 @@ class Prism::IndexOperatorWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9279 + # source://prism//lib/prism/node.rb#9381 sig { returns(T::Boolean) } def attribute_write?; end # attr_reader binary_operator: Symbol # - # source://prism//lib/prism/node.rb#9343 + # source://prism//lib/prism/node.rb#9445 sig { returns(Symbol) } def binary_operator; end # attr_reader binary_operator_loc: Location # - # source://prism//lib/prism/node.rb#9346 + # source://prism//lib/prism/node.rb#9448 sig { returns(Prism::Location) } def binary_operator_loc; end # attr_reader block: BlockArgumentNode? # - # source://prism//lib/prism/node.rb#9340 + # source://prism//lib/prism/node.rb#9442 sig { returns(T.nilable(Prism::BlockArgumentNode)) } def block; end # def call_operator: () -> String? # - # source://prism//lib/prism/node.rb#9362 + # source://prism//lib/prism/node.rb#9464 sig { returns(T.nilable(String)) } def call_operator; end # attr_reader call_operator_loc: Location? # - # source://prism//lib/prism/node.rb#9292 + # source://prism//lib/prism/node.rb#9394 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#9236 + # source://prism//lib/prism/node.rb#9338 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#9372 + # source://prism//lib/prism/node.rb#9474 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#9327 + # source://prism//lib/prism/node.rb#9429 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#9251 + # source://prism//lib/prism/node.rb#9353 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#9241 + # source://prism//lib/prism/node.rb#9343 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node?, ?call_operator_loc: Location?, ?opening_loc: Location, ?arguments: ArgumentsNode?, ?closing_loc: Location, ?block: BlockArgumentNode?, ?binary_operator: Symbol, ?binary_operator_loc: Location, ?value: Prism::node) -> IndexOperatorWriteNode # - # source://prism//lib/prism/node.rb#9256 + # source://prism//lib/prism/node.rb#9358 sig do params( node_id: Integer, @@ -18625,16 +18588,16 @@ class Prism::IndexOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil), binary_operator: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#9236 + # source://prism//lib/prism/node.rb#9338 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, opening_loc: Location, arguments: ArgumentsNode?, closing_loc: Location, block: BlockArgumentNode?, binary_operator: Symbol, binary_operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#9264 + # source://prism//lib/prism/node.rb#9366 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -18645,43 +18608,43 @@ class Prism::IndexOperatorWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9284 + # source://prism//lib/prism/node.rb#9386 sig { returns(T::Boolean) } def ignore_visibility?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#9377 + # source://prism//lib/prism/node.rb#9479 sig { override.returns(String) } def inspect; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#9367 + # source://prism//lib/prism/node.rb#9469 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#9311 + # source://prism//lib/prism/node.rb#9413 sig { returns(Prism::Location) } def opening_loc; end # Returns the binary operator used to modify the receiver. This method is # deprecated in favor of #binary_operator. # - # source://prism//lib/prism/node_ext.rb#419 + # source://prism//lib/prism/node_ext.rb#422 def operator; end # Returns the location of the binary operator used to modify the receiver. # This method is deprecated in favor of #binary_operator_loc. # - # source://prism//lib/prism/node_ext.rb#426 + # source://prism//lib/prism/node_ext.rb#429 def operator_loc; end # attr_reader receiver: Prism::node? # - # source://prism//lib/prism/node.rb#9289 + # source://prism//lib/prism/node.rb#9391 sig { returns(T.nilable(Prism::Node)) } def receiver; end @@ -18689,43 +18652,43 @@ class Prism::IndexOperatorWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9269 + # source://prism//lib/prism/node.rb#9371 sig { returns(T::Boolean) } def safe_navigation?; end # Save the binary_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9354 + # source://prism//lib/prism/node.rb#9456 def save_binary_operator_loc(repository); end # Save the call_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9306 + # source://prism//lib/prism/node.rb#9408 def save_call_operator_loc(repository); end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9335 + # source://prism//lib/prism/node.rb#9437 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9319 + # source://prism//lib/prism/node.rb#9421 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#9382 + # source://prism//lib/prism/node.rb#9484 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#9359 + # source://prism//lib/prism/node.rb#9461 sig { returns(Prism::Node) } def value; end @@ -18733,14 +18696,14 @@ class Prism::IndexOperatorWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9274 + # source://prism//lib/prism/node.rb#9376 sig { returns(T::Boolean) } def variable_call?; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#9387 + # source://prism//lib/prism/node.rb#9489 def type; end end end @@ -18750,13 +18713,13 @@ end # foo.bar[baz] ||= value # ^^^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#9412 +# source://prism//lib/prism/node.rb#9514 class Prism::IndexOrWriteNode < ::Prism::Node # Initialize a new IndexOrWriteNode node. # # @return [IndexOrWriteNode] a new instance of IndexOrWriteNode # - # source://prism//lib/prism/node.rb#9414 + # source://prism//lib/prism/node.rb#9516 sig do params( source: Prism::Source, @@ -18778,18 +18741,18 @@ class Prism::IndexOrWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#9594 + # source://prism//lib/prism/node.rb#9696 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#9430 + # source://prism//lib/prism/node.rb#9532 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader arguments: ArgumentsNode? # - # source://prism//lib/prism/node.rb#9523 + # source://prism//lib/prism/node.rb#9625 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end @@ -18797,61 +18760,61 @@ class Prism::IndexOrWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9478 + # source://prism//lib/prism/node.rb#9580 sig { returns(T::Boolean) } def attribute_write?; end # attr_reader block: BlockArgumentNode? # - # source://prism//lib/prism/node.rb#9539 + # source://prism//lib/prism/node.rb#9641 sig { returns(T.nilable(Prism::BlockArgumentNode)) } def block; end # def call_operator: () -> String? # - # source://prism//lib/prism/node.rb#9558 + # source://prism//lib/prism/node.rb#9660 sig { returns(T.nilable(String)) } def call_operator; end # attr_reader call_operator_loc: Location? # - # source://prism//lib/prism/node.rb#9491 + # source://prism//lib/prism/node.rb#9593 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#9435 + # source://prism//lib/prism/node.rb#9537 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#9568 + # source://prism//lib/prism/node.rb#9670 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#9526 + # source://prism//lib/prism/node.rb#9628 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#9450 + # source://prism//lib/prism/node.rb#9552 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#9440 + # source://prism//lib/prism/node.rb#9542 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node?, ?call_operator_loc: Location?, ?opening_loc: Location, ?arguments: ArgumentsNode?, ?closing_loc: Location, ?block: BlockArgumentNode?, ?operator_loc: Location, ?value: Prism::node) -> IndexOrWriteNode # - # source://prism//lib/prism/node.rb#9455 + # source://prism//lib/prism/node.rb#9557 sig do params( node_id: Integer, @@ -18869,16 +18832,16 @@ class Prism::IndexOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#9435 + # source://prism//lib/prism/node.rb#9537 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node?, call_operator_loc: Location?, opening_loc: Location, arguments: ArgumentsNode?, closing_loc: Location, block: BlockArgumentNode?, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#9463 + # source://prism//lib/prism/node.rb#9565 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -18889,43 +18852,43 @@ class Prism::IndexOrWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9483 + # source://prism//lib/prism/node.rb#9585 sig { returns(T::Boolean) } def ignore_visibility?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#9578 + # source://prism//lib/prism/node.rb#9680 sig { override.returns(String) } def inspect; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#9563 + # source://prism//lib/prism/node.rb#9665 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#9510 + # source://prism//lib/prism/node.rb#9612 sig { returns(Prism::Location) } def opening_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#9573 + # source://prism//lib/prism/node.rb#9675 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#9542 + # source://prism//lib/prism/node.rb#9644 sig { returns(Prism::Location) } def operator_loc; end # attr_reader receiver: Prism::node? # - # source://prism//lib/prism/node.rb#9488 + # source://prism//lib/prism/node.rb#9590 sig { returns(T.nilable(Prism::Node)) } def receiver; end @@ -18933,43 +18896,43 @@ class Prism::IndexOrWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9468 + # source://prism//lib/prism/node.rb#9570 sig { returns(T::Boolean) } def safe_navigation?; end # Save the call_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9505 + # source://prism//lib/prism/node.rb#9607 def save_call_operator_loc(repository); end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9534 + # source://prism//lib/prism/node.rb#9636 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9518 + # source://prism//lib/prism/node.rb#9620 def save_opening_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9550 + # source://prism//lib/prism/node.rb#9652 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#9583 + # source://prism//lib/prism/node.rb#9685 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#9555 + # source://prism//lib/prism/node.rb#9657 sig { returns(Prism::Node) } def value; end @@ -18977,14 +18940,14 @@ class Prism::IndexOrWriteNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9473 + # source://prism//lib/prism/node.rb#9575 sig { returns(T::Boolean) } def variable_call?; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#9588 + # source://prism//lib/prism/node.rb#9690 def type; end end end @@ -19002,13 +18965,13 @@ end # for foo[bar] in baz do end # ^^^^^^^^ # -# source://prism//lib/prism/node.rb#9620 +# source://prism//lib/prism/node.rb#9722 class Prism::IndexTargetNode < ::Prism::Node # Initialize a new IndexTargetNode node. # # @return [IndexTargetNode] a new instance of IndexTargetNode # - # source://prism//lib/prism/node.rb#9622 + # source://prism//lib/prism/node.rb#9724 sig do params( source: Prism::Source, @@ -19027,18 +18990,18 @@ class Prism::IndexTargetNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#9753 + # source://prism//lib/prism/node.rb#9855 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#9635 + # source://prism//lib/prism/node.rb#9737 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader arguments: ArgumentsNode? # - # source://prism//lib/prism/node.rb#9708 + # source://prism//lib/prism/node.rb#9810 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end @@ -19046,49 +19009,49 @@ class Prism::IndexTargetNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9682 + # source://prism//lib/prism/node.rb#9784 sig { returns(T::Boolean) } def attribute_write?; end # attr_reader block: BlockArgumentNode? # - # source://prism//lib/prism/node.rb#9724 + # source://prism//lib/prism/node.rb#9826 sig { returns(T.nilable(Prism::BlockArgumentNode)) } def block; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#9640 + # source://prism//lib/prism/node.rb#9742 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#9732 + # source://prism//lib/prism/node.rb#9834 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#9711 + # source://prism//lib/prism/node.rb#9813 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#9654 + # source://prism//lib/prism/node.rb#9756 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#9645 + # source://prism//lib/prism/node.rb#9747 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?receiver: Prism::node, ?opening_loc: Location, ?arguments: ArgumentsNode?, ?closing_loc: Location, ?block: BlockArgumentNode?) -> IndexTargetNode # - # source://prism//lib/prism/node.rb#9659 + # source://prism//lib/prism/node.rb#9761 sig do params( node_id: Integer, @@ -19103,16 +19066,16 @@ class Prism::IndexTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#9640 + # source://prism//lib/prism/node.rb#9742 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, receiver: Prism::node, opening_loc: Location, arguments: ArgumentsNode?, closing_loc: Location, block: BlockArgumentNode? } # - # source://prism//lib/prism/node.rb#9667 + # source://prism//lib/prism/node.rb#9769 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -19123,31 +19086,31 @@ class Prism::IndexTargetNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9687 + # source://prism//lib/prism/node.rb#9789 sig { returns(T::Boolean) } def ignore_visibility?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#9737 + # source://prism//lib/prism/node.rb#9839 sig { override.returns(String) } def inspect; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#9727 + # source://prism//lib/prism/node.rb#9829 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#9695 + # source://prism//lib/prism/node.rb#9797 sig { returns(Prism::Location) } def opening_loc; end # attr_reader receiver: Prism::node # - # source://prism//lib/prism/node.rb#9692 + # source://prism//lib/prism/node.rb#9794 sig { returns(Prism::Node) } def receiver; end @@ -19155,25 +19118,25 @@ class Prism::IndexTargetNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9672 + # source://prism//lib/prism/node.rb#9774 sig { returns(T::Boolean) } def safe_navigation?; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9719 + # source://prism//lib/prism/node.rb#9821 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9703 + # source://prism//lib/prism/node.rb#9805 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#9742 + # source://prism//lib/prism/node.rb#9844 sig { override.returns(Symbol) } def type; end @@ -19181,14 +19144,14 @@ class Prism::IndexTargetNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#9677 + # source://prism//lib/prism/node.rb#9779 sig { returns(T::Boolean) } def variable_call?; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#9747 + # source://prism//lib/prism/node.rb#9849 def type; end end end @@ -19196,11 +19159,11 @@ end # InlineComment objects are the most common. They correspond to comments in # the source file like this one that start with #. # -# source://prism//lib/prism/parse_result.rb#546 +# source://prism//lib/prism/parse_result.rb#547 class Prism::InlineComment < ::Prism::Comment # Returns a string representation of this comment. # - # source://prism//lib/prism/parse_result.rb#554 + # source://prism//lib/prism/parse_result.rb#555 sig { returns(String) } def inspect; end @@ -19209,7 +19172,7 @@ class Prism::InlineComment < ::Prism::Comment # # @return [Boolean] # - # source://prism//lib/prism/parse_result.rb#549 + # source://prism//lib/prism/parse_result.rb#550 sig { override.returns(T::Boolean) } def trailing?; end end @@ -19217,804 +19180,804 @@ end # This visitor is responsible for composing the strings that get returned by # the various #inspect methods defined on each of the nodes. # -# source://prism//lib/prism/inspect_visitor.rb#12 +# source://prism//lib/prism/inspect_visitor.rb#15 class Prism::InspectVisitor < ::Prism::Visitor # Initializes a new instance of the InspectVisitor. # # @return [InspectVisitor] a new instance of InspectVisitor # - # source://prism//lib/prism/inspect_visitor.rb#35 + # source://prism//lib/prism/inspect_visitor.rb#38 sig { params(indent: String).void } def initialize(indent = T.unsafe(nil)); end # The list of commands that we need to execute in order to compose the # final string. # - # source://prism//lib/prism/inspect_visitor.rb#32 + # source://prism//lib/prism/inspect_visitor.rb#35 def commands; end # Compose the final string. # - # source://prism//lib/prism/inspect_visitor.rb#48 + # source://prism//lib/prism/inspect_visitor.rb#51 sig { returns(String) } def compose; end # The current prefix string. # - # source://prism//lib/prism/inspect_visitor.rb#28 + # source://prism//lib/prism/inspect_visitor.rb#31 def indent; end # Inspect a AliasGlobalVariableNode node. # - # source://prism//lib/prism/inspect_visitor.rb#77 + # source://prism//lib/prism/inspect_visitor.rb#80 def visit_alias_global_variable_node(node); end # Inspect a AliasMethodNode node. # - # source://prism//lib/prism/inspect_visitor.rb#89 + # source://prism//lib/prism/inspect_visitor.rb#92 def visit_alias_method_node(node); end # Inspect a AlternationPatternNode node. # - # source://prism//lib/prism/inspect_visitor.rb#101 + # source://prism//lib/prism/inspect_visitor.rb#104 def visit_alternation_pattern_node(node); end # Inspect a AndNode node. # - # source://prism//lib/prism/inspect_visitor.rb#113 + # source://prism//lib/prism/inspect_visitor.rb#116 def visit_and_node(node); end # Inspect a ArgumentsNode node. # - # source://prism//lib/prism/inspect_visitor.rb#125 + # source://prism//lib/prism/inspect_visitor.rb#128 def visit_arguments_node(node); end # Inspect a ArrayNode node. # - # source://prism//lib/prism/inspect_visitor.rb#141 + # source://prism//lib/prism/inspect_visitor.rb#144 def visit_array_node(node); end # Inspect a ArrayPatternNode node. # - # source://prism//lib/prism/inspect_visitor.rb#159 + # source://prism//lib/prism/inspect_visitor.rb#162 def visit_array_pattern_node(node); end # Inspect a AssocNode node. # - # source://prism//lib/prism/inspect_visitor.rb#198 + # source://prism//lib/prism/inspect_visitor.rb#201 def visit_assoc_node(node); end # Inspect a AssocSplatNode node. # - # source://prism//lib/prism/inspect_visitor.rb#210 + # source://prism//lib/prism/inspect_visitor.rb#213 def visit_assoc_splat_node(node); end # Inspect a BackReferenceReadNode node. # - # source://prism//lib/prism/inspect_visitor.rb#224 + # source://prism//lib/prism/inspect_visitor.rb#227 def visit_back_reference_read_node(node); end # Inspect a BeginNode node. # - # source://prism//lib/prism/inspect_visitor.rb#232 + # source://prism//lib/prism/inspect_visitor.rb#235 def visit_begin_node(node); end # Inspect a BlockArgumentNode node. # - # source://prism//lib/prism/inspect_visitor.rb#265 + # source://prism//lib/prism/inspect_visitor.rb#268 def visit_block_argument_node(node); end # Inspect a BlockLocalVariableNode node. # - # source://prism//lib/prism/inspect_visitor.rb#279 + # source://prism//lib/prism/inspect_visitor.rb#282 def visit_block_local_variable_node(node); end # Inspect a BlockNode node. # - # source://prism//lib/prism/inspect_visitor.rb#287 + # source://prism//lib/prism/inspect_visitor.rb#290 def visit_block_node(node); end # Inspect a BlockParameterNode node. # - # source://prism//lib/prism/inspect_visitor.rb#309 + # source://prism//lib/prism/inspect_visitor.rb#312 def visit_block_parameter_node(node); end # Inspect a BlockParametersNode node. # - # source://prism//lib/prism/inspect_visitor.rb#323 + # source://prism//lib/prism/inspect_visitor.rb#326 def visit_block_parameters_node(node); end # Inspect a BreakNode node. # - # source://prism//lib/prism/inspect_visitor.rb#347 + # source://prism//lib/prism/inspect_visitor.rb#350 def visit_break_node(node); end # Inspect a CallAndWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#361 + # source://prism//lib/prism/inspect_visitor.rb#364 def visit_call_and_write_node(node); end # Inspect a CallNode node. # - # source://prism//lib/prism/inspect_visitor.rb#381 + # source://prism//lib/prism/inspect_visitor.rb#384 def visit_call_node(node); end # Inspect a CallOperatorWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#411 + # source://prism//lib/prism/inspect_visitor.rb#414 def visit_call_operator_write_node(node); end # Inspect a CallOrWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#432 + # source://prism//lib/prism/inspect_visitor.rb#435 def visit_call_or_write_node(node); end # Inspect a CallTargetNode node. # - # source://prism//lib/prism/inspect_visitor.rb#452 + # source://prism//lib/prism/inspect_visitor.rb#455 def visit_call_target_node(node); end # Inspect a CapturePatternNode node. # - # source://prism//lib/prism/inspect_visitor.rb#464 + # source://prism//lib/prism/inspect_visitor.rb#467 def visit_capture_pattern_node(node); end # Inspect a CaseMatchNode node. # - # source://prism//lib/prism/inspect_visitor.rb#476 + # source://prism//lib/prism/inspect_visitor.rb#479 def visit_case_match_node(node); end # Inspect a CaseNode node. # - # source://prism//lib/prism/inspect_visitor.rb#506 + # source://prism//lib/prism/inspect_visitor.rb#509 def visit_case_node(node); end # Inspect a ClassNode node. # - # source://prism//lib/prism/inspect_visitor.rb#536 + # source://prism//lib/prism/inspect_visitor.rb#539 def visit_class_node(node); end # Inspect a ClassVariableAndWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#562 + # source://prism//lib/prism/inspect_visitor.rb#565 def visit_class_variable_and_write_node(node); end # Inspect a ClassVariableOperatorWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#574 + # source://prism//lib/prism/inspect_visitor.rb#577 def visit_class_variable_operator_write_node(node); end # Inspect a ClassVariableOrWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#587 + # source://prism//lib/prism/inspect_visitor.rb#590 def visit_class_variable_or_write_node(node); end # Inspect a ClassVariableReadNode node. # - # source://prism//lib/prism/inspect_visitor.rb#599 + # source://prism//lib/prism/inspect_visitor.rb#602 def visit_class_variable_read_node(node); end # Inspect a ClassVariableTargetNode node. # - # source://prism//lib/prism/inspect_visitor.rb#607 + # source://prism//lib/prism/inspect_visitor.rb#610 def visit_class_variable_target_node(node); end # Inspect a ClassVariableWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#615 + # source://prism//lib/prism/inspect_visitor.rb#618 def visit_class_variable_write_node(node); end # Inspect a ConstantAndWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#627 + # source://prism//lib/prism/inspect_visitor.rb#630 def visit_constant_and_write_node(node); end # Inspect a ConstantOperatorWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#639 + # source://prism//lib/prism/inspect_visitor.rb#642 def visit_constant_operator_write_node(node); end # Inspect a ConstantOrWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#652 + # source://prism//lib/prism/inspect_visitor.rb#655 def visit_constant_or_write_node(node); end # Inspect a ConstantPathAndWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#664 + # source://prism//lib/prism/inspect_visitor.rb#667 def visit_constant_path_and_write_node(node); end # Inspect a ConstantPathNode node. # - # source://prism//lib/prism/inspect_visitor.rb#676 + # source://prism//lib/prism/inspect_visitor.rb#679 def visit_constant_path_node(node); end # Inspect a ConstantPathOperatorWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#696 + # source://prism//lib/prism/inspect_visitor.rb#699 def visit_constant_path_operator_write_node(node); end # Inspect a ConstantPathOrWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#709 + # source://prism//lib/prism/inspect_visitor.rb#712 def visit_constant_path_or_write_node(node); end # Inspect a ConstantPathTargetNode node. # - # source://prism//lib/prism/inspect_visitor.rb#721 + # source://prism//lib/prism/inspect_visitor.rb#724 def visit_constant_path_target_node(node); end # Inspect a ConstantPathWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#741 + # source://prism//lib/prism/inspect_visitor.rb#744 def visit_constant_path_write_node(node); end # Inspect a ConstantReadNode node. # - # source://prism//lib/prism/inspect_visitor.rb#753 + # source://prism//lib/prism/inspect_visitor.rb#756 def visit_constant_read_node(node); end # Inspect a ConstantTargetNode node. # - # source://prism//lib/prism/inspect_visitor.rb#761 + # source://prism//lib/prism/inspect_visitor.rb#764 def visit_constant_target_node(node); end # Inspect a ConstantWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#769 + # source://prism//lib/prism/inspect_visitor.rb#772 def visit_constant_write_node(node); end # Inspect a DefNode node. # - # source://prism//lib/prism/inspect_visitor.rb#781 + # source://prism//lib/prism/inspect_visitor.rb#784 def visit_def_node(node); end # Inspect a DefinedNode node. # - # source://prism//lib/prism/inspect_visitor.rb#815 + # source://prism//lib/prism/inspect_visitor.rb#818 def visit_defined_node(node); end # Inspect a ElseNode node. # - # source://prism//lib/prism/inspect_visitor.rb#827 + # source://prism//lib/prism/inspect_visitor.rb#830 def visit_else_node(node); end # Inspect a EmbeddedStatementsNode node. # - # source://prism//lib/prism/inspect_visitor.rb#842 + # source://prism//lib/prism/inspect_visitor.rb#845 def visit_embedded_statements_node(node); end # Inspect a EmbeddedVariableNode node. # - # source://prism//lib/prism/inspect_visitor.rb#857 + # source://prism//lib/prism/inspect_visitor.rb#860 def visit_embedded_variable_node(node); end # Inspect a EnsureNode node. # - # source://prism//lib/prism/inspect_visitor.rb#867 + # source://prism//lib/prism/inspect_visitor.rb#870 def visit_ensure_node(node); end # Inspect a FalseNode node. # - # source://prism//lib/prism/inspect_visitor.rb#882 + # source://prism//lib/prism/inspect_visitor.rb#885 def visit_false_node(node); end # Inspect a FindPatternNode node. # - # source://prism//lib/prism/inspect_visitor.rb#889 + # source://prism//lib/prism/inspect_visitor.rb#892 def visit_find_pattern_node(node); end # Inspect a FlipFlopNode node. # - # source://prism//lib/prism/inspect_visitor.rb#917 + # source://prism//lib/prism/inspect_visitor.rb#920 def visit_flip_flop_node(node); end # Inspect a FloatNode node. # - # source://prism//lib/prism/inspect_visitor.rb#937 + # source://prism//lib/prism/inspect_visitor.rb#940 def visit_float_node(node); end # Inspect a ForNode node. # - # source://prism//lib/prism/inspect_visitor.rb#945 + # source://prism//lib/prism/inspect_visitor.rb#948 def visit_for_node(node); end # Inspect a ForwardingArgumentsNode node. # - # source://prism//lib/prism/inspect_visitor.rb#966 + # source://prism//lib/prism/inspect_visitor.rb#969 def visit_forwarding_arguments_node(node); end # Inspect a ForwardingParameterNode node. # - # source://prism//lib/prism/inspect_visitor.rb#973 + # source://prism//lib/prism/inspect_visitor.rb#976 def visit_forwarding_parameter_node(node); end # Inspect a ForwardingSuperNode node. # - # source://prism//lib/prism/inspect_visitor.rb#980 + # source://prism//lib/prism/inspect_visitor.rb#983 def visit_forwarding_super_node(node); end # Inspect a GlobalVariableAndWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#993 + # source://prism//lib/prism/inspect_visitor.rb#996 def visit_global_variable_and_write_node(node); end # Inspect a GlobalVariableOperatorWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1005 + # source://prism//lib/prism/inspect_visitor.rb#1008 def visit_global_variable_operator_write_node(node); end # Inspect a GlobalVariableOrWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1018 + # source://prism//lib/prism/inspect_visitor.rb#1021 def visit_global_variable_or_write_node(node); end # Inspect a GlobalVariableReadNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1030 + # source://prism//lib/prism/inspect_visitor.rb#1033 def visit_global_variable_read_node(node); end # Inspect a GlobalVariableTargetNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1038 + # source://prism//lib/prism/inspect_visitor.rb#1041 def visit_global_variable_target_node(node); end # Inspect a GlobalVariableWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1046 + # source://prism//lib/prism/inspect_visitor.rb#1049 def visit_global_variable_write_node(node); end # Inspect a HashNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1058 + # source://prism//lib/prism/inspect_visitor.rb#1061 def visit_hash_node(node); end # Inspect a HashPatternNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1076 + # source://prism//lib/prism/inspect_visitor.rb#1079 def visit_hash_pattern_node(node); end # Inspect a IfNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1106 + # source://prism//lib/prism/inspect_visitor.rb#1109 def visit_if_node(node); end # Inspect a ImaginaryNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1130 + # source://prism//lib/prism/inspect_visitor.rb#1133 def visit_imaginary_node(node); end # Inspect a ImplicitNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1139 + # source://prism//lib/prism/inspect_visitor.rb#1142 def visit_implicit_node(node); end # Inspect a ImplicitRestNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1148 + # source://prism//lib/prism/inspect_visitor.rb#1151 def visit_implicit_rest_node(node); end # Inspect a InNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1155 + # source://prism//lib/prism/inspect_visitor.rb#1158 def visit_in_node(node); end # Inspect a IndexAndWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1172 + # source://prism//lib/prism/inspect_visitor.rb#1175 def visit_index_and_write_node(node); end # Inspect a IndexOperatorWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1203 + # source://prism//lib/prism/inspect_visitor.rb#1206 def visit_index_operator_write_node(node); end # Inspect a IndexOrWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1235 + # source://prism//lib/prism/inspect_visitor.rb#1238 def visit_index_or_write_node(node); end # Inspect a IndexTargetNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1266 + # source://prism//lib/prism/inspect_visitor.rb#1269 def visit_index_target_node(node); end # Inspect a InstanceVariableAndWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1289 + # source://prism//lib/prism/inspect_visitor.rb#1292 def visit_instance_variable_and_write_node(node); end # Inspect a InstanceVariableOperatorWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1301 + # source://prism//lib/prism/inspect_visitor.rb#1304 def visit_instance_variable_operator_write_node(node); end # Inspect a InstanceVariableOrWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1314 + # source://prism//lib/prism/inspect_visitor.rb#1317 def visit_instance_variable_or_write_node(node); end # Inspect a InstanceVariableReadNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1326 + # source://prism//lib/prism/inspect_visitor.rb#1329 def visit_instance_variable_read_node(node); end # Inspect a InstanceVariableTargetNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1334 + # source://prism//lib/prism/inspect_visitor.rb#1337 def visit_instance_variable_target_node(node); end # Inspect a InstanceVariableWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1342 + # source://prism//lib/prism/inspect_visitor.rb#1345 def visit_instance_variable_write_node(node); end # Inspect a IntegerNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1354 + # source://prism//lib/prism/inspect_visitor.rb#1357 def visit_integer_node(node); end # Inspect a InterpolatedMatchLastLineNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1362 + # source://prism//lib/prism/inspect_visitor.rb#1365 def visit_interpolated_match_last_line_node(node); end # Inspect a InterpolatedRegularExpressionNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1380 + # source://prism//lib/prism/inspect_visitor.rb#1383 def visit_interpolated_regular_expression_node(node); end # Inspect a InterpolatedStringNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1398 + # source://prism//lib/prism/inspect_visitor.rb#1401 def visit_interpolated_string_node(node); end # Inspect a InterpolatedSymbolNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1416 + # source://prism//lib/prism/inspect_visitor.rb#1419 def visit_interpolated_symbol_node(node); end # Inspect a InterpolatedXStringNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1434 + # source://prism//lib/prism/inspect_visitor.rb#1437 def visit_interpolated_x_string_node(node); end # Inspect a ItLocalVariableReadNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1452 + # source://prism//lib/prism/inspect_visitor.rb#1455 def visit_it_local_variable_read_node(node); end # Inspect a ItParametersNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1459 + # source://prism//lib/prism/inspect_visitor.rb#1462 def visit_it_parameters_node(node); end # Inspect a KeywordHashNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1466 + # source://prism//lib/prism/inspect_visitor.rb#1469 def visit_keyword_hash_node(node); end # Inspect a KeywordRestParameterNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1482 + # source://prism//lib/prism/inspect_visitor.rb#1485 def visit_keyword_rest_parameter_node(node); end # Inspect a LambdaNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1496 + # source://prism//lib/prism/inspect_visitor.rb#1499 def visit_lambda_node(node); end # Inspect a LocalVariableAndWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1519 + # source://prism//lib/prism/inspect_visitor.rb#1522 def visit_local_variable_and_write_node(node); end # Inspect a LocalVariableOperatorWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1532 + # source://prism//lib/prism/inspect_visitor.rb#1535 def visit_local_variable_operator_write_node(node); end # Inspect a LocalVariableOrWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1546 + # source://prism//lib/prism/inspect_visitor.rb#1549 def visit_local_variable_or_write_node(node); end # Inspect a LocalVariableReadNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1559 + # source://prism//lib/prism/inspect_visitor.rb#1562 def visit_local_variable_read_node(node); end # Inspect a LocalVariableTargetNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1568 + # source://prism//lib/prism/inspect_visitor.rb#1571 def visit_local_variable_target_node(node); end # Inspect a LocalVariableWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1577 + # source://prism//lib/prism/inspect_visitor.rb#1580 def visit_local_variable_write_node(node); end # Inspect a MatchLastLineNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1590 + # source://prism//lib/prism/inspect_visitor.rb#1593 def visit_match_last_line_node(node); end # Inspect a MatchPredicateNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1601 + # source://prism//lib/prism/inspect_visitor.rb#1604 def visit_match_predicate_node(node); end # Inspect a MatchRequiredNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1613 + # source://prism//lib/prism/inspect_visitor.rb#1616 def visit_match_required_node(node); end # Inspect a MatchWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1625 + # source://prism//lib/prism/inspect_visitor.rb#1628 def visit_match_write_node(node); end # Inspect a MissingNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1643 + # source://prism//lib/prism/inspect_visitor.rb#1646 def visit_missing_node(node); end # Inspect a ModuleNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1650 + # source://prism//lib/prism/inspect_visitor.rb#1653 def visit_module_node(node); end # Inspect a MultiTargetNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1669 + # source://prism//lib/prism/inspect_visitor.rb#1672 def visit_multi_target_node(node); end # Inspect a MultiWriteNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1702 + # source://prism//lib/prism/inspect_visitor.rb#1705 def visit_multi_write_node(node); end # Inspect a NextNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1738 + # source://prism//lib/prism/inspect_visitor.rb#1741 def visit_next_node(node); end # Inspect a NilNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1752 + # source://prism//lib/prism/inspect_visitor.rb#1755 def visit_nil_node(node); end # Inspect a NoKeywordsParameterNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1759 + # source://prism//lib/prism/inspect_visitor.rb#1762 def visit_no_keywords_parameter_node(node); end # Inspect a NumberedParametersNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1768 + # source://prism//lib/prism/inspect_visitor.rb#1771 def visit_numbered_parameters_node(node); end # Inspect a NumberedReferenceReadNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1776 + # source://prism//lib/prism/inspect_visitor.rb#1779 def visit_numbered_reference_read_node(node); end # Inspect a OptionalKeywordParameterNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1784 + # source://prism//lib/prism/inspect_visitor.rb#1787 def visit_optional_keyword_parameter_node(node); end # Inspect a OptionalParameterNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1795 + # source://prism//lib/prism/inspect_visitor.rb#1798 def visit_optional_parameter_node(node); end # Inspect a OrNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1807 + # source://prism//lib/prism/inspect_visitor.rb#1810 def visit_or_node(node); end # Inspect a ParametersNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1819 + # source://prism//lib/prism/inspect_visitor.rb#1822 def visit_parameters_node(node); end # Inspect a ParenthesesNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1880 + # source://prism//lib/prism/inspect_visitor.rb#1883 def visit_parentheses_node(node); end # Inspect a PinnedExpressionNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1895 + # source://prism//lib/prism/inspect_visitor.rb#1898 def visit_pinned_expression_node(node); end # Inspect a PinnedVariableNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1907 + # source://prism//lib/prism/inspect_visitor.rb#1910 def visit_pinned_variable_node(node); end # Inspect a PostExecutionNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1917 + # source://prism//lib/prism/inspect_visitor.rb#1920 def visit_post_execution_node(node); end # Inspect a PreExecutionNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1933 + # source://prism//lib/prism/inspect_visitor.rb#1936 def visit_pre_execution_node(node); end # Inspect a ProgramNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1949 + # source://prism//lib/prism/inspect_visitor.rb#1952 def visit_program_node(node); end # Inspect a RangeNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1959 + # source://prism//lib/prism/inspect_visitor.rb#1962 def visit_range_node(node); end # Inspect a RationalNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1979 + # source://prism//lib/prism/inspect_visitor.rb#1982 def visit_rational_node(node); end # Inspect a RedoNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1988 + # source://prism//lib/prism/inspect_visitor.rb#1991 def visit_redo_node(node); end # Inspect a RegularExpressionNode node. # - # source://prism//lib/prism/inspect_visitor.rb#1995 + # source://prism//lib/prism/inspect_visitor.rb#1998 def visit_regular_expression_node(node); end # Inspect a RequiredKeywordParameterNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2006 + # source://prism//lib/prism/inspect_visitor.rb#2009 def visit_required_keyword_parameter_node(node); end # Inspect a RequiredParameterNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2015 + # source://prism//lib/prism/inspect_visitor.rb#2018 def visit_required_parameter_node(node); end # Inspect a RescueModifierNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2023 + # source://prism//lib/prism/inspect_visitor.rb#2026 def visit_rescue_modifier_node(node); end # Inspect a RescueNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2035 + # source://prism//lib/prism/inspect_visitor.rb#2038 def visit_rescue_node(node); end # Inspect a RestParameterNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2072 + # source://prism//lib/prism/inspect_visitor.rb#2075 def visit_rest_parameter_node(node); end # Inspect a RetryNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2086 + # source://prism//lib/prism/inspect_visitor.rb#2089 def visit_retry_node(node); end # Inspect a ReturnNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2093 + # source://prism//lib/prism/inspect_visitor.rb#2096 def visit_return_node(node); end # Inspect a SelfNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2107 + # source://prism//lib/prism/inspect_visitor.rb#2110 def visit_self_node(node); end # Inspect a ShareableConstantNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2114 + # source://prism//lib/prism/inspect_visitor.rb#2117 def visit_shareable_constant_node(node); end # Inspect a SingletonClassNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2123 + # source://prism//lib/prism/inspect_visitor.rb#2126 def visit_singleton_class_node(node); end # Inspect a SourceEncodingNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2142 + # source://prism//lib/prism/inspect_visitor.rb#2145 def visit_source_encoding_node(node); end # Inspect a SourceFileNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2149 + # source://prism//lib/prism/inspect_visitor.rb#2152 def visit_source_file_node(node); end # Inspect a SourceLineNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2157 + # source://prism//lib/prism/inspect_visitor.rb#2160 def visit_source_line_node(node); end # Inspect a SplatNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2164 + # source://prism//lib/prism/inspect_visitor.rb#2167 def visit_splat_node(node); end # Inspect a StatementsNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2178 + # source://prism//lib/prism/inspect_visitor.rb#2181 def visit_statements_node(node); end # Inspect a StringNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2194 + # source://prism//lib/prism/inspect_visitor.rb#2197 def visit_string_node(node); end # Inspect a SuperNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2205 + # source://prism//lib/prism/inspect_visitor.rb#2208 def visit_super_node(node); end # Inspect a SymbolNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2227 + # source://prism//lib/prism/inspect_visitor.rb#2230 def visit_symbol_node(node); end # Inspect a TrueNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2238 + # source://prism//lib/prism/inspect_visitor.rb#2241 def visit_true_node(node); end # Inspect a UndefNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2245 + # source://prism//lib/prism/inspect_visitor.rb#2248 def visit_undef_node(node); end # Inspect a UnlessNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2262 + # source://prism//lib/prism/inspect_visitor.rb#2265 def visit_unless_node(node); end # Inspect a UntilNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2286 + # source://prism//lib/prism/inspect_visitor.rb#2289 def visit_until_node(node); end # Inspect a WhenNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2304 + # source://prism//lib/prism/inspect_visitor.rb#2307 def visit_when_node(node); end # Inspect a WhileNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2328 + # source://prism//lib/prism/inspect_visitor.rb#2331 def visit_while_node(node); end # Inspect a XStringNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2346 + # source://prism//lib/prism/inspect_visitor.rb#2349 def visit_x_string_node(node); end # Inspect a YieldNode node. # - # source://prism//lib/prism/inspect_visitor.rb#2357 + # source://prism//lib/prism/inspect_visitor.rb#2360 def visit_yield_node(node); end private # Compose a string representing the given inner location field. # - # source://prism//lib/prism/inspect_visitor.rb#2381 + # source://prism//lib/prism/inspect_visitor.rb#2384 def inspect_location(location); end # Compose a header for the given node. # - # source://prism//lib/prism/inspect_visitor.rb#2375 + # source://prism//lib/prism/inspect_visitor.rb#2378 def inspect_node(name, node); end class << self # Compose an inspect string for the given node. # - # source://prism//lib/prism/inspect_visitor.rb#41 + # source://prism//lib/prism/inspect_visitor.rb#44 sig { params(node: Prism::Node).returns(String) } def compose(node); end end @@ -20025,14 +19988,14 @@ end # when we hit an element in that list. In this case, we have a special # command that replaces the subsequent indent with the given value. # -# source://prism//lib/prism/inspect_visitor.rb#17 +# source://prism//lib/prism/inspect_visitor.rb#20 class Prism::InspectVisitor::Replace # @return [Replace] a new instance of Replace # - # source://prism//lib/prism/inspect_visitor.rb#20 + # source://prism//lib/prism/inspect_visitor.rb#23 def initialize(value); end - # source://prism//lib/prism/inspect_visitor.rb#18 + # source://prism//lib/prism/inspect_visitor.rb#21 def value; end end @@ -20041,13 +20004,13 @@ end # @target &&= value # ^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#9768 +# source://prism//lib/prism/node.rb#9870 class Prism::InstanceVariableAndWriteNode < ::Prism::Node # Initialize a new InstanceVariableAndWriteNode node. # # @return [InstanceVariableAndWriteNode] a new instance of InstanceVariableAndWriteNode # - # source://prism//lib/prism/node.rb#9770 + # source://prism//lib/prism/node.rb#9872 sig do params( source: Prism::Source, @@ -20065,36 +20028,36 @@ class Prism::InstanceVariableAndWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#9868 + # source://prism//lib/prism/node.rb#9970 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#9782 + # source://prism//lib/prism/node.rb#9884 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#9787 + # source://prism//lib/prism/node.rb#9889 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#9797 + # source://prism//lib/prism/node.rb#9899 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#9792 + # source://prism//lib/prism/node.rb#9894 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?operator_loc: Location, ?value: Prism::node) -> InstanceVariableAndWriteNode # - # source://prism//lib/prism/node.rb#9802 + # source://prism//lib/prism/node.rb#9904 sig do params( node_id: Integer, @@ -20108,20 +20071,20 @@ class Prism::InstanceVariableAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#9787 + # source://prism//lib/prism/node.rb#9889 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#9810 + # source://prism//lib/prism/node.rb#9912 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#218 + # source://prism//lib/prism/desugar_compiler.rb#219 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -20129,62 +20092,62 @@ class Prism::InstanceVariableAndWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#9852 + # source://prism//lib/prism/node.rb#9954 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#9815 + # source://prism//lib/prism/node.rb#9917 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#9818 + # source://prism//lib/prism/node.rb#9920 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#9847 + # source://prism//lib/prism/node.rb#9949 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#9831 + # source://prism//lib/prism/node.rb#9933 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9826 + # source://prism//lib/prism/node.rb#9928 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9839 + # source://prism//lib/prism/node.rb#9941 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#9857 + # source://prism//lib/prism/node.rb#9959 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#9844 + # source://prism//lib/prism/node.rb#9946 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#9862 + # source://prism//lib/prism/node.rb#9964 def type; end end end @@ -20194,13 +20157,13 @@ end # @target += value # ^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#9881 +# source://prism//lib/prism/node.rb#9983 class Prism::InstanceVariableOperatorWriteNode < ::Prism::Node # Initialize a new InstanceVariableOperatorWriteNode node. # # @return [InstanceVariableOperatorWriteNode] a new instance of InstanceVariableOperatorWriteNode # - # source://prism//lib/prism/node.rb#9883 + # source://prism//lib/prism/node.rb#9985 sig do params( source: Prism::Source, @@ -20219,48 +20182,48 @@ class Prism::InstanceVariableOperatorWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#9980 + # source://prism//lib/prism/node.rb#10082 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#9896 + # source://prism//lib/prism/node.rb#9998 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader binary_operator: Symbol # - # source://prism//lib/prism/node.rb#9961 + # source://prism//lib/prism/node.rb#10063 sig { returns(Symbol) } def binary_operator; end # attr_reader binary_operator_loc: Location # - # source://prism//lib/prism/node.rb#9945 + # source://prism//lib/prism/node.rb#10047 sig { returns(Prism::Location) } def binary_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#9901 + # source://prism//lib/prism/node.rb#10003 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#9911 + # source://prism//lib/prism/node.rb#10013 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#9906 + # source://prism//lib/prism/node.rb#10008 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?binary_operator_loc: Location, ?value: Prism::node, ?binary_operator: Symbol) -> InstanceVariableOperatorWriteNode # - # source://prism//lib/prism/node.rb#9916 + # source://prism//lib/prism/node.rb#10018 sig do params( node_id: Integer, @@ -20275,20 +20238,20 @@ class Prism::InstanceVariableOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#9901 + # source://prism//lib/prism/node.rb#10003 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, binary_operator_loc: Location, value: Prism::node, binary_operator: Symbol } # - # source://prism//lib/prism/node.rb#9924 + # source://prism//lib/prism/node.rb#10026 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#230 + # source://prism//lib/prism/desugar_compiler.rb#231 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -20296,62 +20259,62 @@ class Prism::InstanceVariableOperatorWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#9964 + # source://prism//lib/prism/node.rb#10066 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#9929 + # source://prism//lib/prism/node.rb#10031 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#9932 + # source://prism//lib/prism/node.rb#10034 sig { returns(Prism::Location) } def name_loc; end # Returns the binary operator used to modify the receiver. This method is # deprecated in favor of #binary_operator. # - # source://prism//lib/prism/node_ext.rb#435 + # source://prism//lib/prism/node_ext.rb#438 def operator; end # Returns the location of the binary operator used to modify the receiver. # This method is deprecated in favor of #binary_operator_loc. # - # source://prism//lib/prism/node_ext.rb#442 + # source://prism//lib/prism/node_ext.rb#445 def operator_loc; end # Save the binary_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9953 + # source://prism//lib/prism/node.rb#10055 def save_binary_operator_loc(repository); end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#9940 + # source://prism//lib/prism/node.rb#10042 def save_name_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#9969 + # source://prism//lib/prism/node.rb#10071 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#9958 + # source://prism//lib/prism/node.rb#10060 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#9974 + # source://prism//lib/prism/node.rb#10076 def type; end end end @@ -20361,13 +20324,13 @@ end # @target ||= value # ^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#9994 +# source://prism//lib/prism/node.rb#10096 class Prism::InstanceVariableOrWriteNode < ::Prism::Node # Initialize a new InstanceVariableOrWriteNode node. # # @return [InstanceVariableOrWriteNode] a new instance of InstanceVariableOrWriteNode # - # source://prism//lib/prism/node.rb#9996 + # source://prism//lib/prism/node.rb#10098 sig do params( source: Prism::Source, @@ -20385,36 +20348,36 @@ class Prism::InstanceVariableOrWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#10094 + # source://prism//lib/prism/node.rb#10196 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#10008 + # source://prism//lib/prism/node.rb#10110 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10013 + # source://prism//lib/prism/node.rb#10115 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#10023 + # source://prism//lib/prism/node.rb#10125 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#10018 + # source://prism//lib/prism/node.rb#10120 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?operator_loc: Location, ?value: Prism::node) -> InstanceVariableOrWriteNode # - # source://prism//lib/prism/node.rb#10028 + # source://prism//lib/prism/node.rb#10130 sig do params( node_id: Integer, @@ -20428,20 +20391,20 @@ class Prism::InstanceVariableOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10013 + # source://prism//lib/prism/node.rb#10115 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#10036 + # source://prism//lib/prism/node.rb#10138 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#224 + # source://prism//lib/prism/desugar_compiler.rb#225 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -20449,62 +20412,62 @@ class Prism::InstanceVariableOrWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#10078 + # source://prism//lib/prism/node.rb#10180 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#10041 + # source://prism//lib/prism/node.rb#10143 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#10044 + # source://prism//lib/prism/node.rb#10146 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#10073 + # source://prism//lib/prism/node.rb#10175 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#10057 + # source://prism//lib/prism/node.rb#10159 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#10052 + # source://prism//lib/prism/node.rb#10154 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#10065 + # source://prism//lib/prism/node.rb#10167 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#10083 + # source://prism//lib/prism/node.rb#10185 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#10070 + # source://prism//lib/prism/node.rb#10172 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#10088 + # source://prism//lib/prism/node.rb#10190 def type; end end end @@ -20514,49 +20477,49 @@ end # @foo # ^^^^ # -# source://prism//lib/prism/node.rb#10107 +# source://prism//lib/prism/node.rb#10209 class Prism::InstanceVariableReadNode < ::Prism::Node # Initialize a new InstanceVariableReadNode node. # # @return [InstanceVariableReadNode] a new instance of InstanceVariableReadNode # - # source://prism//lib/prism/node.rb#10109 + # source://prism//lib/prism/node.rb#10211 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#10174 + # source://prism//lib/prism/node.rb#10276 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#10118 + # source://prism//lib/prism/node.rb#10220 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10123 + # source://prism//lib/prism/node.rb#10225 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#10133 + # source://prism//lib/prism/node.rb#10235 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#10128 + # source://prism//lib/prism/node.rb#10230 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol) -> InstanceVariableReadNode # - # source://prism//lib/prism/node.rb#10138 + # source://prism//lib/prism/node.rb#10240 sig do params( node_id: Integer, @@ -20567,16 +20530,16 @@ class Prism::InstanceVariableReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10123 + # source://prism//lib/prism/node.rb#10225 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#10146 + # source://prism//lib/prism/node.rb#10248 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -20585,7 +20548,7 @@ class Prism::InstanceVariableReadNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#10158 + # source://prism//lib/prism/node.rb#10260 sig { override.returns(String) } def inspect; end @@ -20595,20 +20558,20 @@ class Prism::InstanceVariableReadNode < ::Prism::Node # # @_test # name `:@_test` # - # source://prism//lib/prism/node.rb#10155 + # source://prism//lib/prism/node.rb#10257 sig { returns(Symbol) } def name; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#10163 + # source://prism//lib/prism/node.rb#10265 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#10168 + # source://prism//lib/prism/node.rb#10270 def type; end end end @@ -20618,49 +20581,49 @@ end # @foo, @bar = baz # ^^^^ ^^^^ # -# source://prism//lib/prism/node.rb#10184 +# source://prism//lib/prism/node.rb#10286 class Prism::InstanceVariableTargetNode < ::Prism::Node # Initialize a new InstanceVariableTargetNode node. # # @return [InstanceVariableTargetNode] a new instance of InstanceVariableTargetNode # - # source://prism//lib/prism/node.rb#10186 + # source://prism//lib/prism/node.rb#10288 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#10247 + # source://prism//lib/prism/node.rb#10349 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#10195 + # source://prism//lib/prism/node.rb#10297 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10200 + # source://prism//lib/prism/node.rb#10302 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#10210 + # source://prism//lib/prism/node.rb#10312 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#10205 + # source://prism//lib/prism/node.rb#10307 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol) -> InstanceVariableTargetNode # - # source://prism//lib/prism/node.rb#10215 + # source://prism//lib/prism/node.rb#10317 sig do params( node_id: Integer, @@ -20671,16 +20634,16 @@ class Prism::InstanceVariableTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10200 + # source://prism//lib/prism/node.rb#10302 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#10223 + # source://prism//lib/prism/node.rb#10325 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -20689,26 +20652,26 @@ class Prism::InstanceVariableTargetNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#10231 + # source://prism//lib/prism/node.rb#10333 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#10228 + # source://prism//lib/prism/node.rb#10330 sig { returns(Symbol) } def name; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#10236 + # source://prism//lib/prism/node.rb#10338 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#10241 + # source://prism//lib/prism/node.rb#10343 def type; end end end @@ -20718,13 +20681,13 @@ end # @foo = 1 # ^^^^^^^^ # -# source://prism//lib/prism/node.rb#10257 +# source://prism//lib/prism/node.rb#10359 class Prism::InstanceVariableWriteNode < ::Prism::Node # Initialize a new InstanceVariableWriteNode node. # # @return [InstanceVariableWriteNode] a new instance of InstanceVariableWriteNode # - # source://prism//lib/prism/node.rb#10259 + # source://prism//lib/prism/node.rb#10361 sig do params( source: Prism::Source, @@ -20742,36 +20705,36 @@ class Prism::InstanceVariableWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#10373 + # source://prism//lib/prism/node.rb#10475 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#10271 + # source://prism//lib/prism/node.rb#10373 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10276 + # source://prism//lib/prism/node.rb#10378 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#10286 + # source://prism//lib/prism/node.rb#10388 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#10281 + # source://prism//lib/prism/node.rb#10383 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?value: Prism::node, ?operator_loc: Location) -> InstanceVariableWriteNode # - # source://prism//lib/prism/node.rb#10291 + # source://prism//lib/prism/node.rb#10393 sig do params( node_id: Integer, @@ -20785,16 +20748,16 @@ class Prism::InstanceVariableWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10276 + # source://prism//lib/prism/node.rb#10378 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node, operator_loc: Location } # - # source://prism//lib/prism/node.rb#10299 + # source://prism//lib/prism/node.rb#10401 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -20803,7 +20766,7 @@ class Prism::InstanceVariableWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#10357 + # source://prism//lib/prism/node.rb#10459 sig { override.returns(String) } def inspect; end @@ -20813,7 +20776,7 @@ class Prism::InstanceVariableWriteNode < ::Prism::Node # # @_foo = "bar" # name `@_foo` # - # source://prism//lib/prism/node.rb#10308 + # source://prism//lib/prism/node.rb#10410 sig { returns(Symbol) } def name; end @@ -20822,13 +20785,13 @@ class Prism::InstanceVariableWriteNode < ::Prism::Node # @_x = 1 # ^^^ # - # source://prism//lib/prism/node.rb#10314 + # source://prism//lib/prism/node.rb#10416 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#10352 + # source://prism//lib/prism/node.rb#10454 sig { returns(String) } def operator; end @@ -20837,25 +20800,25 @@ class Prism::InstanceVariableWriteNode < ::Prism::Node # @x = y # ^ # - # source://prism//lib/prism/node.rb#10339 + # source://prism//lib/prism/node.rb#10441 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#10322 + # source://prism//lib/prism/node.rb#10424 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#10347 + # source://prism//lib/prism/node.rb#10449 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#10362 + # source://prism//lib/prism/node.rb#10464 sig { override.returns(Symbol) } def type; end @@ -20867,41 +20830,41 @@ class Prism::InstanceVariableWriteNode < ::Prism::Node # @_x = 1234 # ^^^^ # - # source://prism//lib/prism/node.rb#10333 + # source://prism//lib/prism/node.rb#10435 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#10367 + # source://prism//lib/prism/node.rb#10469 def type; end end end # Flags for integer nodes that correspond to the base of the integer. # -# source://prism//lib/prism/node.rb#18507 +# source://prism//lib/prism/node.rb#18678 module Prism::IntegerBaseFlags; end # 0b prefix # -# source://prism//lib/prism/node.rb#18509 +# source://prism//lib/prism/node.rb#18680 Prism::IntegerBaseFlags::BINARY = T.let(T.unsafe(nil), Integer) # 0d or no prefix # -# source://prism//lib/prism/node.rb#18512 +# source://prism//lib/prism/node.rb#18683 Prism::IntegerBaseFlags::DECIMAL = T.let(T.unsafe(nil), Integer) # 0x prefix # -# source://prism//lib/prism/node.rb#18518 +# source://prism//lib/prism/node.rb#18689 Prism::IntegerBaseFlags::HEXADECIMAL = T.let(T.unsafe(nil), Integer) # 0o or 0 prefix # -# source://prism//lib/prism/node.rb#18515 +# source://prism//lib/prism/node.rb#18686 Prism::IntegerBaseFlags::OCTAL = T.let(T.unsafe(nil), Integer) # Represents an integer number literal. @@ -20909,13 +20872,13 @@ Prism::IntegerBaseFlags::OCTAL = T.let(T.unsafe(nil), Integer) # 1 # ^ # -# source://prism//lib/prism/node.rb#10386 +# source://prism//lib/prism/node.rb#10488 class Prism::IntegerNode < ::Prism::Node # Initialize a new IntegerNode node. # # @return [IntegerNode] a new instance of IntegerNode # - # source://prism//lib/prism/node.rb#10388 + # source://prism//lib/prism/node.rb#10490 sig do params( source: Prism::Source, @@ -20930,12 +20893,12 @@ class Prism::IntegerNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#10469 + # source://prism//lib/prism/node.rb#10571 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#10397 + # source://prism//lib/prism/node.rb#10499 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -20943,31 +20906,31 @@ class Prism::IntegerNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10430 + # source://prism//lib/prism/node.rb#10532 sig { returns(T::Boolean) } def binary?; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10402 + # source://prism//lib/prism/node.rb#10504 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#10412 + # source://prism//lib/prism/node.rb#10514 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#10407 + # source://prism//lib/prism/node.rb#10509 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?value: Integer) -> IntegerNode # - # source://prism//lib/prism/node.rb#10417 + # source://prism//lib/prism/node.rb#10519 sig do params( node_id: Integer, @@ -20982,20 +20945,20 @@ class Prism::IntegerNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10435 + # source://prism//lib/prism/node.rb#10537 sig { returns(T::Boolean) } def decimal?; end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10402 + # source://prism//lib/prism/node.rb#10504 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Integer } # - # source://prism//lib/prism/node.rb#10425 + # source://prism//lib/prism/node.rb#10527 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -21006,13 +20969,13 @@ class Prism::IntegerNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10445 + # source://prism//lib/prism/node.rb#10547 sig { returns(T::Boolean) } def hexadecimal?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#10453 + # source://prism//lib/prism/node.rb#10555 sig { override.returns(String) } def inspect; end @@ -21020,26 +20983,26 @@ class Prism::IntegerNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10440 + # source://prism//lib/prism/node.rb#10542 sig { returns(T::Boolean) } def octal?; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#10458 + # source://prism//lib/prism/node.rb#10560 sig { override.returns(Symbol) } def type; end # The value of the integer literal as a number. # - # source://prism//lib/prism/node.rb#10450 + # source://prism//lib/prism/node.rb#10552 sig { returns(Integer) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#10463 + # source://prism//lib/prism/node.rb#10565 def type; end end end @@ -21049,7 +21012,7 @@ end # if /foo #{bar} baz/ then end # ^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#10480 +# source://prism//lib/prism/node.rb#10582 class Prism::InterpolatedMatchLastLineNode < ::Prism::Node include ::Prism::RegularExpressionOptions @@ -21057,7 +21020,7 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # # @return [InterpolatedMatchLastLineNode] a new instance of InterpolatedMatchLastLineNode # - # source://prism//lib/prism/node.rb#10482 + # source://prism//lib/prism/node.rb#10584 sig do params( source: Prism::Source, @@ -21074,12 +21037,12 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#10636 + # source://prism//lib/prism/node.rb#10738 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#10493 + # source://prism//lib/prism/node.rb#10595 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -21087,43 +21050,43 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10551 + # source://prism//lib/prism/node.rb#10653 sig { returns(T::Boolean) } def ascii_8bit?; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10498 + # source://prism//lib/prism/node.rb#10600 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#10615 + # source://prism//lib/prism/node.rb#10717 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#10597 + # source://prism//lib/prism/node.rb#10699 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#10508 + # source://prism//lib/prism/node.rb#10610 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#10503 + # source://prism//lib/prism/node.rb#10605 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], ?closing_loc: Location) -> InterpolatedMatchLastLineNode # - # source://prism//lib/prism/node.rb#10513 + # source://prism//lib/prism/node.rb#10615 sig do params( node_id: Integer, @@ -21136,16 +21099,16 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10498 + # source://prism//lib/prism/node.rb#10600 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], closing_loc: Location } # - # source://prism//lib/prism/node.rb#10521 + # source://prism//lib/prism/node.rb#10623 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -21153,7 +21116,7 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10546 + # source://prism//lib/prism/node.rb#10648 sig { returns(T::Boolean) } def euc_jp?; end @@ -21161,7 +21124,7 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10531 + # source://prism//lib/prism/node.rb#10633 sig { returns(T::Boolean) } def extended?; end @@ -21172,7 +21135,7 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10571 + # source://prism//lib/prism/node.rb#10673 sig { returns(T::Boolean) } def forced_binary_encoding?; end @@ -21180,7 +21143,7 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10576 + # source://prism//lib/prism/node.rb#10678 sig { returns(T::Boolean) } def forced_us_ascii_encoding?; end @@ -21188,7 +21151,7 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10566 + # source://prism//lib/prism/node.rb#10668 sig { returns(T::Boolean) } def forced_utf8_encoding?; end @@ -21196,13 +21159,13 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10526 + # source://prism//lib/prism/node.rb#10628 sig { returns(T::Boolean) } def ignore_case?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#10620 + # source://prism//lib/prism/node.rb#10722 sig { override.returns(String) } def inspect; end @@ -21210,30 +21173,30 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10536 + # source://prism//lib/prism/node.rb#10638 sig { returns(T::Boolean) } def multi_line?; end - # source://prism//lib/prism/parse_result/newlines.rb#121 + # source://prism//lib/prism/parse_result/newlines.rb#122 def newline_flag!(lines); end # def once?: () -> bool # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10541 + # source://prism//lib/prism/node.rb#10643 sig { returns(T::Boolean) } def once?; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#10610 + # source://prism//lib/prism/node.rb#10712 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#10581 + # source://prism//lib/prism/node.rb#10683 sig { returns(Prism::Location) } def opening_loc; end @@ -21242,25 +21205,25 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # attr_reader parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode] # - # source://prism//lib/prism/node.rb#10594 + # source://prism//lib/prism/node.rb#10696 sig { returns(T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode)]) } def parts; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#10605 + # source://prism//lib/prism/node.rb#10707 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#10589 + # source://prism//lib/prism/node.rb#10691 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#10625 + # source://prism//lib/prism/node.rb#10727 sig { override.returns(Symbol) } def type; end @@ -21268,7 +21231,7 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10561 + # source://prism//lib/prism/node.rb#10663 sig { returns(T::Boolean) } def utf_8?; end @@ -21276,14 +21239,14 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10556 + # source://prism//lib/prism/node.rb#10658 sig { returns(T::Boolean) } def windows_31j?; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#10630 + # source://prism//lib/prism/node.rb#10732 def type; end end end @@ -21293,7 +21256,7 @@ end # /foo #{bar} baz/ # ^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#10650 +# source://prism//lib/prism/node.rb#10752 class Prism::InterpolatedRegularExpressionNode < ::Prism::Node include ::Prism::RegularExpressionOptions @@ -21301,7 +21264,7 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # # @return [InterpolatedRegularExpressionNode] a new instance of InterpolatedRegularExpressionNode # - # source://prism//lib/prism/node.rb#10652 + # source://prism//lib/prism/node.rb#10754 sig do params( source: Prism::Source, @@ -21318,12 +21281,12 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#10806 + # source://prism//lib/prism/node.rb#10908 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#10663 + # source://prism//lib/prism/node.rb#10765 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -21331,43 +21294,43 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10721 + # source://prism//lib/prism/node.rb#10823 sig { returns(T::Boolean) } def ascii_8bit?; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10668 + # source://prism//lib/prism/node.rb#10770 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#10785 + # source://prism//lib/prism/node.rb#10887 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#10767 + # source://prism//lib/prism/node.rb#10869 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#10678 + # source://prism//lib/prism/node.rb#10780 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#10673 + # source://prism//lib/prism/node.rb#10775 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], ?closing_loc: Location) -> InterpolatedRegularExpressionNode # - # source://prism//lib/prism/node.rb#10683 + # source://prism//lib/prism/node.rb#10785 sig do params( node_id: Integer, @@ -21380,16 +21343,16 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10668 + # source://prism//lib/prism/node.rb#10770 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], closing_loc: Location } # - # source://prism//lib/prism/node.rb#10691 + # source://prism//lib/prism/node.rb#10793 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -21397,7 +21360,7 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10716 + # source://prism//lib/prism/node.rb#10818 sig { returns(T::Boolean) } def euc_jp?; end @@ -21405,7 +21368,7 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10701 + # source://prism//lib/prism/node.rb#10803 sig { returns(T::Boolean) } def extended?; end @@ -21416,7 +21379,7 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10741 + # source://prism//lib/prism/node.rb#10843 sig { returns(T::Boolean) } def forced_binary_encoding?; end @@ -21424,7 +21387,7 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10746 + # source://prism//lib/prism/node.rb#10848 sig { returns(T::Boolean) } def forced_us_ascii_encoding?; end @@ -21432,7 +21395,7 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10736 + # source://prism//lib/prism/node.rb#10838 sig { returns(T::Boolean) } def forced_utf8_encoding?; end @@ -21440,13 +21403,13 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10696 + # source://prism//lib/prism/node.rb#10798 sig { returns(T::Boolean) } def ignore_case?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#10790 + # source://prism//lib/prism/node.rb#10892 sig { override.returns(String) } def inspect; end @@ -21454,30 +21417,30 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10706 + # source://prism//lib/prism/node.rb#10808 sig { returns(T::Boolean) } def multi_line?; end - # source://prism//lib/prism/parse_result/newlines.rb#128 + # source://prism//lib/prism/parse_result/newlines.rb#129 def newline_flag!(lines); end # def once?: () -> bool # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10711 + # source://prism//lib/prism/node.rb#10813 sig { returns(T::Boolean) } def once?; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#10780 + # source://prism//lib/prism/node.rb#10882 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#10751 + # source://prism//lib/prism/node.rb#10853 sig { returns(Prism::Location) } def opening_loc; end @@ -21486,25 +21449,25 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # attr_reader parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode] # - # source://prism//lib/prism/node.rb#10764 + # source://prism//lib/prism/node.rb#10866 sig { returns(T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode)]) } def parts; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#10775 + # source://prism//lib/prism/node.rb#10877 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#10759 + # source://prism//lib/prism/node.rb#10861 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#10795 + # source://prism//lib/prism/node.rb#10897 sig { override.returns(Symbol) } def type; end @@ -21512,7 +21475,7 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10731 + # source://prism//lib/prism/node.rb#10833 sig { returns(T::Boolean) } def utf_8?; end @@ -21520,14 +21483,14 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10726 + # source://prism//lib/prism/node.rb#10828 sig { returns(T::Boolean) } def windows_31j?; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#10800 + # source://prism//lib/prism/node.rb#10902 def type; end end end @@ -21537,7 +21500,7 @@ end # "foo #{bar} baz" # ^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#10820 +# source://prism//lib/prism/node.rb#10922 class Prism::InterpolatedStringNode < ::Prism::Node include ::Prism::HeredocQuery @@ -21545,7 +21508,7 @@ class Prism::InterpolatedStringNode < ::Prism::Node # # @return [InterpolatedStringNode] a new instance of InterpolatedStringNode # - # source://prism//lib/prism/node.rb#10822 + # source://prism//lib/prism/node.rb#10924 sig do params( source: Prism::Source, @@ -21562,48 +21525,48 @@ class Prism::InterpolatedStringNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#10943 + # source://prism//lib/prism/node.rb#11045 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#10833 + # source://prism//lib/prism/node.rb#10935 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10838 + # source://prism//lib/prism/node.rb#10940 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String? # - # source://prism//lib/prism/node.rb#10922 + # source://prism//lib/prism/node.rb#11024 sig { returns(T.nilable(String)) } def closing; end # attr_reader closing_loc: Location? # - # source://prism//lib/prism/node.rb#10898 + # source://prism//lib/prism/node.rb#11000 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#10848 + # source://prism//lib/prism/node.rb#10950 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#10843 + # source://prism//lib/prism/node.rb#10945 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location?, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode], ?closing_loc: Location?) -> InterpolatedStringNode # - # source://prism//lib/prism/node.rb#10853 + # source://prism//lib/prism/node.rb#10955 sig do params( node_id: Integer, @@ -21616,16 +21579,16 @@ class Prism::InterpolatedStringNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10838 + # source://prism//lib/prism/node.rb#10940 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode], closing_loc: Location? } # - # source://prism//lib/prism/node.rb#10861 + # source://prism//lib/prism/node.rb#10963 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -21636,7 +21599,7 @@ class Prism::InterpolatedStringNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10866 + # source://prism//lib/prism/node.rb#10968 sig { returns(T::Boolean) } def frozen?; end @@ -21645,7 +21608,7 @@ class Prism::InterpolatedStringNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#10927 + # source://prism//lib/prism/node.rb#11029 sig { override.returns(String) } def inspect; end @@ -21653,28 +21616,28 @@ class Prism::InterpolatedStringNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#10871 + # source://prism//lib/prism/node.rb#10973 sig { returns(T::Boolean) } def mutable?; end - # source://prism//lib/prism/parse_result/newlines.rb#135 + # source://prism//lib/prism/parse_result/newlines.rb#136 def newline_flag!(lines); end # def opening: () -> String? # - # source://prism//lib/prism/node.rb#10917 + # source://prism//lib/prism/node.rb#11019 sig { returns(T.nilable(String)) } def opening; end # attr_reader opening_loc: Location? # - # source://prism//lib/prism/node.rb#10876 + # source://prism//lib/prism/node.rb#10978 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end # attr_reader parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode | InterpolatedStringNode | XStringNode] # - # source://prism//lib/prism/node.rb#10895 + # source://prism//lib/prism/node.rb#10997 sig do returns(T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode, Prism::InterpolatedStringNode, Prism::XStringNode)]) end @@ -21683,38 +21646,38 @@ class Prism::InterpolatedStringNode < ::Prism::Node # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#10912 + # source://prism//lib/prism/node.rb#11014 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#10890 + # source://prism//lib/prism/node.rb#10992 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#10932 + # source://prism//lib/prism/node.rb#11034 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#10937 + # source://prism//lib/prism/node.rb#11039 def type; end end end # Flags for interpolated string nodes that indicated mutability if they are also marked as literals. # -# source://prism//lib/prism/node.rb#18522 +# source://prism//lib/prism/node.rb#18693 module Prism::InterpolatedStringNodeFlags; end -# source://prism//lib/prism/node.rb#18524 +# source://prism//lib/prism/node.rb#18695 Prism::InterpolatedStringNodeFlags::FROZEN = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18527 +# source://prism//lib/prism/node.rb#18698 Prism::InterpolatedStringNodeFlags::MUTABLE = T.let(T.unsafe(nil), Integer) # Represents a symbol literal that contains interpolation. @@ -21722,13 +21685,13 @@ Prism::InterpolatedStringNodeFlags::MUTABLE = T.let(T.unsafe(nil), Integer) # :"foo #{bar} baz" # ^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#10957 +# source://prism//lib/prism/node.rb#11059 class Prism::InterpolatedSymbolNode < ::Prism::Node # Initialize a new InterpolatedSymbolNode node. # # @return [InterpolatedSymbolNode] a new instance of InterpolatedSymbolNode # - # source://prism//lib/prism/node.rb#10959 + # source://prism//lib/prism/node.rb#11061 sig do params( source: Prism::Source, @@ -21745,48 +21708,48 @@ class Prism::InterpolatedSymbolNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#11070 + # source://prism//lib/prism/node.rb#11172 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#10970 + # source://prism//lib/prism/node.rb#11072 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10975 + # source://prism//lib/prism/node.rb#11077 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String? # - # source://prism//lib/prism/node.rb#11049 + # source://prism//lib/prism/node.rb#11151 sig { returns(T.nilable(String)) } def closing; end # attr_reader closing_loc: Location? # - # source://prism//lib/prism/node.rb#11025 + # source://prism//lib/prism/node.rb#11127 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#10985 + # source://prism//lib/prism/node.rb#11087 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#10980 + # source://prism//lib/prism/node.rb#11082 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location?, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], ?closing_loc: Location?) -> InterpolatedSymbolNode # - # source://prism//lib/prism/node.rb#10990 + # source://prism//lib/prism/node.rb#11092 sig do params( node_id: Integer, @@ -21799,16 +21762,16 @@ class Prism::InterpolatedSymbolNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#10975 + # source://prism//lib/prism/node.rb#11077 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], closing_loc: Location? } # - # source://prism//lib/prism/node.rb#10998 + # source://prism//lib/prism/node.rb#11100 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -21817,53 +21780,53 @@ class Prism::InterpolatedSymbolNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#11054 + # source://prism//lib/prism/node.rb#11156 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/parse_result/newlines.rb#142 + # source://prism//lib/prism/parse_result/newlines.rb#143 def newline_flag!(lines); end # def opening: () -> String? # - # source://prism//lib/prism/node.rb#11044 + # source://prism//lib/prism/node.rb#11146 sig { returns(T.nilable(String)) } def opening; end # attr_reader opening_loc: Location? # - # source://prism//lib/prism/node.rb#11003 + # source://prism//lib/prism/node.rb#11105 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end # attr_reader parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode] # - # source://prism//lib/prism/node.rb#11022 + # source://prism//lib/prism/node.rb#11124 sig { returns(T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode)]) } def parts; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11039 + # source://prism//lib/prism/node.rb#11141 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11017 + # source://prism//lib/prism/node.rb#11119 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#11059 + # source://prism//lib/prism/node.rb#11161 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#11064 + # source://prism//lib/prism/node.rb#11166 def type; end end end @@ -21873,7 +21836,7 @@ end # `foo #{bar} baz` # ^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#11083 +# source://prism//lib/prism/node.rb#11185 class Prism::InterpolatedXStringNode < ::Prism::Node include ::Prism::HeredocQuery @@ -21881,7 +21844,7 @@ class Prism::InterpolatedXStringNode < ::Prism::Node # # @return [InterpolatedXStringNode] a new instance of InterpolatedXStringNode # - # source://prism//lib/prism/node.rb#11085 + # source://prism//lib/prism/node.rb#11187 sig do params( source: Prism::Source, @@ -21898,48 +21861,48 @@ class Prism::InterpolatedXStringNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#11184 + # source://prism//lib/prism/node.rb#11286 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#11096 + # source://prism//lib/prism/node.rb#11198 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11101 + # source://prism//lib/prism/node.rb#11203 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#11163 + # source://prism//lib/prism/node.rb#11265 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#11145 + # source://prism//lib/prism/node.rb#11247 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#11111 + # source://prism//lib/prism/node.rb#11213 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#11106 + # source://prism//lib/prism/node.rb#11208 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location, ?parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], ?closing_loc: Location) -> InterpolatedXStringNode # - # source://prism//lib/prism/node.rb#11116 + # source://prism//lib/prism/node.rb#11218 sig do params( node_id: Integer, @@ -21952,16 +21915,16 @@ class Prism::InterpolatedXStringNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11101 + # source://prism//lib/prism/node.rb#11203 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode], closing_loc: Location } # - # source://prism//lib/prism/node.rb#11124 + # source://prism//lib/prism/node.rb#11226 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -21973,53 +21936,53 @@ class Prism::InterpolatedXStringNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#11168 + # source://prism//lib/prism/node.rb#11270 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/parse_result/newlines.rb#149 + # source://prism//lib/prism/parse_result/newlines.rb#150 def newline_flag!(lines); end # def opening: () -> String # - # source://prism//lib/prism/node.rb#11158 + # source://prism//lib/prism/node.rb#11260 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#11129 + # source://prism//lib/prism/node.rb#11231 sig { returns(Prism::Location) } def opening_loc; end # attr_reader parts: Array[StringNode | EmbeddedStatementsNode | EmbeddedVariableNode] # - # source://prism//lib/prism/node.rb#11142 + # source://prism//lib/prism/node.rb#11244 sig { returns(T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode)]) } def parts; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11153 + # source://prism//lib/prism/node.rb#11255 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11137 + # source://prism//lib/prism/node.rb#11239 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#11173 + # source://prism//lib/prism/node.rb#11275 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#11178 + # source://prism//lib/prism/node.rb#11280 def type; end end end @@ -22029,62 +21992,62 @@ end # -> { it } # ^^ # -# source://prism//lib/prism/node.rb#11197 +# source://prism//lib/prism/node.rb#11299 class Prism::ItLocalVariableReadNode < ::Prism::Node # Initialize a new ItLocalVariableReadNode node. # # @return [ItLocalVariableReadNode] a new instance of ItLocalVariableReadNode # - # source://prism//lib/prism/node.rb#11199 + # source://prism//lib/prism/node.rb#11301 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#11256 + # source://prism//lib/prism/node.rb#11358 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#11207 + # source://prism//lib/prism/node.rb#11309 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11212 + # source://prism//lib/prism/node.rb#11314 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#11222 + # source://prism//lib/prism/node.rb#11324 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#11217 + # source://prism//lib/prism/node.rb#11319 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> ItLocalVariableReadNode # - # source://prism//lib/prism/node.rb#11227 + # source://prism//lib/prism/node.rb#11329 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::ItLocalVariableReadNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11212 + # source://prism//lib/prism/node.rb#11314 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#11235 + # source://prism//lib/prism/node.rb#11337 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -22093,20 +22056,20 @@ class Prism::ItLocalVariableReadNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#11240 + # source://prism//lib/prism/node.rb#11342 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#11245 + # source://prism//lib/prism/node.rb#11347 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#11250 + # source://prism//lib/prism/node.rb#11352 def type; end end end @@ -22116,62 +22079,62 @@ end # -> { it + it } # ^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#11265 +# source://prism//lib/prism/node.rb#11367 class Prism::ItParametersNode < ::Prism::Node # Initialize a new ItParametersNode node. # # @return [ItParametersNode] a new instance of ItParametersNode # - # source://prism//lib/prism/node.rb#11267 + # source://prism//lib/prism/node.rb#11369 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#11324 + # source://prism//lib/prism/node.rb#11426 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#11275 + # source://prism//lib/prism/node.rb#11377 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11280 + # source://prism//lib/prism/node.rb#11382 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#11290 + # source://prism//lib/prism/node.rb#11392 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#11285 + # source://prism//lib/prism/node.rb#11387 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> ItParametersNode # - # source://prism//lib/prism/node.rb#11295 + # source://prism//lib/prism/node.rb#11397 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::ItParametersNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11280 + # source://prism//lib/prism/node.rb#11382 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#11303 + # source://prism//lib/prism/node.rb#11405 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -22180,20 +22143,20 @@ class Prism::ItParametersNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#11308 + # source://prism//lib/prism/node.rb#11410 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#11313 + # source://prism//lib/prism/node.rb#11415 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#11318 + # source://prism//lib/prism/node.rb#11420 def type; end end end @@ -22203,13 +22166,13 @@ end # foo(a: b) # ^^^^ # -# source://prism//lib/prism/node.rb#11333 +# source://prism//lib/prism/node.rb#11435 class Prism::KeywordHashNode < ::Prism::Node # Initialize a new KeywordHashNode node. # # @return [KeywordHashNode] a new instance of KeywordHashNode # - # source://prism//lib/prism/node.rb#11335 + # source://prism//lib/prism/node.rb#11437 sig do params( source: Prism::Source, @@ -22224,36 +22187,36 @@ class Prism::KeywordHashNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#11401 + # source://prism//lib/prism/node.rb#11503 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#11344 + # source://prism//lib/prism/node.rb#11446 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11349 + # source://prism//lib/prism/node.rb#11451 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#11359 + # source://prism//lib/prism/node.rb#11461 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#11354 + # source://prism//lib/prism/node.rb#11456 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?elements: Array[AssocNode | AssocSplatNode]) -> KeywordHashNode # - # source://prism//lib/prism/node.rb#11364 + # source://prism//lib/prism/node.rb#11466 sig do params( node_id: Integer, @@ -22264,22 +22227,22 @@ class Prism::KeywordHashNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), elements: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11349 + # source://prism//lib/prism/node.rb#11451 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, elements: Array[AssocNode | AssocSplatNode] } # - # source://prism//lib/prism/node.rb#11372 + # source://prism//lib/prism/node.rb#11474 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # attr_reader elements: Array[AssocNode | AssocSplatNode] # - # source://prism//lib/prism/node.rb#11382 + # source://prism//lib/prism/node.rb#11484 sig { returns(T::Array[T.any(Prism::AssocNode, Prism::AssocSplatNode)]) } def elements; end @@ -22288,7 +22251,7 @@ class Prism::KeywordHashNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#11385 + # source://prism//lib/prism/node.rb#11487 sig { override.returns(String) } def inspect; end @@ -22296,32 +22259,32 @@ class Prism::KeywordHashNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#11377 + # source://prism//lib/prism/node.rb#11479 sig { returns(T::Boolean) } def symbol_keys?; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#11390 + # source://prism//lib/prism/node.rb#11492 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#11395 + # source://prism//lib/prism/node.rb#11497 def type; end end end # Flags for keyword hash nodes. # -# source://prism//lib/prism/node.rb#18531 +# source://prism//lib/prism/node.rb#18702 module Prism::KeywordHashNodeFlags; end # a keyword hash which only has `AssocNode` elements all with symbol keys, which means the elements can be treated as keyword arguments # -# source://prism//lib/prism/node.rb#18533 +# source://prism//lib/prism/node.rb#18704 Prism::KeywordHashNodeFlags::SYMBOL_KEYS = T.let(T.unsafe(nil), Integer) # Represents a keyword rest parameter to a method, block, or lambda definition. @@ -22330,13 +22293,13 @@ Prism::KeywordHashNodeFlags::SYMBOL_KEYS = T.let(T.unsafe(nil), Integer) # ^^^ # end # -# source://prism//lib/prism/node.rb#11414 +# source://prism//lib/prism/node.rb#11516 class Prism::KeywordRestParameterNode < ::Prism::Node # Initialize a new KeywordRestParameterNode node. # # @return [KeywordRestParameterNode] a new instance of KeywordRestParameterNode # - # source://prism//lib/prism/node.rb#11416 + # source://prism//lib/prism/node.rb#11518 sig do params( source: Prism::Source, @@ -22353,36 +22316,36 @@ class Prism::KeywordRestParameterNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#11521 + # source://prism//lib/prism/node.rb#11623 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#11427 + # source://prism//lib/prism/node.rb#11529 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11432 + # source://prism//lib/prism/node.rb#11534 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#11442 + # source://prism//lib/prism/node.rb#11544 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#11437 + # source://prism//lib/prism/node.rb#11539 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol?, ?name_loc: Location?, ?operator_loc: Location) -> KeywordRestParameterNode # - # source://prism//lib/prism/node.rb#11447 + # source://prism//lib/prism/node.rb#11549 sig do params( node_id: Integer, @@ -22395,16 +22358,16 @@ class Prism::KeywordRestParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11432 + # source://prism//lib/prism/node.rb#11534 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol?, name_loc: Location?, operator_loc: Location } # - # source://prism//lib/prism/node.rb#11455 + # source://prism//lib/prism/node.rb#11557 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -22413,31 +22376,31 @@ class Prism::KeywordRestParameterNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#11505 + # source://prism//lib/prism/node.rb#11607 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol? # - # source://prism//lib/prism/node.rb#11465 + # source://prism//lib/prism/node.rb#11567 sig { returns(T.nilable(Symbol)) } def name; end # attr_reader name_loc: Location? # - # source://prism//lib/prism/node.rb#11468 + # source://prism//lib/prism/node.rb#11570 sig { returns(T.nilable(Prism::Location)) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#11500 + # source://prism//lib/prism/node.rb#11602 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#11487 + # source://prism//lib/prism/node.rb#11589 sig { returns(Prism::Location) } def operator_loc; end @@ -22445,32 +22408,32 @@ class Prism::KeywordRestParameterNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#11460 + # source://prism//lib/prism/node.rb#11562 sig { returns(T::Boolean) } def repeated_parameter?; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11482 + # source://prism//lib/prism/node.rb#11584 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11495 + # source://prism//lib/prism/node.rb#11597 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#11510 + # source://prism//lib/prism/node.rb#11612 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#11515 + # source://prism//lib/prism/node.rb#11617 def type; end end end @@ -22480,13 +22443,13 @@ end # ->(value) { value * 2 } # ^^^^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#11534 +# source://prism//lib/prism/node.rb#11636 class Prism::LambdaNode < ::Prism::Node # Initialize a new LambdaNode node. # # @return [LambdaNode] a new instance of LambdaNode # - # source://prism//lib/prism/node.rb#11536 + # source://prism//lib/prism/node.rb#11638 sig do params( source: Prism::Source, @@ -22506,54 +22469,54 @@ class Prism::LambdaNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#11665 + # source://prism//lib/prism/node.rb#11767 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#11550 + # source://prism//lib/prism/node.rb#11652 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader body: StatementsNode | BeginNode | nil # - # source://prism//lib/prism/node.rb#11631 + # source://prism//lib/prism/node.rb#11733 sig { returns(T.nilable(T.any(Prism::StatementsNode, Prism::BeginNode))) } def body; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11555 + # source://prism//lib/prism/node.rb#11657 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#11644 + # source://prism//lib/prism/node.rb#11746 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#11615 + # source://prism//lib/prism/node.rb#11717 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#11568 + # source://prism//lib/prism/node.rb#11670 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#11560 + # source://prism//lib/prism/node.rb#11662 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?locals: Array[Symbol], ?operator_loc: Location, ?opening_loc: Location, ?closing_loc: Location, ?parameters: BlockParametersNode | NumberedParametersNode | ItParametersNode | nil, ?body: StatementsNode | BeginNode | nil) -> LambdaNode # - # source://prism//lib/prism/node.rb#11573 + # source://prism//lib/prism/node.rb#11675 sig do params( node_id: Integer, @@ -22569,16 +22532,16 @@ class Prism::LambdaNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), operator_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), parameters: T.unsafe(nil), body: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11555 + # source://prism//lib/prism/node.rb#11657 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], operator_loc: Location, opening_loc: Location, closing_loc: Location, parameters: BlockParametersNode | NumberedParametersNode | ItParametersNode | nil, body: StatementsNode | BeginNode | nil } # - # source://prism//lib/prism/node.rb#11581 + # source://prism//lib/prism/node.rb#11683 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -22587,74 +22550,74 @@ class Prism::LambdaNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#11649 + # source://prism//lib/prism/node.rb#11751 sig { override.returns(String) } def inspect; end # attr_reader locals: Array[Symbol] # - # source://prism//lib/prism/node.rb#11586 + # source://prism//lib/prism/node.rb#11688 sig { returns(T::Array[Symbol]) } def locals; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#11639 + # source://prism//lib/prism/node.rb#11741 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#11602 + # source://prism//lib/prism/node.rb#11704 sig { returns(Prism::Location) } def opening_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#11634 + # source://prism//lib/prism/node.rb#11736 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#11589 + # source://prism//lib/prism/node.rb#11691 sig { returns(Prism::Location) } def operator_loc; end # attr_reader parameters: BlockParametersNode | NumberedParametersNode | ItParametersNode | nil # - # source://prism//lib/prism/node.rb#11628 + # source://prism//lib/prism/node.rb#11730 sig { returns(T.nilable(T.any(Prism::BlockParametersNode, Prism::NumberedParametersNode, Prism::ItParametersNode))) } def parameters; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11623 + # source://prism//lib/prism/node.rb#11725 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11610 + # source://prism//lib/prism/node.rb#11712 def save_opening_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11597 + # source://prism//lib/prism/node.rb#11699 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#11654 + # source://prism//lib/prism/node.rb#11756 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#11659 + # source://prism//lib/prism/node.rb#11761 def type; end end end @@ -22665,33 +22628,33 @@ end # generally lines up. However, there are a few cases that require special # handling. # -# source://prism//lib/prism/lex_compat.rb#12 +# source://prism//lib/prism/lex_compat.rb#13 class Prism::LexCompat # @return [LexCompat] a new instance of LexCompat # - # source://prism//lib/prism/lex_compat.rb#619 + # source://prism//lib/prism/lex_compat.rb#620 def initialize(source, **options); end # Returns the value of attribute options. # - # source://prism//lib/prism/lex_compat.rb#617 + # source://prism//lib/prism/lex_compat.rb#618 def options; end - # source://prism//lib/prism/lex_compat.rb#624 + # source://prism//lib/prism/lex_compat.rb#625 def result; end # Returns the value of attribute source. # - # source://prism//lib/prism/lex_compat.rb#617 + # source://prism//lib/prism/lex_compat.rb#618 def source; end end # Ripper doesn't include the rest of the token in the event, so we need to # trim it down to just the content on the first line when comparing. # -# source://prism//lib/prism/lex_compat.rb#230 +# source://prism//lib/prism/lex_compat.rb#231 class Prism::LexCompat::EndContentToken < ::Prism::LexCompat::Token - # source://prism//lib/prism/lex_compat.rb#231 + # source://prism//lib/prism/lex_compat.rb#232 def ==(other); end end @@ -22699,13 +22662,13 @@ end # heredoc that should be appended onto the list of tokens when the heredoc # closes. # -# source://prism//lib/prism/lex_compat.rb#291 +# source://prism//lib/prism/lex_compat.rb#292 module Prism::LexCompat::Heredoc class << self # Here we will split between the two types of heredocs and return the # object that will store their tokens. # - # source://prism//lib/prism/lex_compat.rb#603 + # source://prism//lib/prism/lex_compat.rb#604 def build(opening); end end end @@ -22714,23 +22677,23 @@ end # that need to be split on "\\\n" to mimic Ripper's behavior. We also need # to keep track of the state that the heredoc was opened in. # -# source://prism//lib/prism/lex_compat.rb#315 +# source://prism//lib/prism/lex_compat.rb#316 class Prism::LexCompat::Heredoc::DashHeredoc # @return [DashHeredoc] a new instance of DashHeredoc # - # source://prism//lib/prism/lex_compat.rb#318 + # source://prism//lib/prism/lex_compat.rb#319 def initialize(split); end - # source://prism//lib/prism/lex_compat.rb#323 + # source://prism//lib/prism/lex_compat.rb#324 def <<(token); end - # source://prism//lib/prism/lex_compat.rb#316 + # source://prism//lib/prism/lex_compat.rb#317 def split; end - # source://prism//lib/prism/lex_compat.rb#327 + # source://prism//lib/prism/lex_compat.rb#328 def to_a; end - # source://prism//lib/prism/lex_compat.rb#316 + # source://prism//lib/prism/lex_compat.rb#317 def tokens; end end @@ -22745,45 +22708,45 @@ end # some extra manipulation on the tokens to make them match Ripper's # output by mirroring the dedent logic that Ripper uses. # -# source://prism//lib/prism/lex_compat.rb#374 +# source://prism//lib/prism/lex_compat.rb#375 class Prism::LexCompat::Heredoc::DedentingHeredoc # @return [DedentingHeredoc] a new instance of DedentingHeredoc # - # source://prism//lib/prism/lex_compat.rb#379 + # source://prism//lib/prism/lex_compat.rb#380 def initialize; end # As tokens are coming in, we track the minimum amount of common leading # whitespace on plain string content tokens. This allows us to later # remove that amount of whitespace from the beginning of each line. # - # source://prism//lib/prism/lex_compat.rb#390 + # source://prism//lib/prism/lex_compat.rb#391 def <<(token); end # Returns the value of attribute dedent. # - # source://prism//lib/prism/lex_compat.rb#377 + # source://prism//lib/prism/lex_compat.rb#378 def dedent; end # Returns the value of attribute dedent_next. # - # source://prism//lib/prism/lex_compat.rb#377 + # source://prism//lib/prism/lex_compat.rb#378 def dedent_next; end # Returns the value of attribute embexpr_balance. # - # source://prism//lib/prism/lex_compat.rb#377 + # source://prism//lib/prism/lex_compat.rb#378 def embexpr_balance; end - # source://prism//lib/prism/lex_compat.rb#427 + # source://prism//lib/prism/lex_compat.rb#428 def to_a; end # Returns the value of attribute tokens. # - # source://prism//lib/prism/lex_compat.rb#377 + # source://prism//lib/prism/lex_compat.rb#378 def tokens; end end -# source://prism//lib/prism/lex_compat.rb#375 +# source://prism//lib/prism/lex_compat.rb#376 Prism::LexCompat::Heredoc::DedentingHeredoc::TAB_WIDTH = T.let(T.unsafe(nil), Integer) # Heredocs that are no dash or tilde heredocs are just a list of tokens. @@ -22791,20 +22754,20 @@ Prism::LexCompat::Heredoc::DedentingHeredoc::TAB_WIDTH = T.let(T.unsafe(nil), In # order back into the token stream and set the state of the last token to # the state that the heredoc was opened in. # -# source://prism//lib/prism/lex_compat.rb#296 +# source://prism//lib/prism/lex_compat.rb#297 class Prism::LexCompat::Heredoc::PlainHeredoc # @return [PlainHeredoc] a new instance of PlainHeredoc # - # source://prism//lib/prism/lex_compat.rb#299 + # source://prism//lib/prism/lex_compat.rb#300 def initialize; end - # source://prism//lib/prism/lex_compat.rb#303 + # source://prism//lib/prism/lex_compat.rb#304 def <<(token); end - # source://prism//lib/prism/lex_compat.rb#307 + # source://prism//lib/prism/lex_compat.rb#308 def to_a; end - # source://prism//lib/prism/lex_compat.rb#297 + # source://prism//lib/prism/lex_compat.rb#298 def tokens; end end @@ -22813,27 +22776,27 @@ end # through named captures in regular expressions). In that case we don't # compare the state. # -# source://prism//lib/prism/lex_compat.rb#248 +# source://prism//lib/prism/lex_compat.rb#249 class Prism::LexCompat::IdentToken < ::Prism::LexCompat::Token - # source://prism//lib/prism/lex_compat.rb#249 + # source://prism//lib/prism/lex_compat.rb#250 def ==(other); end end # Tokens where state should be ignored # used for :on_comment, :on_heredoc_end, :on_embexpr_end # -# source://prism//lib/prism/lex_compat.rb#238 +# source://prism//lib/prism/lex_compat.rb#239 class Prism::LexCompat::IgnoreStateToken < ::Prism::LexCompat::Token - # source://prism//lib/prism/lex_compat.rb#239 + # source://prism//lib/prism/lex_compat.rb#240 def ==(other); end end # Ignored newlines can occasionally have a LABEL state attached to them, so # we compare the state differently here. # -# source://prism//lib/prism/lex_compat.rb#259 +# source://prism//lib/prism/lex_compat.rb#260 class Prism::LexCompat::IgnoredNewlineToken < ::Prism::LexCompat::Token - # source://prism//lib/prism/lex_compat.rb#260 + # source://prism//lib/prism/lex_compat.rb#261 def ==(other); end end @@ -22846,9 +22809,9 @@ end # more accurately, so we need to allow comparing against both END and # END|LABEL. # -# source://prism//lib/prism/lex_compat.rb#279 +# source://prism//lib/prism/lex_compat.rb#280 class Prism::LexCompat::ParamToken < ::Prism::LexCompat::Token - # source://prism//lib/prism/lex_compat.rb#280 + # source://prism//lib/prism/lex_compat.rb#281 def ==(other); end end @@ -22856,28 +22819,28 @@ end # many-to-one mapping because we split up our token types, whereas Ripper # tends to group them. # -# source://prism//lib/prism/lex_compat.rb#33 +# source://prism//lib/prism/lex_compat.rb#34 Prism::LexCompat::RIPPER = T.let(T.unsafe(nil), Hash) # A result class specialized for holding tokens produced by the lexer. # -# source://prism//lib/prism/lex_compat.rb#14 +# source://prism//lib/prism/lex_compat.rb#15 class Prism::LexCompat::Result < ::Prism::Result # Create a new lex compat result object with the given values. # # @return [Result] a new instance of Result # - # source://prism//lib/prism/lex_compat.rb#19 + # source://prism//lib/prism/lex_compat.rb#20 def initialize(value, comments, magic_comments, data_loc, errors, warnings, source); end # Implement the hash pattern matching interface for Result. # - # source://prism//lib/prism/lex_compat.rb#25 + # source://prism//lib/prism/lex_compat.rb#26 def deconstruct_keys(keys); end # The list of tokens that were produced by the lexer. # - # source://prism//lib/prism/lex_compat.rb#16 + # source://prism//lib/prism/lex_compat.rb#17 def value; end end @@ -22885,38 +22848,38 @@ end # However, we add a couple of convenience methods onto them to make them a # little easier to work with. We delegate all other methods to the array. # -# source://prism//lib/prism/lex_compat.rb#204 +# source://prism//lib/prism/lex_compat.rb#205 class Prism::LexCompat::Token < ::SimpleDelegator # The type of the token. # - # source://prism//lib/prism/lex_compat.rb#213 + # source://prism//lib/prism/lex_compat.rb#214 def event; end # The location of the token in the source. # - # source://prism//lib/prism/lex_compat.rb#208 + # source://prism//lib/prism/lex_compat.rb#209 def location; end # The state of the lexer when this token was produced. # - # source://prism//lib/prism/lex_compat.rb#223 + # source://prism//lib/prism/lex_compat.rb#224 def state; end # The slice of the source that this token represents. # - # source://prism//lib/prism/lex_compat.rb#218 + # source://prism//lib/prism/lex_compat.rb#219 def value; end end # This is a result specific to the `lex` and `lex_file` methods. # -# source://prism//lib/prism/parse_result.rb#781 +# source://prism//lib/prism/parse_result.rb#782 class Prism::LexResult < ::Prism::Result # Create a new lex result object with the given values. # # @return [LexResult] a new instance of LexResult # - # source://prism//lib/prism/parse_result.rb#786 + # source://prism//lib/prism/parse_result.rb#787 sig do params( value: T::Array[T.untyped], @@ -22932,13 +22895,13 @@ class Prism::LexResult < ::Prism::Result # Implement the hash pattern matching interface for LexResult. # - # source://prism//lib/prism/parse_result.rb#792 + # source://prism//lib/prism/parse_result.rb#793 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # The list of tokens that were parsed from the source code. # - # source://prism//lib/prism/parse_result.rb#783 + # source://prism//lib/prism/parse_result.rb#784 sig { returns(T::Array[T.untyped]) } def value; end end @@ -22946,22 +22909,22 @@ end # This is a class that wraps the Ripper lexer to produce almost exactly the # same tokens. # -# source://prism//lib/prism/lex_compat.rb#872 +# source://prism//lib/prism/lex_compat.rb#873 class Prism::LexRipper # @return [LexRipper] a new instance of LexRipper # - # source://prism//lib/prism/lex_compat.rb#875 + # source://prism//lib/prism/lex_compat.rb#876 def initialize(source); end - # source://prism//lib/prism/lex_compat.rb#879 + # source://prism//lib/prism/lex_compat.rb#880 def result; end - # source://prism//lib/prism/lex_compat.rb#873 + # source://prism//lib/prism/lex_compat.rb#874 def source; end private - # source://prism//lib/prism/lex_compat.rb#913 + # source://prism//lib/prism/lex_compat.rb#914 def lex(source); end end @@ -22970,13 +22933,13 @@ end # target &&= value # ^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#11681 +# source://prism//lib/prism/node.rb#11783 class Prism::LocalVariableAndWriteNode < ::Prism::Node # Initialize a new LocalVariableAndWriteNode node. # # @return [LocalVariableAndWriteNode] a new instance of LocalVariableAndWriteNode # - # source://prism//lib/prism/node.rb#11683 + # source://prism//lib/prism/node.rb#11785 sig do params( source: Prism::Source, @@ -22995,36 +22958,36 @@ class Prism::LocalVariableAndWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#11785 + # source://prism//lib/prism/node.rb#11887 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#11696 + # source://prism//lib/prism/node.rb#11798 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11701 + # source://prism//lib/prism/node.rb#11803 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#11711 + # source://prism//lib/prism/node.rb#11813 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#11706 + # source://prism//lib/prism/node.rb#11808 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name_loc: Location, ?operator_loc: Location, ?value: Prism::node, ?name: Symbol, ?depth: Integer) -> LocalVariableAndWriteNode # - # source://prism//lib/prism/node.rb#11716 + # source://prism//lib/prism/node.rb#11818 sig do params( node_id: Integer, @@ -23039,26 +23002,26 @@ class Prism::LocalVariableAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11701 + # source://prism//lib/prism/node.rb#11803 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name_loc: Location, operator_loc: Location, value: Prism::node, name: Symbol, depth: Integer } # - # source://prism//lib/prism/node.rb#11724 + # source://prism//lib/prism/node.rb#11826 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # attr_reader depth: Integer # - # source://prism//lib/prism/node.rb#11761 + # source://prism//lib/prism/node.rb#11863 sig { returns(Integer) } def depth; end - # source://prism//lib/prism/desugar_compiler.rb#236 + # source://prism//lib/prism/desugar_compiler.rb#237 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -23066,62 +23029,62 @@ class Prism::LocalVariableAndWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#11769 + # source://prism//lib/prism/node.rb#11871 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#11758 + # source://prism//lib/prism/node.rb#11860 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#11729 + # source://prism//lib/prism/node.rb#11831 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#11764 + # source://prism//lib/prism/node.rb#11866 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#11742 + # source://prism//lib/prism/node.rb#11844 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11737 + # source://prism//lib/prism/node.rb#11839 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11750 + # source://prism//lib/prism/node.rb#11852 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#11774 + # source://prism//lib/prism/node.rb#11876 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#11755 + # source://prism//lib/prism/node.rb#11857 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#11779 + # source://prism//lib/prism/node.rb#11881 def type; end end end @@ -23131,13 +23094,13 @@ end # target += value # ^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#11799 +# source://prism//lib/prism/node.rb#11901 class Prism::LocalVariableOperatorWriteNode < ::Prism::Node # Initialize a new LocalVariableOperatorWriteNode node. # # @return [LocalVariableOperatorWriteNode] a new instance of LocalVariableOperatorWriteNode # - # source://prism//lib/prism/node.rb#11801 + # source://prism//lib/prism/node.rb#11903 sig do params( source: Prism::Source, @@ -23157,48 +23120,48 @@ class Prism::LocalVariableOperatorWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#11902 + # source://prism//lib/prism/node.rb#12004 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#11815 + # source://prism//lib/prism/node.rb#11917 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader binary_operator: Symbol # - # source://prism//lib/prism/node.rb#11880 + # source://prism//lib/prism/node.rb#11982 sig { returns(Symbol) } def binary_operator; end # attr_reader binary_operator_loc: Location # - # source://prism//lib/prism/node.rb#11861 + # source://prism//lib/prism/node.rb#11963 sig { returns(Prism::Location) } def binary_operator_loc; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11820 + # source://prism//lib/prism/node.rb#11922 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#11830 + # source://prism//lib/prism/node.rb#11932 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#11825 + # source://prism//lib/prism/node.rb#11927 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name_loc: Location, ?binary_operator_loc: Location, ?value: Prism::node, ?name: Symbol, ?binary_operator: Symbol, ?depth: Integer) -> LocalVariableOperatorWriteNode # - # source://prism//lib/prism/node.rb#11835 + # source://prism//lib/prism/node.rb#11937 sig do params( node_id: Integer, @@ -23214,26 +23177,26 @@ class Prism::LocalVariableOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), name: T.unsafe(nil), binary_operator: T.unsafe(nil), depth: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11820 + # source://prism//lib/prism/node.rb#11922 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name_loc: Location, binary_operator_loc: Location, value: Prism::node, name: Symbol, binary_operator: Symbol, depth: Integer } # - # source://prism//lib/prism/node.rb#11843 + # source://prism//lib/prism/node.rb#11945 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # attr_reader depth: Integer # - # source://prism//lib/prism/node.rb#11883 + # source://prism//lib/prism/node.rb#11985 sig { returns(Integer) } def depth; end - # source://prism//lib/prism/desugar_compiler.rb#248 + # source://prism//lib/prism/desugar_compiler.rb#249 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -23241,62 +23204,62 @@ class Prism::LocalVariableOperatorWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#11886 + # source://prism//lib/prism/node.rb#11988 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#11877 + # source://prism//lib/prism/node.rb#11979 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#11848 + # source://prism//lib/prism/node.rb#11950 sig { returns(Prism::Location) } def name_loc; end # Returns the binary operator used to modify the receiver. This method is # deprecated in favor of #binary_operator. # - # source://prism//lib/prism/node_ext.rb#451 + # source://prism//lib/prism/node_ext.rb#454 def operator; end # Returns the location of the binary operator used to modify the receiver. # This method is deprecated in favor of #binary_operator_loc. # - # source://prism//lib/prism/node_ext.rb#458 + # source://prism//lib/prism/node_ext.rb#461 def operator_loc; end # Save the binary_operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11869 + # source://prism//lib/prism/node.rb#11971 def save_binary_operator_loc(repository); end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11856 + # source://prism//lib/prism/node.rb#11958 def save_name_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#11891 + # source://prism//lib/prism/node.rb#11993 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#11874 + # source://prism//lib/prism/node.rb#11976 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#11896 + # source://prism//lib/prism/node.rb#11998 def type; end end end @@ -23306,13 +23269,13 @@ end # target ||= value # ^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#11917 +# source://prism//lib/prism/node.rb#12019 class Prism::LocalVariableOrWriteNode < ::Prism::Node # Initialize a new LocalVariableOrWriteNode node. # # @return [LocalVariableOrWriteNode] a new instance of LocalVariableOrWriteNode # - # source://prism//lib/prism/node.rb#11919 + # source://prism//lib/prism/node.rb#12021 sig do params( source: Prism::Source, @@ -23331,36 +23294,36 @@ class Prism::LocalVariableOrWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#12021 + # source://prism//lib/prism/node.rb#12123 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#11932 + # source://prism//lib/prism/node.rb#12034 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11937 + # source://prism//lib/prism/node.rb#12039 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#11947 + # source://prism//lib/prism/node.rb#12049 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#11942 + # source://prism//lib/prism/node.rb#12044 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name_loc: Location, ?operator_loc: Location, ?value: Prism::node, ?name: Symbol, ?depth: Integer) -> LocalVariableOrWriteNode # - # source://prism//lib/prism/node.rb#11952 + # source://prism//lib/prism/node.rb#12054 sig do params( node_id: Integer, @@ -23375,26 +23338,26 @@ class Prism::LocalVariableOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#11937 + # source://prism//lib/prism/node.rb#12039 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name_loc: Location, operator_loc: Location, value: Prism::node, name: Symbol, depth: Integer } # - # source://prism//lib/prism/node.rb#11960 + # source://prism//lib/prism/node.rb#12062 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # attr_reader depth: Integer # - # source://prism//lib/prism/node.rb#11997 + # source://prism//lib/prism/node.rb#12099 sig { returns(Integer) } def depth; end - # source://prism//lib/prism/desugar_compiler.rb#242 + # source://prism//lib/prism/desugar_compiler.rb#243 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } @@ -23402,62 +23365,62 @@ class Prism::LocalVariableOrWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#12005 + # source://prism//lib/prism/node.rb#12107 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#11994 + # source://prism//lib/prism/node.rb#12096 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#11965 + # source://prism//lib/prism/node.rb#12067 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#12000 + # source://prism//lib/prism/node.rb#12102 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#11978 + # source://prism//lib/prism/node.rb#12080 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11973 + # source://prism//lib/prism/node.rb#12075 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#11986 + # source://prism//lib/prism/node.rb#12088 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#12010 + # source://prism//lib/prism/node.rb#12112 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#11991 + # source://prism//lib/prism/node.rb#12093 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#12015 + # source://prism//lib/prism/node.rb#12117 def type; end end end @@ -23467,13 +23430,13 @@ end # foo # ^^^ # -# source://prism//lib/prism/node.rb#12035 +# source://prism//lib/prism/node.rb#12137 class Prism::LocalVariableReadNode < ::Prism::Node # Initialize a new LocalVariableReadNode node. # # @return [LocalVariableReadNode] a new instance of LocalVariableReadNode # - # source://prism//lib/prism/node.rb#12037 + # source://prism//lib/prism/node.rb#12139 sig do params( source: Prism::Source, @@ -23489,36 +23452,36 @@ class Prism::LocalVariableReadNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#12116 + # source://prism//lib/prism/node.rb#12218 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#12047 + # source://prism//lib/prism/node.rb#12149 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12052 + # source://prism//lib/prism/node.rb#12154 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#12062 + # source://prism//lib/prism/node.rb#12164 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#12057 + # source://prism//lib/prism/node.rb#12159 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?depth: Integer) -> LocalVariableReadNode # - # source://prism//lib/prism/node.rb#12067 + # source://prism//lib/prism/node.rb#12169 sig do params( node_id: Integer, @@ -23530,16 +23493,16 @@ class Prism::LocalVariableReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12052 + # source://prism//lib/prism/node.rb#12154 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, depth: Integer } # - # source://prism//lib/prism/node.rb#12075 + # source://prism//lib/prism/node.rb#12177 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -23551,7 +23514,7 @@ class Prism::LocalVariableReadNode < ::Prism::Node # # The specific rules for calculating the depth may differ from individual Ruby implementations, as they are not specified by the language. For more information, see [the Prism documentation](https://github.com/ruby/prism/blob/main/docs/local_variable_depth.md). # - # source://prism//lib/prism/node.rb#12097 + # source://prism//lib/prism/node.rb#12199 sig { returns(Integer) } def depth; end @@ -23560,7 +23523,7 @@ class Prism::LocalVariableReadNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#12100 + # source://prism//lib/prism/node.rb#12202 sig { override.returns(String) } def inspect; end @@ -23574,20 +23537,20 @@ class Prism::LocalVariableReadNode < ::Prism::Node # # _1 # name `:_1` # - # source://prism//lib/prism/node.rb#12088 + # source://prism//lib/prism/node.rb#12190 sig { returns(Symbol) } def name; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#12105 + # source://prism//lib/prism/node.rb#12207 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#12110 + # source://prism//lib/prism/node.rb#12212 def type; end end end @@ -23597,13 +23560,16 @@ end # foo, bar = baz # ^^^ ^^^ # -# source://prism//lib/prism/node.rb#12127 +# foo => baz +# ^^^ +# +# source://prism//lib/prism/node.rb#12232 class Prism::LocalVariableTargetNode < ::Prism::Node # Initialize a new LocalVariableTargetNode node. # # @return [LocalVariableTargetNode] a new instance of LocalVariableTargetNode # - # source://prism//lib/prism/node.rb#12129 + # source://prism//lib/prism/node.rb#12234 sig do params( source: Prism::Source, @@ -23619,36 +23585,36 @@ class Prism::LocalVariableTargetNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#12194 + # source://prism//lib/prism/node.rb#12299 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#12139 + # source://prism//lib/prism/node.rb#12244 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12144 + # source://prism//lib/prism/node.rb#12249 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#12154 + # source://prism//lib/prism/node.rb#12259 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#12149 + # source://prism//lib/prism/node.rb#12254 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?depth: Integer) -> LocalVariableTargetNode # - # source://prism//lib/prism/node.rb#12159 + # source://prism//lib/prism/node.rb#12264 sig do params( node_id: Integer, @@ -23660,22 +23626,22 @@ class Prism::LocalVariableTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12144 + # source://prism//lib/prism/node.rb#12249 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, depth: Integer } # - # source://prism//lib/prism/node.rb#12167 + # source://prism//lib/prism/node.rb#12272 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # attr_reader depth: Integer # - # source://prism//lib/prism/node.rb#12175 + # source://prism//lib/prism/node.rb#12280 sig { returns(Integer) } def depth; end @@ -23684,26 +23650,26 @@ class Prism::LocalVariableTargetNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#12178 + # source://prism//lib/prism/node.rb#12283 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#12172 + # source://prism//lib/prism/node.rb#12277 sig { returns(Symbol) } def name; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#12183 + # source://prism//lib/prism/node.rb#12288 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#12188 + # source://prism//lib/prism/node.rb#12293 def type; end end end @@ -23713,13 +23679,13 @@ end # foo = 1 # ^^^^^^^ # -# source://prism//lib/prism/node.rb#12205 +# source://prism//lib/prism/node.rb#12310 class Prism::LocalVariableWriteNode < ::Prism::Node # Initialize a new LocalVariableWriteNode node. # # @return [LocalVariableWriteNode] a new instance of LocalVariableWriteNode # - # source://prism//lib/prism/node.rb#12207 + # source://prism//lib/prism/node.rb#12312 sig do params( source: Prism::Source, @@ -23738,36 +23704,36 @@ class Prism::LocalVariableWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#12335 + # source://prism//lib/prism/node.rb#12440 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#12220 + # source://prism//lib/prism/node.rb#12325 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12225 + # source://prism//lib/prism/node.rb#12330 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#12235 + # source://prism//lib/prism/node.rb#12340 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#12230 + # source://prism//lib/prism/node.rb#12335 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?depth: Integer, ?name_loc: Location, ?value: Prism::node, ?operator_loc: Location) -> LocalVariableWriteNode # - # source://prism//lib/prism/node.rb#12240 + # source://prism//lib/prism/node.rb#12345 sig do params( node_id: Integer, @@ -23782,16 +23748,16 @@ class Prism::LocalVariableWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12225 + # source://prism//lib/prism/node.rb#12330 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, depth: Integer, name_loc: Location, value: Prism::node, operator_loc: Location } # - # source://prism//lib/prism/node.rb#12248 + # source://prism//lib/prism/node.rb#12353 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -23803,7 +23769,7 @@ class Prism::LocalVariableWriteNode < ::Prism::Node # # The specific rules for calculating the depth may differ from individual Ruby implementations, as they are not specified by the language. For more information, see [the Prism documentation](https://github.com/ruby/prism/blob/main/docs/local_variable_depth.md). # - # source://prism//lib/prism/node.rb#12266 + # source://prism//lib/prism/node.rb#12371 sig { returns(Integer) } def depth; end @@ -23812,7 +23778,7 @@ class Prism::LocalVariableWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#12319 + # source://prism//lib/prism/node.rb#12424 sig { override.returns(String) } def inspect; end @@ -23822,7 +23788,7 @@ class Prism::LocalVariableWriteNode < ::Prism::Node # # abc = 123 # name `:abc` # - # source://prism//lib/prism/node.rb#12257 + # source://prism//lib/prism/node.rb#12362 sig { returns(Symbol) } def name; end @@ -23831,13 +23797,13 @@ class Prism::LocalVariableWriteNode < ::Prism::Node # foo = :bar # ^^^ # - # source://prism//lib/prism/node.rb#12272 + # source://prism//lib/prism/node.rb#12377 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#12314 + # source://prism//lib/prism/node.rb#12419 sig { returns(String) } def operator; end @@ -23846,25 +23812,25 @@ class Prism::LocalVariableWriteNode < ::Prism::Node # x = :y # ^ # - # source://prism//lib/prism/node.rb#12301 + # source://prism//lib/prism/node.rb#12406 sig { returns(Prism::Location) } def operator_loc; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#12280 + # source://prism//lib/prism/node.rb#12385 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#12309 + # source://prism//lib/prism/node.rb#12414 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#12324 + # source://prism//lib/prism/node.rb#12429 sig { override.returns(Symbol) } def type; end @@ -23880,34 +23846,34 @@ class Prism::LocalVariableWriteNode < ::Prism::Node # # foo = foo # - # source://prism//lib/prism/node.rb#12295 + # source://prism//lib/prism/node.rb#12400 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#12329 + # source://prism//lib/prism/node.rb#12434 def type; end end end # This represents a location in the source. # -# source://prism//lib/prism/parse_result.rb#290 +# source://prism//lib/prism/parse_result.rb#291 class Prism::Location # Create a new location object with the given source, start byte offset, and # byte length. # # @return [Location] a new instance of Location # - # source://prism//lib/prism/parse_result.rb#305 + # source://prism//lib/prism/parse_result.rb#306 sig { params(source: Prism::Source, start_offset: Integer, length: Integer).void } def initialize(source, start_offset, length); end # Returns true if the given other location is equal to this location. # - # source://prism//lib/prism/parse_result.rb#493 + # source://prism//lib/prism/parse_result.rb#494 sig { params(other: T.untyped).returns(T::Boolean) } def ==(other); end @@ -23915,14 +23881,14 @@ class Prism::Location # that occurs after this location on the same line, and return the new # location. This will raise an error if the string does not exist. # - # source://prism//lib/prism/parse_result.rb#512 + # source://prism//lib/prism/parse_result.rb#513 sig { params(string: String).returns(Prism::Location) } def adjoin(string); end # The end column in code units using the given cache to fetch or calculate # the value. # - # source://prism//lib/prism/parse_result.rb#478 + # source://prism//lib/prism/parse_result.rb#479 sig do params( cache: T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer)) @@ -23933,7 +23899,7 @@ class Prism::Location # The end offset from the start of the file in code units using the given # cache to fetch or calculate the value. # - # source://prism//lib/prism/parse_result.rb#414 + # source://prism//lib/prism/parse_result.rb#415 sig do params( cache: T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer)) @@ -23944,7 +23910,7 @@ class Prism::Location # The start column in code units using the given cache to fetch or calculate # the value. # - # source://prism//lib/prism/parse_result.rb#454 + # source://prism//lib/prism/parse_result.rb#455 sig do params( cache: T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer)) @@ -23955,7 +23921,7 @@ class Prism::Location # The start offset from the start of the file in code units using the given # cache to fetch or calculate the value. # - # source://prism//lib/prism/parse_result.rb#392 + # source://prism//lib/prism/parse_result.rb#393 sig do params( cache: T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer)) @@ -23965,78 +23931,78 @@ class Prism::Location # Returns a new location that is the result of chopping off the last byte. # - # source://prism//lib/prism/parse_result.rb#351 + # source://prism//lib/prism/parse_result.rb#352 sig { returns(Prism::Location) } def chop; end # Returns all comments that are associated with this location (both leading # and trailing comments). # - # source://prism//lib/prism/parse_result.rb#341 + # source://prism//lib/prism/parse_result.rb#342 sig { returns(T::Array[Prism::Comment]) } def comments; end # Create a new location object with the given options. # - # source://prism//lib/prism/parse_result.rb#346 + # source://prism//lib/prism/parse_result.rb#347 sig { params(source: Prism::Source, start_offset: Integer, length: Integer).returns(Prism::Location) } def copy(source: T.unsafe(nil), start_offset: T.unsafe(nil), length: T.unsafe(nil)); end # Implement the hash pattern matching interface for Location. # - # source://prism//lib/prism/parse_result.rb#483 + # source://prism//lib/prism/parse_result.rb#484 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # The column number in characters where this location ends from the start of # the line. # - # source://prism//lib/prism/parse_result.rb#466 + # source://prism//lib/prism/parse_result.rb#467 sig { returns(Integer) } def end_character_column; end # The character offset from the beginning of the source where this location # ends. # - # source://prism//lib/prism/parse_result.rb#403 + # source://prism//lib/prism/parse_result.rb#404 sig { returns(Integer) } def end_character_offset; end # The column number in code units of the given encoding where this location # ends from the start of the line. # - # source://prism//lib/prism/parse_result.rb#472 + # source://prism//lib/prism/parse_result.rb#473 sig { params(encoding: Encoding).returns(Integer) } def end_code_units_column(encoding = T.unsafe(nil)); end # The offset from the start of the file in code units of the given encoding. # - # source://prism//lib/prism/parse_result.rb#408 + # source://prism//lib/prism/parse_result.rb#409 sig { params(encoding: Encoding).returns(Integer) } def end_code_units_offset(encoding = T.unsafe(nil)); end # The column number in bytes where this location ends from the start of the # line. # - # source://prism//lib/prism/parse_result.rb#460 + # source://prism//lib/prism/parse_result.rb#461 sig { returns(Integer) } def end_column; end # The line number where this location ends. # - # source://prism//lib/prism/parse_result.rb#430 + # source://prism//lib/prism/parse_result.rb#431 sig { returns(Integer) } def end_line; end # The byte offset from the beginning of the source where this location ends. # - # source://prism//lib/prism/parse_result.rb#397 + # source://prism//lib/prism/parse_result.rb#398 sig { returns(Integer) } def end_offset; end # Returns a string representation of this location. # - # source://prism//lib/prism/parse_result.rb#356 + # source://prism//lib/prism/parse_result.rb#357 sig { returns(String) } def inspect; end @@ -24044,38 +24010,38 @@ class Prism::Location # other location. Raises an error if this location is not before the other # location or if they don't share the same source. # - # source://prism//lib/prism/parse_result.rb#502 + # source://prism//lib/prism/parse_result.rb#503 sig { params(other: Prism::Location).returns(Prism::Location) } def join(other); end # Attach a comment to the leading comments of this location. # - # source://prism//lib/prism/parse_result.rb#324 + # source://prism//lib/prism/parse_result.rb#325 sig { params(comment: Prism::Comment).void } def leading_comment(comment); end # These are the comments that are associated with this location that exist # before the start of this location. # - # source://prism//lib/prism/parse_result.rb#319 + # source://prism//lib/prism/parse_result.rb#320 sig { returns(T::Array[Prism::Comment]) } def leading_comments; end # The length of this location in bytes. # - # source://prism//lib/prism/parse_result.rb#301 + # source://prism//lib/prism/parse_result.rb#302 sig { returns(Integer) } def length; end # Implement the pretty print interface for Location. # - # source://prism//lib/prism/parse_result.rb#488 + # source://prism//lib/prism/parse_result.rb#489 sig { params(q: T.untyped).void } def pretty_print(q); end # The source code that this location represents. # - # source://prism//lib/prism/parse_result.rb#366 + # source://prism//lib/prism/parse_result.rb#367 sig { returns(String) } def slice; end @@ -24083,78 +24049,78 @@ class Prism::Location # of the line that this location starts on to the end of the line that this # location ends on. # - # source://prism//lib/prism/parse_result.rb#373 + # source://prism//lib/prism/parse_result.rb#374 def slice_lines; end # Returns all of the lines of the source code associated with this location. # - # source://prism//lib/prism/parse_result.rb#361 + # source://prism//lib/prism/parse_result.rb#362 sig { returns(T::Array[String]) } def source_lines; end # The column number in characters where this location ends from the start of # the line. # - # source://prism//lib/prism/parse_result.rb#442 + # source://prism//lib/prism/parse_result.rb#443 sig { returns(Integer) } def start_character_column; end # The character offset from the beginning of the source where this location # starts. # - # source://prism//lib/prism/parse_result.rb#381 + # source://prism//lib/prism/parse_result.rb#382 sig { returns(Integer) } def start_character_offset; end # The column number in code units of the given encoding where this location # starts from the start of the line. # - # source://prism//lib/prism/parse_result.rb#448 + # source://prism//lib/prism/parse_result.rb#449 sig { params(encoding: Encoding).returns(Integer) } def start_code_units_column(encoding = T.unsafe(nil)); end # The offset from the start of the file in code units of the given encoding. # - # source://prism//lib/prism/parse_result.rb#386 + # source://prism//lib/prism/parse_result.rb#387 sig { params(encoding: Encoding).returns(Integer) } def start_code_units_offset(encoding = T.unsafe(nil)); end # The column number in bytes where this location starts from the start of # the line. # - # source://prism//lib/prism/parse_result.rb#436 + # source://prism//lib/prism/parse_result.rb#437 sig { returns(Integer) } def start_column; end # The line number where this location starts. # - # source://prism//lib/prism/parse_result.rb#419 + # source://prism//lib/prism/parse_result.rb#420 sig { returns(Integer) } def start_line; end # The content of the line where this location starts before this location. # - # source://prism//lib/prism/parse_result.rb#424 + # source://prism//lib/prism/parse_result.rb#425 sig { returns(String) } def start_line_slice; end # The byte offset from the beginning of the source where this location # starts. # - # source://prism//lib/prism/parse_result.rb#298 + # source://prism//lib/prism/parse_result.rb#299 sig { returns(Integer) } def start_offset; end # Attach a comment to the trailing comments of this location. # - # source://prism//lib/prism/parse_result.rb#335 + # source://prism//lib/prism/parse_result.rb#336 sig { params(comment: Prism::Comment).void } def trailing_comment(comment); end # These are the comments that are associated with this location that exist # after the end of this location. # - # source://prism//lib/prism/parse_result.rb#330 + # source://prism//lib/prism/parse_result.rb#331 sig { returns(T::Array[Prism::Comment]) } def trailing_comments; end @@ -24163,66 +24129,66 @@ class Prism::Location # A Source object that is used to determine more information from the given # offset and length. # - # source://prism//lib/prism/parse_result.rb#293 + # source://prism//lib/prism/parse_result.rb#294 sig { returns(Prism::Source) } def source; end end # Flags for while and until loop nodes. # -# source://prism//lib/prism/node.rb#18537 +# source://prism//lib/prism/node.rb#18708 module Prism::LoopFlags; end # a loop after a begin statement, so the body is executed first before the condition # -# source://prism//lib/prism/node.rb#18539 +# source://prism//lib/prism/node.rb#18710 Prism::LoopFlags::BEGIN_MODIFIER = T.let(T.unsafe(nil), Integer) # This represents a magic comment that was encountered during parsing. # -# source://prism//lib/prism/parse_result.rb#574 +# source://prism//lib/prism/parse_result.rb#575 class Prism::MagicComment # Create a new magic comment object with the given key and value locations. # # @return [MagicComment] a new instance of MagicComment # - # source://prism//lib/prism/parse_result.rb#582 + # source://prism//lib/prism/parse_result.rb#583 sig { params(key_loc: Prism::Location, value_loc: Prism::Location).void } def initialize(key_loc, value_loc); end # Implement the hash pattern matching interface for MagicComment. # - # source://prism//lib/prism/parse_result.rb#598 + # source://prism//lib/prism/parse_result.rb#599 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # Returns a string representation of this magic comment. # - # source://prism//lib/prism/parse_result.rb#603 + # source://prism//lib/prism/parse_result.rb#604 sig { returns(String) } def inspect; end # Returns the key of the magic comment by slicing it from the source code. # - # source://prism//lib/prism/parse_result.rb#588 + # source://prism//lib/prism/parse_result.rb#589 sig { returns(String) } def key; end # A Location object representing the location of the key in the source. # - # source://prism//lib/prism/parse_result.rb#576 + # source://prism//lib/prism/parse_result.rb#577 sig { returns(Prism::Location) } def key_loc; end # Returns the value of the magic comment by slicing it from the source code. # - # source://prism//lib/prism/parse_result.rb#593 + # source://prism//lib/prism/parse_result.rb#594 sig { returns(String) } def value; end # A Location object representing the location of the value in the source. # - # source://prism//lib/prism/parse_result.rb#579 + # source://prism//lib/prism/parse_result.rb#580 sig { returns(Prism::Location) } def value_loc; end end @@ -24232,7 +24198,7 @@ end # if /foo/i then end # ^^^^^^ # -# source://prism//lib/prism/node.rb#12349 +# source://prism//lib/prism/node.rb#12454 class Prism::MatchLastLineNode < ::Prism::Node include ::Prism::RegularExpressionOptions @@ -24240,7 +24206,7 @@ class Prism::MatchLastLineNode < ::Prism::Node # # @return [MatchLastLineNode] a new instance of MatchLastLineNode # - # source://prism//lib/prism/node.rb#12351 + # source://prism//lib/prism/node.rb#12456 sig do params( source: Prism::Source, @@ -24258,12 +24224,12 @@ class Prism::MatchLastLineNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#12524 + # source://prism//lib/prism/node.rb#12629 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#12363 + # source://prism//lib/prism/node.rb#12468 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -24271,55 +24237,55 @@ class Prism::MatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#12421 + # source://prism//lib/prism/node.rb#12526 sig { returns(T::Boolean) } def ascii_8bit?; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12368 + # source://prism//lib/prism/node.rb#12473 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#12503 + # source://prism//lib/prism/node.rb#12608 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#12477 + # source://prism//lib/prism/node.rb#12582 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#12378 + # source://prism//lib/prism/node.rb#12483 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#12373 + # source://prism//lib/prism/node.rb#12478 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def content: () -> String # - # source://prism//lib/prism/node.rb#12498 + # source://prism//lib/prism/node.rb#12603 sig { returns(String) } def content; end # attr_reader content_loc: Location # - # source://prism//lib/prism/node.rb#12464 + # source://prism//lib/prism/node.rb#12569 sig { returns(Prism::Location) } def content_loc; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location, ?content_loc: Location, ?closing_loc: Location, ?unescaped: String) -> MatchLastLineNode # - # source://prism//lib/prism/node.rb#12383 + # source://prism//lib/prism/node.rb#12488 sig do params( node_id: Integer, @@ -24333,16 +24299,16 @@ class Prism::MatchLastLineNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), content_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12368 + # source://prism//lib/prism/node.rb#12473 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String } # - # source://prism//lib/prism/node.rb#12391 + # source://prism//lib/prism/node.rb#12496 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -24350,7 +24316,7 @@ class Prism::MatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#12416 + # source://prism//lib/prism/node.rb#12521 sig { returns(T::Boolean) } def euc_jp?; end @@ -24358,7 +24324,7 @@ class Prism::MatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#12401 + # source://prism//lib/prism/node.rb#12506 sig { returns(T::Boolean) } def extended?; end @@ -24369,7 +24335,7 @@ class Prism::MatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#12441 + # source://prism//lib/prism/node.rb#12546 sig { returns(T::Boolean) } def forced_binary_encoding?; end @@ -24377,7 +24343,7 @@ class Prism::MatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#12446 + # source://prism//lib/prism/node.rb#12551 sig { returns(T::Boolean) } def forced_us_ascii_encoding?; end @@ -24385,7 +24351,7 @@ class Prism::MatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#12436 + # source://prism//lib/prism/node.rb#12541 sig { returns(T::Boolean) } def forced_utf8_encoding?; end @@ -24393,13 +24359,13 @@ class Prism::MatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#12396 + # source://prism//lib/prism/node.rb#12501 sig { returns(T::Boolean) } def ignore_case?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#12508 + # source://prism//lib/prism/node.rb#12613 sig { override.returns(String) } def inspect; end @@ -24407,7 +24373,7 @@ class Prism::MatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#12406 + # source://prism//lib/prism/node.rb#12511 sig { returns(T::Boolean) } def multi_line?; end @@ -24415,19 +24381,19 @@ class Prism::MatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#12411 + # source://prism//lib/prism/node.rb#12516 sig { returns(T::Boolean) } def once?; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#12493 + # source://prism//lib/prism/node.rb#12598 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#12451 + # source://prism//lib/prism/node.rb#12556 sig { returns(Prism::Location) } def opening_loc; end @@ -24437,30 +24403,30 @@ class Prism::MatchLastLineNode < ::Prism::Node # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#12485 + # source://prism//lib/prism/node.rb#12590 def save_closing_loc(repository); end # Save the content_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#12472 + # source://prism//lib/prism/node.rb#12577 def save_content_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#12459 + # source://prism//lib/prism/node.rb#12564 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#12513 + # source://prism//lib/prism/node.rb#12618 sig { override.returns(Symbol) } def type; end # attr_reader unescaped: String # - # source://prism//lib/prism/node.rb#12490 + # source://prism//lib/prism/node.rb#12595 sig { returns(String) } def unescaped; end @@ -24468,7 +24434,7 @@ class Prism::MatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#12431 + # source://prism//lib/prism/node.rb#12536 sig { returns(T::Boolean) } def utf_8?; end @@ -24476,14 +24442,14 @@ class Prism::MatchLastLineNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#12426 + # source://prism//lib/prism/node.rb#12531 sig { returns(T::Boolean) } def windows_31j?; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#12518 + # source://prism//lib/prism/node.rb#12623 def type; end end end @@ -24493,13 +24459,13 @@ end # foo in bar # ^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#12538 +# source://prism//lib/prism/node.rb#12643 class Prism::MatchPredicateNode < ::Prism::Node # Initialize a new MatchPredicateNode node. # # @return [MatchPredicateNode] a new instance of MatchPredicateNode # - # source://prism//lib/prism/node.rb#12540 + # source://prism//lib/prism/node.rb#12645 sig do params( source: Prism::Source, @@ -24516,36 +24482,36 @@ class Prism::MatchPredicateNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#12624 + # source://prism//lib/prism/node.rb#12729 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#12551 + # source://prism//lib/prism/node.rb#12656 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12556 + # source://prism//lib/prism/node.rb#12661 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#12566 + # source://prism//lib/prism/node.rb#12671 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#12561 + # source://prism//lib/prism/node.rb#12666 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?value: Prism::node, ?pattern: Prism::node, ?operator_loc: Location) -> MatchPredicateNode # - # source://prism//lib/prism/node.rb#12571 + # source://prism//lib/prism/node.rb#12676 sig do params( node_id: Integer, @@ -24558,16 +24524,16 @@ class Prism::MatchPredicateNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil), pattern: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12556 + # source://prism//lib/prism/node.rb#12661 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Prism::node, pattern: Prism::node, operator_loc: Location } # - # source://prism//lib/prism/node.rb#12579 + # source://prism//lib/prism/node.rb#12684 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -24576,50 +24542,50 @@ class Prism::MatchPredicateNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#12608 + # source://prism//lib/prism/node.rb#12713 sig { override.returns(String) } def inspect; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#12603 + # source://prism//lib/prism/node.rb#12708 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#12590 + # source://prism//lib/prism/node.rb#12695 sig { returns(Prism::Location) } def operator_loc; end # attr_reader pattern: Prism::node # - # source://prism//lib/prism/node.rb#12587 + # source://prism//lib/prism/node.rb#12692 sig { returns(Prism::Node) } def pattern; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#12598 + # source://prism//lib/prism/node.rb#12703 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#12613 + # source://prism//lib/prism/node.rb#12718 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#12584 + # source://prism//lib/prism/node.rb#12689 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#12618 + # source://prism//lib/prism/node.rb#12723 def type; end end end @@ -24629,13 +24595,13 @@ end # foo => bar # ^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#12636 +# source://prism//lib/prism/node.rb#12741 class Prism::MatchRequiredNode < ::Prism::Node # Initialize a new MatchRequiredNode node. # # @return [MatchRequiredNode] a new instance of MatchRequiredNode # - # source://prism//lib/prism/node.rb#12638 + # source://prism//lib/prism/node.rb#12743 sig do params( source: Prism::Source, @@ -24652,36 +24618,36 @@ class Prism::MatchRequiredNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#12722 + # source://prism//lib/prism/node.rb#12875 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#12649 + # source://prism//lib/prism/node.rb#12754 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12654 + # source://prism//lib/prism/node.rb#12759 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#12664 + # source://prism//lib/prism/node.rb#12769 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#12659 + # source://prism//lib/prism/node.rb#12764 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?value: Prism::node, ?pattern: Prism::node, ?operator_loc: Location) -> MatchRequiredNode # - # source://prism//lib/prism/node.rb#12669 + # source://prism//lib/prism/node.rb#12774 sig do params( node_id: Integer, @@ -24694,16 +24660,16 @@ class Prism::MatchRequiredNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil), pattern: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12654 + # source://prism//lib/prism/node.rb#12759 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, value: Prism::node, pattern: Prism::node, operator_loc: Location } # - # source://prism//lib/prism/node.rb#12677 + # source://prism//lib/prism/node.rb#12782 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -24712,50 +24678,98 @@ class Prism::MatchRequiredNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#12706 + # source://prism//lib/prism/node.rb#12859 sig { override.returns(String) } def inspect; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#12701 + # source://prism//lib/prism/node.rb#12854 sig { returns(String) } def operator; end - # attr_reader operator_loc: Location + # The location of the operator. + # + # foo => bar + # ^^ # - # source://prism//lib/prism/node.rb#12688 + # source://prism//lib/prism/node.rb#12841 sig { returns(Prism::Location) } def operator_loc; end - # attr_reader pattern: Prism::node + # Represents the right-hand side of the operator. The type of the node depends on the expression. + # + # Anything that looks like a local variable name (including `_`) will result in a `LocalVariableTargetNode`. + # + # foo => a # This is equivalent to writing `a = foo` + # ^ + # + # Using an explicit `Array` or combining expressions with `,` will result in a `ArrayPatternNode`. This can be preceded by a constant. + # + # foo => [a] + # ^^^ + # + # foo => a, b + # ^^^^ + # + # foo => Bar[a, b] + # ^^^^^^^^^ + # + # If the array pattern contains at least two wildcard matches, a `FindPatternNode` is created instead. + # + # foo => *, 1, *a + # ^^^^^ + # + # Using an explicit `Hash` or a constant with square brackets and hash keys in the square brackets will result in a `HashPatternNode`. + # + # foo => { a: 1, b: } + # + # foo => Bar[a: 1, b:] + # + # foo => Bar[**] + # + # To use any variable that needs run time evaluation, pinning is required. This results in a `PinnedVariableNode` + # + # foo => ^a + # ^^ # - # source://prism//lib/prism/node.rb#12685 + # Similar, any expression can be used with pinning. This results in a `PinnedExpressionNode`. + # + # foo => ^(a + 1) + # + # Anything else will result in the regular node for that expression, for example a `ConstantReadNode`. + # + # foo => CONST + # + # source://prism//lib/prism/node.rb#12835 sig { returns(Prism::Node) } def pattern; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#12696 + # source://prism//lib/prism/node.rb#12849 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#12711 + # source://prism//lib/prism/node.rb#12864 sig { override.returns(Symbol) } def type; end - # attr_reader value: Prism::node + # Represents the left-hand side of the operator. + # + # foo => bar + # ^^^ # - # source://prism//lib/prism/node.rb#12682 + # source://prism//lib/prism/node.rb#12790 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#12716 + # source://prism//lib/prism/node.rb#12869 def type; end end end @@ -24765,13 +24779,13 @@ end # /(?bar)/ =~ baz # ^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#12734 +# source://prism//lib/prism/node.rb#12887 class Prism::MatchWriteNode < ::Prism::Node # Initialize a new MatchWriteNode node. # # @return [MatchWriteNode] a new instance of MatchWriteNode # - # source://prism//lib/prism/node.rb#12736 + # source://prism//lib/prism/node.rb#12889 sig do params( source: Prism::Source, @@ -24787,42 +24801,42 @@ class Prism::MatchWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#12801 + # source://prism//lib/prism/node.rb#12954 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#12746 + # source://prism//lib/prism/node.rb#12899 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader call: CallNode # - # source://prism//lib/prism/node.rb#12779 + # source://prism//lib/prism/node.rb#12932 sig { returns(Prism::CallNode) } def call; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12751 + # source://prism//lib/prism/node.rb#12904 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#12761 + # source://prism//lib/prism/node.rb#12914 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#12756 + # source://prism//lib/prism/node.rb#12909 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?call: CallNode, ?targets: Array[LocalVariableTargetNode]) -> MatchWriteNode # - # source://prism//lib/prism/node.rb#12766 + # source://prism//lib/prism/node.rb#12919 sig do params( node_id: Integer, @@ -24834,16 +24848,16 @@ class Prism::MatchWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), call: T.unsafe(nil), targets: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12751 + # source://prism//lib/prism/node.rb#12904 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, call: CallNode, targets: Array[LocalVariableTargetNode] } # - # source://prism//lib/prism/node.rb#12774 + # source://prism//lib/prism/node.rb#12927 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -24852,88 +24866,88 @@ class Prism::MatchWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#12785 + # source://prism//lib/prism/node.rb#12938 sig { override.returns(String) } def inspect; end # attr_reader targets: Array[LocalVariableTargetNode] # - # source://prism//lib/prism/node.rb#12782 + # source://prism//lib/prism/node.rb#12935 sig { returns(T::Array[Prism::LocalVariableTargetNode]) } def targets; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#12790 + # source://prism//lib/prism/node.rb#12943 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#12795 + # source://prism//lib/prism/node.rb#12948 def type; end end end # Represents a node that is missing from the source and results in a syntax error. # -# source://prism//lib/prism/node.rb#12810 +# source://prism//lib/prism/node.rb#12963 class Prism::MissingNode < ::Prism::Node # Initialize a new MissingNode node. # # @return [MissingNode] a new instance of MissingNode # - # source://prism//lib/prism/node.rb#12812 + # source://prism//lib/prism/node.rb#12965 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#12869 + # source://prism//lib/prism/node.rb#13022 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#12820 + # source://prism//lib/prism/node.rb#12973 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12825 + # source://prism//lib/prism/node.rb#12978 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#12835 + # source://prism//lib/prism/node.rb#12988 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#12830 + # source://prism//lib/prism/node.rb#12983 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> MissingNode # - # source://prism//lib/prism/node.rb#12840 + # source://prism//lib/prism/node.rb#12993 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::MissingNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12825 + # source://prism//lib/prism/node.rb#12978 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#12848 + # source://prism//lib/prism/node.rb#13001 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -24942,20 +24956,20 @@ class Prism::MissingNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#12853 + # source://prism//lib/prism/node.rb#13006 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#12858 + # source://prism//lib/prism/node.rb#13011 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#12863 + # source://prism//lib/prism/node.rb#13016 def type; end end end @@ -24965,13 +24979,13 @@ end # module Foo end # ^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#12878 +# source://prism//lib/prism/node.rb#13031 class Prism::ModuleNode < ::Prism::Node # Initialize a new ModuleNode node. # # @return [ModuleNode] a new instance of ModuleNode # - # source://prism//lib/prism/node.rb#12880 + # source://prism//lib/prism/node.rb#13033 sig do params( source: Prism::Source, @@ -24991,48 +25005,48 @@ class Prism::ModuleNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#12994 + # source://prism//lib/prism/node.rb#13147 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#12894 + # source://prism//lib/prism/node.rb#13047 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader body: StatementsNode | BeginNode | nil # - # source://prism//lib/prism/node.rb#12949 + # source://prism//lib/prism/node.rb#13102 sig { returns(T.nilable(T.any(Prism::StatementsNode, Prism::BeginNode))) } def body; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12899 + # source://prism//lib/prism/node.rb#13052 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#12912 + # source://prism//lib/prism/node.rb#13065 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#12904 + # source://prism//lib/prism/node.rb#13057 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # attr_reader constant_path: ConstantReadNode | ConstantPathNode | MissingNode # - # source://prism//lib/prism/node.rb#12946 + # source://prism//lib/prism/node.rb#13099 sig { returns(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode, Prism::MissingNode)) } def constant_path; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?locals: Array[Symbol], ?module_keyword_loc: Location, ?constant_path: ConstantReadNode | ConstantPathNode | MissingNode, ?body: StatementsNode | BeginNode | nil, ?end_keyword_loc: Location, ?name: Symbol) -> ModuleNode # - # source://prism//lib/prism/node.rb#12917 + # source://prism//lib/prism/node.rb#13070 sig do params( node_id: Integer, @@ -25048,28 +25062,28 @@ class Prism::ModuleNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), module_keyword_loc: T.unsafe(nil), constant_path: T.unsafe(nil), body: T.unsafe(nil), end_keyword_loc: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#12899 + # source://prism//lib/prism/node.rb#13052 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], module_keyword_loc: Location, constant_path: ConstantReadNode | ConstantPathNode | MissingNode, body: StatementsNode | BeginNode | nil, end_keyword_loc: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#12925 + # source://prism//lib/prism/node.rb#13078 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # def end_keyword: () -> String # - # source://prism//lib/prism/node.rb#12973 + # source://prism//lib/prism/node.rb#13126 sig { returns(String) } def end_keyword; end # attr_reader end_keyword_loc: Location # - # source://prism//lib/prism/node.rb#12952 + # source://prism//lib/prism/node.rb#13105 sig { returns(Prism::Location) } def end_keyword_loc; end @@ -25078,56 +25092,56 @@ class Prism::ModuleNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#12978 + # source://prism//lib/prism/node.rb#13131 sig { override.returns(String) } def inspect; end # attr_reader locals: Array[Symbol] # - # source://prism//lib/prism/node.rb#12930 + # source://prism//lib/prism/node.rb#13083 sig { returns(T::Array[Symbol]) } def locals; end # def module_keyword: () -> String # - # source://prism//lib/prism/node.rb#12968 + # source://prism//lib/prism/node.rb#13121 sig { returns(String) } def module_keyword; end # attr_reader module_keyword_loc: Location # - # source://prism//lib/prism/node.rb#12933 + # source://prism//lib/prism/node.rb#13086 sig { returns(Prism::Location) } def module_keyword_loc; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#12965 + # source://prism//lib/prism/node.rb#13118 sig { returns(Symbol) } def name; end # Save the end_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#12960 + # source://prism//lib/prism/node.rb#13113 def save_end_keyword_loc(repository); end # Save the module_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#12941 + # source://prism//lib/prism/node.rb#13094 def save_module_keyword_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#12983 + # source://prism//lib/prism/node.rb#13136 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#12988 + # source://prism//lib/prism/node.rb#13141 def type; end end end @@ -25142,13 +25156,13 @@ end # for a, b in [[1, 2], [3, 4]] # ^^^^ # -# source://prism//lib/prism/node.rb#13015 +# source://prism//lib/prism/node.rb#13168 class Prism::MultiTargetNode < ::Prism::Node # Initialize a new MultiTargetNode node. # # @return [MultiTargetNode] a new instance of MultiTargetNode # - # source://prism//lib/prism/node.rb#13017 + # source://prism//lib/prism/node.rb#13170 sig do params( source: Prism::Source, @@ -25167,36 +25181,36 @@ class Prism::MultiTargetNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#13170 + # source://prism//lib/prism/node.rb#13323 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#13030 + # source://prism//lib/prism/node.rb#13183 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13035 + # source://prism//lib/prism/node.rb#13188 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#13049 + # source://prism//lib/prism/node.rb#13202 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#13040 + # source://prism//lib/prism/node.rb#13193 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?lefts: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | RequiredParameterNode | BackReferenceReadNode | NumberedReferenceReadNode], ?rest: ImplicitRestNode | SplatNode | nil, ?rights: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | RequiredParameterNode | BackReferenceReadNode | NumberedReferenceReadNode], ?lparen_loc: Location?, ?rparen_loc: Location?) -> MultiTargetNode # - # source://prism//lib/prism/node.rb#13054 + # source://prism//lib/prism/node.rb#13207 sig do params( node_id: Integer, @@ -25211,16 +25225,16 @@ class Prism::MultiTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), lefts: T.unsafe(nil), rest: T.unsafe(nil), rights: T.unsafe(nil), lparen_loc: T.unsafe(nil), rparen_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13035 + # source://prism//lib/prism/node.rb#13188 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, lefts: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | RequiredParameterNode | BackReferenceReadNode | NumberedReferenceReadNode], rest: ImplicitRestNode | SplatNode | nil, rights: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | RequiredParameterNode | BackReferenceReadNode | NumberedReferenceReadNode], lparen_loc: Location?, rparen_loc: Location? } # - # source://prism//lib/prism/node.rb#13062 + # source://prism//lib/prism/node.rb#13215 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -25229,7 +25243,7 @@ class Prism::MultiTargetNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#13154 + # source://prism//lib/prism/node.rb#13307 sig { override.returns(String) } def inspect; end @@ -25243,7 +25257,7 @@ class Prism::MultiTargetNode < ::Prism::Node # a, (b, c) = 1, 2, 3, 4, 5 # ^^^^ # - # source://prism//lib/prism/node.rb#13075 + # source://prism//lib/prism/node.rb#13228 sig do returns(T::Array[T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::MultiTargetNode, Prism::RequiredParameterNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode)]) end @@ -25251,7 +25265,7 @@ class Prism::MultiTargetNode < ::Prism::Node # def lparen: () -> String? # - # source://prism//lib/prism/node.rb#13144 + # source://prism//lib/prism/node.rb#13297 sig { returns(T.nilable(String)) } def lparen; end @@ -25260,7 +25274,7 @@ class Prism::MultiTargetNode < ::Prism::Node # a, (b, c) = 1, 2, 3 # ^ # - # source://prism//lib/prism/node.rb#13103 + # source://prism//lib/prism/node.rb#13256 sig { returns(T.nilable(Prism::Location)) } def lparen_loc; end @@ -25279,7 +25293,7 @@ class Prism::MultiTargetNode < ::Prism::Node # a, (b,) = 1, 2, 3, 4 # ^ # - # source://prism//lib/prism/node.rb#13091 + # source://prism//lib/prism/node.rb#13244 sig { returns(T.nilable(T.any(Prism::ImplicitRestNode, Prism::SplatNode))) } def rest; end @@ -25288,7 +25302,7 @@ class Prism::MultiTargetNode < ::Prism::Node # a, (*, b, c) = 1, 2, 3, 4, 5 # ^^^^ # - # source://prism//lib/prism/node.rb#13097 + # source://prism//lib/prism/node.rb#13250 sig do returns(T::Array[T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::MultiTargetNode, Prism::RequiredParameterNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode)]) end @@ -25296,7 +25310,7 @@ class Prism::MultiTargetNode < ::Prism::Node # def rparen: () -> String? # - # source://prism//lib/prism/node.rb#13149 + # source://prism//lib/prism/node.rb#13302 sig { returns(T.nilable(String)) } def rparen; end @@ -25305,32 +25319,32 @@ class Prism::MultiTargetNode < ::Prism::Node # a, (b, c) = 1, 2, 3 # ^ # - # source://prism//lib/prism/node.rb#13125 + # source://prism//lib/prism/node.rb#13278 sig { returns(T.nilable(Prism::Location)) } def rparen_loc; end # Save the lparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#13117 + # source://prism//lib/prism/node.rb#13270 def save_lparen_loc(repository); end # Save the rparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#13139 + # source://prism//lib/prism/node.rb#13292 def save_rparen_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#13159 + # source://prism//lib/prism/node.rb#13312 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#13164 + # source://prism//lib/prism/node.rb#13317 def type; end end end @@ -25340,13 +25354,13 @@ end # a, b, c = 1, 2, 3 # ^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#13186 +# source://prism//lib/prism/node.rb#13339 class Prism::MultiWriteNode < ::Prism::Node # Initialize a new MultiWriteNode node. # # @return [MultiWriteNode] a new instance of MultiWriteNode # - # source://prism//lib/prism/node.rb#13188 + # source://prism//lib/prism/node.rb#13341 sig do params( source: Prism::Source, @@ -25367,36 +25381,36 @@ class Prism::MultiWriteNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#13371 + # source://prism//lib/prism/node.rb#13524 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#13203 + # source://prism//lib/prism/node.rb#13356 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13208 + # source://prism//lib/prism/node.rb#13361 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#13223 + # source://prism//lib/prism/node.rb#13376 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#13213 + # source://prism//lib/prism/node.rb#13366 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?lefts: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | BackReferenceReadNode | NumberedReferenceReadNode], ?rest: ImplicitRestNode | SplatNode | nil, ?rights: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | BackReferenceReadNode | NumberedReferenceReadNode], ?lparen_loc: Location?, ?rparen_loc: Location?, ?operator_loc: Location, ?value: Prism::node) -> MultiWriteNode # - # source://prism//lib/prism/node.rb#13228 + # source://prism//lib/prism/node.rb#13381 sig do params( node_id: Integer, @@ -25413,16 +25427,16 @@ class Prism::MultiWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), lefts: T.unsafe(nil), rest: T.unsafe(nil), rights: T.unsafe(nil), lparen_loc: T.unsafe(nil), rparen_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13208 + # source://prism//lib/prism/node.rb#13361 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, lefts: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | BackReferenceReadNode | NumberedReferenceReadNode], rest: ImplicitRestNode | SplatNode | nil, rights: Array[LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | MultiTargetNode | BackReferenceReadNode | NumberedReferenceReadNode], lparen_loc: Location?, rparen_loc: Location?, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#13236 + # source://prism//lib/prism/node.rb#13389 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -25431,7 +25445,7 @@ class Prism::MultiWriteNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#13355 + # source://prism//lib/prism/node.rb#13508 sig { override.returns(String) } def inspect; end @@ -25445,7 +25459,7 @@ class Prism::MultiWriteNode < ::Prism::Node # a, b, c = 1, 2, 3, 4, 5 # ^^^^^^^ # - # source://prism//lib/prism/node.rb#13249 + # source://prism//lib/prism/node.rb#13402 sig do returns(T::Array[T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::MultiTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode)]) end @@ -25453,7 +25467,7 @@ class Prism::MultiWriteNode < ::Prism::Node # def lparen: () -> String? # - # source://prism//lib/prism/node.rb#13340 + # source://prism//lib/prism/node.rb#13493 sig { returns(T.nilable(String)) } def lparen; end @@ -25462,13 +25476,13 @@ class Prism::MultiWriteNode < ::Prism::Node # (a, b, c) = 1, 2, 3 # ^ # - # source://prism//lib/prism/node.rb#13277 + # source://prism//lib/prism/node.rb#13430 sig { returns(T.nilable(Prism::Location)) } def lparen_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#13350 + # source://prism//lib/prism/node.rb#13503 sig { returns(String) } def operator; end @@ -25477,7 +25491,7 @@ class Prism::MultiWriteNode < ::Prism::Node # a, b, c = 1, 2, 3 # ^ # - # source://prism//lib/prism/node.rb#13321 + # source://prism//lib/prism/node.rb#13474 sig { returns(Prism::Location) } def operator_loc; end @@ -25496,7 +25510,7 @@ class Prism::MultiWriteNode < ::Prism::Node # a, b, = 1, 2, 3, 4 # ^ # - # source://prism//lib/prism/node.rb#13265 + # source://prism//lib/prism/node.rb#13418 sig { returns(T.nilable(T.any(Prism::ImplicitRestNode, Prism::SplatNode))) } def rest; end @@ -25505,7 +25519,7 @@ class Prism::MultiWriteNode < ::Prism::Node # a, *, b, c = 1, 2, 3, 4, 5 # ^^^^ # - # source://prism//lib/prism/node.rb#13271 + # source://prism//lib/prism/node.rb#13424 sig do returns(T::Array[T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::MultiTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode)]) end @@ -25513,7 +25527,7 @@ class Prism::MultiWriteNode < ::Prism::Node # def rparen: () -> String? # - # source://prism//lib/prism/node.rb#13345 + # source://prism//lib/prism/node.rb#13498 sig { returns(T.nilable(String)) } def rparen; end @@ -25522,31 +25536,31 @@ class Prism::MultiWriteNode < ::Prism::Node # (a, b, c) = 1, 2, 3 # ^ # - # source://prism//lib/prism/node.rb#13299 + # source://prism//lib/prism/node.rb#13452 sig { returns(T.nilable(Prism::Location)) } def rparen_loc; end # Save the lparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#13291 + # source://prism//lib/prism/node.rb#13444 def save_lparen_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#13329 + # source://prism//lib/prism/node.rb#13482 def save_operator_loc(repository); end # Save the rparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#13313 + # source://prism//lib/prism/node.rb#13466 def save_rparen_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#13360 + # source://prism//lib/prism/node.rb#13513 sig { override.returns(Symbol) } def type; end @@ -25555,14 +25569,14 @@ class Prism::MultiWriteNode < ::Prism::Node # a, b, c = 1, 2, 3 # ^^^^^^^ # - # source://prism//lib/prism/node.rb#13337 + # source://prism//lib/prism/node.rb#13490 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#13365 + # source://prism//lib/prism/node.rb#13518 def type; end end end @@ -25571,761 +25585,761 @@ end # visited. This is useful for consumers that want to mutate the tree, as you # can change subtrees in place without effecting the rest of the tree. # -# source://prism//lib/prism/mutation_compiler.rb#13 +# source://prism//lib/prism/mutation_compiler.rb#16 class Prism::MutationCompiler < ::Prism::Compiler # Copy a AliasGlobalVariableNode node # - # source://prism//lib/prism/mutation_compiler.rb#15 + # source://prism//lib/prism/mutation_compiler.rb#18 def visit_alias_global_variable_node(node); end # Copy a AliasMethodNode node # - # source://prism//lib/prism/mutation_compiler.rb#20 + # source://prism//lib/prism/mutation_compiler.rb#23 def visit_alias_method_node(node); end # Copy a AlternationPatternNode node # - # source://prism//lib/prism/mutation_compiler.rb#25 + # source://prism//lib/prism/mutation_compiler.rb#28 def visit_alternation_pattern_node(node); end # Copy a AndNode node # - # source://prism//lib/prism/mutation_compiler.rb#30 + # source://prism//lib/prism/mutation_compiler.rb#33 def visit_and_node(node); end # Copy a ArgumentsNode node # - # source://prism//lib/prism/mutation_compiler.rb#35 + # source://prism//lib/prism/mutation_compiler.rb#38 def visit_arguments_node(node); end # Copy a ArrayNode node # - # source://prism//lib/prism/mutation_compiler.rb#40 + # source://prism//lib/prism/mutation_compiler.rb#43 def visit_array_node(node); end # Copy a ArrayPatternNode node # - # source://prism//lib/prism/mutation_compiler.rb#45 + # source://prism//lib/prism/mutation_compiler.rb#48 def visit_array_pattern_node(node); end # Copy a AssocNode node # - # source://prism//lib/prism/mutation_compiler.rb#50 + # source://prism//lib/prism/mutation_compiler.rb#53 def visit_assoc_node(node); end # Copy a AssocSplatNode node # - # source://prism//lib/prism/mutation_compiler.rb#55 + # source://prism//lib/prism/mutation_compiler.rb#58 def visit_assoc_splat_node(node); end # Copy a BackReferenceReadNode node # - # source://prism//lib/prism/mutation_compiler.rb#60 + # source://prism//lib/prism/mutation_compiler.rb#63 def visit_back_reference_read_node(node); end # Copy a BeginNode node # - # source://prism//lib/prism/mutation_compiler.rb#65 + # source://prism//lib/prism/mutation_compiler.rb#68 def visit_begin_node(node); end # Copy a BlockArgumentNode node # - # source://prism//lib/prism/mutation_compiler.rb#70 + # source://prism//lib/prism/mutation_compiler.rb#73 def visit_block_argument_node(node); end # Copy a BlockLocalVariableNode node # - # source://prism//lib/prism/mutation_compiler.rb#75 + # source://prism//lib/prism/mutation_compiler.rb#78 def visit_block_local_variable_node(node); end # Copy a BlockNode node # - # source://prism//lib/prism/mutation_compiler.rb#80 + # source://prism//lib/prism/mutation_compiler.rb#83 def visit_block_node(node); end # Copy a BlockParameterNode node # - # source://prism//lib/prism/mutation_compiler.rb#85 + # source://prism//lib/prism/mutation_compiler.rb#88 def visit_block_parameter_node(node); end # Copy a BlockParametersNode node # - # source://prism//lib/prism/mutation_compiler.rb#90 + # source://prism//lib/prism/mutation_compiler.rb#93 def visit_block_parameters_node(node); end # Copy a BreakNode node # - # source://prism//lib/prism/mutation_compiler.rb#95 + # source://prism//lib/prism/mutation_compiler.rb#98 def visit_break_node(node); end # Copy a CallAndWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#100 + # source://prism//lib/prism/mutation_compiler.rb#103 def visit_call_and_write_node(node); end # Copy a CallNode node # - # source://prism//lib/prism/mutation_compiler.rb#105 + # source://prism//lib/prism/mutation_compiler.rb#108 def visit_call_node(node); end # Copy a CallOperatorWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#110 + # source://prism//lib/prism/mutation_compiler.rb#113 def visit_call_operator_write_node(node); end # Copy a CallOrWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#115 + # source://prism//lib/prism/mutation_compiler.rb#118 def visit_call_or_write_node(node); end # Copy a CallTargetNode node # - # source://prism//lib/prism/mutation_compiler.rb#120 + # source://prism//lib/prism/mutation_compiler.rb#123 def visit_call_target_node(node); end # Copy a CapturePatternNode node # - # source://prism//lib/prism/mutation_compiler.rb#125 + # source://prism//lib/prism/mutation_compiler.rb#128 def visit_capture_pattern_node(node); end # Copy a CaseMatchNode node # - # source://prism//lib/prism/mutation_compiler.rb#130 + # source://prism//lib/prism/mutation_compiler.rb#133 def visit_case_match_node(node); end # Copy a CaseNode node # - # source://prism//lib/prism/mutation_compiler.rb#135 + # source://prism//lib/prism/mutation_compiler.rb#138 def visit_case_node(node); end # Copy a ClassNode node # - # source://prism//lib/prism/mutation_compiler.rb#140 + # source://prism//lib/prism/mutation_compiler.rb#143 def visit_class_node(node); end # Copy a ClassVariableAndWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#145 + # source://prism//lib/prism/mutation_compiler.rb#148 def visit_class_variable_and_write_node(node); end # Copy a ClassVariableOperatorWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#150 + # source://prism//lib/prism/mutation_compiler.rb#153 def visit_class_variable_operator_write_node(node); end # Copy a ClassVariableOrWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#155 + # source://prism//lib/prism/mutation_compiler.rb#158 def visit_class_variable_or_write_node(node); end # Copy a ClassVariableReadNode node # - # source://prism//lib/prism/mutation_compiler.rb#160 + # source://prism//lib/prism/mutation_compiler.rb#163 def visit_class_variable_read_node(node); end # Copy a ClassVariableTargetNode node # - # source://prism//lib/prism/mutation_compiler.rb#165 + # source://prism//lib/prism/mutation_compiler.rb#168 def visit_class_variable_target_node(node); end # Copy a ClassVariableWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#170 + # source://prism//lib/prism/mutation_compiler.rb#173 def visit_class_variable_write_node(node); end # Copy a ConstantAndWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#175 + # source://prism//lib/prism/mutation_compiler.rb#178 def visit_constant_and_write_node(node); end # Copy a ConstantOperatorWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#180 + # source://prism//lib/prism/mutation_compiler.rb#183 def visit_constant_operator_write_node(node); end # Copy a ConstantOrWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#185 + # source://prism//lib/prism/mutation_compiler.rb#188 def visit_constant_or_write_node(node); end # Copy a ConstantPathAndWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#190 + # source://prism//lib/prism/mutation_compiler.rb#193 def visit_constant_path_and_write_node(node); end # Copy a ConstantPathNode node # - # source://prism//lib/prism/mutation_compiler.rb#195 + # source://prism//lib/prism/mutation_compiler.rb#198 def visit_constant_path_node(node); end # Copy a ConstantPathOperatorWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#200 + # source://prism//lib/prism/mutation_compiler.rb#203 def visit_constant_path_operator_write_node(node); end # Copy a ConstantPathOrWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#205 + # source://prism//lib/prism/mutation_compiler.rb#208 def visit_constant_path_or_write_node(node); end # Copy a ConstantPathTargetNode node # - # source://prism//lib/prism/mutation_compiler.rb#210 + # source://prism//lib/prism/mutation_compiler.rb#213 def visit_constant_path_target_node(node); end # Copy a ConstantPathWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#215 + # source://prism//lib/prism/mutation_compiler.rb#218 def visit_constant_path_write_node(node); end # Copy a ConstantReadNode node # - # source://prism//lib/prism/mutation_compiler.rb#220 + # source://prism//lib/prism/mutation_compiler.rb#223 def visit_constant_read_node(node); end # Copy a ConstantTargetNode node # - # source://prism//lib/prism/mutation_compiler.rb#225 + # source://prism//lib/prism/mutation_compiler.rb#228 def visit_constant_target_node(node); end # Copy a ConstantWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#230 + # source://prism//lib/prism/mutation_compiler.rb#233 def visit_constant_write_node(node); end # Copy a DefNode node # - # source://prism//lib/prism/mutation_compiler.rb#235 + # source://prism//lib/prism/mutation_compiler.rb#238 def visit_def_node(node); end # Copy a DefinedNode node # - # source://prism//lib/prism/mutation_compiler.rb#240 + # source://prism//lib/prism/mutation_compiler.rb#243 def visit_defined_node(node); end # Copy a ElseNode node # - # source://prism//lib/prism/mutation_compiler.rb#245 + # source://prism//lib/prism/mutation_compiler.rb#248 def visit_else_node(node); end # Copy a EmbeddedStatementsNode node # - # source://prism//lib/prism/mutation_compiler.rb#250 + # source://prism//lib/prism/mutation_compiler.rb#253 def visit_embedded_statements_node(node); end # Copy a EmbeddedVariableNode node # - # source://prism//lib/prism/mutation_compiler.rb#255 + # source://prism//lib/prism/mutation_compiler.rb#258 def visit_embedded_variable_node(node); end # Copy a EnsureNode node # - # source://prism//lib/prism/mutation_compiler.rb#260 + # source://prism//lib/prism/mutation_compiler.rb#263 def visit_ensure_node(node); end # Copy a FalseNode node # - # source://prism//lib/prism/mutation_compiler.rb#265 + # source://prism//lib/prism/mutation_compiler.rb#268 def visit_false_node(node); end # Copy a FindPatternNode node # - # source://prism//lib/prism/mutation_compiler.rb#270 + # source://prism//lib/prism/mutation_compiler.rb#273 def visit_find_pattern_node(node); end # Copy a FlipFlopNode node # - # source://prism//lib/prism/mutation_compiler.rb#275 + # source://prism//lib/prism/mutation_compiler.rb#278 def visit_flip_flop_node(node); end # Copy a FloatNode node # - # source://prism//lib/prism/mutation_compiler.rb#280 + # source://prism//lib/prism/mutation_compiler.rb#283 def visit_float_node(node); end # Copy a ForNode node # - # source://prism//lib/prism/mutation_compiler.rb#285 + # source://prism//lib/prism/mutation_compiler.rb#288 def visit_for_node(node); end # Copy a ForwardingArgumentsNode node # - # source://prism//lib/prism/mutation_compiler.rb#290 + # source://prism//lib/prism/mutation_compiler.rb#293 def visit_forwarding_arguments_node(node); end # Copy a ForwardingParameterNode node # - # source://prism//lib/prism/mutation_compiler.rb#295 + # source://prism//lib/prism/mutation_compiler.rb#298 def visit_forwarding_parameter_node(node); end # Copy a ForwardingSuperNode node # - # source://prism//lib/prism/mutation_compiler.rb#300 + # source://prism//lib/prism/mutation_compiler.rb#303 def visit_forwarding_super_node(node); end # Copy a GlobalVariableAndWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#305 + # source://prism//lib/prism/mutation_compiler.rb#308 def visit_global_variable_and_write_node(node); end # Copy a GlobalVariableOperatorWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#310 + # source://prism//lib/prism/mutation_compiler.rb#313 def visit_global_variable_operator_write_node(node); end # Copy a GlobalVariableOrWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#315 + # source://prism//lib/prism/mutation_compiler.rb#318 def visit_global_variable_or_write_node(node); end # Copy a GlobalVariableReadNode node # - # source://prism//lib/prism/mutation_compiler.rb#320 + # source://prism//lib/prism/mutation_compiler.rb#323 def visit_global_variable_read_node(node); end # Copy a GlobalVariableTargetNode node # - # source://prism//lib/prism/mutation_compiler.rb#325 + # source://prism//lib/prism/mutation_compiler.rb#328 def visit_global_variable_target_node(node); end # Copy a GlobalVariableWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#330 + # source://prism//lib/prism/mutation_compiler.rb#333 def visit_global_variable_write_node(node); end # Copy a HashNode node # - # source://prism//lib/prism/mutation_compiler.rb#335 + # source://prism//lib/prism/mutation_compiler.rb#338 def visit_hash_node(node); end # Copy a HashPatternNode node # - # source://prism//lib/prism/mutation_compiler.rb#340 + # source://prism//lib/prism/mutation_compiler.rb#343 def visit_hash_pattern_node(node); end # Copy a IfNode node # - # source://prism//lib/prism/mutation_compiler.rb#345 + # source://prism//lib/prism/mutation_compiler.rb#348 def visit_if_node(node); end # Copy a ImaginaryNode node # - # source://prism//lib/prism/mutation_compiler.rb#350 + # source://prism//lib/prism/mutation_compiler.rb#353 def visit_imaginary_node(node); end # Copy a ImplicitNode node # - # source://prism//lib/prism/mutation_compiler.rb#355 + # source://prism//lib/prism/mutation_compiler.rb#358 def visit_implicit_node(node); end # Copy a ImplicitRestNode node # - # source://prism//lib/prism/mutation_compiler.rb#360 + # source://prism//lib/prism/mutation_compiler.rb#363 def visit_implicit_rest_node(node); end # Copy a InNode node # - # source://prism//lib/prism/mutation_compiler.rb#365 + # source://prism//lib/prism/mutation_compiler.rb#368 def visit_in_node(node); end # Copy a IndexAndWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#370 + # source://prism//lib/prism/mutation_compiler.rb#373 def visit_index_and_write_node(node); end # Copy a IndexOperatorWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#375 + # source://prism//lib/prism/mutation_compiler.rb#378 def visit_index_operator_write_node(node); end # Copy a IndexOrWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#380 + # source://prism//lib/prism/mutation_compiler.rb#383 def visit_index_or_write_node(node); end # Copy a IndexTargetNode node # - # source://prism//lib/prism/mutation_compiler.rb#385 + # source://prism//lib/prism/mutation_compiler.rb#388 def visit_index_target_node(node); end # Copy a InstanceVariableAndWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#390 + # source://prism//lib/prism/mutation_compiler.rb#393 def visit_instance_variable_and_write_node(node); end # Copy a InstanceVariableOperatorWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#395 + # source://prism//lib/prism/mutation_compiler.rb#398 def visit_instance_variable_operator_write_node(node); end # Copy a InstanceVariableOrWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#400 + # source://prism//lib/prism/mutation_compiler.rb#403 def visit_instance_variable_or_write_node(node); end # Copy a InstanceVariableReadNode node # - # source://prism//lib/prism/mutation_compiler.rb#405 + # source://prism//lib/prism/mutation_compiler.rb#408 def visit_instance_variable_read_node(node); end # Copy a InstanceVariableTargetNode node # - # source://prism//lib/prism/mutation_compiler.rb#410 + # source://prism//lib/prism/mutation_compiler.rb#413 def visit_instance_variable_target_node(node); end # Copy a InstanceVariableWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#415 + # source://prism//lib/prism/mutation_compiler.rb#418 def visit_instance_variable_write_node(node); end # Copy a IntegerNode node # - # source://prism//lib/prism/mutation_compiler.rb#420 + # source://prism//lib/prism/mutation_compiler.rb#423 def visit_integer_node(node); end # Copy a InterpolatedMatchLastLineNode node # - # source://prism//lib/prism/mutation_compiler.rb#425 + # source://prism//lib/prism/mutation_compiler.rb#428 def visit_interpolated_match_last_line_node(node); end # Copy a InterpolatedRegularExpressionNode node # - # source://prism//lib/prism/mutation_compiler.rb#430 + # source://prism//lib/prism/mutation_compiler.rb#433 def visit_interpolated_regular_expression_node(node); end # Copy a InterpolatedStringNode node # - # source://prism//lib/prism/mutation_compiler.rb#435 + # source://prism//lib/prism/mutation_compiler.rb#438 def visit_interpolated_string_node(node); end # Copy a InterpolatedSymbolNode node # - # source://prism//lib/prism/mutation_compiler.rb#440 + # source://prism//lib/prism/mutation_compiler.rb#443 def visit_interpolated_symbol_node(node); end # Copy a InterpolatedXStringNode node # - # source://prism//lib/prism/mutation_compiler.rb#445 + # source://prism//lib/prism/mutation_compiler.rb#448 def visit_interpolated_x_string_node(node); end # Copy a ItLocalVariableReadNode node # - # source://prism//lib/prism/mutation_compiler.rb#450 + # source://prism//lib/prism/mutation_compiler.rb#453 def visit_it_local_variable_read_node(node); end # Copy a ItParametersNode node # - # source://prism//lib/prism/mutation_compiler.rb#455 + # source://prism//lib/prism/mutation_compiler.rb#458 def visit_it_parameters_node(node); end # Copy a KeywordHashNode node # - # source://prism//lib/prism/mutation_compiler.rb#460 + # source://prism//lib/prism/mutation_compiler.rb#463 def visit_keyword_hash_node(node); end # Copy a KeywordRestParameterNode node # - # source://prism//lib/prism/mutation_compiler.rb#465 + # source://prism//lib/prism/mutation_compiler.rb#468 def visit_keyword_rest_parameter_node(node); end # Copy a LambdaNode node # - # source://prism//lib/prism/mutation_compiler.rb#470 + # source://prism//lib/prism/mutation_compiler.rb#473 def visit_lambda_node(node); end # Copy a LocalVariableAndWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#475 + # source://prism//lib/prism/mutation_compiler.rb#478 def visit_local_variable_and_write_node(node); end # Copy a LocalVariableOperatorWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#480 + # source://prism//lib/prism/mutation_compiler.rb#483 def visit_local_variable_operator_write_node(node); end # Copy a LocalVariableOrWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#485 + # source://prism//lib/prism/mutation_compiler.rb#488 def visit_local_variable_or_write_node(node); end # Copy a LocalVariableReadNode node # - # source://prism//lib/prism/mutation_compiler.rb#490 + # source://prism//lib/prism/mutation_compiler.rb#493 def visit_local_variable_read_node(node); end # Copy a LocalVariableTargetNode node # - # source://prism//lib/prism/mutation_compiler.rb#495 + # source://prism//lib/prism/mutation_compiler.rb#498 def visit_local_variable_target_node(node); end # Copy a LocalVariableWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#500 + # source://prism//lib/prism/mutation_compiler.rb#503 def visit_local_variable_write_node(node); end # Copy a MatchLastLineNode node # - # source://prism//lib/prism/mutation_compiler.rb#505 + # source://prism//lib/prism/mutation_compiler.rb#508 def visit_match_last_line_node(node); end # Copy a MatchPredicateNode node # - # source://prism//lib/prism/mutation_compiler.rb#510 + # source://prism//lib/prism/mutation_compiler.rb#513 def visit_match_predicate_node(node); end # Copy a MatchRequiredNode node # - # source://prism//lib/prism/mutation_compiler.rb#515 + # source://prism//lib/prism/mutation_compiler.rb#518 def visit_match_required_node(node); end # Copy a MatchWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#520 + # source://prism//lib/prism/mutation_compiler.rb#523 def visit_match_write_node(node); end # Copy a MissingNode node # - # source://prism//lib/prism/mutation_compiler.rb#525 + # source://prism//lib/prism/mutation_compiler.rb#528 def visit_missing_node(node); end # Copy a ModuleNode node # - # source://prism//lib/prism/mutation_compiler.rb#530 + # source://prism//lib/prism/mutation_compiler.rb#533 def visit_module_node(node); end # Copy a MultiTargetNode node # - # source://prism//lib/prism/mutation_compiler.rb#535 + # source://prism//lib/prism/mutation_compiler.rb#538 def visit_multi_target_node(node); end # Copy a MultiWriteNode node # - # source://prism//lib/prism/mutation_compiler.rb#540 + # source://prism//lib/prism/mutation_compiler.rb#543 def visit_multi_write_node(node); end # Copy a NextNode node # - # source://prism//lib/prism/mutation_compiler.rb#545 + # source://prism//lib/prism/mutation_compiler.rb#548 def visit_next_node(node); end # Copy a NilNode node # - # source://prism//lib/prism/mutation_compiler.rb#550 + # source://prism//lib/prism/mutation_compiler.rb#553 def visit_nil_node(node); end # Copy a NoKeywordsParameterNode node # - # source://prism//lib/prism/mutation_compiler.rb#555 + # source://prism//lib/prism/mutation_compiler.rb#558 def visit_no_keywords_parameter_node(node); end # Copy a NumberedParametersNode node # - # source://prism//lib/prism/mutation_compiler.rb#560 + # source://prism//lib/prism/mutation_compiler.rb#563 def visit_numbered_parameters_node(node); end # Copy a NumberedReferenceReadNode node # - # source://prism//lib/prism/mutation_compiler.rb#565 + # source://prism//lib/prism/mutation_compiler.rb#568 def visit_numbered_reference_read_node(node); end # Copy a OptionalKeywordParameterNode node # - # source://prism//lib/prism/mutation_compiler.rb#570 + # source://prism//lib/prism/mutation_compiler.rb#573 def visit_optional_keyword_parameter_node(node); end # Copy a OptionalParameterNode node # - # source://prism//lib/prism/mutation_compiler.rb#575 + # source://prism//lib/prism/mutation_compiler.rb#578 def visit_optional_parameter_node(node); end # Copy a OrNode node # - # source://prism//lib/prism/mutation_compiler.rb#580 + # source://prism//lib/prism/mutation_compiler.rb#583 def visit_or_node(node); end # Copy a ParametersNode node # - # source://prism//lib/prism/mutation_compiler.rb#585 + # source://prism//lib/prism/mutation_compiler.rb#588 def visit_parameters_node(node); end # Copy a ParenthesesNode node # - # source://prism//lib/prism/mutation_compiler.rb#590 + # source://prism//lib/prism/mutation_compiler.rb#593 def visit_parentheses_node(node); end # Copy a PinnedExpressionNode node # - # source://prism//lib/prism/mutation_compiler.rb#595 + # source://prism//lib/prism/mutation_compiler.rb#598 def visit_pinned_expression_node(node); end # Copy a PinnedVariableNode node # - # source://prism//lib/prism/mutation_compiler.rb#600 + # source://prism//lib/prism/mutation_compiler.rb#603 def visit_pinned_variable_node(node); end # Copy a PostExecutionNode node # - # source://prism//lib/prism/mutation_compiler.rb#605 + # source://prism//lib/prism/mutation_compiler.rb#608 def visit_post_execution_node(node); end # Copy a PreExecutionNode node # - # source://prism//lib/prism/mutation_compiler.rb#610 + # source://prism//lib/prism/mutation_compiler.rb#613 def visit_pre_execution_node(node); end # Copy a ProgramNode node # - # source://prism//lib/prism/mutation_compiler.rb#615 + # source://prism//lib/prism/mutation_compiler.rb#618 def visit_program_node(node); end # Copy a RangeNode node # - # source://prism//lib/prism/mutation_compiler.rb#620 + # source://prism//lib/prism/mutation_compiler.rb#623 def visit_range_node(node); end # Copy a RationalNode node # - # source://prism//lib/prism/mutation_compiler.rb#625 + # source://prism//lib/prism/mutation_compiler.rb#628 def visit_rational_node(node); end # Copy a RedoNode node # - # source://prism//lib/prism/mutation_compiler.rb#630 + # source://prism//lib/prism/mutation_compiler.rb#633 def visit_redo_node(node); end # Copy a RegularExpressionNode node # - # source://prism//lib/prism/mutation_compiler.rb#635 + # source://prism//lib/prism/mutation_compiler.rb#638 def visit_regular_expression_node(node); end # Copy a RequiredKeywordParameterNode node # - # source://prism//lib/prism/mutation_compiler.rb#640 + # source://prism//lib/prism/mutation_compiler.rb#643 def visit_required_keyword_parameter_node(node); end # Copy a RequiredParameterNode node # - # source://prism//lib/prism/mutation_compiler.rb#645 + # source://prism//lib/prism/mutation_compiler.rb#648 def visit_required_parameter_node(node); end # Copy a RescueModifierNode node # - # source://prism//lib/prism/mutation_compiler.rb#650 + # source://prism//lib/prism/mutation_compiler.rb#653 def visit_rescue_modifier_node(node); end # Copy a RescueNode node # - # source://prism//lib/prism/mutation_compiler.rb#655 + # source://prism//lib/prism/mutation_compiler.rb#658 def visit_rescue_node(node); end # Copy a RestParameterNode node # - # source://prism//lib/prism/mutation_compiler.rb#660 + # source://prism//lib/prism/mutation_compiler.rb#663 def visit_rest_parameter_node(node); end # Copy a RetryNode node # - # source://prism//lib/prism/mutation_compiler.rb#665 + # source://prism//lib/prism/mutation_compiler.rb#668 def visit_retry_node(node); end # Copy a ReturnNode node # - # source://prism//lib/prism/mutation_compiler.rb#670 + # source://prism//lib/prism/mutation_compiler.rb#673 def visit_return_node(node); end # Copy a SelfNode node # - # source://prism//lib/prism/mutation_compiler.rb#675 + # source://prism//lib/prism/mutation_compiler.rb#678 def visit_self_node(node); end # Copy a ShareableConstantNode node # - # source://prism//lib/prism/mutation_compiler.rb#680 + # source://prism//lib/prism/mutation_compiler.rb#683 def visit_shareable_constant_node(node); end # Copy a SingletonClassNode node # - # source://prism//lib/prism/mutation_compiler.rb#685 + # source://prism//lib/prism/mutation_compiler.rb#688 def visit_singleton_class_node(node); end # Copy a SourceEncodingNode node # - # source://prism//lib/prism/mutation_compiler.rb#690 + # source://prism//lib/prism/mutation_compiler.rb#693 def visit_source_encoding_node(node); end # Copy a SourceFileNode node # - # source://prism//lib/prism/mutation_compiler.rb#695 + # source://prism//lib/prism/mutation_compiler.rb#698 def visit_source_file_node(node); end # Copy a SourceLineNode node # - # source://prism//lib/prism/mutation_compiler.rb#700 + # source://prism//lib/prism/mutation_compiler.rb#703 def visit_source_line_node(node); end # Copy a SplatNode node # - # source://prism//lib/prism/mutation_compiler.rb#705 + # source://prism//lib/prism/mutation_compiler.rb#708 def visit_splat_node(node); end # Copy a StatementsNode node # - # source://prism//lib/prism/mutation_compiler.rb#710 + # source://prism//lib/prism/mutation_compiler.rb#713 def visit_statements_node(node); end # Copy a StringNode node # - # source://prism//lib/prism/mutation_compiler.rb#715 + # source://prism//lib/prism/mutation_compiler.rb#718 def visit_string_node(node); end # Copy a SuperNode node # - # source://prism//lib/prism/mutation_compiler.rb#720 + # source://prism//lib/prism/mutation_compiler.rb#723 def visit_super_node(node); end # Copy a SymbolNode node # - # source://prism//lib/prism/mutation_compiler.rb#725 + # source://prism//lib/prism/mutation_compiler.rb#728 def visit_symbol_node(node); end # Copy a TrueNode node # - # source://prism//lib/prism/mutation_compiler.rb#730 + # source://prism//lib/prism/mutation_compiler.rb#733 def visit_true_node(node); end # Copy a UndefNode node # - # source://prism//lib/prism/mutation_compiler.rb#735 + # source://prism//lib/prism/mutation_compiler.rb#738 def visit_undef_node(node); end # Copy a UnlessNode node # - # source://prism//lib/prism/mutation_compiler.rb#740 + # source://prism//lib/prism/mutation_compiler.rb#743 def visit_unless_node(node); end # Copy a UntilNode node # - # source://prism//lib/prism/mutation_compiler.rb#745 + # source://prism//lib/prism/mutation_compiler.rb#748 def visit_until_node(node); end # Copy a WhenNode node # - # source://prism//lib/prism/mutation_compiler.rb#750 + # source://prism//lib/prism/mutation_compiler.rb#753 def visit_when_node(node); end # Copy a WhileNode node # - # source://prism//lib/prism/mutation_compiler.rb#755 + # source://prism//lib/prism/mutation_compiler.rb#758 def visit_while_node(node); end # Copy a XStringNode node # - # source://prism//lib/prism/mutation_compiler.rb#760 + # source://prism//lib/prism/mutation_compiler.rb#763 def visit_x_string_node(node); end # Copy a YieldNode node # - # source://prism//lib/prism/mutation_compiler.rb#765 + # source://prism//lib/prism/mutation_compiler.rb#768 def visit_yield_node(node); end end @@ -26334,13 +26348,13 @@ end # next 1 # ^^^^^^ # -# source://prism//lib/prism/node.rb#13389 +# source://prism//lib/prism/node.rb#13542 class Prism::NextNode < ::Prism::Node # Initialize a new NextNode node. # # @return [NextNode] a new instance of NextNode # - # source://prism//lib/prism/node.rb#13391 + # source://prism//lib/prism/node.rb#13544 sig do params( source: Prism::Source, @@ -26356,42 +26370,42 @@ class Prism::NextNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#13473 + # source://prism//lib/prism/node.rb#13626 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#13401 + # source://prism//lib/prism/node.rb#13554 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader arguments: ArgumentsNode? # - # source://prism//lib/prism/node.rb#13436 + # source://prism//lib/prism/node.rb#13589 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13406 + # source://prism//lib/prism/node.rb#13559 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#13418 + # source://prism//lib/prism/node.rb#13571 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#13411 + # source://prism//lib/prism/node.rb#13564 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?arguments: ArgumentsNode?, ?keyword_loc: Location) -> NextNode # - # source://prism//lib/prism/node.rb#13423 + # source://prism//lib/prism/node.rb#13576 sig do params( node_id: Integer, @@ -26403,16 +26417,16 @@ class Prism::NextNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), arguments: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13406 + # source://prism//lib/prism/node.rb#13559 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, arguments: ArgumentsNode?, keyword_loc: Location } # - # source://prism//lib/prism/node.rb#13431 + # source://prism//lib/prism/node.rb#13584 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -26421,38 +26435,38 @@ class Prism::NextNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#13457 + # source://prism//lib/prism/node.rb#13610 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#13452 + # source://prism//lib/prism/node.rb#13605 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#13439 + # source://prism//lib/prism/node.rb#13592 sig { returns(Prism::Location) } def keyword_loc; end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#13447 + # source://prism//lib/prism/node.rb#13600 def save_keyword_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#13462 + # source://prism//lib/prism/node.rb#13615 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#13467 + # source://prism//lib/prism/node.rb#13620 def type; end end end @@ -26462,62 +26476,62 @@ end # nil # ^^^ # -# source://prism//lib/prism/node.rb#13484 +# source://prism//lib/prism/node.rb#13637 class Prism::NilNode < ::Prism::Node # Initialize a new NilNode node. # # @return [NilNode] a new instance of NilNode # - # source://prism//lib/prism/node.rb#13486 + # source://prism//lib/prism/node.rb#13639 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#13543 + # source://prism//lib/prism/node.rb#13696 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#13494 + # source://prism//lib/prism/node.rb#13647 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13499 + # source://prism//lib/prism/node.rb#13652 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#13509 + # source://prism//lib/prism/node.rb#13662 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#13504 + # source://prism//lib/prism/node.rb#13657 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> NilNode # - # source://prism//lib/prism/node.rb#13514 + # source://prism//lib/prism/node.rb#13667 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::NilNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13499 + # source://prism//lib/prism/node.rb#13652 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#13522 + # source://prism//lib/prism/node.rb#13675 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -26526,20 +26540,20 @@ class Prism::NilNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#13527 + # source://prism//lib/prism/node.rb#13680 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#13532 + # source://prism//lib/prism/node.rb#13685 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#13537 + # source://prism//lib/prism/node.rb#13690 def type; end end end @@ -26550,13 +26564,13 @@ end # ^^^^^ # end # -# source://prism//lib/prism/node.rb#13553 +# source://prism//lib/prism/node.rb#13706 class Prism::NoKeywordsParameterNode < ::Prism::Node # Initialize a new NoKeywordsParameterNode node. # # @return [NoKeywordsParameterNode] a new instance of NoKeywordsParameterNode # - # source://prism//lib/prism/node.rb#13555 + # source://prism//lib/prism/node.rb#13708 sig do params( source: Prism::Source, @@ -26572,36 +26586,36 @@ class Prism::NoKeywordsParameterNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#13650 + # source://prism//lib/prism/node.rb#13803 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#13565 + # source://prism//lib/prism/node.rb#13718 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13570 + # source://prism//lib/prism/node.rb#13723 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#13580 + # source://prism//lib/prism/node.rb#13733 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#13575 + # source://prism//lib/prism/node.rb#13728 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?operator_loc: Location, ?keyword_loc: Location) -> NoKeywordsParameterNode # - # source://prism//lib/prism/node.rb#13585 + # source://prism//lib/prism/node.rb#13738 sig do params( node_id: Integer, @@ -26613,16 +26627,16 @@ class Prism::NoKeywordsParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), operator_loc: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13570 + # source://prism//lib/prism/node.rb#13723 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, operator_loc: Location, keyword_loc: Location } # - # source://prism//lib/prism/node.rb#13593 + # source://prism//lib/prism/node.rb#13746 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -26631,56 +26645,56 @@ class Prism::NoKeywordsParameterNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#13634 + # source://prism//lib/prism/node.rb#13787 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#13629 + # source://prism//lib/prism/node.rb#13782 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#13611 + # source://prism//lib/prism/node.rb#13764 sig { returns(Prism::Location) } def keyword_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#13624 + # source://prism//lib/prism/node.rb#13777 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#13598 + # source://prism//lib/prism/node.rb#13751 sig { returns(Prism::Location) } def operator_loc; end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#13619 + # source://prism//lib/prism/node.rb#13772 def save_keyword_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#13606 + # source://prism//lib/prism/node.rb#13759 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#13639 + # source://prism//lib/prism/node.rb#13792 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#13644 + # source://prism//lib/prism/node.rb#13797 def type; end end end @@ -26688,7 +26702,7 @@ end # This represents a node in the tree. It is the parent class of all of the # various node types. # -# source://prism//lib/prism/node.rb#12 +# source://prism//lib/prism/node.rb#15 class Prism::Node abstract! @@ -26696,7 +26710,7 @@ class Prism::Node # # @raise [NoMethodError] # - # source://prism//lib/prism/node.rb#258 + # source://prism//lib/prism/node.rb#261 sig { abstract.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -26706,32 +26720,32 @@ class Prism::Node # # node.breadth_first_search { |node| node.node_id == node_id } # - # source://prism//lib/prism/node.rb#228 + # source://prism//lib/prism/node.rb#231 sig { params(block: T.proc.params(node: Prism::Node).returns(T::Boolean)).returns(T.nilable(Prism::Node)) } def breadth_first_search(&block); end # Delegates to the cached_end_code_units_column of the associated location # object. # - # source://prism//lib/prism/node.rb#115 + # source://prism//lib/prism/node.rb#118 def cached_end_code_units_column(cache); end # Delegates to the cached_end_code_units_offset of the associated location # object. # - # source://prism//lib/prism/node.rb#83 + # source://prism//lib/prism/node.rb#86 def cached_end_code_units_offset(cache); end # Delegates to the cached_start_code_units_column of the associated location # object. # - # source://prism//lib/prism/node.rb#109 + # source://prism//lib/prism/node.rb#112 def cached_start_code_units_column(cache); end # Delegates to the cached_start_code_units_offset of the associated location # object. # - # source://prism//lib/prism/node.rb#77 + # source://prism//lib/prism/node.rb#80 def cached_start_code_units_offset(cache); end # Returns an array of child nodes, including `nil`s in the place of optional @@ -26739,7 +26753,7 @@ class Prism::Node # # @raise [NoMethodError] # - # source://prism//lib/prism/node.rb#264 + # source://prism//lib/prism/node.rb#267 sig { abstract.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end @@ -26748,13 +26762,13 @@ class Prism::Node # # @raise [NoMethodError] # - # source://prism//lib/prism/node.rb#278 + # source://prism//lib/prism/node.rb#281 sig { abstract.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # Delegates to the comments of the associated location object. # - # source://prism//lib/prism/node.rb#130 + # source://prism//lib/prism/node.rb#133 def comments; end # Returns an array of child nodes, excluding any `nil`s in the place of @@ -26762,7 +26776,7 @@ class Prism::Node # # @raise [NoMethodError] # - # source://prism//lib/prism/node.rb#272 + # source://prism//lib/prism/node.rb#275 sig { abstract.returns(T::Array[Prism::Node]) } def compact_child_nodes; end @@ -26771,37 +26785,37 @@ class Prism::Node # # @raise [NoMethodError] # - # source://prism//lib/prism/node.rb#264 + # source://prism//lib/prism/node.rb#267 sig { abstract.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node_ext.rb#7 + # source://prism//lib/prism/node_ext.rb#10 def deprecated(*replacements); end # Delegates to the end_character_column of the associated location object. # - # source://prism//lib/prism/node.rb#103 + # source://prism//lib/prism/node.rb#106 def end_character_column; end # Delegates to the end_character_offset of the associated location object. # - # source://prism//lib/prism/node.rb#71 + # source://prism//lib/prism/node.rb#74 def end_character_offset; end # Delegates to the end_column of the associated location object. # - # source://prism//lib/prism/node.rb#93 + # source://prism//lib/prism/node.rb#96 def end_column; end # Delegates to the end_line of the associated location object. # - # source://prism//lib/prism/node.rb#47 + # source://prism//lib/prism/node.rb#50 def end_line; end # The end offset of the node in the source. This method is effectively a # delegate method to the location object. # - # source://prism//lib/prism/node.rb#60 + # source://prism//lib/prism/node.rb#63 sig { returns(Integer) } def end_offset; end @@ -26812,19 +26826,19 @@ class Prism::Node # # @raise [NoMethodError] # - # source://prism//lib/prism/node.rb#283 + # source://prism//lib/prism/node.rb#286 sig { abstract.returns(String) } def inspect; end # Delegates to the leading_comments of the associated location object. # - # source://prism//lib/prism/node.rb#120 + # source://prism//lib/prism/node.rb#123 def leading_comments; end # A Location instance that represents the location of this node in the # source. # - # source://prism//lib/prism/node.rb#30 + # source://prism//lib/prism/node.rb#33 sig { returns(Prism::Location) } def location; end @@ -26832,16 +26846,16 @@ class Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#161 + # source://prism//lib/prism/node.rb#164 sig { returns(T::Boolean) } def newline?; end - # source://prism//lib/prism/parse_result/newlines.rb#69 + # source://prism//lib/prism/parse_result/newlines.rb#70 def newline_flag!(lines); end # @return [Boolean] # - # source://prism//lib/prism/parse_result/newlines.rb#65 + # source://prism//lib/prism/parse_result/newlines.rb#66 def newline_flag?; end # A unique identifier for this node. This is used in a very specific @@ -26849,38 +26863,38 @@ class Prism::Node # having to keep around the syntax tree in memory. This unique identifier # will be consistent across multiple parses of the same source code. # - # source://prism//lib/prism/node.rb#21 + # source://prism//lib/prism/node.rb#24 sig { returns(Integer) } def node_id; end # Similar to inspect, but respects the current level of indentation given by # the pretty print object. # - # source://prism//lib/prism/node.rb#172 + # source://prism//lib/prism/node.rb#175 sig { params(q: T.untyped).void } def pretty_print(q); end # Save this node using a saved source so that it can be retrieved later. # - # source://prism//lib/prism/node.rb#24 + # source://prism//lib/prism/node.rb#27 def save(repository); end # Save the location using a saved source so that it can be retrieved later. # - # source://prism//lib/prism/node.rb#37 + # source://prism//lib/prism/node.rb#40 def save_location(repository); end # Returns all of the lines of the source code associated with this node. # An alias for source_lines, used to mimic the API from # RubyVM::AbstractSyntaxTree to make it easier to migrate. # - # source://prism//lib/prism/node.rb#135 + # source://prism//lib/prism/node.rb#138 sig { returns(T::Array[String]) } def script_lines; end # Slice the location of the node from the source. # - # source://prism//lib/prism/node.rb#144 + # source://prism//lib/prism/node.rb#147 sig { returns(String) } def slice; end @@ -26888,40 +26902,40 @@ class Prism::Node # of the line that the location starts on, ending at the end of the line # that the location ends on. # - # source://prism//lib/prism/node.rb#151 + # source://prism//lib/prism/node.rb#154 sig { returns(String) } def slice_lines; end # Returns all of the lines of the source code associated with this node. # - # source://prism//lib/prism/node.rb#135 + # source://prism//lib/prism/node.rb#138 sig { returns(T::Array[String]) } def source_lines; end # Delegates to the start_character_column of the associated location object. # - # source://prism//lib/prism/node.rb#98 + # source://prism//lib/prism/node.rb#101 def start_character_column; end # Delegates to the start_character_offset of the associated location object. # - # source://prism//lib/prism/node.rb#66 + # source://prism//lib/prism/node.rb#69 def start_character_offset; end # Delegates to the start_column of the associated location object. # - # source://prism//lib/prism/node.rb#88 + # source://prism//lib/prism/node.rb#91 def start_column; end # Delegates to the start_line of the associated location object. # - # source://prism//lib/prism/node.rb#42 + # source://prism//lib/prism/node.rb#45 def start_line; end # The start offset of the node in the source. This method is effectively a # delegate method to the location object. # - # source://prism//lib/prism/node.rb#53 + # source://prism//lib/prism/node.rb#56 sig { returns(Integer) } def start_offset; end @@ -26929,19 +26943,19 @@ class Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#166 + # source://prism//lib/prism/node.rb#169 sig { returns(T::Boolean) } def static_literal?; end # Convert this node into a graphviz dot graph string. # - # source://prism//lib/prism/node.rb#180 + # source://prism//lib/prism/node.rb#183 sig { returns(String) } def to_dot; end # Delegates to the trailing_comments of the associated location object. # - # source://prism//lib/prism/node.rb#125 + # source://prism//lib/prism/node.rb#128 def trailing_comments; end # Returns a list of nodes that are descendants of this node that contain the @@ -26951,7 +26965,7 @@ class Prism::Node # Important to note is that the column given to this method should be in # bytes, as opposed to characters or code units. # - # source://prism//lib/prism/node.rb#191 + # source://prism//lib/prism/node.rb#194 sig { params(line: Integer, column: Integer).returns(T::Array[Prism::Node]) } def tunnel(line, column); end @@ -26970,7 +26984,7 @@ class Prism::Node # # @raise [NoMethodError] # - # source://prism//lib/prism/node.rb#299 + # source://prism//lib/prism/node.rb#302 sig { abstract.returns(Symbol) } def type; end @@ -26979,7 +26993,7 @@ class Prism::Node # An bitset of flags for this node. There are certain flags that are common # for all nodes, and then some nodes have specific flags. # - # source://prism//lib/prism/node.rb#157 + # source://prism//lib/prism/node.rb#160 sig { returns(Integer) } def flags; end @@ -26987,7 +27001,7 @@ class Prism::Node # A pointer to the source that this node was created from. # - # source://prism//lib/prism/node.rb#14 + # source://prism//lib/prism/node.rb#17 sig { returns(Prism::Source) } def source; end @@ -26998,7 +27012,7 @@ class Prism::Node # # @raise [NoMethodError] # - # source://prism//lib/prism/node.rb#242 + # source://prism//lib/prism/node.rb#245 def fields; end # Similar to #type, this method returns a symbol that you can use for @@ -27008,26 +27022,26 @@ class Prism::Node # # @raise [NoMethodError] # - # source://prism//lib/prism/node.rb#307 + # source://prism//lib/prism/node.rb#310 def type; end end end # The flags that are common to all nodes. # -# source://prism//lib/prism/node.rb#18636 +# source://prism//lib/prism/node.rb#18807 module Prism::NodeFlags; end # A flag to indicate that the node is a candidate to emit a :line event # through tracepoint when compiled. # -# source://prism//lib/prism/node.rb#18639 +# source://prism//lib/prism/node.rb#18810 Prism::NodeFlags::NEWLINE = T.let(T.unsafe(nil), Integer) # A flag to indicate that the value that the node represents is a value that # can be determined at parse-time. # -# source://prism//lib/prism/node.rb#18643 +# source://prism//lib/prism/node.rb#18814 Prism::NodeFlags::STATIC_LITERAL = T.let(T.unsafe(nil), Integer) # Represents an implicit set of parameters through the use of numbered parameters within a block or lambda. @@ -27035,13 +27049,13 @@ Prism::NodeFlags::STATIC_LITERAL = T.let(T.unsafe(nil), Integer) # -> { _1 + _2 } # ^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#13661 +# source://prism//lib/prism/node.rb#13814 class Prism::NumberedParametersNode < ::Prism::Node # Initialize a new NumberedParametersNode node. # # @return [NumberedParametersNode] a new instance of NumberedParametersNode # - # source://prism//lib/prism/node.rb#13663 + # source://prism//lib/prism/node.rb#13816 sig do params( source: Prism::Source, @@ -27056,36 +27070,36 @@ class Prism::NumberedParametersNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#13724 + # source://prism//lib/prism/node.rb#13877 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#13672 + # source://prism//lib/prism/node.rb#13825 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13677 + # source://prism//lib/prism/node.rb#13830 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#13687 + # source://prism//lib/prism/node.rb#13840 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#13682 + # source://prism//lib/prism/node.rb#13835 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?maximum: Integer) -> NumberedParametersNode # - # source://prism//lib/prism/node.rb#13692 + # source://prism//lib/prism/node.rb#13845 sig do params( node_id: Integer, @@ -27096,16 +27110,16 @@ class Prism::NumberedParametersNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), maximum: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13677 + # source://prism//lib/prism/node.rb#13830 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, maximum: Integer } # - # source://prism//lib/prism/node.rb#13700 + # source://prism//lib/prism/node.rb#13853 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -27114,26 +27128,26 @@ class Prism::NumberedParametersNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#13708 + # source://prism//lib/prism/node.rb#13861 sig { override.returns(String) } def inspect; end # attr_reader maximum: Integer # - # source://prism//lib/prism/node.rb#13705 + # source://prism//lib/prism/node.rb#13858 sig { returns(Integer) } def maximum; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#13713 + # source://prism//lib/prism/node.rb#13866 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#13718 + # source://prism//lib/prism/node.rb#13871 def type; end end end @@ -27143,13 +27157,13 @@ end # $1 # ^^ # -# source://prism//lib/prism/node.rb#13734 +# source://prism//lib/prism/node.rb#13887 class Prism::NumberedReferenceReadNode < ::Prism::Node # Initialize a new NumberedReferenceReadNode node. # # @return [NumberedReferenceReadNode] a new instance of NumberedReferenceReadNode # - # source://prism//lib/prism/node.rb#13736 + # source://prism//lib/prism/node.rb#13889 sig do params( source: Prism::Source, @@ -27164,36 +27178,36 @@ class Prism::NumberedReferenceReadNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#13803 + # source://prism//lib/prism/node.rb#13956 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#13745 + # source://prism//lib/prism/node.rb#13898 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13750 + # source://prism//lib/prism/node.rb#13903 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#13760 + # source://prism//lib/prism/node.rb#13913 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#13755 + # source://prism//lib/prism/node.rb#13908 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?number: Integer) -> NumberedReferenceReadNode # - # source://prism//lib/prism/node.rb#13765 + # source://prism//lib/prism/node.rb#13918 sig do params( node_id: Integer, @@ -27204,16 +27218,16 @@ class Prism::NumberedReferenceReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), number: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13750 + # source://prism//lib/prism/node.rb#13903 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, number: Integer } # - # source://prism//lib/prism/node.rb#13773 + # source://prism//lib/prism/node.rb#13926 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -27222,7 +27236,7 @@ class Prism::NumberedReferenceReadNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#13787 + # source://prism//lib/prism/node.rb#13940 sig { override.returns(String) } def inspect; end @@ -27234,20 +27248,20 @@ class Prism::NumberedReferenceReadNode < ::Prism::Node # # $4294967296 # number `0` # - # source://prism//lib/prism/node.rb#13784 + # source://prism//lib/prism/node.rb#13937 sig { returns(Integer) } def number; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#13792 + # source://prism//lib/prism/node.rb#13945 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#13797 + # source://prism//lib/prism/node.rb#13950 def type; end end end @@ -27258,13 +27272,13 @@ end # ^^^^ # end # -# source://prism//lib/prism/node.rb#13814 +# source://prism//lib/prism/node.rb#13967 class Prism::OptionalKeywordParameterNode < ::Prism::Node # Initialize a new OptionalKeywordParameterNode node. # # @return [OptionalKeywordParameterNode] a new instance of OptionalKeywordParameterNode # - # source://prism//lib/prism/node.rb#13816 + # source://prism//lib/prism/node.rb#13969 sig do params( source: Prism::Source, @@ -27281,36 +27295,36 @@ class Prism::OptionalKeywordParameterNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#13900 + # source://prism//lib/prism/node.rb#14053 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#13827 + # source://prism//lib/prism/node.rb#13980 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13832 + # source://prism//lib/prism/node.rb#13985 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#13842 + # source://prism//lib/prism/node.rb#13995 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#13837 + # source://prism//lib/prism/node.rb#13990 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?value: Prism::node) -> OptionalKeywordParameterNode # - # source://prism//lib/prism/node.rb#13847 + # source://prism//lib/prism/node.rb#14000 sig do params( node_id: Integer, @@ -27323,16 +27337,16 @@ class Prism::OptionalKeywordParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13832 + # source://prism//lib/prism/node.rb#13985 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#13855 + # source://prism//lib/prism/node.rb#14008 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -27341,19 +27355,19 @@ class Prism::OptionalKeywordParameterNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#13884 + # source://prism//lib/prism/node.rb#14037 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#13865 + # source://prism//lib/prism/node.rb#14018 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#13868 + # source://prism//lib/prism/node.rb#14021 sig { returns(Prism::Location) } def name_loc; end @@ -27361,32 +27375,32 @@ class Prism::OptionalKeywordParameterNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#13860 + # source://prism//lib/prism/node.rb#14013 sig { returns(T::Boolean) } def repeated_parameter?; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#13876 + # source://prism//lib/prism/node.rb#14029 def save_name_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#13889 + # source://prism//lib/prism/node.rb#14042 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#13881 + # source://prism//lib/prism/node.rb#14034 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#13894 + # source://prism//lib/prism/node.rb#14047 def type; end end end @@ -27397,13 +27411,13 @@ end # ^^^^^ # end # -# source://prism//lib/prism/node.rb#13914 +# source://prism//lib/prism/node.rb#14067 class Prism::OptionalParameterNode < ::Prism::Node # Initialize a new OptionalParameterNode node. # # @return [OptionalParameterNode] a new instance of OptionalParameterNode # - # source://prism//lib/prism/node.rb#13916 + # source://prism//lib/prism/node.rb#14069 sig do params( source: Prism::Source, @@ -27421,36 +27435,36 @@ class Prism::OptionalParameterNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#14019 + # source://prism//lib/prism/node.rb#14172 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#13928 + # source://prism//lib/prism/node.rb#14081 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13933 + # source://prism//lib/prism/node.rb#14086 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#13943 + # source://prism//lib/prism/node.rb#14096 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#13938 + # source://prism//lib/prism/node.rb#14091 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location, ?operator_loc: Location, ?value: Prism::node) -> OptionalParameterNode # - # source://prism//lib/prism/node.rb#13948 + # source://prism//lib/prism/node.rb#14101 sig do params( node_id: Integer, @@ -27464,16 +27478,16 @@ class Prism::OptionalParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#13933 + # source://prism//lib/prism/node.rb#14086 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location, operator_loc: Location, value: Prism::node } # - # source://prism//lib/prism/node.rb#13956 + # source://prism//lib/prism/node.rb#14109 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -27482,31 +27496,31 @@ class Prism::OptionalParameterNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#14003 + # source://prism//lib/prism/node.rb#14156 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#13966 + # source://prism//lib/prism/node.rb#14119 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#13969 + # source://prism//lib/prism/node.rb#14122 sig { returns(Prism::Location) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#13998 + # source://prism//lib/prism/node.rb#14151 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#13982 + # source://prism//lib/prism/node.rb#14135 sig { returns(Prism::Location) } def operator_loc; end @@ -27514,38 +27528,38 @@ class Prism::OptionalParameterNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#13961 + # source://prism//lib/prism/node.rb#14114 sig { returns(T::Boolean) } def repeated_parameter?; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#13977 + # source://prism//lib/prism/node.rb#14130 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#13990 + # source://prism//lib/prism/node.rb#14143 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#14008 + # source://prism//lib/prism/node.rb#14161 sig { override.returns(Symbol) } def type; end # attr_reader value: Prism::node # - # source://prism//lib/prism/node.rb#13995 + # source://prism//lib/prism/node.rb#14148 sig { returns(Prism::Node) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#14013 + # source://prism//lib/prism/node.rb#14166 def type; end end end @@ -27555,13 +27569,13 @@ end # left or right # ^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#14033 +# source://prism//lib/prism/node.rb#14186 class Prism::OrNode < ::Prism::Node # Initialize a new OrNode node. # # @return [OrNode] a new instance of OrNode # - # source://prism//lib/prism/node.rb#14035 + # source://prism//lib/prism/node.rb#14188 sig do params( source: Prism::Source, @@ -27578,36 +27592,36 @@ class Prism::OrNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#14134 + # source://prism//lib/prism/node.rb#14287 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#14046 + # source://prism//lib/prism/node.rb#14199 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14051 + # source://prism//lib/prism/node.rb#14204 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#14061 + # source://prism//lib/prism/node.rb#14214 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#14056 + # source://prism//lib/prism/node.rb#14209 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?left: Prism::node, ?right: Prism::node, ?operator_loc: Location) -> OrNode # - # source://prism//lib/prism/node.rb#14066 + # source://prism//lib/prism/node.rb#14219 sig do params( node_id: Integer, @@ -27620,16 +27634,16 @@ class Prism::OrNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14051 + # source://prism//lib/prism/node.rb#14204 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node, right: Prism::node, operator_loc: Location } # - # source://prism//lib/prism/node.rb#14074 + # source://prism//lib/prism/node.rb#14227 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -27638,7 +27652,7 @@ class Prism::OrNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#14118 + # source://prism//lib/prism/node.rb#14271 sig { override.returns(String) } def inspect; end @@ -27650,13 +27664,13 @@ class Prism::OrNode < ::Prism::Node # 1 || 2 # ^ # - # source://prism//lib/prism/node.rb#14085 + # source://prism//lib/prism/node.rb#14238 sig { returns(Prism::Node) } def left; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#14113 + # source://prism//lib/prism/node.rb#14266 sig { returns(String) } def operator; end @@ -27665,7 +27679,7 @@ class Prism::OrNode < ::Prism::Node # left or right # ^^ # - # source://prism//lib/prism/node.rb#14100 + # source://prism//lib/prism/node.rb#14253 sig { returns(Prism::Location) } def operator_loc; end @@ -27677,280 +27691,280 @@ class Prism::OrNode < ::Prism::Node # 1 or 2 # ^ # - # source://prism//lib/prism/node.rb#14094 + # source://prism//lib/prism/node.rb#14247 sig { returns(Prism::Node) } def right; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14108 + # source://prism//lib/prism/node.rb#14261 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#14123 + # source://prism//lib/prism/node.rb#14276 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#14128 + # source://prism//lib/prism/node.rb#14281 def type; end end end # A parser for the pack template language. # -# source://prism//lib/prism/pack.rb#6 +# source://prism//lib/prism/pack.rb#8 module Prism::Pack class << self def parse(_arg0, _arg1, _arg2); end end end -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::AGNOSTIC_ENDIAN = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::BACK = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::BER = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::BIG_ENDIAN = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::COMMENT = T.let(T.unsafe(nil), Symbol) # A directive in the pack template language. # -# source://prism//lib/prism/pack.rb#60 +# source://prism//lib/prism/pack.rb#62 class Prism::Pack::Directive # Initialize a new directive with the given values. # # @return [Directive] a new instance of Directive # - # source://prism//lib/prism/pack.rb#89 + # source://prism//lib/prism/pack.rb#91 def initialize(version, variant, source, type, signed, endian, size, length_type, length); end # Provide a human-readable description of the directive. # - # source://prism//lib/prism/pack.rb#131 + # source://prism//lib/prism/pack.rb#133 def describe; end # The type of endianness of the directive. # - # source://prism//lib/prism/pack.rb#77 + # source://prism//lib/prism/pack.rb#79 def endian; end # The length of this directive (used for integers). # - # source://prism//lib/prism/pack.rb#86 + # source://prism//lib/prism/pack.rb#88 def length; end # The length type of this directive (used for integers). # - # source://prism//lib/prism/pack.rb#83 + # source://prism//lib/prism/pack.rb#85 def length_type; end # The type of signedness of the directive. # - # source://prism//lib/prism/pack.rb#74 + # source://prism//lib/prism/pack.rb#76 def signed; end # The size of the directive. # - # source://prism//lib/prism/pack.rb#80 + # source://prism//lib/prism/pack.rb#82 def size; end # A byteslice of the source string that this directive represents. # - # source://prism//lib/prism/pack.rb#68 + # source://prism//lib/prism/pack.rb#70 def source; end # The type of the directive. # - # source://prism//lib/prism/pack.rb#71 + # source://prism//lib/prism/pack.rb#73 def type; end # A symbol representing whether or not we are packing or unpacking. # - # source://prism//lib/prism/pack.rb#65 + # source://prism//lib/prism/pack.rb#67 def variant; end # A symbol representing the version of Ruby. # - # source://prism//lib/prism/pack.rb#62 + # source://prism//lib/prism/pack.rb#64 def version; end end # The descriptions of the various types of endianness. # -# source://prism//lib/prism/pack.rb#102 +# source://prism//lib/prism/pack.rb#104 Prism::Pack::Directive::ENDIAN_DESCRIPTIONS = T.let(T.unsafe(nil), Hash) # The descriptions of the various types of signedness. # -# source://prism//lib/prism/pack.rb#111 +# source://prism//lib/prism/pack.rb#113 Prism::Pack::Directive::SIGNED_DESCRIPTIONS = T.let(T.unsafe(nil), Hash) # The descriptions of the various types of sizes. # -# source://prism//lib/prism/pack.rb#118 +# source://prism//lib/prism/pack.rb#120 Prism::Pack::Directive::SIZE_DESCRIPTIONS = T.let(T.unsafe(nil), Hash) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::ENDIAN_NA = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::FLOAT = T.let(T.unsafe(nil), Symbol) # The result of parsing a pack template. # -# source://prism//lib/prism/pack.rb#198 +# source://prism//lib/prism/pack.rb#200 class Prism::Pack::Format # Create a new Format with the given directives and encoding. # # @return [Format] a new instance of Format # - # source://prism//lib/prism/pack.rb#206 + # source://prism//lib/prism/pack.rb#208 def initialize(directives, encoding); end # Provide a human-readable description of the format. # - # source://prism//lib/prism/pack.rb#212 + # source://prism//lib/prism/pack.rb#214 def describe; end # A list of the directives in the template. # - # source://prism//lib/prism/pack.rb#200 + # source://prism//lib/prism/pack.rb#202 def directives; end # The encoding of the template. # - # source://prism//lib/prism/pack.rb#203 + # source://prism//lib/prism/pack.rb#205 def encoding; end end -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::INTEGER = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::LENGTH_FIXED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::LENGTH_MAX = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::LENGTH_NA = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::LENGTH_RELATIVE = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::LITTLE_ENDIAN = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::MOVE = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::NATIVE_ENDIAN = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::NULL = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIGNED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIGNED_NA = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_16 = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_32 = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_64 = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_8 = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_INT = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_LONG = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_LONG_LONG = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_NA = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_P = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_SHORT = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SPACE = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_BASE64 = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_FIXED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_HEX_HIGH = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_HEX_LOW = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_LSB = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_MIME = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_MSB = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_NULL_PADDED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_NULL_TERMINATED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_POINTER = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_SPACE_PADDED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_UU = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::UNSIGNED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::UTF8 = T.let(T.unsafe(nil), Symbol) # Flags for parameter nodes. # -# source://prism//lib/prism/node.rb#18543 +# source://prism//lib/prism/node.rb#18714 module Prism::ParameterFlags; end # a parameter name that has been repeated in the method signature # -# source://prism//lib/prism/node.rb#18545 +# source://prism//lib/prism/node.rb#18716 Prism::ParameterFlags::REPEATED_PARAMETER = T.let(T.unsafe(nil), Integer) # Represents the list of parameters on a method, block, or lambda definition. @@ -27959,13 +27973,13 @@ Prism::ParameterFlags::REPEATED_PARAMETER = T.let(T.unsafe(nil), Integer) # ^^^^^^^ # end # -# source://prism//lib/prism/node.rb#14147 +# source://prism//lib/prism/node.rb#14300 class Prism::ParametersNode < ::Prism::Node # Initialize a new ParametersNode node. # # @return [ParametersNode] a new instance of ParametersNode # - # source://prism//lib/prism/node.rb#14149 + # source://prism//lib/prism/node.rb#14302 sig do params( source: Prism::Source, @@ -27986,42 +28000,42 @@ class Prism::ParametersNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#14242 + # source://prism//lib/prism/node.rb#14395 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#14164 + # source://prism//lib/prism/node.rb#14317 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader block: BlockParameterNode? # - # source://prism//lib/prism/node.rb#14223 + # source://prism//lib/prism/node.rb#14376 sig { returns(T.nilable(Prism::BlockParameterNode)) } def block; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14169 + # source://prism//lib/prism/node.rb#14322 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#14187 + # source://prism//lib/prism/node.rb#14340 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#14174 + # source://prism//lib/prism/node.rb#14327 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?requireds: Array[RequiredParameterNode | MultiTargetNode], ?optionals: Array[OptionalParameterNode], ?rest: RestParameterNode | ImplicitRestNode | nil, ?posts: Array[RequiredParameterNode | MultiTargetNode | KeywordRestParameterNode | NoKeywordsParameterNode | ForwardingParameterNode], ?keywords: Array[RequiredKeywordParameterNode | OptionalKeywordParameterNode], ?keyword_rest: KeywordRestParameterNode | ForwardingParameterNode | NoKeywordsParameterNode | nil, ?block: BlockParameterNode?) -> ParametersNode # - # source://prism//lib/prism/node.rb#14192 + # source://prism//lib/prism/node.rb#14345 sig do params( node_id: Integer, @@ -28038,16 +28052,16 @@ class Prism::ParametersNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), requireds: T.unsafe(nil), optionals: T.unsafe(nil), rest: T.unsafe(nil), posts: T.unsafe(nil), keywords: T.unsafe(nil), keyword_rest: T.unsafe(nil), block: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14169 + # source://prism//lib/prism/node.rb#14322 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, requireds: Array[RequiredParameterNode | MultiTargetNode], optionals: Array[OptionalParameterNode], rest: RestParameterNode | ImplicitRestNode | nil, posts: Array[RequiredParameterNode | MultiTargetNode | KeywordRestParameterNode | NoKeywordsParameterNode | ForwardingParameterNode], keywords: Array[RequiredKeywordParameterNode | OptionalKeywordParameterNode], keyword_rest: KeywordRestParameterNode | ForwardingParameterNode | NoKeywordsParameterNode | nil, block: BlockParameterNode? } # - # source://prism//lib/prism/node.rb#14200 + # source://prism//lib/prism/node.rb#14353 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -28056,13 +28070,13 @@ class Prism::ParametersNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#14226 + # source://prism//lib/prism/node.rb#14379 sig { override.returns(String) } def inspect; end # attr_reader keyword_rest: KeywordRestParameterNode | ForwardingParameterNode | NoKeywordsParameterNode | nil # - # source://prism//lib/prism/node.rb#14220 + # source://prism//lib/prism/node.rb#14373 sig do returns(T.nilable(T.any(Prism::KeywordRestParameterNode, Prism::ForwardingParameterNode, Prism::NoKeywordsParameterNode))) end @@ -28070,19 +28084,19 @@ class Prism::ParametersNode < ::Prism::Node # attr_reader keywords: Array[RequiredKeywordParameterNode | OptionalKeywordParameterNode] # - # source://prism//lib/prism/node.rb#14217 + # source://prism//lib/prism/node.rb#14370 sig { returns(T::Array[T.any(Prism::RequiredKeywordParameterNode, Prism::OptionalKeywordParameterNode)]) } def keywords; end # attr_reader optionals: Array[OptionalParameterNode] # - # source://prism//lib/prism/node.rb#14208 + # source://prism//lib/prism/node.rb#14361 sig { returns(T::Array[Prism::OptionalParameterNode]) } def optionals; end # attr_reader posts: Array[RequiredParameterNode | MultiTargetNode | KeywordRestParameterNode | NoKeywordsParameterNode | ForwardingParameterNode] # - # source://prism//lib/prism/node.rb#14214 + # source://prism//lib/prism/node.rb#14367 sig do returns(T::Array[T.any(Prism::RequiredParameterNode, Prism::MultiTargetNode, Prism::KeywordRestParameterNode, Prism::NoKeywordsParameterNode, Prism::ForwardingParameterNode)]) end @@ -28090,32 +28104,32 @@ class Prism::ParametersNode < ::Prism::Node # attr_reader requireds: Array[RequiredParameterNode | MultiTargetNode] # - # source://prism//lib/prism/node.rb#14205 + # source://prism//lib/prism/node.rb#14358 sig { returns(T::Array[T.any(Prism::RequiredParameterNode, Prism::MultiTargetNode)]) } def requireds; end # attr_reader rest: RestParameterNode | ImplicitRestNode | nil # - # source://prism//lib/prism/node.rb#14211 + # source://prism//lib/prism/node.rb#14364 sig { returns(T.nilable(T.any(Prism::RestParameterNode, Prism::ImplicitRestNode))) } def rest; end # Mirrors the Method#parameters method. # - # source://prism//lib/prism/node_ext.rb#269 + # source://prism//lib/prism/node_ext.rb#272 sig { returns(T::Array[T.any([Symbol, Symbol], [Symbol])]) } def signature; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#14231 + # source://prism//lib/prism/node.rb#14384 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#14236 + # source://prism//lib/prism/node.rb#14389 def type; end end end @@ -28125,13 +28139,13 @@ end # (10 + 34) # ^^^^^^^^^ # -# source://prism//lib/prism/node.rb#14262 +# source://prism//lib/prism/node.rb#14415 class Prism::ParenthesesNode < ::Prism::Node # Initialize a new ParenthesesNode node. # # @return [ParenthesesNode] a new instance of ParenthesesNode # - # source://prism//lib/prism/node.rb#14264 + # source://prism//lib/prism/node.rb#14417 sig do params( source: Prism::Source, @@ -28148,54 +28162,54 @@ class Prism::ParenthesesNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#14370 + # source://prism//lib/prism/node.rb#14523 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#14275 + # source://prism//lib/prism/node.rb#14428 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader body: Prism::node? # - # source://prism//lib/prism/node.rb#14315 + # source://prism//lib/prism/node.rb#14468 sig { returns(T.nilable(Prism::Node)) } def body; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14280 + # source://prism//lib/prism/node.rb#14433 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#14349 + # source://prism//lib/prism/node.rb#14502 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#14331 + # source://prism//lib/prism/node.rb#14484 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#14292 + # source://prism//lib/prism/node.rb#14445 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#14285 + # source://prism//lib/prism/node.rb#14438 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?body: Prism::node?, ?opening_loc: Location, ?closing_loc: Location) -> ParenthesesNode # - # source://prism//lib/prism/node.rb#14297 + # source://prism//lib/prism/node.rb#14450 sig do params( node_id: Integer, @@ -28208,16 +28222,16 @@ class Prism::ParenthesesNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), body: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14280 + # source://prism//lib/prism/node.rb#14433 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, body: Prism::node?, opening_loc: Location, closing_loc: Location } # - # source://prism//lib/prism/node.rb#14305 + # source://prism//lib/prism/node.rb#14458 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -28226,7 +28240,7 @@ class Prism::ParenthesesNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#14354 + # source://prism//lib/prism/node.rb#14507 sig { override.returns(String) } def inspect; end @@ -28234,120 +28248,120 @@ class Prism::ParenthesesNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#14310 + # source://prism//lib/prism/node.rb#14463 sig { returns(T::Boolean) } def multiple_statements?; end - # source://prism//lib/prism/parse_result/newlines.rb#85 + # source://prism//lib/prism/parse_result/newlines.rb#86 def newline_flag!(lines); end # def opening: () -> String # - # source://prism//lib/prism/node.rb#14344 + # source://prism//lib/prism/node.rb#14497 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#14318 + # source://prism//lib/prism/node.rb#14471 sig { returns(Prism::Location) } def opening_loc; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14339 + # source://prism//lib/prism/node.rb#14492 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14326 + # source://prism//lib/prism/node.rb#14479 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#14359 + # source://prism//lib/prism/node.rb#14512 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#14364 + # source://prism//lib/prism/node.rb#14517 def type; end end end # Flags for parentheses nodes. # -# source://prism//lib/prism/node.rb#18549 +# source://prism//lib/prism/node.rb#18720 module Prism::ParenthesesNodeFlags; end # parentheses that contain multiple potentially void statements # -# source://prism//lib/prism/node.rb#18551 +# source://prism//lib/prism/node.rb#18722 Prism::ParenthesesNodeFlags::MULTIPLE_STATEMENTS = T.let(T.unsafe(nil), Integer) # This represents an error that was encountered during parsing. # -# source://prism//lib/prism/parse_result.rb#609 +# source://prism//lib/prism/parse_result.rb#610 class Prism::ParseError # Create a new error object with the given message and location. # # @return [ParseError] a new instance of ParseError # - # source://prism//lib/prism/parse_result.rb#624 + # source://prism//lib/prism/parse_result.rb#625 sig { params(type: Symbol, message: String, location: Prism::Location, level: Symbol).void } def initialize(type, message, location, level); end # Implement the hash pattern matching interface for ParseError. # - # source://prism//lib/prism/parse_result.rb#632 + # source://prism//lib/prism/parse_result.rb#633 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # Returns a string representation of this error. # - # source://prism//lib/prism/parse_result.rb#637 + # source://prism//lib/prism/parse_result.rb#638 sig { returns(String) } def inspect; end # The level of this error. # - # source://prism//lib/prism/parse_result.rb#621 + # source://prism//lib/prism/parse_result.rb#622 sig { returns(Symbol) } def level; end # A Location object representing the location of this error in the source. # - # source://prism//lib/prism/parse_result.rb#618 + # source://prism//lib/prism/parse_result.rb#619 sig { returns(Prism::Location) } def location; end # The message associated with this error. # - # source://prism//lib/prism/parse_result.rb#615 + # source://prism//lib/prism/parse_result.rb#616 sig { returns(String) } def message; end # The type of error. This is an _internal_ symbol that is used for # communicating with translation layers. It is not meant to be public API. # - # source://prism//lib/prism/parse_result.rb#612 + # source://prism//lib/prism/parse_result.rb#613 sig { returns(Symbol) } def type; end end # This is a result specific to the `parse_lex` and `parse_lex_file` methods. # -# source://prism//lib/prism/parse_result.rb#798 +# source://prism//lib/prism/parse_result.rb#799 class Prism::ParseLexResult < ::Prism::Result # Create a new parse lex result object with the given values. # # @return [ParseLexResult] a new instance of ParseLexResult # - # source://prism//lib/prism/parse_result.rb#804 + # source://prism//lib/prism/parse_result.rb#805 sig do params( value: [Prism::ProgramNode, T::Array[T.untyped]], @@ -28363,27 +28377,27 @@ class Prism::ParseLexResult < ::Prism::Result # Implement the hash pattern matching interface for ParseLexResult. # - # source://prism//lib/prism/parse_result.rb#810 + # source://prism//lib/prism/parse_result.rb#811 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # A tuple of the syntax tree and the list of tokens that were parsed from # the source code. # - # source://prism//lib/prism/parse_result.rb#801 + # source://prism//lib/prism/parse_result.rb#802 sig { returns([Prism::ProgramNode, T::Array[T.untyped]]) } def value; end end # This is a result specific to the `parse` and `parse_file` methods. # -# source://prism//lib/prism/parse_result.rb#739 +# source://prism//lib/prism/parse_result.rb#740 class Prism::ParseResult < ::Prism::Result # Create a new parse result object with the given values. # # @return [ParseResult] a new instance of ParseResult # - # source://prism//lib/prism/parse_result.rb#752 + # source://prism//lib/prism/parse_result.rb#753 sig do params( value: Prism::ProgramNode, @@ -28399,30 +28413,30 @@ class Prism::ParseResult < ::Prism::Result # Attach the list of comments to their respective locations in the tree. # - # source://prism//lib/prism/parse_result.rb#763 + # source://prism//lib/prism/parse_result.rb#764 def attach_comments!; end # Implement the hash pattern matching interface for ParseResult. # - # source://prism//lib/prism/parse_result.rb#758 + # source://prism//lib/prism/parse_result.rb#759 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # Returns a string representation of the syntax tree with the errors # displayed inline. # - # source://prism//lib/prism/parse_result.rb#775 + # source://prism//lib/prism/parse_result.rb#776 def errors_format; end # Walk the tree and mark nodes that are on a new line, loosely emulating # the behavior of CRuby's `:line` tracepoint event. # - # source://prism//lib/prism/parse_result.rb#769 + # source://prism//lib/prism/parse_result.rb#770 def mark_newlines!; end # The syntax tree that was parsed from the source code. # - # source://prism//lib/prism/parse_result.rb#749 + # source://prism//lib/prism/parse_result.rb#750 sig { returns(Prism::ProgramNode) } def value; end end @@ -28442,25 +28456,25 @@ end # the comment. Otherwise it will favor attaching to the nearest location # that is after the comment. # -# source://prism//lib/prism/parse_result/comments.rb#19 +# source://prism//lib/prism/parse_result/comments.rb#20 class Prism::ParseResult::Comments # Create a new Comments object that will attach comments to the given # parse result. # # @return [Comments] a new instance of Comments # - # source://prism//lib/prism/parse_result/comments.rb#86 + # source://prism//lib/prism/parse_result/comments.rb#87 def initialize(parse_result); end # Attach the comments to their respective locations in the tree by # mutating the parse result. # - # source://prism//lib/prism/parse_result/comments.rb#92 + # source://prism//lib/prism/parse_result/comments.rb#93 def attach!; end # The parse result that we are attaching comments to. # - # source://prism//lib/prism/parse_result/comments.rb#82 + # source://prism//lib/prism/parse_result/comments.rb#83 def parse_result; end private @@ -28468,92 +28482,92 @@ class Prism::ParseResult::Comments # Responsible for finding the nearest targets to the given comment within # the context of the given encapsulating node. # - # source://prism//lib/prism/parse_result/comments.rb#119 + # source://prism//lib/prism/parse_result/comments.rb#120 def nearest_targets(node, comment); end end # A target for attaching comments that is based on a location field on a # node. For example, the `end` token of a ClassNode. # -# source://prism//lib/prism/parse_result/comments.rb#53 +# source://prism//lib/prism/parse_result/comments.rb#54 class Prism::ParseResult::Comments::LocationTarget # @return [LocationTarget] a new instance of LocationTarget # - # source://prism//lib/prism/parse_result/comments.rb#56 + # source://prism//lib/prism/parse_result/comments.rb#57 def initialize(location); end # @return [Boolean] # - # source://prism//lib/prism/parse_result/comments.rb#68 + # source://prism//lib/prism/parse_result/comments.rb#69 def encloses?(comment); end - # source://prism//lib/prism/parse_result/comments.rb#64 + # source://prism//lib/prism/parse_result/comments.rb#65 def end_offset; end - # source://prism//lib/prism/parse_result/comments.rb#72 + # source://prism//lib/prism/parse_result/comments.rb#73 def leading_comment(comment); end - # source://prism//lib/prism/parse_result/comments.rb#54 + # source://prism//lib/prism/parse_result/comments.rb#55 def location; end - # source://prism//lib/prism/parse_result/comments.rb#60 + # source://prism//lib/prism/parse_result/comments.rb#61 def start_offset; end - # source://prism//lib/prism/parse_result/comments.rb#76 + # source://prism//lib/prism/parse_result/comments.rb#77 def trailing_comment(comment); end end # A target for attaching comments that is based on a specific node's # location. # -# source://prism//lib/prism/parse_result/comments.rb#22 +# source://prism//lib/prism/parse_result/comments.rb#23 class Prism::ParseResult::Comments::NodeTarget # @return [NodeTarget] a new instance of NodeTarget # - # source://prism//lib/prism/parse_result/comments.rb#25 + # source://prism//lib/prism/parse_result/comments.rb#26 def initialize(node); end # @return [Boolean] # - # source://prism//lib/prism/parse_result/comments.rb#37 + # source://prism//lib/prism/parse_result/comments.rb#38 def encloses?(comment); end - # source://prism//lib/prism/parse_result/comments.rb#33 + # source://prism//lib/prism/parse_result/comments.rb#34 def end_offset; end - # source://prism//lib/prism/parse_result/comments.rb#42 + # source://prism//lib/prism/parse_result/comments.rb#43 def leading_comment(comment); end - # source://prism//lib/prism/parse_result/comments.rb#23 + # source://prism//lib/prism/parse_result/comments.rb#24 def node; end - # source://prism//lib/prism/parse_result/comments.rb#29 + # source://prism//lib/prism/parse_result/comments.rb#30 def start_offset; end - # source://prism//lib/prism/parse_result/comments.rb#46 + # source://prism//lib/prism/parse_result/comments.rb#47 def trailing_comment(comment); end end # An object to represent the set of errors on a parse result. This object # can be used to format the errors in a human-readable way. # -# source://prism//lib/prism/parse_result/errors.rb#9 +# source://prism//lib/prism/parse_result/errors.rb#10 class Prism::ParseResult::Errors # Initialize a new set of errors from the given parse result. # # @return [Errors] a new instance of Errors # - # source://prism//lib/prism/parse_result/errors.rb#14 + # source://prism//lib/prism/parse_result/errors.rb#15 def initialize(parse_result); end # Formats the errors in a human-readable way and return them as a string. # - # source://prism//lib/prism/parse_result/errors.rb#19 + # source://prism//lib/prism/parse_result/errors.rb#20 def format; end # The parse result that contains the errors. # - # source://prism//lib/prism/parse_result/errors.rb#11 + # source://prism//lib/prism/parse_result/errors.rb#12 def parse_result; end end @@ -28578,87 +28592,87 @@ end # that case. We do that to avoid storing the extra `@newline` instance # variable on every node if we don't need it. # -# source://prism//lib/prism/parse_result/newlines.rb#25 +# source://prism//lib/prism/parse_result/newlines.rb#26 class Prism::ParseResult::Newlines < ::Prism::Visitor # Create a new Newlines visitor with the given newline offsets. # # @return [Newlines] a new instance of Newlines # - # source://prism//lib/prism/parse_result/newlines.rb#27 + # source://prism//lib/prism/parse_result/newlines.rb#28 def initialize(lines); end # Permit block/lambda nodes to mark newlines within themselves. # - # source://prism//lib/prism/parse_result/newlines.rb#33 + # source://prism//lib/prism/parse_result/newlines.rb#34 def visit_block_node(node); end # Mark if/unless nodes as newlines. # - # source://prism//lib/prism/parse_result/newlines.rb#47 + # source://prism//lib/prism/parse_result/newlines.rb#48 def visit_if_node(node); end # Permit block/lambda nodes to mark newlines within themselves. # - # source://prism//lib/prism/parse_result/newlines.rb#33 + # source://prism//lib/prism/parse_result/newlines.rb#34 def visit_lambda_node(node); end # Permit statements lists to mark newlines within themselves. # - # source://prism//lib/prism/parse_result/newlines.rb#55 + # source://prism//lib/prism/parse_result/newlines.rb#56 def visit_statements_node(node); end # Mark if/unless nodes as newlines. # - # source://prism//lib/prism/parse_result/newlines.rb#47 + # source://prism//lib/prism/parse_result/newlines.rb#48 def visit_unless_node(node); end end # This represents a warning that was encountered during parsing. # -# source://prism//lib/prism/parse_result.rb#643 +# source://prism//lib/prism/parse_result.rb#644 class Prism::ParseWarning # Create a new warning object with the given message and location. # # @return [ParseWarning] a new instance of ParseWarning # - # source://prism//lib/prism/parse_result.rb#658 + # source://prism//lib/prism/parse_result.rb#659 sig { params(type: Symbol, message: String, location: Prism::Location, level: Symbol).void } def initialize(type, message, location, level); end # Implement the hash pattern matching interface for ParseWarning. # - # source://prism//lib/prism/parse_result.rb#666 + # source://prism//lib/prism/parse_result.rb#667 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # Returns a string representation of this warning. # - # source://prism//lib/prism/parse_result.rb#671 + # source://prism//lib/prism/parse_result.rb#672 sig { returns(String) } def inspect; end # The level of this warning. # - # source://prism//lib/prism/parse_result.rb#655 + # source://prism//lib/prism/parse_result.rb#656 sig { returns(Symbol) } def level; end # A Location object representing the location of this warning in the source. # - # source://prism//lib/prism/parse_result.rb#652 + # source://prism//lib/prism/parse_result.rb#653 sig { returns(Prism::Location) } def location; end # The message associated with this warning. # - # source://prism//lib/prism/parse_result.rb#649 + # source://prism//lib/prism/parse_result.rb#650 sig { returns(String) } def message; end # The type of warning. This is an _internal_ symbol that is used for # communicating with translation layers. It is not meant to be public API. # - # source://prism//lib/prism/parse_result.rb#646 + # source://prism//lib/prism/parse_result.rb#647 sig { returns(Symbol) } def type; end end @@ -28697,14 +28711,14 @@ end # do not yet support) then a Prism::Pattern::CompilationError will be # raised. # -# source://prism//lib/prism/pattern.rb#37 +# source://prism//lib/prism/pattern.rb#38 class Prism::Pattern # Create a new pattern with the given query. The query should be a string # containing a Ruby pattern matching expression. # # @return [Pattern] a new instance of Pattern # - # source://prism//lib/prism/pattern.rb#63 + # source://prism//lib/prism/pattern.rb#64 def initialize(query); end # Compile the query into a callable object that can be used to match against @@ -28712,12 +28726,12 @@ class Prism::Pattern # # @raise [CompilationError] # - # source://prism//lib/prism/pattern.rb#70 + # source://prism//lib/prism/pattern.rb#71 def compile; end # The query that this pattern was initialized with. # - # source://prism//lib/prism/pattern.rb#59 + # source://prism//lib/prism/pattern.rb#60 def query; end # Scan the given node and all of its children for nodes that match the @@ -28725,7 +28739,7 @@ class Prism::Pattern # matches the pattern. If no block is given, an enumerator will be returned # that will yield each node that matches the pattern. # - # source://prism//lib/prism/pattern.rb#86 + # source://prism//lib/prism/pattern.rb#87 def scan(root); end private @@ -28733,94 +28747,94 @@ class Prism::Pattern # Shortcut for combining two procs into one that returns true if both return # true. # - # source://prism//lib/prism/pattern.rb#102 + # source://prism//lib/prism/pattern.rb#103 def combine_and(left, right); end # Shortcut for combining two procs into one that returns true if either # returns true. # - # source://prism//lib/prism/pattern.rb#108 + # source://prism//lib/prism/pattern.rb#109 def combine_or(left, right); end # in foo | bar # - # source://prism//lib/prism/pattern.rb#143 + # source://prism//lib/prism/pattern.rb#144 def compile_alternation_pattern_node(node); end # in [foo, bar, baz] # - # source://prism//lib/prism/pattern.rb#118 + # source://prism//lib/prism/pattern.rb#119 def compile_array_pattern_node(node); end # Compile a name associated with a constant. # - # source://prism//lib/prism/pattern.rb#168 + # source://prism//lib/prism/pattern.rb#169 def compile_constant_name(node, name); end # in Prism::ConstantReadNode # - # source://prism//lib/prism/pattern.rb#148 + # source://prism//lib/prism/pattern.rb#149 def compile_constant_path_node(node); end # in ConstantReadNode # in String # - # source://prism//lib/prism/pattern.rb#163 + # source://prism//lib/prism/pattern.rb#164 def compile_constant_read_node(node); end # Raise an error because the given node is not supported. # # @raise [CompilationError] # - # source://prism//lib/prism/pattern.rb#113 + # source://prism//lib/prism/pattern.rb#114 def compile_error(node); end # in InstanceVariableReadNode[name: Symbol] # in { name: Symbol } # - # source://prism//lib/prism/pattern.rb#184 + # source://prism//lib/prism/pattern.rb#185 def compile_hash_pattern_node(node); end # in nil # - # source://prism//lib/prism/pattern.rb#214 + # source://prism//lib/prism/pattern.rb#215 def compile_nil_node(node); end # Compile any kind of node. Dispatch out to the individual compilation # methods based on the type of node. # - # source://prism//lib/prism/pattern.rb#243 + # source://prism//lib/prism/pattern.rb#244 def compile_node(node); end # in /foo/ # - # source://prism//lib/prism/pattern.rb#219 + # source://prism//lib/prism/pattern.rb#220 def compile_regular_expression_node(node); end # in "" # in "foo" # - # source://prism//lib/prism/pattern.rb#227 + # source://prism//lib/prism/pattern.rb#228 def compile_string_node(node); end # in :+ # in :foo # - # source://prism//lib/prism/pattern.rb#235 + # source://prism//lib/prism/pattern.rb#236 def compile_symbol_node(node); end end # Raised when the query given to a pattern is either invalid Ruby syntax or # is using syntax that we don't yet support. # -# source://prism//lib/prism/pattern.rb#40 +# source://prism//lib/prism/pattern.rb#41 class Prism::Pattern::CompilationError < ::StandardError # Create a new CompilationError with the given representation of the node # that caused the error. # # @return [CompilationError] a new instance of CompilationError # - # source://prism//lib/prism/pattern.rb#43 + # source://prism//lib/prism/pattern.rb#44 def initialize(repr); end end @@ -28829,13 +28843,13 @@ end # foo in ^(bar) # ^^^^^^ # -# source://prism//lib/prism/node.rb#14383 +# source://prism//lib/prism/node.rb#14536 class Prism::PinnedExpressionNode < ::Prism::Node # Initialize a new PinnedExpressionNode node. # # @return [PinnedExpressionNode] a new instance of PinnedExpressionNode # - # source://prism//lib/prism/node.rb#14385 + # source://prism//lib/prism/node.rb#14538 sig do params( source: Prism::Source, @@ -28853,36 +28867,36 @@ class Prism::PinnedExpressionNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#14503 + # source://prism//lib/prism/node.rb#14668 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#14397 + # source://prism//lib/prism/node.rb#14550 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14402 + # source://prism//lib/prism/node.rb#14555 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#14412 + # source://prism//lib/prism/node.rb#14565 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#14407 + # source://prism//lib/prism/node.rb#14560 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?expression: Prism::node, ?operator_loc: Location, ?lparen_loc: Location, ?rparen_loc: Location) -> PinnedExpressionNode # - # source://prism//lib/prism/node.rb#14417 + # source://prism//lib/prism/node.rb#14570 sig do params( node_id: Integer, @@ -28896,22 +28910,25 @@ class Prism::PinnedExpressionNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), expression: T.unsafe(nil), operator_loc: T.unsafe(nil), lparen_loc: T.unsafe(nil), rparen_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14402 + # source://prism//lib/prism/node.rb#14555 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, expression: Prism::node, operator_loc: Location, lparen_loc: Location, rparen_loc: Location } # - # source://prism//lib/prism/node.rb#14425 + # source://prism//lib/prism/node.rb#14578 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # attr_reader expression: Prism::node + # The expression used in the pinned expression # - # source://prism//lib/prism/node.rb#14430 + # foo in ^(bar) + # ^^^ + # + # source://prism//lib/prism/node.rb#14586 sig { returns(Prism::Node) } def expression; end @@ -28920,74 +28937,83 @@ class Prism::PinnedExpressionNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#14487 + # source://prism//lib/prism/node.rb#14652 sig { override.returns(String) } def inspect; end # def lparen: () -> String # - # source://prism//lib/prism/node.rb#14477 + # source://prism//lib/prism/node.rb#14642 sig { returns(String) } def lparen; end - # attr_reader lparen_loc: Location + # The location of the opening parenthesis. + # + # foo in ^(bar) + # ^ # - # source://prism//lib/prism/node.rb#14446 + # source://prism//lib/prism/node.rb#14608 sig { returns(Prism::Location) } def lparen_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#14472 + # source://prism//lib/prism/node.rb#14637 sig { returns(String) } def operator; end - # attr_reader operator_loc: Location + # The location of the `^` operator # - # source://prism//lib/prism/node.rb#14433 + # foo in ^(bar) + # ^ + # + # source://prism//lib/prism/node.rb#14592 sig { returns(Prism::Location) } def operator_loc; end # def rparen: () -> String # - # source://prism//lib/prism/node.rb#14482 + # source://prism//lib/prism/node.rb#14647 sig { returns(String) } def rparen; end - # attr_reader rparen_loc: Location + # The location of the closing parenthesis. + # + # foo in ^(bar) + # ^ # - # source://prism//lib/prism/node.rb#14459 + # source://prism//lib/prism/node.rb#14624 sig { returns(Prism::Location) } def rparen_loc; end # Save the lparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14454 + # source://prism//lib/prism/node.rb#14616 def save_lparen_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14441 + # source://prism//lib/prism/node.rb#14600 def save_operator_loc(repository); end # Save the rparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14467 + # source://prism//lib/prism/node.rb#14632 def save_rparen_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#14492 + # source://prism//lib/prism/node.rb#14657 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#14497 + # source://prism//lib/prism/node.rb#14662 def type; end end end @@ -28997,13 +29023,13 @@ end # foo in ^bar # ^^^^ # -# source://prism//lib/prism/node.rb#14516 +# source://prism//lib/prism/node.rb#14681 class Prism::PinnedVariableNode < ::Prism::Node # Initialize a new PinnedVariableNode node. # # @return [PinnedVariableNode] a new instance of PinnedVariableNode # - # source://prism//lib/prism/node.rb#14518 + # source://prism//lib/prism/node.rb#14683 sig do params( source: Prism::Source, @@ -29019,36 +29045,36 @@ class Prism::PinnedVariableNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#14598 + # source://prism//lib/prism/node.rb#14769 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#14528 + # source://prism//lib/prism/node.rb#14693 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14533 + # source://prism//lib/prism/node.rb#14698 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#14543 + # source://prism//lib/prism/node.rb#14708 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#14538 + # source://prism//lib/prism/node.rb#14703 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?variable: LocalVariableReadNode | InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode | ItLocalVariableReadNode | MissingNode, ?operator_loc: Location) -> PinnedVariableNode # - # source://prism//lib/prism/node.rb#14548 + # source://prism//lib/prism/node.rb#14713 sig do params( node_id: Integer, @@ -29060,16 +29086,16 @@ class Prism::PinnedVariableNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), variable: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14533 + # source://prism//lib/prism/node.rb#14698 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, variable: LocalVariableReadNode | InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode | ItLocalVariableReadNode | MissingNode, operator_loc: Location } # - # source://prism//lib/prism/node.rb#14556 + # source://prism//lib/prism/node.rb#14721 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -29078,37 +29104,43 @@ class Prism::PinnedVariableNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#14582 + # source://prism//lib/prism/node.rb#14753 sig { override.returns(String) } def inspect; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#14577 + # source://prism//lib/prism/node.rb#14748 sig { returns(String) } def operator; end - # attr_reader operator_loc: Location + # The location of the `^` operator # - # source://prism//lib/prism/node.rb#14564 + # foo in ^bar + # ^ + # + # source://prism//lib/prism/node.rb#14735 sig { returns(Prism::Location) } def operator_loc; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14572 + # source://prism//lib/prism/node.rb#14743 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#14587 + # source://prism//lib/prism/node.rb#14758 sig { override.returns(Symbol) } def type; end - # attr_reader variable: LocalVariableReadNode | InstanceVariableReadNode | ClassVariableReadNode | GlobalVariableReadNode | BackReferenceReadNode | NumberedReferenceReadNode | ItLocalVariableReadNode | MissingNode + # The variable used in the pinned expression + # + # foo in ^bar + # ^^^ # - # source://prism//lib/prism/node.rb#14561 + # source://prism//lib/prism/node.rb#14729 sig do returns(T.any(Prism::LocalVariableReadNode, Prism::InstanceVariableReadNode, Prism::ClassVariableReadNode, Prism::GlobalVariableReadNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::ItLocalVariableReadNode, Prism::MissingNode)) end @@ -29117,7 +29149,7 @@ class Prism::PinnedVariableNode < ::Prism::Node class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#14592 + # source://prism//lib/prism/node.rb#14763 def type; end end end @@ -29127,13 +29159,13 @@ end # END { foo } # ^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#14609 +# source://prism//lib/prism/node.rb#14780 class Prism::PostExecutionNode < ::Prism::Node # Initialize a new PostExecutionNode node. # # @return [PostExecutionNode] a new instance of PostExecutionNode # - # source://prism//lib/prism/node.rb#14611 + # source://prism//lib/prism/node.rb#14782 sig do params( source: Prism::Source, @@ -29151,48 +29183,48 @@ class Prism::PostExecutionNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#14731 + # source://prism//lib/prism/node.rb#14902 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#14623 + # source://prism//lib/prism/node.rb#14794 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14628 + # source://prism//lib/prism/node.rb#14799 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#14710 + # source://prism//lib/prism/node.rb#14881 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#14687 + # source://prism//lib/prism/node.rb#14858 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#14640 + # source://prism//lib/prism/node.rb#14811 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#14633 + # source://prism//lib/prism/node.rb#14804 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?statements: StatementsNode?, ?keyword_loc: Location, ?opening_loc: Location, ?closing_loc: Location) -> PostExecutionNode # - # source://prism//lib/prism/node.rb#14645 + # source://prism//lib/prism/node.rb#14816 sig do params( node_id: Integer, @@ -29206,16 +29238,16 @@ class Prism::PostExecutionNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), statements: T.unsafe(nil), keyword_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14628 + # source://prism//lib/prism/node.rb#14799 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, statements: StatementsNode?, keyword_loc: Location, opening_loc: Location, closing_loc: Location } # - # source://prism//lib/prism/node.rb#14653 + # source://prism//lib/prism/node.rb#14824 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -29224,68 +29256,68 @@ class Prism::PostExecutionNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#14715 + # source://prism//lib/prism/node.rb#14886 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#14700 + # source://prism//lib/prism/node.rb#14871 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#14661 + # source://prism//lib/prism/node.rb#14832 sig { returns(Prism::Location) } def keyword_loc; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#14705 + # source://prism//lib/prism/node.rb#14876 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#14674 + # source://prism//lib/prism/node.rb#14845 sig { returns(Prism::Location) } def opening_loc; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14695 + # source://prism//lib/prism/node.rb#14866 def save_closing_loc(repository); end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14669 + # source://prism//lib/prism/node.rb#14840 def save_keyword_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14682 + # source://prism//lib/prism/node.rb#14853 def save_opening_loc(repository); end # attr_reader statements: StatementsNode? # - # source://prism//lib/prism/node.rb#14658 + # source://prism//lib/prism/node.rb#14829 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#14720 + # source://prism//lib/prism/node.rb#14891 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#14725 + # source://prism//lib/prism/node.rb#14896 def type; end end end @@ -29295,13 +29327,13 @@ end # BEGIN { foo } # ^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#14744 +# source://prism//lib/prism/node.rb#14915 class Prism::PreExecutionNode < ::Prism::Node # Initialize a new PreExecutionNode node. # # @return [PreExecutionNode] a new instance of PreExecutionNode # - # source://prism//lib/prism/node.rb#14746 + # source://prism//lib/prism/node.rb#14917 sig do params( source: Prism::Source, @@ -29319,48 +29351,48 @@ class Prism::PreExecutionNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#14866 + # source://prism//lib/prism/node.rb#15037 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#14758 + # source://prism//lib/prism/node.rb#14929 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14763 + # source://prism//lib/prism/node.rb#14934 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#14845 + # source://prism//lib/prism/node.rb#15016 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#14822 + # source://prism//lib/prism/node.rb#14993 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#14775 + # source://prism//lib/prism/node.rb#14946 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#14768 + # source://prism//lib/prism/node.rb#14939 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?statements: StatementsNode?, ?keyword_loc: Location, ?opening_loc: Location, ?closing_loc: Location) -> PreExecutionNode # - # source://prism//lib/prism/node.rb#14780 + # source://prism//lib/prism/node.rb#14951 sig do params( node_id: Integer, @@ -29374,16 +29406,16 @@ class Prism::PreExecutionNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), statements: T.unsafe(nil), keyword_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14763 + # source://prism//lib/prism/node.rb#14934 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, statements: StatementsNode?, keyword_loc: Location, opening_loc: Location, closing_loc: Location } # - # source://prism//lib/prism/node.rb#14788 + # source://prism//lib/prism/node.rb#14959 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -29392,81 +29424,81 @@ class Prism::PreExecutionNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#14850 + # source://prism//lib/prism/node.rb#15021 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#14835 + # source://prism//lib/prism/node.rb#15006 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#14796 + # source://prism//lib/prism/node.rb#14967 sig { returns(Prism::Location) } def keyword_loc; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#14840 + # source://prism//lib/prism/node.rb#15011 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#14809 + # source://prism//lib/prism/node.rb#14980 sig { returns(Prism::Location) } def opening_loc; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14830 + # source://prism//lib/prism/node.rb#15001 def save_closing_loc(repository); end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14804 + # source://prism//lib/prism/node.rb#14975 def save_keyword_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#14817 + # source://prism//lib/prism/node.rb#14988 def save_opening_loc(repository); end # attr_reader statements: StatementsNode? # - # source://prism//lib/prism/node.rb#14793 + # source://prism//lib/prism/node.rb#14964 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#14855 + # source://prism//lib/prism/node.rb#15026 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#14860 + # source://prism//lib/prism/node.rb#15031 def type; end end end # The top level node of any parse tree. # -# source://prism//lib/prism/node.rb#14876 +# source://prism//lib/prism/node.rb#15047 class Prism::ProgramNode < ::Prism::Node # Initialize a new ProgramNode node. # # @return [ProgramNode] a new instance of ProgramNode # - # source://prism//lib/prism/node.rb#14878 + # source://prism//lib/prism/node.rb#15049 sig do params( source: Prism::Source, @@ -29482,36 +29514,36 @@ class Prism::ProgramNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#14943 + # source://prism//lib/prism/node.rb#15114 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#14888 + # source://prism//lib/prism/node.rb#15059 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14893 + # source://prism//lib/prism/node.rb#15064 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#14903 + # source://prism//lib/prism/node.rb#15074 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#14898 + # source://prism//lib/prism/node.rb#15069 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?locals: Array[Symbol], ?statements: StatementsNode) -> ProgramNode # - # source://prism//lib/prism/node.rb#14908 + # source://prism//lib/prism/node.rb#15079 sig do params( node_id: Integer, @@ -29523,16 +29555,16 @@ class Prism::ProgramNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), statements: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14893 + # source://prism//lib/prism/node.rb#15064 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], statements: StatementsNode } # - # source://prism//lib/prism/node.rb#14916 + # source://prism//lib/prism/node.rb#15087 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -29541,44 +29573,44 @@ class Prism::ProgramNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#14927 + # source://prism//lib/prism/node.rb#15098 sig { override.returns(String) } def inspect; end # attr_reader locals: Array[Symbol] # - # source://prism//lib/prism/node.rb#14921 + # source://prism//lib/prism/node.rb#15092 sig { returns(T::Array[Symbol]) } def locals; end # attr_reader statements: StatementsNode # - # source://prism//lib/prism/node.rb#14924 + # source://prism//lib/prism/node.rb#15095 sig { returns(Prism::StatementsNode) } def statements; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#14932 + # source://prism//lib/prism/node.rb#15103 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#14937 + # source://prism//lib/prism/node.rb#15108 def type; end end end # Flags for range and flip-flop nodes. # -# source://prism//lib/prism/node.rb#18555 +# source://prism//lib/prism/node.rb#18726 module Prism::RangeFlags; end # ... operator # -# source://prism//lib/prism/node.rb#18557 +# source://prism//lib/prism/node.rb#18728 Prism::RangeFlags::EXCLUDE_END = T.let(T.unsafe(nil), Integer) # Represents the use of the `..` or `...` operators. @@ -29589,13 +29621,13 @@ Prism::RangeFlags::EXCLUDE_END = T.let(T.unsafe(nil), Integer) # c if a =~ /left/ ... b =~ /right/ # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#14958 +# source://prism//lib/prism/node.rb#15129 class Prism::RangeNode < ::Prism::Node # Initialize a new RangeNode node. # # @return [RangeNode] a new instance of RangeNode # - # source://prism//lib/prism/node.rb#14960 + # source://prism//lib/prism/node.rb#15131 sig do params( source: Prism::Source, @@ -29612,36 +29644,36 @@ class Prism::RangeNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#15065 + # source://prism//lib/prism/node.rb#15236 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#14971 + # source://prism//lib/prism/node.rb#15142 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14976 + # source://prism//lib/prism/node.rb#15147 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#14989 + # source://prism//lib/prism/node.rb#15160 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#14981 + # source://prism//lib/prism/node.rb#15152 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?left: Prism::node?, ?right: Prism::node?, ?operator_loc: Location) -> RangeNode # - # source://prism//lib/prism/node.rb#14994 + # source://prism//lib/prism/node.rb#15165 sig do params( node_id: Integer, @@ -29654,16 +29686,16 @@ class Prism::RangeNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#14976 + # source://prism//lib/prism/node.rb#15147 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, left: Prism::node?, right: Prism::node?, operator_loc: Location } # - # source://prism//lib/prism/node.rb#15002 + # source://prism//lib/prism/node.rb#15173 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -29671,7 +29703,7 @@ class Prism::RangeNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15007 + # source://prism//lib/prism/node.rb#15178 sig { returns(T::Boolean) } def exclude_end?; end @@ -29680,7 +29712,7 @@ class Prism::RangeNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#15049 + # source://prism//lib/prism/node.rb#15220 sig { override.returns(String) } def inspect; end @@ -29692,19 +29724,19 @@ class Prism::RangeNode < ::Prism::Node # hello...goodbye # ^^^^^ # - # source://prism//lib/prism/node.rb#15018 + # source://prism//lib/prism/node.rb#15189 sig { returns(T.nilable(Prism::Node)) } def left; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#15044 + # source://prism//lib/prism/node.rb#15215 sig { returns(String) } def operator; end # The location of the `..` or `...` operator. # - # source://prism//lib/prism/node.rb#15031 + # source://prism//lib/prism/node.rb#15202 sig { returns(Prism::Location) } def operator_loc; end @@ -29717,26 +29749,26 @@ class Prism::RangeNode < ::Prism::Node # ^^^ # If neither right-hand or left-hand side was included, this will be a MissingNode. # - # source://prism//lib/prism/node.rb#15028 + # source://prism//lib/prism/node.rb#15199 sig { returns(T.nilable(Prism::Node)) } def right; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#15039 + # source://prism//lib/prism/node.rb#15210 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#15054 + # source://prism//lib/prism/node.rb#15225 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#15059 + # source://prism//lib/prism/node.rb#15230 def type; end end end @@ -29746,13 +29778,13 @@ end # 1.0r # ^^^^ # -# source://prism//lib/prism/node.rb#15078 +# source://prism//lib/prism/node.rb#15249 class Prism::RationalNode < ::Prism::Node # Initialize a new RationalNode node. # # @return [RationalNode] a new instance of RationalNode # - # source://prism//lib/prism/node.rb#15080 + # source://prism//lib/prism/node.rb#15251 sig do params( source: Prism::Source, @@ -29768,12 +29800,12 @@ class Prism::RationalNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#15169 + # source://prism//lib/prism/node.rb#15340 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#15090 + # source://prism//lib/prism/node.rb#15261 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -29781,31 +29813,31 @@ class Prism::RationalNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15123 + # source://prism//lib/prism/node.rb#15294 sig { returns(T::Boolean) } def binary?; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15095 + # source://prism//lib/prism/node.rb#15266 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#15105 + # source://prism//lib/prism/node.rb#15276 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#15100 + # source://prism//lib/prism/node.rb#15271 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?numerator: Integer, ?denominator: Integer) -> RationalNode # - # source://prism//lib/prism/node.rb#15110 + # source://prism//lib/prism/node.rb#15281 sig do params( node_id: Integer, @@ -29821,20 +29853,20 @@ class Prism::RationalNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15128 + # source://prism//lib/prism/node.rb#15299 sig { returns(T::Boolean) } def decimal?; end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15095 + # source://prism//lib/prism/node.rb#15266 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, numerator: Integer, denominator: Integer } # - # source://prism//lib/prism/node.rb#15118 + # source://prism//lib/prism/node.rb#15289 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -29842,7 +29874,7 @@ class Prism::RationalNode < ::Prism::Node # # 1.5r # denominator 2 # - # source://prism//lib/prism/node.rb#15150 + # source://prism//lib/prism/node.rb#15321 sig { returns(Integer) } def denominator; end @@ -29853,13 +29885,13 @@ class Prism::RationalNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15138 + # source://prism//lib/prism/node.rb#15309 sig { returns(T::Boolean) } def hexadecimal?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#15153 + # source://prism//lib/prism/node.rb#15324 sig { override.returns(String) } def inspect; end @@ -29867,40 +29899,40 @@ class Prism::RationalNode < ::Prism::Node # # 1.5r # numerator 3 # - # source://prism//lib/prism/node.rb#15145 + # source://prism//lib/prism/node.rb#15316 sig { returns(Integer) } def numerator; end # Returns the value of the node as an IntegerNode or a FloatNode. This # method is deprecated in favor of #value or #numerator/#denominator. # - # source://prism//lib/prism/node_ext.rb#120 + # source://prism//lib/prism/node_ext.rb#123 def numeric; end # def octal?: () -> bool # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15133 + # source://prism//lib/prism/node.rb#15304 sig { returns(T::Boolean) } def octal?; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#15158 + # source://prism//lib/prism/node.rb#15329 sig { override.returns(Symbol) } def type; end # Returns the value of the node as a Ruby Rational. # - # source://prism//lib/prism/node_ext.rb#114 + # source://prism//lib/prism/node_ext.rb#117 sig { returns(Rational) } def value; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#15163 + # source://prism//lib/prism/node.rb#15334 def type; end end end @@ -29910,62 +29942,62 @@ end # redo # ^^^^ # -# source://prism//lib/prism/node.rb#15181 +# source://prism//lib/prism/node.rb#15352 class Prism::RedoNode < ::Prism::Node # Initialize a new RedoNode node. # # @return [RedoNode] a new instance of RedoNode # - # source://prism//lib/prism/node.rb#15183 + # source://prism//lib/prism/node.rb#15354 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#15240 + # source://prism//lib/prism/node.rb#15411 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#15191 + # source://prism//lib/prism/node.rb#15362 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15196 + # source://prism//lib/prism/node.rb#15367 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#15206 + # source://prism//lib/prism/node.rb#15377 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#15201 + # source://prism//lib/prism/node.rb#15372 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> RedoNode # - # source://prism//lib/prism/node.rb#15211 + # source://prism//lib/prism/node.rb#15382 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::RedoNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15196 + # source://prism//lib/prism/node.rb#15367 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#15219 + # source://prism//lib/prism/node.rb#15390 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -29974,20 +30006,20 @@ class Prism::RedoNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#15224 + # source://prism//lib/prism/node.rb#15395 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#15229 + # source://prism//lib/prism/node.rb#15400 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#15234 + # source://prism//lib/prism/node.rb#15405 def type; end end end @@ -29996,12 +30028,12 @@ end # the syntax tree itself, as opposed to looking at a single syntax tree. This # is useful in metaprogramming contexts. # -# source://prism//lib/prism/reflection.rb#13 +# source://prism//lib/prism/reflection.rb#16 module Prism::Reflection class << self # Returns the fields for the given node. # - # source://prism//lib/prism/reflection.rb#104 + # source://prism//lib/prism/reflection.rb#107 sig { params(node: T.class_of(Prism::Node)).returns(T::Array[Prism::Reflection::Field]) } def fields_for(node); end end @@ -30011,31 +30043,31 @@ end # represents an identifier found within the source. It resolves to a symbol # in Ruby. # -# source://prism//lib/prism/reflection.rb#45 +# source://prism//lib/prism/reflection.rb#48 class Prism::Reflection::ConstantField < ::Prism::Reflection::Field; end # A constant list field represents a list of constant values on a node. It # resolves to an array of symbols in Ruby. # -# source://prism//lib/prism/reflection.rb#55 +# source://prism//lib/prism/reflection.rb#58 class Prism::Reflection::ConstantListField < ::Prism::Reflection::Field; end # A field represents a single piece of data on a node. It is the base class # for all other field types. # -# source://prism//lib/prism/reflection.rb#16 +# source://prism//lib/prism/reflection.rb#19 class Prism::Reflection::Field # Initializes the field with the given name. # # @return [Field] a new instance of Field # - # source://prism//lib/prism/reflection.rb#21 + # source://prism//lib/prism/reflection.rb#24 sig { params(name: Symbol).void } def initialize(name); end # The name of the field. # - # source://prism//lib/prism/reflection.rb#18 + # source://prism//lib/prism/reflection.rb#21 sig { returns(Symbol) } def name; end end @@ -30045,19 +30077,19 @@ end # node because the integer is kept private. Instead, the various flags in # the bitset should be accessed through their query methods. # -# source://prism//lib/prism/reflection.rb#92 +# source://prism//lib/prism/reflection.rb#95 class Prism::Reflection::FlagsField < ::Prism::Reflection::Field # Initializes the flags field with the given name and flags. # # @return [FlagsField] a new instance of FlagsField # - # source://prism//lib/prism/reflection.rb#97 + # source://prism//lib/prism/reflection.rb#100 sig { params(name: Symbol, flags: T::Array[Symbol]).void } def initialize(name, flags); end # The names of the flags in the bitset. # - # source://prism//lib/prism/reflection.rb#94 + # source://prism//lib/prism/reflection.rb#97 sig { returns(T::Array[Symbol]) } def flags; end end @@ -30066,120 +30098,120 @@ end # used exclusively to represent the value of a floating point literal. It # resolves to a Float in Ruby. # -# source://prism//lib/prism/reflection.rb#85 +# source://prism//lib/prism/reflection.rb#88 class Prism::Reflection::FloatField < ::Prism::Reflection::Field; end # An integer field represents an integer value. It is used to represent the # value of an integer literal, the depth of local variables, and the number # of a numbered reference. It resolves to an Integer in Ruby. # -# source://prism//lib/prism/reflection.rb#79 +# source://prism//lib/prism/reflection.rb#82 class Prism::Reflection::IntegerField < ::Prism::Reflection::Field; end # A location field represents the location of some part of the node in the # source code. For example, the location of a keyword or an operator. It # resolves to a Prism::Location in Ruby. # -# source://prism//lib/prism/reflection.rb#67 +# source://prism//lib/prism/reflection.rb#70 class Prism::Reflection::LocationField < ::Prism::Reflection::Field; end # A node field represents a single child node in the syntax tree. It # resolves to a Prism::Node in Ruby. # -# source://prism//lib/prism/reflection.rb#28 +# source://prism//lib/prism/reflection.rb#31 class Prism::Reflection::NodeField < ::Prism::Reflection::Field; end # A node list field represents a list of child nodes in the syntax tree. It # resolves to an array of Prism::Node instances in Ruby. # -# source://prism//lib/prism/reflection.rb#39 +# source://prism//lib/prism/reflection.rb#42 class Prism::Reflection::NodeListField < ::Prism::Reflection::Field; end # An optional constant field represents a constant value on a node that may # or may not be present. It resolves to either a symbol or nil in Ruby. # -# source://prism//lib/prism/reflection.rb#50 +# source://prism//lib/prism/reflection.rb#53 class Prism::Reflection::OptionalConstantField < ::Prism::Reflection::Field; end # An optional location field represents the location of some part of the # node in the source code that may or may not be present. It resolves to # either a Prism::Location or nil in Ruby. # -# source://prism//lib/prism/reflection.rb#73 +# source://prism//lib/prism/reflection.rb#76 class Prism::Reflection::OptionalLocationField < ::Prism::Reflection::Field; end # An optional node field represents a single child node in the syntax tree # that may or may not be present. It resolves to either a Prism::Node or nil # in Ruby. # -# source://prism//lib/prism/reflection.rb#34 +# source://prism//lib/prism/reflection.rb#37 class Prism::Reflection::OptionalNodeField < ::Prism::Reflection::Field; end # A string field represents a string value on a node. It almost always # represents the unescaped value of a string-like literal. It resolves to a # string in Ruby. # -# source://prism//lib/prism/reflection.rb#61 +# source://prism//lib/prism/reflection.rb#64 class Prism::Reflection::StringField < ::Prism::Reflection::Field; end # Flags for regular expression and match last line nodes. # -# source://prism//lib/prism/node.rb#18561 +# source://prism//lib/prism/node.rb#18732 module Prism::RegularExpressionFlags; end # n - forces the ASCII-8BIT encoding # -# source://prism//lib/prism/node.rb#18578 +# source://prism//lib/prism/node.rb#18749 Prism::RegularExpressionFlags::ASCII_8BIT = T.let(T.unsafe(nil), Integer) # e - forces the EUC-JP encoding # -# source://prism//lib/prism/node.rb#18575 +# source://prism//lib/prism/node.rb#18746 Prism::RegularExpressionFlags::EUC_JP = T.let(T.unsafe(nil), Integer) # x - ignores whitespace and allows comments in regular expressions # -# source://prism//lib/prism/node.rb#18566 +# source://prism//lib/prism/node.rb#18737 Prism::RegularExpressionFlags::EXTENDED = T.let(T.unsafe(nil), Integer) # internal bytes forced the encoding to binary # -# source://prism//lib/prism/node.rb#18590 +# source://prism//lib/prism/node.rb#18761 Prism::RegularExpressionFlags::FORCED_BINARY_ENCODING = T.let(T.unsafe(nil), Integer) # internal bytes forced the encoding to US-ASCII # -# source://prism//lib/prism/node.rb#18593 +# source://prism//lib/prism/node.rb#18764 Prism::RegularExpressionFlags::FORCED_US_ASCII_ENCODING = T.let(T.unsafe(nil), Integer) # internal bytes forced the encoding to UTF-8 # -# source://prism//lib/prism/node.rb#18587 +# source://prism//lib/prism/node.rb#18758 Prism::RegularExpressionFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) # i - ignores the case of characters when matching # -# source://prism//lib/prism/node.rb#18563 +# source://prism//lib/prism/node.rb#18734 Prism::RegularExpressionFlags::IGNORE_CASE = T.let(T.unsafe(nil), Integer) # m - allows $ to match the end of lines within strings # -# source://prism//lib/prism/node.rb#18569 +# source://prism//lib/prism/node.rb#18740 Prism::RegularExpressionFlags::MULTI_LINE = T.let(T.unsafe(nil), Integer) # o - only interpolates values into the regular expression once # -# source://prism//lib/prism/node.rb#18572 +# source://prism//lib/prism/node.rb#18743 Prism::RegularExpressionFlags::ONCE = T.let(T.unsafe(nil), Integer) # u - forces the UTF-8 encoding # -# source://prism//lib/prism/node.rb#18584 +# source://prism//lib/prism/node.rb#18755 Prism::RegularExpressionFlags::UTF_8 = T.let(T.unsafe(nil), Integer) # s - forces the Windows-31J encoding # -# source://prism//lib/prism/node.rb#18581 +# source://prism//lib/prism/node.rb#18752 Prism::RegularExpressionFlags::WINDOWS_31J = T.let(T.unsafe(nil), Integer) # Represents a regular expression literal with no interpolation. @@ -30187,7 +30219,7 @@ Prism::RegularExpressionFlags::WINDOWS_31J = T.let(T.unsafe(nil), Integer) # /foo/i # ^^^^^^ # -# source://prism//lib/prism/node.rb#15249 +# source://prism//lib/prism/node.rb#15420 class Prism::RegularExpressionNode < ::Prism::Node include ::Prism::RegularExpressionOptions @@ -30195,7 +30227,7 @@ class Prism::RegularExpressionNode < ::Prism::Node # # @return [RegularExpressionNode] a new instance of RegularExpressionNode # - # source://prism//lib/prism/node.rb#15251 + # source://prism//lib/prism/node.rb#15422 sig do params( source: Prism::Source, @@ -30213,12 +30245,12 @@ class Prism::RegularExpressionNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#15424 + # source://prism//lib/prism/node.rb#15595 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#15263 + # source://prism//lib/prism/node.rb#15434 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -30226,55 +30258,55 @@ class Prism::RegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15321 + # source://prism//lib/prism/node.rb#15492 sig { returns(T::Boolean) } def ascii_8bit?; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15268 + # source://prism//lib/prism/node.rb#15439 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#15403 + # source://prism//lib/prism/node.rb#15574 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#15377 + # source://prism//lib/prism/node.rb#15548 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#15278 + # source://prism//lib/prism/node.rb#15449 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#15273 + # source://prism//lib/prism/node.rb#15444 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def content: () -> String # - # source://prism//lib/prism/node.rb#15398 + # source://prism//lib/prism/node.rb#15569 sig { returns(String) } def content; end # attr_reader content_loc: Location # - # source://prism//lib/prism/node.rb#15364 + # source://prism//lib/prism/node.rb#15535 sig { returns(Prism::Location) } def content_loc; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location, ?content_loc: Location, ?closing_loc: Location, ?unescaped: String) -> RegularExpressionNode # - # source://prism//lib/prism/node.rb#15283 + # source://prism//lib/prism/node.rb#15454 sig do params( node_id: Integer, @@ -30288,16 +30320,16 @@ class Prism::RegularExpressionNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), content_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15268 + # source://prism//lib/prism/node.rb#15439 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String } # - # source://prism//lib/prism/node.rb#15291 + # source://prism//lib/prism/node.rb#15462 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -30305,7 +30337,7 @@ class Prism::RegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15316 + # source://prism//lib/prism/node.rb#15487 sig { returns(T::Boolean) } def euc_jp?; end @@ -30313,7 +30345,7 @@ class Prism::RegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15301 + # source://prism//lib/prism/node.rb#15472 sig { returns(T::Boolean) } def extended?; end @@ -30324,7 +30356,7 @@ class Prism::RegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15341 + # source://prism//lib/prism/node.rb#15512 sig { returns(T::Boolean) } def forced_binary_encoding?; end @@ -30332,7 +30364,7 @@ class Prism::RegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15346 + # source://prism//lib/prism/node.rb#15517 sig { returns(T::Boolean) } def forced_us_ascii_encoding?; end @@ -30340,7 +30372,7 @@ class Prism::RegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15336 + # source://prism//lib/prism/node.rb#15507 sig { returns(T::Boolean) } def forced_utf8_encoding?; end @@ -30348,13 +30380,13 @@ class Prism::RegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15296 + # source://prism//lib/prism/node.rb#15467 sig { returns(T::Boolean) } def ignore_case?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#15408 + # source://prism//lib/prism/node.rb#15579 sig { override.returns(String) } def inspect; end @@ -30362,7 +30394,7 @@ class Prism::RegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15306 + # source://prism//lib/prism/node.rb#15477 sig { returns(T::Boolean) } def multi_line?; end @@ -30370,19 +30402,19 @@ class Prism::RegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15311 + # source://prism//lib/prism/node.rb#15482 sig { returns(T::Boolean) } def once?; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#15393 + # source://prism//lib/prism/node.rb#15564 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#15351 + # source://prism//lib/prism/node.rb#15522 sig { returns(Prism::Location) } def opening_loc; end @@ -30392,30 +30424,30 @@ class Prism::RegularExpressionNode < ::Prism::Node # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#15385 + # source://prism//lib/prism/node.rb#15556 def save_closing_loc(repository); end # Save the content_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#15372 + # source://prism//lib/prism/node.rb#15543 def save_content_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#15359 + # source://prism//lib/prism/node.rb#15530 def save_opening_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#15413 + # source://prism//lib/prism/node.rb#15584 sig { override.returns(Symbol) } def type; end # attr_reader unescaped: String # - # source://prism//lib/prism/node.rb#15390 + # source://prism//lib/prism/node.rb#15561 sig { returns(String) } def unescaped; end @@ -30423,7 +30455,7 @@ class Prism::RegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15331 + # source://prism//lib/prism/node.rb#15502 sig { returns(T::Boolean) } def utf_8?; end @@ -30431,24 +30463,24 @@ class Prism::RegularExpressionNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15326 + # source://prism//lib/prism/node.rb#15497 sig { returns(T::Boolean) } def windows_31j?; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#15418 + # source://prism//lib/prism/node.rb#15589 def type; end end end -# source://prism//lib/prism/node_ext.rb#20 +# source://prism//lib/prism/node_ext.rb#23 module Prism::RegularExpressionOptions # Returns a numeric value that represents the flags that were used to create # the regular expression. # - # source://prism//lib/prism/node_ext.rb#23 + # source://prism//lib/prism/node_ext.rb#26 def options; end end @@ -30462,276 +30494,276 @@ end # "save" nodes and locations using a minimal amount of memory (just the # node_id and a field identifier) and then reify them later. # -# source://prism//lib/prism/relocation.rb#13 +# source://prism//lib/prism/relocation.rb#14 module Prism::Relocation class << self # Create a new repository for the given filepath. # - # source://prism//lib/prism/relocation.rb#495 + # source://prism//lib/prism/relocation.rb#496 def filepath(value); end # Create a new repository for the given string. # - # source://prism//lib/prism/relocation.rb#500 + # source://prism//lib/prism/relocation.rb#501 def string(value); end end end # A field representing the start and end character columns. # -# source://prism//lib/prism/relocation.rb#269 +# source://prism//lib/prism/relocation.rb#270 class Prism::Relocation::CharacterColumnsField # Fetches the start and end character column of a value. # - # source://prism//lib/prism/relocation.rb#271 + # source://prism//lib/prism/relocation.rb#272 def fields(value); end end # A field representing the start and end character offsets. # -# source://prism//lib/prism/relocation.rb#217 +# source://prism//lib/prism/relocation.rb#218 class Prism::Relocation::CharacterOffsetsField # Fetches the start and end character offset of a value. # - # source://prism//lib/prism/relocation.rb#219 + # source://prism//lib/prism/relocation.rb#220 def fields(value); end end # A field representing the start and end code unit columns for a specific # encoding. # -# source://prism//lib/prism/relocation.rb#281 +# source://prism//lib/prism/relocation.rb#282 class Prism::Relocation::CodeUnitColumnsField # Initialize a new field with the associated repository and encoding. # # @return [CodeUnitColumnsField] a new instance of CodeUnitColumnsField # - # source://prism//lib/prism/relocation.rb#290 + # source://prism//lib/prism/relocation.rb#291 def initialize(repository, encoding); end # The associated encoding for the code units. # - # source://prism//lib/prism/relocation.rb#287 + # source://prism//lib/prism/relocation.rb#288 def encoding; end # Fetches the start and end code units column of a value for a particular # encoding. # - # source://prism//lib/prism/relocation.rb#298 + # source://prism//lib/prism/relocation.rb#299 def fields(value); end # The repository object that is used for lazily creating a code units # cache. # - # source://prism//lib/prism/relocation.rb#284 + # source://prism//lib/prism/relocation.rb#285 def repository; end private # Lazily create a code units cache for the associated encoding. # - # source://prism//lib/prism/relocation.rb#308 + # source://prism//lib/prism/relocation.rb#309 def cache; end end # A field representing the start and end code unit offsets. # -# source://prism//lib/prism/relocation.rb#228 +# source://prism//lib/prism/relocation.rb#229 class Prism::Relocation::CodeUnitOffsetsField # Initialize a new field with the associated repository and encoding. # # @return [CodeUnitOffsetsField] a new instance of CodeUnitOffsetsField # - # source://prism//lib/prism/relocation.rb#237 + # source://prism//lib/prism/relocation.rb#238 def initialize(repository, encoding); end # The associated encoding for the code units. # - # source://prism//lib/prism/relocation.rb#234 + # source://prism//lib/prism/relocation.rb#235 def encoding; end # Fetches the start and end code units offset of a value for a particular # encoding. # - # source://prism//lib/prism/relocation.rb#245 + # source://prism//lib/prism/relocation.rb#246 def fields(value); end # A pointer to the repository object that is used for lazily creating a # code units cache. # - # source://prism//lib/prism/relocation.rb#231 + # source://prism//lib/prism/relocation.rb#232 def repository; end private # Lazily create a code units cache for the associated encoding. # - # source://prism//lib/prism/relocation.rb#255 + # source://prism//lib/prism/relocation.rb#256 def cache; end end # A field representing the start and end byte columns. # -# source://prism//lib/prism/relocation.rb#261 +# source://prism//lib/prism/relocation.rb#262 class Prism::Relocation::ColumnsField # Fetches the start and end byte column of a value. # - # source://prism//lib/prism/relocation.rb#263 + # source://prism//lib/prism/relocation.rb#264 def fields(value); end end # An abstract field used as the parent class of the two comments fields. # -# source://prism//lib/prism/relocation.rb#314 +# source://prism//lib/prism/relocation.rb#315 class Prism::Relocation::CommentsField private # Create comment objects from the given values. # - # source://prism//lib/prism/relocation.rb#329 + # source://prism//lib/prism/relocation.rb#330 def comments(values); end end # An object that represents a slice of a comment. # -# source://prism//lib/prism/relocation.rb#316 +# source://prism//lib/prism/relocation.rb#317 class Prism::Relocation::CommentsField::Comment # Initialize a new comment with the given slice. # # @return [Comment] a new instance of Comment # - # source://prism//lib/prism/relocation.rb#321 + # source://prism//lib/prism/relocation.rb#322 def initialize(slice); end # The slice of the comment. # - # source://prism//lib/prism/relocation.rb#318 + # source://prism//lib/prism/relocation.rb#319 def slice; end end # An entry in a repository that will lazily reify its values when they are # first accessed. # -# source://prism//lib/prism/relocation.rb#16 +# source://prism//lib/prism/relocation.rb#17 class Prism::Relocation::Entry # Initialize a new entry with the given repository. # # @return [Entry] a new instance of Entry # - # source://prism//lib/prism/relocation.rb#24 + # source://prism//lib/prism/relocation.rb#25 def initialize(repository); end # Fetch the leading and trailing comments of the value. # - # source://prism//lib/prism/relocation.rb#119 + # source://prism//lib/prism/relocation.rb#120 def comments; end # Fetch the end character column of the value. # - # source://prism//lib/prism/relocation.rb#92 + # source://prism//lib/prism/relocation.rb#93 def end_character_column; end # Fetch the end character offset of the value. # - # source://prism//lib/prism/relocation.rb#60 + # source://prism//lib/prism/relocation.rb#61 def end_character_offset; end # Fetch the end code units column of the value, for the encoding that was # configured on the repository. # - # source://prism//lib/prism/relocation.rb#104 + # source://prism//lib/prism/relocation.rb#105 def end_code_units_column; end # Fetch the end code units offset of the value, for the encoding that was # configured on the repository. # - # source://prism//lib/prism/relocation.rb#72 + # source://prism//lib/prism/relocation.rb#73 def end_code_units_offset; end # Fetch the end byte column of the value. # - # source://prism//lib/prism/relocation.rb#82 + # source://prism//lib/prism/relocation.rb#83 def end_column; end # Fetch the end line of the value. # - # source://prism//lib/prism/relocation.rb#40 + # source://prism//lib/prism/relocation.rb#41 def end_line; end # Fetch the end byte offset of the value. # - # source://prism//lib/prism/relocation.rb#50 + # source://prism//lib/prism/relocation.rb#51 def end_offset; end # Fetch the filepath of the value. # - # source://prism//lib/prism/relocation.rb#30 + # source://prism//lib/prism/relocation.rb#31 def filepath; end # Fetch the leading comments of the value. # - # source://prism//lib/prism/relocation.rb#109 + # source://prism//lib/prism/relocation.rb#110 def leading_comments; end # Reify the values on this entry with the given values. This is an # internal-only API that is called from the repository when it is time to # reify the values. # - # source://prism//lib/prism/relocation.rb#126 + # source://prism//lib/prism/relocation.rb#127 def reify!(values); end # Fetch the start character column of the value. # - # source://prism//lib/prism/relocation.rb#87 + # source://prism//lib/prism/relocation.rb#88 def start_character_column; end # Fetch the start character offset of the value. # - # source://prism//lib/prism/relocation.rb#55 + # source://prism//lib/prism/relocation.rb#56 def start_character_offset; end # Fetch the start code units column of the value, for the encoding that # was configured on the repository. # - # source://prism//lib/prism/relocation.rb#98 + # source://prism//lib/prism/relocation.rb#99 def start_code_units_column; end # Fetch the start code units offset of the value, for the encoding that # was configured on the repository. # - # source://prism//lib/prism/relocation.rb#66 + # source://prism//lib/prism/relocation.rb#67 def start_code_units_offset; end # Fetch the start byte column of the value. # - # source://prism//lib/prism/relocation.rb#77 + # source://prism//lib/prism/relocation.rb#78 def start_column; end # Fetch the start line of the value. # - # source://prism//lib/prism/relocation.rb#35 + # source://prism//lib/prism/relocation.rb#36 def start_line; end # Fetch the start byte offset of the value. # - # source://prism//lib/prism/relocation.rb#45 + # source://prism//lib/prism/relocation.rb#46 def start_offset; end # Fetch the trailing comments of the value. # - # source://prism//lib/prism/relocation.rb#114 + # source://prism//lib/prism/relocation.rb#115 def trailing_comments; end private # Fetch a value from the entry, raising an error if it is missing. # - # source://prism//lib/prism/relocation.rb#134 + # source://prism//lib/prism/relocation.rb#135 def fetch_value(name); end # Return the values from the repository, reifying them if necessary. # - # source://prism//lib/prism/relocation.rb#142 + # source://prism//lib/prism/relocation.rb#143 def values; end end @@ -30739,170 +30771,170 @@ end # because it was either not configured on the repository or it has not yet # been fetched. # -# source://prism//lib/prism/relocation.rb#20 +# source://prism//lib/prism/relocation.rb#21 class Prism::Relocation::Entry::MissingValueError < ::StandardError; end # A field that represents the file path. # -# source://prism//lib/prism/relocation.rb#185 +# source://prism//lib/prism/relocation.rb#186 class Prism::Relocation::FilepathField # Initialize a new field with the given file path. # # @return [FilepathField] a new instance of FilepathField # - # source://prism//lib/prism/relocation.rb#190 + # source://prism//lib/prism/relocation.rb#191 def initialize(value); end # Fetch the file path. # - # source://prism//lib/prism/relocation.rb#195 + # source://prism//lib/prism/relocation.rb#196 def fields(_value); end # The file path that this field represents. # - # source://prism//lib/prism/relocation.rb#187 + # source://prism//lib/prism/relocation.rb#188 def value; end end # A field representing the leading comments. # -# source://prism//lib/prism/relocation.rb#335 +# source://prism//lib/prism/relocation.rb#336 class Prism::Relocation::LeadingCommentsField < ::Prism::Relocation::CommentsField # Fetches the leading comments of a value. # - # source://prism//lib/prism/relocation.rb#337 + # source://prism//lib/prism/relocation.rb#338 def fields(value); end end # A field representing the start and end lines. # -# source://prism//lib/prism/relocation.rb#201 +# source://prism//lib/prism/relocation.rb#202 class Prism::Relocation::LinesField # Fetches the start and end line of a value. # - # source://prism//lib/prism/relocation.rb#203 + # source://prism//lib/prism/relocation.rb#204 def fields(value); end end # A field representing the start and end byte offsets. # -# source://prism//lib/prism/relocation.rb#209 +# source://prism//lib/prism/relocation.rb#210 class Prism::Relocation::OffsetsField # Fetches the start and end byte offset of a value. # - # source://prism//lib/prism/relocation.rb#211 + # source://prism//lib/prism/relocation.rb#212 def fields(value); end end # A repository is a configured collection of fields and a set of entries # that knows how to reparse a source and reify the values. # -# source://prism//lib/prism/relocation.rb#352 +# source://prism//lib/prism/relocation.rb#353 class Prism::Relocation::Repository # Initialize a new repository with the given source. # # @return [Repository] a new instance of Repository # - # source://prism//lib/prism/relocation.rb#369 + # source://prism//lib/prism/relocation.rb#370 def initialize(source); end # Configure the character columns field for this repository and return # self. # - # source://prism//lib/prism/relocation.rb#415 + # source://prism//lib/prism/relocation.rb#416 def character_columns; end # Configure the character offsets field for this repository and return # self. # - # source://prism//lib/prism/relocation.rb#398 + # source://prism//lib/prism/relocation.rb#399 def character_offsets; end # Configure the code unit columns field for this repository for a specific # encoding and return self. # - # source://prism//lib/prism/relocation.rb#421 + # source://prism//lib/prism/relocation.rb#422 def code_unit_columns(encoding); end # Configure the code unit offsets field for this repository for a specific # encoding and return self. # - # source://prism//lib/prism/relocation.rb#404 + # source://prism//lib/prism/relocation.rb#405 def code_unit_offsets(encoding); end # Create a code units cache for the given encoding from the source. # - # source://prism//lib/prism/relocation.rb#376 + # source://prism//lib/prism/relocation.rb#377 def code_units_cache(encoding); end # Configure the columns field for this repository and return self. # - # source://prism//lib/prism/relocation.rb#409 + # source://prism//lib/prism/relocation.rb#410 def columns; end # Configure both the leading and trailing comment fields for this # repository and return self. # - # source://prism//lib/prism/relocation.rb#439 + # source://prism//lib/prism/relocation.rb#440 def comments; end # This method is called from nodes and locations when they want to enter # themselves into the repository. It it internal-only and meant to be # called from the #save* APIs. # - # source://prism//lib/prism/relocation.rb#446 + # source://prism//lib/prism/relocation.rb#447 def enter(node_id, field_name); end # The entries that have been saved on this repository. # - # source://prism//lib/prism/relocation.rb#366 + # source://prism//lib/prism/relocation.rb#367 def entries; end # The fields that have been configured on this repository. # - # source://prism//lib/prism/relocation.rb#363 + # source://prism//lib/prism/relocation.rb#364 def fields; end # Configure the filepath field for this repository and return self. # # @raise [ConfigurationError] # - # source://prism//lib/prism/relocation.rb#381 + # source://prism//lib/prism/relocation.rb#382 def filepath; end # Configure the leading comments field for this repository and return # self. # - # source://prism//lib/prism/relocation.rb#427 + # source://prism//lib/prism/relocation.rb#428 def leading_comments; end # Configure the lines field for this repository and return self. # - # source://prism//lib/prism/relocation.rb#387 + # source://prism//lib/prism/relocation.rb#388 def lines; end # Configure the offsets field for this repository and return self. # - # source://prism//lib/prism/relocation.rb#392 + # source://prism//lib/prism/relocation.rb#393 def offsets; end # This method is called from the entries in the repository when they need # to reify their values. It is internal-only and meant to be called from # the various value APIs. # - # source://prism//lib/prism/relocation.rb#455 + # source://prism//lib/prism/relocation.rb#456 def reify!; end # The source associated with this repository. This will be either a # SourceFilepath (the most common use case) or a SourceString. # - # source://prism//lib/prism/relocation.rb#360 + # source://prism//lib/prism/relocation.rb#361 def source; end # Configure the trailing comments field for this repository and return # self. # - # source://prism//lib/prism/relocation.rb#433 + # source://prism//lib/prism/relocation.rb#434 def trailing_comments; end private @@ -30912,72 +30944,72 @@ class Prism::Relocation::Repository # # @raise [ConfigurationError] # - # source://prism//lib/prism/relocation.rb#487 + # source://prism//lib/prism/relocation.rb#488 def field(name, value); end end # Raised when multiple fields of the same type are configured on the same # repository. # -# source://prism//lib/prism/relocation.rb#355 +# source://prism//lib/prism/relocation.rb#356 class Prism::Relocation::Repository::ConfigurationError < ::StandardError; end # Represents the source of a repository that will be reparsed. # -# source://prism//lib/prism/relocation.rb#148 +# source://prism//lib/prism/relocation.rb#149 class Prism::Relocation::Source # Initialize the source with the given value. # # @return [Source] a new instance of Source # - # source://prism//lib/prism/relocation.rb#153 + # source://prism//lib/prism/relocation.rb#154 def initialize(value); end # Create a code units cache for the given encoding. # - # source://prism//lib/prism/relocation.rb#163 + # source://prism//lib/prism/relocation.rb#164 def code_units_cache(encoding); end # Reparse the value and return the parse result. # # @raise [NotImplementedError] # - # source://prism//lib/prism/relocation.rb#158 + # source://prism//lib/prism/relocation.rb#159 def result; end # The value that will need to be reparsed. # - # source://prism//lib/prism/relocation.rb#150 + # source://prism//lib/prism/relocation.rb#151 def value; end end # A source that is represented by a file path. # -# source://prism//lib/prism/relocation.rb#169 +# source://prism//lib/prism/relocation.rb#170 class Prism::Relocation::SourceFilepath < ::Prism::Relocation::Source # Reparse the file and return the parse result. # - # source://prism//lib/prism/relocation.rb#171 + # source://prism//lib/prism/relocation.rb#172 def result; end end # A source that is represented by a string. # -# source://prism//lib/prism/relocation.rb#177 +# source://prism//lib/prism/relocation.rb#178 class Prism::Relocation::SourceString < ::Prism::Relocation::Source # Reparse the string and return the parse result. # - # source://prism//lib/prism/relocation.rb#179 + # source://prism//lib/prism/relocation.rb#180 def result; end end # A field representing the trailing comments. # -# source://prism//lib/prism/relocation.rb#343 +# source://prism//lib/prism/relocation.rb#344 class Prism::Relocation::TrailingCommentsField < ::Prism::Relocation::CommentsField # Fetches the trailing comments of a value. # - # source://prism//lib/prism/relocation.rb#345 + # source://prism//lib/prism/relocation.rb#346 def fields(value); end end @@ -30987,13 +31019,13 @@ end # ^^ # end # -# source://prism//lib/prism/node.rb#15439 +# source://prism//lib/prism/node.rb#15610 class Prism::RequiredKeywordParameterNode < ::Prism::Node # Initialize a new RequiredKeywordParameterNode node. # # @return [RequiredKeywordParameterNode] a new instance of RequiredKeywordParameterNode # - # source://prism//lib/prism/node.rb#15441 + # source://prism//lib/prism/node.rb#15612 sig do params( source: Prism::Source, @@ -31009,36 +31041,36 @@ class Prism::RequiredKeywordParameterNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#15521 + # source://prism//lib/prism/node.rb#15692 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#15451 + # source://prism//lib/prism/node.rb#15622 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15456 + # source://prism//lib/prism/node.rb#15627 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#15466 + # source://prism//lib/prism/node.rb#15637 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#15461 + # source://prism//lib/prism/node.rb#15632 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol, ?name_loc: Location) -> RequiredKeywordParameterNode # - # source://prism//lib/prism/node.rb#15471 + # source://prism//lib/prism/node.rb#15642 sig do params( node_id: Integer, @@ -31050,16 +31082,16 @@ class Prism::RequiredKeywordParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15456 + # source://prism//lib/prism/node.rb#15627 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol, name_loc: Location } # - # source://prism//lib/prism/node.rb#15479 + # source://prism//lib/prism/node.rb#15650 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -31068,19 +31100,19 @@ class Prism::RequiredKeywordParameterNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#15505 + # source://prism//lib/prism/node.rb#15676 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#15489 + # source://prism//lib/prism/node.rb#15660 sig { returns(Symbol) } def name; end # attr_reader name_loc: Location # - # source://prism//lib/prism/node.rb#15492 + # source://prism//lib/prism/node.rb#15663 sig { returns(Prism::Location) } def name_loc; end @@ -31088,26 +31120,26 @@ class Prism::RequiredKeywordParameterNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15484 + # source://prism//lib/prism/node.rb#15655 sig { returns(T::Boolean) } def repeated_parameter?; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#15500 + # source://prism//lib/prism/node.rb#15671 def save_name_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#15510 + # source://prism//lib/prism/node.rb#15681 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#15515 + # source://prism//lib/prism/node.rb#15686 def type; end end end @@ -31118,49 +31150,49 @@ end # ^ # end # -# source://prism//lib/prism/node.rb#15534 +# source://prism//lib/prism/node.rb#15705 class Prism::RequiredParameterNode < ::Prism::Node # Initialize a new RequiredParameterNode node. # # @return [RequiredParameterNode] a new instance of RequiredParameterNode # - # source://prism//lib/prism/node.rb#15536 + # source://prism//lib/prism/node.rb#15707 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#15602 + # source://prism//lib/prism/node.rb#15773 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#15545 + # source://prism//lib/prism/node.rb#15716 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15550 + # source://prism//lib/prism/node.rb#15721 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#15560 + # source://prism//lib/prism/node.rb#15731 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#15555 + # source://prism//lib/prism/node.rb#15726 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol) -> RequiredParameterNode # - # source://prism//lib/prism/node.rb#15565 + # source://prism//lib/prism/node.rb#15736 sig do params( node_id: Integer, @@ -31171,16 +31203,16 @@ class Prism::RequiredParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15550 + # source://prism//lib/prism/node.rb#15721 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol } # - # source://prism//lib/prism/node.rb#15573 + # source://prism//lib/prism/node.rb#15744 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -31189,13 +31221,13 @@ class Prism::RequiredParameterNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#15586 + # source://prism//lib/prism/node.rb#15757 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol # - # source://prism//lib/prism/node.rb#15583 + # source://prism//lib/prism/node.rb#15754 sig { returns(Symbol) } def name; end @@ -31203,20 +31235,20 @@ class Prism::RequiredParameterNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15578 + # source://prism//lib/prism/node.rb#15749 sig { returns(T::Boolean) } def repeated_parameter?; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#15591 + # source://prism//lib/prism/node.rb#15762 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#15596 + # source://prism//lib/prism/node.rb#15767 def type; end end end @@ -31226,13 +31258,13 @@ end # foo rescue nil # ^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#15613 +# source://prism//lib/prism/node.rb#15784 class Prism::RescueModifierNode < ::Prism::Node # Initialize a new RescueModifierNode node. # # @return [RescueModifierNode] a new instance of RescueModifierNode # - # source://prism//lib/prism/node.rb#15615 + # source://prism//lib/prism/node.rb#15786 sig do params( source: Prism::Source, @@ -31249,36 +31281,36 @@ class Prism::RescueModifierNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#15699 + # source://prism//lib/prism/node.rb#15870 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#15626 + # source://prism//lib/prism/node.rb#15797 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15631 + # source://prism//lib/prism/node.rb#15802 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#15641 + # source://prism//lib/prism/node.rb#15812 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#15636 + # source://prism//lib/prism/node.rb#15807 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?expression: Prism::node, ?keyword_loc: Location, ?rescue_expression: Prism::node) -> RescueModifierNode # - # source://prism//lib/prism/node.rb#15646 + # source://prism//lib/prism/node.rb#15817 sig do params( node_id: Integer, @@ -31291,22 +31323,22 @@ class Prism::RescueModifierNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), expression: T.unsafe(nil), keyword_loc: T.unsafe(nil), rescue_expression: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15631 + # source://prism//lib/prism/node.rb#15802 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, expression: Prism::node, keyword_loc: Location, rescue_expression: Prism::node } # - # source://prism//lib/prism/node.rb#15654 + # source://prism//lib/prism/node.rb#15825 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # attr_reader expression: Prism::node # - # source://prism//lib/prism/node.rb#15659 + # source://prism//lib/prism/node.rb#15830 sig { returns(Prism::Node) } def expression; end @@ -31315,47 +31347,47 @@ class Prism::RescueModifierNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#15683 + # source://prism//lib/prism/node.rb#15854 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#15678 + # source://prism//lib/prism/node.rb#15849 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#15662 + # source://prism//lib/prism/node.rb#15833 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/parse_result/newlines.rb#115 + # source://prism//lib/prism/parse_result/newlines.rb#116 def newline_flag!(lines); end # attr_reader rescue_expression: Prism::node # - # source://prism//lib/prism/node.rb#15675 + # source://prism//lib/prism/node.rb#15846 sig { returns(Prism::Node) } def rescue_expression; end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#15670 + # source://prism//lib/prism/node.rb#15841 def save_keyword_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#15688 + # source://prism//lib/prism/node.rb#15859 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#15693 + # source://prism//lib/prism/node.rb#15864 def type; end end end @@ -31370,13 +31402,13 @@ end # # `Foo, *splat, Bar` are in the `exceptions` field. `ex` is in the `reference` field. # -# source://prism//lib/prism/node.rb#15716 +# source://prism//lib/prism/node.rb#15887 class Prism::RescueNode < ::Prism::Node # Initialize a new RescueNode node. # # @return [RescueNode] a new instance of RescueNode # - # source://prism//lib/prism/node.rb#15718 + # source://prism//lib/prism/node.rb#15889 sig do params( source: Prism::Source, @@ -31397,42 +31429,42 @@ class Prism::RescueNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#15865 + # source://prism//lib/prism/node.rb#16036 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#15733 + # source://prism//lib/prism/node.rb#15904 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15738 + # source://prism//lib/prism/node.rb#15909 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#15753 + # source://prism//lib/prism/node.rb#15924 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#15743 + # source://prism//lib/prism/node.rb#15914 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # Returns the subsequent rescue clause of the rescue node. This method is # deprecated in favor of #subsequent. # - # source://prism//lib/prism/node_ext.rb#494 + # source://prism//lib/prism/node_ext.rb#497 def consequent; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?keyword_loc: Location, ?exceptions: Array[Prism::node], ?operator_loc: Location?, ?reference: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil, ?then_keyword_loc: Location?, ?statements: StatementsNode?, ?subsequent: RescueNode?) -> RescueNode # - # source://prism//lib/prism/node.rb#15758 + # source://prism//lib/prism/node.rb#15929 sig do params( node_id: Integer, @@ -31449,22 +31481,22 @@ class Prism::RescueNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), exceptions: T.unsafe(nil), operator_loc: T.unsafe(nil), reference: T.unsafe(nil), then_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), subsequent: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15738 + # source://prism//lib/prism/node.rb#15909 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, exceptions: Array[Prism::node], operator_loc: Location?, reference: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil, then_keyword_loc: Location?, statements: StatementsNode?, subsequent: RescueNode? } # - # source://prism//lib/prism/node.rb#15766 + # source://prism//lib/prism/node.rb#15937 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # attr_reader exceptions: Array[Prism::node] # - # source://prism//lib/prism/node.rb#15784 + # source://prism//lib/prism/node.rb#15955 sig { returns(T::Array[Prism::Node]) } def exceptions; end @@ -31473,37 +31505,37 @@ class Prism::RescueNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#15849 + # source://prism//lib/prism/node.rb#16020 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#15834 + # source://prism//lib/prism/node.rb#16005 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#15771 + # source://prism//lib/prism/node.rb#15942 sig { returns(Prism::Location) } def keyword_loc; end # def operator: () -> String? # - # source://prism//lib/prism/node.rb#15839 + # source://prism//lib/prism/node.rb#16010 sig { returns(T.nilable(String)) } def operator; end # attr_reader operator_loc: Location? # - # source://prism//lib/prism/node.rb#15787 + # source://prism//lib/prism/node.rb#15958 sig { returns(T.nilable(Prism::Location)) } def operator_loc; end # attr_reader reference: LocalVariableTargetNode | InstanceVariableTargetNode | ClassVariableTargetNode | GlobalVariableTargetNode | ConstantTargetNode | ConstantPathTargetNode | CallTargetNode | IndexTargetNode | BackReferenceReadNode | NumberedReferenceReadNode | MissingNode | nil # - # source://prism//lib/prism/node.rb#15806 + # source://prism//lib/prism/node.rb#15977 sig do returns(T.nilable(T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::MissingNode))) end @@ -31512,55 +31544,55 @@ class Prism::RescueNode < ::Prism::Node # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#15779 + # source://prism//lib/prism/node.rb#15950 def save_keyword_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#15801 + # source://prism//lib/prism/node.rb#15972 def save_operator_loc(repository); end # Save the then_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#15823 + # source://prism//lib/prism/node.rb#15994 def save_then_keyword_loc(repository); end # attr_reader statements: StatementsNode? # - # source://prism//lib/prism/node.rb#15828 + # source://prism//lib/prism/node.rb#15999 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # attr_reader subsequent: RescueNode? # - # source://prism//lib/prism/node.rb#15831 + # source://prism//lib/prism/node.rb#16002 sig { returns(T.nilable(Prism::RescueNode)) } def subsequent; end # def then_keyword: () -> String? # - # source://prism//lib/prism/node.rb#15844 + # source://prism//lib/prism/node.rb#16015 sig { returns(T.nilable(String)) } def then_keyword; end # attr_reader then_keyword_loc: Location? # - # source://prism//lib/prism/node.rb#15809 + # source://prism//lib/prism/node.rb#15980 sig { returns(T.nilable(Prism::Location)) } def then_keyword_loc; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#15854 + # source://prism//lib/prism/node.rb#16025 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#15859 + # source://prism//lib/prism/node.rb#16030 def type; end end end @@ -31571,13 +31603,13 @@ end # ^^ # end # -# source://prism//lib/prism/node.rb#15883 +# source://prism//lib/prism/node.rb#16054 class Prism::RestParameterNode < ::Prism::Node # Initialize a new RestParameterNode node. # # @return [RestParameterNode] a new instance of RestParameterNode # - # source://prism//lib/prism/node.rb#15885 + # source://prism//lib/prism/node.rb#16056 sig do params( source: Prism::Source, @@ -31594,36 +31626,36 @@ class Prism::RestParameterNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#15990 + # source://prism//lib/prism/node.rb#16161 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#15896 + # source://prism//lib/prism/node.rb#16067 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15901 + # source://prism//lib/prism/node.rb#16072 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#15911 + # source://prism//lib/prism/node.rb#16082 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#15906 + # source://prism//lib/prism/node.rb#16077 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?name: Symbol?, ?name_loc: Location?, ?operator_loc: Location) -> RestParameterNode # - # source://prism//lib/prism/node.rb#15916 + # source://prism//lib/prism/node.rb#16087 sig do params( node_id: Integer, @@ -31636,16 +31668,16 @@ class Prism::RestParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#15901 + # source://prism//lib/prism/node.rb#16072 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, name: Symbol?, name_loc: Location?, operator_loc: Location } # - # source://prism//lib/prism/node.rb#15924 + # source://prism//lib/prism/node.rb#16095 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -31654,31 +31686,31 @@ class Prism::RestParameterNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#15974 + # source://prism//lib/prism/node.rb#16145 sig { override.returns(String) } def inspect; end # attr_reader name: Symbol? # - # source://prism//lib/prism/node.rb#15934 + # source://prism//lib/prism/node.rb#16105 sig { returns(T.nilable(Symbol)) } def name; end # attr_reader name_loc: Location? # - # source://prism//lib/prism/node.rb#15937 + # source://prism//lib/prism/node.rb#16108 sig { returns(T.nilable(Prism::Location)) } def name_loc; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#15969 + # source://prism//lib/prism/node.rb#16140 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#15956 + # source://prism//lib/prism/node.rb#16127 sig { returns(Prism::Location) } def operator_loc; end @@ -31686,32 +31718,32 @@ class Prism::RestParameterNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#15929 + # source://prism//lib/prism/node.rb#16100 sig { returns(T::Boolean) } def repeated_parameter?; end # Save the name_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#15951 + # source://prism//lib/prism/node.rb#16122 def save_name_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#15964 + # source://prism//lib/prism/node.rb#16135 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#15979 + # source://prism//lib/prism/node.rb#16150 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#15984 + # source://prism//lib/prism/node.rb#16155 def type; end end end @@ -31720,13 +31752,13 @@ end # the requested structure, any comments that were encounters, and any errors # that were encountered. # -# source://prism//lib/prism/parse_result.rb#679 +# source://prism//lib/prism/parse_result.rb#680 class Prism::Result # Create a new result object with the given values. # # @return [Result] a new instance of Result # - # source://prism//lib/prism/parse_result.rb#701 + # source://prism//lib/prism/parse_result.rb#702 sig do params( comments: T::Array[Prism::Comment], @@ -31741,7 +31773,7 @@ class Prism::Result # Create a code units cache for the given encoding. # - # source://prism//lib/prism/parse_result.rb#733 + # source://prism//lib/prism/parse_result.rb#734 sig do params( encoding: Encoding @@ -31751,7 +31783,7 @@ class Prism::Result # The list of comments that were encountered during parsing. # - # source://prism//lib/prism/parse_result.rb#681 + # source://prism//lib/prism/parse_result.rb#682 sig { returns(T::Array[Prism::Comment]) } def comments; end @@ -31759,25 +31791,25 @@ class Prism::Result # and the rest of the content of the file. This content is loaded into the # DATA constant when the file being parsed is the main file being executed. # - # source://prism//lib/prism/parse_result.rb#689 + # source://prism//lib/prism/parse_result.rb#690 sig { returns(T.nilable(Prism::Location)) } def data_loc; end # Implement the hash pattern matching interface for Result. # - # source://prism//lib/prism/parse_result.rb#711 + # source://prism//lib/prism/parse_result.rb#712 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # Returns the encoding of the source code that was parsed. # - # source://prism//lib/prism/parse_result.rb#716 + # source://prism//lib/prism/parse_result.rb#717 sig { returns(Encoding) } def encoding; end # The list of errors that were generated during parsing. # - # source://prism//lib/prism/parse_result.rb#692 + # source://prism//lib/prism/parse_result.rb#693 sig { returns(T::Array[Prism::ParseError]) } def errors; end @@ -31786,19 +31818,19 @@ class Prism::Result # # @return [Boolean] # - # source://prism//lib/prism/parse_result.rb#728 + # source://prism//lib/prism/parse_result.rb#729 sig { returns(T::Boolean) } def failure?; end # The list of magic comments that were encountered during parsing. # - # source://prism//lib/prism/parse_result.rb#684 + # source://prism//lib/prism/parse_result.rb#685 sig { returns(T::Array[Prism::MagicComment]) } def magic_comments; end # A Source instance that represents the source code that was parsed. # - # source://prism//lib/prism/parse_result.rb#698 + # source://prism//lib/prism/parse_result.rb#699 sig { returns(Prism::Source) } def source; end @@ -31807,13 +31839,13 @@ class Prism::Result # # @return [Boolean] # - # source://prism//lib/prism/parse_result.rb#722 + # source://prism//lib/prism/parse_result.rb#723 sig { returns(T::Boolean) } def success?; end # The list of warnings that were generated during parsing. # - # source://prism//lib/prism/parse_result.rb#695 + # source://prism//lib/prism/parse_result.rb#696 sig { returns(T::Array[Prism::ParseWarning]) } def warnings; end end @@ -31823,62 +31855,62 @@ end # retry # ^^^^^ # -# source://prism//lib/prism/node.rb#16003 +# source://prism//lib/prism/node.rb#16174 class Prism::RetryNode < ::Prism::Node # Initialize a new RetryNode node. # # @return [RetryNode] a new instance of RetryNode # - # source://prism//lib/prism/node.rb#16005 + # source://prism//lib/prism/node.rb#16176 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#16062 + # source://prism//lib/prism/node.rb#16233 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#16013 + # source://prism//lib/prism/node.rb#16184 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16018 + # source://prism//lib/prism/node.rb#16189 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#16028 + # source://prism//lib/prism/node.rb#16199 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#16023 + # source://prism//lib/prism/node.rb#16194 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> RetryNode # - # source://prism//lib/prism/node.rb#16033 + # source://prism//lib/prism/node.rb#16204 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::RetryNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16018 + # source://prism//lib/prism/node.rb#16189 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#16041 + # source://prism//lib/prism/node.rb#16212 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -31887,20 +31919,20 @@ class Prism::RetryNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#16046 + # source://prism//lib/prism/node.rb#16217 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#16051 + # source://prism//lib/prism/node.rb#16222 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#16056 + # source://prism//lib/prism/node.rb#16227 def type; end end end @@ -31910,13 +31942,13 @@ end # return 1 # ^^^^^^^^ # -# source://prism//lib/prism/node.rb#16071 +# source://prism//lib/prism/node.rb#16242 class Prism::ReturnNode < ::Prism::Node # Initialize a new ReturnNode node. # # @return [ReturnNode] a new instance of ReturnNode # - # source://prism//lib/prism/node.rb#16073 + # source://prism//lib/prism/node.rb#16244 sig do params( source: Prism::Source, @@ -31932,42 +31964,42 @@ class Prism::ReturnNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#16155 + # source://prism//lib/prism/node.rb#16326 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#16083 + # source://prism//lib/prism/node.rb#16254 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader arguments: ArgumentsNode? # - # source://prism//lib/prism/node.rb#16131 + # source://prism//lib/prism/node.rb#16302 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16088 + # source://prism//lib/prism/node.rb#16259 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#16100 + # source://prism//lib/prism/node.rb#16271 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#16093 + # source://prism//lib/prism/node.rb#16264 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?keyword_loc: Location, ?arguments: ArgumentsNode?) -> ReturnNode # - # source://prism//lib/prism/node.rb#16105 + # source://prism//lib/prism/node.rb#16276 sig do params( node_id: Integer, @@ -31979,16 +32011,16 @@ class Prism::ReturnNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), arguments: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16088 + # source://prism//lib/prism/node.rb#16259 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, arguments: ArgumentsNode? } # - # source://prism//lib/prism/node.rb#16113 + # source://prism//lib/prism/node.rb#16284 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -31997,38 +32029,38 @@ class Prism::ReturnNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#16139 + # source://prism//lib/prism/node.rb#16310 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#16134 + # source://prism//lib/prism/node.rb#16305 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#16118 + # source://prism//lib/prism/node.rb#16289 sig { returns(Prism::Location) } def keyword_loc; end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#16126 + # source://prism//lib/prism/node.rb#16297 def save_keyword_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#16144 + # source://prism//lib/prism/node.rb#16315 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#16149 + # source://prism//lib/prism/node.rb#16320 def type; end end end @@ -32038,13 +32070,13 @@ end # variables visible at that scope as well as the forwarding parameters # available at that scope. # -# source://prism//lib/prism/parse_result.rb#887 +# source://prism//lib/prism/parse_result.rb#888 class Prism::Scope # Create a new scope object with the given locals and forwarding. # # @return [Scope] a new instance of Scope # - # source://prism//lib/prism/parse_result.rb#898 + # source://prism//lib/prism/parse_result.rb#899 sig { params(locals: T::Array[Symbol], forwarding: T::Array[Symbol]).void } def initialize(locals, forwarding); end @@ -32052,14 +32084,14 @@ class Prism::Scope # should by defined as an array of symbols containing the specific values of # :*, :**, :&, or :"...". # - # source://prism//lib/prism/parse_result.rb#895 + # source://prism//lib/prism/parse_result.rb#896 sig { returns(T::Array[Symbol]) } def forwarding; end # The list of local variables that are defined in this scope. This should be # defined as an array of symbols. # - # source://prism//lib/prism/parse_result.rb#890 + # source://prism//lib/prism/parse_result.rb#891 sig { returns(T::Array[Symbol]) } def locals; end end @@ -32069,62 +32101,62 @@ end # self # ^^^^ # -# source://prism//lib/prism/node.rb#16166 +# source://prism//lib/prism/node.rb#16337 class Prism::SelfNode < ::Prism::Node # Initialize a new SelfNode node. # # @return [SelfNode] a new instance of SelfNode # - # source://prism//lib/prism/node.rb#16168 + # source://prism//lib/prism/node.rb#16339 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#16225 + # source://prism//lib/prism/node.rb#16396 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#16176 + # source://prism//lib/prism/node.rb#16347 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16181 + # source://prism//lib/prism/node.rb#16352 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#16191 + # source://prism//lib/prism/node.rb#16362 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#16186 + # source://prism//lib/prism/node.rb#16357 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> SelfNode # - # source://prism//lib/prism/node.rb#16196 + # source://prism//lib/prism/node.rb#16367 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::SelfNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16181 + # source://prism//lib/prism/node.rb#16352 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#16204 + # source://prism//lib/prism/node.rb#16375 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -32133,27 +32165,27 @@ class Prism::SelfNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#16209 + # source://prism//lib/prism/node.rb#16380 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#16214 + # source://prism//lib/prism/node.rb#16385 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#16219 + # source://prism//lib/prism/node.rb#16390 def type; end end end # A module responsible for deserializing parse results. # -# source://prism//lib/prism/serialize.rb#14 +# source://prism//lib/prism/serialize.rb#17 module Prism::Serialize class << self # Deserialize the dumped output from a request to lex or lex_file. @@ -32161,7 +32193,7 @@ module Prism::Serialize # The formatting of the source of this method is purposeful to illustrate # the structure of the serialized data. # - # source://prism//lib/prism/serialize.rb#84 + # source://prism//lib/prism/serialize.rb#87 def load_lex(input, serialized, freeze); end # Deserialize the dumped output from a request to parse or parse_file. @@ -32169,7 +32201,7 @@ module Prism::Serialize # The formatting of the source of this method is purposeful to illustrate # the structure of the serialized data. # - # source://prism//lib/prism/serialize.rb#31 + # source://prism//lib/prism/serialize.rb#34 def load_parse(input, serialized, freeze); end # Deserialize the dumped output from a request to parse_comments or @@ -32178,7 +32210,7 @@ module Prism::Serialize # The formatting of the source of this method is purposeful to illustrate # the structure of the serialized data. # - # source://prism//lib/prism/serialize.rb#128 + # source://prism//lib/prism/serialize.rb#131 def load_parse_comments(input, serialized, freeze); end # Deserialize the dumped output from a request to parse_lex or @@ -32187,165 +32219,165 @@ module Prism::Serialize # The formatting of the source of this method is purposeful to illustrate # the structure of the serialized data. # - # source://prism//lib/prism/serialize.rb#150 + # source://prism//lib/prism/serialize.rb#153 def load_parse_lex(input, serialized, freeze); end end end -# source://prism//lib/prism/serialize.rb#199 +# source://prism//lib/prism/serialize.rb#202 class Prism::Serialize::ConstantPool # @return [ConstantPool] a new instance of ConstantPool # - # source://prism//lib/prism/serialize.rb#202 + # source://prism//lib/prism/serialize.rb#205 def initialize(input, serialized, base, size); end - # source://prism//lib/prism/serialize.rb#210 + # source://prism//lib/prism/serialize.rb#213 def get(index, encoding); end # Returns the value of attribute size. # - # source://prism//lib/prism/serialize.rb#200 + # source://prism//lib/prism/serialize.rb#203 def size; end end # StringIO is synchronized and that adds a high overhead on TruffleRuby. # -# source://prism//lib/prism/serialize.rb#253 +# source://prism//lib/prism/serialize.rb#256 Prism::Serialize::FastStringIO = StringIO -# source://prism//lib/prism/serialize.rb#256 +# source://prism//lib/prism/serialize.rb#259 class Prism::Serialize::Loader # @return [Loader] a new instance of Loader # - # source://prism//lib/prism/serialize.rb#259 + # source://prism//lib/prism/serialize.rb#262 def initialize(source, serialized); end # @return [Boolean] # - # source://prism//lib/prism/serialize.rb#267 + # source://prism//lib/prism/serialize.rb#270 def eof?; end # Returns the value of attribute input. # - # source://prism//lib/prism/serialize.rb#257 + # source://prism//lib/prism/serialize.rb#260 def input; end # Returns the value of attribute io. # - # source://prism//lib/prism/serialize.rb#257 + # source://prism//lib/prism/serialize.rb#260 def io; end - # source://prism//lib/prism/serialize.rb#301 + # source://prism//lib/prism/serialize.rb#304 def load_comments(freeze); end - # source://prism//lib/prism/serialize.rb#823 + # source://prism//lib/prism/serialize.rb#829 def load_constant(constant_pool, encoding); end - # source://prism//lib/prism/serialize.rb#272 + # source://prism//lib/prism/serialize.rb#275 def load_constant_pool(constant_pool); end - # source://prism//lib/prism/serialize.rb#774 + # source://prism//lib/prism/serialize.rb#780 def load_double; end - # source://prism//lib/prism/serialize.rb#789 + # source://prism//lib/prism/serialize.rb#795 def load_embedded_string(encoding); end - # source://prism//lib/prism/serialize.rb#289 + # source://prism//lib/prism/serialize.rb#292 def load_encoding; end - # source://prism//lib/prism/serialize.rb#659 + # source://prism//lib/prism/serialize.rb#665 def load_error_level; end - # source://prism//lib/prism/serialize.rb#674 + # source://prism//lib/prism/serialize.rb#680 def load_errors(encoding, freeze); end - # source://prism//lib/prism/serialize.rb#283 + # source://prism//lib/prism/serialize.rb#286 def load_header; end - # source://prism//lib/prism/serialize.rb#763 + # source://prism//lib/prism/serialize.rb#769 def load_integer; end - # source://prism//lib/prism/serialize.rb#295 + # source://prism//lib/prism/serialize.rb#298 def load_line_offsets(freeze); end - # source://prism//lib/prism/serialize.rb#810 + # source://prism//lib/prism/serialize.rb#816 def load_location(freeze); end - # source://prism//lib/prism/serialize.rb#804 + # source://prism//lib/prism/serialize.rb#810 def load_location_object(freeze); end - # source://prism//lib/prism/serialize.rb#318 + # source://prism//lib/prism/serialize.rb#321 def load_magic_comments(freeze); end - # source://prism//lib/prism/serialize.rb#834 + # source://prism//lib/prism/serialize.rb#840 def load_node(constant_pool, encoding, freeze); end - # source://prism//lib/prism/serialize.rb#828 + # source://prism//lib/prism/serialize.rb#834 def load_optional_constant(constant_pool, encoding); end - # source://prism//lib/prism/serialize.rb#815 + # source://prism//lib/prism/serialize.rb#821 def load_optional_location(freeze); end - # source://prism//lib/prism/serialize.rb#819 + # source://prism//lib/prism/serialize.rb#825 def load_optional_location_object(freeze); end - # source://prism//lib/prism/serialize.rb#782 + # source://prism//lib/prism/serialize.rb#788 def load_optional_node(constant_pool, encoding, freeze); end - # source://prism//lib/prism/serialize.rb#793 + # source://prism//lib/prism/serialize.rb#799 def load_string(encoding); end - # source://prism//lib/prism/serialize.rb#725 + # source://prism//lib/prism/serialize.rb#731 def load_tokens; end - # source://prism//lib/prism/serialize.rb#778 + # source://prism//lib/prism/serialize.rb#784 def load_uint32; end - # source://prism//lib/prism/serialize.rb#758 + # source://prism//lib/prism/serialize.rb#764 def load_varsint; end # variable-length integer using https://en.wikipedia.org/wiki/LEB128 # This is also what protobuf uses: https://protobuf.dev/programming-guides/encoding/#varints # - # source://prism//lib/prism/serialize.rb#744 + # source://prism//lib/prism/serialize.rb#750 def load_varuint; end - # source://prism//lib/prism/serialize.rb#693 + # source://prism//lib/prism/serialize.rb#699 def load_warning_level; end - # source://prism//lib/prism/serialize.rb#706 + # source://prism//lib/prism/serialize.rb#712 def load_warnings(encoding, freeze); end # Returns the value of attribute source. # - # source://prism//lib/prism/serialize.rb#257 + # source://prism//lib/prism/serialize.rb#260 def source; end end -# source://prism//lib/prism/serialize.rb#335 +# source://prism//lib/prism/serialize.rb#338 Prism::Serialize::Loader::DIAGNOSTIC_TYPES = T.let(T.unsafe(nil), Array) # The major version of prism that we are expecting to find in the serialized # strings. # -# source://prism//lib/prism/serialize.rb#17 +# source://prism//lib/prism/serialize.rb#20 Prism::Serialize::MAJOR_VERSION = T.let(T.unsafe(nil), Integer) # The minor version of prism that we are expecting to find in the serialized # strings. # -# source://prism//lib/prism/serialize.rb#21 +# source://prism//lib/prism/serialize.rb#24 Prism::Serialize::MINOR_VERSION = T.let(T.unsafe(nil), Integer) # The patch version of prism that we are expecting to find in the serialized # strings. # -# source://prism//lib/prism/serialize.rb#25 +# source://prism//lib/prism/serialize.rb#28 Prism::Serialize::PATCH_VERSION = T.let(T.unsafe(nil), Integer) # The token types that can be indexed by their enum values. # -# source://prism//lib/prism/serialize.rb#2219 +# source://prism//lib/prism/serialize.rb#2225 Prism::Serialize::TOKEN_TYPES = T.let(T.unsafe(nil), Array) # This node wraps a constant write to indicate that when the value is written, it should have its shareability state modified. @@ -32353,13 +32385,13 @@ Prism::Serialize::TOKEN_TYPES = T.let(T.unsafe(nil), Array) # C = { a: 1 } # ^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#16235 +# source://prism//lib/prism/node.rb#16406 class Prism::ShareableConstantNode < ::Prism::Node # Initialize a new ShareableConstantNode node. # # @return [ShareableConstantNode] a new instance of ShareableConstantNode # - # source://prism//lib/prism/node.rb#16237 + # source://prism//lib/prism/node.rb#16408 sig do params( source: Prism::Source, @@ -32374,36 +32406,36 @@ class Prism::ShareableConstantNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#16313 + # source://prism//lib/prism/node.rb#16484 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#16246 + # source://prism//lib/prism/node.rb#16417 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16251 + # source://prism//lib/prism/node.rb#16422 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#16261 + # source://prism//lib/prism/node.rb#16432 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#16256 + # source://prism//lib/prism/node.rb#16427 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?write: ConstantWriteNode | ConstantAndWriteNode | ConstantOrWriteNode | ConstantOperatorWriteNode | ConstantPathWriteNode | ConstantPathAndWriteNode | ConstantPathOrWriteNode | ConstantPathOperatorWriteNode) -> ShareableConstantNode # - # source://prism//lib/prism/node.rb#16266 + # source://prism//lib/prism/node.rb#16437 sig do params( node_id: Integer, @@ -32414,16 +32446,16 @@ class Prism::ShareableConstantNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), write: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16251 + # source://prism//lib/prism/node.rb#16422 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, write: ConstantWriteNode | ConstantAndWriteNode | ConstantOrWriteNode | ConstantOperatorWriteNode | ConstantPathWriteNode | ConstantPathAndWriteNode | ConstantPathOrWriteNode | ConstantPathOperatorWriteNode } # - # source://prism//lib/prism/node.rb#16274 + # source://prism//lib/prism/node.rb#16445 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -32431,7 +32463,7 @@ class Prism::ShareableConstantNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#16289 + # source://prism//lib/prism/node.rb#16460 sig { returns(T::Boolean) } def experimental_copy?; end @@ -32439,7 +32471,7 @@ class Prism::ShareableConstantNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#16284 + # source://prism//lib/prism/node.rb#16455 sig { returns(T::Boolean) } def experimental_everything?; end @@ -32448,7 +32480,7 @@ class Prism::ShareableConstantNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#16297 + # source://prism//lib/prism/node.rb#16468 sig { override.returns(String) } def inspect; end @@ -32456,19 +32488,19 @@ class Prism::ShareableConstantNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#16279 + # source://prism//lib/prism/node.rb#16450 sig { returns(T::Boolean) } def literal?; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#16302 + # source://prism//lib/prism/node.rb#16473 sig { override.returns(Symbol) } def type; end # The constant write that should be modified with the shareability state. # - # source://prism//lib/prism/node.rb#16294 + # source://prism//lib/prism/node.rb#16465 sig do returns(T.any(Prism::ConstantWriteNode, Prism::ConstantAndWriteNode, Prism::ConstantOrWriteNode, Prism::ConstantOperatorWriteNode, Prism::ConstantPathWriteNode, Prism::ConstantPathAndWriteNode, Prism::ConstantPathOrWriteNode, Prism::ConstantPathOperatorWriteNode)) end @@ -32477,29 +32509,29 @@ class Prism::ShareableConstantNode < ::Prism::Node class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#16307 + # source://prism//lib/prism/node.rb#16478 def type; end end end # Flags for shareable constant nodes. # -# source://prism//lib/prism/node.rb#18597 +# source://prism//lib/prism/node.rb#18768 module Prism::ShareableConstantNodeFlags; end # constant writes that should be modified with shareable constant value experimental copy # -# source://prism//lib/prism/node.rb#18605 +# source://prism//lib/prism/node.rb#18776 Prism::ShareableConstantNodeFlags::EXPERIMENTAL_COPY = T.let(T.unsafe(nil), Integer) # constant writes that should be modified with shareable constant value experimental everything # -# source://prism//lib/prism/node.rb#18602 +# source://prism//lib/prism/node.rb#18773 Prism::ShareableConstantNodeFlags::EXPERIMENTAL_EVERYTHING = T.let(T.unsafe(nil), Integer) # constant writes that should be modified with shareable constant value literal # -# source://prism//lib/prism/node.rb#18599 +# source://prism//lib/prism/node.rb#18770 Prism::ShareableConstantNodeFlags::LITERAL = T.let(T.unsafe(nil), Integer) # Represents a singleton class declaration involving the `class` keyword. @@ -32507,13 +32539,13 @@ Prism::ShareableConstantNodeFlags::LITERAL = T.let(T.unsafe(nil), Integer) # class << self end # ^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#16324 +# source://prism//lib/prism/node.rb#16495 class Prism::SingletonClassNode < ::Prism::Node # Initialize a new SingletonClassNode node. # # @return [SingletonClassNode] a new instance of SingletonClassNode # - # source://prism//lib/prism/node.rb#16326 + # source://prism//lib/prism/node.rb#16497 sig do params( source: Prism::Source, @@ -32533,54 +32565,54 @@ class Prism::SingletonClassNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#16455 + # source://prism//lib/prism/node.rb#16626 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#16340 + # source://prism//lib/prism/node.rb#16511 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader body: StatementsNode | BeginNode | nil # - # source://prism//lib/prism/node.rb#16408 + # source://prism//lib/prism/node.rb#16579 sig { returns(T.nilable(T.any(Prism::StatementsNode, Prism::BeginNode))) } def body; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16345 + # source://prism//lib/prism/node.rb#16516 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def class_keyword: () -> String # - # source://prism//lib/prism/node.rb#16424 + # source://prism//lib/prism/node.rb#16595 sig { returns(String) } def class_keyword; end # attr_reader class_keyword_loc: Location # - # source://prism//lib/prism/node.rb#16379 + # source://prism//lib/prism/node.rb#16550 sig { returns(Prism::Location) } def class_keyword_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#16358 + # source://prism//lib/prism/node.rb#16529 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#16350 + # source://prism//lib/prism/node.rb#16521 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?locals: Array[Symbol], ?class_keyword_loc: Location, ?operator_loc: Location, ?expression: Prism::node, ?body: StatementsNode | BeginNode | nil, ?end_keyword_loc: Location) -> SingletonClassNode # - # source://prism//lib/prism/node.rb#16363 + # source://prism//lib/prism/node.rb#16534 sig do params( node_id: Integer, @@ -32596,34 +32628,34 @@ class Prism::SingletonClassNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), class_keyword_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), expression: T.unsafe(nil), body: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16345 + # source://prism//lib/prism/node.rb#16516 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, locals: Array[Symbol], class_keyword_loc: Location, operator_loc: Location, expression: Prism::node, body: StatementsNode | BeginNode | nil, end_keyword_loc: Location } # - # source://prism//lib/prism/node.rb#16371 + # source://prism//lib/prism/node.rb#16542 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # def end_keyword: () -> String # - # source://prism//lib/prism/node.rb#16434 + # source://prism//lib/prism/node.rb#16605 sig { returns(String) } def end_keyword; end # attr_reader end_keyword_loc: Location # - # source://prism//lib/prism/node.rb#16411 + # source://prism//lib/prism/node.rb#16582 sig { returns(Prism::Location) } def end_keyword_loc; end # attr_reader expression: Prism::node # - # source://prism//lib/prism/node.rb#16405 + # source://prism//lib/prism/node.rb#16576 sig { returns(Prism::Node) } def expression; end @@ -32632,56 +32664,56 @@ class Prism::SingletonClassNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#16439 + # source://prism//lib/prism/node.rb#16610 sig { override.returns(String) } def inspect; end # attr_reader locals: Array[Symbol] # - # source://prism//lib/prism/node.rb#16376 + # source://prism//lib/prism/node.rb#16547 sig { returns(T::Array[Symbol]) } def locals; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#16429 + # source://prism//lib/prism/node.rb#16600 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#16392 + # source://prism//lib/prism/node.rb#16563 sig { returns(Prism::Location) } def operator_loc; end # Save the class_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#16387 + # source://prism//lib/prism/node.rb#16558 def save_class_keyword_loc(repository); end # Save the end_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#16419 + # source://prism//lib/prism/node.rb#16590 def save_end_keyword_loc(repository); end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#16400 + # source://prism//lib/prism/node.rb#16571 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#16444 + # source://prism//lib/prism/node.rb#16615 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#16449 + # source://prism//lib/prism/node.rb#16620 def type; end end end @@ -32690,32 +32722,32 @@ end # conjunction with locations to allow them to resolve line numbers and source # ranges. # -# source://prism//lib/prism/parse_result.rb#7 +# source://prism//lib/prism/parse_result.rb#8 class Prism::Source # Create a new source object with the given source code. # # @return [Source] a new instance of Source # - # source://prism//lib/prism/parse_result.rb#45 + # source://prism//lib/prism/parse_result.rb#46 sig { params(source: String, start_line: Integer, offsets: T::Array[Integer]).void } def initialize(source, start_line = T.unsafe(nil), offsets = T.unsafe(nil)); end # Return the column number in characters for the given byte offset. # - # source://prism//lib/prism/parse_result.rb#107 + # source://prism//lib/prism/parse_result.rb#108 sig { params(byte_offset: Integer).returns(Integer) } def character_column(byte_offset); end # Return the character offset for the given byte offset. # - # source://prism//lib/prism/parse_result.rb#102 + # source://prism//lib/prism/parse_result.rb#103 sig { params(byte_offset: Integer).returns(Integer) } def character_offset(byte_offset); end # Generate a cache that targets a specific encoding for calculating code # unit offsets. # - # source://prism//lib/prism/parse_result.rb#135 + # source://prism//lib/prism/parse_result.rb#136 sig do params( encoding: Encoding @@ -32726,7 +32758,7 @@ class Prism::Source # Returns the column number in code units for the given encoding for the # given byte offset. # - # source://prism//lib/prism/parse_result.rb#141 + # source://prism//lib/prism/parse_result.rb#142 sig { params(byte_offset: Integer, encoding: Encoding).returns(Integer) } def code_units_column(byte_offset, encoding); end @@ -32743,88 +32775,88 @@ class Prism::Source # boundary. Second, it's possible that the source code will contain a # character that has no equivalent in the given encoding. # - # source://prism//lib/prism/parse_result.rb#123 + # source://prism//lib/prism/parse_result.rb#124 sig { params(byte_offset: Integer, encoding: Encoding).returns(Integer) } def code_units_offset(byte_offset, encoding); end # Return the column number for the given byte offset. # - # source://prism//lib/prism/parse_result.rb#97 + # source://prism//lib/prism/parse_result.rb#98 sig { params(byte_offset: Integer).returns(Integer) } def column(byte_offset); end # Freeze this object and the objects it contains. # - # source://prism//lib/prism/parse_result.rb#146 + # source://prism//lib/prism/parse_result.rb#147 def deep_freeze; end # Returns the encoding of the source code, which is set by parameters to the # parser or by the encoding magic comment. # - # source://prism//lib/prism/parse_result.rb#63 + # source://prism//lib/prism/parse_result.rb#64 sig { returns(Encoding) } def encoding; end # Binary search through the offsets to find the line number for the given # byte offset. # - # source://prism//lib/prism/parse_result.rb#80 + # source://prism//lib/prism/parse_result.rb#81 sig { params(byte_offset: Integer).returns(Integer) } def line(byte_offset); end # Returns the byte offset of the end of the line corresponding to the given # byte offset. # - # source://prism//lib/prism/parse_result.rb#92 + # source://prism//lib/prism/parse_result.rb#93 def line_end(byte_offset); end # Return the byte offset of the start of the line corresponding to the given # byte offset. # - # source://prism//lib/prism/parse_result.rb#86 + # source://prism//lib/prism/parse_result.rb#87 sig { params(byte_offset: Integer).returns(Integer) } def line_start(byte_offset); end # Returns the lines of the source code as an array of strings. # - # source://prism//lib/prism/parse_result.rb#68 + # source://prism//lib/prism/parse_result.rb#69 sig { returns(T::Array[String]) } def lines; end # The list of newline byte offsets in the source code. # - # source://prism//lib/prism/parse_result.rb#42 + # source://prism//lib/prism/parse_result.rb#43 sig { returns(T::Array[Integer]) } def offsets; end # Replace the value of offsets with the given value. # - # source://prism//lib/prism/parse_result.rb#57 + # source://prism//lib/prism/parse_result.rb#58 sig { params(offsets: T::Array[Integer]).void } def replace_offsets(offsets); end # Replace the value of start_line with the given value. # - # source://prism//lib/prism/parse_result.rb#52 + # source://prism//lib/prism/parse_result.rb#53 sig { params(start_line: Integer).void } def replace_start_line(start_line); end # Perform a byteslice on the source code using the given byte offset and # byte length. # - # source://prism//lib/prism/parse_result.rb#74 + # source://prism//lib/prism/parse_result.rb#75 sig { params(byte_offset: Integer, length: Integer).returns(String) } def slice(byte_offset, length); end # The source code that this source object represents. # - # source://prism//lib/prism/parse_result.rb#36 + # source://prism//lib/prism/parse_result.rb#37 sig { returns(String) } def source; end # The line number where this source starts. # - # source://prism//lib/prism/parse_result.rb#39 + # source://prism//lib/prism/parse_result.rb#40 sig { returns(Integer) } def start_line; end @@ -32833,7 +32865,7 @@ class Prism::Source # Binary search through the offsets to find the line number for the given # byte offset. # - # source://prism//lib/prism/parse_result.rb#156 + # source://prism//lib/prism/parse_result.rb#157 def find_line(byte_offset); end class << self @@ -32842,7 +32874,7 @@ class Prism::Source # specialized and more performant `ASCIISource` if no multibyte characters # are present in the source code. # - # source://prism//lib/prism/parse_result.rb#12 + # source://prism//lib/prism/parse_result.rb#13 def for(source, start_line = T.unsafe(nil), offsets = T.unsafe(nil)); end end end @@ -32852,62 +32884,62 @@ end # __ENCODING__ # ^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#16471 +# source://prism//lib/prism/node.rb#16642 class Prism::SourceEncodingNode < ::Prism::Node # Initialize a new SourceEncodingNode node. # # @return [SourceEncodingNode] a new instance of SourceEncodingNode # - # source://prism//lib/prism/node.rb#16473 + # source://prism//lib/prism/node.rb#16644 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#16530 + # source://prism//lib/prism/node.rb#16701 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#16481 + # source://prism//lib/prism/node.rb#16652 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16486 + # source://prism//lib/prism/node.rb#16657 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#16496 + # source://prism//lib/prism/node.rb#16667 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#16491 + # source://prism//lib/prism/node.rb#16662 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> SourceEncodingNode # - # source://prism//lib/prism/node.rb#16501 + # source://prism//lib/prism/node.rb#16672 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::SourceEncodingNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16486 + # source://prism//lib/prism/node.rb#16657 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#16509 + # source://prism//lib/prism/node.rb#16680 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -32916,20 +32948,20 @@ class Prism::SourceEncodingNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#16514 + # source://prism//lib/prism/node.rb#16685 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#16519 + # source://prism//lib/prism/node.rb#16690 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#16524 + # source://prism//lib/prism/node.rb#16695 def type; end end end @@ -32939,13 +32971,13 @@ end # __FILE__ # ^^^^^^^^ # -# source://prism//lib/prism/node.rb#16539 +# source://prism//lib/prism/node.rb#16710 class Prism::SourceFileNode < ::Prism::Node # Initialize a new SourceFileNode node. # # @return [SourceFileNode] a new instance of SourceFileNode # - # source://prism//lib/prism/node.rb#16541 + # source://prism//lib/prism/node.rb#16712 sig do params( source: Prism::Source, @@ -32960,36 +32992,36 @@ class Prism::SourceFileNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#16622 + # source://prism//lib/prism/node.rb#16793 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#16550 + # source://prism//lib/prism/node.rb#16721 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16555 + # source://prism//lib/prism/node.rb#16726 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#16565 + # source://prism//lib/prism/node.rb#16736 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#16560 + # source://prism//lib/prism/node.rb#16731 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?filepath: String) -> SourceFileNode # - # source://prism//lib/prism/node.rb#16570 + # source://prism//lib/prism/node.rb#16741 sig do params( node_id: Integer, @@ -33000,16 +33032,16 @@ class Prism::SourceFileNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), filepath: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16555 + # source://prism//lib/prism/node.rb#16726 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, filepath: String } # - # source://prism//lib/prism/node.rb#16578 + # source://prism//lib/prism/node.rb#16749 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -33018,7 +33050,7 @@ class Prism::SourceFileNode < ::Prism::Node # Represents the file path being parsed. This corresponds directly to the `filepath` option given to the various `Prism::parse*` APIs. # - # source://prism//lib/prism/node.rb#16603 + # source://prism//lib/prism/node.rb#16774 sig { returns(String) } def filepath; end @@ -33026,7 +33058,7 @@ class Prism::SourceFileNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#16588 + # source://prism//lib/prism/node.rb#16759 sig { returns(T::Boolean) } def forced_binary_encoding?; end @@ -33034,7 +33066,7 @@ class Prism::SourceFileNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#16583 + # source://prism//lib/prism/node.rb#16754 sig { returns(T::Boolean) } def forced_utf8_encoding?; end @@ -33042,13 +33074,13 @@ class Prism::SourceFileNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#16593 + # source://prism//lib/prism/node.rb#16764 sig { returns(T::Boolean) } def frozen?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#16606 + # source://prism//lib/prism/node.rb#16777 sig { override.returns(String) } def inspect; end @@ -33056,20 +33088,20 @@ class Prism::SourceFileNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#16598 + # source://prism//lib/prism/node.rb#16769 sig { returns(T::Boolean) } def mutable?; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#16611 + # source://prism//lib/prism/node.rb#16782 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#16616 + # source://prism//lib/prism/node.rb#16787 def type; end end end @@ -33079,62 +33111,62 @@ end # __LINE__ # ^^^^^^^^ # -# source://prism//lib/prism/node.rb#16633 +# source://prism//lib/prism/node.rb#16804 class Prism::SourceLineNode < ::Prism::Node # Initialize a new SourceLineNode node. # # @return [SourceLineNode] a new instance of SourceLineNode # - # source://prism//lib/prism/node.rb#16635 + # source://prism//lib/prism/node.rb#16806 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#16692 + # source://prism//lib/prism/node.rb#16863 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#16643 + # source://prism//lib/prism/node.rb#16814 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16648 + # source://prism//lib/prism/node.rb#16819 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#16658 + # source://prism//lib/prism/node.rb#16829 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#16653 + # source://prism//lib/prism/node.rb#16824 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> SourceLineNode # - # source://prism//lib/prism/node.rb#16663 + # source://prism//lib/prism/node.rb#16834 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::SourceLineNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16648 + # source://prism//lib/prism/node.rb#16819 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#16671 + # source://prism//lib/prism/node.rb#16842 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -33143,20 +33175,20 @@ class Prism::SourceLineNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#16676 + # source://prism//lib/prism/node.rb#16847 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#16681 + # source://prism//lib/prism/node.rb#16852 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#16686 + # source://prism//lib/prism/node.rb#16857 def type; end end end @@ -33166,13 +33198,13 @@ end # [*a] # ^^ # -# source://prism//lib/prism/node.rb#16701 +# source://prism//lib/prism/node.rb#16872 class Prism::SplatNode < ::Prism::Node # Initialize a new SplatNode node. # # @return [SplatNode] a new instance of SplatNode # - # source://prism//lib/prism/node.rb#16703 + # source://prism//lib/prism/node.rb#16874 sig do params( source: Prism::Source, @@ -33188,36 +33220,36 @@ class Prism::SplatNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#16785 + # source://prism//lib/prism/node.rb#16956 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#16713 + # source://prism//lib/prism/node.rb#16884 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16718 + # source://prism//lib/prism/node.rb#16889 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#16730 + # source://prism//lib/prism/node.rb#16901 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#16723 + # source://prism//lib/prism/node.rb#16894 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?operator_loc: Location, ?expression: Prism::node?) -> SplatNode # - # source://prism//lib/prism/node.rb#16735 + # source://prism//lib/prism/node.rb#16906 sig do params( node_id: Integer, @@ -33229,22 +33261,22 @@ class Prism::SplatNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), operator_loc: T.unsafe(nil), expression: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16718 + # source://prism//lib/prism/node.rb#16889 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, operator_loc: Location, expression: Prism::node? } # - # source://prism//lib/prism/node.rb#16743 + # source://prism//lib/prism/node.rb#16914 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # attr_reader expression: Prism::node? # - # source://prism//lib/prism/node.rb#16761 + # source://prism//lib/prism/node.rb#16932 sig { returns(T.nilable(Prism::Node)) } def expression; end @@ -33253,38 +33285,38 @@ class Prism::SplatNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#16769 + # source://prism//lib/prism/node.rb#16940 sig { override.returns(String) } def inspect; end # def operator: () -> String # - # source://prism//lib/prism/node.rb#16764 + # source://prism//lib/prism/node.rb#16935 sig { returns(String) } def operator; end # attr_reader operator_loc: Location # - # source://prism//lib/prism/node.rb#16748 + # source://prism//lib/prism/node.rb#16919 sig { returns(Prism::Location) } def operator_loc; end # Save the operator_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#16756 + # source://prism//lib/prism/node.rb#16927 def save_operator_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#16774 + # source://prism//lib/prism/node.rb#16945 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#16779 + # source://prism//lib/prism/node.rb#16950 def type; end end end @@ -33294,13 +33326,13 @@ end # foo; bar; baz # ^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#16796 +# source://prism//lib/prism/node.rb#16967 class Prism::StatementsNode < ::Prism::Node # Initialize a new StatementsNode node. # # @return [StatementsNode] a new instance of StatementsNode # - # source://prism//lib/prism/node.rb#16798 + # source://prism//lib/prism/node.rb#16969 sig do params( source: Prism::Source, @@ -33315,42 +33347,42 @@ class Prism::StatementsNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#16859 + # source://prism//lib/prism/node.rb#17030 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#16807 + # source://prism//lib/prism/node.rb#16978 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader body: Array[Prism::node] # - # source://prism//lib/prism/node.rb#16840 + # source://prism//lib/prism/node.rb#17011 sig { returns(T::Array[Prism::Node]) } def body; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16812 + # source://prism//lib/prism/node.rb#16983 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#16822 + # source://prism//lib/prism/node.rb#16993 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#16817 + # source://prism//lib/prism/node.rb#16988 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?body: Array[Prism::node]) -> StatementsNode # - # source://prism//lib/prism/node.rb#16827 + # source://prism//lib/prism/node.rb#16998 sig do params( node_id: Integer, @@ -33361,16 +33393,16 @@ class Prism::StatementsNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), body: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16812 + # source://prism//lib/prism/node.rb#16983 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, body: Array[Prism::node] } # - # source://prism//lib/prism/node.rb#16835 + # source://prism//lib/prism/node.rb#17006 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -33379,43 +33411,43 @@ class Prism::StatementsNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#16843 + # source://prism//lib/prism/node.rb#17014 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#16848 + # source://prism//lib/prism/node.rb#17019 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#16853 + # source://prism//lib/prism/node.rb#17024 def type; end end end # Flags for string nodes. # -# source://prism//lib/prism/node.rb#18609 +# source://prism//lib/prism/node.rb#18780 module Prism::StringFlags; end # internal bytes forced the encoding to binary # -# source://prism//lib/prism/node.rb#18614 +# source://prism//lib/prism/node.rb#18785 Prism::StringFlags::FORCED_BINARY_ENCODING = T.let(T.unsafe(nil), Integer) # internal bytes forced the encoding to UTF-8 # -# source://prism//lib/prism/node.rb#18611 +# source://prism//lib/prism/node.rb#18782 Prism::StringFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18617 +# source://prism//lib/prism/node.rb#18788 Prism::StringFlags::FROZEN = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18620 +# source://prism//lib/prism/node.rb#18791 Prism::StringFlags::MUTABLE = T.let(T.unsafe(nil), Integer) # Represents a string literal, a string contained within a `%w` list, or plain string content within an interpolated string. @@ -33429,7 +33461,7 @@ Prism::StringFlags::MUTABLE = T.let(T.unsafe(nil), Integer) # "foo #{bar} baz" # ^^^^ ^^^^ # -# source://prism//lib/prism/node.rb#16876 +# source://prism//lib/prism/node.rb#17047 class Prism::StringNode < ::Prism::Node include ::Prism::HeredocQuery @@ -33437,7 +33469,7 @@ class Prism::StringNode < ::Prism::Node # # @return [StringNode] a new instance of StringNode # - # source://prism//lib/prism/node.rb#16878 + # source://prism//lib/prism/node.rb#17049 sig do params( source: Prism::Source, @@ -33455,60 +33487,60 @@ class Prism::StringNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#17028 + # source://prism//lib/prism/node.rb#17199 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#16890 + # source://prism//lib/prism/node.rb#17061 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16895 + # source://prism//lib/prism/node.rb#17066 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String? # - # source://prism//lib/prism/node.rb#17007 + # source://prism//lib/prism/node.rb#17178 sig { returns(T.nilable(String)) } def closing; end # attr_reader closing_loc: Location? # - # source://prism//lib/prism/node.rb#16975 + # source://prism//lib/prism/node.rb#17146 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#16905 + # source://prism//lib/prism/node.rb#17076 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#16900 + # source://prism//lib/prism/node.rb#17071 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def content: () -> String # - # source://prism//lib/prism/node.rb#17002 + # source://prism//lib/prism/node.rb#17173 sig { returns(String) } def content; end # attr_reader content_loc: Location # - # source://prism//lib/prism/node.rb#16962 + # source://prism//lib/prism/node.rb#17133 sig { returns(Prism::Location) } def content_loc; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location?, ?content_loc: Location, ?closing_loc: Location?, ?unescaped: String) -> StringNode # - # source://prism//lib/prism/node.rb#16910 + # source://prism//lib/prism/node.rb#17081 sig do params( node_id: Integer, @@ -33522,16 +33554,16 @@ class Prism::StringNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), content_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#16895 + # source://prism//lib/prism/node.rb#17066 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, content_loc: Location, closing_loc: Location?, unescaped: String } # - # source://prism//lib/prism/node.rb#16918 + # source://prism//lib/prism/node.rb#17089 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -33542,7 +33574,7 @@ class Prism::StringNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#16928 + # source://prism//lib/prism/node.rb#17099 sig { returns(T::Boolean) } def forced_binary_encoding?; end @@ -33550,7 +33582,7 @@ class Prism::StringNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#16923 + # source://prism//lib/prism/node.rb#17094 sig { returns(T::Boolean) } def forced_utf8_encoding?; end @@ -33558,7 +33590,7 @@ class Prism::StringNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#16933 + # source://prism//lib/prism/node.rb#17104 sig { returns(T::Boolean) } def frozen?; end @@ -33567,7 +33599,7 @@ class Prism::StringNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#17012 + # source://prism//lib/prism/node.rb#17183 sig { override.returns(String) } def inspect; end @@ -33575,63 +33607,63 @@ class Prism::StringNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#16938 + # source://prism//lib/prism/node.rb#17109 sig { returns(T::Boolean) } def mutable?; end # def opening: () -> String? # - # source://prism//lib/prism/node.rb#16997 + # source://prism//lib/prism/node.rb#17168 sig { returns(T.nilable(String)) } def opening; end # attr_reader opening_loc: Location? # - # source://prism//lib/prism/node.rb#16943 + # source://prism//lib/prism/node.rb#17114 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#16989 + # source://prism//lib/prism/node.rb#17160 def save_closing_loc(repository); end # Save the content_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#16970 + # source://prism//lib/prism/node.rb#17141 def save_content_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#16957 + # source://prism//lib/prism/node.rb#17128 def save_opening_loc(repository); end # Occasionally it's helpful to treat a string as if it were interpolated so # that there's a consistent interface for working with strings. # - # source://prism//lib/prism/node_ext.rb#72 + # source://prism//lib/prism/node_ext.rb#75 sig { returns(Prism::InterpolatedStringNode) } def to_interpolated; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#17017 + # source://prism//lib/prism/node.rb#17188 sig { override.returns(Symbol) } def type; end # attr_reader unescaped: String # - # source://prism//lib/prism/node.rb#16994 + # source://prism//lib/prism/node.rb#17165 sig { returns(String) } def unescaped; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#17022 + # source://prism//lib/prism/node.rb#17193 def type; end end end @@ -33639,39 +33671,39 @@ end # Query methods that allow categorizing strings based on their context for # where they could be valid in a Ruby syntax tree. # -# source://prism//lib/prism/string_query.rb#6 +# source://prism//lib/prism/string_query.rb#7 class Prism::StringQuery # Initialize a new query with the given string. # # @return [StringQuery] a new instance of StringQuery # - # source://prism//lib/prism/string_query.rb#11 + # source://prism//lib/prism/string_query.rb#12 def initialize(string); end # Whether or not this string is a valid constant name. # # @return [Boolean] # - # source://prism//lib/prism/string_query.rb#21 + # source://prism//lib/prism/string_query.rb#22 def constant?; end # Whether or not this string is a valid local variable name. # # @return [Boolean] # - # source://prism//lib/prism/string_query.rb#16 + # source://prism//lib/prism/string_query.rb#17 def local?; end # Whether or not this string is a valid method name. # # @return [Boolean] # - # source://prism//lib/prism/string_query.rb#26 + # source://prism//lib/prism/string_query.rb#27 def method_name?; end # The string that this query is wrapping. # - # source://prism//lib/prism/string_query.rb#8 + # source://prism//lib/prism/string_query.rb#9 def string; end class << self @@ -33700,13 +33732,13 @@ end # super foo, bar # ^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#17045 +# source://prism//lib/prism/node.rb#17216 class Prism::SuperNode < ::Prism::Node # Initialize a new SuperNode node. # # @return [SuperNode] a new instance of SuperNode # - # source://prism//lib/prism/node.rb#17047 + # source://prism//lib/prism/node.rb#17218 sig do params( source: Prism::Source, @@ -33725,48 +33757,48 @@ class Prism::SuperNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#17184 + # source://prism//lib/prism/node.rb#17355 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#17060 + # source://prism//lib/prism/node.rb#17231 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader arguments: ArgumentsNode? # - # source://prism//lib/prism/node.rb#17128 + # source://prism//lib/prism/node.rb#17299 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end # attr_reader block: BlockNode | BlockArgumentNode | nil # - # source://prism//lib/prism/node.rb#17150 + # source://prism//lib/prism/node.rb#17321 sig { returns(T.nilable(T.any(Prism::BlockNode, Prism::BlockArgumentNode))) } def block; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17065 + # source://prism//lib/prism/node.rb#17236 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#17078 + # source://prism//lib/prism/node.rb#17249 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#17070 + # source://prism//lib/prism/node.rb#17241 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?keyword_loc: Location, ?lparen_loc: Location?, ?arguments: ArgumentsNode?, ?rparen_loc: Location?, ?block: BlockNode | BlockArgumentNode | nil) -> SuperNode # - # source://prism//lib/prism/node.rb#17083 + # source://prism//lib/prism/node.rb#17254 sig do params( node_id: Integer, @@ -33781,16 +33813,16 @@ class Prism::SuperNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), lparen_loc: T.unsafe(nil), arguments: T.unsafe(nil), rparen_loc: T.unsafe(nil), block: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17065 + # source://prism//lib/prism/node.rb#17236 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, lparen_loc: Location?, arguments: ArgumentsNode?, rparen_loc: Location?, block: BlockNode | BlockArgumentNode | nil } # - # source://prism//lib/prism/node.rb#17091 + # source://prism//lib/prism/node.rb#17262 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -33799,96 +33831,96 @@ class Prism::SuperNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#17168 + # source://prism//lib/prism/node.rb#17339 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#17153 + # source://prism//lib/prism/node.rb#17324 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#17096 + # source://prism//lib/prism/node.rb#17267 sig { returns(Prism::Location) } def keyword_loc; end # def lparen: () -> String? # - # source://prism//lib/prism/node.rb#17158 + # source://prism//lib/prism/node.rb#17329 sig { returns(T.nilable(String)) } def lparen; end # attr_reader lparen_loc: Location? # - # source://prism//lib/prism/node.rb#17109 + # source://prism//lib/prism/node.rb#17280 sig { returns(T.nilable(Prism::Location)) } def lparen_loc; end # def rparen: () -> String? # - # source://prism//lib/prism/node.rb#17163 + # source://prism//lib/prism/node.rb#17334 sig { returns(T.nilable(String)) } def rparen; end # attr_reader rparen_loc: Location? # - # source://prism//lib/prism/node.rb#17131 + # source://prism//lib/prism/node.rb#17302 sig { returns(T.nilable(Prism::Location)) } def rparen_loc; end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17104 + # source://prism//lib/prism/node.rb#17275 def save_keyword_loc(repository); end # Save the lparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17123 + # source://prism//lib/prism/node.rb#17294 def save_lparen_loc(repository); end # Save the rparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17145 + # source://prism//lib/prism/node.rb#17316 def save_rparen_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#17173 + # source://prism//lib/prism/node.rb#17344 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#17178 + # source://prism//lib/prism/node.rb#17349 def type; end end end # Flags for symbol nodes. # -# source://prism//lib/prism/node.rb#18624 +# source://prism//lib/prism/node.rb#18795 module Prism::SymbolFlags; end # internal bytes forced the encoding to binary # -# source://prism//lib/prism/node.rb#18629 +# source://prism//lib/prism/node.rb#18800 Prism::SymbolFlags::FORCED_BINARY_ENCODING = T.let(T.unsafe(nil), Integer) # internal bytes forced the encoding to US-ASCII # -# source://prism//lib/prism/node.rb#18632 +# source://prism//lib/prism/node.rb#18803 Prism::SymbolFlags::FORCED_US_ASCII_ENCODING = T.let(T.unsafe(nil), Integer) # internal bytes forced the encoding to UTF-8 # -# source://prism//lib/prism/node.rb#18626 +# source://prism//lib/prism/node.rb#18797 Prism::SymbolFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) # Represents a symbol literal or a symbol contained within a `%i` list. @@ -33899,13 +33931,13 @@ Prism::SymbolFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) # %i[foo] # ^^^ # -# source://prism//lib/prism/node.rb#17201 +# source://prism//lib/prism/node.rb#17372 class Prism::SymbolNode < ::Prism::Node # Initialize a new SymbolNode node. # # @return [SymbolNode] a new instance of SymbolNode # - # source://prism//lib/prism/node.rb#17203 + # source://prism//lib/prism/node.rb#17374 sig do params( source: Prism::Source, @@ -33923,48 +33955,48 @@ class Prism::SymbolNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#17354 + # source://prism//lib/prism/node.rb#17525 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#17215 + # source://prism//lib/prism/node.rb#17386 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17220 + # source://prism//lib/prism/node.rb#17391 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String? # - # source://prism//lib/prism/node.rb#17333 + # source://prism//lib/prism/node.rb#17504 sig { returns(T.nilable(String)) } def closing; end # attr_reader closing_loc: Location? # - # source://prism//lib/prism/node.rb#17301 + # source://prism//lib/prism/node.rb#17472 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#17230 + # source://prism//lib/prism/node.rb#17401 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#17225 + # source://prism//lib/prism/node.rb#17396 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location?, ?value_loc: Location?, ?closing_loc: Location?, ?unescaped: String) -> SymbolNode # - # source://prism//lib/prism/node.rb#17235 + # source://prism//lib/prism/node.rb#17406 sig do params( node_id: Integer, @@ -33978,16 +34010,16 @@ class Prism::SymbolNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), value_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17220 + # source://prism//lib/prism/node.rb#17391 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location?, value_loc: Location?, closing_loc: Location?, unescaped: String } # - # source://prism//lib/prism/node.rb#17243 + # source://prism//lib/prism/node.rb#17414 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -33998,7 +34030,7 @@ class Prism::SymbolNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#17253 + # source://prism//lib/prism/node.rb#17424 sig { returns(T::Boolean) } def forced_binary_encoding?; end @@ -34006,7 +34038,7 @@ class Prism::SymbolNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#17258 + # source://prism//lib/prism/node.rb#17429 sig { returns(T::Boolean) } def forced_us_ascii_encoding?; end @@ -34014,133 +34046,133 @@ class Prism::SymbolNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#17248 + # source://prism//lib/prism/node.rb#17419 sig { returns(T::Boolean) } def forced_utf8_encoding?; end # def inspect -> String # - # source://prism//lib/prism/node.rb#17338 + # source://prism//lib/prism/node.rb#17509 sig { override.returns(String) } def inspect; end # def opening: () -> String? # - # source://prism//lib/prism/node.rb#17323 + # source://prism//lib/prism/node.rb#17494 sig { returns(T.nilable(String)) } def opening; end # attr_reader opening_loc: Location? # - # source://prism//lib/prism/node.rb#17263 + # source://prism//lib/prism/node.rb#17434 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17315 + # source://prism//lib/prism/node.rb#17486 def save_closing_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17277 + # source://prism//lib/prism/node.rb#17448 def save_opening_loc(repository); end # Save the value_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17296 + # source://prism//lib/prism/node.rb#17467 def save_value_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#17343 + # source://prism//lib/prism/node.rb#17514 sig { override.returns(Symbol) } def type; end # attr_reader unescaped: String # - # source://prism//lib/prism/node.rb#17320 + # source://prism//lib/prism/node.rb#17491 sig { returns(String) } def unescaped; end # def value: () -> String? # - # source://prism//lib/prism/node.rb#17328 + # source://prism//lib/prism/node.rb#17499 sig { returns(T.nilable(String)) } def value; end # attr_reader value_loc: Location? # - # source://prism//lib/prism/node.rb#17282 + # source://prism//lib/prism/node.rb#17453 sig { returns(T.nilable(Prism::Location)) } def value_loc; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#17348 + # source://prism//lib/prism/node.rb#17519 def type; end end end # This represents a token from the Ruby source. # -# source://prism//lib/prism/parse_result.rb#816 +# source://prism//lib/prism/parse_result.rb#817 class Prism::Token # Create a new token object with the given type, value, and location. # # @return [Token] a new instance of Token # - # source://prism//lib/prism/parse_result.rb#828 + # source://prism//lib/prism/parse_result.rb#829 sig { params(source: Prism::Source, type: Symbol, value: String, location: T.any(Integer, Prism::Location)).void } def initialize(source, type, value, location); end # Returns true if the given other token is equal to this token. # - # source://prism//lib/prism/parse_result.rb#863 + # source://prism//lib/prism/parse_result.rb#864 sig { params(other: T.untyped).returns(T::Boolean) } def ==(other); end # Implement the hash pattern matching interface for Token. # - # source://prism//lib/prism/parse_result.rb#836 + # source://prism//lib/prism/parse_result.rb#837 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # Freeze this object and the objects it contains. # - # source://prism//lib/prism/parse_result.rb#876 + # source://prism//lib/prism/parse_result.rb#877 def deep_freeze; end # Returns a string representation of this token. # - # source://prism//lib/prism/parse_result.rb#870 + # source://prism//lib/prism/parse_result.rb#871 def inspect; end # A Location object representing the location of this token in the source. # - # source://prism//lib/prism/parse_result.rb#841 + # source://prism//lib/prism/parse_result.rb#842 sig { returns(Prism::Location) } def location; end # Implement the pretty print interface for Token. # - # source://prism//lib/prism/parse_result.rb#848 + # source://prism//lib/prism/parse_result.rb#849 sig { params(q: T.untyped).void } def pretty_print(q); end # The type of token that this token is. # - # source://prism//lib/prism/parse_result.rb#822 + # source://prism//lib/prism/parse_result.rb#823 sig { returns(Symbol) } def type; end # A byteslice of the source that this token represents. # - # source://prism//lib/prism/parse_result.rb#825 + # source://prism//lib/prism/parse_result.rb#826 sig { returns(String) } def value; end @@ -34148,7 +34180,7 @@ class Prism::Token # The Source object that represents the source this token came from. # - # source://prism//lib/prism/parse_result.rb#818 + # source://prism//lib/prism/parse_result.rb#819 sig { returns(Prism::Source) } def source; end end @@ -34156,7 +34188,7 @@ end # This module is responsible for converting the prism syntax tree into other # syntax trees. # -# source://prism//lib/prism/translation.rb#6 +# source://prism//lib/prism/translation.rb#7 module Prism::Translation; end # This class is the entry-point for converting a prism syntax tree into the @@ -34164,7 +34196,14 @@ module Prism::Translation; end # the parser gem, and overrides the parse* methods to parse with prism and # then translate. # -# source://prism//lib/prism/translation/parser.rb#16 +# Note that this version of the parser always parses using the latest +# version of Ruby syntax supported by Prism. If you want specific version +# support, use one of the version-specific subclasses, such as +# `Prism::Translation::Parser34`. If you want to parse using the same +# version of Ruby syntax as the currently running version of Ruby, use +# `Prism::Translation::ParserCurrent`. +# +# source://prism//lib/prism/translation/parser.rb#29 class Prism::Translation::Parser < ::Parser::Base # The `builder` argument is used to create the parser using our custom builder class by default. # @@ -34193,53 +34232,53 @@ class Prism::Translation::Parser < ::Parser::Base # # @return [Parser] a new instance of Parser # - # source://prism//lib/prism/translation/parser.rb#61 + # source://prism//lib/prism/translation/parser.rb#74 def initialize(builder = T.unsafe(nil), parser: T.unsafe(nil)); end # The default encoding for Ruby files is UTF-8. # - # source://prism//lib/prism/translation/parser.rb#72 + # source://prism//lib/prism/translation/parser.rb#91 def default_encoding; end # Parses a source buffer and returns the AST. # - # source://prism//lib/prism/translation/parser.rb#80 + # source://prism//lib/prism/translation/parser.rb#99 def parse(source_buffer); end # Parses a source buffer and returns the AST and the source code comments. # - # source://prism//lib/prism/translation/parser.rb#93 + # source://prism//lib/prism/translation/parser.rb#112 def parse_with_comments(source_buffer); end # Parses a source buffer and returns the AST, the source code comments, # and the tokens emitted by the lexer. # - # source://prism//lib/prism/translation/parser.rb#110 + # source://prism//lib/prism/translation/parser.rb#129 def tokenize(source_buffer, recover = T.unsafe(nil)); end # Since prism resolves num params for us, we don't need to support this # kind of logic here. # - # source://prism//lib/prism/translation/parser.rb#136 + # source://prism//lib/prism/translation/parser.rb#155 def try_declare_numparam(node); end - # source://prism//lib/prism/translation/parser.rb#67 + # source://prism//lib/prism/translation/parser.rb#86 sig { overridable.returns(Integer) } def version; end - # source://prism//lib/prism/translation/parser.rb#76 + # source://prism//lib/prism/translation/parser.rb#95 def yyerror; end private # Build the parser gem AST from the prism AST. # - # source://prism//lib/prism/translation/parser.rb#294 + # source://prism//lib/prism/translation/parser.rb#313 def build_ast(program, offset_cache); end # Build the parser gem comments from the prism comments. # - # source://prism//lib/prism/translation/parser.rb#299 + # source://prism//lib/prism/translation/parser.rb#318 def build_comments(comments, offset_cache); end # Prism deals with offsets in bytes, while the parser gem deals with @@ -34250,38 +34289,38 @@ class Prism::Translation::Parser < ::Parser::Base # just use the offset directly. Otherwise, we build an array where the # index is the byte offset and the value is the character offset. # - # source://prism//lib/prism/translation/parser.rb#277 + # source://prism//lib/prism/translation/parser.rb#296 def build_offset_cache(source); end # Build a range from a prism location. # - # source://prism//lib/prism/translation/parser.rb#311 + # source://prism//lib/prism/translation/parser.rb#330 def build_range(location, offset_cache); end # Build the parser gem tokens from the prism tokens. # - # source://prism//lib/prism/translation/parser.rb#306 + # source://prism//lib/prism/translation/parser.rb#325 def build_tokens(tokens, offset_cache); end # Converts the version format handled by Parser to the format handled by Prism. # - # source://prism//lib/prism/translation/parser.rb#334 + # source://prism//lib/prism/translation/parser.rb#353 def convert_for_prism(version); end # Build a diagnostic from the given prism parse error. # - # source://prism//lib/prism/translation/parser.rb#155 + # source://prism//lib/prism/translation/parser.rb#174 def error_diagnostic(error, offset_cache); end # Options for how prism should parse/lex the source. # - # source://prism//lib/prism/translation/parser.rb#320 + # source://prism//lib/prism/translation/parser.rb#339 def prism_options; end # If there was a error generated during the parse, then raise an # appropriate syntax error. Otherwise return the result. # - # source://prism//lib/prism/translation/parser.rb#255 + # source://prism//lib/prism/translation/parser.rb#274 def unwrap(result, offset_cache); end # This is a hook to allow consumers to disable some errors if they don't @@ -34289,7 +34328,7 @@ class Prism::Translation::Parser < ::Parser::Base # # @return [Boolean] # - # source://prism//lib/prism/translation/parser.rb#144 + # source://prism//lib/prism/translation/parser.rb#163 def valid_error?(error); end # This is a hook to allow consumers to disable some warnings if they don't @@ -34297,38 +34336,38 @@ class Prism::Translation::Parser < ::Parser::Base # # @return [Boolean] # - # source://prism//lib/prism/translation/parser.rb#150 + # source://prism//lib/prism/translation/parser.rb#169 def valid_warning?(warning); end # Build a diagnostic from the given prism parse warning. # - # source://prism//lib/prism/translation/parser.rb#228 + # source://prism//lib/prism/translation/parser.rb#247 def warning_diagnostic(warning, offset_cache); end end # This class is the entry-point for Ruby 3.3 of `Prism::Translation::Parser`. # -# source://prism//lib/prism/translation/parser33.rb#6 +# source://prism//lib/prism/translation/parser33.rb#7 class Prism::Translation::Parser33 < ::Prism::Translation::Parser - # source://prism//lib/prism/translation/parser33.rb#7 + # source://prism//lib/prism/translation/parser33.rb#8 sig { override.returns(Integer) } def version; end end # This class is the entry-point for Ruby 3.4 of `Prism::Translation::Parser`. # -# source://prism//lib/prism/translation/parser34.rb#6 +# source://prism//lib/prism/translation/parser34.rb#7 class Prism::Translation::Parser34 < ::Prism::Translation::Parser - # source://prism//lib/prism/translation/parser34.rb#7 + # source://prism//lib/prism/translation/parser34.rb#8 sig { override.returns(Integer) } def version; end end # This class is the entry-point for Ruby 3.5 of `Prism::Translation::Parser`. # -# source://prism//lib/prism/translation/parser35.rb#6 +# source://prism//lib/prism/translation/parser35.rb#7 class Prism::Translation::Parser35 < ::Prism::Translation::Parser - # source://prism//lib/prism/translation/parser35.rb#7 + # source://prism//lib/prism/translation/parser35.rb#8 sig { override.returns(Integer) } def version; end end @@ -34336,7 +34375,7 @@ end # A builder that knows how to convert more modern Ruby syntax # into whitequark/parser gem's syntax tree. # -# source://prism//lib/prism/translation/parser/builder.rb#8 +# source://prism//lib/prism/translation/parser/builder.rb#9 class Prism::Translation::Parser::Builder < ::Parser::Builders::Default # The following three lines have been added to support the `it` block parameter syntax in the source code below. # @@ -34346,112 +34385,112 @@ class Prism::Translation::Parser::Builder < ::Parser::Builders::Default # # https://github.com/whitequark/parser/blob/v3.3.7.1/lib/parser/builders/default.rb#L1122-L1155 # - # source://prism//lib/prism/translation/parser/builder.rb#21 + # source://prism//lib/prism/translation/parser/builder.rb#22 def block(method_call, begin_t, args, body, end_t); end # It represents the `it` block argument, which is not yet implemented in the Parser gem. # - # source://prism//lib/prism/translation/parser/builder.rb#10 + # source://prism//lib/prism/translation/parser/builder.rb#11 def itarg; end end # A visitor that knows how to convert a prism syntax tree into the # whitequark/parser gem's syntax tree. # -# source://prism//lib/prism/translation/parser/compiler.rb#8 +# source://prism//lib/prism/translation/parser/compiler.rb#9 class Prism::Translation::Parser::Compiler < ::Prism::Compiler # Initialize a new compiler with the given parser, offset cache, and # options. # # @return [Compiler] a new instance of Compiler # - # source://prism//lib/prism/translation/parser/compiler.rb#39 + # source://prism//lib/prism/translation/parser/compiler.rb#40 def initialize(parser, offset_cache, forwarding: T.unsafe(nil), in_destructure: T.unsafe(nil), in_pattern: T.unsafe(nil)); end # The Parser::Builders::Default instance that is being used to build the # AST. # - # source://prism//lib/prism/translation/parser/compiler.rb#18 + # source://prism//lib/prism/translation/parser/compiler.rb#19 def builder; end # The types of values that can be forwarded in the current scope. # - # source://prism//lib/prism/translation/parser/compiler.rb#29 + # source://prism//lib/prism/translation/parser/compiler.rb#30 def forwarding; end # Whether or not the current node is in a destructure. # - # source://prism//lib/prism/translation/parser/compiler.rb#32 + # source://prism//lib/prism/translation/parser/compiler.rb#33 def in_destructure; end # Whether or not the current node is in a pattern. # - # source://prism//lib/prism/translation/parser/compiler.rb#35 + # source://prism//lib/prism/translation/parser/compiler.rb#36 def in_pattern; end # The offset cache that is used to map between byte and character # offsets in the file. # - # source://prism//lib/prism/translation/parser/compiler.rb#26 + # source://prism//lib/prism/translation/parser/compiler.rb#27 def offset_cache; end # The Parser::Base instance that is being used to build the AST. # - # source://prism//lib/prism/translation/parser/compiler.rb#14 + # source://prism//lib/prism/translation/parser/compiler.rb#15 def parser; end # The Parser::Source::Buffer instance that is holding a reference to the # source code. # - # source://prism//lib/prism/translation/parser/compiler.rb#22 + # source://prism//lib/prism/translation/parser/compiler.rb#23 def source_buffer; end # alias $foo $bar # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#58 + # source://prism//lib/prism/translation/parser/compiler.rb#59 def visit_alias_global_variable_node(node); end # alias foo bar # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#52 + # source://prism//lib/prism/translation/parser/compiler.rb#53 def visit_alias_method_node(node); end # foo => bar | baz # ^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#64 + # source://prism//lib/prism/translation/parser/compiler.rb#65 def visit_alternation_pattern_node(node); end # a and b # ^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#70 + # source://prism//lib/prism/translation/parser/compiler.rb#71 def visit_and_node(node); end # foo(bar) # ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#127 + # source://prism//lib/prism/translation/parser/compiler.rb#128 def visit_arguments_node(node); end # [] # ^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#76 + # source://prism//lib/prism/translation/parser/compiler.rb#77 def visit_array_node(node); end # foo => [bar] # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#104 + # source://prism//lib/prism/translation/parser/compiler.rb#105 def visit_array_pattern_node(node); end # { a: 1 } # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#133 + # source://prism//lib/prism/translation/parser/compiler.rb#134 def visit_assoc_node(node); end # def foo(**); bar(**); end @@ -34460,49 +34499,49 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # { **foo } # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#185 + # source://prism//lib/prism/translation/parser/compiler.rb#182 def visit_assoc_splat_node(node); end # $+ # ^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#197 + # source://prism//lib/prism/translation/parser/compiler.rb#194 def visit_back_reference_read_node(node); end # begin end # ^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#203 + # source://prism//lib/prism/translation/parser/compiler.rb#200 def visit_begin_node(node); end # foo(&bar) # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#248 + # source://prism//lib/prism/translation/parser/compiler.rb#245 def visit_block_argument_node(node); end # foo { |; bar| } # ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#254 + # source://prism//lib/prism/translation/parser/compiler.rb#251 def visit_block_local_variable_node(node); end # A block on a keyword or method call. # # @raise [CompilationError] # - # source://prism//lib/prism/translation/parser/compiler.rb#259 + # source://prism//lib/prism/translation/parser/compiler.rb#256 def visit_block_node(node); end # def foo(&bar); end # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#265 + # source://prism//lib/prism/translation/parser/compiler.rb#262 def visit_block_parameter_node(node); end # A block's parameters. # - # source://prism//lib/prism/translation/parser/compiler.rb#270 + # source://prism//lib/prism/translation/parser/compiler.rb#267 def visit_block_parameters_node(node); end # break @@ -34511,13 +34550,13 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # break foo # ^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#279 + # source://prism//lib/prism/translation/parser/compiler.rb#276 def visit_break_node(node); end # foo.bar &&= baz # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#384 + # source://prism//lib/prism/translation/parser/compiler.rb#381 def visit_call_and_write_node(node); end # foo @@ -34529,133 +34568,133 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # foo.bar() {} # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#291 + # source://prism//lib/prism/translation/parser/compiler.rb#288 def visit_call_node(node); end # foo.bar += baz # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#365 + # source://prism//lib/prism/translation/parser/compiler.rb#362 def visit_call_operator_write_node(node); end # foo.bar ||= baz # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#403 + # source://prism//lib/prism/translation/parser/compiler.rb#400 def visit_call_or_write_node(node); end # foo.bar, = 1 # ^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#422 + # source://prism//lib/prism/translation/parser/compiler.rb#419 def visit_call_target_node(node); end # foo => bar => baz # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#434 + # source://prism//lib/prism/translation/parser/compiler.rb#431 def visit_capture_pattern_node(node); end # case foo; in bar; end # ^^^^^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#453 + # source://prism//lib/prism/translation/parser/compiler.rb#450 def visit_case_match_node(node); end # case foo; when bar; end # ^^^^^^^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#440 + # source://prism//lib/prism/translation/parser/compiler.rb#437 def visit_case_node(node); end # class Foo; end # ^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#466 + # source://prism//lib/prism/translation/parser/compiler.rb#463 def visit_class_node(node); end # @@foo &&= bar # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#505 + # source://prism//lib/prism/translation/parser/compiler.rb#502 def visit_class_variable_and_write_node(node); end # @@foo += bar # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#495 + # source://prism//lib/prism/translation/parser/compiler.rb#492 def visit_class_variable_operator_write_node(node); end # @@foo ||= bar # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#515 + # source://prism//lib/prism/translation/parser/compiler.rb#512 def visit_class_variable_or_write_node(node); end # @@foo # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#479 + # source://prism//lib/prism/translation/parser/compiler.rb#476 def visit_class_variable_read_node(node); end # @@foo, = bar # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#525 + # source://prism//lib/prism/translation/parser/compiler.rb#522 def visit_class_variable_target_node(node); end # @@foo = 1 # ^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#485 + # source://prism//lib/prism/translation/parser/compiler.rb#482 def visit_class_variable_write_node(node); end # Foo &&= bar # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#556 + # source://prism//lib/prism/translation/parser/compiler.rb#553 def visit_constant_and_write_node(node); end # Foo += bar # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#546 + # source://prism//lib/prism/translation/parser/compiler.rb#543 def visit_constant_operator_write_node(node); end # Foo ||= bar # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#566 + # source://prism//lib/prism/translation/parser/compiler.rb#563 def visit_constant_or_write_node(node); end # Foo::Bar &&= baz # ^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#622 + # source://prism//lib/prism/translation/parser/compiler.rb#619 def visit_constant_path_and_write_node(node); end # Foo::Bar # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#582 + # source://prism//lib/prism/translation/parser/compiler.rb#579 def visit_constant_path_node(node); end # Foo::Bar += baz # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#612 + # source://prism//lib/prism/translation/parser/compiler.rb#609 def visit_constant_path_operator_write_node(node); end # Foo::Bar ||= baz # ^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#632 + # source://prism//lib/prism/translation/parser/compiler.rb#629 def visit_constant_path_or_write_node(node); end # Foo::Bar, = baz # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#642 + # source://prism//lib/prism/translation/parser/compiler.rb#639 def visit_constant_path_target_node(node); end # Foo::Bar = 1 @@ -34664,19 +34703,19 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # Foo::Foo, Bar::Bar = 1 # ^^^^^^^^ ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#602 + # source://prism//lib/prism/translation/parser/compiler.rb#599 def visit_constant_path_write_node(node); end # Foo # ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#531 + # source://prism//lib/prism/translation/parser/compiler.rb#528 def visit_constant_read_node(node); end # Foo, = bar # ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#576 + # source://prism//lib/prism/translation/parser/compiler.rb#573 def visit_constant_target_node(node); end # Foo = 1 @@ -34685,7 +34724,7 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # Foo, Bar = 1 # ^^^ ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#540 + # source://prism//lib/prism/translation/parser/compiler.rb#537 def visit_constant_write_node(node); end # def foo; end @@ -34694,7 +34733,7 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # def self.foo; end # ^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#651 + # source://prism//lib/prism/translation/parser/compiler.rb#648 def visit_def_node(node); end # defined? a @@ -34703,25 +34742,25 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # defined?(a) # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#698 + # source://prism//lib/prism/translation/parser/compiler.rb#695 def visit_defined_node(node); end # if foo then bar else baz end # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#710 + # source://prism//lib/prism/translation/parser/compiler.rb#731 def visit_else_node(node); end # "foo #{bar}" # ^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#716 + # source://prism//lib/prism/translation/parser/compiler.rb#737 def visit_embedded_statements_node(node); end # "foo #@bar" # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#726 + # source://prism//lib/prism/translation/parser/compiler.rb#747 def visit_embedded_variable_node(node); end # begin; foo; ensure; bar; end @@ -34729,19 +34768,19 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # # @raise [CompilationError] # - # source://prism//lib/prism/translation/parser/compiler.rb#732 + # source://prism//lib/prism/translation/parser/compiler.rb#753 def visit_ensure_node(node); end # false # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#738 + # source://prism//lib/prism/translation/parser/compiler.rb#759 def visit_false_node(node); end # foo => [*, bar, *] # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#744 + # source://prism//lib/prism/translation/parser/compiler.rb#765 def visit_find_pattern_node(node); end # 0..5 @@ -34749,31 +34788,31 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # if foo .. bar; end # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1501 + # source://prism//lib/prism/translation/parser/compiler.rb#1523 def visit_flip_flop_node(node); end # 1.0 # ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#756 + # source://prism//lib/prism/translation/parser/compiler.rb#777 def visit_float_node(node); end # for foo in bar do end # ^^^^^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#762 + # source://prism//lib/prism/translation/parser/compiler.rb#783 def visit_for_node(node); end # def foo(...); bar(...); end # ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#780 + # source://prism//lib/prism/translation/parser/compiler.rb#801 def visit_forwarding_arguments_node(node); end # def foo(...); end # ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#786 + # source://prism//lib/prism/translation/parser/compiler.rb#807 def visit_forwarding_parameter_node(node); end # super @@ -34782,55 +34821,55 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # super {} # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#795 + # source://prism//lib/prism/translation/parser/compiler.rb#816 def visit_forwarding_super_node(node); end # $foo &&= bar # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#833 + # source://prism//lib/prism/translation/parser/compiler.rb#854 def visit_global_variable_and_write_node(node); end # $foo += bar # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#823 + # source://prism//lib/prism/translation/parser/compiler.rb#844 def visit_global_variable_operator_write_node(node); end # $foo ||= bar # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#843 + # source://prism//lib/prism/translation/parser/compiler.rb#864 def visit_global_variable_or_write_node(node); end # $foo # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#807 + # source://prism//lib/prism/translation/parser/compiler.rb#828 def visit_global_variable_read_node(node); end # $foo, = bar # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#853 + # source://prism//lib/prism/translation/parser/compiler.rb#874 def visit_global_variable_target_node(node); end # $foo = 1 # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#813 + # source://prism//lib/prism/translation/parser/compiler.rb#834 def visit_global_variable_write_node(node); end # {} # ^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#859 + # source://prism//lib/prism/translation/parser/compiler.rb#880 def visit_hash_node(node); end # foo => {} # ^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#869 + # source://prism//lib/prism/translation/parser/compiler.rb#890 def visit_hash_pattern_node(node); end # if foo then bar end @@ -34842,13 +34881,13 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # foo ? bar : baz # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#887 + # source://prism//lib/prism/translation/parser/compiler.rb#908 def visit_if_node(node); end # 1i # ^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#929 + # source://prism//lib/prism/translation/parser/compiler.rb#950 def visit_imaginary_node(node); end # { foo: } @@ -34856,7 +34895,7 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # # @raise [CompilationError] # - # source://prism//lib/prism/translation/parser/compiler.rb#935 + # source://prism//lib/prism/translation/parser/compiler.rb#956 def visit_implicit_node(node); end # foo { |bar,| } @@ -34864,74 +34903,74 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # # @raise [CompilationError] # - # source://prism//lib/prism/translation/parser/compiler.rb#941 + # source://prism//lib/prism/translation/parser/compiler.rb#962 def visit_implicit_rest_node(node); end # case foo; in bar; end # ^^^^^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#947 + # source://prism//lib/prism/translation/parser/compiler.rb#968 def visit_in_node(node); end # foo[bar] &&= baz # ^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#995 + # source://prism//lib/prism/translation/parser/compiler.rb#1016 def visit_index_and_write_node(node); end # foo[bar] += baz # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#977 + # source://prism//lib/prism/translation/parser/compiler.rb#998 def visit_index_operator_write_node(node); end # foo[bar] ||= baz # ^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1013 + # source://prism//lib/prism/translation/parser/compiler.rb#1034 def visit_index_or_write_node(node); end # foo[bar], = 1 # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1031 + # source://prism//lib/prism/translation/parser/compiler.rb#1052 def visit_index_target_node(node); end # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1068 + # source://prism//lib/prism/translation/parser/compiler.rb#1089 def visit_instance_variable_and_write_node(node); end # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1058 + # source://prism//lib/prism/translation/parser/compiler.rb#1079 def visit_instance_variable_operator_write_node(node); end # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1078 + # source://prism//lib/prism/translation/parser/compiler.rb#1099 def visit_instance_variable_or_write_node(node); end # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1042 + # source://prism//lib/prism/translation/parser/compiler.rb#1063 def visit_instance_variable_read_node(node); end # @foo, = bar # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1088 + # source://prism//lib/prism/translation/parser/compiler.rb#1109 def visit_instance_variable_target_node(node); end # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1048 + # source://prism//lib/prism/translation/parser/compiler.rb#1069 def visit_instance_variable_write_node(node); end # 1 # ^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1094 + # source://prism//lib/prism/translation/parser/compiler.rb#1115 def visit_integer_node(node); end # /foo #{bar}/ @@ -34939,49 +34978,49 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # if /foo #{bar}/ then end # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1100 + # source://prism//lib/prism/translation/parser/compiler.rb#1121 def visit_interpolated_match_last_line_node(node); end # /foo #{bar}/ # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1100 + # source://prism//lib/prism/translation/parser/compiler.rb#1121 def visit_interpolated_regular_expression_node(node); end # "foo #{bar}" # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1115 + # source://prism//lib/prism/translation/parser/compiler.rb#1136 def visit_interpolated_string_node(node); end # :"foo #{bar}" # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1129 + # source://prism//lib/prism/translation/parser/compiler.rb#1150 def visit_interpolated_symbol_node(node); end # `foo #{bar}` # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1139 + # source://prism//lib/prism/translation/parser/compiler.rb#1160 def visit_interpolated_x_string_node(node); end # -> { it } # ^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1153 + # source://prism//lib/prism/translation/parser/compiler.rb#1174 def visit_it_local_variable_read_node(node); end # -> { it } # ^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1159 + # source://prism//lib/prism/translation/parser/compiler.rb#1180 def visit_it_parameters_node(node); end # foo(bar: baz) # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1175 + # source://prism//lib/prism/translation/parser/compiler.rb#1196 def visit_keyword_hash_node(node); end # def foo(**bar); end @@ -34990,49 +35029,49 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # def foo(**); end # ^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1184 + # source://prism//lib/prism/translation/parser/compiler.rb#1205 def visit_keyword_rest_parameter_node(node); end # -> {} # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1193 + # source://prism//lib/prism/translation/parser/compiler.rb#1214 def visit_lambda_node(node); end # foo &&= bar # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1245 + # source://prism//lib/prism/translation/parser/compiler.rb#1266 def visit_local_variable_and_write_node(node); end # foo += bar # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1235 + # source://prism//lib/prism/translation/parser/compiler.rb#1256 def visit_local_variable_operator_write_node(node); end # foo ||= bar # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1255 + # source://prism//lib/prism/translation/parser/compiler.rb#1276 def visit_local_variable_or_write_node(node); end # foo # ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1219 + # source://prism//lib/prism/translation/parser/compiler.rb#1240 def visit_local_variable_read_node(node); end # foo, = bar # ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1265 + # source://prism//lib/prism/translation/parser/compiler.rb#1286 def visit_local_variable_target_node(node); end # foo = 1 # ^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1225 + # source://prism//lib/prism/translation/parser/compiler.rb#1246 def visit_local_variable_write_node(node); end # /foo/ @@ -35040,50 +35079,50 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # if /foo/ then end # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1535 + # source://prism//lib/prism/translation/parser/compiler.rb#1557 def visit_match_last_line_node(node); end # foo in bar # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1275 + # source://prism//lib/prism/translation/parser/compiler.rb#1296 def visit_match_predicate_node(node); end # foo => bar # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1285 + # source://prism//lib/prism/translation/parser/compiler.rb#1306 def visit_match_required_node(node); end # /(?foo)/ =~ bar # ^^^^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1295 + # source://prism//lib/prism/translation/parser/compiler.rb#1316 def visit_match_write_node(node); end # A node that is missing from the syntax tree. This is only used in the # case of a syntax error. The parser gem doesn't have such a concept, so # we invent our own here. # - # source://prism//lib/prism/translation/parser/compiler.rb#1306 + # source://prism//lib/prism/translation/parser/compiler.rb#1327 def visit_missing_node(node); end # module Foo; end # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1312 + # source://prism//lib/prism/translation/parser/compiler.rb#1333 def visit_module_node(node); end # foo, bar = baz # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1323 + # source://prism//lib/prism/translation/parser/compiler.rb#1344 def visit_multi_target_node(node); end # foo, bar = baz # ^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1333 + # source://prism//lib/prism/translation/parser/compiler.rb#1354 def visit_multi_write_node(node); end # next @@ -35092,55 +35131,55 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # next foo # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1356 + # source://prism//lib/prism/translation/parser/compiler.rb#1377 def visit_next_node(node); end # nil # ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1368 + # source://prism//lib/prism/translation/parser/compiler.rb#1389 def visit_nil_node(node); end # def foo(**nil); end # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1374 + # source://prism//lib/prism/translation/parser/compiler.rb#1395 def visit_no_keywords_parameter_node(node); end # -> { _1 + _2 } # ^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1384 + # source://prism//lib/prism/translation/parser/compiler.rb#1405 def visit_numbered_parameters_node(node); end # $1 # ^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1390 + # source://prism//lib/prism/translation/parser/compiler.rb#1411 def visit_numbered_reference_read_node(node); end # def foo(bar: baz); end # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1396 + # source://prism//lib/prism/translation/parser/compiler.rb#1417 def visit_optional_keyword_parameter_node(node); end # def foo(bar = 1); end # ^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1402 + # source://prism//lib/prism/translation/parser/compiler.rb#1423 def visit_optional_parameter_node(node); end # a or b # ^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1408 + # source://prism//lib/prism/translation/parser/compiler.rb#1429 def visit_or_node(node); end # def foo(bar, *baz); end # ^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1414 + # source://prism//lib/prism/translation/parser/compiler.rb#1435 def visit_parameters_node(node); end # () @@ -35149,76 +35188,76 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # (1) # ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1453 + # source://prism//lib/prism/translation/parser/compiler.rb#1474 def visit_parentheses_node(node); end # foo => ^(bar) # ^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1463 + # source://prism//lib/prism/translation/parser/compiler.rb#1484 def visit_pinned_expression_node(node); end # foo = 1 and bar => ^foo # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1470 + # source://prism//lib/prism/translation/parser/compiler.rb#1492 def visit_pinned_variable_node(node); end # END {} # - # source://prism//lib/prism/translation/parser/compiler.rb#1475 + # source://prism//lib/prism/translation/parser/compiler.rb#1497 def visit_post_execution_node(node); end # BEGIN {} # - # source://prism//lib/prism/translation/parser/compiler.rb#1485 + # source://prism//lib/prism/translation/parser/compiler.rb#1507 def visit_pre_execution_node(node); end # The top-level program node. # - # source://prism//lib/prism/translation/parser/compiler.rb#1495 + # source://prism//lib/prism/translation/parser/compiler.rb#1517 def visit_program_node(node); end # 0..5 # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1501 + # source://prism//lib/prism/translation/parser/compiler.rb#1523 def visit_range_node(node); end # 1r # ^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1523 + # source://prism//lib/prism/translation/parser/compiler.rb#1545 def visit_rational_node(node); end # redo # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1529 + # source://prism//lib/prism/translation/parser/compiler.rb#1551 def visit_redo_node(node); end # /foo/ # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1535 + # source://prism//lib/prism/translation/parser/compiler.rb#1557 def visit_regular_expression_node(node); end # def foo(bar:); end # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1559 + # source://prism//lib/prism/translation/parser/compiler.rb#1581 def visit_required_keyword_parameter_node(node); end # def foo(bar); end # ^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1565 + # source://prism//lib/prism/translation/parser/compiler.rb#1587 def visit_required_parameter_node(node); end # foo rescue bar # ^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1571 + # source://prism//lib/prism/translation/parser/compiler.rb#1593 def visit_rescue_modifier_node(node); end # begin; rescue; end @@ -35226,7 +35265,7 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # # @raise [CompilationError] # - # source://prism//lib/prism/translation/parser/compiler.rb#1589 + # source://prism//lib/prism/translation/parser/compiler.rb#1611 def visit_rescue_node(node); end # def foo(*bar); end @@ -35235,13 +35274,13 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # def foo(*); end # ^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1598 + # source://prism//lib/prism/translation/parser/compiler.rb#1620 def visit_rest_parameter_node(node); end # retry # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1604 + # source://prism//lib/prism/translation/parser/compiler.rb#1626 def visit_retry_node(node); end # return @@ -35250,42 +35289,42 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # return 1 # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1613 + # source://prism//lib/prism/translation/parser/compiler.rb#1635 def visit_return_node(node); end # self # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1625 + # source://prism//lib/prism/translation/parser/compiler.rb#1647 def visit_self_node(node); end # A shareable constant. # - # source://prism//lib/prism/translation/parser/compiler.rb#1630 + # source://prism//lib/prism/translation/parser/compiler.rb#1652 def visit_shareable_constant_node(node); end # class << self; end # ^^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1636 + # source://prism//lib/prism/translation/parser/compiler.rb#1658 def visit_singleton_class_node(node); end # __ENCODING__ # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1648 + # source://prism//lib/prism/translation/parser/compiler.rb#1670 def visit_source_encoding_node(node); end # __FILE__ # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1654 + # source://prism//lib/prism/translation/parser/compiler.rb#1676 def visit_source_file_node(node); end # __LINE__ # ^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1660 + # source://prism//lib/prism/translation/parser/compiler.rb#1682 def visit_source_line_node(node); end # foo(*bar) @@ -35297,42 +35336,42 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # def foo(*); bar(*); end # ^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1672 + # source://prism//lib/prism/translation/parser/compiler.rb#1694 def visit_splat_node(node); end # A list of statements. # - # source://prism//lib/prism/translation/parser/compiler.rb#1685 + # source://prism//lib/prism/translation/parser/compiler.rb#1707 def visit_statements_node(node); end # "foo" # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1691 + # source://prism//lib/prism/translation/parser/compiler.rb#1713 def visit_string_node(node); end # super(foo) # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1716 + # source://prism//lib/prism/translation/parser/compiler.rb#1738 def visit_super_node(node); end # :foo # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1739 + # source://prism//lib/prism/translation/parser/compiler.rb#1761 def visit_symbol_node(node); end # true # ^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1766 + # source://prism//lib/prism/translation/parser/compiler.rb#1788 def visit_true_node(node); end # undef foo # ^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1772 + # source://prism//lib/prism/translation/parser/compiler.rb#1794 def visit_undef_node(node); end # unless foo; bar end @@ -35341,7 +35380,7 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # bar unless foo # ^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1781 + # source://prism//lib/prism/translation/parser/compiler.rb#1803 def visit_unless_node(node); end # until foo; bar end @@ -35350,13 +35389,13 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # bar until foo # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1811 + # source://prism//lib/prism/translation/parser/compiler.rb#1833 def visit_until_node(node); end # case foo; when bar; end # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1837 + # source://prism//lib/prism/translation/parser/compiler.rb#1859 def visit_when_node(node); end # while foo; bar end @@ -35365,13 +35404,13 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # bar while foo # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1855 + # source://prism//lib/prism/translation/parser/compiler.rb#1877 def visit_while_node(node); end # `foo` # ^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1881 + # source://prism//lib/prism/translation/parser/compiler.rb#1903 def visit_x_string_node(node); end # yield @@ -35380,7 +35419,7 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # yield 1 # ^^^^^^^ # - # source://prism//lib/prism/translation/parser/compiler.rb#1907 + # source://prism//lib/prism/translation/parser/compiler.rb#1929 def visit_yield_node(node); end private @@ -35388,19 +35427,19 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # Initialize a new compiler with the given option overrides, used to # visit a subtree with the given options. # - # source://prism//lib/prism/translation/parser/compiler.rb#1921 + # source://prism//lib/prism/translation/parser/compiler.rb#1943 def copy_compiler(forwarding: T.unsafe(nil), in_destructure: T.unsafe(nil), in_pattern: T.unsafe(nil)); end # When *, **, &, or ... are used as an argument in a method call, we # check if they were allowed by the current context. To determine that # we build this lookup table. # - # source://prism//lib/prism/translation/parser/compiler.rb#1928 + # source://prism//lib/prism/translation/parser/compiler.rb#1950 def find_forwarding(node); end # Returns the set of targets for a MultiTargetNode or a MultiWriteNode. # - # source://prism//lib/prism/translation/parser/compiler.rb#1941 + # source://prism//lib/prism/translation/parser/compiler.rb#1963 def multi_target_elements(node); end # Negate the value of a numeric node. This is a special case where you @@ -35409,7 +35448,7 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # however, marks this as a numeric literal. We have to massage the tree # here to get it into the correct form. # - # source://prism//lib/prism/translation/parser/compiler.rb#1953 + # source://prism//lib/prism/translation/parser/compiler.rb#1975 def numeric_negate(message_loc, receiver); end # Blocks can have a special set of parameters that automatically expand @@ -35418,12 +35457,12 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # # @return [Boolean] # - # source://prism//lib/prism/translation/parser/compiler.rb#1967 + # source://prism//lib/prism/translation/parser/compiler.rb#1989 def procarg0?(parameters); end # Constructs a new source range from the given start and end offsets. # - # source://prism//lib/prism/translation/parser/compiler.rb#1984 + # source://prism//lib/prism/translation/parser/compiler.rb#2006 def srange(location); end # Constructs a new source range by finding the given character between @@ -35433,99 +35472,99 @@ class Prism::Translation::Parser::Compiler < ::Prism::Compiler # Note that end_offset is allowed to be nil, in which case this will # search until the end of the string. # - # source://prism//lib/prism/translation/parser/compiler.rb#1999 + # source://prism//lib/prism/translation/parser/compiler.rb#2021 def srange_find(start_offset, end_offset, character); end # Constructs a new source range from the given start and end offsets. # - # source://prism//lib/prism/translation/parser/compiler.rb#1989 + # source://prism//lib/prism/translation/parser/compiler.rb#2011 def srange_offsets(start_offset, end_offset); end # When the content of a string node is split across multiple lines, the # parser gem creates individual string nodes for each line the content is part of. # - # source://prism//lib/prism/translation/parser/compiler.rb#2116 + # source://prism//lib/prism/translation/parser/compiler.rb#2138 def string_nodes_from_interpolation(node, opening); end # Create parser string nodes from a single prism node. The parser gem # "glues" strings together when a line continuation is encountered. # - # source://prism//lib/prism/translation/parser/compiler.rb#2128 + # source://prism//lib/prism/translation/parser/compiler.rb#2150 def string_nodes_from_line_continuations(unescaped, escaped, start_offset, opening); end # Transform a location into a token that the parser gem expects. # - # source://prism//lib/prism/translation/parser/compiler.rb#2007 + # source://prism//lib/prism/translation/parser/compiler.rb#2029 def token(location); end # Visit a block node on a call. # - # source://prism//lib/prism/translation/parser/compiler.rb#2012 + # source://prism//lib/prism/translation/parser/compiler.rb#2034 def visit_block(call, block); end # Visit a heredoc that can be either a string or an xstring. # - # source://prism//lib/prism/translation/parser/compiler.rb#2047 + # source://prism//lib/prism/translation/parser/compiler.rb#2069 def visit_heredoc(node); end # Visit a numeric node and account for the optional sign. # - # source://prism//lib/prism/translation/parser/compiler.rb#2093 + # source://prism//lib/prism/translation/parser/compiler.rb#2115 def visit_numeric(node, value); end # Within the given block, track that we're within a pattern. # - # source://prism//lib/prism/translation/parser/compiler.rb#2105 + # source://prism//lib/prism/translation/parser/compiler.rb#2127 def within_pattern; end end # Raised when the tree is malformed or there is a bug in the compiler. # -# source://prism//lib/prism/translation/parser/compiler.rb#10 +# source://prism//lib/prism/translation/parser/compiler.rb#11 class Prism::Translation::Parser::Compiler::CompilationError < ::StandardError; end # Locations in the parser gem AST are generated using this class. We # store a reference to its constant to make it slightly faster to look # up. # -# source://prism//lib/prism/translation/parser/compiler.rb#1981 +# source://prism//lib/prism/translation/parser/compiler.rb#2003 Prism::Translation::Parser::Compiler::Range = Parser::Source::Range -# source://prism//lib/prism/translation/parser.rb#17 +# source://prism//lib/prism/translation/parser.rb#30 Prism::Translation::Parser::Diagnostic = Parser::Diagnostic # Accepts a list of prism tokens and converts them into the expected # format for the parser gem. # -# source://prism//lib/prism/translation/parser/lexer.rb#11 +# source://prism//lib/prism/translation/parser/lexer.rb#13 class Prism::Translation::Parser::Lexer # Initialize the lexer with the given source buffer, prism tokens, and # offset cache. # # @return [Lexer] a new instance of Lexer # - # source://prism//lib/prism/translation/parser/lexer.rb#229 + # source://prism//lib/prism/translation/parser/lexer.rb#231 def initialize(source_buffer, lexed, offset_cache); end # An array of tuples that contain prism tokens and their associated lex # state when they were lexed. # - # source://prism//lib/prism/translation/parser/lexer.rb#222 + # source://prism//lib/prism/translation/parser/lexer.rb#224 def lexed; end # A hash that maps offsets in bytes to offsets in characters. # - # source://prism//lib/prism/translation/parser/lexer.rb#225 + # source://prism//lib/prism/translation/parser/lexer.rb#227 def offset_cache; end # The Parser::Source::Buffer that the tokens were lexed from. # - # source://prism//lib/prism/translation/parser/lexer.rb#218 + # source://prism//lib/prism/translation/parser/lexer.rb#220 def source_buffer; end # Convert the prism tokens into the expected format for the parser gem. # - # source://prism//lib/prism/translation/parser/lexer.rb#239 + # source://prism//lib/prism/translation/parser/lexer.rb#241 def to_a; end private @@ -35533,111 +35572,111 @@ class Prism::Translation::Parser::Lexer # Wonky heredoc tab/spaces rules. # https://github.com/ruby/prism/blob/v1.3.0/src/prism.c#L10548-L10558 # - # source://prism//lib/prism/translation/parser/lexer.rb#585 + # source://prism//lib/prism/translation/parser/lexer.rb#593 def calculate_heredoc_whitespace(heredoc_token_index); end # Escape a byte value, given the control and meta flags. # - # source://prism//lib/prism/translation/parser/lexer.rb#727 + # source://prism//lib/prism/translation/parser/lexer.rb#735 def escape_build(value, control, meta); end # Read an escape out of the string scanner, given the control and meta # flags, and push the unescaped value into the result. # - # source://prism//lib/prism/translation/parser/lexer.rb#735 + # source://prism//lib/prism/translation/parser/lexer.rb#743 def escape_read(result, scanner, control, meta); end # Determine if characters preceeded by a backslash should be escaped or not # # @return [Boolean] # - # source://prism//lib/prism/translation/parser/lexer.rb#796 + # source://prism//lib/prism/translation/parser/lexer.rb#804 def interpolation?(quote); end # Parse a complex from the string representation. # - # source://prism//lib/prism/translation/parser/lexer.rb#556 + # source://prism//lib/prism/translation/parser/lexer.rb#564 def parse_complex(value); end # Parse a float from the string representation. # - # source://prism//lib/prism/translation/parser/lexer.rb#549 + # source://prism//lib/prism/translation/parser/lexer.rb#557 def parse_float(value); end # Parse an integer from the string representation. # - # source://prism//lib/prism/translation/parser/lexer.rb#542 + # source://prism//lib/prism/translation/parser/lexer.rb#550 def parse_integer(value); end # Parse a rational from the string representation. # - # source://prism//lib/prism/translation/parser/lexer.rb#571 + # source://prism//lib/prism/translation/parser/lexer.rb#579 def parse_rational(value); end # Determine if the string is part of a %-style array. # # @return [Boolean] # - # source://prism//lib/prism/translation/parser/lexer.rb#806 + # source://prism//lib/prism/translation/parser/lexer.rb#814 def percent_array?(quote); end # For %-arrays whitespace, the parser gem only considers whitespace before the newline. # - # source://prism//lib/prism/translation/parser/lexer.rb#784 + # source://prism//lib/prism/translation/parser/lexer.rb#792 def percent_array_leading_whitespace(string); end # In a percent array, certain whitespace can be preceeded with a backslash, # causing the following characters to be part of the previous element. # - # source://prism//lib/prism/translation/parser/lexer.rb#776 + # source://prism//lib/prism/translation/parser/lexer.rb#784 def percent_array_unescape(string); end # Creates a new parser range, taking prisms byte offsets into account # - # source://prism//lib/prism/translation/parser/lexer.rb#537 + # source://prism//lib/prism/translation/parser/lexer.rb#545 def range(start_offset, end_offset); end # Regexp allow interpolation but are handled differently during unescaping # # @return [Boolean] # - # source://prism//lib/prism/translation/parser/lexer.rb#801 + # source://prism//lib/prism/translation/parser/lexer.rb#809 def regexp?(quote); end # Certain strings are merged into a single string token. # # @return [Boolean] # - # source://prism//lib/prism/translation/parser/lexer.rb#710 + # source://prism//lib/prism/translation/parser/lexer.rb#718 def simplify_string?(value, quote); end # Wonky heredoc tab/spaces rules. # https://github.com/ruby/prism/blob/v1.3.0/src/prism.c#L16528-L16545 # - # source://prism//lib/prism/translation/parser/lexer.rb#632 + # source://prism//lib/prism/translation/parser/lexer.rb#640 def trim_heredoc_whitespace(string, heredoc); end # Apply Ruby string escaping rules # - # source://prism//lib/prism/translation/parser/lexer.rb#667 + # source://prism//lib/prism/translation/parser/lexer.rb#675 def unescape_string(string, quote); end end # Types of tokens that are allowed to continue a method call with comments in-between. # For these, the parser gem doesn't emit a newline token after the last comment. # -# source://prism//lib/prism/translation/parser/lexer.rb#209 +# source://prism//lib/prism/translation/parser/lexer.rb#211 Prism::Translation::Parser::Lexer::COMMENT_CONTINUATION_TYPES = T.let(T.unsafe(nil), Set) # When one of these delimiters is encountered, then the other # one is allowed to be escaped as well. # -# source://prism//lib/prism/translation/parser/lexer.rb#658 +# source://prism//lib/prism/translation/parser/lexer.rb#666 Prism::Translation::Parser::Lexer::DELIMITER_SYMETRY = T.let(T.unsafe(nil), Hash) # Escape sequences that have special and should appear unescaped in the resulting string. # -# source://prism//lib/prism/translation/parser/lexer.rb#649 +# source://prism//lib/prism/translation/parser/lexer.rb#657 Prism::Translation::Parser::Lexer::ESCAPES = T.let(T.unsafe(nil), Hash) # These constants represent flags in our lex state. We really, really @@ -35648,15 +35687,15 @@ Prism::Translation::Parser::Lexer::ESCAPES = T.let(T.unsafe(nil), Hash) # meantime we'll hide them from the documentation and mark them as # private constants. # -# source://prism//lib/prism/translation/parser/lexer.rb#191 +# source://prism//lib/prism/translation/parser/lexer.rb#193 Prism::Translation::Parser::Lexer::EXPR_BEG = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/translation/parser/lexer.rb#192 +# source://prism//lib/prism/translation/parser/lexer.rb#194 Prism::Translation::Parser::Lexer::EXPR_LABEL = T.let(T.unsafe(nil), Integer) # Heredocs are complex and require us to keep track of a bit of info to refer to later # -# source://prism//lib/prism/translation/parser/lexer.rb#213 +# source://prism//lib/prism/translation/parser/lexer.rb#215 class Prism::Translation::Parser::Lexer::HeredocData < ::Struct # Returns the value of attribute common_whitespace # @@ -35694,55 +35733,58 @@ end # NOTE: In edge cases like `-> (foo = -> (bar) {}) do end`, please note that `kDO` is still returned # instead of `kDO_LAMBDA`, which is expected: https://github.com/ruby/prism/pull/3046 # -# source://prism//lib/prism/translation/parser/lexer.rb#198 +# source://prism//lib/prism/translation/parser/lexer.rb#200 Prism::Translation::Parser::Lexer::LAMBDA_TOKEN_TYPES = T.let(T.unsafe(nil), Set) # The `PARENTHESIS_LEFT` token in Prism is classified as either `tLPAREN` or `tLPAREN2` in the Parser gem. # The following token types are listed as those classified as `tLPAREN`. # -# source://prism//lib/prism/translation/parser/lexer.rb#202 +# source://prism//lib/prism/translation/parser/lexer.rb#204 Prism::Translation::Parser::Lexer::LPAREN_CONVERSION_TOKEN_TYPES = T.let(T.unsafe(nil), Set) # https://github.com/whitequark/parser/blob/v3.3.6.0/lib/parser/lexer-strings.rl#L14 # -# source://prism//lib/prism/translation/parser/lexer.rb#663 +# source://prism//lib/prism/translation/parser/lexer.rb#671 Prism::Translation::Parser::Lexer::REGEXP_META_CHARACTERS = T.let(T.unsafe(nil), Array) -# source://prism//lib/prism/translation/parser/lexer.rb#235 +# source://prism//lib/prism/translation/parser/lexer.rb#237 Prism::Translation::Parser::Lexer::Range = Parser::Source::Range # The direct translating of types between the two lexers. # -# source://prism//lib/prism/translation/parser/lexer.rb#17 +# source://prism//lib/prism/translation/parser/lexer.rb#19 Prism::Translation::Parser::Lexer::TYPES = T.let(T.unsafe(nil), Hash) # These tokens are always skipped # -# source://prism//lib/prism/translation/parser/lexer.rb#13 +# source://prism//lib/prism/translation/parser/lexer.rb#15 Prism::Translation::Parser::Lexer::TYPES_ALWAYS_SKIP = T.let(T.unsafe(nil), Set) # The parser gem has a list of diagnostics with a hard-coded set of error # messages. We create our own diagnostic class in order to set our own # error messages. # -# source://prism//lib/prism/translation/parser.rb#23 +# source://prism//lib/prism/translation/parser.rb#36 class Prism::Translation::Parser::PrismDiagnostic < ::Parser::Diagnostic # Initialize a new diagnostic with the given message and location. # # @return [PrismDiagnostic] a new instance of PrismDiagnostic # - # source://prism//lib/prism/translation/parser.rb#28 + # source://prism//lib/prism/translation/parser.rb#41 def initialize(message, level, reason, location); end # This is the cached message coming from prism. # - # source://prism//lib/prism/translation/parser.rb#25 + # source://prism//lib/prism/translation/parser.rb#38 def message; end end -# source://prism//lib/prism/translation/parser.rb#34 +# source://prism//lib/prism/translation/parser.rb#47 Prism::Translation::Parser::Racc_debug_parser = T.let(T.unsafe(nil), FalseClass) +# source://prism//lib/prism/translation/parser_current.rb#21 +Prism::Translation::ParserCurrent = Prism::Translation::Parser34 + # This class provides a compatibility layer between prism and Ripper. It # functions by parsing the entire tree first and then walking it and # executing each of the Ripper callbacks as it goes. To use this class, you @@ -35779,95 +35821,95 @@ Prism::Translation::Parser::Racc_debug_parser = T.let(T.unsafe(nil), FalseClass) # - on_tstring_beg # - on_tstring_end # -# source://prism//lib/prism/translation/ripper.rb#43 +# source://prism//lib/prism/translation/ripper.rb#44 class Prism::Translation::Ripper < ::Prism::Compiler # Create a new Translation::Ripper object with the given source. # # @return [Ripper] a new instance of Ripper # - # source://prism//lib/prism/translation/ripper.rb#444 + # source://prism//lib/prism/translation/ripper.rb#445 def initialize(source, filename = T.unsafe(nil), lineno = T.unsafe(nil)); end # The current column number of the parser. # - # source://prism//lib/prism/translation/ripper.rb#441 + # source://prism//lib/prism/translation/ripper.rb#442 def column; end # True if the parser encountered an error during parsing. # # @return [Boolean] # - # source://prism//lib/prism/translation/ripper.rb#457 + # source://prism//lib/prism/translation/ripper.rb#458 sig { returns(T::Boolean) } def error?; end # The filename of the source being parsed. # - # source://prism//lib/prism/translation/ripper.rb#435 + # source://prism//lib/prism/translation/ripper.rb#436 def filename; end # The current line number of the parser. # - # source://prism//lib/prism/translation/ripper.rb#438 + # source://prism//lib/prism/translation/ripper.rb#439 def lineno; end # Parse the source and return the result. # - # source://prism//lib/prism/translation/ripper.rb#462 + # source://prism//lib/prism/translation/ripper.rb#463 sig { returns(T.untyped) } def parse; end # The source that is being parsed. # - # source://prism//lib/prism/translation/ripper.rb#432 + # source://prism//lib/prism/translation/ripper.rb#433 def source; end # alias $foo $bar # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#561 + # source://prism//lib/prism/translation/ripper.rb#562 def visit_alias_global_variable_node(node); end # alias foo bar # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#551 + # source://prism//lib/prism/translation/ripper.rb#552 def visit_alias_method_node(node); end # foo => bar | baz # ^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#585 + # source://prism//lib/prism/translation/ripper.rb#586 def visit_alternation_pattern_node(node); end # a and b # ^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#605 + # source://prism//lib/prism/translation/ripper.rb#606 def visit_and_node(node); end # foo(bar) # ^^^ # - # source://prism//lib/prism/translation/ripper.rb#796 + # source://prism//lib/prism/translation/ripper.rb#797 def visit_arguments_node(node); end # [] # ^^ # - # source://prism//lib/prism/translation/ripper.rb#615 + # source://prism//lib/prism/translation/ripper.rb#616 def visit_array_node(node); end # foo => [bar] # ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#775 + # source://prism//lib/prism/translation/ripper.rb#776 def visit_array_pattern_node(node); end # { a: 1 } # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#803 + # source://prism//lib/prism/translation/ripper.rb#804 def visit_assoc_node(node); end # def foo(**); bar(**); end @@ -35876,47 +35918,47 @@ class Prism::Translation::Ripper < ::Prism::Compiler # { **foo } # ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#816 + # source://prism//lib/prism/translation/ripper.rb#817 def visit_assoc_splat_node(node); end # $+ # ^^ # - # source://prism//lib/prism/translation/ripper.rb#825 + # source://prism//lib/prism/translation/ripper.rb#826 def visit_back_reference_read_node(node); end # begin end # ^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#832 + # source://prism//lib/prism/translation/ripper.rb#833 def visit_begin_node(node); end # foo(&bar) # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#896 + # source://prism//lib/prism/translation/ripper.rb#897 def visit_block_argument_node(node); end # foo { |; bar| } # ^^^ # - # source://prism//lib/prism/translation/ripper.rb#902 + # source://prism//lib/prism/translation/ripper.rb#903 def visit_block_local_variable_node(node); end # Visit a BlockNode. # - # source://prism//lib/prism/translation/ripper.rb#908 + # source://prism//lib/prism/translation/ripper.rb#909 def visit_block_node(node); end # def foo(&bar); end # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#944 + # source://prism//lib/prism/translation/ripper.rb#945 def visit_block_parameter_node(node); end # A block's parameters. # - # source://prism//lib/prism/translation/ripper.rb#958 + # source://prism//lib/prism/translation/ripper.rb#959 def visit_block_parameters_node(node); end # break @@ -35925,13 +35967,13 @@ class Prism::Translation::Ripper < ::Prism::Compiler # break foo # ^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#982 + # source://prism//lib/prism/translation/ripper.rb#983 def visit_break_node(node); end # foo.bar &&= baz # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1204 + # source://prism//lib/prism/translation/ripper.rb#1205 def visit_call_and_write_node(node); end # foo @@ -35943,79 +35985,79 @@ class Prism::Translation::Ripper < ::Prism::Compiler # foo.bar() {} # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1002 + # source://prism//lib/prism/translation/ripper.rb#1003 def visit_call_node(node); end # foo.bar += baz # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1182 + # source://prism//lib/prism/translation/ripper.rb#1183 def visit_call_operator_write_node(node); end # foo.bar ||= baz # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1226 + # source://prism//lib/prism/translation/ripper.rb#1227 def visit_call_or_write_node(node); end # foo.bar, = 1 # ^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1248 + # source://prism//lib/prism/translation/ripper.rb#1249 def visit_call_target_node(node); end # foo => bar => baz # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1273 + # source://prism//lib/prism/translation/ripper.rb#1274 def visit_capture_pattern_node(node); end # case foo; in bar; end # ^^^^^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1296 + # source://prism//lib/prism/translation/ripper.rb#1297 def visit_case_match_node(node); end # case foo; when bar; end # ^^^^^^^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1283 + # source://prism//lib/prism/translation/ripper.rb#1284 def visit_case_node(node); end # class Foo; end # ^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1309 + # source://prism//lib/prism/translation/ripper.rb#1310 def visit_class_node(node); end # @@foo &&= bar # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1362 + # source://prism//lib/prism/translation/ripper.rb#1363 def visit_class_variable_and_write_node(node); end # @@foo += bar # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1348 + # source://prism//lib/prism/translation/ripper.rb#1349 def visit_class_variable_operator_write_node(node); end # @@foo ||= bar # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1376 + # source://prism//lib/prism/translation/ripper.rb#1377 def visit_class_variable_or_write_node(node); end # @@foo # ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1327 + # source://prism//lib/prism/translation/ripper.rb#1328 def visit_class_variable_read_node(node); end # @@foo, = bar # ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1390 + # source://prism//lib/prism/translation/ripper.rb#1391 def visit_class_variable_target_node(node); end # @@foo = 1 @@ -36024,55 +36066,55 @@ class Prism::Translation::Ripper < ::Prism::Compiler # @@foo, @@bar = 1 # ^^^^^ ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1337 + # source://prism//lib/prism/translation/ripper.rb#1338 def visit_class_variable_write_node(node); end # Foo &&= bar # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1432 + # source://prism//lib/prism/translation/ripper.rb#1433 def visit_constant_and_write_node(node); end # Foo += bar # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1418 + # source://prism//lib/prism/translation/ripper.rb#1419 def visit_constant_operator_write_node(node); end # Foo ||= bar # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1446 + # source://prism//lib/prism/translation/ripper.rb#1447 def visit_constant_or_write_node(node); end # Foo::Bar &&= baz # ^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1533 + # source://prism//lib/prism/translation/ripper.rb#1534 def visit_constant_path_and_write_node(node); end # Foo::Bar # ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1467 + # source://prism//lib/prism/translation/ripper.rb#1468 def visit_constant_path_node(node); end # Foo::Bar += baz # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1519 + # source://prism//lib/prism/translation/ripper.rb#1520 def visit_constant_path_operator_write_node(node); end # Foo::Bar ||= baz # ^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1547 + # source://prism//lib/prism/translation/ripper.rb#1548 def visit_constant_path_or_write_node(node); end # Foo::Bar, = baz # ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1561 + # source://prism//lib/prism/translation/ripper.rb#1562 def visit_constant_path_target_node(node); end # Foo::Bar = 1 @@ -36081,19 +36123,19 @@ class Prism::Translation::Ripper < ::Prism::Compiler # Foo::Foo, Bar::Bar = 1 # ^^^^^^^^ ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1490 + # source://prism//lib/prism/translation/ripper.rb#1491 def visit_constant_path_write_node(node); end # Foo # ^^^ # - # source://prism//lib/prism/translation/ripper.rb#1397 + # source://prism//lib/prism/translation/ripper.rb#1398 def visit_constant_read_node(node); end # Foo, = bar # ^^^ # - # source://prism//lib/prism/translation/ripper.rb#1460 + # source://prism//lib/prism/translation/ripper.rb#1461 def visit_constant_target_node(node); end # Foo = 1 @@ -36102,7 +36144,7 @@ class Prism::Translation::Ripper < ::Prism::Compiler # Foo, Bar = 1 # ^^^ ^^^ # - # source://prism//lib/prism/translation/ripper.rb#1407 + # source://prism//lib/prism/translation/ripper.rb#1408 def visit_constant_write_node(node); end # def foo; end @@ -36111,7 +36153,7 @@ class Prism::Translation::Ripper < ::Prism::Compiler # def self.foo; end # ^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1570 + # source://prism//lib/prism/translation/ripper.rb#1571 def visit_def_node(node); end # defined? a @@ -36120,72 +36162,72 @@ class Prism::Translation::Ripper < ::Prism::Compiler # defined?(a) # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1617 + # source://prism//lib/prism/translation/ripper.rb#1618 def visit_defined_node(node); end # if foo then bar else baz end # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1624 + # source://prism//lib/prism/translation/ripper.rb#1640 def visit_else_node(node); end # "foo #{bar}" # ^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1640 + # source://prism//lib/prism/translation/ripper.rb#1656 def visit_embedded_statements_node(node); end # "foo #@bar" # ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1661 + # source://prism//lib/prism/translation/ripper.rb#1677 def visit_embedded_variable_node(node); end # Visit an EnsureNode node. # - # source://prism//lib/prism/translation/ripper.rb#1672 + # source://prism//lib/prism/translation/ripper.rb#1688 def visit_ensure_node(node); end # false # ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1690 + # source://prism//lib/prism/translation/ripper.rb#1706 def visit_false_node(node); end # foo => [*, bar, *] # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1697 + # source://prism//lib/prism/translation/ripper.rb#1713 def visit_find_pattern_node(node); end # if foo .. bar; end # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1722 + # source://prism//lib/prism/translation/ripper.rb#1738 def visit_flip_flop_node(node); end # 1.0 # ^^^ # - # source://prism//lib/prism/translation/ripper.rb#1736 + # source://prism//lib/prism/translation/ripper.rb#1752 def visit_float_node(node); end # for foo in bar do end # ^^^^^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1742 + # source://prism//lib/prism/translation/ripper.rb#1758 def visit_for_node(node); end # def foo(...); bar(...); end # ^^^ # - # source://prism//lib/prism/translation/ripper.rb#1759 + # source://prism//lib/prism/translation/ripper.rb#1775 def visit_forwarding_arguments_node(node); end # def foo(...); end # ^^^ # - # source://prism//lib/prism/translation/ripper.rb#1766 + # source://prism//lib/prism/translation/ripper.rb#1782 def visit_forwarding_parameter_node(node); end # super @@ -36194,37 +36236,37 @@ class Prism::Translation::Ripper < ::Prism::Compiler # super {} # ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1776 + # source://prism//lib/prism/translation/ripper.rb#1792 def visit_forwarding_super_node(node); end # $foo &&= bar # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1825 + # source://prism//lib/prism/translation/ripper.rb#1841 def visit_global_variable_and_write_node(node); end # $foo += bar # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1811 + # source://prism//lib/prism/translation/ripper.rb#1827 def visit_global_variable_operator_write_node(node); end # $foo ||= bar # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1839 + # source://prism//lib/prism/translation/ripper.rb#1855 def visit_global_variable_or_write_node(node); end # $foo # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1790 + # source://prism//lib/prism/translation/ripper.rb#1806 def visit_global_variable_read_node(node); end # $foo, = bar # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1853 + # source://prism//lib/prism/translation/ripper.rb#1869 def visit_global_variable_target_node(node); end # $foo = 1 @@ -36233,19 +36275,19 @@ class Prism::Translation::Ripper < ::Prism::Compiler # $foo, $bar = 1 # ^^^^ ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1800 + # source://prism//lib/prism/translation/ripper.rb#1816 def visit_global_variable_write_node(node); end # {} # ^^ # - # source://prism//lib/prism/translation/ripper.rb#1860 + # source://prism//lib/prism/translation/ripper.rb#1876 def visit_hash_node(node); end # foo => {} # ^^ # - # source://prism//lib/prism/translation/ripper.rb#1875 + # source://prism//lib/prism/translation/ripper.rb#1891 def visit_hash_pattern_node(node); end # if foo then bar end @@ -36257,140 +36299,140 @@ class Prism::Translation::Ripper < ::Prism::Compiler # foo ? bar : baz # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1917 + # source://prism//lib/prism/translation/ripper.rb#1933 def visit_if_node(node); end # 1i # ^^ # - # source://prism//lib/prism/translation/ripper.rb#1953 + # source://prism//lib/prism/translation/ripper.rb#1969 def visit_imaginary_node(node); end # { foo: } # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1959 + # source://prism//lib/prism/translation/ripper.rb#1975 def visit_implicit_node(node); end # foo { |bar,| } # ^ # - # source://prism//lib/prism/translation/ripper.rb#1964 + # source://prism//lib/prism/translation/ripper.rb#1980 def visit_implicit_rest_node(node); end # case foo; in bar; end # ^^^^^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1971 + # source://prism//lib/prism/translation/ripper.rb#1987 def visit_in_node(node); end # foo[bar] &&= baz # ^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2006 + # source://prism//lib/prism/translation/ripper.rb#2022 def visit_index_and_write_node(node); end # foo[bar] += baz # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#1989 + # source://prism//lib/prism/translation/ripper.rb#2005 def visit_index_operator_write_node(node); end # foo[bar] ||= baz # ^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2023 + # source://prism//lib/prism/translation/ripper.rb#2039 def visit_index_or_write_node(node); end # foo[bar], = 1 # ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2040 + # source://prism//lib/prism/translation/ripper.rb#2056 def visit_index_target_node(node); end # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2082 + # source://prism//lib/prism/translation/ripper.rb#2098 def visit_instance_variable_and_write_node(node); end # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2068 + # source://prism//lib/prism/translation/ripper.rb#2084 def visit_instance_variable_operator_write_node(node); end # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2096 + # source://prism//lib/prism/translation/ripper.rb#2112 def visit_instance_variable_or_write_node(node); end # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2050 + # source://prism//lib/prism/translation/ripper.rb#2066 def visit_instance_variable_read_node(node); end # @foo, = bar # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2110 + # source://prism//lib/prism/translation/ripper.rb#2126 def visit_instance_variable_target_node(node); end # ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2057 + # source://prism//lib/prism/translation/ripper.rb#2073 def visit_instance_variable_write_node(node); end # 1 # ^ # - # source://prism//lib/prism/translation/ripper.rb#2117 + # source://prism//lib/prism/translation/ripper.rb#2133 def visit_integer_node(node); end # if /foo #{bar}/ then end # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2123 + # source://prism//lib/prism/translation/ripper.rb#2139 def visit_interpolated_match_last_line_node(node); end # /foo #{bar}/ # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2142 + # source://prism//lib/prism/translation/ripper.rb#2158 def visit_interpolated_regular_expression_node(node); end # "foo #{bar}" # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2161 + # source://prism//lib/prism/translation/ripper.rb#2177 def visit_interpolated_string_node(node); end # :"foo #{bar}" # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2189 + # source://prism//lib/prism/translation/ripper.rb#2205 def visit_interpolated_symbol_node(node); end # `foo #{bar}` # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2202 + # source://prism//lib/prism/translation/ripper.rb#2218 def visit_interpolated_x_string_node(node); end # -> { it } # ^^ # - # source://prism//lib/prism/translation/ripper.rb#2232 + # source://prism//lib/prism/translation/ripper.rb#2248 def visit_it_local_variable_read_node(node); end # -> { it } # ^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2239 + # source://prism//lib/prism/translation/ripper.rb#2255 def visit_it_parameters_node(node); end # foo(bar: baz) # ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2244 + # source://prism//lib/prism/translation/ripper.rb#2260 def visit_keyword_hash_node(node); end # def foo(**bar); end @@ -36399,96 +36441,96 @@ class Prism::Translation::Ripper < ::Prism::Compiler # def foo(**); end # ^^ # - # source://prism//lib/prism/translation/ripper.rb#2256 + # source://prism//lib/prism/translation/ripper.rb#2272 def visit_keyword_rest_parameter_node(node); end # -> {} # - # source://prism//lib/prism/translation/ripper.rb#2270 + # source://prism//lib/prism/translation/ripper.rb#2286 def visit_lambda_node(node); end # foo &&= bar # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2362 + # source://prism//lib/prism/translation/ripper.rb#2378 def visit_local_variable_and_write_node(node); end # foo += bar # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2348 + # source://prism//lib/prism/translation/ripper.rb#2364 def visit_local_variable_operator_write_node(node); end # foo ||= bar # ^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2376 + # source://prism//lib/prism/translation/ripper.rb#2392 def visit_local_variable_or_write_node(node); end # foo # ^^^ # - # source://prism//lib/prism/translation/ripper.rb#2330 + # source://prism//lib/prism/translation/ripper.rb#2346 def visit_local_variable_read_node(node); end # foo, = bar # ^^^ # - # source://prism//lib/prism/translation/ripper.rb#2390 + # source://prism//lib/prism/translation/ripper.rb#2406 def visit_local_variable_target_node(node); end # foo = 1 # ^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2337 + # source://prism//lib/prism/translation/ripper.rb#2353 def visit_local_variable_write_node(node); end # if /foo/ then end # ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2397 + # source://prism//lib/prism/translation/ripper.rb#2413 def visit_match_last_line_node(node); end # foo in bar # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2412 + # source://prism//lib/prism/translation/ripper.rb#2428 def visit_match_predicate_node(node); end # foo => bar # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2421 + # source://prism//lib/prism/translation/ripper.rb#2437 def visit_match_required_node(node); end # /(?foo)/ =~ bar # ^^^^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2430 + # source://prism//lib/prism/translation/ripper.rb#2446 def visit_match_write_node(node); end # A node that is missing from the syntax tree. This is only used in the # case of a syntax error. # - # source://prism//lib/prism/translation/ripper.rb#2436 + # source://prism//lib/prism/translation/ripper.rb#2452 def visit_missing_node(node); end # module Foo; end # ^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2442 + # source://prism//lib/prism/translation/ripper.rb#2458 def visit_module_node(node); end # (foo, bar), bar = qux # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2459 + # source://prism//lib/prism/translation/ripper.rb#2475 def visit_multi_target_node(node); end # foo, bar = baz # ^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2513 + # source://prism//lib/prism/translation/ripper.rb#2529 def visit_multi_write_node(node); end # next @@ -36497,55 +36539,55 @@ class Prism::Translation::Ripper < ::Prism::Compiler # next foo # ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2533 + # source://prism//lib/prism/translation/ripper.rb#2549 def visit_next_node(node); end # nil # ^^^ # - # source://prism//lib/prism/translation/ripper.rb#2547 + # source://prism//lib/prism/translation/ripper.rb#2563 def visit_nil_node(node); end # def foo(**nil); end # ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2554 + # source://prism//lib/prism/translation/ripper.rb#2570 def visit_no_keywords_parameter_node(node); end # -> { _1 + _2 } # ^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2563 + # source://prism//lib/prism/translation/ripper.rb#2579 def visit_numbered_parameters_node(node); end # $1 # ^^ # - # source://prism//lib/prism/translation/ripper.rb#2568 + # source://prism//lib/prism/translation/ripper.rb#2584 def visit_numbered_reference_read_node(node); end # def foo(bar: baz); end # ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2575 + # source://prism//lib/prism/translation/ripper.rb#2591 def visit_optional_keyword_parameter_node(node); end # def foo(bar = 1); end # ^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2585 + # source://prism//lib/prism/translation/ripper.rb#2601 def visit_optional_parameter_node(node); end # a or b # ^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2595 + # source://prism//lib/prism/translation/ripper.rb#2611 def visit_or_node(node); end # def foo(bar, *baz); end # ^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2605 + # source://prism//lib/prism/translation/ripper.rb#2621 def visit_parameters_node(node); end # () @@ -36554,84 +36596,84 @@ class Prism::Translation::Ripper < ::Prism::Compiler # (1) # ^^^ # - # source://prism//lib/prism/translation/ripper.rb#2632 + # source://prism//lib/prism/translation/ripper.rb#2648 def visit_parentheses_node(node); end # foo => ^(bar) # ^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2646 + # source://prism//lib/prism/translation/ripper.rb#2662 def visit_pinned_expression_node(node); end # foo = 1 and bar => ^foo # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2655 + # source://prism//lib/prism/translation/ripper.rb#2671 def visit_pinned_variable_node(node); end # END {} # ^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2661 + # source://prism//lib/prism/translation/ripper.rb#2677 def visit_post_execution_node(node); end # BEGIN {} # ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2676 + # source://prism//lib/prism/translation/ripper.rb#2692 def visit_pre_execution_node(node); end # The top-level program node. # - # source://prism//lib/prism/translation/ripper.rb#2690 + # source://prism//lib/prism/translation/ripper.rb#2706 def visit_program_node(node); end # 0..5 # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2701 + # source://prism//lib/prism/translation/ripper.rb#2717 def visit_range_node(node); end # 1r # ^^ # - # source://prism//lib/prism/translation/ripper.rb#2715 + # source://prism//lib/prism/translation/ripper.rb#2731 def visit_rational_node(node); end # redo # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2721 + # source://prism//lib/prism/translation/ripper.rb#2737 def visit_redo_node(node); end # /foo/ # ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2728 + # source://prism//lib/prism/translation/ripper.rb#2744 def visit_regular_expression_node(node); end # def foo(bar:); end # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2750 + # source://prism//lib/prism/translation/ripper.rb#2766 def visit_required_keyword_parameter_node(node); end # def foo(bar); end # ^^^ # - # source://prism//lib/prism/translation/ripper.rb#2757 + # source://prism//lib/prism/translation/ripper.rb#2773 def visit_required_parameter_node(node); end # foo rescue bar # ^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2764 + # source://prism//lib/prism/translation/ripper.rb#2780 def visit_rescue_modifier_node(node); end # begin; rescue; end # ^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2774 + # source://prism//lib/prism/translation/ripper.rb#2790 def visit_rescue_node(node); end # def foo(*bar); end @@ -36640,13 +36682,13 @@ class Prism::Translation::Ripper < ::Prism::Compiler # def foo(*); end # ^ # - # source://prism//lib/prism/translation/ripper.rb#2832 + # source://prism//lib/prism/translation/ripper.rb#2848 def visit_rest_parameter_node(node); end # retry # ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2844 + # source://prism//lib/prism/translation/ripper.rb#2860 def visit_retry_node(node); end # return @@ -36655,42 +36697,42 @@ class Prism::Translation::Ripper < ::Prism::Compiler # return 1 # ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2854 + # source://prism//lib/prism/translation/ripper.rb#2870 def visit_return_node(node); end # self # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2868 + # source://prism//lib/prism/translation/ripper.rb#2884 def visit_self_node(node); end # A shareable constant. # - # source://prism//lib/prism/translation/ripper.rb#2874 + # source://prism//lib/prism/translation/ripper.rb#2890 def visit_shareable_constant_node(node); end # class << self; end # ^^^^^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2880 + # source://prism//lib/prism/translation/ripper.rb#2896 def visit_singleton_class_node(node); end # __ENCODING__ # ^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2890 + # source://prism//lib/prism/translation/ripper.rb#2906 def visit_source_encoding_node(node); end # __FILE__ # ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2897 + # source://prism//lib/prism/translation/ripper.rb#2913 def visit_source_file_node(node); end # __LINE__ # ^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2904 + # source://prism//lib/prism/translation/ripper.rb#2920 def visit_source_line_node(node); end # foo(*bar) @@ -36702,42 +36744,42 @@ class Prism::Translation::Ripper < ::Prism::Compiler # def foo(*); bar(*); end # ^ # - # source://prism//lib/prism/translation/ripper.rb#2917 + # source://prism//lib/prism/translation/ripper.rb#2933 def visit_splat_node(node); end # A list of statements. # - # source://prism//lib/prism/translation/ripper.rb#2922 + # source://prism//lib/prism/translation/ripper.rb#2938 def visit_statements_node(node); end # "foo" # ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#2939 + # source://prism//lib/prism/translation/ripper.rb#2955 def visit_string_node(node); end # super(foo) # ^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#3071 + # source://prism//lib/prism/translation/ripper.rb#3087 def visit_super_node(node); end # :foo # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#3092 + # source://prism//lib/prism/translation/ripper.rb#3108 def visit_symbol_node(node); end # true # ^^^^ # - # source://prism//lib/prism/translation/ripper.rb#3116 + # source://prism//lib/prism/translation/ripper.rb#3132 def visit_true_node(node); end # undef foo # ^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#3123 + # source://prism//lib/prism/translation/ripper.rb#3139 def visit_undef_node(node); end # unless foo; bar end @@ -36746,7 +36788,7 @@ class Prism::Translation::Ripper < ::Prism::Compiler # bar unless foo # ^^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#3135 + # source://prism//lib/prism/translation/ripper.rb#3151 def visit_unless_node(node); end # until foo; bar end @@ -36755,13 +36797,13 @@ class Prism::Translation::Ripper < ::Prism::Compiler # bar until foo # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#3163 + # source://prism//lib/prism/translation/ripper.rb#3179 def visit_until_node(node); end # case foo; when bar; end # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#3187 + # source://prism//lib/prism/translation/ripper.rb#3203 def visit_when_node(node); end # while foo; bar end @@ -36770,13 +36812,13 @@ class Prism::Translation::Ripper < ::Prism::Compiler # bar while foo # ^^^^^^^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#3208 + # source://prism//lib/prism/translation/ripper.rb#3224 def visit_while_node(node); end # `foo` # ^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#3232 + # source://prism//lib/prism/translation/ripper.rb#3248 def visit_x_string_node(node); end # yield @@ -36785,32 +36827,32 @@ class Prism::Translation::Ripper < ::Prism::Compiler # yield 1 # ^^^^^^^ # - # source://prism//lib/prism/translation/ripper.rb#3255 + # source://prism//lib/prism/translation/ripper.rb#3271 def visit_yield_node(node); end private # :stopdoc: # - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def _dispatch_0; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def _dispatch_1(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def _dispatch_2(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def _dispatch_3(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3399 + # source://prism//lib/prism/translation/ripper.rb#3415 def _dispatch_4(_, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3400 + # source://prism//lib/prism/translation/ripper.rb#3416 def _dispatch_5(_, _, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3401 + # source://prism//lib/prism/translation/ripper.rb#3417 def _dispatch_7(_, _, _, _, _, _, _); end # This method is responsible for updating lineno and column information @@ -36819,19 +36861,19 @@ class Prism::Translation::Ripper < ::Prism::Compiler # This method could be drastically improved with some caching on the start # of every line, but for now it's good enough. # - # source://prism//lib/prism/translation/ripper.rb#3385 + # source://prism//lib/prism/translation/ripper.rb#3401 def bounds(location); end # Returns true if the given node is a command node. # # @return [Boolean] # - # source://prism//lib/prism/translation/ripper.rb#1173 + # source://prism//lib/prism/translation/ripper.rb#1174 def command?(node); end # This method is called when the parser found syntax error. # - # source://prism//lib/prism/translation/ripper.rb#3423 + # source://prism//lib/prism/translation/ripper.rb#3439 def compile_error(msg); end # This method is provided by the Ripper C extension. It is called when a @@ -36839,631 +36881,631 @@ class Prism::Translation::Ripper < ::Prism::Compiler # that it will modify the string in place and return the number of bytes # that were removed. # - # source://prism//lib/prism/translation/ripper.rb#3438 + # source://prism//lib/prism/translation/ripper.rb#3454 def dedent_string(string, width); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_BEGIN(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_CHAR(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_END(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on___end__(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_alias(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_alias_error(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_aref(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_aref_field(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_arg_ambiguous(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_arg_paren(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_args_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_args_add_block(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_args_add_star(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_args_forward; end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_args_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_array(_); end - # source://prism//lib/prism/translation/ripper.rb#3399 + # source://prism//lib/prism/translation/ripper.rb#3415 def on_aryptn(_, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_assign(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_assign_error(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_assoc_new(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_assoc_splat(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_assoclist_from_args(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_backref(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_backtick(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_bare_assoc_hash(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_begin(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_binary(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_block_var(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_blockarg(_); end - # source://prism//lib/prism/translation/ripper.rb#3399 + # source://prism//lib/prism/translation/ripper.rb#3415 def on_bodystmt(_, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_brace_block(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_break(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_call(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_case(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_class(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_class_name_error(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_comma(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_command(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3399 + # source://prism//lib/prism/translation/ripper.rb#3415 def on_command_call(_, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_comment(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_const(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_const_path_field(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_const_path_ref(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_const_ref(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_cvar(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_def(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_defined(_); end - # source://prism//lib/prism/translation/ripper.rb#3400 + # source://prism//lib/prism/translation/ripper.rb#3416 def on_defs(_, _, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_do_block(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_dot2(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_dot3(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_dyna_symbol(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_else(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_elsif(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_embdoc(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_embdoc_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_embdoc_end(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_embexpr_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_embexpr_end(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_embvar(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_ensure(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_excessed_comma; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_fcall(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_field(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_float(_); end - # source://prism//lib/prism/translation/ripper.rb#3399 + # source://prism//lib/prism/translation/ripper.rb#3415 def on_fndptn(_, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_for(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_gvar(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_hash(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_heredoc_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_heredoc_dedent(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_heredoc_end(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_hshptn(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_ident(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_if(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_if_mod(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_ifop(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_ignored_nl(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_ignored_sp(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_imaginary(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_in(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_int(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_ivar(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_kw(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_kwrest_param(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_label(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_label_end(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_lambda(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_lbrace(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_lbracket(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_lparen(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_magic_comment(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_massign(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_method_add_arg(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_method_add_block(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_mlhs_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_mlhs_add_post(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_mlhs_add_star(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_mlhs_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_mlhs_paren(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_module(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_mrhs_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_mrhs_add_star(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_mrhs_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_mrhs_new_from_args(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_next(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_nl(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_nokw_param(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_op(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_opassign(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_operator_ambiguous(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_param_error(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3401 + # source://prism//lib/prism/translation/ripper.rb#3417 def on_params(_, _, _, _, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_paren(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_parse_error(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_period(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_program(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_qsymbols_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_qsymbols_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_qsymbols_new; end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_qwords_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_qwords_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_qwords_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_rational(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_rbrace(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_rbracket(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_redo; end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_regexp_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_regexp_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_regexp_end(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_regexp_literal(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_regexp_new; end - # source://prism//lib/prism/translation/ripper.rb#3399 + # source://prism//lib/prism/translation/ripper.rb#3415 def on_rescue(_, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_rescue_mod(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_rest_param(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_retry; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_return(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_return0; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_rparen(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_sclass(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_semicolon(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_sp(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_stmts_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_stmts_new; end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_string_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_string_concat(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_string_content; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_string_dvar(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_string_embexpr(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_string_literal(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_super(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_symbeg(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_symbol(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_symbol_literal(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_symbols_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_symbols_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_symbols_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_tlambda(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_tlambeg(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_top_const_field(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_top_const_ref(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_tstring_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_tstring_content(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_tstring_end(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_unary(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_undef(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_unless(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_unless_mod(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_until(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_until_mod(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_var_alias(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_var_field(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_var_ref(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_vcall(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_void_stmt; end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_when(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_while(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_while_mod(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_word_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_word_new; end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_words_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_words_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_words_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_words_sep(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_xstring_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_xstring_literal(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_xstring_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_yield(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_yield0; end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_zsuper; end # Lazily initialize the parse result. # - # source://prism//lib/prism/translation/ripper.rb#3281 + # source://prism//lib/prism/translation/ripper.rb#3297 def result; end # Returns true if there is a comma between the two locations. # # @return [Boolean] # - # source://prism//lib/prism/translation/ripper.rb#3290 + # source://prism//lib/prism/translation/ripper.rb#3306 def trailing_comma?(left, right); end # Visit one side of an alias global variable node. # - # source://prism//lib/prism/translation/ripper.rb#570 + # source://prism//lib/prism/translation/ripper.rb#571 def visit_alias_global_variable_node_value(node); end # Visit a list of elements, like the elements of an array or arguments. # - # source://prism//lib/prism/translation/ripper.rb#756 + # source://prism//lib/prism/translation/ripper.rb#757 def visit_arguments(elements); end # Visit the clauses of a begin node to form an on_bodystmt call. # - # source://prism//lib/prism/translation/ripper.rb#840 + # source://prism//lib/prism/translation/ripper.rb#841 def visit_begin_node_clauses(location, node, allow_newline); end # Visit the body of a structure that can have either a set of statements # or statements wrapped in rescue/else/ensure. # - # source://prism//lib/prism/translation/ripper.rb#875 + # source://prism//lib/prism/translation/ripper.rb#876 def visit_body_node(location, node, allow_newline = T.unsafe(nil)); end # Visit the arguments and block of a call node and return the arguments # and block as they should be used. # - # source://prism//lib/prism/translation/ripper.rb#1146 + # source://prism//lib/prism/translation/ripper.rb#1147 def visit_call_node_arguments(arguments_node, block_node, trailing_comma); end # Visit a constant path that is part of a write node. # - # source://prism//lib/prism/translation/ripper.rb#1499 + # source://prism//lib/prism/translation/ripper.rb#1500 def visit_constant_path_write_node_target(node); end # Visit a destructured positional parameter node. # - # source://prism//lib/prism/translation/ripper.rb#2619 + # source://prism//lib/prism/translation/ripper.rb#2635 def visit_destructured_parameter_node(node); end # Visit a string that is expressed using a <<~ heredoc. # - # source://prism//lib/prism/translation/ripper.rb#2990 + # source://prism//lib/prism/translation/ripper.rb#3006 def visit_heredoc_node(parts, base); end # Ripper gives back the escaped string content but strips out the common @@ -37472,34 +37514,34 @@ class Prism::Translation::Ripper < ::Prism::Compiler # work well together, so here we need to re-derive the common leading # whitespace. # - # source://prism//lib/prism/translation/ripper.rb#2965 + # source://prism//lib/prism/translation/ripper.rb#2981 def visit_heredoc_node_whitespace(parts); end # Visit a heredoc node that is representing a string. # - # source://prism//lib/prism/translation/ripper.rb#3036 + # source://prism//lib/prism/translation/ripper.rb#3052 def visit_heredoc_string_node(node); end # Visit a heredoc node that is representing an xstring. # - # source://prism//lib/prism/translation/ripper.rb#3053 + # source://prism//lib/prism/translation/ripper.rb#3069 def visit_heredoc_x_string_node(node); end # Visit the targets of a multi-target node. # - # source://prism//lib/prism/translation/ripper.rb#2472 + # source://prism//lib/prism/translation/ripper.rb#2488 def visit_multi_target_node_targets(lefts, rest, rights, skippable); end # Visit a node that represents a number. We need to explicitly handle the # unary - operator. # - # source://prism//lib/prism/translation/ripper.rb#3329 + # source://prism//lib/prism/translation/ripper.rb#3345 def visit_number_node(node); end # Visit a pattern within a pattern match. This is used to bypass the # parenthesis node that can be used to wrap patterns. # - # source://prism//lib/prism/translation/ripper.rb#595 + # source://prism//lib/prism/translation/ripper.rb#596 def visit_pattern_node(node); end # Visit the list of statements of a statements node. We support nil @@ -37507,49 +37549,49 @@ class Prism::Translation::Ripper < ::Prism::Compiler # structure of the prism parse tree, but we manually add them here so that # we can mirror Ripper's void stmt. # - # source://prism//lib/prism/translation/ripper.rb#2931 + # source://prism//lib/prism/translation/ripper.rb#2947 def visit_statements_node_body(body); end # Visit an individual part of a string-like node. # - # source://prism//lib/prism/translation/ripper.rb#2221 + # source://prism//lib/prism/translation/ripper.rb#2237 def visit_string_content(part); end # Visit the string content of a particular node. This method is used to # split into the various token types. # - # source://prism//lib/prism/translation/ripper.rb#3302 + # source://prism//lib/prism/translation/ripper.rb#3318 def visit_token(token, allow_keywords = T.unsafe(nil)); end # Dispatch a words_sep event that contains the space between the elements # of list literals. # - # source://prism//lib/prism/translation/ripper.rb#745 + # source://prism//lib/prism/translation/ripper.rb#746 def visit_words_sep(opening_loc, previous, current); end # Visit a node that represents a write value. This is used to handle the # special case of an implicit array that is generated without brackets. # - # source://prism//lib/prism/translation/ripper.rb#3347 + # source://prism//lib/prism/translation/ripper.rb#3363 def visit_write_value(node); end # Returns true if there is a semicolon between the two locations. # # @return [Boolean] # - # source://prism//lib/prism/translation/ripper.rb#3295 + # source://prism//lib/prism/translation/ripper.rb#3311 def void_stmt?(left, right, allow_newline); end # This method is called when weak warning is produced by the parser. # +fmt+ and +args+ is printf style. # - # source://prism//lib/prism/translation/ripper.rb#3414 + # source://prism//lib/prism/translation/ripper.rb#3430 def warn(fmt, *args); end # This method is called when strong warning is produced by the parser. # +fmt+ and +args+ is printf style. # - # source://prism//lib/prism/translation/ripper.rb#3419 + # source://prism//lib/prism/translation/ripper.rb#3435 def warning(fmt, *args); end class << self @@ -37575,13 +37617,13 @@ class Prism::Translation::Ripper < ::Prism::Compiler # [[1, 12], :on_sp, " ", END ], # [[1, 13], :on_kw, "end", END ]] # - # source://prism//lib/prism/translation/ripper.rb#72 + # source://prism//lib/prism/translation/ripper.rb#73 def lex(src, filename = T.unsafe(nil), lineno = T.unsafe(nil), raise_errors: T.unsafe(nil)); end # Parses the given Ruby program read from +src+. # +src+ must be a String or an IO or a object with a #gets method. # - # source://prism//lib/prism/translation/ripper.rb#46 + # source://prism//lib/prism/translation/ripper.rb#47 def parse(src, filename = T.unsafe(nil), lineno = T.unsafe(nil)); end # Parses +src+ and create S-exp tree. @@ -37602,7 +37644,7 @@ class Prism::Translation::Ripper < ::Prism::Compiler # [:paren, [:params, [[:@ident, "a", [1, 6]]], nil, nil, nil, nil, nil, nil]], # [:bodystmt, [[:var_ref, [:@kw, "nil", [1, 9]]]], nil, nil, nil]]]] # - # source://prism//lib/prism/translation/ripper.rb#381 + # source://prism//lib/prism/translation/ripper.rb#382 def sexp(src, filename = T.unsafe(nil), lineno = T.unsafe(nil), raise_errors: T.unsafe(nil)); end # Parses +src+ and create S-exp tree. @@ -37628,637 +37670,637 @@ class Prism::Translation::Ripper < ::Prism::Compiler # nil, # nil]]]] # - # source://prism//lib/prism/translation/ripper.rb#416 + # source://prism//lib/prism/translation/ripper.rb#417 def sexp_raw(src, filename = T.unsafe(nil), lineno = T.unsafe(nil), raise_errors: T.unsafe(nil)); end end end # A list of all of the Ruby binary operators. # -# source://prism//lib/prism/translation/ripper.rb#337 +# source://prism//lib/prism/translation/ripper.rb#338 Prism::Translation::Ripper::BINARY_OPERATORS = T.let(T.unsafe(nil), Array) # This array contains name of all ripper events. # -# source://prism//lib/prism/translation/ripper.rb#289 +# source://prism//lib/prism/translation/ripper.rb#290 Prism::Translation::Ripper::EVENTS = T.let(T.unsafe(nil), Array) # A list of all of the Ruby keywords. # -# source://prism//lib/prism/translation/ripper.rb#292 +# source://prism//lib/prism/translation/ripper.rb#293 Prism::Translation::Ripper::KEYWORDS = T.let(T.unsafe(nil), Array) # This array contains name of parser events. # -# source://prism//lib/prism/translation/ripper.rb#283 +# source://prism//lib/prism/translation/ripper.rb#284 Prism::Translation::Ripper::PARSER_EVENTS = T.let(T.unsafe(nil), Array) # This contains a table of all of the parser events and their # corresponding arity. # -# source://prism//lib/prism/translation/ripper.rb#84 +# source://prism//lib/prism/translation/ripper.rb#85 Prism::Translation::Ripper::PARSER_EVENT_TABLE = T.let(T.unsafe(nil), Hash) # This array contains name of scanner events. # -# source://prism//lib/prism/translation/ripper.rb#286 +# source://prism//lib/prism/translation/ripper.rb#287 Prism::Translation::Ripper::SCANNER_EVENTS = T.let(T.unsafe(nil), Array) # This contains a table of all of the scanner events and their # corresponding arity. # -# source://prism//lib/prism/translation/ripper.rb#227 +# source://prism//lib/prism/translation/ripper.rb#228 Prism::Translation::Ripper::SCANNER_EVENT_TABLE = T.let(T.unsafe(nil), Hash) # This class mirrors the ::Ripper::SexpBuilder subclass of ::Ripper that # returns the arrays of [type, *children]. # -# source://prism//lib/prism/translation/ripper/sexp.rb#10 +# source://prism//lib/prism/translation/ripper/sexp.rb#11 class Prism::Translation::Ripper::SexpBuilder < ::Prism::Translation::Ripper # :stopdoc: # - # source://prism//lib/prism/translation/ripper/sexp.rb#13 + # source://prism//lib/prism/translation/ripper/sexp.rb#14 def error; end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_BEGIN(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_CHAR(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_END(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on___end__(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_alias(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_alias_error(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_aref(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_aref_field(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_arg_ambiguous(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_arg_paren(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_args_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_args_add_block(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_args_add_star(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_args_forward(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_args_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_array(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_aryptn(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_assign(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_assign_error(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_assoc_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_assoc_splat(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_assoclist_from_args(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_backref(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_backtick(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_bare_assoc_hash(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_begin(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_binary(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_block_var(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_blockarg(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_bodystmt(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_brace_block(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_break(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_call(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_case(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_class(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_class_name_error(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_comma(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_command(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_command_call(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_comment(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_const(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_const_path_field(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_const_path_ref(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_const_ref(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_cvar(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_def(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_defined(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_defs(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_do_block(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_dot2(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_dot3(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_dyna_symbol(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_else(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_elsif(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_embdoc(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_embdoc_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_embdoc_end(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_embexpr_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_embexpr_end(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_embvar(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_ensure(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_excessed_comma(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_fcall(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_field(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_float(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_fndptn(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_for(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_gvar(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_hash(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_heredoc_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_heredoc_end(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_hshptn(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_ident(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_if(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_if_mod(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_ifop(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_ignored_nl(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_ignored_sp(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_imaginary(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_in(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_int(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_ivar(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_kw(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_kwrest_param(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_label(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_label_end(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_lambda(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_lbrace(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_lbracket(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_lparen(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_magic_comment(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_massign(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_method_add_arg(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_method_add_block(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mlhs_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mlhs_add_post(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mlhs_add_star(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mlhs_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mlhs_paren(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_module(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mrhs_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mrhs_add_star(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mrhs_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mrhs_new_from_args(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_next(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_nl(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_nokw_param(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_op(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_opassign(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_operator_ambiguous(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_param_error(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_params(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_paren(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_period(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_program(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_qsymbols_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_qsymbols_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_qsymbols_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_qwords_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_qwords_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_qwords_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_rational(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_rbrace(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_rbracket(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_redo(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_regexp_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_regexp_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_regexp_end(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_regexp_literal(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_regexp_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_rescue(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_rescue_mod(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_rest_param(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_retry(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_return(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_return0(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_rparen(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_sclass(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_semicolon(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_sp(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_stmts_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_stmts_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_string_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_string_concat(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_string_content(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_string_dvar(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_string_embexpr(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_string_literal(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_super(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_symbeg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_symbol(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_symbol_literal(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_symbols_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_symbols_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_symbols_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_tlambda(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_tlambeg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_top_const_field(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_top_const_ref(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_tstring_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_tstring_content(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_tstring_end(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_unary(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_undef(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_unless(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_unless_mod(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_until(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_until_mod(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_var_alias(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_var_field(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_var_ref(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_vcall(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_void_stmt(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_when(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_while(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_while_mod(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_word_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_word_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_words_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_words_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_words_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_words_sep(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_xstring_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_xstring_literal(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_xstring_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_yield(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_yield0(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_zsuper(*args); end private - # source://prism//lib/prism/translation/ripper/sexp.rb#61 + # source://prism//lib/prism/translation/ripper/sexp.rb#62 def compile_error(mesg); end - # source://prism//lib/prism/translation/ripper/sexp.rb#17 + # source://prism//lib/prism/translation/ripper/sexp.rb#18 def dedent_element(e, width); end - # source://prism//lib/prism/translation/ripper/sexp.rb#61 + # source://prism//lib/prism/translation/ripper/sexp.rb#62 def on_error(mesg); end - # source://prism//lib/prism/translation/ripper/sexp.rb#24 + # source://prism//lib/prism/translation/ripper/sexp.rb#25 def on_heredoc_dedent(val, width); end - # source://prism//lib/prism/translation/ripper/sexp.rb#61 + # source://prism//lib/prism/translation/ripper/sexp.rb#62 def on_parse_error(mesg); end end @@ -38266,113 +38308,113 @@ end # returns the same values as ::Ripper::SexpBuilder except with a couple of # niceties that flatten linked lists into arrays. # -# source://prism//lib/prism/translation/ripper/sexp.rb#74 +# source://prism//lib/prism/translation/ripper/sexp.rb#75 class Prism::Translation::Ripper::SexpBuilderPP < ::Prism::Translation::Ripper::SexpBuilder private - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def _dispatch_event_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def _dispatch_event_push(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_args_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_args_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#79 + # source://prism//lib/prism/translation/ripper/sexp.rb#80 def on_heredoc_dedent(val, width); end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_mlhs_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#109 + # source://prism//lib/prism/translation/ripper/sexp.rb#110 def on_mlhs_add_post(list, post); end - # source://prism//lib/prism/translation/ripper/sexp.rb#105 + # source://prism//lib/prism/translation/ripper/sexp.rb#106 def on_mlhs_add_star(list, star); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_mlhs_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#101 + # source://prism//lib/prism/translation/ripper/sexp.rb#102 def on_mlhs_paren(list); end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_mrhs_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_mrhs_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_qsymbols_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_qsymbols_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_qwords_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_qwords_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_regexp_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_regexp_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_stmts_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_stmts_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_string_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_symbols_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_symbols_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_word_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_word_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_words_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_words_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_xstring_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_xstring_new; end end # This module is the entry-point for converting a prism syntax tree into the # seattlerb/ruby_parser gem's syntax tree. # -# source://prism//lib/prism/translation/ruby_parser.rb#14 +# source://prism//lib/prism/translation/ruby_parser.rb#15 class Prism::Translation::RubyParser # Parse the given source and translate it into the seattlerb/ruby_parser # gem's Sexp format. # - # source://prism//lib/prism/translation/ruby_parser.rb#1608 + # source://prism//lib/prism/translation/ruby_parser.rb#1891 def parse(source, filepath = T.unsafe(nil)); end # Parse the given file and translate it into the seattlerb/ruby_parser # gem's Sexp format. # - # source://prism//lib/prism/translation/ruby_parser.rb#1614 + # source://prism//lib/prism/translation/ruby_parser.rb#1897 def parse_file(filepath); end private @@ -38380,166 +38422,199 @@ class Prism::Translation::RubyParser # Translate the given parse result and filepath into the # seattlerb/ruby_parser gem's Sexp format. # - # source://prism//lib/prism/translation/ruby_parser.rb#1636 + # source://prism//lib/prism/translation/ruby_parser.rb#1919 def translate(result, filepath); end class << self # Parse the given source and translate it into the seattlerb/ruby_parser # gem's Sexp format. # - # source://prism//lib/prism/translation/ruby_parser.rb#1621 + # source://prism//lib/prism/translation/ruby_parser.rb#1904 def parse(source, filepath = T.unsafe(nil)); end # Parse the given file and translate it into the seattlerb/ruby_parser # gem's Sexp format. # - # source://prism//lib/prism/translation/ruby_parser.rb#1627 + # source://prism//lib/prism/translation/ruby_parser.rb#1910 def parse_file(filepath); end end end # A prism visitor that builds Sexp objects. # -# source://prism//lib/prism/translation/ruby_parser.rb#16 +# source://prism//lib/prism/translation/ruby_parser.rb#17 class Prism::Translation::RubyParser::Compiler < ::Prism::Compiler # Initialize a new compiler with the given file name. # # @return [Compiler] a new instance of Compiler # - # source://prism//lib/prism/translation/ruby_parser.rb#31 + # source://prism//lib/prism/translation/ruby_parser.rb#32 def initialize(file, in_def: T.unsafe(nil), in_pattern: T.unsafe(nil)); end # This is the name of the file that we are compiling. We set it on every - # Sexp object that is generated, and also use it to compile __FILE__ + # Sexp object that is generated, and also use it to compile `__FILE__` # nodes. # - # source://prism//lib/prism/translation/ruby_parser.rb#20 + # source://prism//lib/prism/translation/ruby_parser.rb#21 def file; end # Class variables will change their type based on if they are inside of # a method definition or not, so we need to track that state. # - # source://prism//lib/prism/translation/ruby_parser.rb#24 + # source://prism//lib/prism/translation/ruby_parser.rb#25 def in_def; end # Some nodes will change their representation if they are inside of a # pattern, so we need to track that state. # - # source://prism//lib/prism/translation/ruby_parser.rb#28 + # source://prism//lib/prism/translation/ruby_parser.rb#29 def in_pattern; end + # ``` # alias $foo $bar # ^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#45 + # source://prism//lib/prism/translation/ruby_parser.rb#50 def visit_alias_global_variable_node(node); end + # ``` # alias foo bar # ^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#39 + # source://prism//lib/prism/translation/ruby_parser.rb#42 def visit_alias_method_node(node); end + # ``` # foo => bar | baz # ^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#51 + # source://prism//lib/prism/translation/ruby_parser.rb#58 def visit_alternation_pattern_node(node); end + # ``` # a and b # ^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#57 + # source://prism//lib/prism/translation/ruby_parser.rb#66 def visit_and_node(node); end + # ``` # foo(bar) # ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#108 + # source://prism//lib/prism/translation/ruby_parser.rb#123 def visit_arguments_node(node); end + # ``` # [] # ^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#75 + # source://prism//lib/prism/translation/ruby_parser.rb#86 def visit_array_node(node); end + # ``` # foo => [bar] # ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#85 + # source://prism//lib/prism/translation/ruby_parser.rb#98 def visit_array_pattern_node(node); end + # ``` # { a: 1 } # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#114 + # source://prism//lib/prism/translation/ruby_parser.rb#131 def visit_assoc_node(node); end + # ``` # def foo(**); bar(**); end # ^^ # # { **foo } # ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#123 + # source://prism//lib/prism/translation/ruby_parser.rb#142 def visit_assoc_splat_node(node); end + # ``` # $+ # ^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#133 + # source://prism//lib/prism/translation/ruby_parser.rb#154 def visit_back_reference_read_node(node); end + # ``` # begin end # ^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#139 + # source://prism//lib/prism/translation/ruby_parser.rb#162 def visit_begin_node(node); end + # ``` # foo(&bar) # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#172 + # source://prism//lib/prism/translation/ruby_parser.rb#197 def visit_block_argument_node(node); end + # ``` # foo { |; bar| } # ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#180 + # source://prism//lib/prism/translation/ruby_parser.rb#207 def visit_block_local_variable_node(node); end # A block on a keyword or method call. # - # source://prism//lib/prism/translation/ruby_parser.rb#185 + # source://prism//lib/prism/translation/ruby_parser.rb#212 def visit_block_node(node); end + # ``` # def foo(&bar); end # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#191 + # source://prism//lib/prism/translation/ruby_parser.rb#220 def visit_block_parameter_node(node); end # A block's parameters. # - # source://prism//lib/prism/translation/ruby_parser.rb#196 + # source://prism//lib/prism/translation/ruby_parser.rb#225 def visit_block_parameters_node(node); end + # ``` # break # ^^^^^ # # break foo # ^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#236 + # source://prism//lib/prism/translation/ruby_parser.rb#267 def visit_break_node(node); end + # ``` # foo.bar &&= baz # ^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#304 + # source://prism//lib/prism/translation/ruby_parser.rb#341 def visit_call_and_write_node(node); end + # ``` # foo # ^^^ # @@ -38548,313 +38623,409 @@ class Prism::Translation::RubyParser::Compiler < ::Prism::Compiler # # foo.bar() {} # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#254 + # source://prism//lib/prism/translation/ruby_parser.rb#287 def visit_call_node(node); end + # ``` # foo.bar += baz # ^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#294 + # source://prism//lib/prism/translation/ruby_parser.rb#329 def visit_call_operator_write_node(node); end + # ``` # foo.bar ||= baz # ^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#314 + # source://prism//lib/prism/translation/ruby_parser.rb#353 def visit_call_or_write_node(node); end + # ``` # foo.bar, = 1 # ^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#337 + # source://prism//lib/prism/translation/ruby_parser.rb#378 def visit_call_target_node(node); end + # ``` # foo => bar => baz # ^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#343 + # source://prism//lib/prism/translation/ruby_parser.rb#386 def visit_capture_pattern_node(node); end + # ``` # case foo; in bar; end # ^^^^^^^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#355 + # source://prism//lib/prism/translation/ruby_parser.rb#402 def visit_case_match_node(node); end + # ``` # case foo; when bar; end # ^^^^^^^^^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#349 + # source://prism//lib/prism/translation/ruby_parser.rb#394 def visit_case_node(node); end + # ``` # class Foo; end # ^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#361 + # source://prism//lib/prism/translation/ruby_parser.rb#410 def visit_class_node(node); end + # ``` # @@foo &&= bar # ^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#402 + # source://prism//lib/prism/translation/ruby_parser.rb#459 def visit_class_variable_and_write_node(node); end + # ``` # @@foo += bar # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#396 + # source://prism//lib/prism/translation/ruby_parser.rb#451 def visit_class_variable_operator_write_node(node); end + # ``` # @@foo ||= bar # ^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#408 + # source://prism//lib/prism/translation/ruby_parser.rb#467 def visit_class_variable_or_write_node(node); end + # ``` # @@foo # ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#381 + # source://prism//lib/prism/translation/ruby_parser.rb#432 def visit_class_variable_read_node(node); end + # ``` # @@foo, = bar # ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#414 + # source://prism//lib/prism/translation/ruby_parser.rb#475 def visit_class_variable_target_node(node); end + # ``` # @@foo = 1 # ^^^^^^^^^ # # @@foo, @@bar = 1 # ^^^^^ ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#390 + # source://prism//lib/prism/translation/ruby_parser.rb#443 def visit_class_variable_write_node(node); end + # ``` # Foo &&= bar # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#447 + # source://prism//lib/prism/translation/ruby_parser.rb#516 def visit_constant_and_write_node(node); end + # ``` # Foo += bar # ^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#441 + # source://prism//lib/prism/translation/ruby_parser.rb#508 def visit_constant_operator_write_node(node); end + # ``` # Foo ||= bar # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#453 + # source://prism//lib/prism/translation/ruby_parser.rb#524 def visit_constant_or_write_node(node); end + # ``` # Foo::Bar &&= baz # ^^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#490 + # source://prism//lib/prism/translation/ruby_parser.rb#571 def visit_constant_path_and_write_node(node); end + # ``` # Foo::Bar # ^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#465 + # source://prism//lib/prism/translation/ruby_parser.rb#540 def visit_constant_path_node(node); end + # ``` # Foo::Bar += baz # ^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#484 + # source://prism//lib/prism/translation/ruby_parser.rb#563 def visit_constant_path_operator_write_node(node); end + # ``` # Foo::Bar ||= baz # ^^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#496 + # source://prism//lib/prism/translation/ruby_parser.rb#579 def visit_constant_path_or_write_node(node); end + # ``` # Foo::Bar, = baz # ^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#502 + # source://prism//lib/prism/translation/ruby_parser.rb#587 def visit_constant_path_target_node(node); end + # ``` # Foo::Bar = 1 # ^^^^^^^^^^^^ # # Foo::Foo, Bar::Bar = 1 # ^^^^^^^^ ^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#478 + # source://prism//lib/prism/translation/ruby_parser.rb#555 def visit_constant_path_write_node(node); end + # ``` # Foo # ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#426 + # source://prism//lib/prism/translation/ruby_parser.rb#489 def visit_constant_read_node(node); end + # ``` # Foo, = bar # ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#459 + # source://prism//lib/prism/translation/ruby_parser.rb#532 def visit_constant_target_node(node); end + # ``` # Foo = 1 # ^^^^^^^ # # Foo, Bar = 1 # ^^^ ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#435 + # source://prism//lib/prism/translation/ruby_parser.rb#500 def visit_constant_write_node(node); end + # ``` # def foo; end # ^^^^^^^^^^^^ # # def self.foo; end # ^^^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#518 + # source://prism//lib/prism/translation/ruby_parser.rb#605 def visit_def_node(node); end + # ``` # defined? a # ^^^^^^^^^^ # # defined?(a) # ^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#549 + # source://prism//lib/prism/translation/ruby_parser.rb#638 def visit_defined_node(node); end + # ``` # if foo then bar else baz end # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#555 + # source://prism//lib/prism/translation/ruby_parser.rb#646 def visit_else_node(node); end + # ``` # "foo #{bar}" # ^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#561 + # source://prism//lib/prism/translation/ruby_parser.rb#654 def visit_embedded_statements_node(node); end + # ``` # "foo #@bar" # ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#569 + # source://prism//lib/prism/translation/ruby_parser.rb#664 def visit_embedded_variable_node(node); end + # ``` # begin; foo; ensure; bar; end # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#575 + # source://prism//lib/prism/translation/ruby_parser.rb#672 def visit_ensure_node(node); end + # ``` # false # ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#581 + # source://prism//lib/prism/translation/ruby_parser.rb#680 def visit_false_node(node); end + # ``` # foo => [*, bar, *] # ^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#587 + # source://prism//lib/prism/translation/ruby_parser.rb#688 def visit_find_pattern_node(node); end + # ``` # if foo .. bar; end # ^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#593 + # source://prism//lib/prism/translation/ruby_parser.rb#696 def visit_flip_flop_node(node); end + # ``` # 1.0 # ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#603 + # source://prism//lib/prism/translation/ruby_parser.rb#708 def visit_float_node(node); end + # ``` # for foo in bar do end # ^^^^^^^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#609 + # source://prism//lib/prism/translation/ruby_parser.rb#716 def visit_for_node(node); end + # ``` # def foo(...); bar(...); end # ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#615 + # source://prism//lib/prism/translation/ruby_parser.rb#724 def visit_forwarding_arguments_node(node); end + # ``` # def foo(...); end # ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#621 + # source://prism//lib/prism/translation/ruby_parser.rb#732 def visit_forwarding_parameter_node(node); end + # ``` # super # ^^^^^ # # super {} # ^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#630 + # source://prism//lib/prism/translation/ruby_parser.rb#743 def visit_forwarding_super_node(node); end + # ``` # $foo &&= bar # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#657 + # source://prism//lib/prism/translation/ruby_parser.rb#778 def visit_global_variable_and_write_node(node); end + # ``` # $foo += bar # ^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#651 + # source://prism//lib/prism/translation/ruby_parser.rb#770 def visit_global_variable_operator_write_node(node); end + # ``` # $foo ||= bar # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#663 + # source://prism//lib/prism/translation/ruby_parser.rb#786 def visit_global_variable_or_write_node(node); end + # ``` # $foo # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#636 + # source://prism//lib/prism/translation/ruby_parser.rb#751 def visit_global_variable_read_node(node); end + # ``` # $foo, = bar # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#669 + # source://prism//lib/prism/translation/ruby_parser.rb#794 def visit_global_variable_target_node(node); end + # ``` # $foo = 1 # ^^^^^^^^ # # $foo, $bar = 1 # ^^^^ ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#645 + # source://prism//lib/prism/translation/ruby_parser.rb#762 def visit_global_variable_write_node(node); end + # ``` # {} # ^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#675 + # source://prism//lib/prism/translation/ruby_parser.rb#802 def visit_hash_node(node); end + # ``` # foo => {} # ^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#681 + # source://prism//lib/prism/translation/ruby_parser.rb#810 def visit_hash_pattern_node(node); end + # ``` # if foo then bar end # ^^^^^^^^^^^^^^^^^^^ # @@ -38863,441 +39034,569 @@ class Prism::Translation::RubyParser::Compiler < ::Prism::Compiler # # foo ? bar : baz # ^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#702 + # source://prism//lib/prism/translation/ruby_parser.rb#833 def visit_if_node(node); end # 1i # - # source://prism//lib/prism/translation/ruby_parser.rb#707 + # source://prism//lib/prism/translation/ruby_parser.rb#838 def visit_imaginary_node(node); end + # ``` # { foo: } # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#713 + # source://prism//lib/prism/translation/ruby_parser.rb#846 def visit_implicit_node(node); end + # ``` # foo { |bar,| } # ^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#718 + # source://prism//lib/prism/translation/ruby_parser.rb#853 def visit_implicit_rest_node(node); end + # ``` # case foo; in bar; end # ^^^^^^^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#723 + # source://prism//lib/prism/translation/ruby_parser.rb#860 def visit_in_node(node); end + # ``` # foo[bar] &&= baz # ^^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#749 + # source://prism//lib/prism/translation/ruby_parser.rb#890 def visit_index_and_write_node(node); end + # ``` # foo[bar] += baz # ^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#736 + # source://prism//lib/prism/translation/ruby_parser.rb#875 def visit_index_operator_write_node(node); end + # ``` # foo[bar] ||= baz # ^^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#762 + # source://prism//lib/prism/translation/ruby_parser.rb#905 def visit_index_or_write_node(node); end + # ``` # foo[bar], = 1 # ^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#775 + # source://prism//lib/prism/translation/ruby_parser.rb#920 def visit_index_target_node(node); end + # ``` # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#805 + # source://prism//lib/prism/translation/ruby_parser.rb#958 def visit_instance_variable_and_write_node(node); end + # ``` # ^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#799 + # source://prism//lib/prism/translation/ruby_parser.rb#950 def visit_instance_variable_operator_write_node(node); end + # ``` # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#811 + # source://prism//lib/prism/translation/ruby_parser.rb#966 def visit_instance_variable_or_write_node(node); end + # ``` # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#784 + # source://prism//lib/prism/translation/ruby_parser.rb#931 def visit_instance_variable_read_node(node); end + # ``` # @foo, = bar # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#817 + # source://prism//lib/prism/translation/ruby_parser.rb#974 def visit_instance_variable_target_node(node); end + # ``` # ^^^^^^^^ # # @foo, @bar = 1 # ^^^^ ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#793 + # source://prism//lib/prism/translation/ruby_parser.rb#942 def visit_instance_variable_write_node(node); end + # ``` # 1 # ^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#823 + # source://prism//lib/prism/translation/ruby_parser.rb#982 def visit_integer_node(node); end + # ``` # if /foo #{bar}/ then end # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#829 + # source://prism//lib/prism/translation/ruby_parser.rb#990 def visit_interpolated_match_last_line_node(node); end + # ``` # /foo #{bar}/ # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#846 + # source://prism//lib/prism/translation/ruby_parser.rb#1009 def visit_interpolated_regular_expression_node(node); end + # ``` # "foo #{bar}" # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#861 + # source://prism//lib/prism/translation/ruby_parser.rb#1026 def visit_interpolated_string_node(node); end + # ``` # :"foo #{bar}" # ^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#868 + # source://prism//lib/prism/translation/ruby_parser.rb#1035 def visit_interpolated_symbol_node(node); end + # ``` # `foo #{bar}` # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#875 + # source://prism//lib/prism/translation/ruby_parser.rb#1044 def visit_interpolated_x_string_node(node); end + # ``` # -> { it } # ^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#956 + # source://prism//lib/prism/translation/ruby_parser.rb#1127 def visit_it_local_variable_read_node(node); end + # ``` # foo(bar: baz) # ^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#962 + # source://prism//lib/prism/translation/ruby_parser.rb#1135 def visit_keyword_hash_node(node); end + # ``` # def foo(**bar); end # ^^^^^ # # def foo(**); end # ^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#971 + # source://prism//lib/prism/translation/ruby_parser.rb#1146 def visit_keyword_rest_parameter_node(node); end # -> {} # - # source://prism//lib/prism/translation/ruby_parser.rb#976 + # source://prism//lib/prism/translation/ruby_parser.rb#1151 def visit_lambda_node(node); end + # ``` # foo &&= bar # ^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1019 + # source://prism//lib/prism/translation/ruby_parser.rb#1202 def visit_local_variable_and_write_node(node); end + # ``` # foo += bar # ^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1013 + # source://prism//lib/prism/translation/ruby_parser.rb#1194 def visit_local_variable_operator_write_node(node); end + # ``` # foo ||= bar # ^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1025 + # source://prism//lib/prism/translation/ruby_parser.rb#1210 def visit_local_variable_or_write_node(node); end + # ``` # foo # ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#994 + # source://prism//lib/prism/translation/ruby_parser.rb#1171 def visit_local_variable_read_node(node); end + # ``` # foo, = bar # ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1031 + # source://prism//lib/prism/translation/ruby_parser.rb#1218 def visit_local_variable_target_node(node); end + # ``` # foo = 1 # ^^^^^^^ # # foo, bar = 1 # ^^^ ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1007 + # source://prism//lib/prism/translation/ruby_parser.rb#1186 def visit_local_variable_write_node(node); end + # ``` # if /foo/ then end # ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1037 + # source://prism//lib/prism/translation/ruby_parser.rb#1226 def visit_match_last_line_node(node); end + # ``` # foo in bar # ^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1043 + # source://prism//lib/prism/translation/ruby_parser.rb#1234 def visit_match_predicate_node(node); end + # ``` # foo => bar # ^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1049 + # source://prism//lib/prism/translation/ruby_parser.rb#1242 def visit_match_required_node(node); end + # ``` # /(?foo)/ =~ bar # ^^^^^^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1055 + # source://prism//lib/prism/translation/ruby_parser.rb#1250 def visit_match_write_node(node); end # A node that is missing from the syntax tree. This is only used in the # case of a syntax error. The parser gem doesn't have such a concept, so # we invent our own here. # - # source://prism//lib/prism/translation/ruby_parser.rb#1062 + # source://prism//lib/prism/translation/ruby_parser.rb#1257 def visit_missing_node(node); end + # ``` # module Foo; end # ^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1068 + # source://prism//lib/prism/translation/ruby_parser.rb#1265 def visit_module_node(node); end + # ``` # foo, bar = baz # ^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1088 + # source://prism//lib/prism/translation/ruby_parser.rb#1287 def visit_multi_target_node(node); end + # ``` # foo, bar = baz # ^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1098 + # source://prism//lib/prism/translation/ruby_parser.rb#1299 def visit_multi_write_node(node); end + # ``` # next # ^^^^ # # next foo # ^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1122 + # source://prism//lib/prism/translation/ruby_parser.rb#1325 def visit_next_node(node); end + # ``` # nil # ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1135 + # source://prism//lib/prism/translation/ruby_parser.rb#1340 def visit_nil_node(node); end + # ``` # def foo(**nil); end # ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1141 + # source://prism//lib/prism/translation/ruby_parser.rb#1348 def visit_no_keywords_parameter_node(node); end + # ``` # -> { _1 + _2 } # ^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1147 + # source://prism//lib/prism/translation/ruby_parser.rb#1356 def visit_numbered_parameters_node(node); end + # ``` # $1 # ^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1153 + # source://prism//lib/prism/translation/ruby_parser.rb#1364 def visit_numbered_reference_read_node(node); end + # ``` # def foo(bar: baz); end # ^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1159 + # source://prism//lib/prism/translation/ruby_parser.rb#1372 def visit_optional_keyword_parameter_node(node); end + # ``` # def foo(bar = 1); end # ^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1165 + # source://prism//lib/prism/translation/ruby_parser.rb#1380 def visit_optional_parameter_node(node); end + # ``` # a or b # ^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1171 + # source://prism//lib/prism/translation/ruby_parser.rb#1388 def visit_or_node(node); end + # ``` # def foo(bar, *baz); end # ^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1189 + # source://prism//lib/prism/translation/ruby_parser.rb#1408 def visit_parameters_node(node); end + # ``` # () # ^^ # # (1) # ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1227 + # source://prism//lib/prism/translation/ruby_parser.rb#1450 def visit_parentheses_node(node); end + # ``` # foo => ^(bar) # ^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1237 + # source://prism//lib/prism/translation/ruby_parser.rb#1462 def visit_pinned_expression_node(node); end + # ``` # foo = 1 and bar => ^foo # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1243 + # source://prism//lib/prism/translation/ruby_parser.rb#1470 def visit_pinned_variable_node(node); end # END {} # - # source://prism//lib/prism/translation/ruby_parser.rb#1252 + # source://prism//lib/prism/translation/ruby_parser.rb#1479 def visit_post_execution_node(node); end # BEGIN {} # - # source://prism//lib/prism/translation/ruby_parser.rb#1257 + # source://prism//lib/prism/translation/ruby_parser.rb#1484 def visit_pre_execution_node(node); end # The top-level program node. # - # source://prism//lib/prism/translation/ruby_parser.rb#1262 + # source://prism//lib/prism/translation/ruby_parser.rb#1489 def visit_program_node(node); end + # ``` # 0..5 # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1268 + # source://prism//lib/prism/translation/ruby_parser.rb#1497 def visit_range_node(node); end + # ``` # 1r # ^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1290 + # source://prism//lib/prism/translation/ruby_parser.rb#1521 def visit_rational_node(node); end + # ``` # redo # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1296 + # source://prism//lib/prism/translation/ruby_parser.rb#1529 def visit_redo_node(node); end + # ``` # /foo/ # ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1302 + # source://prism//lib/prism/translation/ruby_parser.rb#1537 def visit_regular_expression_node(node); end + # ``` # def foo(bar:); end # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1308 + # source://prism//lib/prism/translation/ruby_parser.rb#1545 def visit_required_keyword_parameter_node(node); end + # ``` # def foo(bar); end # ^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1314 + # source://prism//lib/prism/translation/ruby_parser.rb#1553 def visit_required_parameter_node(node); end + # ``` # foo rescue bar # ^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1320 + # source://prism//lib/prism/translation/ruby_parser.rb#1561 def visit_rescue_modifier_node(node); end + # ``` # begin; rescue; end # ^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1326 + # source://prism//lib/prism/translation/ruby_parser.rb#1569 def visit_rescue_node(node); end + # ``` # def foo(*bar); end # ^^^^ # # def foo(*); end # ^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1346 + # source://prism//lib/prism/translation/ruby_parser.rb#1591 def visit_rest_parameter_node(node); end + # ``` # retry # ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1352 + # source://prism//lib/prism/translation/ruby_parser.rb#1599 def visit_retry_node(node); end + # ``` # return # ^^^^^^ # # return 1 # ^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1361 + # source://prism//lib/prism/translation/ruby_parser.rb#1610 def visit_return_node(node); end + # ``` # self # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1374 + # source://prism//lib/prism/translation/ruby_parser.rb#1625 def visit_self_node(node); end # A shareable constant. # - # source://prism//lib/prism/translation/ruby_parser.rb#1379 + # source://prism//lib/prism/translation/ruby_parser.rb#1630 def visit_shareable_constant_node(node); end + # ``` # class << self; end # ^^^^^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1385 + # source://prism//lib/prism/translation/ruby_parser.rb#1638 def visit_singleton_class_node(node); end + # ``` # __ENCODING__ # ^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1393 + # source://prism//lib/prism/translation/ruby_parser.rb#1648 def visit_source_encoding_node(node); end + # ``` # __FILE__ # ^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1400 + # source://prism//lib/prism/translation/ruby_parser.rb#1657 def visit_source_file_node(node); end + # ``` # __LINE__ # ^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1406 + # source://prism//lib/prism/translation/ruby_parser.rb#1665 def visit_source_line_node(node); end + # ``` # foo(*bar) # ^^^^ # @@ -39306,91 +39605,114 @@ class Prism::Translation::RubyParser::Compiler < ::Prism::Compiler # # def foo(*); bar(*); end # ^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1418 + # source://prism//lib/prism/translation/ruby_parser.rb#1679 def visit_splat_node(node); end # A list of statements. # - # source://prism//lib/prism/translation/ruby_parser.rb#1427 + # source://prism//lib/prism/translation/ruby_parser.rb#1688 def visit_statements_node(node); end + # ``` # "foo" # ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1439 + # source://prism//lib/prism/translation/ruby_parser.rb#1702 def visit_string_node(node); end + # ``` # super(foo) # ^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1452 + # source://prism//lib/prism/translation/ruby_parser.rb#1717 def visit_super_node(node); end + # ``` # :foo # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1466 + # source://prism//lib/prism/translation/ruby_parser.rb#1733 def visit_symbol_node(node); end + # ``` # true # ^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1472 + # source://prism//lib/prism/translation/ruby_parser.rb#1741 def visit_true_node(node); end + # ``` # undef foo # ^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1478 + # source://prism//lib/prism/translation/ruby_parser.rb#1749 def visit_undef_node(node); end + # ``` # unless foo; bar end # ^^^^^^^^^^^^^^^^^^^ # # bar unless foo # ^^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1488 + # source://prism//lib/prism/translation/ruby_parser.rb#1761 def visit_unless_node(node); end + # ``` # until foo; bar end # ^^^^^^^^^^^^^^^^^ # # bar until foo # ^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1497 + # source://prism//lib/prism/translation/ruby_parser.rb#1772 def visit_until_node(node); end + # ``` # case foo; when bar; end # ^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1503 + # source://prism//lib/prism/translation/ruby_parser.rb#1780 def visit_when_node(node); end + # ``` # while foo; bar end # ^^^^^^^^^^^^^^^^^^ # # bar while foo # ^^^^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1512 + # source://prism//lib/prism/translation/ruby_parser.rb#1791 def visit_while_node(node); end + # ``` # `foo` # ^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1518 + # source://prism//lib/prism/translation/ruby_parser.rb#1799 def visit_x_string_node(node); end + # ``` # yield # ^^^^^ # # yield 1 # ^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1534 + # source://prism//lib/prism/translation/ruby_parser.rb#1817 def visit_yield_node(node); end private @@ -39398,12 +39720,12 @@ class Prism::Translation::RubyParser::Compiler < ::Prism::Compiler # If a class variable is written within a method definition, it has a # different type than everywhere else. # - # source://prism//lib/prism/translation/ruby_parser.rb#420 + # source://prism//lib/prism/translation/ruby_parser.rb#481 def class_variable_write_type; end # Create a new compiler with the given options. # - # source://prism//lib/prism/translation/ruby_parser.rb#1541 + # source://prism//lib/prism/translation/ruby_parser.rb#1824 def copy_compiler(in_def: T.unsafe(nil), in_pattern: T.unsafe(nil)); end # Call nodes with operators following them will either be op_asgn or @@ -39412,53 +39734,55 @@ class Prism::Translation::RubyParser::Compiler < ::Prism::Compiler # # @return [Boolean] # - # source://prism//lib/prism/translation/ruby_parser.rb#325 + # source://prism//lib/prism/translation/ruby_parser.rb#364 def op_asgn?(node); end # Call nodes with operators following them can use &. as an operator, # which changes their type by prefixing "safe_". # - # source://prism//lib/prism/translation/ruby_parser.rb#331 + # source://prism//lib/prism/translation/ruby_parser.rb#370 def op_asgn_type(node, type); end # Create a new Sexp object from the given prism node and arguments. # - # source://prism//lib/prism/translation/ruby_parser.rb#1546 + # source://prism//lib/prism/translation/ruby_parser.rb#1829 def s(node, *arguments); end # Visit a block node, which will modify the AST by wrapping the given # visited node in an iter node. # - # source://prism//lib/prism/translation/ruby_parser.rb#1556 + # source://prism//lib/prism/translation/ruby_parser.rb#1839 def visit_block(node, sexp, block); end + # ``` # def foo((bar, baz)); end # ^^^^^^^^^^ + # ``` # - # source://prism//lib/prism/translation/ruby_parser.rb#1204 + # source://prism//lib/prism/translation/ruby_parser.rb#1425 def visit_destructured_parameter(node); end # Visit the interpolated content of the string-like node. # - # source://prism//lib/prism/translation/ruby_parser.rb#882 + # source://prism//lib/prism/translation/ruby_parser.rb#1051 def visit_interpolated_parts(parts); end # Pattern constants get wrapped in another layer of :const. # - # source://prism//lib/prism/translation/ruby_parser.rb#1577 + # source://prism//lib/prism/translation/ruby_parser.rb#1860 def visit_pattern_constant(node); end # If the bounds of a range node are empty parentheses, then they do not # get replaced by their usual s(:nil), but instead are s(:begin). # - # source://prism//lib/prism/translation/ruby_parser.rb#1280 + # source://prism//lib/prism/translation/ruby_parser.rb#1509 def visit_range_bounds_node(node); end # Visit the value of a write, which will be on the right-hand side of # a write operator. Because implicit arrays can have splats, those could # potentially be wrapped in an svalue node. # - # source://prism//lib/prism/translation/ruby_parser.rb#1591 + # source://prism//lib/prism/translation/ruby_parser.rb#1874 def visit_write_value(node); end end @@ -39467,62 +39791,62 @@ end # true # ^^^^ # -# source://prism//lib/prism/node.rb#17368 +# source://prism//lib/prism/node.rb#17539 class Prism::TrueNode < ::Prism::Node # Initialize a new TrueNode node. # # @return [TrueNode] a new instance of TrueNode # - # source://prism//lib/prism/node.rb#17370 + # source://prism//lib/prism/node.rb#17541 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#17427 + # source://prism//lib/prism/node.rb#17598 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#17378 + # source://prism//lib/prism/node.rb#17549 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17383 + # source://prism//lib/prism/node.rb#17554 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#17393 + # source://prism//lib/prism/node.rb#17564 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#17388 + # source://prism//lib/prism/node.rb#17559 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer) -> TrueNode # - # source://prism//lib/prism/node.rb#17398 + # source://prism//lib/prism/node.rb#17569 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::TrueNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17383 + # source://prism//lib/prism/node.rb#17554 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location } # - # source://prism//lib/prism/node.rb#17406 + # source://prism//lib/prism/node.rb#17577 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -39531,20 +39855,20 @@ class Prism::TrueNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#17411 + # source://prism//lib/prism/node.rb#17582 sig { override.returns(String) } def inspect; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#17416 + # source://prism//lib/prism/node.rb#17587 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#17421 + # source://prism//lib/prism/node.rb#17592 def type; end end end @@ -39554,13 +39878,13 @@ end # undef :foo, :bar, :baz # ^^^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#17436 +# source://prism//lib/prism/node.rb#17607 class Prism::UndefNode < ::Prism::Node # Initialize a new UndefNode node. # # @return [UndefNode] a new instance of UndefNode # - # source://prism//lib/prism/node.rb#17438 + # source://prism//lib/prism/node.rb#17609 sig do params( source: Prism::Source, @@ -39576,36 +39900,36 @@ class Prism::UndefNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#17518 + # source://prism//lib/prism/node.rb#17689 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#17448 + # source://prism//lib/prism/node.rb#17619 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17453 + # source://prism//lib/prism/node.rb#17624 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#17463 + # source://prism//lib/prism/node.rb#17634 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#17458 + # source://prism//lib/prism/node.rb#17629 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?names: Array[SymbolNode | InterpolatedSymbolNode], ?keyword_loc: Location) -> UndefNode # - # source://prism//lib/prism/node.rb#17468 + # source://prism//lib/prism/node.rb#17639 sig do params( node_id: Integer, @@ -39617,16 +39941,16 @@ class Prism::UndefNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), names: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17453 + # source://prism//lib/prism/node.rb#17624 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, names: Array[SymbolNode | InterpolatedSymbolNode], keyword_loc: Location } # - # source://prism//lib/prism/node.rb#17476 + # source://prism//lib/prism/node.rb#17647 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -39635,44 +39959,44 @@ class Prism::UndefNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#17502 + # source://prism//lib/prism/node.rb#17673 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#17497 + # source://prism//lib/prism/node.rb#17668 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#17484 + # source://prism//lib/prism/node.rb#17655 sig { returns(Prism::Location) } def keyword_loc; end # attr_reader names: Array[SymbolNode | InterpolatedSymbolNode] # - # source://prism//lib/prism/node.rb#17481 + # source://prism//lib/prism/node.rb#17652 sig { returns(T::Array[T.any(Prism::SymbolNode, Prism::InterpolatedSymbolNode)]) } def names; end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17492 + # source://prism//lib/prism/node.rb#17663 def save_keyword_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#17507 + # source://prism//lib/prism/node.rb#17678 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#17512 + # source://prism//lib/prism/node.rb#17683 def type; end end end @@ -39685,13 +40009,13 @@ end # unless foo then bar end # ^^^^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#17533 +# source://prism//lib/prism/node.rb#17704 class Prism::UnlessNode < ::Prism::Node # Initialize a new UnlessNode node. # # @return [UnlessNode] a new instance of UnlessNode # - # source://prism//lib/prism/node.rb#17535 + # source://prism//lib/prism/node.rb#17706 sig do params( source: Prism::Source, @@ -39711,42 +40035,42 @@ class Prism::UnlessNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#17702 + # source://prism//lib/prism/node.rb#17873 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#17549 + # source://prism//lib/prism/node.rb#17720 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17554 + # source://prism//lib/prism/node.rb#17725 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#17568 + # source://prism//lib/prism/node.rb#17739 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#17559 + # source://prism//lib/prism/node.rb#17730 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # Returns the else clause of the unless node. This method is deprecated in # favor of #else_clause. # - # source://prism//lib/prism/node_ext.rb#503 + # source://prism//lib/prism/node_ext.rb#506 def consequent; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?keyword_loc: Location, ?predicate: Prism::node, ?then_keyword_loc: Location?, ?statements: StatementsNode?, ?else_clause: ElseNode?, ?end_keyword_loc: Location?) -> UnlessNode # - # source://prism//lib/prism/node.rb#17573 + # source://prism//lib/prism/node.rb#17744 sig do params( node_id: Integer, @@ -39762,16 +40086,16 @@ class Prism::UnlessNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), predicate: T.unsafe(nil), then_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), else_clause: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17554 + # source://prism//lib/prism/node.rb#17725 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, predicate: Prism::node, then_keyword_loc: Location?, statements: StatementsNode?, else_clause: ElseNode?, end_keyword_loc: Location? } # - # source://prism//lib/prism/node.rb#17581 + # source://prism//lib/prism/node.rb#17752 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -39780,13 +40104,13 @@ class Prism::UnlessNode < ::Prism::Node # unless cond then bar else baz end # ^^^^^^^^ # - # source://prism//lib/prism/node.rb#17646 + # source://prism//lib/prism/node.rb#17817 sig { returns(T.nilable(Prism::ElseNode)) } def else_clause; end # def end_keyword: () -> String? # - # source://prism//lib/prism/node.rb#17681 + # source://prism//lib/prism/node.rb#17852 sig { returns(T.nilable(String)) } def end_keyword; end @@ -39795,7 +40119,7 @@ class Prism::UnlessNode < ::Prism::Node # unless cond then bar end # ^^^ # - # source://prism//lib/prism/node.rb#17652 + # source://prism//lib/prism/node.rb#17823 sig { returns(T.nilable(Prism::Location)) } def end_keyword_loc; end @@ -39804,13 +40128,13 @@ class Prism::UnlessNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#17686 + # source://prism//lib/prism/node.rb#17857 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#17671 + # source://prism//lib/prism/node.rb#17842 sig { returns(String) } def keyword; end @@ -39822,11 +40146,11 @@ class Prism::UnlessNode < ::Prism::Node # bar unless cond # ^^^^^^ # - # source://prism//lib/prism/node.rb#17592 + # source://prism//lib/prism/node.rb#17763 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/parse_result/newlines.rb#97 + # source://prism//lib/prism/parse_result/newlines.rb#98 def newline_flag!(lines); end # The condition to be evaluated for the unless expression. It can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). @@ -39837,26 +40161,26 @@ class Prism::UnlessNode < ::Prism::Node # bar unless cond # ^^^^ # - # source://prism//lib/prism/node.rb#17611 + # source://prism//lib/prism/node.rb#17782 sig { returns(Prism::Node) } def predicate; end # Save the end_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17666 + # source://prism//lib/prism/node.rb#17837 def save_end_keyword_loc(repository); end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17600 + # source://prism//lib/prism/node.rb#17771 def save_keyword_loc(repository); end # Save the then_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17631 + # source://prism//lib/prism/node.rb#17802 def save_then_keyword_loc(repository); end # The body of statements that will executed if the unless condition is @@ -39865,13 +40189,13 @@ class Prism::UnlessNode < ::Prism::Node # unless cond then bar end # ^^^ # - # source://prism//lib/prism/node.rb#17640 + # source://prism//lib/prism/node.rb#17811 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # def then_keyword: () -> String? # - # source://prism//lib/prism/node.rb#17676 + # source://prism//lib/prism/node.rb#17847 sig { returns(T.nilable(String)) } def then_keyword; end @@ -39880,20 +40204,20 @@ class Prism::UnlessNode < ::Prism::Node # unless cond then bar end # ^^^^ # - # source://prism//lib/prism/node.rb#17617 + # source://prism//lib/prism/node.rb#17788 sig { returns(T.nilable(Prism::Location)) } def then_keyword_loc; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#17691 + # source://prism//lib/prism/node.rb#17862 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#17696 + # source://prism//lib/prism/node.rb#17867 def type; end end end @@ -39906,13 +40230,13 @@ end # until foo do bar end # ^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#17720 +# source://prism//lib/prism/node.rb#17891 class Prism::UntilNode < ::Prism::Node # Initialize a new UntilNode node. # # @return [UntilNode] a new instance of UntilNode # - # source://prism//lib/prism/node.rb#17722 + # source://prism//lib/prism/node.rb#17893 sig do params( source: Prism::Source, @@ -39931,12 +40255,12 @@ class Prism::UntilNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#17864 + # source://prism//lib/prism/node.rb#18035 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#17735 + # source://prism//lib/prism/node.rb#17906 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -39944,43 +40268,43 @@ class Prism::UntilNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#17771 + # source://prism//lib/prism/node.rb#17942 sig { returns(T::Boolean) } def begin_modifier?; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17740 + # source://prism//lib/prism/node.rb#17911 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String? # - # source://prism//lib/prism/node.rb#17843 + # source://prism//lib/prism/node.rb#18014 sig { returns(T.nilable(String)) } def closing; end # attr_reader closing_loc: Location? # - # source://prism//lib/prism/node.rb#17808 + # source://prism//lib/prism/node.rb#17979 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#17753 + # source://prism//lib/prism/node.rb#17924 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#17745 + # source://prism//lib/prism/node.rb#17916 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?keyword_loc: Location, ?do_keyword_loc: Location?, ?closing_loc: Location?, ?predicate: Prism::node, ?statements: StatementsNode?) -> UntilNode # - # source://prism//lib/prism/node.rb#17758 + # source://prism//lib/prism/node.rb#17929 sig do params( node_id: Integer, @@ -39995,28 +40319,28 @@ class Prism::UntilNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), do_keyword_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), predicate: T.unsafe(nil), statements: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17740 + # source://prism//lib/prism/node.rb#17911 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, do_keyword_loc: Location?, closing_loc: Location?, predicate: Prism::node, statements: StatementsNode? } # - # source://prism//lib/prism/node.rb#17766 + # source://prism//lib/prism/node.rb#17937 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # def do_keyword: () -> String? # - # source://prism//lib/prism/node.rb#17838 + # source://prism//lib/prism/node.rb#18009 sig { returns(T.nilable(String)) } def do_keyword; end # attr_reader do_keyword_loc: Location? # - # source://prism//lib/prism/node.rb#17789 + # source://prism//lib/prism/node.rb#17960 sig { returns(T.nilable(Prism::Location)) } def do_keyword_loc; end @@ -40025,65 +40349,65 @@ class Prism::UntilNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#17848 + # source://prism//lib/prism/node.rb#18019 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#17833 + # source://prism//lib/prism/node.rb#18004 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#17776 + # source://prism//lib/prism/node.rb#17947 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/parse_result/newlines.rb#103 + # source://prism//lib/prism/parse_result/newlines.rb#104 def newline_flag!(lines); end # attr_reader predicate: Prism::node # - # source://prism//lib/prism/node.rb#17827 + # source://prism//lib/prism/node.rb#17998 sig { returns(Prism::Node) } def predicate; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17822 + # source://prism//lib/prism/node.rb#17993 def save_closing_loc(repository); end # Save the do_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17803 + # source://prism//lib/prism/node.rb#17974 def save_do_keyword_loc(repository); end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17784 + # source://prism//lib/prism/node.rb#17955 def save_keyword_loc(repository); end # attr_reader statements: StatementsNode? # - # source://prism//lib/prism/node.rb#17830 + # source://prism//lib/prism/node.rb#18001 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#17853 + # source://prism//lib/prism/node.rb#18024 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#17858 + # source://prism//lib/prism/node.rb#18029 def type; end end end @@ -40101,7 +40425,7 @@ Prism::VERSION = T.let(T.unsafe(nil), String) # # class FooCalls < Prism::Visitor # def visit_call_node(node) -# if node.name == "foo" +# if node.name == :foo # # Do something with the node # end # @@ -40110,911 +40434,911 @@ Prism::VERSION = T.let(T.unsafe(nil), String) # end # end # -# source://prism//lib/prism/visitor.rb#54 +# source://prism//lib/prism/visitor.rb#57 class Prism::Visitor < ::Prism::BasicVisitor # Visit a AliasGlobalVariableNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#59 sig { params(node: Prism::AliasGlobalVariableNode).void } def visit_alias_global_variable_node(node); end # Visit a AliasMethodNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#64 sig { params(node: Prism::AliasMethodNode).void } def visit_alias_method_node(node); end # Visit a AlternationPatternNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#69 sig { params(node: Prism::AlternationPatternNode).void } def visit_alternation_pattern_node(node); end # Visit a AndNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#74 sig { params(node: Prism::AndNode).void } def visit_and_node(node); end # Visit a ArgumentsNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#79 sig { params(node: Prism::ArgumentsNode).void } def visit_arguments_node(node); end # Visit a ArrayNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#84 sig { params(node: Prism::ArrayNode).void } def visit_array_node(node); end # Visit a ArrayPatternNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#89 sig { params(node: Prism::ArrayPatternNode).void } def visit_array_pattern_node(node); end # Visit a AssocNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#94 sig { params(node: Prism::AssocNode).void } def visit_assoc_node(node); end # Visit a AssocSplatNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#99 sig { params(node: Prism::AssocSplatNode).void } def visit_assoc_splat_node(node); end # Visit a BackReferenceReadNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#104 sig { params(node: Prism::BackReferenceReadNode).void } def visit_back_reference_read_node(node); end # Visit a BeginNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#109 sig { params(node: Prism::BeginNode).void } def visit_begin_node(node); end # Visit a BlockArgumentNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#114 sig { params(node: Prism::BlockArgumentNode).void } def visit_block_argument_node(node); end # Visit a BlockLocalVariableNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#119 sig { params(node: Prism::BlockLocalVariableNode).void } def visit_block_local_variable_node(node); end # Visit a BlockNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#124 sig { params(node: Prism::BlockNode).void } def visit_block_node(node); end # Visit a BlockParameterNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#129 sig { params(node: Prism::BlockParameterNode).void } def visit_block_parameter_node(node); end # Visit a BlockParametersNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#134 sig { params(node: Prism::BlockParametersNode).void } def visit_block_parameters_node(node); end # Visit a BreakNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#139 sig { params(node: Prism::BreakNode).void } def visit_break_node(node); end # Visit a CallAndWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#144 sig { params(node: Prism::CallAndWriteNode).void } def visit_call_and_write_node(node); end # Visit a CallNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#149 sig { params(node: Prism::CallNode).void } def visit_call_node(node); end # Visit a CallOperatorWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#154 sig { params(node: Prism::CallOperatorWriteNode).void } def visit_call_operator_write_node(node); end # Visit a CallOrWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#159 sig { params(node: Prism::CallOrWriteNode).void } def visit_call_or_write_node(node); end # Visit a CallTargetNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#164 sig { params(node: Prism::CallTargetNode).void } def visit_call_target_node(node); end # Visit a CapturePatternNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#169 sig { params(node: Prism::CapturePatternNode).void } def visit_capture_pattern_node(node); end # Visit a CaseMatchNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#174 sig { params(node: Prism::CaseMatchNode).void } def visit_case_match_node(node); end # Visit a CaseNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#179 sig { params(node: Prism::CaseNode).void } def visit_case_node(node); end # Visit a ClassNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#184 sig { params(node: Prism::ClassNode).void } def visit_class_node(node); end # Visit a ClassVariableAndWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#189 sig { params(node: Prism::ClassVariableAndWriteNode).void } def visit_class_variable_and_write_node(node); end # Visit a ClassVariableOperatorWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#194 sig { params(node: Prism::ClassVariableOperatorWriteNode).void } def visit_class_variable_operator_write_node(node); end # Visit a ClassVariableOrWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#199 sig { params(node: Prism::ClassVariableOrWriteNode).void } def visit_class_variable_or_write_node(node); end # Visit a ClassVariableReadNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#204 sig { params(node: Prism::ClassVariableReadNode).void } def visit_class_variable_read_node(node); end # Visit a ClassVariableTargetNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#209 sig { params(node: Prism::ClassVariableTargetNode).void } def visit_class_variable_target_node(node); end # Visit a ClassVariableWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#214 sig { params(node: Prism::ClassVariableWriteNode).void } def visit_class_variable_write_node(node); end # Visit a ConstantAndWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#219 sig { params(node: Prism::ConstantAndWriteNode).void } def visit_constant_and_write_node(node); end # Visit a ConstantOperatorWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#224 sig { params(node: Prism::ConstantOperatorWriteNode).void } def visit_constant_operator_write_node(node); end # Visit a ConstantOrWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#229 sig { params(node: Prism::ConstantOrWriteNode).void } def visit_constant_or_write_node(node); end # Visit a ConstantPathAndWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#234 sig { params(node: Prism::ConstantPathAndWriteNode).void } def visit_constant_path_and_write_node(node); end # Visit a ConstantPathNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#239 sig { params(node: Prism::ConstantPathNode).void } def visit_constant_path_node(node); end # Visit a ConstantPathOperatorWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#244 sig { params(node: Prism::ConstantPathOperatorWriteNode).void } def visit_constant_path_operator_write_node(node); end # Visit a ConstantPathOrWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#249 sig { params(node: Prism::ConstantPathOrWriteNode).void } def visit_constant_path_or_write_node(node); end # Visit a ConstantPathTargetNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#254 sig { params(node: Prism::ConstantPathTargetNode).void } def visit_constant_path_target_node(node); end # Visit a ConstantPathWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#259 sig { params(node: Prism::ConstantPathWriteNode).void } def visit_constant_path_write_node(node); end # Visit a ConstantReadNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#264 sig { params(node: Prism::ConstantReadNode).void } def visit_constant_read_node(node); end # Visit a ConstantTargetNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#269 sig { params(node: Prism::ConstantTargetNode).void } def visit_constant_target_node(node); end # Visit a ConstantWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#274 sig { params(node: Prism::ConstantWriteNode).void } def visit_constant_write_node(node); end # Visit a DefNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#279 sig { params(node: Prism::DefNode).void } def visit_def_node(node); end # Visit a DefinedNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#284 sig { params(node: Prism::DefinedNode).void } def visit_defined_node(node); end # Visit a ElseNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#289 sig { params(node: Prism::ElseNode).void } def visit_else_node(node); end # Visit a EmbeddedStatementsNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#294 sig { params(node: Prism::EmbeddedStatementsNode).void } def visit_embedded_statements_node(node); end # Visit a EmbeddedVariableNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#299 sig { params(node: Prism::EmbeddedVariableNode).void } def visit_embedded_variable_node(node); end # Visit a EnsureNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#304 sig { params(node: Prism::EnsureNode).void } def visit_ensure_node(node); end # Visit a FalseNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#309 sig { params(node: Prism::FalseNode).void } def visit_false_node(node); end # Visit a FindPatternNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#314 sig { params(node: Prism::FindPatternNode).void } def visit_find_pattern_node(node); end # Visit a FlipFlopNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#319 sig { params(node: Prism::FlipFlopNode).void } def visit_flip_flop_node(node); end # Visit a FloatNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#324 sig { params(node: Prism::FloatNode).void } def visit_float_node(node); end # Visit a ForNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#329 sig { params(node: Prism::ForNode).void } def visit_for_node(node); end # Visit a ForwardingArgumentsNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#334 sig { params(node: Prism::ForwardingArgumentsNode).void } def visit_forwarding_arguments_node(node); end # Visit a ForwardingParameterNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#339 sig { params(node: Prism::ForwardingParameterNode).void } def visit_forwarding_parameter_node(node); end # Visit a ForwardingSuperNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#344 sig { params(node: Prism::ForwardingSuperNode).void } def visit_forwarding_super_node(node); end # Visit a GlobalVariableAndWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#349 sig { params(node: Prism::GlobalVariableAndWriteNode).void } def visit_global_variable_and_write_node(node); end # Visit a GlobalVariableOperatorWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#354 sig { params(node: Prism::GlobalVariableOperatorWriteNode).void } def visit_global_variable_operator_write_node(node); end # Visit a GlobalVariableOrWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#359 sig { params(node: Prism::GlobalVariableOrWriteNode).void } def visit_global_variable_or_write_node(node); end # Visit a GlobalVariableReadNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#364 sig { params(node: Prism::GlobalVariableReadNode).void } def visit_global_variable_read_node(node); end # Visit a GlobalVariableTargetNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#369 sig { params(node: Prism::GlobalVariableTargetNode).void } def visit_global_variable_target_node(node); end # Visit a GlobalVariableWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#374 sig { params(node: Prism::GlobalVariableWriteNode).void } def visit_global_variable_write_node(node); end # Visit a HashNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#379 sig { params(node: Prism::HashNode).void } def visit_hash_node(node); end # Visit a HashPatternNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#384 sig { params(node: Prism::HashPatternNode).void } def visit_hash_pattern_node(node); end # Visit a IfNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#389 sig { params(node: Prism::IfNode).void } def visit_if_node(node); end # Visit a ImaginaryNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#394 sig { params(node: Prism::ImaginaryNode).void } def visit_imaginary_node(node); end # Visit a ImplicitNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#399 sig { params(node: Prism::ImplicitNode).void } def visit_implicit_node(node); end # Visit a ImplicitRestNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#404 sig { params(node: Prism::ImplicitRestNode).void } def visit_implicit_rest_node(node); end # Visit a InNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#409 sig { params(node: Prism::InNode).void } def visit_in_node(node); end # Visit a IndexAndWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#414 sig { params(node: Prism::IndexAndWriteNode).void } def visit_index_and_write_node(node); end # Visit a IndexOperatorWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#419 sig { params(node: Prism::IndexOperatorWriteNode).void } def visit_index_operator_write_node(node); end # Visit a IndexOrWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#424 sig { params(node: Prism::IndexOrWriteNode).void } def visit_index_or_write_node(node); end # Visit a IndexTargetNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#429 sig { params(node: Prism::IndexTargetNode).void } def visit_index_target_node(node); end # Visit a InstanceVariableAndWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#434 sig { params(node: Prism::InstanceVariableAndWriteNode).void } def visit_instance_variable_and_write_node(node); end # Visit a InstanceVariableOperatorWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#439 sig { params(node: Prism::InstanceVariableOperatorWriteNode).void } def visit_instance_variable_operator_write_node(node); end # Visit a InstanceVariableOrWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#444 sig { params(node: Prism::InstanceVariableOrWriteNode).void } def visit_instance_variable_or_write_node(node); end # Visit a InstanceVariableReadNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#449 sig { params(node: Prism::InstanceVariableReadNode).void } def visit_instance_variable_read_node(node); end # Visit a InstanceVariableTargetNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#454 sig { params(node: Prism::InstanceVariableTargetNode).void } def visit_instance_variable_target_node(node); end # Visit a InstanceVariableWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#459 sig { params(node: Prism::InstanceVariableWriteNode).void } def visit_instance_variable_write_node(node); end # Visit a IntegerNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#464 sig { params(node: Prism::IntegerNode).void } def visit_integer_node(node); end # Visit a InterpolatedMatchLastLineNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#469 sig { params(node: Prism::InterpolatedMatchLastLineNode).void } def visit_interpolated_match_last_line_node(node); end # Visit a InterpolatedRegularExpressionNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#474 sig { params(node: Prism::InterpolatedRegularExpressionNode).void } def visit_interpolated_regular_expression_node(node); end # Visit a InterpolatedStringNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#479 sig { params(node: Prism::InterpolatedStringNode).void } def visit_interpolated_string_node(node); end # Visit a InterpolatedSymbolNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#484 sig { params(node: Prism::InterpolatedSymbolNode).void } def visit_interpolated_symbol_node(node); end # Visit a InterpolatedXStringNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#489 sig { params(node: Prism::InterpolatedXStringNode).void } def visit_interpolated_x_string_node(node); end # Visit a ItLocalVariableReadNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#494 sig { params(node: Prism::ItLocalVariableReadNode).void } def visit_it_local_variable_read_node(node); end # Visit a ItParametersNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#499 sig { params(node: Prism::ItParametersNode).void } def visit_it_parameters_node(node); end # Visit a KeywordHashNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#504 sig { params(node: Prism::KeywordHashNode).void } def visit_keyword_hash_node(node); end # Visit a KeywordRestParameterNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#509 sig { params(node: Prism::KeywordRestParameterNode).void } def visit_keyword_rest_parameter_node(node); end # Visit a LambdaNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#514 sig { params(node: Prism::LambdaNode).void } def visit_lambda_node(node); end # Visit a LocalVariableAndWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#519 sig { params(node: Prism::LocalVariableAndWriteNode).void } def visit_local_variable_and_write_node(node); end # Visit a LocalVariableOperatorWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#524 sig { params(node: Prism::LocalVariableOperatorWriteNode).void } def visit_local_variable_operator_write_node(node); end # Visit a LocalVariableOrWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#529 sig { params(node: Prism::LocalVariableOrWriteNode).void } def visit_local_variable_or_write_node(node); end # Visit a LocalVariableReadNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#534 sig { params(node: Prism::LocalVariableReadNode).void } def visit_local_variable_read_node(node); end # Visit a LocalVariableTargetNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#539 sig { params(node: Prism::LocalVariableTargetNode).void } def visit_local_variable_target_node(node); end # Visit a LocalVariableWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#544 sig { params(node: Prism::LocalVariableWriteNode).void } def visit_local_variable_write_node(node); end # Visit a MatchLastLineNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#549 sig { params(node: Prism::MatchLastLineNode).void } def visit_match_last_line_node(node); end # Visit a MatchPredicateNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#554 sig { params(node: Prism::MatchPredicateNode).void } def visit_match_predicate_node(node); end # Visit a MatchRequiredNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#559 sig { params(node: Prism::MatchRequiredNode).void } def visit_match_required_node(node); end # Visit a MatchWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#564 sig { params(node: Prism::MatchWriteNode).void } def visit_match_write_node(node); end # Visit a MissingNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#569 sig { params(node: Prism::MissingNode).void } def visit_missing_node(node); end # Visit a ModuleNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#574 sig { params(node: Prism::ModuleNode).void } def visit_module_node(node); end # Visit a MultiTargetNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#579 sig { params(node: Prism::MultiTargetNode).void } def visit_multi_target_node(node); end # Visit a MultiWriteNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#584 sig { params(node: Prism::MultiWriteNode).void } def visit_multi_write_node(node); end # Visit a NextNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#589 sig { params(node: Prism::NextNode).void } def visit_next_node(node); end # Visit a NilNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#594 sig { params(node: Prism::NilNode).void } def visit_nil_node(node); end # Visit a NoKeywordsParameterNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#599 sig { params(node: Prism::NoKeywordsParameterNode).void } def visit_no_keywords_parameter_node(node); end # Visit a NumberedParametersNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#604 sig { params(node: Prism::NumberedParametersNode).void } def visit_numbered_parameters_node(node); end # Visit a NumberedReferenceReadNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#609 sig { params(node: Prism::NumberedReferenceReadNode).void } def visit_numbered_reference_read_node(node); end # Visit a OptionalKeywordParameterNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#614 sig { params(node: Prism::OptionalKeywordParameterNode).void } def visit_optional_keyword_parameter_node(node); end # Visit a OptionalParameterNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#619 sig { params(node: Prism::OptionalParameterNode).void } def visit_optional_parameter_node(node); end # Visit a OrNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#624 sig { params(node: Prism::OrNode).void } def visit_or_node(node); end # Visit a ParametersNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#629 sig { params(node: Prism::ParametersNode).void } def visit_parameters_node(node); end # Visit a ParenthesesNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#634 sig { params(node: Prism::ParenthesesNode).void } def visit_parentheses_node(node); end # Visit a PinnedExpressionNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#639 sig { params(node: Prism::PinnedExpressionNode).void } def visit_pinned_expression_node(node); end # Visit a PinnedVariableNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#644 sig { params(node: Prism::PinnedVariableNode).void } def visit_pinned_variable_node(node); end # Visit a PostExecutionNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#649 sig { params(node: Prism::PostExecutionNode).void } def visit_post_execution_node(node); end # Visit a PreExecutionNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#654 sig { params(node: Prism::PreExecutionNode).void } def visit_pre_execution_node(node); end # Visit a ProgramNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#659 sig { params(node: Prism::ProgramNode).void } def visit_program_node(node); end # Visit a RangeNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#664 sig { params(node: Prism::RangeNode).void } def visit_range_node(node); end # Visit a RationalNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#669 sig { params(node: Prism::RationalNode).void } def visit_rational_node(node); end # Visit a RedoNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#674 sig { params(node: Prism::RedoNode).void } def visit_redo_node(node); end # Visit a RegularExpressionNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#679 sig { params(node: Prism::RegularExpressionNode).void } def visit_regular_expression_node(node); end # Visit a RequiredKeywordParameterNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#684 sig { params(node: Prism::RequiredKeywordParameterNode).void } def visit_required_keyword_parameter_node(node); end # Visit a RequiredParameterNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#689 sig { params(node: Prism::RequiredParameterNode).void } def visit_required_parameter_node(node); end # Visit a RescueModifierNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#694 sig { params(node: Prism::RescueModifierNode).void } def visit_rescue_modifier_node(node); end # Visit a RescueNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#699 sig { params(node: Prism::RescueNode).void } def visit_rescue_node(node); end # Visit a RestParameterNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#704 sig { params(node: Prism::RestParameterNode).void } def visit_rest_parameter_node(node); end # Visit a RetryNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#709 sig { params(node: Prism::RetryNode).void } def visit_retry_node(node); end # Visit a ReturnNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#714 sig { params(node: Prism::ReturnNode).void } def visit_return_node(node); end # Visit a SelfNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#719 sig { params(node: Prism::SelfNode).void } def visit_self_node(node); end # Visit a ShareableConstantNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#724 sig { params(node: Prism::ShareableConstantNode).void } def visit_shareable_constant_node(node); end # Visit a SingletonClassNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#729 sig { params(node: Prism::SingletonClassNode).void } def visit_singleton_class_node(node); end # Visit a SourceEncodingNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#734 sig { params(node: Prism::SourceEncodingNode).void } def visit_source_encoding_node(node); end # Visit a SourceFileNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#739 sig { params(node: Prism::SourceFileNode).void } def visit_source_file_node(node); end # Visit a SourceLineNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#744 sig { params(node: Prism::SourceLineNode).void } def visit_source_line_node(node); end # Visit a SplatNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#749 sig { params(node: Prism::SplatNode).void } def visit_splat_node(node); end # Visit a StatementsNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#754 sig { params(node: Prism::StatementsNode).void } def visit_statements_node(node); end # Visit a StringNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#759 sig { params(node: Prism::StringNode).void } def visit_string_node(node); end # Visit a SuperNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#764 sig { params(node: Prism::SuperNode).void } def visit_super_node(node); end # Visit a SymbolNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#769 sig { params(node: Prism::SymbolNode).void } def visit_symbol_node(node); end # Visit a TrueNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#774 sig { params(node: Prism::TrueNode).void } def visit_true_node(node); end # Visit a UndefNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#779 sig { params(node: Prism::UndefNode).void } def visit_undef_node(node); end # Visit a UnlessNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#784 sig { params(node: Prism::UnlessNode).void } def visit_unless_node(node); end # Visit a UntilNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#789 sig { params(node: Prism::UntilNode).void } def visit_until_node(node); end # Visit a WhenNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#794 sig { params(node: Prism::WhenNode).void } def visit_when_node(node); end # Visit a WhileNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#799 sig { params(node: Prism::WhileNode).void } def visit_while_node(node); end # Visit a XStringNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#804 sig { params(node: Prism::XStringNode).void } def visit_x_string_node(node); end # Visit a YieldNode node # - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#809 sig { params(node: Prism::YieldNode).void } def visit_yield_node(node); end end @@ -41026,13 +41350,13 @@ end # ^^^^^^^^^ # end # -# source://prism//lib/prism/node.rb#17881 +# source://prism//lib/prism/node.rb#18052 class Prism::WhenNode < ::Prism::Node # Initialize a new WhenNode node. # # @return [WhenNode] a new instance of WhenNode # - # source://prism//lib/prism/node.rb#17883 + # source://prism//lib/prism/node.rb#18054 sig do params( source: Prism::Source, @@ -41050,42 +41374,42 @@ class Prism::WhenNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#17995 + # source://prism//lib/prism/node.rb#18166 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#17895 + # source://prism//lib/prism/node.rb#18066 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17900 + # source://prism//lib/prism/node.rb#18071 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#17913 + # source://prism//lib/prism/node.rb#18084 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#17905 + # source://prism//lib/prism/node.rb#18076 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # attr_reader conditions: Array[Prism::node] # - # source://prism//lib/prism/node.rb#17944 + # source://prism//lib/prism/node.rb#18115 sig { returns(T::Array[Prism::Node]) } def conditions; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?keyword_loc: Location, ?conditions: Array[Prism::node], ?then_keyword_loc: Location?, ?statements: StatementsNode?) -> WhenNode # - # source://prism//lib/prism/node.rb#17918 + # source://prism//lib/prism/node.rb#18089 sig do params( node_id: Integer, @@ -41099,16 +41423,16 @@ class Prism::WhenNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), conditions: T.unsafe(nil), then_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#17900 + # source://prism//lib/prism/node.rb#18071 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, conditions: Array[Prism::node], then_keyword_loc: Location?, statements: StatementsNode? } # - # source://prism//lib/prism/node.rb#17926 + # source://prism//lib/prism/node.rb#18097 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -41117,62 +41441,62 @@ class Prism::WhenNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#17979 + # source://prism//lib/prism/node.rb#18150 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#17969 + # source://prism//lib/prism/node.rb#18140 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#17931 + # source://prism//lib/prism/node.rb#18102 sig { returns(Prism::Location) } def keyword_loc; end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17939 + # source://prism//lib/prism/node.rb#18110 def save_keyword_loc(repository); end # Save the then_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#17961 + # source://prism//lib/prism/node.rb#18132 def save_then_keyword_loc(repository); end # attr_reader statements: StatementsNode? # - # source://prism//lib/prism/node.rb#17966 + # source://prism//lib/prism/node.rb#18137 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # def then_keyword: () -> String? # - # source://prism//lib/prism/node.rb#17974 + # source://prism//lib/prism/node.rb#18145 sig { returns(T.nilable(String)) } def then_keyword; end # attr_reader then_keyword_loc: Location? # - # source://prism//lib/prism/node.rb#17947 + # source://prism//lib/prism/node.rb#18118 sig { returns(T.nilable(Prism::Location)) } def then_keyword_loc; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#17984 + # source://prism//lib/prism/node.rb#18155 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#17989 + # source://prism//lib/prism/node.rb#18160 def type; end end end @@ -41185,13 +41509,13 @@ end # while foo do bar end # ^^^^^^^^^^^^^^^^^^^^ # -# source://prism//lib/prism/node.rb#18012 +# source://prism//lib/prism/node.rb#18183 class Prism::WhileNode < ::Prism::Node # Initialize a new WhileNode node. # # @return [WhileNode] a new instance of WhileNode # - # source://prism//lib/prism/node.rb#18014 + # source://prism//lib/prism/node.rb#18185 sig do params( source: Prism::Source, @@ -41210,12 +41534,12 @@ class Prism::WhileNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#18156 + # source://prism//lib/prism/node.rb#18327 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#18027 + # source://prism//lib/prism/node.rb#18198 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end @@ -41223,43 +41547,43 @@ class Prism::WhileNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#18063 + # source://prism//lib/prism/node.rb#18234 sig { returns(T::Boolean) } def begin_modifier?; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#18032 + # source://prism//lib/prism/node.rb#18203 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String? # - # source://prism//lib/prism/node.rb#18135 + # source://prism//lib/prism/node.rb#18306 sig { returns(T.nilable(String)) } def closing; end # attr_reader closing_loc: Location? # - # source://prism//lib/prism/node.rb#18100 + # source://prism//lib/prism/node.rb#18271 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#18045 + # source://prism//lib/prism/node.rb#18216 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#18037 + # source://prism//lib/prism/node.rb#18208 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?keyword_loc: Location, ?do_keyword_loc: Location?, ?closing_loc: Location?, ?predicate: Prism::node, ?statements: StatementsNode?) -> WhileNode # - # source://prism//lib/prism/node.rb#18050 + # source://prism//lib/prism/node.rb#18221 sig do params( node_id: Integer, @@ -41274,28 +41598,28 @@ class Prism::WhileNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), do_keyword_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), predicate: T.unsafe(nil), statements: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#18032 + # source://prism//lib/prism/node.rb#18203 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, do_keyword_loc: Location?, closing_loc: Location?, predicate: Prism::node, statements: StatementsNode? } # - # source://prism//lib/prism/node.rb#18058 + # source://prism//lib/prism/node.rb#18229 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end # def do_keyword: () -> String? # - # source://prism//lib/prism/node.rb#18130 + # source://prism//lib/prism/node.rb#18301 sig { returns(T.nilable(String)) } def do_keyword; end # attr_reader do_keyword_loc: Location? # - # source://prism//lib/prism/node.rb#18081 + # source://prism//lib/prism/node.rb#18252 sig { returns(T.nilable(Prism::Location)) } def do_keyword_loc; end @@ -41304,65 +41628,65 @@ class Prism::WhileNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#18140 + # source://prism//lib/prism/node.rb#18311 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#18125 + # source://prism//lib/prism/node.rb#18296 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#18068 + # source://prism//lib/prism/node.rb#18239 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/parse_result/newlines.rb#109 + # source://prism//lib/prism/parse_result/newlines.rb#110 def newline_flag!(lines); end # attr_reader predicate: Prism::node # - # source://prism//lib/prism/node.rb#18119 + # source://prism//lib/prism/node.rb#18290 sig { returns(Prism::Node) } def predicate; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#18114 + # source://prism//lib/prism/node.rb#18285 def save_closing_loc(repository); end # Save the do_keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#18095 + # source://prism//lib/prism/node.rb#18266 def save_do_keyword_loc(repository); end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#18076 + # source://prism//lib/prism/node.rb#18247 def save_keyword_loc(repository); end # attr_reader statements: StatementsNode? # - # source://prism//lib/prism/node.rb#18122 + # source://prism//lib/prism/node.rb#18293 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#18145 + # source://prism//lib/prism/node.rb#18316 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#18150 + # source://prism//lib/prism/node.rb#18321 def type; end end end @@ -41372,7 +41696,7 @@ end # `foo` # ^^^^^ # -# source://prism//lib/prism/node.rb#18171 +# source://prism//lib/prism/node.rb#18342 class Prism::XStringNode < ::Prism::Node include ::Prism::HeredocQuery @@ -41380,7 +41704,7 @@ class Prism::XStringNode < ::Prism::Node # # @return [XStringNode] a new instance of XStringNode # - # source://prism//lib/prism/node.rb#18173 + # source://prism//lib/prism/node.rb#18344 sig do params( source: Prism::Source, @@ -41398,60 +41722,60 @@ class Prism::XStringNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#18301 + # source://prism//lib/prism/node.rb#18472 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#18185 + # source://prism//lib/prism/node.rb#18356 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#18190 + # source://prism//lib/prism/node.rb#18361 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def closing: () -> String # - # source://prism//lib/prism/node.rb#18280 + # source://prism//lib/prism/node.rb#18451 sig { returns(String) } def closing; end # attr_reader closing_loc: Location # - # source://prism//lib/prism/node.rb#18254 + # source://prism//lib/prism/node.rb#18425 sig { returns(Prism::Location) } def closing_loc; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#18200 + # source://prism//lib/prism/node.rb#18371 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#18195 + # source://prism//lib/prism/node.rb#18366 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def content: () -> String # - # source://prism//lib/prism/node.rb#18275 + # source://prism//lib/prism/node.rb#18446 sig { returns(String) } def content; end # attr_reader content_loc: Location # - # source://prism//lib/prism/node.rb#18241 + # source://prism//lib/prism/node.rb#18412 sig { returns(Prism::Location) } def content_loc; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?opening_loc: Location, ?content_loc: Location, ?closing_loc: Location, ?unescaped: String) -> XStringNode # - # source://prism//lib/prism/node.rb#18205 + # source://prism//lib/prism/node.rb#18376 sig do params( node_id: Integer, @@ -41465,16 +41789,16 @@ class Prism::XStringNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), content_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#18190 + # source://prism//lib/prism/node.rb#18361 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String } # - # source://prism//lib/prism/node.rb#18213 + # source://prism//lib/prism/node.rb#18384 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -41485,7 +41809,7 @@ class Prism::XStringNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#18223 + # source://prism//lib/prism/node.rb#18394 sig { returns(T::Boolean) } def forced_binary_encoding?; end @@ -41493,7 +41817,7 @@ class Prism::XStringNode < ::Prism::Node # # @return [Boolean] # - # source://prism//lib/prism/node.rb#18218 + # source://prism//lib/prism/node.rb#18389 sig { returns(T::Boolean) } def forced_utf8_encoding?; end @@ -41502,63 +41826,63 @@ class Prism::XStringNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#18285 + # source://prism//lib/prism/node.rb#18456 sig { override.returns(String) } def inspect; end # def opening: () -> String # - # source://prism//lib/prism/node.rb#18270 + # source://prism//lib/prism/node.rb#18441 sig { returns(String) } def opening; end # attr_reader opening_loc: Location # - # source://prism//lib/prism/node.rb#18228 + # source://prism//lib/prism/node.rb#18399 sig { returns(Prism::Location) } def opening_loc; end # Save the closing_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#18262 + # source://prism//lib/prism/node.rb#18433 def save_closing_loc(repository); end # Save the content_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#18249 + # source://prism//lib/prism/node.rb#18420 def save_content_loc(repository); end # Save the opening_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#18236 + # source://prism//lib/prism/node.rb#18407 def save_opening_loc(repository); end # Occasionally it's helpful to treat a string as if it were interpolated so # that there's a consistent interface for working with strings. # - # source://prism//lib/prism/node_ext.rb#90 + # source://prism//lib/prism/node_ext.rb#93 sig { returns(Prism::InterpolatedXStringNode) } def to_interpolated; end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#18290 + # source://prism//lib/prism/node.rb#18461 sig { override.returns(Symbol) } def type; end # attr_reader unescaped: String # - # source://prism//lib/prism/node.rb#18267 + # source://prism//lib/prism/node.rb#18438 sig { returns(String) } def unescaped; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#18295 + # source://prism//lib/prism/node.rb#18466 def type; end end end @@ -41568,13 +41892,13 @@ end # yield 1 # ^^^^^^^ # -# source://prism//lib/prism/node.rb#18315 +# source://prism//lib/prism/node.rb#18486 class Prism::YieldNode < ::Prism::Node # Initialize a new YieldNode node. # # @return [YieldNode] a new instance of YieldNode # - # source://prism//lib/prism/node.rb#18317 + # source://prism//lib/prism/node.rb#18488 sig do params( source: Prism::Source, @@ -41592,42 +41916,42 @@ class Prism::YieldNode < ::Prism::Node # Implements case-equality for the node. This is effectively == but without # comparing the value of locations. Locations are checked only for presence. # - # source://prism//lib/prism/node.rb#18449 + # source://prism//lib/prism/node.rb#18620 def ===(other); end # def accept: (Visitor visitor) -> void # - # source://prism//lib/prism/node.rb#18329 + # source://prism//lib/prism/node.rb#18500 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end # attr_reader arguments: ArgumentsNode? # - # source://prism//lib/prism/node.rb#18396 + # source://prism//lib/prism/node.rb#18567 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # def child_nodes: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#18334 + # source://prism//lib/prism/node.rb#18505 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end # def comment_targets: () -> Array[Node | Location] # - # source://prism//lib/prism/node.rb#18346 + # source://prism//lib/prism/node.rb#18517 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end # def compact_child_nodes: () -> Array[Node] # - # source://prism//lib/prism/node.rb#18339 + # source://prism//lib/prism/node.rb#18510 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end # def copy: (?node_id: Integer, ?location: Location, ?flags: Integer, ?keyword_loc: Location, ?lparen_loc: Location?, ?arguments: ArgumentsNode?, ?rparen_loc: Location?) -> YieldNode # - # source://prism//lib/prism/node.rb#18351 + # source://prism//lib/prism/node.rb#18522 sig do params( node_id: Integer, @@ -41641,16 +41965,16 @@ class Prism::YieldNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), lparen_loc: T.unsafe(nil), arguments: T.unsafe(nil), rparen_loc: T.unsafe(nil)); end - # def child_nodes: () -> Array[nil | Node] - # def deconstruct: () -> Array[nil | Node] + # def child_nodes: () -> Array[Node?] + # def deconstruct: () -> Array[Node?] # - # source://prism//lib/prism/node.rb#18334 + # source://prism//lib/prism/node.rb#18505 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end # def deconstruct_keys: (Array[Symbol] keys) -> { node_id: Integer, location: Location, keyword_loc: Location, lparen_loc: Location?, arguments: ArgumentsNode?, rparen_loc: Location? } # - # source://prism//lib/prism/node.rb#18359 + # source://prism//lib/prism/node.rb#18530 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -41659,74 +41983,74 @@ class Prism::YieldNode < ::Prism::Node # def inspect -> String # - # source://prism//lib/prism/node.rb#18433 + # source://prism//lib/prism/node.rb#18604 sig { override.returns(String) } def inspect; end # def keyword: () -> String # - # source://prism//lib/prism/node.rb#18418 + # source://prism//lib/prism/node.rb#18589 sig { returns(String) } def keyword; end # attr_reader keyword_loc: Location # - # source://prism//lib/prism/node.rb#18364 + # source://prism//lib/prism/node.rb#18535 sig { returns(Prism::Location) } def keyword_loc; end # def lparen: () -> String? # - # source://prism//lib/prism/node.rb#18423 + # source://prism//lib/prism/node.rb#18594 sig { returns(T.nilable(String)) } def lparen; end # attr_reader lparen_loc: Location? # - # source://prism//lib/prism/node.rb#18377 + # source://prism//lib/prism/node.rb#18548 sig { returns(T.nilable(Prism::Location)) } def lparen_loc; end # def rparen: () -> String? # - # source://prism//lib/prism/node.rb#18428 + # source://prism//lib/prism/node.rb#18599 sig { returns(T.nilable(String)) } def rparen; end # attr_reader rparen_loc: Location? # - # source://prism//lib/prism/node.rb#18399 + # source://prism//lib/prism/node.rb#18570 sig { returns(T.nilable(Prism::Location)) } def rparen_loc; end # Save the keyword_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#18372 + # source://prism//lib/prism/node.rb#18543 def save_keyword_loc(repository); end # Save the lparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#18391 + # source://prism//lib/prism/node.rb#18562 def save_lparen_loc(repository); end # Save the rparen_loc location using the given saved source so that # it can be retrieved later. # - # source://prism//lib/prism/node.rb#18413 + # source://prism//lib/prism/node.rb#18584 def save_rparen_loc(repository); end # Return a symbol representation of this node type. See `Node#type`. # - # source://prism//lib/prism/node.rb#18438 + # source://prism//lib/prism/node.rb#18609 sig { override.returns(Symbol) } def type; end class << self # Return a symbol representation of this node type. See `Node::type`. # - # source://prism//lib/prism/node.rb#18443 + # source://prism//lib/prism/node.rb#18614 def type; end end end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/rack@3.1.16.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/rack@3.2.3.rbi similarity index 82% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/rack@3.1.16.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/rack@3.2.3.rbi index 1bcb35584c..c5f85b5258 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/rack@3.1.16.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/rack@3.2.3.rbi @@ -5,23 +5,17 @@ # Please instead update this file by running `bin/tapioca gem rack`. -# The Rack main module, serving as a namespace for all core Rack -# modules and classes. -# -# All modules meant for use in your application are autoloaded here, -# so it should be enough just to require 'rack' in your code. -# -# source://rack//lib/rack/version.rb#14 +# source://rack//lib/rack/version.rb#8 module Rack class << self # Return the Rack release as a dotted string. # - # source://rack//lib/rack/version.rb#18 + # source://rack//lib/rack/version.rb#14 def release; end end end -# source://rack//lib/rack.rb#60 +# source://rack//lib/rack.rb#59 module Rack::Auth; end # Rack::Auth::AbstractHandler implements common authentication functionality. @@ -56,42 +50,42 @@ class Rack::Auth::AbstractHandler def unauthorized(www_authenticate = T.unsafe(nil)); end end -# source://rack//lib/rack/auth/abstract/request.rb#7 +# source://rack//lib/rack/auth/abstract/request.rb#8 class Rack::Auth::AbstractRequest # @return [AbstractRequest] a new instance of AbstractRequest # - # source://rack//lib/rack/auth/abstract/request.rb#9 + # source://rack//lib/rack/auth/abstract/request.rb#10 def initialize(env); end - # source://rack//lib/rack/auth/abstract/request.rb#33 + # source://rack//lib/rack/auth/abstract/request.rb#35 def params; end - # source://rack//lib/rack/auth/abstract/request.rb#25 + # source://rack//lib/rack/auth/abstract/request.rb#27 def parts; end # @return [Boolean] # - # source://rack//lib/rack/auth/abstract/request.rb#17 + # source://rack//lib/rack/auth/abstract/request.rb#19 def provided?; end - # source://rack//lib/rack/auth/abstract/request.rb#13 + # source://rack//lib/rack/auth/abstract/request.rb#14 def request; end - # source://rack//lib/rack/auth/abstract/request.rb#29 + # source://rack//lib/rack/auth/abstract/request.rb#31 def scheme; end # @return [Boolean] # - # source://rack//lib/rack/auth/abstract/request.rb#21 + # source://rack//lib/rack/auth/abstract/request.rb#23 def valid?; end private - # source://rack//lib/rack/auth/abstract/request.rb#42 + # source://rack//lib/rack/auth/abstract/request.rb#44 def authorization_key; end end -# source://rack//lib/rack/auth/abstract/request.rb#40 +# source://rack//lib/rack/auth/abstract/request.rb#42 Rack::Auth::AbstractRequest::AUTHORIZATION_KEYS = T.let(T.unsafe(nil), Array) # Rack::Auth::Basic implements HTTP Basic Authentication, as per RFC 2617. @@ -224,13 +218,13 @@ class Rack::Builder # this rebuilds the Rack application and runs the warmup code (if any) # every time it is called, so it should not be used if performance is important. # - # source://rack//lib/rack/builder.rb#276 + # source://rack//lib/rack/builder.rb#282 def call(env); end # Freeze the app (set using run) and all middleware instances when building the application # in to_app. # - # source://rack//lib/rack/builder.rb#259 + # source://rack//lib/rack/builder.rb#265 def freeze_app; end # Creates a route within the application. Routes under the mapped path will be sent to @@ -273,7 +267,7 @@ class Rack::Builder # Note that providing a +path+ of +/+ will ignore any default application given in a +run+ statement # outside the block. # - # source://rack//lib/rack/builder.rb#252 + # source://rack//lib/rack/builder.rb#256 def map(path, &block); end # Any options provided to the Rack::Builder instance at initialization. @@ -310,12 +304,12 @@ class Rack::Builder # # @raise [ArgumentError] # - # source://rack//lib/rack/builder.rb#193 + # source://rack//lib/rack/builder.rb#195 def run(app = T.unsafe(nil), &block); end # Return the Rack application generated by this instance. # - # source://rack//lib/rack/builder.rb#264 + # source://rack//lib/rack/builder.rb#270 def to_app; end # Specifies middleware to use in a stack. @@ -352,7 +346,7 @@ class Rack::Builder # use SomeMiddleware # run MyApp # - # source://rack//lib/rack/builder.rb#209 + # source://rack//lib/rack/builder.rb#213 def warmup(prc = T.unsafe(nil), &block); end private @@ -360,7 +354,7 @@ class Rack::Builder # Generate a URLMap instance by generating new Rack applications for each # map block in this instance. # - # source://rack//lib/rack/builder.rb#284 + # source://rack//lib/rack/builder.rb#290 def generate_map(default_app, mapping); end class << self @@ -581,7 +575,7 @@ class Rack::ConditionalGet # # @return [Boolean] # - # source://rack//lib/rack/conditional_get.rb#62 + # source://rack//lib/rack/conditional_get.rb#63 def etag_matches?(none_match, headers); end # Return whether the response has not been modified since the @@ -589,7 +583,7 @@ class Rack::ConditionalGet # # @return [Boolean] # - # source://rack//lib/rack/conditional_get.rb#51 + # source://rack//lib/rack/conditional_get.rb#52 def fresh?(env, headers); end # Whether the last-modified response header matches the if-modified-since @@ -597,13 +591,13 @@ class Rack::ConditionalGet # # @return [Boolean] # - # source://rack//lib/rack/conditional_get.rb#68 + # source://rack//lib/rack/conditional_get.rb#69 def modified_since?(modified_since, headers); end # Return a Time object for the given string (which should be in RFC2822 # format), or nil if the string cannot be parsed. # - # source://rack//lib/rack/conditional_get.rb#75 + # source://rack//lib/rack/conditional_get.rb#76 def to_rfc2822(since); end end @@ -924,12 +918,13 @@ Rack::EXPIRES = T.let(T.unsafe(nil), String) # # * on_send(request, response) # -# The webserver has started iterating over the response body and presumably -# has started sending data over the wire. This method is always called with -# a request object and the response object. The response object is -# constructed from the rack triple that the application returned. Changes -# SHOULD NOT be made to the response object as the webserver has already -# started sending data. Any mutations will likely result in an exception. +# The webserver has started iterating over the response body, or has called +# the streaming body, and presumably has started sending data over the +# wire. This method is always called with a request object and the response +# object. The response object is constructed from the rack triple that the +# application returned. Changes SHOULD NOT be made to the response object +# as the webserver has already started sending data. Any mutations will +# likely result in an exception. # # * on_finish(request, response) # @@ -953,89 +948,97 @@ Rack::EXPIRES = T.let(T.unsafe(nil), String) # raises an exception. If something raises an exception in a `on_finish` # method, then nothing is guaranteed. # -# source://rack//lib/rack/events.rb#61 +# source://rack//lib/rack/events.rb#62 class Rack::Events # @return [Events] a new instance of Events # - # source://rack//lib/rack/events.rb#106 + # source://rack//lib/rack/events.rb#121 def initialize(app, handlers); end - # source://rack//lib/rack/events.rb#111 + # source://rack//lib/rack/events.rb#126 def call(env); end private - # source://rack//lib/rack/events.rb#149 + # source://rack//lib/rack/events.rb#164 def make_request(env); end - # source://rack//lib/rack/events.rb#153 + # source://rack//lib/rack/events.rb#168 def make_response(status, headers, body); end - # source://rack//lib/rack/events.rb#137 + # source://rack//lib/rack/events.rb#152 def on_commit(request, response); end - # source://rack//lib/rack/events.rb#133 + # source://rack//lib/rack/events.rb#148 def on_error(request, response, e); end - # source://rack//lib/rack/events.rb#145 + # source://rack//lib/rack/events.rb#160 def on_finish(request, response); end - # source://rack//lib/rack/events.rb#141 + # source://rack//lib/rack/events.rb#156 def on_start(request, response); end end -# source://rack//lib/rack/events.rb#62 +# source://rack//lib/rack/events.rb#63 module Rack::Events::Abstract - # source://rack//lib/rack/events.rb#66 + # source://rack//lib/rack/events.rb#67 def on_commit(req, res); end - # source://rack//lib/rack/events.rb#75 + # source://rack//lib/rack/events.rb#76 def on_error(req, res, e); end - # source://rack//lib/rack/events.rb#72 + # source://rack//lib/rack/events.rb#73 def on_finish(req, res); end - # source://rack//lib/rack/events.rb#69 + # source://rack//lib/rack/events.rb#70 def on_send(req, res); end - # source://rack//lib/rack/events.rb#63 + # source://rack//lib/rack/events.rb#64 def on_start(req, res); end end -# source://rack//lib/rack/events.rb#95 +# source://rack//lib/rack/events.rb#110 class Rack::Events::BufferedResponse < ::Rack::Response::Raw # @return [BufferedResponse] a new instance of BufferedResponse # - # source://rack//lib/rack/events.rb#98 + # source://rack//lib/rack/events.rb#113 def initialize(status, headers, body); end # Returns the value of attribute body. # - # source://rack//lib/rack/events.rb#96 + # source://rack//lib/rack/events.rb#111 def body; end - # source://rack//lib/rack/events.rb#103 + # source://rack//lib/rack/events.rb#118 def to_a; end end -# source://rack//lib/rack/events.rb#79 +# source://rack//lib/rack/events.rb#80 class Rack::Events::EventedBodyProxy < ::Rack::BodyProxy # @return [EventedBodyProxy] a new instance of EventedBodyProxy # - # source://rack//lib/rack/events.rb#82 + # source://rack//lib/rack/events.rb#83 def initialize(body, request, response, handlers, &block); end - # source://rack//lib/rack/events.rb#89 + # source://rack//lib/rack/events.rb#95 + def call(stream); end + + # source://rack//lib/rack/events.rb#90 def each; end # Returns the value of attribute request. # - # source://rack//lib/rack/events.rb#80 + # source://rack//lib/rack/events.rb#81 def request; end + # @return [Boolean] + # + # source://rack//lib/rack/events.rb#100 + def respond_to?(method_name, include_all = T.unsafe(nil)); end + # Returns the value of attribute response. # - # source://rack//lib/rack/events.rb#80 + # source://rack//lib/rack/events.rb#81 def response; end end @@ -1320,324 +1323,292 @@ Rack::Headers::KNOWN_HEADERS = T.let(T.unsafe(nil), Hash) # source://rack//lib/rack/constants.rb#36 Rack::LINK = T.let(T.unsafe(nil), String) -# Rack::Lint validates your application and the requests and -# responses according to the Rack spec. +# Validates your application and the requests and responses according to the Rack spec. See SPEC.rdoc for details. # -# source://rack//lib/rack/lint.rb#13 +# source://rack//lib/rack/lint.rb#10 class Rack::Lint - # @return [Lint] a new instance of Lint + # N.B. The empty `##` comments creates paragraphs in the output. A trailing "\" is used to escape the newline character, which combines the comments into a single paragraph. # - # source://rack//lib/rack/lint.rb#19 - def initialize(app); end - - # AUTHORS: n.b. The trailing whitespace between paragraphs is important and - # should not be removed. The whitespace creates paragraphs in the RDoc - # output. + # = Rack Specification # - # This specification aims to formalize the Rack protocol. You - # can (and should) use Rack::Lint to enforce it. + # This specification aims to formalize the Rack protocol. You can (and should) use +Rack::Lint+ to enforce it. When you develop middleware, be sure to test with +Rack::Lint+ to catch possible violations of this specification. # - # When you develop middleware, be sure to add a Lint before and - # after to catch all mistakes. + # == The Application # - # = Rack applications + # A Rack application is a Ruby object that responds to +call+. \ # - # A Rack application is a Ruby object (not a class) that - # responds to +call+. + # @raise [LintError] + # @return [Lint] a new instance of Lint # - # source://rack//lib/rack/lint.rb#40 + # source://rack//lib/rack/lint.rb#65 + def initialize(app); end + + # Invoke the application, validating the request and response according to the Rack spec. + # + # source://rack//lib/rack/lint.rb#15 def call(env = T.unsafe(nil)); end end # :stopdoc: # -# source://rack//lib/rack/lint.rb#25 +# source://rack//lib/rack/lint.rb#21 +Rack::Lint::ALLOWED_SCHEMES = T.let(T.unsafe(nil), Array) + +# Match a host name, according to RFC3986. Copied from `URI::RFC3986_Parser::HOST` because older Ruby versions (< 3.3) don't expose it. +# +# source://rack//lib/rack/lint.rb#29 +Rack::Lint::HOST_PATTERN = T.let(T.unsafe(nil), Regexp) + +# source://rack//lib/rack/lint.rb#52 +Rack::Lint::HTTP_HOST_PATTERN = T.let(T.unsafe(nil), Regexp) + +# Represents a failure to meet the Rack specification. +# +# source://rack//lib/rack/lint.rb#12 class Rack::Lint::LintError < ::RuntimeError; end -# source://rack//lib/rack/lint.rb#15 +# source://rack//lib/rack/lint.rb#24 Rack::Lint::REQUEST_PATH_ABSOLUTE_FORM = T.let(T.unsafe(nil), Regexp) -# source://rack//lib/rack/lint.rb#17 +# source://rack//lib/rack/lint.rb#26 Rack::Lint::REQUEST_PATH_ASTERISK_FORM = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/lint.rb#16 +# source://rack//lib/rack/lint.rb#25 Rack::Lint::REQUEST_PATH_AUTHORITY_FORM = T.let(T.unsafe(nil), Regexp) -# source://rack//lib/rack/lint.rb#14 +# source://rack//lib/rack/lint.rb#23 Rack::Lint::REQUEST_PATH_ORIGIN_FORM = T.let(T.unsafe(nil), Regexp) -# source://rack//lib/rack/lint.rb#44 +# source://rack//lib/rack/lint.rb#51 +Rack::Lint::SERVER_NAME_PATTERN = T.let(T.unsafe(nil), Regexp) + +# source://rack//lib/rack/lint.rb#71 class Rack::Lint::Wrapper # @return [Wrapper] a new instance of Wrapper # - # source://rack//lib/rack/lint.rb#45 + # source://rack//lib/rack/lint.rb#72 def initialize(app, env); end # ==== Streaming Body # # @raise [LintError] # - # source://rack//lib/rack/lint.rb#939 + # source://rack//lib/rack/lint.rb#918 def call(stream); end - # ==== The +content-length+ Header + # ==== The content-length Header # - # source://rack//lib/rack/lint.rb#757 + # source://rack//lib/rack/lint.rb#768 def check_content_length_header(status, headers); end - # ==== The +content-type+ Header + # ==== The content-type Header # - # source://rack//lib/rack/lint.rb#741 + # source://rack//lib/rack/lint.rb#753 def check_content_type_header(status, headers); end # === Early Hints # - # The application or any middleware may call the rack.early_hints - # with an object which would be valid as the headers of a Rack response. + # The application or any middleware may call the rack.early_hints with an object which would be valid as the headers of a Rack response. # - # source://rack//lib/rack/lint.rb#657 + # source://rack//lib/rack/lint.rb#670 def check_early_hints(env); end - # == The Environment + # == The Request Environment + # + # Incoming HTTP requests are represented using an environment. \ # # @raise [LintError] # - # source://rack//lib/rack/lint.rb#101 + # source://rack//lib/rack/lint.rb#136 def check_environment(env); end # === The Error Stream # - # source://rack//lib/rack/lint.rb#531 + # source://rack//lib/rack/lint.rb#571 def check_error_stream(error); end - # source://rack//lib/rack/lint.rb#731 + # source://rack//lib/rack/lint.rb#743 def check_header_value(key, value); end # === The Headers # - # source://rack//lib/rack/lint.rb#691 + # source://rack//lib/rack/lint.rb#704 def check_headers(headers); end # === Hijacking # - # The hijacking interfaces provides a means for an application to take - # control of the HTTP connection. There are two distinct hijack - # interfaces: full hijacking where the application takes over the raw - # connection, and partial hijacking where the application takes over - # just the response body stream. In both cases, the application is - # responsible for closing the hijacked stream. + # The hijacking interfaces provides a means for an application to take control of the HTTP connection. There are two distinct hijack interfaces: full hijacking where the application takes over the raw connection, and partial hijacking where the application takes over just the response body stream. In both cases, the application is responsible for closing the hijacked stream. # - # Full hijacking only works with HTTP/1. Partial hijacking is functionally - # equivalent to streaming bodies, and is still optionally supported for - # backwards compatibility with older Rack versions. + # Full hijacking only works with HTTP/1. Partial hijacking is functionally equivalent to streaming bodies, and is still optionally supported for backwards compatibility with older Rack versions. # # ==== Full Hijack # - # Full hijack is used to completely take over an HTTP/1 connection. It - # occurs before any headers are written and causes the request to - # ignores any response generated by the application. + # Full hijack is used to completely take over an HTTP/1 connection. It occurs before any headers are written and causes the server to ignore any response generated by the application. It is intended to be used when applications need access to the raw HTTP/1 connection. # - # It is intended to be used when applications need access to raw HTTP/1 - # connection. - # - # source://rack//lib/rack/lint.rb#591 + # source://rack//lib/rack/lint.rb#618 def check_hijack(env); end # ==== Partial Hijack # - # Partial hijack is used for bi-directional streaming of the request and - # response body. It occurs after the status and headers are written by - # the server and causes the server to ignore the Body of the response. + # Partial hijack is used for bi-directional streaming of the request and response body. It occurs after the status and headers are written by the server and causes the server to ignore the Body of the response. It is intended to be used when applications need bi-directional streaming. # - # It is intended to be used when applications need bi-directional - # streaming. - # - # source://rack//lib/rack/lint.rb#619 + # source://rack//lib/rack/lint.rb#639 def check_hijack_response(headers, env); end # === The Input Stream # - # The input stream is an IO-like object which contains the raw HTTP - # POST data. + # The input stream is an +IO+-like object which contains the raw HTTP request data. \ # - # source://rack//lib/rack/lint.rb#427 + # source://rack//lib/rack/lint.rb#478 def check_input_stream(input); end - # ==== The +rack.protocol+ Header + # ==== The rack.protocol Header # - # source://rack//lib/rack/lint.rb#785 + # source://rack//lib/rack/lint.rb#795 def check_rack_protocol_header(status, headers); end # == The Response # + # Outgoing HTTP responses are generated from the response tuple generated by the application. The response tuple is an +Array+ of three elements, which are: the HTTP status, the headers, and the response body. The Rack application is responsible for ensuring that the response tuple is well-formed and should follow the rules set out in this specification. + # # === The Status # - # source://rack//lib/rack/lint.rb#680 + # source://rack//lib/rack/lint.rb#694 def check_status(status); end - # Setting this value informs the server that it should perform a - # connection upgrade. In HTTP/1, this is done using the +upgrade+ - # header. In HTTP/2, this is done by accepting the request. + # Setting this value informs the server that it should perform a connection upgrade. In HTTP/1, this is done using the +upgrade+ header. In HTTP/2+, this is done by accepting the request. # # === The Body # - # The Body is typically an +Array+ of +String+ instances, an enumerable - # that yields +String+ instances, a +Proc+ instance, or a File-like - # object. - # - # The Body must respond to +each+ or +call+. It may optionally respond - # to +to_path+ or +to_ary+. A Body that responds to +each+ is considered - # to be an Enumerable Body. A Body that responds to +call+ is considered - # to be a Streaming Body. - # - # A Body that responds to both +each+ and +call+ must be treated as an - # Enumerable Body, not a Streaming Body. If it responds to +each+, you - # must call +each+ and not +call+. If the Body doesn't respond to - # +each+, then you can assume it responds to +call+. - # - # The Body must either be consumed or returned. The Body is consumed by - # optionally calling either +each+ or +call+. - # Then, if the Body responds to +close+, it must be called to release - # any resources associated with the generation of the body. - # In other words, +close+ must always be called at least once; typically - # after the web server has sent the response to the client, but also in - # cases where the Rack application makes internal/virtual requests and - # discards the response. - # - # source://rack//lib/rack/lint.rb#831 + # The Body is typically an +Array+ of +String+ values, an enumerable that yields +String+ values, a +Proc+, or an +IO+-like object. + # + # The Body must respond to +each+ or +call+. It may optionally respond to +to_path+ or +to_ary+. A Body that responds to +each+ is considered to be an Enumerable Body. A Body that responds to +call+ is considered to be a Streaming Body. + # + # A Body that responds to both +each+ and +call+ must be treated as an Enumerable Body, not a Streaming Body. If it responds to +each+, you must call +each+ and not +call+. If the Body doesn't respond to +each+, then you can assume it responds to +call+. + # + # The Body must either be consumed or returned. The Body is consumed by optionally calling either +each+ or +call+. Then, if the Body responds to +close+, it must be called to release any resources associated with the generation of the body. In other words, +close+ must always be called at least once; typically after the web server has sent the response to the client, but also in cases where the Rack application makes internal/virtual requests and discards the response. + # + # source://rack//lib/rack/lint.rb#821 def close; end # ==== Enumerable Body # # @raise [LintError] # - # source://rack//lib/rack/lint.rb#865 + # source://rack//lib/rack/lint.rb#852 def each; end # @return [Boolean] # - # source://rack//lib/rack/lint.rb#910 + # source://rack//lib/rack/lint.rb#895 def respond_to?(name, *_arg1); end # @raise [LintError] # - # source://rack//lib/rack/lint.rb#60 + # source://rack//lib/rack/lint.rb#87 def response; end - # If the Body responds to +to_ary+, it must return an +Array+ whose - # contents are identical to that produced by calling +each+. - # Middleware may call +to_ary+ directly on the Body and return a new - # Body in its place. In other words, middleware can only process the - # Body directly if it responds to +to_ary+. If the Body responds to both - # +to_ary+ and +close+, its implementation of +to_ary+ must call - # +close+. + # If the Body responds to +to_ary+, it must return an +Array+ whose contents are identical to that produced by calling +each+. Middleware may call +to_ary+ directly on the Body and return a new Body in its place. In other words, middleware can only process the Body directly if it responds to +to_ary+. If the Body responds to both +to_ary+ and +close+, its implementation of +to_ary+ must call +close+. # - # source://rack//lib/rack/lint.rb#926 + # source://rack//lib/rack/lint.rb#905 def to_ary; end - # source://rack//lib/rack/lint.rb#906 + # source://rack//lib/rack/lint.rb#891 def to_path; end - # source://rack//lib/rack/lint.rb#770 + # source://rack//lib/rack/lint.rb#780 def verify_content_length(size); end - # source://rack//lib/rack/lint.rb#847 + # source://rack//lib/rack/lint.rb#835 def verify_to_path; end + + private + + # @raise [LintError] + # + # source://rack//lib/rack/lint.rb#126 + def assert_required(key); end end -# source://rack//lib/rack/lint.rb#904 +# source://rack//lib/rack/lint.rb#889 Rack::Lint::Wrapper::BODY_METHODS = T.let(T.unsafe(nil), Hash) -# source://rack//lib/rack/lint.rb#540 +# source://rack//lib/rack/lint.rb#580 class Rack::Lint::Wrapper::ErrorWrapper # @return [ErrorWrapper] a new instance of ErrorWrapper # - # source://rack//lib/rack/lint.rb#541 + # source://rack//lib/rack/lint.rb#581 def initialize(error); end # * +close+ must never be called on the error stream. # # @raise [LintError] # - # source://rack//lib/rack/lint.rb#563 + # source://rack//lib/rack/lint.rb#602 def close(*args); end - # * +flush+ must be called without arguments and must be called - # in order to make the error appear for sure. + # * +flush+ must be called without arguments and must be called in order to make the error appear for sure. # - # source://rack//lib/rack/lint.rb#558 + # source://rack//lib/rack/lint.rb#597 def flush; end # * +puts+ must be called with a single argument that responds to +to_s+. # - # source://rack//lib/rack/lint.rb#546 + # source://rack//lib/rack/lint.rb#586 def puts(str); end - # * +write+ must be called with a single argument that is a String. + # * +write+ must be called with a single argument that is a +String+. # # @raise [LintError] # - # source://rack//lib/rack/lint.rb#551 + # source://rack//lib/rack/lint.rb#591 def write(str); end end -# source://rack//lib/rack/lint.rb#445 +# source://rack//lib/rack/lint.rb#495 class Rack::Lint::Wrapper::InputWrapper # @return [InputWrapper] a new instance of InputWrapper # - # source://rack//lib/rack/lint.rb#446 + # source://rack//lib/rack/lint.rb#496 def initialize(input); end - # * +close+ can be called on the input stream to indicate that - # any remaining input is not needed. + # * +close+ can be called on the input stream to indicate that any remaining input is not needed. # - # source://rack//lib/rack/lint.rb#523 + # source://rack//lib/rack/lint.rb#563 def close(*args); end - # * +each+ must be called without arguments and only yield Strings. + # * +each+ must be called without arguments and only yield +String+ values. # # @raise [LintError] # - # source://rack//lib/rack/lint.rb#511 + # source://rack//lib/rack/lint.rb#552 def each(*args); end - # * +gets+ must be called without arguments and return a string, - # or +nil+ on EOF. + # * +gets+ must be called without arguments and return a +String+, or +nil+ on EOF (end-of-file). # # @raise [LintError] # - # source://rack//lib/rack/lint.rb#452 + # source://rack//lib/rack/lint.rb#501 def gets(*args); end - # * +read+ behaves like IO#read. - # Its signature is read([length, [buffer]]). - # - # If given, +length+ must be a non-negative Integer (>= 0) or +nil+, - # and +buffer+ must be a String and may not be nil. - # - # If +length+ is given and not nil, then this method reads at most - # +length+ bytes from the input stream. - # - # If +length+ is not given or nil, then this method reads - # all data until EOF. - # - # When EOF is reached, this method returns nil if +length+ is given - # and not nil, or "" if +length+ is not given or is nil. + # * +read+ behaves like IO#read. Its signature is read([length, [buffer]]). + # * If given, +length+ must be a non-negative Integer (>= 0) or +nil+, and +buffer+ must be a +String+ and may not be +nil+. + # * If +length+ is given and not +nil+, then this method reads at most +length+ bytes from the input stream. + # * If +length+ is not given or +nil+, then this method reads all data until EOF. + # * When EOF is reached, this method returns +nil+ if +length+ is given and not +nil+, or +""+ if +length+ is not given or is +nil+. + # * If +buffer+ is given, then the read data will be placed into +buffer+ instead of a newly created +String+. # - # If +buffer+ is given, then the read data will be placed - # into +buffer+ instead of a newly created String object. - # - # source://rack//lib/rack/lint.rb#478 + # source://rack//lib/rack/lint.rb#519 def read(*args); end end -# source://rack//lib/rack/lint.rb#959 +# source://rack//lib/rack/lint.rb#936 class Rack::Lint::Wrapper::StreamWrapper extend ::Forwardable # @return [StreamWrapper] a new instance of StreamWrapper # - # source://rack//lib/rack/lint.rb#974 + # source://rack//lib/rack/lint.rb#947 def initialize(stream); end # source://forwardable/1.3.3/forwardable.rb#231 @@ -1665,13 +1636,9 @@ class Rack::Lint::Wrapper::StreamWrapper def write(*args, **_arg1, &block); end end -# The semantics of these IO methods must be a best effort match to -# those of a normal Ruby IO or Socket object, using standard arguments -# and raising standard exceptions. Servers are encouraged to simply -# pass on real IO objects, although it is recognized that this approach -# is not directly compatible with HTTP/2. +# The semantics of these +IO+ methods must be a best effort match to those of a normal Ruby +IO+ or +Socket+ object, using standard arguments and raising standard exceptions. Servers may simply pass on real +IO+ objects to the Streaming Body. In some cases (e.g. when using transfer-encoding or HTTP/2+), the server may need to provide a wrapper that implements the required methods, in order to provide the correct semantics. # -# source://rack//lib/rack/lint.rb#967 +# source://rack//lib/rack/lint.rb#940 Rack::Lint::Wrapper::StreamWrapper::REQUIRED_METHODS = T.let(T.unsafe(nil), Array) # Rack::Lock locks every request inside a mutex, so that every request @@ -1693,19 +1660,6 @@ class Rack::Lock def unlock; end end -# Sets up rack.logger to write to rack.errors stream -# -# source://rack//lib/rack/logger.rb#10 -class Rack::Logger - # @return [Logger] a new instance of Logger - # - # source://rack//lib/rack/logger.rb#11 - def initialize(app, level = T.unsafe(nil)); end - - # source://rack//lib/rack/logger.rb#15 - def call(env); end -end - # Rack::MediaType parse media type and parameters out of content_type string # # source://rack//lib/rack/media_type.rb#6 @@ -1722,7 +1676,7 @@ class Rack::MediaType # and "text/plain;charset" will return { 'charset' => '' }, similarly to # the query params parser (barring the latter case, which returns nil instead)). # - # source://rack//lib/rack/media_type.rb#35 + # source://rack//lib/rack/media_type.rb#34 def params(content_type); end # The media type (type/subtype) portion of the CONTENT_TYPE header @@ -1737,7 +1691,7 @@ class Rack::MediaType private - # source://rack//lib/rack/media_type.rb#48 + # source://rack//lib/rack/media_type.rb#47 def strip_doublequotes(str); end end end @@ -1972,52 +1926,52 @@ class Rack::MockRequest::FatalWarning < ::RuntimeError; end class Rack::MockResponse < ::Rack::Response # @return [MockResponse] a new instance of MockResponse # - # source://rack//lib/rack/mock_response.rb#53 + # source://rack//lib/rack/mock_response.rb#47 def initialize(status, headers, body, errors = T.unsafe(nil)); end - # source://rack//lib/rack/mock_response.rb#68 + # source://rack//lib/rack/mock_response.rb#62 def =~(other); end - # source://rack//lib/rack/mock_response.rb#76 + # source://rack//lib/rack/mock_response.rb#70 def body; end - # source://rack//lib/rack/mock_response.rb#102 + # source://rack//lib/rack/mock_response.rb#96 def cookie(name); end # Headers # - # source://rack//lib/rack/mock_response.rb#48 + # source://rack//lib/rack/mock_response.rb#42 def cookies; end # @return [Boolean] # - # source://rack//lib/rack/mock_response.rb#98 + # source://rack//lib/rack/mock_response.rb#92 def empty?; end # Errors # - # source://rack//lib/rack/mock_response.rb#51 + # source://rack//lib/rack/mock_response.rb#45 def errors; end # Errors # - # source://rack//lib/rack/mock_response.rb#51 + # source://rack//lib/rack/mock_response.rb#45 def errors=(_arg0); end - # source://rack//lib/rack/mock_response.rb#72 + # source://rack//lib/rack/mock_response.rb#66 def match(other); end # Headers # - # source://rack//lib/rack/mock_response.rb#48 + # source://rack//lib/rack/mock_response.rb#42 def original_headers; end private - # source://rack//lib/rack/mock_response.rb#129 + # source://rack//lib/rack/mock_response.rb#123 def identify_cookie_attributes(cookie_filling); end - # source://rack//lib/rack/mock_response.rb#108 + # source://rack//lib/rack/mock_response.rb#102 def parse_cookies_from_header; end class << self @@ -2025,8 +1979,55 @@ class Rack::MockResponse < ::Rack::Response end end -# source://rack//lib/rack/mock_response.rb#16 -Rack::MockResponse::Cookie = CGI::Cookie +# source://rack//lib/rack/mock_response.rb#13 +class Rack::MockResponse::Cookie + # @return [Cookie] a new instance of Cookie + # + # source://rack//lib/rack/mock_response.rb#16 + def initialize(args); end + + # Returns the value of attribute domain. + # + # source://rack//lib/rack/mock_response.rb#14 + def domain; end + + # Returns the value of attribute expires. + # + # source://rack//lib/rack/mock_response.rb#14 + def expires; end + + # source://rack//lib/rack/mock_response.rb#25 + def method_missing(method_name, *args, **_arg2, &block); end + + # Returns the value of attribute name. + # + # source://rack//lib/rack/mock_response.rb#14 + def name; end + + # Returns the value of attribute path. + # + # source://rack//lib/rack/mock_response.rb#14 + def path; end + + # Returns the value of attribute secure. + # + # source://rack//lib/rack/mock_response.rb#14 + def secure; end + + # Returns the value of attribute value. + # + # source://rack//lib/rack/mock_response.rb#14 + def value; end + + private + + # :nocov: + # + # @return [Boolean] + # + # source://rack//lib/rack/mock_response.rb#32 + def respond_to_missing?(method_name, include_all = T.unsafe(nil)); end +end # A multipart form data parser, adapted from IOWA. # @@ -2163,22 +2164,35 @@ class Rack::Multipart::ParamList end end -# source://rack//lib/rack/multipart/parser.rb#41 +# Rack::Multipart::Parser handles parsing of multipart/form-data requests. +# +# File Parameter Contents +# +# When processing file uploads, the parser returns a hash containing +# information about uploaded files. For +file+ parameters, the hash includes: +# +# * +:filename+ - The original filename, already URL decoded by the parser +# * +:type+ - The content type of the uploaded file +# * +:name+ - The parameter name from the form +# * +:tempfile+ - A Tempfile object containing the uploaded data +# * +:head+ - The raw header content for this part +# +# source://rack//lib/rack/multipart/parser.rb#53 class Rack::Multipart::Parser # @return [Parser] a new instance of Parser # - # source://rack//lib/rack/multipart/parser.rb#202 + # source://rack//lib/rack/multipart/parser.rb#235 def initialize(boundary, tempfile, bufsize, query_parser); end - # source://rack//lib/rack/multipart/parser.rb#219 + # source://rack//lib/rack/multipart/parser.rb#254 def parse(io); end - # source://rack//lib/rack/multipart/parser.rb#242 + # source://rack//lib/rack/multipart/parser.rb#277 def result; end # Returns the value of attribute state. # - # source://rack//lib/rack/multipart/parser.rb#200 + # source://rack//lib/rack/multipart/parser.rb#233 def state; end private @@ -2188,25 +2202,23 @@ class Rack::Multipart::Parser # end of the boundary. If we don't find the start or end of the # boundary, clear the buffer and return nil. # - # source://rack//lib/rack/multipart/parser.rb#436 + # source://rack//lib/rack/multipart/parser.rb#493 def consume_boundary; end - # From WEBrick::HTTPUtils - # - # source://rack//lib/rack/multipart/parser.rb#254 - def dequote(str); end - # Return the related Encoding object. However, because # enc is submitted by the user, it may be invalid, so # use a binary encoding in that case. # - # source://rack//lib/rack/multipart/parser.rb#491 + # source://rack//lib/rack/multipart/parser.rb#548 def find_encoding(enc); end - # source://rack//lib/rack/multipart/parser.rb#296 + # source://rack//lib/rack/multipart/parser.rb#330 def handle_consume_token; end - # source://rack//lib/rack/multipart/parser.rb#497 + # source://rack//lib/rack/multipart/parser.rb#563 + def handle_dummy_encoding(name, body); end + + # source://rack//lib/rack/multipart/parser.rb#573 def handle_empty_content!(content); end # This handles the initial parser state. We read until we find the starting @@ -2217,117 +2229,129 @@ class Rack::Multipart::Parser # boundary. The client would have to deliberately craft a response # with the opening boundary beyond the buffer size for that to happen. # - # source://rack//lib/rack/multipart/parser.rb#273 + # source://rack//lib/rack/multipart/parser.rb#303 def handle_fast_forward; end - # source://rack//lib/rack/multipart/parser.rb#413 + # source://rack//lib/rack/multipart/parser.rb#460 def handle_mime_body; end - # source://rack//lib/rack/multipart/parser.rb#308 + # source://rack//lib/rack/multipart/parser.rb#342 def handle_mime_head; end - # source://rack//lib/rack/multipart/parser.rb#445 + # source://rack//lib/rack/multipart/parser.rb#502 def normalize_filename(filename); end - # source://rack//lib/rack/multipart/parser.rb#260 + # source://rack//lib/rack/multipart/parser.rb#290 def read_data(io, outbuf); end - # source://rack//lib/rack/multipart/parser.rb#458 + # source://rack//lib/rack/multipart/parser.rb#515 def tag_multipart_encoding(filename, content_type, name, body); end + # source://rack//lib/rack/multipart/parser.rb#482 + def update_retained_size(size); end + class << self - # source://rack//lib/rack/multipart/parser.rb#89 + # source://rack//lib/rack/multipart/parser.rb#122 def parse(io, content_length, content_type, tmpfile, bufsize, qp); end - # source://rack//lib/rack/multipart/parser.rb#82 + # source://rack//lib/rack/multipart/parser.rb#115 def parse_boundary(content_type); end end end -# source://rack//lib/rack/multipart/parser.rb#42 +# source://rack//lib/rack/multipart/parser.rb#62 +Rack::Multipart::Parser::BOUNDARY_START_LIMIT = T.let(T.unsafe(nil), Integer) + +# source://rack//lib/rack/multipart/parser.rb#80 +Rack::Multipart::Parser::BUFFERED_UPLOAD_BYTESIZE_LIMIT = T.let(T.unsafe(nil), Integer) + +# source://rack//lib/rack/multipart/parser.rb#54 Rack::Multipart::Parser::BUFSIZE = T.let(T.unsafe(nil), Integer) -# source://rack//lib/rack/multipart/parser.rb#50 +# source://rack//lib/rack/multipart/parser.rb#83 class Rack::Multipart::Parser::BoundedIO # @return [BoundedIO] a new instance of BoundedIO # - # source://rack//lib/rack/multipart/parser.rb#51 + # source://rack//lib/rack/multipart/parser.rb#84 def initialize(io, content_length); end - # source://rack//lib/rack/multipart/parser.rb#57 + # source://rack//lib/rack/multipart/parser.rb#90 def read(size, outbuf = T.unsafe(nil)); end end -# source://rack//lib/rack/multipart/parser.rb#455 +# source://rack//lib/rack/multipart/parser.rb#512 Rack::Multipart::Parser::CHARSET = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/multipart/parser.rb#307 +# source://rack//lib/rack/multipart/parser.rb#341 Rack::Multipart::Parser::CONTENT_DISPOSITION_MAX_BYTES = T.let(T.unsafe(nil), Integer) -# source://rack//lib/rack/multipart/parser.rb#306 +# source://rack//lib/rack/multipart/parser.rb#340 Rack::Multipart::Parser::CONTENT_DISPOSITION_MAX_PARAMS = T.let(T.unsafe(nil), Integer) -# source://rack//lib/rack/multipart/parser.rb#109 +# source://rack//lib/rack/multipart/parser.rb#142 class Rack::Multipart::Parser::Collector include ::Enumerable # @return [Collector] a new instance of Collector # - # source://rack//lib/rack/multipart/parser.rb#145 + # source://rack//lib/rack/multipart/parser.rb#178 def initialize(tempfile); end - # source://rack//lib/rack/multipart/parser.rb#151 + # source://rack//lib/rack/multipart/parser.rb#184 def each; end - # source://rack//lib/rack/multipart/parser.rb#171 + # source://rack//lib/rack/multipart/parser.rb#204 def on_mime_body(mime_index, content); end - # source://rack//lib/rack/multipart/parser.rb#175 + # source://rack//lib/rack/multipart/parser.rb#208 def on_mime_finish(mime_index); end - # source://rack//lib/rack/multipart/parser.rb#155 + # source://rack//lib/rack/multipart/parser.rb#188 def on_mime_head(mime_index, head, filename, content_type, name); end private - # source://rack//lib/rack/multipart/parser.rb#180 + # source://rack//lib/rack/multipart/parser.rb#213 def check_part_limits; end end -# source://rack//lib/rack/multipart/parser.rb#133 +# source://rack//lib/rack/multipart/parser.rb#166 class Rack::Multipart::Parser::Collector::BufferPart < ::Rack::Multipart::Parser::Collector::MimePart - # source://rack//lib/rack/multipart/parser.rb#135 + # source://rack//lib/rack/multipart/parser.rb#168 def close; end # @return [Boolean] # - # source://rack//lib/rack/multipart/parser.rb#134 + # source://rack//lib/rack/multipart/parser.rb#167 def file?; end end -# source://rack//lib/rack/multipart/parser.rb#110 +# source://rack//lib/rack/multipart/parser.rb#143 class Rack::Multipart::Parser::Collector::MimePart < ::Struct # @yield [data] # - # source://rack//lib/rack/multipart/parser.rb#111 + # source://rack//lib/rack/multipart/parser.rb#144 def get_data; end end -# source://rack//lib/rack/multipart/parser.rb#138 +# source://rack//lib/rack/multipart/parser.rb#171 class Rack::Multipart::Parser::Collector::TempfilePart < ::Rack::Multipart::Parser::Collector::MimePart - # source://rack//lib/rack/multipart/parser.rb#140 + # source://rack//lib/rack/multipart/parser.rb#173 def close; end # @return [Boolean] # - # source://rack//lib/rack/multipart/parser.rb#139 + # source://rack//lib/rack/multipart/parser.rb#172 def file?; end end -# source://rack//lib/rack/multipart/parser.rb#80 +# source://rack//lib/rack/multipart/parser.rb#113 Rack::Multipart::Parser::EMPTY = T.let(T.unsafe(nil), Rack::Multipart::Parser::MultipartInfo) -# source://rack//lib/rack/multipart/parser.rb#79 +# source://rack//lib/rack/multipart/parser.rb#65 +Rack::Multipart::Parser::MIME_HEADER_BYTESIZE_LIMIT = T.let(T.unsafe(nil), Integer) + +# source://rack//lib/rack/multipart/parser.rb#112 class Rack::Multipart::Parser::MultipartInfo < ::Struct # Returns the value of attribute params # @@ -2360,47 +2384,98 @@ class Rack::Multipart::Parser::MultipartInfo < ::Struct end end -# source://rack//lib/rack/multipart/parser.rb#44 +# source://rack//lib/rack/multipart/parser.rb#554 +Rack::Multipart::Parser::REENCODE_DUMMY_ENCODINGS = T.let(T.unsafe(nil), Hash) + +# source://rack//lib/rack/multipart/parser.rb#56 Rack::Multipart::Parser::TEMPFILE_FACTORY = T.let(T.unsafe(nil), Proc) -# source://rack//lib/rack/multipart/parser.rb#43 +# source://rack//lib/rack/multipart/parser.rb#55 Rack::Multipart::Parser::TEXT_PLAIN = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/multipart/uploaded_file.rb#8 +# Despite the misleading name, UploadedFile is designed for use for +# preparing multipart file upload bodies, generally for use in tests. +# It is not designed for and should not be used for handling uploaded +# files (there is no need for that, since Rack's multipart parser +# already creates Tempfiles for that). Using this with non-trusted +# filenames can create a security vulnerability. +# +# You should only use this class if you plan on passing the instances +# to Rack::MockRequest for use in creating multipart request bodies. +# +# UploadedFile delegates most methods to the tempfile it contains. +# +# source://rack//lib/rack/multipart/uploaded_file.rb#19 class Rack::Multipart::UploadedFile + # Create a new UploadedFile. For backwards compatibility, this accepts + # both positional and keyword versions of the same arguments: + # + # filepath/path :: The path to the file + # ct/content_type :: The content_type of the file + # bin/binary :: Whether to set binmode on the file before copying data into it. + # + # If both positional and keyword arguments are present, the keyword arguments + # take precedence. + # + # The following keyword-only arguments are also accepted: + # + # filename :: Override the filename to use for the file. This is so the + # filename for the upload does not need to match the basename of + # the file path. This should not contain slashes, unless you are + # trying to test how an application handles invalid filenames in + # multipart upload bodies. + # io :: Use the given IO-like instance as the tempfile, instead of creating + # a Tempfile instance. This is useful for building multipart file + # upload bodies without a file being present on the filesystem. If you are + # providing this, you should also provide the filename argument. + # # @return [UploadedFile] a new instance of UploadedFile # - # source://rack//lib/rack/multipart/uploaded_file.rb#16 + # source://rack//lib/rack/multipart/uploaded_file.rb#49 def initialize(filepath = T.unsafe(nil), ct = T.unsafe(nil), bin = T.unsafe(nil), path: T.unsafe(nil), content_type: T.unsafe(nil), binary: T.unsafe(nil), filename: T.unsafe(nil), io: T.unsafe(nil)); end - # The content type of the "uploaded" file + # The content type of the instance. # - # source://rack//lib/rack/multipart/uploaded_file.rb#14 + # source://rack//lib/rack/multipart/uploaded_file.rb#26 def content_type; end - # The content type of the "uploaded" file + # The content type of the instance. # - # source://rack//lib/rack/multipart/uploaded_file.rb#14 + # source://rack//lib/rack/multipart/uploaded_file.rb#26 def content_type=(_arg0); end - # source://rack//lib/rack/multipart/uploaded_file.rb#31 + # The path of the tempfile for the instance, if the tempfile has a path. + # nil if the tempfile does not have a path. + # + # source://rack//lib/rack/multipart/uploaded_file.rb#66 def local_path; end - # source://rack//lib/rack/multipart/uploaded_file.rb#40 + # Delegate method missing calls to the tempfile. + # + # source://rack//lib/rack/multipart/uploaded_file.rb#77 def method_missing(method_name, *args, &block); end - # The filename, *not* including the path, of the "uploaded" file + # The provided name of the file. This generally is the basename of + # path provided during initialization, but it can contain slashes if they + # were present in the filename argument when the instance was created. # - # source://rack//lib/rack/multipart/uploaded_file.rb#11 + # source://rack//lib/rack/multipart/uploaded_file.rb#23 def original_filename; end - # source://rack//lib/rack/multipart/uploaded_file.rb#31 + # The path of the tempfile for the instance, if the tempfile has a path. + # nil if the tempfile does not have a path. + # + # source://rack//lib/rack/multipart/uploaded_file.rb#66 def path; end + private + + # Return true if the tempfile responds to the method. + # # @return [Boolean] # - # source://rack//lib/rack/multipart/uploaded_file.rb#36 - def respond_to?(*args); end + # source://rack//lib/rack/multipart/uploaded_file.rb#72 + def respond_to_missing?(*args); end end # source://rack//lib/rack/null_logger.rb#6 @@ -2539,13 +2614,18 @@ Rack::QUERY_STRING = T.let(T.unsafe(nil), String) class Rack::QueryParser # @return [QueryParser] a new instance of QueryParser # - # source://rack//lib/rack/query_parser.rb#60 + # source://rack//lib/rack/query_parser.rb#62 def initialize(params_class, param_depth_limit, bytesize_limit: T.unsafe(nil), params_limit: T.unsafe(nil)); end - # source://rack//lib/rack/query_parser.rb#192 - def make_params; end + # Returns the value of attribute bytesize_limit. + # + # source://rack//lib/rack/query_parser.rb#60 + def bytesize_limit; end # source://rack//lib/rack/query_parser.rb#196 + def make_params; end + + # source://rack//lib/rack/query_parser.rb#200 def new_depth_limit(param_depth_limit); end # normalize_params recursively expands parameters into structural types. If @@ -2554,7 +2634,7 @@ class Rack::QueryParser # and should no longer be used, it is kept for backwards compatibility with # earlier versions of rack. # - # source://rack//lib/rack/query_parser.rb#120 + # source://rack//lib/rack/query_parser.rb#124 def normalize_params(params, name, v, _depth = T.unsafe(nil)); end # Returns the value of attribute param_depth_limit. @@ -2568,7 +2648,7 @@ class Rack::QueryParser # ParameterTypeError is raised. Users are encouraged to return a 400 in this # case. # - # source://rack//lib/rack/query_parser.rb#99 + # source://rack//lib/rack/query_parser.rb#109 def parse_nested_query(qs, separator = T.unsafe(nil)); end # Stolen from Mongrel, with some small modifications: @@ -2576,30 +2656,37 @@ class Rack::QueryParser # to parse cookies by changing the characters used in the second parameter # (which defaults to '&'). # - # source://rack//lib/rack/query_parser.rb#71 + # source://rack//lib/rack/query_parser.rb#73 def parse_query(qs, separator = T.unsafe(nil), &unescaper); end + # Parses a query string by breaking it up at the '&', returning all key-value + # pairs as an array of [key, value] arrays. Unlike parse_query, this preserves + # all duplicate keys rather than collapsing them. + # + # source://rack//lib/rack/query_parser.rb#94 + def parse_query_pairs(qs, separator = T.unsafe(nil)); end + private # @raise [ParamsTooDeepError] # - # source://rack//lib/rack/query_parser.rb#124 + # source://rack//lib/rack/query_parser.rb#128 def _normalize_params(params, name, v, depth); end - # source://rack//lib/rack/query_parser.rb#218 - def check_query_string(qs, sep); end + # source://rack//lib/rack/query_parser.rb#222 + def each_query_pair(qs, separator, unescaper = T.unsafe(nil)); end # @return [Boolean] # - # source://rack//lib/rack/query_parser.rb#206 + # source://rack//lib/rack/query_parser.rb#210 def params_hash_has_key?(hash, key); end # @return [Boolean] # - # source://rack//lib/rack/query_parser.rb#202 + # source://rack//lib/rack/query_parser.rb#206 def params_hash_type?(obj); end - # source://rack//lib/rack/query_parser.rb#234 + # source://rack//lib/rack/query_parser.rb#253 def unescape(string, encoding = T.unsafe(nil)); end class << self @@ -2637,7 +2724,7 @@ class Rack::QueryParser::ParameterTypeError < ::TypeError include ::Rack::BadRequest end -# source://rack//lib/rack/query_parser.rb#238 +# source://rack//lib/rack/query_parser.rb#257 class Rack::QueryParser::Params < ::Hash def to_params_hash; end end @@ -2676,7 +2763,7 @@ Rack::RACK_IS_HIJACK = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#45 Rack::RACK_LOGGER = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#66 +# source://rack//lib/rack/constants.rb#67 Rack::RACK_METHODOVERRIDE_ORIGINAL_METHOD = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#54 @@ -2685,34 +2772,37 @@ Rack::RACK_MULTIPART_BUFFER_SIZE = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#55 Rack::RACK_MULTIPART_TEMPFILE_FACTORY = T.let(T.unsafe(nil), String) +# source://rack//lib/rack/constants.rb#57 +Rack::RACK_PROTOCOL = T.let(T.unsafe(nil), String) + # source://rack//lib/rack/constants.rb#53 Rack::RACK_RECURSIVE_INCLUDE = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#62 +# source://rack//lib/rack/constants.rb#63 Rack::RACK_REQUEST_COOKIE_HASH = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#63 +# source://rack//lib/rack/constants.rb#64 Rack::RACK_REQUEST_COOKIE_STRING = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#61 +# source://rack//lib/rack/constants.rb#62 Rack::RACK_REQUEST_FORM_ERROR = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#58 +# source://rack//lib/rack/constants.rb#59 Rack::RACK_REQUEST_FORM_HASH = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#57 +# source://rack//lib/rack/constants.rb#58 Rack::RACK_REQUEST_FORM_INPUT = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#59 +# source://rack//lib/rack/constants.rb#60 Rack::RACK_REQUEST_FORM_PAIRS = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#60 +# source://rack//lib/rack/constants.rb#61 Rack::RACK_REQUEST_FORM_VARS = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#64 +# source://rack//lib/rack/constants.rb#65 Rack::RACK_REQUEST_QUERY_HASH = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#65 +# source://rack//lib/rack/constants.rb#66 Rack::RACK_REQUEST_QUERY_STRING = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#56 @@ -2738,7 +2828,7 @@ Rack::RACK_URL_SCHEME = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#41 Rack::RACK_VERSION = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/version.rb#15 +# source://rack//lib/rack/version.rb#11 Rack::RELEASE = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#9 @@ -2836,13 +2926,16 @@ class Rack::Request # source://rack//lib/rack/request.rb#62 def initialize(env); end - # source://rack//lib/rack/request.rb#76 + # source://rack//lib/rack/request.rb#81 def delete_param(k); end - # source://rack//lib/rack/request.rb#67 + # source://rack//lib/rack/request.rb#68 + def ip; end + + # source://rack//lib/rack/request.rb#72 def params; end - # source://rack//lib/rack/request.rb#71 + # source://rack//lib/rack/request.rb#76 def update_param(k, v); end class << self @@ -2915,9 +3008,9 @@ end # source://rack//lib/rack/request.rb#60 Rack::Request::ALLOWED_SCHEMES = T.let(T.unsafe(nil), Array) -# source://rack//lib/rack/request.rb#82 +# source://rack//lib/rack/request.rb#87 module Rack::Request::Env - # source://rack//lib/rack/request.rb#86 + # source://rack//lib/rack/request.rb#91 def initialize(env); end # Add a header that may have multiple values. @@ -2930,33 +3023,33 @@ module Rack::Request::Env # # http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 # - # source://rack//lib/rack/request.rb#129 + # source://rack//lib/rack/request.rb#134 def add_header(key, v); end # Delete a request specific value for `name`. # - # source://rack//lib/rack/request.rb#140 + # source://rack//lib/rack/request.rb#145 def delete_header(name); end # Loops through each key / value pair in the request specific data. # - # source://rack//lib/rack/request.rb#111 + # source://rack//lib/rack/request.rb#116 def each_header(&block); end # The environment of the request. # - # source://rack//lib/rack/request.rb#84 + # source://rack//lib/rack/request.rb#89 def env; end # If a block is given, it yields to the block if the value hasn't been set # on the request. # - # source://rack//lib/rack/request.rb#106 + # source://rack//lib/rack/request.rb#111 def fetch_header(name, &block); end # Get a request specific value for `name`. # - # source://rack//lib/rack/request.rb#100 + # source://rack//lib/rack/request.rb#105 def get_header(name); end # Predicate method to test to see if `name` has been set as request @@ -2964,25 +3057,25 @@ module Rack::Request::Env # # @return [Boolean] # - # source://rack//lib/rack/request.rb#95 + # source://rack//lib/rack/request.rb#100 def has_header?(name); end # Set a request specific value for `name` to `v` # - # source://rack//lib/rack/request.rb#116 + # source://rack//lib/rack/request.rb#121 def set_header(name, v); end private - # source://rack//lib/rack/request.rb#144 + # source://rack//lib/rack/request.rb#149 def initialize_copy(other); end end -# source://rack//lib/rack/request.rb#149 +# source://rack//lib/rack/request.rb#154 module Rack::Request::Helpers # Returns the data received in the query string. # - # source://rack//lib/rack/request.rb#484 + # source://rack//lib/rack/request.rb#491 def GET; end # Returns the data received in the request body. @@ -2990,13 +3083,13 @@ module Rack::Request::Helpers # This method support both application/x-www-form-urlencoded and # multipart/form-data. # - # source://rack//lib/rack/request.rb#503 + # source://rack//lib/rack/request.rb#542 def POST; end - # source://rack//lib/rack/request.rb#607 + # source://rack//lib/rack/request.rb#611 def accept_encoding; end - # source://rack//lib/rack/request.rb#611 + # source://rack//lib/rack/request.rb#615 def accept_language; end # The authority of the incoming request as defined by RFC3976. @@ -3005,13 +3098,13 @@ module Rack::Request::Helpers # In HTTP/1, this is the `host` header. # In HTTP/2, this is the `:authority` pseudo-header. # - # source://rack//lib/rack/request.rb#266 + # source://rack//lib/rack/request.rb#271 def authority; end - # source://rack//lib/rack/request.rb#590 + # source://rack//lib/rack/request.rb#594 def base_url; end - # source://rack//lib/rack/request.rb#190 + # source://rack//lib/rack/request.rb#195 def body; end # The character set of the request body if a "charset" media type @@ -3019,23 +3112,23 @@ module Rack::Request::Helpers # that, per RFC2616, text/* media types that specify no explicit # charset are to be considered ISO-8859-1. # - # source://rack//lib/rack/request.rb#458 + # source://rack//lib/rack/request.rb#465 def content_charset; end - # source://rack//lib/rack/request.rb#199 + # source://rack//lib/rack/request.rb#204 def content_length; end - # source://rack//lib/rack/request.rb#308 + # source://rack//lib/rack/request.rb#313 def content_type; end - # source://rack//lib/rack/request.rb#293 + # source://rack//lib/rack/request.rb#298 def cookies; end # Checks the HTTP request method (or verb) to see if it was of type DELETE # # @return [Boolean] # - # source://rack//lib/rack/request.rb#220 + # source://rack//lib/rack/request.rb#225 def delete?; end # Destructively delete a parameter, whether it's in GET or POST. Returns the value of the deleted parameter. @@ -3044,7 +3137,7 @@ module Rack::Request::Helpers # # env['rack.input'] is not touched. # - # source://rack//lib/rack/request.rb#585 + # source://rack//lib/rack/request.rb#589 def delete_param(k); end # Determine whether the request body contains form-data by checking @@ -3058,46 +3151,54 @@ module Rack::Request::Helpers # # @return [Boolean] # - # source://rack//lib/rack/request.rb#470 + # source://rack//lib/rack/request.rb#477 def form_data?; end - # source://rack//lib/rack/request.rb#393 + # Returns the form data pairs received in the request body. + # + # This method support both application/x-www-form-urlencoded and + # multipart/form-data. + # + # source://rack//lib/rack/request.rb#499 + def form_pairs; end + + # source://rack//lib/rack/request.rb#398 def forwarded_authority; end - # source://rack//lib/rack/request.rb#353 + # source://rack//lib/rack/request.rb#358 def forwarded_for; end - # source://rack//lib/rack/request.rb#374 + # source://rack//lib/rack/request.rb#379 def forwarded_port; end - # source://rack//lib/rack/request.rb#603 + # source://rack//lib/rack/request.rb#607 def fullpath; end # Checks the HTTP request method (or verb) to see if it was of type GET # # @return [Boolean] # - # source://rack//lib/rack/request.rb#223 + # source://rack//lib/rack/request.rb#228 def get?; end # Checks the HTTP request method (or verb) to see if it was of type HEAD # # @return [Boolean] # - # source://rack//lib/rack/request.rb#226 + # source://rack//lib/rack/request.rb#231 def head?; end # Returns a formatted host, suitable for being used in a URI. # - # source://rack//lib/rack/request.rb#333 + # source://rack//lib/rack/request.rb#338 def host; end # The `HTTP_HOST` header. # - # source://rack//lib/rack/request.rb#318 + # source://rack//lib/rack/request.rb#323 def host_authority; end - # source://rack//lib/rack/request.rb#322 + # source://rack//lib/rack/request.rb#327 def host_with_port(authority = T.unsafe(nil)); end # Returns an address suitable for being to resolve to an address. @@ -3105,20 +3206,20 @@ module Rack::Request::Helpers # as +host+. In the case of IPv6 or future address formats, the square # brackets are removed. # - # source://rack//lib/rack/request.rb#341 + # source://rack//lib/rack/request.rb#346 def hostname; end - # source://rack//lib/rack/request.rb#414 + # source://rack//lib/rack/request.rb#419 def ip; end # Checks the HTTP request method (or verb) to see if it was of type LINK # # @return [Boolean] # - # source://rack//lib/rack/request.rb#232 + # source://rack//lib/rack/request.rb#237 def link?; end - # source://rack//lib/rack/request.rb#200 + # source://rack//lib/rack/request.rb#205 def logger; end # The media type (type/subtype) portion of the CONTENT_TYPE header @@ -3128,7 +3229,7 @@ module Rack::Request::Helpers # For more information on the use of media types in HTTP, see: # http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7 # - # source://rack//lib/rack/request.rb#441 + # source://rack//lib/rack/request.rb#448 def media_type; end # The media type parameters provided in CONTENT_TYPE as a Hash, or @@ -3137,14 +3238,14 @@ module Rack::Request::Helpers # this method responds with the following Hash: # { 'charset' => 'utf-8' } # - # source://rack//lib/rack/request.rb#450 + # source://rack//lib/rack/request.rb#457 def media_type_params; end # Checks the HTTP request method (or verb) to see if it was of type OPTIONS # # @return [Boolean] # - # source://rack//lib/rack/request.rb#229 + # source://rack//lib/rack/request.rb#234 def options?; end # The union of GET and POST data. @@ -3159,107 +3260,113 @@ module Rack::Request::Helpers # # @return [Boolean] # - # source://rack//lib/rack/request.rb#479 + # source://rack//lib/rack/request.rb#486 def parseable_data?; end # Checks the HTTP request method (or verb) to see if it was of type PATCH # # @return [Boolean] # - # source://rack//lib/rack/request.rb#235 + # source://rack//lib/rack/request.rb#240 def patch?; end - # source://rack//lib/rack/request.rb#599 + # source://rack//lib/rack/request.rb#603 def path; end - # source://rack//lib/rack/request.rb#194 + # source://rack//lib/rack/request.rb#199 def path_info; end - # source://rack//lib/rack/request.rb#195 + # source://rack//lib/rack/request.rb#200 def path_info=(s); end - # source://rack//lib/rack/request.rb#345 + # source://rack//lib/rack/request.rb#350 def port; end # Checks the HTTP request method (or verb) to see if it was of type POST # # @return [Boolean] # - # source://rack//lib/rack/request.rb#238 + # source://rack//lib/rack/request.rb#243 def post?; end # Checks the HTTP request method (or verb) to see if it was of type PUT # # @return [Boolean] # - # source://rack//lib/rack/request.rb#241 + # source://rack//lib/rack/request.rb#246 def put?; end - # source://rack//lib/rack/request.rb#198 + # Allow overriding the query parser that the receiver will use. + # By default Rack::Utils.default_query_parser is used. + # + # source://rack//lib/rack/request.rb#562 + def query_parser=(_arg0); end + + # source://rack//lib/rack/request.rb#203 def query_string; end # the referer of the client # - # source://rack//lib/rack/request.rb#204 + # source://rack//lib/rack/request.rb#209 def referer; end # the referer of the client # - # source://rack//lib/rack/request.rb#204 + # source://rack//lib/rack/request.rb#209 def referrer; end - # source://rack//lib/rack/request.rb#197 + # source://rack//lib/rack/request.rb#202 def request_method; end - # source://rack//lib/rack/request.rb#249 + # source://rack//lib/rack/request.rb#254 def scheme; end - # source://rack//lib/rack/request.rb#191 + # source://rack//lib/rack/request.rb#196 def script_name; end - # source://rack//lib/rack/request.rb#192 + # source://rack//lib/rack/request.rb#197 def script_name=(s); end # The authority as defined by the `SERVER_NAME` and `SERVER_PORT` # variables. # - # source://rack//lib/rack/request.rb#272 + # source://rack//lib/rack/request.rb#277 def server_authority; end - # source://rack//lib/rack/request.rb#285 + # source://rack//lib/rack/request.rb#290 def server_name; end - # source://rack//lib/rack/request.rb#289 + # source://rack//lib/rack/request.rb#294 def server_port; end - # source://rack//lib/rack/request.rb#207 + # source://rack//lib/rack/request.rb#212 def session; end - # source://rack//lib/rack/request.rb#213 + # source://rack//lib/rack/request.rb#218 def session_options; end # @return [Boolean] # - # source://rack//lib/rack/request.rb#410 + # source://rack//lib/rack/request.rb#415 def ssl?; end # Checks the HTTP request method (or verb) to see if it was of type TRACE # # @return [Boolean] # - # source://rack//lib/rack/request.rb#244 + # source://rack//lib/rack/request.rb#249 def trace?; end # @return [Boolean] # - # source://rack//lib/rack/request.rb#615 + # source://rack//lib/rack/request.rb#619 def trusted_proxy?(ip); end # Checks the HTTP request method (or verb) to see if it was of type UNLINK # # @return [Boolean] # - # source://rack//lib/rack/request.rb#247 + # source://rack//lib/rack/request.rb#252 def unlink?; end # Destructively update a parameter, whether it's in GET and/or POST. Returns nil. @@ -3268,136 +3375,128 @@ module Rack::Request::Helpers # # env['rack.input'] is not touched. # - # source://rack//lib/rack/request.rb#565 + # source://rack//lib/rack/request.rb#569 def update_param(k, v); end # Tries to return a remake of the original request URL as a string. # - # source://rack//lib/rack/request.rb#595 + # source://rack//lib/rack/request.rb#599 def url; end - # source://rack//lib/rack/request.rb#201 + # source://rack//lib/rack/request.rb#206 def user_agent; end - # like Hash#values_at - # - # source://rack//lib/rack/request.rb#620 - def values_at(*keys); end - # @return [Boolean] # - # source://rack//lib/rack/request.rb#313 + # source://rack//lib/rack/request.rb#318 def xhr?; end private - # source://rack//lib/rack/request.rb#776 + # source://rack//lib/rack/request.rb#770 def allowed_scheme(header); end - # source://rack//lib/rack/request.rb#628 + # source://rack//lib/rack/request.rb#625 def default_session; end - # source://rack//lib/rack/request.rb#684 + # source://rack//lib/rack/request.rb#682 def expand_param_pairs(pairs, query_parser = T.unsafe(nil)); end - # source://rack//lib/rack/request.rb#780 + # source://rack//lib/rack/request.rb#774 def forwarded_priority; end - # source://rack//lib/rack/request.rb#752 + # source://rack//lib/rack/request.rb#746 def forwarded_scheme; end # Get an array of values set in the RFC 7239 `Forwarded` request header. # - # source://rack//lib/rack/request.rb#668 + # source://rack//lib/rack/request.rb#665 def get_http_forwarded(token); end - # source://rack//lib/rack/request.rb#644 + # source://rack//lib/rack/request.rb#641 def parse_http_accept_header(header); end - # source://rack//lib/rack/request.rb#680 + # source://rack//lib/rack/request.rb#677 def parse_multipart; end - # source://rack//lib/rack/request.rb#676 + # source://rack//lib/rack/request.rb#673 def parse_query(qs, d = T.unsafe(nil)); end - # source://rack//lib/rack/request.rb#672 + # source://rack//lib/rack/request.rb#669 def query_parser; end - # source://rack//lib/rack/request.rb#743 - def reject_trusted_ip_addresses(ip_addresses); end - - # source://rack//lib/rack/request.rb#737 + # source://rack//lib/rack/request.rb#735 def split_authority(authority); end - # source://rack//lib/rack/request.rb#694 + # source://rack//lib/rack/request.rb#692 def split_header(value); end # Assist with compatibility when processing `X-Forwarded-For`. # - # source://rack//lib/rack/request.rb#631 + # source://rack//lib/rack/request.rb#628 def wrap_ipv6(host); end - # source://rack//lib/rack/request.rb#784 + # source://rack//lib/rack/request.rb#778 def x_forwarded_proto_priority; end end -# source://rack//lib/rack/request.rb#722 +# source://rack//lib/rack/request.rb#720 Rack::Request::Helpers::AUTHORITY = T.let(T.unsafe(nil), Regexp) # Default ports depending on scheme. Used to decide whether or not # to include the port in a generated URI. # -# source://rack//lib/rack/request.rb#168 +# source://rack//lib/rack/request.rb#173 Rack::Request::Helpers::DEFAULT_PORTS = T.let(T.unsafe(nil), Hash) # The set of form-data media-types. Requests that do not indicate # one of the media types present in this list will not be eligible # for form-data / param parsing. # -# source://rack//lib/rack/request.rb#153 +# source://rack//lib/rack/request.rb#158 Rack::Request::Helpers::FORM_DATA_MEDIA_TYPES = T.let(T.unsafe(nil), Array) -# source://rack//lib/rack/request.rb#747 +# source://rack//lib/rack/request.rb#741 Rack::Request::Helpers::FORWARDED_SCHEME_HEADERS = T.let(T.unsafe(nil), Hash) -# source://rack//lib/rack/request.rb#176 +# source://rack//lib/rack/request.rb#181 Rack::Request::Helpers::HTTP_FORWARDED = T.let(T.unsafe(nil), String) # The address of the client which connected to the proxy. # -# source://rack//lib/rack/request.rb#171 +# source://rack//lib/rack/request.rb#176 Rack::Request::Helpers::HTTP_X_FORWARDED_FOR = T.let(T.unsafe(nil), String) # The contents of the host/:authority header sent to the proxy. # -# source://rack//lib/rack/request.rb#174 +# source://rack//lib/rack/request.rb#179 Rack::Request::Helpers::HTTP_X_FORWARDED_HOST = T.let(T.unsafe(nil), String) # The port used to connect to the proxy. # -# source://rack//lib/rack/request.rb#185 +# source://rack//lib/rack/request.rb#190 Rack::Request::Helpers::HTTP_X_FORWARDED_PORT = T.let(T.unsafe(nil), String) # The protocol used to connect to the proxy. # -# source://rack//lib/rack/request.rb#182 +# source://rack//lib/rack/request.rb#187 Rack::Request::Helpers::HTTP_X_FORWARDED_PROTO = T.let(T.unsafe(nil), String) # The value of the scheme sent to the proxy. # -# source://rack//lib/rack/request.rb#179 +# source://rack//lib/rack/request.rb#184 Rack::Request::Helpers::HTTP_X_FORWARDED_SCHEME = T.let(T.unsafe(nil), String) # Another way for specifying https scheme was used. # -# source://rack//lib/rack/request.rb#188 +# source://rack//lib/rack/request.rb#193 Rack::Request::Helpers::HTTP_X_FORWARDED_SSL = T.let(T.unsafe(nil), String) # The set of media-types. Requests that do not indicate # one of the media types present in this list will not be eligible # for param parsing like soap attachments or generic multiparts # -# source://rack//lib/rack/request.rb#161 +# source://rack//lib/rack/request.rb#166 Rack::Request::Helpers::PARSEABLE_DATA_MEDIA_TYPES = T.let(T.unsafe(nil), Array) # Rack::Response provides a convenient interface to create a Rack @@ -3838,7 +3937,7 @@ Rack::Response::STATUS_WITH_NO_ENTITY_BODY = T.let(T.unsafe(nil), Hash) class Rack::RewindableInput # @return [RewindableInput] a new instance of RewindableInput # - # source://rack//lib/rack/rewindable_input.rb#29 + # source://rack//lib/rack/rewindable_input.rb#32 def initialize(io); end # Closes this RewindableInput object without closing the originally @@ -3847,32 +3946,32 @@ class Rack::RewindableInput # # This method may be called multiple times. It does nothing on subsequent calls. # - # source://rack//lib/rack/rewindable_input.rb#65 + # source://rack//lib/rack/rewindable_input.rb#68 def close; end - # source://rack//lib/rack/rewindable_input.rb#45 + # source://rack//lib/rack/rewindable_input.rb#48 def each(&block); end - # source://rack//lib/rack/rewindable_input.rb#35 + # source://rack//lib/rack/rewindable_input.rb#38 def gets; end - # source://rack//lib/rack/rewindable_input.rb#40 + # source://rack//lib/rack/rewindable_input.rb#43 def read(*args); end - # source://rack//lib/rack/rewindable_input.rb#50 + # source://rack//lib/rack/rewindable_input.rb#53 def rewind; end - # source://rack//lib/rack/rewindable_input.rb#55 + # source://rack//lib/rack/rewindable_input.rb#58 def size; end private # @return [Boolean] # - # source://rack//lib/rack/rewindable_input.rb#109 + # source://rack//lib/rack/rewindable_input.rb#112 def filesystem_has_posix_semantics?; end - # source://rack//lib/rack/rewindable_input.rb#78 + # source://rack//lib/rack/rewindable_input.rb#81 def make_rewindable; end end @@ -3940,21 +4039,21 @@ Rack::SET_COOKIE = T.let(T.unsafe(nil), String) # delivery code. # # In order to take advantage of this middleware, the response body must -# respond to +to_path+ and the request must include an x-sendfile-type +# respond to +to_path+ and the request must include an `x-sendfile-type` # header. Rack::Files and other components implement +to_path+ so there's -# rarely anything you need to do in your application. The x-sendfile-type +# rarely anything you need to do in your application. The `x-sendfile-type` # header is typically set in your web servers configuration. The following # sections attempt to document # # === Nginx # -# Nginx supports the x-accel-redirect header. This is similar to x-sendfile +# Nginx supports the `x-accel-redirect` header. This is similar to `x-sendfile` # but requires parts of the filesystem to be mapped into a private URL # hierarchy. # # The following example shows the Nginx configuration required to create -# a private "/files/" area, enable x-accel-redirect, and pass the special -# x-sendfile-type and x-accel-mapping headers to the backend: +# a private "/files/" area, enable `x-accel-redirect`, and pass the special +# `x-accel-mapping` header to the backend: # # location ~ /files/(.*) { # internal; @@ -3968,24 +4067,29 @@ Rack::SET_COOKIE = T.let(T.unsafe(nil), String) # proxy_set_header X-Real-IP $remote_addr; # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # -# proxy_set_header x-sendfile-type x-accel-redirect; # proxy_set_header x-accel-mapping /var/www/=/files/; # # proxy_pass http://127.0.0.1:8080/; # } # -# Note that the x-sendfile-type header must be set exactly as shown above. -# The x-accel-mapping header should specify the location on the file system, +# The `x-accel-mapping` header should specify the location on the file system, # followed by an equals sign (=), followed name of the private URL pattern # that it maps to. The middleware performs a simple substitution on the # resulting path. # +# To enable `x-accel-redirect`, you must configure the middleware explicitly: +# +# use Rack::Sendfile, "x-accel-redirect" +# +# For security reasons, the `x-sendfile-type` header from requests is ignored. +# The sendfile variation must be set via the middleware constructor. +# # See Also: https://www.nginx.com/resources/wiki/start/topics/examples/xsendfile # # === lighttpd # -# Lighttpd has supported some variation of the x-sendfile header for some -# time, although only recent version support x-sendfile in a reverse proxy +# Lighttpd has supported some variation of the `x-sendfile` header for some +# time, although only recent version support `x-sendfile` in a reverse proxy # configuration. # # $HTTP["host"] == "example.com" { @@ -4007,7 +4111,7 @@ Rack::SET_COOKIE = T.let(T.unsafe(nil), String) # # === Apache # -# x-sendfile is supported under Apache 2.x using a separate module: +# `x-sendfile` is supported under Apache 2.x using a separate module: # # https://tn123.org/mod_xsendfile/ # @@ -4021,27 +4125,42 @@ Rack::SET_COOKIE = T.let(T.unsafe(nil), String) # === Mapping parameter # # The third parameter allows for an overriding extension of the -# x-accel-mapping header. Mappings should be provided in tuples of internal to +# `x-accel-mapping` header. Mappings should be provided in tuples of internal to # external. The internal values may contain regular expression syntax, they # will be matched with case indifference. # -# source://rack//lib/rack/sendfile.rb#104 +# When `x-accel-redirect` is explicitly enabled via the variation parameter, +# and no application-level mappings are provided, the middleware will read +# the `x-accel-mapping` header from the proxy. This allows nginx to control +# the path mapping without requiring application-level configuration. +# +# === Security +# +# For security reasons, the `x-sendfile-type` header from HTTP requests is +# ignored. The sendfile variation must be explicitly configured via the +# middleware constructor to prevent information disclosure vulnerabilities +# where attackers could bypass proxy restrictions. +# +# source://rack//lib/rack/sendfile.rb#121 class Rack::Sendfile # @return [Sendfile] a new instance of Sendfile # - # source://rack//lib/rack/sendfile.rb#105 + # source://rack//lib/rack/sendfile.rb#122 def initialize(app, variation = T.unsafe(nil), mappings = T.unsafe(nil)); end - # source://rack//lib/rack/sendfile.rb#113 + # source://rack//lib/rack/sendfile.rb#130 def call(env); end private - # source://rack//lib/rack/sendfile.rb#154 + # source://rack//lib/rack/sendfile.rb#182 def map_accel_path(env, path); end - # source://rack//lib/rack/sendfile.rb#148 + # source://rack//lib/rack/sendfile.rb#166 def variation(env); end + + # source://rack//lib/rack/sendfile.rb#172 + def x_accel_mapping(env); end end # Rack::ShowExceptions catches all exceptions raised from the app it @@ -4065,7 +4184,7 @@ class Rack::ShowExceptions # source://rack//lib/rack/show_exceptions.rb#65 def dump_exception(exception); end - # source://rack//lib/rack/show_exceptions.rb#116 + # source://rack//lib/rack/show_exceptions.rb#120 def h(obj); end # @return [Boolean] @@ -4073,10 +4192,10 @@ class Rack::ShowExceptions # source://rack//lib/rack/show_exceptions.rb#56 def prefers_plaintext?(env); end - # source://rack//lib/rack/show_exceptions.rb#76 + # source://rack//lib/rack/show_exceptions.rb#80 def pretty(env, exception); end - # source://rack//lib/rack/show_exceptions.rb#112 + # source://rack//lib/rack/show_exceptions.rb#116 def template; end private @@ -4189,7 +4308,7 @@ class Rack::ShowExceptions::Frame < ::Struct end end -# source://rack//lib/rack/show_exceptions.rb#131 +# source://rack//lib/rack/show_exceptions.rb#135 Rack::ShowExceptions::TEMPLATE = T.let(T.unsafe(nil), ERB) # Rack::ShowStatus catches all empty responses and replaces them @@ -4411,10 +4530,10 @@ module Rack::Utils # Returns nil if the header is missing or syntactically invalid. # Returns an empty array if none of the ranges are satisfiable. # - # source://rack//lib/rack/utils.rb#409 + # source://rack//lib/rack/utils.rb#402 def byte_ranges(env, size); end - # source://rack//lib/rack/utils.rb#609 + # source://rack//lib/rack/utils.rb#600 def clean_path_info(path_info); end # :nocov: @@ -4422,7 +4541,7 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#91 def clock_time; end - # source://rack//lib/rack/utils.rb#367 + # source://rack//lib/rack/utils.rb#360 def delete_cookie_header!(headers, key, value = T.unsafe(nil)); end # :call-seq: @@ -4439,7 +4558,7 @@ module Rack::Utils # delete_set_cookie_header("myname") # # => "myname=; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT" # - # source://rack//lib/rack/utils.rb#363 + # source://rack//lib/rack/utils.rb#356 def delete_set_cookie_header(key, value = T.unsafe(nil)); end # :call-seq: @@ -4460,7 +4579,7 @@ module Rack::Utils # header # # => ["mycookie=; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT"] # - # source://rack//lib/rack/utils.rb#391 + # source://rack//lib/rack/utils.rb#384 def delete_set_cookie_header!(header, key, value = T.unsafe(nil)); end # URI escapes. (CGI style space to +) @@ -4468,9 +4587,6 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#40 def escape(s); end - # source://rack//lib/rack/utils.rb#262 - def escape_cookie_key(key); end - # Escape ampersands, brackets and quotes to their HTML/XML entities. def escape_html(_arg0); end @@ -4483,7 +4599,7 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#149 def forwarded_values(forwarded_header); end - # source://rack//lib/rack/utils.rb#413 + # source://rack//lib/rack/utils.rb#406 def get_byte_ranges(http_range, size); end # :call-seq: @@ -4495,7 +4611,7 @@ module Rack::Utils # parse_cookies({'HTTP_COOKIE' => 'myname=myvalue'}) # # => {'myname' => 'myvalue'} # - # source://rack//lib/rack/utils.rb#253 + # source://rack//lib/rack/utils.rb#257 def parse_cookies(env); end # :call-seq: @@ -4508,7 +4624,7 @@ module Rack::Utils # parse_cookies_header('myname=myvalue; max-age=0') # # => {"myname"=>"myvalue", "max-age"=>"0"} # - # source://rack//lib/rack/utils.rb#234 + # source://rack//lib/rack/utils.rb#238 def parse_cookies_header(value); end # source://rack//lib/rack/utils.rb#106 @@ -4520,15 +4636,15 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#138 def q_values(q_value_header); end - # source://rack//lib/rack/utils.rb#402 + # source://rack//lib/rack/utils.rb#395 def rfc2822(time); end # :nocov: # - # source://rack//lib/rack/utils.rb#455 + # source://rack//lib/rack/utils.rb#448 def secure_compare(a, b); end - # source://rack//lib/rack/utils.rb#192 + # source://rack//lib/rack/utils.rb#196 def select_best_encoding(available_encodings, accept_encoding); end # :call-seq: @@ -4536,7 +4652,8 @@ module Rack::Utils # # Generate an encoded string using the provided +key+ and +value+ suitable # for the +set-cookie+ header according to RFC6265. The +value+ may be an - # instance of either +String+ or +Hash+. + # instance of either +String+ or +Hash+. If the cookie key is invalid (as + # defined by RFC6265), an +ArgumentError+ will be raised. # # If the cookie +value+ is an instance of +Hash+, it considers the following # cookie attribute keys: +domain+, +max_age+, +expires+ (must be instance @@ -4544,17 +4661,13 @@ module Rack::Utils # details about the interpretation of these fields, consult # [RFC6265 Section 5.2](https://datatracker.ietf.org/doc/html/rfc6265#section-5.2). # - # An extra cookie attribute +escape_key+ can be provided to control whether - # or not the cookie key is URL encoded. If explicitly set to +false+, the - # cookie key name will not be url encoded (escaped). The default is +true+. - # # set_cookie_header("myname", "myvalue") # # => "myname=myvalue" # # set_cookie_header("myname", {value: "myvalue", max_age: 10}) # # => "myname=myvalue; max-age=10" # - # source://rack//lib/rack/utils.rb#294 + # source://rack//lib/rack/utils.rb#286 def set_cookie_header(key, value); end # :call-seq: @@ -4566,10 +4679,10 @@ module Rack::Utils # If the headers already contains a +set-cookie+ key, it will be converted # to an +Array+ if not already, and appended to. # - # source://rack//lib/rack/utils.rb#337 + # source://rack//lib/rack/utils.rb#330 def set_cookie_header!(headers, key, value); end - # source://rack//lib/rack/utils.rb#589 + # source://rack//lib/rack/utils.rb#582 def status_code(status); end # Unescapes a URI escaped string with +encoding+. +encoding+ will be the @@ -4584,7 +4697,7 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#52 def unescape_path(s); end - # source://rack//lib/rack/utils.rb#626 + # source://rack//lib/rack/utils.rb#617 def valid_path?(path); end class << self @@ -4606,10 +4719,10 @@ module Rack::Utils # Returns nil if the header is missing or syntactically invalid. # Returns an empty array if none of the ranges are satisfiable. # - # source://rack//lib/rack/utils.rb#409 + # source://rack//lib/rack/utils.rb#402 def byte_ranges(env, size); end - # source://rack//lib/rack/utils.rb#609 + # source://rack//lib/rack/utils.rb#600 def clean_path_info(path_info); end # source://rack//lib/rack/utils.rb#91 @@ -4627,7 +4740,7 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#30 def default_query_parser=(_arg0); end - # source://rack//lib/rack/utils.rb#367 + # source://rack//lib/rack/utils.rb#360 def delete_cookie_header!(headers, key, value = T.unsafe(nil)); end # :call-seq: @@ -4644,7 +4757,7 @@ module Rack::Utils # delete_set_cookie_header("myname") # # => "myname=; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT" # - # source://rack//lib/rack/utils.rb#363 + # source://rack//lib/rack/utils.rb#356 def delete_set_cookie_header(key, value = T.unsafe(nil)); end # :call-seq: @@ -4665,7 +4778,7 @@ module Rack::Utils # header # # => ["mycookie=; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 GMT"] # - # source://rack//lib/rack/utils.rb#391 + # source://rack//lib/rack/utils.rb#384 def delete_set_cookie_header!(header, key, value = T.unsafe(nil)); end # URI escapes. (CGI style space to +) @@ -4673,9 +4786,6 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#40 def escape(s); end - # source://rack//lib/rack/utils.rb#262 - def escape_cookie_key(key); end - def escape_html(_arg0); end # Like URI escaping, but with %20 instead of +. Strictly speaking this is @@ -4687,7 +4797,7 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#149 def forwarded_values(forwarded_header); end - # source://rack//lib/rack/utils.rb#413 + # source://rack//lib/rack/utils.rb#406 def get_byte_ranges(http_range, size); end # Returns the value of attribute multipart_file_limit. @@ -4743,7 +4853,7 @@ module Rack::Utils # parse_cookies({'HTTP_COOKIE' => 'myname=myvalue'}) # # => {'myname' => 'myvalue'} # - # source://rack//lib/rack/utils.rb#253 + # source://rack//lib/rack/utils.rb#257 def parse_cookies(env); end # :call-seq: @@ -4756,7 +4866,7 @@ module Rack::Utils # parse_cookies_header('myname=myvalue; max-age=0') # # => {"myname"=>"myvalue", "max-age"=>"0"} # - # source://rack//lib/rack/utils.rb#234 + # source://rack//lib/rack/utils.rb#238 def parse_cookies_header(value); end # source://rack//lib/rack/utils.rb#106 @@ -4768,13 +4878,13 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#138 def q_values(q_value_header); end - # source://rack//lib/rack/utils.rb#402 + # source://rack//lib/rack/utils.rb#395 def rfc2822(time); end - # source://rack//lib/rack/utils.rb#455 + # source://rack//lib/rack/utils.rb#448 def secure_compare(a, b); end - # source://rack//lib/rack/utils.rb#192 + # source://rack//lib/rack/utils.rb#196 def select_best_encoding(available_encodings, accept_encoding); end # :call-seq: @@ -4782,7 +4892,8 @@ module Rack::Utils # # Generate an encoded string using the provided +key+ and +value+ suitable # for the +set-cookie+ header according to RFC6265. The +value+ may be an - # instance of either +String+ or +Hash+. + # instance of either +String+ or +Hash+. If the cookie key is invalid (as + # defined by RFC6265), an +ArgumentError+ will be raised. # # If the cookie +value+ is an instance of +Hash+, it considers the following # cookie attribute keys: +domain+, +max_age+, +expires+ (must be instance @@ -4790,17 +4901,13 @@ module Rack::Utils # details about the interpretation of these fields, consult # [RFC6265 Section 5.2](https://datatracker.ietf.org/doc/html/rfc6265#section-5.2). # - # An extra cookie attribute +escape_key+ can be provided to control whether - # or not the cookie key is URL encoded. If explicitly set to +false+, the - # cookie key name will not be url encoded (escaped). The default is +true+. - # # set_cookie_header("myname", "myvalue") # # => "myname=myvalue" # # set_cookie_header("myname", {value: "myvalue", max_age: 10}) # # => "myname=myvalue; max-age=10" # - # source://rack//lib/rack/utils.rb#294 + # source://rack//lib/rack/utils.rb#286 def set_cookie_header(key, value); end # :call-seq: @@ -4812,10 +4919,10 @@ module Rack::Utils # If the headers already contains a +set-cookie+ key, it will be converted # to an +Array+ if not already, and appended to. # - # source://rack//lib/rack/utils.rb#337 + # source://rack//lib/rack/utils.rb#330 def set_cookie_header!(headers, key, value); end - # source://rack//lib/rack/utils.rb#589 + # source://rack//lib/rack/utils.rb#582 def status_code(status); end # Unescapes a URI escaped string with +encoding+. +encoding+ will be the @@ -4832,7 +4939,7 @@ module Rack::Utils # @return [Boolean] # - # source://rack//lib/rack/utils.rb#626 + # source://rack//lib/rack/utils.rb#617 def valid_path?(path); end end end @@ -4846,30 +4953,30 @@ Rack::Utils::COMMON_SEP = T.let(T.unsafe(nil), Hash) # would be the request environment. The second of which would be the rack # application that the request would be forwarded to. # -# source://rack//lib/rack/utils.rb#478 +# source://rack//lib/rack/utils.rb#471 class Rack::Utils::Context # @return [Context] a new instance of Context # - # source://rack//lib/rack/utils.rb#481 + # source://rack//lib/rack/utils.rb#474 def initialize(app_f, app_r); end # Returns the value of attribute app. # - # source://rack//lib/rack/utils.rb#479 + # source://rack//lib/rack/utils.rb#472 def app; end - # source://rack//lib/rack/utils.rb#486 + # source://rack//lib/rack/utils.rb#479 def call(env); end - # source://rack//lib/rack/utils.rb#494 + # source://rack//lib/rack/utils.rb#487 def context(env, app = T.unsafe(nil)); end # Returns the value of attribute for. # - # source://rack//lib/rack/utils.rb#479 + # source://rack//lib/rack/utils.rb#472 def for; end - # source://rack//lib/rack/utils.rb#490 + # source://rack//lib/rack/utils.rb#483 def recontext(app); end end @@ -4883,7 +4990,7 @@ Rack::Utils::DEFAULT_SEP = T.let(T.unsafe(nil), Regexp) # .reject {|v| v['Description'] == 'Unassigned' or v['Description'].include? '(' } \ # .map {|v| %Q/#{v['Value']} => '#{v['Description']}'/ }.join(','+?\n)" # -# source://rack//lib/rack/utils.rb#505 +# source://rack//lib/rack/utils.rb#498 Rack::Utils::HTTP_STATUS_CODES = T.let(T.unsafe(nil), Hash) # source://rack//lib/rack/utils.rb#22 @@ -4892,16 +4999,16 @@ Rack::Utils::InvalidParameterError = Rack::QueryParser::InvalidParameterError # source://rack//lib/rack/utils.rb#26 Rack::Utils::KeySpaceConstrainedParams = Rack::QueryParser::Params -# source://rack//lib/rack/utils.rb#624 +# source://rack//lib/rack/utils.rb#615 Rack::Utils::NULL_BYTE = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/utils.rb#575 +# source://rack//lib/rack/utils.rb#568 Rack::Utils::OBSOLETE_SYMBOLS_TO_STATUS_CODES = T.let(T.unsafe(nil), Hash) -# source://rack//lib/rack/utils.rb#583 +# source://rack//lib/rack/utils.rb#576 Rack::Utils::OBSOLETE_SYMBOL_MAPPINGS = T.let(T.unsafe(nil), Hash) -# source://rack//lib/rack/utils.rb#607 +# source://rack//lib/rack/utils.rb#598 Rack::Utils::PATH_SEPS = T.let(T.unsafe(nil), Regexp) # source://rack//lib/rack/utils.rb#21 @@ -4912,17 +5019,20 @@ Rack::Utils::ParamsTooDeepError = Rack::QueryParser::QueryLimitError # Responses with HTTP status codes that should not have an entity body # -# source://rack//lib/rack/utils.rb#569 +# source://rack//lib/rack/utils.rb#562 Rack::Utils::STATUS_WITH_NO_ENTITY_BODY = T.let(T.unsafe(nil), Hash) -# source://rack//lib/rack/utils.rb#571 +# source://rack//lib/rack/utils.rb#564 Rack::Utils::SYMBOL_TO_STATUS_CODE = T.let(T.unsafe(nil), Hash) # source://rack//lib/rack/utils.rb#27 Rack::Utils::URI_PARSER = T.let(T.unsafe(nil), URI::RFC2396_Parser) -# A valid cookie key according to RFC2616. +# A valid cookie key according to RFC6265 and RFC2616. # A can be any US-ASCII characters, except control characters, spaces, or tabs. It also must not contain a separator character like the following: ( ) < > @ , ; : \ " / [ ] ? = { }. # -# source://rack//lib/rack/utils.rb#259 +# source://rack//lib/rack/utils.rb#263 Rack::Utils::VALID_COOKIE_KEY = T.let(T.unsafe(nil), Regexp) + +# source://rack//lib/rack/version.rb#9 +Rack::VERSION = T.let(T.unsafe(nil), String) diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/rbi@0.3.6.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/rbi@0.3.7.rbi similarity index 87% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/rbi@0.3.6.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/rbi@0.3.7.rbi index 94b64cbfe6..82dd8b8f76 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/rbi@0.3.6.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/rbi@0.3.7.rbi @@ -14,48 +14,55 @@ # source://rbi//lib/rbi.rb#7 module RBI; end -# source://rbi//lib/rbi/model.rb#783 +# source://rbi//lib/rbi/model.rb#833 class RBI::Arg < ::RBI::Node # : (String value, ?loc: Loc?) -> void # # @return [Arg] a new instance of Arg # - # source://rbi//lib/rbi/model.rb#788 + # source://rbi//lib/rbi/model.rb#838 sig { params(value: ::String, loc: T.nilable(::RBI::Loc)).void } def initialize(value, loc: T.unsafe(nil)); end # : (Object? other) -> bool # - # source://rbi//lib/rbi/model.rb#794 + # source://rbi//lib/rbi/model.rb#844 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end # : -> String # - # source://rbi//lib/rbi/model.rb#799 + # source://rbi//lib/rbi/model.rb#849 sig { returns(::String) } def to_s; end # : String # - # source://rbi//lib/rbi/model.rb#785 + # source://rbi//lib/rbi/model.rb#835 sig { returns(::String) } def value; end end # @abstract # -# source://rbi//lib/rbi/model.rb#292 +# source://rbi//lib/rbi/model.rb#298 class RBI::Attr < ::RBI::NodeWithComments include ::RBI::Indexable abstract! - # : (Symbol name, Array[Symbol] names, ?visibility: Visibility, ?sigs: Array[Sig], ?loc: Loc?, ?comments: Array[Comment]) -> void + # : ( + # | Symbol name, + # | Array[Symbol] names, + # | ?visibility: Visibility, + # | ?sigs: Array[Sig], + # | ?loc: Loc?, + # | ?comments: Array[Comment] + # | ) -> void # # @return [Attr] a new instance of Attr # - # source://rbi//lib/rbi/model.rb#303 + # source://rbi//lib/rbi/model.rb#316 sig do params( name: ::Symbol, @@ -72,13 +79,14 @@ class RBI::Attr < ::RBI::NodeWithComments # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#403 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#407 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end # : -> Array[Method] # # @abstract + # @raise [NotImplementedError] # # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#59 sig { abstract.returns(T::Array[::RBI::Method]) } @@ -87,8 +95,9 @@ class RBI::Attr < ::RBI::NodeWithComments # : -> Array[String] # # @abstract + # @raise [NotImplementedError] # - # source://rbi//lib/rbi/model.rb#312 + # source://rbi//lib/rbi/model.rb#325 sig { abstract.returns(T::Array[::String]) } def fully_qualified_names; end @@ -100,31 +109,31 @@ class RBI::Attr < ::RBI::NodeWithComments # : (Node other) -> void # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#412 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#416 sig { override.params(other: ::RBI::Node).void } def merge_with(other); end # : Array[Symbol] # - # source://rbi//lib/rbi/model.rb#294 + # source://rbi//lib/rbi/model.rb#300 sig { returns(T::Array[::Symbol]) } def names; end # : Array[Sig] # - # source://rbi//lib/rbi/model.rb#300 + # source://rbi//lib/rbi/model.rb#306 sig { returns(T::Array[::RBI::Sig]) } def sigs; end # : Visibility # - # source://rbi//lib/rbi/model.rb#297 + # source://rbi//lib/rbi/model.rb#303 sig { returns(::RBI::Visibility) } def visibility; end # : Visibility # - # source://rbi//lib/rbi/model.rb#297 + # source://rbi//lib/rbi/model.rb#303 def visibility=(_arg0); end private @@ -143,9 +152,16 @@ class RBI::Attr < ::RBI::NodeWithComments end def create_getter_method(name, sig, visibility, loc, comments); end - # : (String name, Sig? sig, (Type | String)? attribute_type, Visibility visibility, Loc? loc, Array[Comment] comments) -> Method - # - # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#92 + # : ( + # | String name, + # | Sig? sig, + # | (Type | String)? attribute_type, + # | Visibility visibility, + # | Loc? loc, + # | Array[Comment] comments + # | ) -> Method + # + # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#99 sig do params( name: ::String, @@ -167,13 +183,20 @@ class RBI::Attr < ::RBI::NodeWithComments def parse_sig; end end -# source://rbi//lib/rbi/model.rb#315 +# source://rbi//lib/rbi/model.rb#328 class RBI::AttrAccessor < ::RBI::Attr - # : (Symbol name, *Symbol names, ?visibility: Visibility, ?sigs: Array[Sig], ?loc: Loc?, ?comments: Array[Comment]) ?{ (AttrAccessor node) -> void } -> void + # : ( + # | Symbol name, + # | *Symbol names, + # | ?visibility: Visibility, + # | ?sigs: Array[Sig], + # | ?loc: Loc?, + # | ?comments: Array[Comment] + # | ) ?{ (AttrAccessor node) -> void } -> void # # @return [AttrAccessor] a new instance of AttrAccessor # - # source://rbi//lib/rbi/model.rb#317 + # source://rbi//lib/rbi/model.rb#337 sig do params( name: ::Symbol, @@ -191,36 +214,43 @@ class RBI::AttrAccessor < ::RBI::Attr # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#441 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#445 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end # : -> Array[Method] # - # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#123 + # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#130 sig { override.returns(T::Array[::RBI::Method]) } def convert_to_methods; end # : -> Array[String] # - # source://rbi//lib/rbi/model.rb#324 + # source://rbi//lib/rbi/model.rb#344 sig { override.returns(T::Array[::String]) } def fully_qualified_names; end # : -> String # - # source://rbi//lib/rbi/model.rb#331 + # source://rbi//lib/rbi/model.rb#351 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#337 +# source://rbi//lib/rbi/model.rb#357 class RBI::AttrReader < ::RBI::Attr - # : (Symbol name, *Symbol names, ?visibility: Visibility, ?sigs: Array[Sig], ?loc: Loc?, ?comments: Array[Comment]) ?{ (AttrReader node) -> void } -> void + # : ( + # | Symbol name, + # | *Symbol names, + # | ?visibility: Visibility, + # | ?sigs: Array[Sig], + # | ?loc: Loc?, + # | ?comments: Array[Comment] + # | ) ?{ (AttrReader node) -> void } -> void # # @return [AttrReader] a new instance of AttrReader # - # source://rbi//lib/rbi/model.rb#339 + # source://rbi//lib/rbi/model.rb#366 sig do params( name: ::Symbol, @@ -238,36 +268,43 @@ class RBI::AttrReader < ::RBI::Attr # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#425 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#429 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end # : -> Array[Method] # - # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#138 + # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#145 sig { override.returns(T::Array[::RBI::Method]) } def convert_to_methods; end # : -> Array[String] # - # source://rbi//lib/rbi/model.rb#346 + # source://rbi//lib/rbi/model.rb#373 sig { override.returns(T::Array[::String]) } def fully_qualified_names; end # : -> String # - # source://rbi//lib/rbi/model.rb#353 + # source://rbi//lib/rbi/model.rb#380 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#359 +# source://rbi//lib/rbi/model.rb#386 class RBI::AttrWriter < ::RBI::Attr - # : (Symbol name, *Symbol names, ?visibility: Visibility, ?sigs: Array[Sig], ?loc: Loc?, ?comments: Array[Comment]) ?{ (AttrWriter node) -> void } -> void + # : ( + # | Symbol name, + # | *Symbol names, + # | ?visibility: Visibility, + # | ?sigs: Array[Sig], + # | ?loc: Loc?, + # | ?comments: Array[Comment] + # | ) ?{ (AttrWriter node) -> void } -> void # # @return [AttrWriter] a new instance of AttrWriter # - # source://rbi//lib/rbi/model.rb#361 + # source://rbi//lib/rbi/model.rb#395 sig do params( name: ::Symbol, @@ -285,25 +322,25 @@ class RBI::AttrWriter < ::RBI::Attr # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#433 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#437 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end # : -> Array[Method] # - # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#148 + # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#155 sig { override.returns(T::Array[::RBI::Method]) } def convert_to_methods; end # : -> Array[String] # - # source://rbi//lib/rbi/model.rb#368 + # source://rbi//lib/rbi/model.rb#402 sig { override.returns(T::Array[::String]) } def fully_qualified_names; end # : -> String # - # source://rbi//lib/rbi/model.rb#375 + # source://rbi//lib/rbi/model.rb#409 sig { override.returns(::String) } def to_s; end end @@ -321,13 +358,13 @@ class RBI::BlankLine < ::RBI::Comment def initialize(loc: T.unsafe(nil)); end end -# source://rbi//lib/rbi/model.rb#629 +# source://rbi//lib/rbi/model.rb#679 class RBI::BlockParam < ::RBI::Param # : (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (BlockParam node) -> void } -> void # # @return [BlockParam] a new instance of BlockParam # - # source://rbi//lib/rbi/model.rb#631 + # source://rbi//lib/rbi/model.rb#681 sig do params( name: ::String, @@ -340,13 +377,13 @@ class RBI::BlockParam < ::RBI::Param # : (Object? other) -> bool # - # source://rbi//lib/rbi/model.rb#643 + # source://rbi//lib/rbi/model.rb#693 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end # : -> String # - # source://rbi//lib/rbi/model.rb#638 + # source://rbi//lib/rbi/model.rb#688 sig { override.returns(::String) } def to_s; end end @@ -373,7 +410,7 @@ class RBI::Class < ::RBI::Scope # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#371 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#375 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -449,42 +486,42 @@ end # end # ~~~ # -# source://rbi//lib/rbi/rewriters/merge_trees.rb#555 +# source://rbi//lib/rbi/rewriters/merge_trees.rb#559 class RBI::ConflictTree < ::RBI::Tree # : (?left_name: String, ?right_name: String) -> void # # @return [ConflictTree] a new instance of ConflictTree # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#563 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#567 sig { params(left_name: ::String, right_name: ::String).void } def initialize(left_name: T.unsafe(nil), right_name: T.unsafe(nil)); end # : Tree # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#557 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#561 sig { returns(::RBI::Tree) } def left; end # : String # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#560 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#564 sig { returns(::String) } def left_name; end # : Tree # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#557 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#561 def right; end # : String # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#560 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#564 def right_name; end end # Consts # -# source://rbi//lib/rbi/model.rb#263 +# source://rbi//lib/rbi/model.rb#269 class RBI::Const < ::RBI::NodeWithComments include ::RBI::Indexable @@ -492,7 +529,7 @@ class RBI::Const < ::RBI::NodeWithComments # # @return [Const] a new instance of Const # - # source://rbi//lib/rbi/model.rb#268 + # source://rbi//lib/rbi/model.rb#274 sig do params( name: ::String, @@ -508,13 +545,13 @@ class RBI::Const < ::RBI::NodeWithComments # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#395 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#399 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end # : -> String # - # source://rbi//lib/rbi/model.rb#276 + # source://rbi//lib/rbi/model.rb#282 sig { returns(::String) } def fully_qualified_name; end @@ -526,29 +563,29 @@ class RBI::Const < ::RBI::NodeWithComments # : String # - # source://rbi//lib/rbi/model.rb#265 + # source://rbi//lib/rbi/model.rb#271 sig { returns(::String) } def name; end # : -> String # - # source://rbi//lib/rbi/model.rb#284 + # source://rbi//lib/rbi/model.rb#290 sig { override.returns(::String) } def to_s; end # : String # - # source://rbi//lib/rbi/model.rb#265 + # source://rbi//lib/rbi/model.rb#271 def value; end end -# source://rbi//lib/rbi/rewriters/merge_trees.rb#341 +# source://rbi//lib/rbi/rewriters/merge_trees.rb#345 class RBI::DuplicateNodeError < ::RBI::Error; end # source://rbi//lib/rbi.rb#8 class RBI::Error < ::StandardError; end -# source://rbi//lib/rbi/model.rb#676 +# source://rbi//lib/rbi/model.rb#726 class RBI::Extend < ::RBI::Mixin include ::RBI::Indexable @@ -556,7 +593,7 @@ class RBI::Extend < ::RBI::Mixin # # @return [Extend] a new instance of Extend # - # source://rbi//lib/rbi/model.rb#678 + # source://rbi//lib/rbi/model.rb#728 sig do params( name: ::String, @@ -572,7 +609,7 @@ class RBI::Extend < ::RBI::Mixin # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#488 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#492 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -584,7 +621,7 @@ class RBI::Extend < ::RBI::Mixin # : -> String # - # source://rbi//lib/rbi/model.rb#685 + # source://rbi//lib/rbi/model.rb#735 sig { override.returns(::String) } def to_s; end end @@ -632,7 +669,7 @@ class RBI::File # : (?out: (IO | StringIO), ?indent: Integer, ?print_locs: bool, ?max_line_length: Integer?) -> void # - # source://rbi//lib/rbi/printer.rb#817 + # source://rbi//lib/rbi/printer.rb#819 sig do params( out: T.any(::IO, ::StringIO), @@ -645,13 +682,13 @@ class RBI::File # : (?out: (IO | StringIO), ?indent: Integer, ?print_locs: bool) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1210 + # source://rbi//lib/rbi/rbs_printer.rb#1212 sig { params(out: T.any(::IO, ::StringIO), indent: ::Integer, print_locs: T::Boolean).void } def rbs_print(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil)); end # : (?indent: Integer, ?print_locs: bool) -> String # - # source://rbi//lib/rbi/rbs_printer.rb#1216 + # source://rbi//lib/rbi/rbs_printer.rb#1218 sig { params(indent: ::Integer, print_locs: T::Boolean).returns(::String) } def rbs_string(indent: T.unsafe(nil), print_locs: T.unsafe(nil)); end @@ -679,18 +716,26 @@ class RBI::File # : (?indent: Integer, ?print_locs: bool, ?max_line_length: Integer?) -> String # - # source://rbi//lib/rbi/printer.rb#823 + # source://rbi//lib/rbi/printer.rb#825 sig { params(indent: ::Integer, print_locs: T::Boolean, max_line_length: T.nilable(::Integer)).returns(::String) } def string(indent: T.unsafe(nil), print_locs: T.unsafe(nil), max_line_length: T.unsafe(nil)); end end # source://rbi//lib/rbi/formatter.rb#5 class RBI::Formatter - # : (?add_sig_templates: bool, ?group_nodes: bool, ?max_line_length: Integer?, ?nest_singleton_methods: bool, ?nest_non_public_members: bool, ?sort_nodes: bool, ?replace_attributes_with_methods: bool) -> void + # : ( + # | ?add_sig_templates: bool, + # | ?group_nodes: bool, + # | ?max_line_length: Integer?, + # | ?nest_singleton_methods: bool, + # | ?nest_non_public_members: bool, + # | ?sort_nodes: bool, + # | ?replace_attributes_with_methods: bool + # | ) -> void # # @return [Formatter] a new instance of Formatter # - # source://rbi//lib/rbi/formatter.rb#10 + # source://rbi//lib/rbi/formatter.rb#18 sig do params( add_sig_templates: T::Boolean, @@ -706,13 +751,13 @@ class RBI::Formatter # : (RBI::File file) -> void # - # source://rbi//lib/rbi/formatter.rb#35 + # source://rbi//lib/rbi/formatter.rb#43 sig { params(file: ::RBI::File).void } def format_file(file); end # : (RBI::Tree tree) -> void # - # source://rbi//lib/rbi/formatter.rb#40 + # source://rbi//lib/rbi/formatter.rb#48 sig { params(tree: ::RBI::Tree).void } def format_tree(tree); end @@ -729,7 +774,7 @@ class RBI::Formatter # : (RBI::File file) -> String # - # source://rbi//lib/rbi/formatter.rb#29 + # source://rbi//lib/rbi/formatter.rb#37 sig { params(file: ::RBI::File).returns(::String) } def print_file(file); end end @@ -830,7 +875,7 @@ class RBI::GroupNodesError < ::RBI::Error; end # Sorbet's misc. # -# source://rbi//lib/rbi/model.rb#1045 +# source://rbi//lib/rbi/model.rb#1141 class RBI::Helper < ::RBI::NodeWithComments include ::RBI::Indexable @@ -838,7 +883,7 @@ class RBI::Helper < ::RBI::NodeWithComments # # @return [Helper] a new instance of Helper # - # source://rbi//lib/rbi/model.rb#1050 + # source://rbi//lib/rbi/model.rb#1146 sig do params( name: ::String, @@ -853,7 +898,7 @@ class RBI::Helper < ::RBI::NodeWithComments # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#504 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#508 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -865,18 +910,18 @@ class RBI::Helper < ::RBI::NodeWithComments # : String # - # source://rbi//lib/rbi/model.rb#1047 + # source://rbi//lib/rbi/model.rb#1143 sig { returns(::String) } def name; end # : -> String # - # source://rbi//lib/rbi/model.rb#1058 + # source://rbi//lib/rbi/model.rb#1154 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#662 +# source://rbi//lib/rbi/model.rb#712 class RBI::Include < ::RBI::Mixin include ::RBI::Indexable @@ -884,7 +929,7 @@ class RBI::Include < ::RBI::Mixin # # @return [Include] a new instance of Include # - # source://rbi//lib/rbi/model.rb#664 + # source://rbi//lib/rbi/model.rb#714 sig do params( name: ::String, @@ -900,7 +945,7 @@ class RBI::Include < ::RBI::Mixin # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#480 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#484 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -912,7 +957,7 @@ class RBI::Include < ::RBI::Mixin # : -> String # - # source://rbi//lib/rbi/model.rb#671 + # source://rbi//lib/rbi/model.rb#721 sig { override.returns(::String) } def to_s; end end @@ -981,48 +1026,49 @@ module RBI::Indexable # : -> Array[String] # # @abstract + # @raise [NotImplementedError] # # source://rbi//lib/rbi/index.rb#76 sig { abstract.returns(T::Array[::String]) } def index_ids; end end -# source://rbi//lib/rbi/model.rb#804 +# source://rbi//lib/rbi/model.rb#854 class RBI::KwArg < ::RBI::Arg # : (String keyword, String value, ?loc: Loc?) -> void # # @return [KwArg] a new instance of KwArg # - # source://rbi//lib/rbi/model.rb#809 + # source://rbi//lib/rbi/model.rb#859 sig { params(keyword: ::String, value: ::String, loc: T.nilable(::RBI::Loc)).void } def initialize(keyword, value, loc: T.unsafe(nil)); end # : (Object? other) -> bool # - # source://rbi//lib/rbi/model.rb#815 + # source://rbi//lib/rbi/model.rb#865 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end # : String # - # source://rbi//lib/rbi/model.rb#806 + # source://rbi//lib/rbi/model.rb#856 sig { returns(::String) } def keyword; end # : -> String # - # source://rbi//lib/rbi/model.rb#820 + # source://rbi//lib/rbi/model.rb#870 sig { returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#587 +# source://rbi//lib/rbi/model.rb#637 class RBI::KwOptParam < ::RBI::Param # : (String name, String value, ?loc: Loc?, ?comments: Array[Comment]) ?{ (KwOptParam node) -> void } -> void # # @return [KwOptParam] a new instance of KwOptParam # - # source://rbi//lib/rbi/model.rb#592 + # source://rbi//lib/rbi/model.rb#642 sig do params( name: ::String, @@ -1036,30 +1082,30 @@ class RBI::KwOptParam < ::RBI::Param # : (Object? other) -> bool # - # source://rbi//lib/rbi/model.rb#605 + # source://rbi//lib/rbi/model.rb#655 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end # : -> String # - # source://rbi//lib/rbi/model.rb#600 + # source://rbi//lib/rbi/model.rb#650 sig { override.returns(::String) } def to_s; end # : String # - # source://rbi//lib/rbi/model.rb#589 + # source://rbi//lib/rbi/model.rb#639 sig { returns(::String) } def value; end end -# source://rbi//lib/rbi/model.rb#568 +# source://rbi//lib/rbi/model.rb#618 class RBI::KwParam < ::RBI::Param # : (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (KwParam node) -> void } -> void # # @return [KwParam] a new instance of KwParam # - # source://rbi//lib/rbi/model.rb#570 + # source://rbi//lib/rbi/model.rb#620 sig do params( name: ::String, @@ -1072,24 +1118,24 @@ class RBI::KwParam < ::RBI::Param # : (Object? other) -> bool # - # source://rbi//lib/rbi/model.rb#582 + # source://rbi//lib/rbi/model.rb#632 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end # : -> String # - # source://rbi//lib/rbi/model.rb#577 + # source://rbi//lib/rbi/model.rb#627 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#610 +# source://rbi//lib/rbi/model.rb#660 class RBI::KwRestParam < ::RBI::Param # : (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (KwRestParam node) -> void } -> void # # @return [KwRestParam] a new instance of KwRestParam # - # source://rbi//lib/rbi/model.rb#612 + # source://rbi//lib/rbi/model.rb#662 sig do params( name: ::String, @@ -1102,24 +1148,30 @@ class RBI::KwRestParam < ::RBI::Param # : (Object? other) -> bool # - # source://rbi//lib/rbi/model.rb#624 + # source://rbi//lib/rbi/model.rb#674 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end # : -> String # - # source://rbi//lib/rbi/model.rb#619 + # source://rbi//lib/rbi/model.rb#669 sig { override.returns(::String) } def to_s; end end # source://rbi//lib/rbi/loc.rb#5 class RBI::Loc - # : (?file: String?, ?begin_line: Integer?, ?end_line: Integer?, ?begin_column: Integer?, ?end_column: Integer?) -> void + # : ( + # | ?file: String?, + # | ?begin_line: Integer?, + # | ?end_line: Integer?, + # | ?begin_column: Integer?, + # | ?end_column: Integer? + # | ) -> void # # @return [Loc] a new instance of Loc # - # source://rbi//lib/rbi/loc.rb#26 + # source://rbi//lib/rbi/loc.rb#32 sig do params( file: T.nilable(::String), @@ -1160,19 +1212,19 @@ class RBI::Loc # : (Loc) -> Loc # - # source://rbi//lib/rbi/loc.rb#35 + # source://rbi//lib/rbi/loc.rb#41 sig { params(other: ::RBI::Loc).returns(::RBI::Loc) } def join(other); end # : -> String? # - # source://rbi//lib/rbi/loc.rb#55 + # source://rbi//lib/rbi/loc.rb#61 sig { returns(T.nilable(::String)) } def source; end # : -> String # - # source://rbi//lib/rbi/loc.rb#46 + # source://rbi//lib/rbi/loc.rb#52 sig { returns(::String) } def to_s; end @@ -1189,11 +1241,15 @@ end # # source://rbi//lib/rbi/rewriters/merge_trees.rb#329 class RBI::MergeTree < ::RBI::Tree - # : (?loc: Loc?, ?comments: Array[Comment], ?conflicts: Array[Rewriters::Merge::Conflict]) ?{ (Tree node) -> void } -> void + # : ( + # | ?loc: Loc?, + # | ?comments: Array[Comment], + # | ?conflicts: Array[Rewriters::Merge::Conflict] + # | ) ?{ (Tree node) -> void } -> void # # @return [MergeTree] a new instance of MergeTree # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#334 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#338 sig do params( loc: T.nilable(::RBI::Loc), @@ -1213,15 +1269,23 @@ end # Methods and args # -# source://rbi//lib/rbi/model.rb#383 +# source://rbi//lib/rbi/model.rb#417 class RBI::Method < ::RBI::NodeWithComments include ::RBI::Indexable - # : (String name, ?params: Array[Param], ?is_singleton: bool, ?visibility: Visibility, ?sigs: Array[Sig], ?loc: Loc?, ?comments: Array[Comment]) ?{ (Method node) -> void } -> void + # : ( + # | String name, + # | ?params: Array[Param], + # | ?is_singleton: bool, + # | ?visibility: Visibility, + # | ?sigs: Array[Sig], + # | ?loc: Loc?, + # | ?comments: Array[Comment] + # | ) ?{ (Method node) -> void } -> void # # @return [Method] a new instance of Method # - # source://rbi//lib/rbi/model.rb#400 + # source://rbi//lib/rbi/model.rb#442 sig do params( name: ::String, @@ -1238,55 +1302,63 @@ class RBI::Method < ::RBI::NodeWithComments # : (Param param) -> void # - # source://rbi//lib/rbi/model.rb#420 + # source://rbi//lib/rbi/model.rb#462 sig { params(param: ::RBI::Param).void } def <<(param); end # : (String name) -> void # - # source://rbi//lib/rbi/model.rb#455 + # source://rbi//lib/rbi/model.rb#497 sig { params(name: ::String).void } def add_block_param(name); end # : (String name, String default_value) -> void # - # source://rbi//lib/rbi/model.rb#445 + # source://rbi//lib/rbi/model.rb#487 sig { params(name: ::String, default_value: ::String).void } def add_kw_opt_param(name, default_value); end # : (String name) -> void # - # source://rbi//lib/rbi/model.rb#440 + # source://rbi//lib/rbi/model.rb#482 sig { params(name: ::String).void } def add_kw_param(name); end # : (String name) -> void # - # source://rbi//lib/rbi/model.rb#450 + # source://rbi//lib/rbi/model.rb#492 sig { params(name: ::String).void } def add_kw_rest_param(name); end # : (String name, String default_value) -> void # - # source://rbi//lib/rbi/model.rb#430 + # source://rbi//lib/rbi/model.rb#472 sig { params(name: ::String, default_value: ::String).void } def add_opt_param(name, default_value); end # : (String name) -> void # - # source://rbi//lib/rbi/model.rb#425 + # source://rbi//lib/rbi/model.rb#467 sig { params(name: ::String).void } def add_param(name); end # : (String name) -> void # - # source://rbi//lib/rbi/model.rb#435 + # source://rbi//lib/rbi/model.rb#477 sig { params(name: ::String).void } def add_rest_param(name); end - # : (?params: Array[SigParam], ?return_type: (String | Type), ?is_abstract: bool, ?is_override: bool, ?is_overridable: bool, ?is_final: bool, ?type_params: Array[String], ?checked: Symbol?) ?{ (Sig node) -> void } -> void - # - # source://rbi//lib/rbi/model.rb#460 + # : ( + # | ?params: Array[SigParam], + # | ?return_type: (String | Type), + # | ?is_abstract: bool, + # | ?is_override: bool, + # | ?is_overridable: bool, + # | ?is_final: bool, + # | ?type_params: Array[String], + # | ?checked: Symbol?) ?{ (Sig node) -> void } -> void + # + # source://rbi//lib/rbi/model.rb#510 sig do params( params: T::Array[::RBI::SigParam], @@ -1306,13 +1378,13 @@ class RBI::Method < ::RBI::NodeWithComments # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#449 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#453 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end # : -> String # - # source://rbi//lib/rbi/model.rb#486 + # source://rbi//lib/rbi/model.rb#536 sig { returns(::String) } def fully_qualified_name; end @@ -1324,76 +1396,81 @@ class RBI::Method < ::RBI::NodeWithComments # : bool # - # source://rbi//lib/rbi/model.rb#391 + # source://rbi//lib/rbi/model.rb#425 sig { returns(T::Boolean) } def is_singleton; end # : bool # - # source://rbi//lib/rbi/model.rb#391 + # source://rbi//lib/rbi/model.rb#425 def is_singleton=(_arg0); end # : (Node other) -> void # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#459 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#463 sig { override.params(other: ::RBI::Node).void } def merge_with(other); end # : String # - # source://rbi//lib/rbi/model.rb#385 + # source://rbi//lib/rbi/model.rb#419 sig { returns(::String) } def name; end # : String # - # source://rbi//lib/rbi/model.rb#385 + # source://rbi//lib/rbi/model.rb#419 def name=(_arg0); end # : Array[Param] # - # source://rbi//lib/rbi/model.rb#388 + # source://rbi//lib/rbi/model.rb#422 sig { returns(T::Array[::RBI::Param]) } def params; end # : Array[Sig] # - # source://rbi//lib/rbi/model.rb#397 + # source://rbi//lib/rbi/model.rb#431 sig { returns(T::Array[::RBI::Sig]) } def sigs; end # : Array[Sig] # - # source://rbi//lib/rbi/model.rb#397 + # source://rbi//lib/rbi/model.rb#431 def sigs=(_arg0); end # : -> String # - # source://rbi//lib/rbi/model.rb#496 + # source://rbi//lib/rbi/model.rb#546 sig { override.returns(::String) } def to_s; end # : Visibility # - # source://rbi//lib/rbi/model.rb#394 + # source://rbi//lib/rbi/model.rb#428 sig { returns(::RBI::Visibility) } def visibility; end # : Visibility # - # source://rbi//lib/rbi/model.rb#394 + # source://rbi//lib/rbi/model.rb#428 def visibility=(_arg0); end end -# source://rbi//lib/rbi/model.rb#1089 +# source://rbi//lib/rbi/model.rb#1185 class RBI::MixesInClassMethods < ::RBI::Mixin include ::RBI::Indexable - # : (String name, *String names, ?loc: Loc?, ?comments: Array[Comment]) ?{ (MixesInClassMethods node) -> void } -> void + # : ( + # | String name, + # | *String names, + # | ?loc: Loc?, + # | ?comments: Array[Comment] + # | ) ?{ (MixesInClassMethods node) -> void } -> void # # @return [MixesInClassMethods] a new instance of MixesInClassMethods # - # source://rbi//lib/rbi/model.rb#1091 + # source://rbi//lib/rbi/model.rb#1192 sig do params( name: ::String, @@ -1409,7 +1486,7 @@ class RBI::MixesInClassMethods < ::RBI::Mixin # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#496 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#500 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -1421,14 +1498,14 @@ class RBI::MixesInClassMethods < ::RBI::Mixin # : -> String # - # source://rbi//lib/rbi/model.rb#1098 + # source://rbi//lib/rbi/model.rb#1199 sig { override.returns(::String) } def to_s; end end # @abstract # -# source://rbi//lib/rbi/model.rb#651 +# source://rbi//lib/rbi/model.rb#701 class RBI::Mixin < ::RBI::NodeWithComments abstract! @@ -1436,7 +1513,7 @@ class RBI::Mixin < ::RBI::NodeWithComments # # @return [Mixin] a new instance of Mixin # - # source://rbi//lib/rbi/model.rb#656 + # source://rbi//lib/rbi/model.rb#706 sig do params( name: ::String, @@ -1451,13 +1528,13 @@ class RBI::Mixin < ::RBI::NodeWithComments # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#472 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#476 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end # : Array[String] # - # source://rbi//lib/rbi/model.rb#653 + # source://rbi//lib/rbi/model.rb#703 sig { returns(T::Array[::String]) } def names; end end @@ -1483,7 +1560,7 @@ class RBI::Module < ::RBI::Scope # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#379 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#383 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -1577,7 +1654,7 @@ class RBI::Node # : (?out: (IO | StringIO), ?indent: Integer, ?print_locs: bool, ?max_line_length: Integer?) -> void # - # source://rbi//lib/rbi/printer.rb#832 + # source://rbi//lib/rbi/printer.rb#834 sig do params( out: T.any(::IO, ::StringIO), @@ -1590,7 +1667,7 @@ class RBI::Node # : (?out: (IO | StringIO), ?indent: Integer, ?print_locs: bool, ?positional_names: bool) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1225 + # source://rbi//lib/rbi/rbs_printer.rb#1227 sig do params( out: T.any(::IO, ::StringIO), @@ -1603,7 +1680,7 @@ class RBI::Node # : (?indent: Integer, ?print_locs: bool, ?positional_names: bool) -> String # - # source://rbi//lib/rbi/rbs_printer.rb#1231 + # source://rbi//lib/rbi/rbs_printer.rb#1233 sig { params(indent: ::Integer, print_locs: T::Boolean, positional_names: T::Boolean).returns(::String) } def rbs_string(indent: T.unsafe(nil), print_locs: T.unsafe(nil), positional_names: T.unsafe(nil)); end @@ -1625,7 +1702,7 @@ class RBI::Node # : (?indent: Integer, ?print_locs: bool, ?max_line_length: Integer?) -> String # - # source://rbi//lib/rbi/printer.rb#838 + # source://rbi//lib/rbi/printer.rb#840 sig { params(indent: ::Integer, print_locs: T::Boolean, max_line_length: T.nilable(::Integer)).returns(::String) } def string(indent: T.unsafe(nil), print_locs: T.unsafe(nil), max_line_length: T.unsafe(nil)); end end @@ -1674,13 +1751,13 @@ class RBI::NodeWithComments < ::RBI::Node def version_requirements; end end -# source://rbi//lib/rbi/model.rb#532 +# source://rbi//lib/rbi/model.rb#582 class RBI::OptParam < ::RBI::Param # : (String name, String value, ?loc: Loc?, ?comments: Array[Comment]) ?{ (OptParam node) -> void } -> void # # @return [OptParam] a new instance of OptParam # - # source://rbi//lib/rbi/model.rb#537 + # source://rbi//lib/rbi/model.rb#587 sig do params( name: ::String, @@ -1694,20 +1771,20 @@ class RBI::OptParam < ::RBI::Param # : (Object? other) -> bool # - # source://rbi//lib/rbi/model.rb#544 + # source://rbi//lib/rbi/model.rb#594 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end # : String # - # source://rbi//lib/rbi/model.rb#534 + # source://rbi//lib/rbi/model.rb#584 sig { returns(::String) } def value; end end # @abstract # -# source://rbi//lib/rbi/model.rb#502 +# source://rbi//lib/rbi/model.rb#552 class RBI::Param < ::RBI::NodeWithComments abstract! @@ -1715,19 +1792,19 @@ class RBI::Param < ::RBI::NodeWithComments # # @return [Param] a new instance of Param # - # source://rbi//lib/rbi/model.rb#507 + # source://rbi//lib/rbi/model.rb#557 sig { params(name: ::String, loc: T.nilable(::RBI::Loc), comments: T::Array[::RBI::Comment]).void } def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil)); end # : String # - # source://rbi//lib/rbi/model.rb#504 + # source://rbi//lib/rbi/model.rb#554 sig { returns(::String) } def name; end # : -> String # - # source://rbi//lib/rbi/model.rb#514 + # source://rbi//lib/rbi/model.rb#564 sig { override.returns(::String) } def to_s; end end @@ -1798,31 +1875,31 @@ class RBI::Parser end end -# source://rbi//lib/rbi/parser.rb#1000 +# source://rbi//lib/rbi/parser.rb#1003 class RBI::Parser::HeredocLocationVisitor < ::Prism::Visitor # : (Prism::Source source, Integer begin_offset, Integer end_offset) -> void # # @return [HeredocLocationVisitor] a new instance of HeredocLocationVisitor # - # source://rbi//lib/rbi/parser.rb#1002 + # source://rbi//lib/rbi/parser.rb#1005 sig { params(source: ::Prism::Source, begin_offset: ::Integer, end_offset: ::Integer).void } def initialize(source, begin_offset, end_offset); end # : -> Prism::Location # - # source://rbi//lib/rbi/parser.rb#1033 + # source://rbi//lib/rbi/parser.rb#1036 sig { returns(::Prism::Location) } def location; end # : (Prism::InterpolatedStringNode node) -> void # - # source://rbi//lib/rbi/parser.rb#1023 + # source://rbi//lib/rbi/parser.rb#1026 sig { override.params(node: ::Prism::InterpolatedStringNode).void } def visit_interpolated_string_node(node); end # : (Prism::StringNode node) -> void # - # source://rbi//lib/rbi/parser.rb#1012 + # source://rbi//lib/rbi/parser.rb#1015 sig { override.params(node: ::Prism::StringNode).void } def visit_string_node(node); end @@ -1830,7 +1907,7 @@ class RBI::Parser::HeredocLocationVisitor < ::Prism::Visitor # : (Prism::StringNode | Prism::InterpolatedStringNode node) -> void # - # source://rbi//lib/rbi/parser.rb#1044 + # source://rbi//lib/rbi/parser.rb#1047 sig { params(node: T.any(::Prism::InterpolatedStringNode, ::Prism::StringNode)).void } def handle_string_node(node); end end @@ -1845,6 +1922,14 @@ class RBI::Parser::SigBuilder < ::RBI::Parser::Visitor sig { params(content: ::String, file: ::String).void } def initialize(content, file:); end + # : (Prism::CallNode node, String value) -> bool + # + # @return [Boolean] + # + # source://rbi//lib/rbi/parser.rb#986 + sig { params(node: ::Prism::CallNode, value: ::String).returns(T::Boolean) } + def allow_incompatible_override?(node, value); end + # : Sig # # source://rbi//lib/rbi/parser.rb#917 @@ -1853,7 +1938,7 @@ class RBI::Parser::SigBuilder < ::RBI::Parser::Visitor # : (Prism::AssocNode node) -> void # - # source://rbi//lib/rbi/parser.rb#992 + # source://rbi//lib/rbi/parser.rb#978 sig { override.params(node: ::Prism::AssocNode).void } def visit_assoc_node(node); end @@ -2578,13 +2663,13 @@ end # source://rbi//lib/rbi/printer.rb#5 class RBI::PrinterError < ::RBI::Error; end -# source://rbi//lib/rbi/model.rb#742 +# source://rbi//lib/rbi/model.rb#792 class RBI::Private < ::RBI::Visibility # : (?loc: Loc?, ?comments: Array[Comment]) ?{ (Private node) -> void } -> void # # @return [Private] a new instance of Private # - # source://rbi//lib/rbi/model.rb#744 + # source://rbi//lib/rbi/model.rb#794 sig do params( loc: T.nilable(::RBI::Loc), @@ -2595,13 +2680,13 @@ class RBI::Private < ::RBI::Visibility def initialize(loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end end -# source://rbi//lib/rbi/model.rb#734 +# source://rbi//lib/rbi/model.rb#784 class RBI::Protected < ::RBI::Visibility # : (?loc: Loc?, ?comments: Array[Comment]) ?{ (Protected node) -> void } -> void # # @return [Protected] a new instance of Protected # - # source://rbi//lib/rbi/model.rb#736 + # source://rbi//lib/rbi/model.rb#786 sig do params( loc: T.nilable(::RBI::Loc), @@ -2612,13 +2697,13 @@ class RBI::Protected < ::RBI::Visibility def initialize(loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end end -# source://rbi//lib/rbi/model.rb#726 +# source://rbi//lib/rbi/model.rb#776 class RBI::Public < ::RBI::Visibility # : (?loc: Loc?, ?comments: Array[Comment]) ?{ (Public node) -> void } -> void # # @return [Public] a new instance of Public # - # source://rbi//lib/rbi/model.rb#728 + # source://rbi//lib/rbi/model.rb#778 sig do params( loc: T.nilable(::RBI::Loc), @@ -2735,21 +2820,27 @@ class RBI::RBS::TypeTranslator # : (::RBS::Types::ClassInstance) -> Type # - # source://rbi//lib/rbi/rbs/type_translator.rb#95 + # source://rbi//lib/rbi/rbs/type_translator.rb#107 sig { params(type: ::RBS::Types::ClassInstance).returns(::RBI::Type) } def translate_class_instance(type); end # : (::RBS::Types::Function) -> Type # - # source://rbi//lib/rbi/rbs/type_translator.rb#103 + # source://rbi//lib/rbi/rbs/type_translator.rb#115 sig { params(type: ::RBS::Types::Function).returns(::RBI::Type) } def translate_function(type); end # : (String type_name) -> String # - # source://rbi//lib/rbi/rbs/type_translator.rb#150 + # source://rbi//lib/rbi/rbs/type_translator.rb#162 sig { params(type_name: ::String).returns(::String) } def translate_t_generic_type(type_name); end + + # : (::RBS::Types::Alias) -> Type + # + # source://rbi//lib/rbi/rbs/type_translator.rb#95 + sig { params(type: ::RBS::Types::Alias).returns(::RBI::Type) } + def translate_type_alias(type); end end end @@ -2865,19 +2956,19 @@ class RBI::RBSPrinter < ::RBI::Visitor # : (RBI::Method node, Sig sig) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#398 + # source://rbi//lib/rbi/rbs_printer.rb#400 sig { params(node: ::RBI::Method, sig: ::RBI::Sig).void } def print_method_sig(node, sig); end # : (RBI::Method node, Sig sig) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#415 + # source://rbi//lib/rbi/rbs_printer.rb#417 sig { params(node: ::RBI::Method, sig: ::RBI::Sig).void } def print_method_sig_inline(node, sig); end # : (RBI::Method node, Sig sig) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#477 + # source://rbi//lib/rbi/rbs_printer.rb#479 sig { params(node: ::RBI::Method, sig: ::RBI::Sig).void } def print_method_sig_multiline(node, sig); end @@ -2910,7 +3001,7 @@ class RBI::RBSPrinter < ::RBI::Visitor # : (Arg node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#678 + # source://rbi//lib/rbi/rbs_printer.rb#680 sig { override.params(node: ::RBI::Arg).void } def visit_arg(node); end @@ -2946,7 +3037,7 @@ class RBI::RBSPrinter < ::RBI::Visitor # : (BlockParam node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#610 + # source://rbi//lib/rbi/rbs_printer.rb#612 sig { override.params(node: ::RBI::BlockParam).void } def visit_block_param(node); end @@ -2964,7 +3055,7 @@ class RBI::RBSPrinter < ::RBI::Visitor # : (ConflictTree node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#814 + # source://rbi//lib/rbi/rbs_printer.rb#816 sig { override.params(node: ::RBI::ConflictTree).void } def visit_conflict_tree(node); end @@ -2976,7 +3067,7 @@ class RBI::RBSPrinter < ::RBI::Visitor # : (Extend node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#622 + # source://rbi//lib/rbi/rbs_printer.rb#624 sig { override.params(node: ::RBI::Extend).void } def visit_extend(node); end @@ -2988,43 +3079,43 @@ class RBI::RBSPrinter < ::RBI::Visitor # : (Group node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#787 + # source://rbi//lib/rbi/rbs_printer.rb#789 sig { override.params(node: ::RBI::Group).void } def visit_group(node); end # : (Helper node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#775 + # source://rbi//lib/rbi/rbs_printer.rb#777 sig { override.params(node: ::RBI::Helper).void } def visit_helper(node); end # : (Include node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#616 + # source://rbi//lib/rbi/rbs_printer.rb#618 sig { override.params(node: ::RBI::Include).void } def visit_include(node); end # : (KwArg node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#684 + # source://rbi//lib/rbi/rbs_printer.rb#686 sig { override.params(node: ::RBI::KwArg).void } def visit_kw_arg(node); end # : (KwOptParam node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#598 + # source://rbi//lib/rbi/rbs_printer.rb#600 sig { override.params(node: ::RBI::KwOptParam).void } def visit_kw_opt_param(node); end # : (KwParam node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#592 + # source://rbi//lib/rbi/rbs_printer.rb#594 sig { override.params(node: ::RBI::KwParam).void } def visit_kw_param(node); end # : (KwRestParam node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#604 + # source://rbi//lib/rbi/rbs_printer.rb#606 sig { override.params(node: ::RBI::KwRestParam).void } def visit_kw_rest_param(node); end @@ -3036,13 +3127,13 @@ class RBI::RBSPrinter < ::RBI::Visitor # : (MixesInClassMethods node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#781 + # source://rbi//lib/rbi/rbs_printer.rb#783 sig { override.params(node: ::RBI::MixesInClassMethods).void } def visit_mixes_in_class_methods(node); end # : (Mixin node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#627 + # source://rbi//lib/rbi/rbs_printer.rb#629 sig { params(node: ::RBI::Mixin).void } def visit_mixin(node); end @@ -3054,43 +3145,43 @@ class RBI::RBSPrinter < ::RBI::Visitor # : (OptParam node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#572 + # source://rbi//lib/rbi/rbs_printer.rb#574 sig { override.params(node: ::RBI::OptParam).void } def visit_opt_param(node); end # : (Private node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#657 + # source://rbi//lib/rbi/rbs_printer.rb#659 sig { override.params(node: ::RBI::Private).void } def visit_private(node); end # : (Protected node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#651 + # source://rbi//lib/rbi/rbs_printer.rb#653 sig { override.params(node: ::RBI::Protected).void } def visit_protected(node); end # : (Public node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#645 + # source://rbi//lib/rbi/rbs_printer.rb#647 sig { override.params(node: ::RBI::Public).void } def visit_public(node); end # : (ReqParam node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#562 + # source://rbi//lib/rbi/rbs_printer.rb#564 sig { override.params(node: ::RBI::ReqParam).void } def visit_req_param(node); end # : (RequiresAncestor node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#808 + # source://rbi//lib/rbi/rbs_printer.rb#810 sig { override.params(node: ::RBI::RequiresAncestor).void } def visit_requires_ancestor(node); end # : (RestParam node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#582 + # source://rbi//lib/rbi/rbs_printer.rb#584 sig { override.params(node: ::RBI::RestParam).void } def visit_rest_param(node); end @@ -3108,7 +3199,7 @@ class RBI::RBSPrinter < ::RBI::Visitor # : (ScopeConflict node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#824 + # source://rbi//lib/rbi/rbs_printer.rb#826 sig { override.params(node: ::RBI::ScopeConflict).void } def visit_scope_conflict(node); end @@ -3120,19 +3211,19 @@ class RBI::RBSPrinter < ::RBI::Visitor # : (Send node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#672 + # source://rbi//lib/rbi/rbs_printer.rb#674 sig { override.params(node: ::RBI::Send).void } def visit_send(node); end # : (Sig node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#543 + # source://rbi//lib/rbi/rbs_printer.rb#545 sig { params(node: ::RBI::Sig).void } def visit_sig(node); end # : (SigParam node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#556 + # source://rbi//lib/rbi/rbs_printer.rb#558 sig { params(node: ::RBI::SigParam).void } def visit_sig_param(node); end @@ -3150,19 +3241,19 @@ class RBI::RBSPrinter < ::RBI::Visitor # : (TEnum node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#741 + # source://rbi//lib/rbi/rbs_printer.rb#743 sig { override.params(node: ::RBI::TEnum).void } def visit_tenum(node); end # : (TEnumBlock node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#747 + # source://rbi//lib/rbi/rbs_printer.rb#749 sig { override.params(node: ::RBI::TEnumBlock).void } def visit_tenum_block(node); end # : (TEnumValue node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#753 + # source://rbi//lib/rbi/rbs_printer.rb#755 sig { override.params(node: ::RBI::TEnumValue).void } def visit_tenum_value(node); end @@ -3174,37 +3265,37 @@ class RBI::RBSPrinter < ::RBI::Visitor # : (TStruct node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#690 + # source://rbi//lib/rbi/rbs_printer.rb#692 sig { override.params(node: ::RBI::TStruct).void } def visit_tstruct(node); end # : (TStructConst node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#725 + # source://rbi//lib/rbi/rbs_printer.rb#727 sig { override.params(node: ::RBI::TStructConst).void } def visit_tstruct_const(node); end # : (TStructProp node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#733 + # source://rbi//lib/rbi/rbs_printer.rb#735 sig { override.params(node: ::RBI::TStructProp).void } def visit_tstruct_prop(node); end # : (TypeMember node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#769 + # source://rbi//lib/rbi/rbs_printer.rb#771 sig { override.params(node: ::RBI::TypeMember).void } def visit_type_member(node); end # : (Visibility node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#662 + # source://rbi//lib/rbi/rbs_printer.rb#664 sig { params(node: ::RBI::Visibility).void } def visit_visibility(node); end # : (VisibilityGroup node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#794 + # source://rbi//lib/rbi/rbs_printer.rb#796 sig { override.params(node: ::RBI::VisibilityGroup).void } def visit_visibility_group(node); end @@ -3214,7 +3305,7 @@ class RBI::RBSPrinter < ::RBI::Visitor # # @return [Boolean] # - # source://rbi//lib/rbi/rbs_printer.rb#927 + # source://rbi//lib/rbi/rbs_printer.rb#929 sig { params(node: ::RBI::Node).returns(T::Boolean) } def oneline?(node); end @@ -3223,43 +3314,43 @@ class RBI::RBSPrinter < ::RBI::Visitor # Returns `nil` is the string is not a `T.let`. # : (String? code) -> String? # - # source://rbi//lib/rbi/rbs_printer.rb#961 + # source://rbi//lib/rbi/rbs_printer.rb#963 sig { params(code: T.nilable(::String)).returns(T.nilable(::String)) } def parse_t_let(code); end # : ((Type | String) type) -> Type # - # source://rbi//lib/rbi/rbs_printer.rb#949 + # source://rbi//lib/rbi/rbs_printer.rb#951 sig { params(type: T.any(::RBI::Type, ::String)).returns(::RBI::Type) } def parse_type(type); end # : (Node node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#840 + # source://rbi//lib/rbi/rbs_printer.rb#842 sig { params(node: ::RBI::Node).void } def print_blank_line_before(node); end # : (Node node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#859 + # source://rbi//lib/rbi/rbs_printer.rb#861 sig { params(node: ::RBI::Node).void } def print_loc(node); end # : (Param node, last: bool) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#901 + # source://rbi//lib/rbi/rbs_printer.rb#903 sig { params(node: ::RBI::Param, last: T::Boolean).void } def print_param_comment_leading_space(node, last:); end # : (Method node, SigParam param) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#865 + # source://rbi//lib/rbi/rbs_printer.rb#867 sig { params(node: ::RBI::Method, param: ::RBI::SigParam).void } def print_sig_param(node, param); end # : (SigParam node, last: bool) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#919 + # source://rbi//lib/rbi/rbs_printer.rb#921 sig { params(node: ::RBI::SigParam, last: T::Boolean).void } def print_sig_param_comment_leading_space(node, last:); end end @@ -3270,13 +3361,13 @@ class RBI::RBSPrinter::Error < ::RBI::Error; end # source://rbi//lib/rbi/model.rb#5 class RBI::ReplaceNodeError < ::RBI::Error; end -# source://rbi//lib/rbi/model.rb#519 +# source://rbi//lib/rbi/model.rb#569 class RBI::ReqParam < ::RBI::Param # : (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (ReqParam node) -> void } -> void # # @return [ReqParam] a new instance of ReqParam # - # source://rbi//lib/rbi/model.rb#521 + # source://rbi//lib/rbi/model.rb#571 sig do params( name: ::String, @@ -3289,12 +3380,12 @@ class RBI::ReqParam < ::RBI::Param # : (Object? other) -> bool # - # source://rbi//lib/rbi/model.rb#527 + # source://rbi//lib/rbi/model.rb#577 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end end -# source://rbi//lib/rbi/model.rb#1103 +# source://rbi//lib/rbi/model.rb#1204 class RBI::RequiresAncestor < ::RBI::NodeWithComments include ::RBI::Indexable @@ -3302,7 +3393,7 @@ class RBI::RequiresAncestor < ::RBI::NodeWithComments # # @return [RequiresAncestor] a new instance of RequiresAncestor # - # source://rbi//lib/rbi/model.rb#1108 + # source://rbi//lib/rbi/model.rb#1209 sig { params(name: ::String, loc: T.nilable(::RBI::Loc), comments: T::Array[::RBI::Comment]).void } def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil)); end @@ -3314,24 +3405,24 @@ class RBI::RequiresAncestor < ::RBI::NodeWithComments # : String # - # source://rbi//lib/rbi/model.rb#1105 + # source://rbi//lib/rbi/model.rb#1206 sig { returns(::String) } def name; end # : -> String # - # source://rbi//lib/rbi/model.rb#1115 + # source://rbi//lib/rbi/model.rb#1216 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#549 +# source://rbi//lib/rbi/model.rb#599 class RBI::RestParam < ::RBI::Param # : (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (RestParam node) -> void } -> void # # @return [RestParam] a new instance of RestParam # - # source://rbi//lib/rbi/model.rb#551 + # source://rbi//lib/rbi/model.rb#601 sig do params( name: ::String, @@ -3344,13 +3435,13 @@ class RBI::RestParam < ::RBI::Param # : (Object? other) -> bool # - # source://rbi//lib/rbi/model.rb#563 + # source://rbi//lib/rbi/model.rb#613 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end # : -> String # - # source://rbi//lib/rbi/model.rb#558 + # source://rbi//lib/rbi/model.rb#608 sig { override.returns(::String) } def to_s; end end @@ -4163,13 +4254,14 @@ class RBI::Scope < ::RBI::Tree # Duplicate `self` scope without its body # : -> self # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#346 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#350 sig { returns(T.self_type) } def dup_empty; end # : -> String # # @abstract + # @raise [NotImplementedError] # # source://rbi//lib/rbi/model.rb#166 sig { abstract.returns(::String) } @@ -4201,42 +4293,42 @@ end # end # ~~~ # -# source://rbi//lib/rbi/rewriters/merge_trees.rb#586 +# source://rbi//lib/rbi/rewriters/merge_trees.rb#590 class RBI::ScopeConflict < ::RBI::Tree # : (left: Scope, right: Scope, ?left_name: String, ?right_name: String) -> void # # @return [ScopeConflict] a new instance of ScopeConflict # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#594 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#598 sig { params(left: ::RBI::Scope, right: ::RBI::Scope, left_name: ::String, right_name: ::String).void } def initialize(left:, right:, left_name: T.unsafe(nil), right_name: T.unsafe(nil)); end # : Scope # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#588 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#592 sig { returns(::RBI::Scope) } def left; end # : String # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#591 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#595 sig { returns(::String) } def left_name; end # : Scope # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#588 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#592 def right; end # : String # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#591 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#595 def right_name; end end # Sends # -# source://rbi//lib/rbi/model.rb#752 +# source://rbi//lib/rbi/model.rb#802 class RBI::Send < ::RBI::NodeWithComments include ::RBI::Indexable @@ -4244,7 +4336,7 @@ class RBI::Send < ::RBI::NodeWithComments # # @return [Send] a new instance of Send # - # source://rbi//lib/rbi/model.rb#760 + # source://rbi//lib/rbi/model.rb#810 sig do params( method: ::String, @@ -4258,19 +4350,19 @@ class RBI::Send < ::RBI::NodeWithComments # : (Arg arg) -> void # - # source://rbi//lib/rbi/model.rb#768 + # source://rbi//lib/rbi/model.rb#818 sig { params(arg: ::RBI::Arg).void } def <<(arg); end # : (Object? other) -> bool # - # source://rbi//lib/rbi/model.rb#773 + # source://rbi//lib/rbi/model.rb#823 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end # : Array[Arg] # - # source://rbi//lib/rbi/model.rb#757 + # source://rbi//lib/rbi/model.rb#807 sig { returns(T::Array[::RBI::Arg]) } def args; end @@ -4278,7 +4370,7 @@ class RBI::Send < ::RBI::NodeWithComments # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#512 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#516 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -4290,26 +4382,40 @@ class RBI::Send < ::RBI::NodeWithComments # : String # - # source://rbi//lib/rbi/model.rb#754 + # source://rbi//lib/rbi/model.rb#804 sig { returns(::String) } def method; end # : -> String # - # source://rbi//lib/rbi/model.rb#778 + # source://rbi//lib/rbi/model.rb#828 sig { returns(::String) } def to_s; end end # Sorbet's sigs # -# source://rbi//lib/rbi/model.rb#827 +# source://rbi//lib/rbi/model.rb#877 class RBI::Sig < ::RBI::NodeWithComments - # : (?params: Array[SigParam], ?return_type: (Type | String), ?is_abstract: bool, ?is_override: bool, ?is_overridable: bool, ?is_final: bool, ?allow_incompatible_override: bool, ?without_runtime: bool, ?type_params: Array[String], ?checked: Symbol?, ?loc: Loc?, ?comments: Array[Comment]) ?{ (Sig node) -> void } -> void + # : ( + # | ?params: Array[SigParam], + # | ?return_type: (Type | String), + # | ?is_abstract: bool, + # | ?is_override: bool, + # | ?is_overridable: bool, + # | ?is_final: bool, + # | ?allow_incompatible_override: bool, + # | ?allow_incompatible_override_visibility: bool, + # | ?without_runtime: bool, + # | ?type_params: Array[String], + # | ?checked: Symbol?, + # | ?loc: Loc?, + # | ?comments: Array[Comment] + # | ) ?{ (Sig node) -> void } -> void # # @return [Sig] a new instance of Sig # - # source://rbi//lib/rbi/model.rb#844 + # source://rbi//lib/rbi/model.rb#926 sig do params( params: T::Array[::RBI::SigParam], @@ -4319,6 +4425,7 @@ class RBI::Sig < ::RBI::NodeWithComments is_overridable: T::Boolean, is_final: T::Boolean, allow_incompatible_override: T::Boolean, + allow_incompatible_override_visibility: T::Boolean, without_runtime: T::Boolean, type_params: T::Array[::String], checked: T.nilable(::Symbol), @@ -4327,129 +4434,145 @@ class RBI::Sig < ::RBI::NodeWithComments block: T.nilable(T.proc.params(node: ::RBI::Sig).void) ).void end - def initialize(params: T.unsafe(nil), return_type: T.unsafe(nil), is_abstract: T.unsafe(nil), is_override: T.unsafe(nil), is_overridable: T.unsafe(nil), is_final: T.unsafe(nil), allow_incompatible_override: T.unsafe(nil), without_runtime: T.unsafe(nil), type_params: T.unsafe(nil), checked: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end + def initialize(params: T.unsafe(nil), return_type: T.unsafe(nil), is_abstract: T.unsafe(nil), is_override: T.unsafe(nil), is_overridable: T.unsafe(nil), is_final: T.unsafe(nil), allow_incompatible_override: T.unsafe(nil), allow_incompatible_override_visibility: T.unsafe(nil), without_runtime: T.unsafe(nil), type_params: T.unsafe(nil), checked: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end # : (SigParam param) -> void # - # source://rbi//lib/rbi/model.rb#874 + # source://rbi//lib/rbi/model.rb#958 sig { params(param: ::RBI::SigParam).void } def <<(param); end # : (Object other) -> bool # - # source://rbi//lib/rbi/model.rb#884 + # source://rbi//lib/rbi/model.rb#968 sig { params(other: ::Object).returns(T::Boolean) } def ==(other); end # : (String name, (Type | String) type) -> void # - # source://rbi//lib/rbi/model.rb#879 + # source://rbi//lib/rbi/model.rb#963 sig { params(name: ::String, type: T.any(::RBI::Type, ::String)).void } def add_param(name, type); end # : bool # - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#897 + sig { returns(T::Boolean) } def allow_incompatible_override; end # : bool # - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#897 def allow_incompatible_override=(_arg0); end + # : bool + # + # source://rbi//lib/rbi/model.rb#900 + sig { returns(T::Boolean) } + def allow_incompatible_override_visibility; end + + # : bool + # + # source://rbi//lib/rbi/model.rb#900 + def allow_incompatible_override_visibility=(_arg0); end + # : Symbol? # - # source://rbi//lib/rbi/model.rb#841 + # source://rbi//lib/rbi/model.rb#909 sig { returns(T.nilable(::Symbol)) } def checked; end # : Symbol? # - # source://rbi//lib/rbi/model.rb#841 + # source://rbi//lib/rbi/model.rb#909 def checked=(_arg0); end # : bool # - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#885 sig { returns(T::Boolean) } def is_abstract; end # : bool # - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#885 def is_abstract=(_arg0); end # : bool # - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#894 + sig { returns(T::Boolean) } def is_final; end # : bool # - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#894 def is_final=(_arg0); end # : bool # - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#891 + sig { returns(T::Boolean) } def is_overridable; end # : bool # - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#891 def is_overridable=(_arg0); end # : bool # - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#888 + sig { returns(T::Boolean) } def is_override; end # : bool # - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#888 def is_override=(_arg0); end # : Array[SigParam] # - # source://rbi//lib/rbi/model.rb#829 + # source://rbi//lib/rbi/model.rb#879 sig { returns(T::Array[::RBI::SigParam]) } def params; end # : (Type | String) # - # source://rbi//lib/rbi/model.rb#832 + # source://rbi//lib/rbi/model.rb#882 sig { returns(T.any(::RBI::Type, ::String)) } def return_type; end # : (Type | String) # - # source://rbi//lib/rbi/model.rb#832 + # source://rbi//lib/rbi/model.rb#882 def return_type=(_arg0); end # : Array[String] # - # source://rbi//lib/rbi/model.rb#838 + # source://rbi//lib/rbi/model.rb#906 sig { returns(T::Array[::String]) } def type_params; end # : bool # - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#903 + sig { returns(T::Boolean) } def without_runtime; end # : bool # - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#903 def without_runtime=(_arg0); end end -# source://rbi//lib/rbi/model.rb#893 +# source://rbi//lib/rbi/model.rb#977 class RBI::SigParam < ::RBI::NodeWithComments # : (String name, (Type | String) type, ?loc: Loc?, ?comments: Array[Comment]) ?{ (SigParam node) -> void } -> void # # @return [SigParam] a new instance of SigParam # - # source://rbi//lib/rbi/model.rb#901 + # source://rbi//lib/rbi/model.rb#985 sig do params( name: ::String, @@ -4463,19 +4586,19 @@ class RBI::SigParam < ::RBI::NodeWithComments # : (Object other) -> bool # - # source://rbi//lib/rbi/model.rb#909 + # source://rbi//lib/rbi/model.rb#993 sig { params(other: ::Object).returns(T::Boolean) } def ==(other); end # : String # - # source://rbi//lib/rbi/model.rb#895 + # source://rbi//lib/rbi/model.rb#979 sig { returns(::String) } def name; end # : (Type | String) # - # source://rbi//lib/rbi/model.rb#898 + # source://rbi//lib/rbi/model.rb#982 sig { returns(T.any(::RBI::Type, ::String)) } def type; end end @@ -4505,11 +4628,17 @@ end # source://rbi//lib/rbi/model.rb#233 class RBI::Struct < ::RBI::Scope - # : (String name, ?members: Array[Symbol], ?keyword_init: bool, ?loc: Loc?, ?comments: Array[Comment]) ?{ (Struct struct) -> void } -> void + # : ( + # | String name, + # | ?members: Array[Symbol], + # | ?keyword_init: bool, + # | ?loc: Loc?, + # | ?comments: Array[Comment] + # | ) ?{ (Struct struct) -> void } -> void # # @return [Struct] a new instance of Struct # - # source://rbi//lib/rbi/model.rb#244 + # source://rbi//lib/rbi/model.rb#250 sig do params( name: ::String, @@ -4526,13 +4655,13 @@ class RBI::Struct < ::RBI::Scope # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#387 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#391 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end # : -> String # - # source://rbi//lib/rbi/model.rb#254 + # source://rbi//lib/rbi/model.rb#260 sig { override.returns(::String) } def fully_qualified_name; end @@ -4572,13 +4701,13 @@ end # Sorbet's T::Enum # -# source://rbi//lib/rbi/model.rb#992 +# source://rbi//lib/rbi/model.rb#1088 class RBI::TEnum < ::RBI::Class # : (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (TEnum klass) -> void } -> void # # @return [TEnum] a new instance of TEnum # - # source://rbi//lib/rbi/model.rb#994 + # source://rbi//lib/rbi/model.rb#1090 sig do params( name: ::String, @@ -4590,13 +4719,13 @@ class RBI::TEnum < ::RBI::Class def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end end -# source://rbi//lib/rbi/model.rb#1000 +# source://rbi//lib/rbi/model.rb#1096 class RBI::TEnumBlock < ::RBI::Scope # : (?loc: Loc?, ?comments: Array[Comment]) ?{ (TEnumBlock node) -> void } -> void # # @return [TEnumBlock] a new instance of TEnumBlock # - # source://rbi//lib/rbi/model.rb#1002 + # source://rbi//lib/rbi/model.rb#1098 sig do params( loc: T.nilable(::RBI::Loc), @@ -4608,7 +4737,7 @@ class RBI::TEnumBlock < ::RBI::Scope # : -> String # - # source://rbi//lib/rbi/model.rb#1009 + # source://rbi//lib/rbi/model.rb#1105 sig { override.returns(::String) } def fully_qualified_name; end @@ -4620,12 +4749,12 @@ class RBI::TEnumBlock < ::RBI::Scope # : -> String # - # source://rbi//lib/rbi/model.rb#1015 + # source://rbi//lib/rbi/model.rb#1111 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#1020 +# source://rbi//lib/rbi/model.rb#1116 class RBI::TEnumValue < ::RBI::NodeWithComments include ::RBI::Indexable @@ -4633,7 +4762,7 @@ class RBI::TEnumValue < ::RBI::NodeWithComments # # @return [TEnumValue] a new instance of TEnumValue # - # source://rbi//lib/rbi/model.rb#1025 + # source://rbi//lib/rbi/model.rb#1121 sig do params( name: ::String, @@ -4646,7 +4775,7 @@ class RBI::TEnumValue < ::RBI::NodeWithComments # : -> String # - # source://rbi//lib/rbi/model.rb#1032 + # source://rbi//lib/rbi/model.rb#1128 sig { returns(::String) } def fully_qualified_name; end @@ -4658,26 +4787,26 @@ class RBI::TEnumValue < ::RBI::NodeWithComments # : String # - # source://rbi//lib/rbi/model.rb#1022 + # source://rbi//lib/rbi/model.rb#1118 sig { returns(::String) } def name; end # : -> String # - # source://rbi//lib/rbi/model.rb#1038 + # source://rbi//lib/rbi/model.rb#1134 sig { override.returns(::String) } def to_s; end end # Sorbet's T::Struct # -# source://rbi//lib/rbi/model.rb#916 +# source://rbi//lib/rbi/model.rb#1000 class RBI::TStruct < ::RBI::Class # : (String name, ?loc: Loc?, ?comments: Array[Comment]) ?{ (TStruct klass) -> void } -> void # # @return [TStruct] a new instance of TStruct # - # source://rbi//lib/rbi/model.rb#918 + # source://rbi//lib/rbi/model.rb#1002 sig do params( name: ::String, @@ -4689,15 +4818,21 @@ class RBI::TStruct < ::RBI::Class def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end end -# source://rbi//lib/rbi/model.rb#948 +# source://rbi//lib/rbi/model.rb#1032 class RBI::TStructConst < ::RBI::TStructField include ::RBI::Indexable - # : (String name, (Type | String) type, ?default: String?, ?loc: Loc?, ?comments: Array[Comment]) ?{ (TStructConst node) -> void } -> void + # : ( + # | String name, + # | (Type | String) type, + # | ?default: String?, + # | ?loc: Loc?, + # | ?comments: Array[Comment] + # | ) ?{ (TStructConst node) -> void } -> void # # @return [TStructConst] a new instance of TStructConst # - # source://rbi//lib/rbi/model.rb#950 + # source://rbi//lib/rbi/model.rb#1040 sig do params( name: ::String, @@ -4714,13 +4849,13 @@ class RBI::TStructConst < ::RBI::TStructField # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#528 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#532 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end # : -> Array[String] # - # source://rbi//lib/rbi/model.rb#957 + # source://rbi//lib/rbi/model.rb#1047 sig { override.returns(T::Array[::String]) } def fully_qualified_names; end @@ -4732,14 +4867,14 @@ class RBI::TStructConst < ::RBI::TStructField # : -> String # - # source://rbi//lib/rbi/model.rb#964 + # source://rbi//lib/rbi/model.rb#1054 sig { override.returns(::String) } def to_s; end end # @abstract # -# source://rbi//lib/rbi/model.rb#925 +# source://rbi//lib/rbi/model.rb#1009 class RBI::TStructField < ::RBI::NodeWithComments abstract! @@ -4747,7 +4882,7 @@ class RBI::TStructField < ::RBI::NodeWithComments # # @return [TStructField] a new instance of TStructField # - # source://rbi//lib/rbi/model.rb#936 + # source://rbi//lib/rbi/model.rb#1020 sig do params( name: ::String, @@ -4763,61 +4898,68 @@ class RBI::TStructField < ::RBI::NodeWithComments # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#520 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#524 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end # : String? # - # source://rbi//lib/rbi/model.rb#933 + # source://rbi//lib/rbi/model.rb#1017 sig { returns(T.nilable(::String)) } def default; end # : String? # - # source://rbi//lib/rbi/model.rb#933 + # source://rbi//lib/rbi/model.rb#1017 def default=(_arg0); end # : -> Array[String] # # @abstract + # @raise [NotImplementedError] # - # source://rbi//lib/rbi/model.rb#945 + # source://rbi//lib/rbi/model.rb#1029 sig { abstract.returns(T::Array[::String]) } def fully_qualified_names; end # : String # - # source://rbi//lib/rbi/model.rb#927 + # source://rbi//lib/rbi/model.rb#1011 sig { returns(::String) } def name; end # : String # - # source://rbi//lib/rbi/model.rb#927 + # source://rbi//lib/rbi/model.rb#1011 def name=(_arg0); end # : (Type | String) # - # source://rbi//lib/rbi/model.rb#930 + # source://rbi//lib/rbi/model.rb#1014 sig { returns(T.any(::RBI::Type, ::String)) } def type; end # : (Type | String) # - # source://rbi//lib/rbi/model.rb#930 + # source://rbi//lib/rbi/model.rb#1014 def type=(_arg0); end end -# source://rbi//lib/rbi/model.rb#969 +# source://rbi//lib/rbi/model.rb#1059 class RBI::TStructProp < ::RBI::TStructField include ::RBI::Indexable - # : (String name, (Type | String) type, ?default: String?, ?loc: Loc?, ?comments: Array[Comment]) ?{ (TStructProp node) -> void } -> void + # : ( + # | String name, + # | (Type | String) type, + # | ?default: String?, + # | ?loc: Loc?, + # | ?comments: Array[Comment] + # | ) ?{ (TStructProp node) -> void } -> void # # @return [TStructProp] a new instance of TStructProp # - # source://rbi//lib/rbi/model.rb#971 + # source://rbi//lib/rbi/model.rb#1067 sig do params( name: ::String, @@ -4834,13 +4976,13 @@ class RBI::TStructProp < ::RBI::TStructField # # @return [Boolean] # - # source://rbi//lib/rbi/rewriters/merge_trees.rb#536 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#540 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end # : -> Array[String] # - # source://rbi//lib/rbi/model.rb#978 + # source://rbi//lib/rbi/model.rb#1074 sig { override.returns(T::Array[::String]) } def fully_qualified_names; end @@ -4852,7 +4994,7 @@ class RBI::TStructProp < ::RBI::TStructField # : -> String # - # source://rbi//lib/rbi/model.rb#985 + # source://rbi//lib/rbi/model.rb#1081 sig { override.returns(::String) } def to_s; end end @@ -5074,15 +5216,16 @@ class RBI::Type # # @return [Type] a new instance of Type # - # source://rbi//lib/rbi/type.rb#905 + # source://rbi//lib/rbi/type.rb#951 sig { void } def initialize; end # : (BasicObject) -> bool # # @abstract + # @raise [NotImplementedError] # - # source://rbi//lib/rbi/type.rb#976 + # source://rbi//lib/rbi/type.rb#1022 sig { abstract.params(other: ::BasicObject).returns(T::Boolean) } def ==(other); end @@ -5090,13 +5233,13 @@ class RBI::Type # # @return [Boolean] # - # source://rbi//lib/rbi/type.rb#979 + # source://rbi//lib/rbi/type.rb#1025 sig { params(other: ::BasicObject).returns(T::Boolean) } def eql?(other); end # : -> Integer # - # source://rbi//lib/rbi/type.rb#985 + # source://rbi//lib/rbi/type.rb#1031 sig { override.returns(::Integer) } def hash; end @@ -5111,7 +5254,7 @@ class RBI::Type # ``` # : -> Type # - # source://rbi//lib/rbi/type.rb#919 + # source://rbi//lib/rbi/type.rb#965 sig { returns(::RBI::Type) } def nilable; end @@ -5120,7 +5263,7 @@ class RBI::Type # # @return [Boolean] # - # source://rbi//lib/rbi/type.rb#946 + # source://rbi//lib/rbi/type.rb#992 sig { returns(T::Boolean) } def nilable?; end @@ -5136,7 +5279,7 @@ class RBI::Type # ``` # : -> Type # - # source://rbi//lib/rbi/type.rb#934 + # source://rbi//lib/rbi/type.rb#980 sig { returns(::RBI::Type) } def non_nilable; end @@ -5151,14 +5294,15 @@ class RBI::Type # : -> Type # # @abstract + # @raise [NotImplementedError] # - # source://rbi//lib/rbi/type.rb#960 + # source://rbi//lib/rbi/type.rb#1006 sig { abstract.returns(::RBI::Type) } def normalize; end # : -> String # - # source://rbi//lib/rbi/rbs_printer.rb#1240 + # source://rbi//lib/rbi/rbs_printer.rb#1242 sig { returns(::String) } def rbs_string; end @@ -5173,22 +5317,24 @@ class RBI::Type # : -> Type # # @abstract + # @raise [NotImplementedError] # - # source://rbi//lib/rbi/type.rb#972 + # source://rbi//lib/rbi/type.rb#1018 sig { abstract.returns(::RBI::Type) } def simplify; end # : -> String # # @abstract + # @raise [NotImplementedError] # - # source://rbi//lib/rbi/type.rb#991 + # source://rbi//lib/rbi/type.rb#1037 sig { abstract.returns(::String) } def to_rbi; end # : -> String # - # source://rbi//lib/rbi/type.rb#995 + # source://rbi//lib/rbi/type.rb#1041 sig { override.returns(::String) } def to_s; end @@ -5199,7 +5345,7 @@ class RBI::Type # it may return something other than a `All`. # : (Type type1, Type type2, *Type types) -> Type # - # source://rbi//lib/rbi/type.rb#847 + # source://rbi//lib/rbi/type.rb#887 sig { params(type1: ::RBI::Type, type2: ::RBI::Type, types: ::RBI::Type).returns(::RBI::Type) } def all(type1, type2, *types); end @@ -5209,42 +5355,42 @@ class RBI::Type # it may return something other than a `Any`. # : (Type type1, Type type2, *Type types) -> Type # - # source://rbi//lib/rbi/type.rb#856 + # source://rbi//lib/rbi/type.rb#896 sig { params(type1: ::RBI::Type, type2: ::RBI::Type, types: ::RBI::Type).returns(::RBI::Type) } def any(type1, type2, *types); end # Builds a type that represents `T.anything`. # : -> Anything # - # source://rbi//lib/rbi/type.rb#778 + # source://rbi//lib/rbi/type.rb#818 sig { returns(::RBI::Type::Anything) } def anything; end # Builds a type that represents `T.attached_class`. # : -> AttachedClass # - # source://rbi//lib/rbi/type.rb#784 + # source://rbi//lib/rbi/type.rb#824 sig { returns(::RBI::Type::AttachedClass) } def attached_class; end # Builds a type that represents `T::Boolean`. # : -> Boolean # - # source://rbi//lib/rbi/type.rb#790 + # source://rbi//lib/rbi/type.rb#830 sig { returns(::RBI::Type::Boolean) } def boolean; end # Builds a type that represents the singleton class of another type like `T.class_of(Foo)`. # : (Simple type, ?Type? type_parameter) -> ClassOf # - # source://rbi//lib/rbi/type.rb#828 + # source://rbi//lib/rbi/type.rb#868 sig { params(type: ::RBI::Type::Simple, type_parameter: T.nilable(::RBI::Type)).returns(::RBI::Type::ClassOf) } def class_of(type, type_parameter = T.unsafe(nil)); end # Builds a type that represents a generic type like `T::Array[String]` or `T::Hash[Symbol, Integer]`. # : (String name, *(Type | Array[Type]) params) -> Generic # - # source://rbi//lib/rbi/type.rb#864 + # source://rbi//lib/rbi/type.rb#904 sig { params(name: ::String, params: T.any(::RBI::Type, T::Array[::RBI::Type])).returns(::RBI::Type::Generic) } def generic(name, *params); end @@ -5254,14 +5400,14 @@ class RBI::Type # it may return something other than a `RBI::Type::Nilable`. # : (Type type) -> Type # - # source://rbi//lib/rbi/type.rb#837 + # source://rbi//lib/rbi/type.rb#877 sig { params(type: ::RBI::Type).returns(::RBI::Type) } def nilable(type); end # Builds a type that represents `T.noreturn`. # : -> NoReturn # - # source://rbi//lib/rbi/type.rb#796 + # source://rbi//lib/rbi/type.rb#836 sig { returns(::RBI::Type::NoReturn) } def noreturn; end @@ -5282,21 +5428,21 @@ class RBI::Type # Builds a type that represents a proc type like `T.proc.void`. # : -> Proc # - # source://rbi//lib/rbi/type.rb#892 + # source://rbi//lib/rbi/type.rb#938 sig { returns(::RBI::Type::Proc) } def proc; end # Builds a type that represents `T.self_type`. # : -> SelfType # - # source://rbi//lib/rbi/type.rb#802 + # source://rbi//lib/rbi/type.rb#842 sig { returns(::RBI::Type::SelfType) } def self_type; end # Builds a type that represents a shape type like `{name: String, age: Integer}`. # : (?Hash[(String | Symbol), Type] types) -> Shape # - # source://rbi//lib/rbi/type.rb#884 + # source://rbi//lib/rbi/type.rb#930 sig { params(types: T::Hash[T.any(::String, ::Symbol), ::RBI::Type]).returns(::RBI::Type::Shape) } def shape(types = T.unsafe(nil)); end @@ -5307,42 +5453,49 @@ class RBI::Type # # @raise [NameError] # - # source://rbi//lib/rbi/type.rb#767 + # source://rbi//lib/rbi/type.rb#807 sig { params(name: ::String).returns(::RBI::Type::Simple) } def simple(name); end # Builds a type that represents the class of another type like `T::Class[Foo]`. # : (Type type) -> Class # - # source://rbi//lib/rbi/type.rb#822 + # source://rbi//lib/rbi/type.rb#862 sig { params(type: ::RBI::Type).returns(::RBI::Type::Class) } def t_class(type); end # Builds a type that represents a tuple type like `[String, Integer]`. # : (*(Type | Array[Type]) types) -> Tuple # - # source://rbi//lib/rbi/type.rb#878 + # source://rbi//lib/rbi/type.rb#924 sig { params(types: T.any(::RBI::Type, T::Array[::RBI::Type])).returns(::RBI::Type::Tuple) } def tuple(*types); end + # Builds a type that represents a type alias like `MyTypeAlias`. + # : (String name, Type aliased_type) -> TypeAlias + # + # source://rbi//lib/rbi/type.rb#916 + sig { params(name: ::String, aliased_type: ::RBI::Type).returns(::RBI::Type::TypeAlias) } + def type_alias(name, aliased_type); end + # Builds a type that represents a type parameter like `T.type_parameter(:U)`. # : (Symbol name) -> TypeParameter # - # source://rbi//lib/rbi/type.rb#870 + # source://rbi//lib/rbi/type.rb#910 sig { params(name: ::Symbol).returns(::RBI::Type::TypeParameter) } def type_parameter(name); end # Builds a type that represents `T.untyped`. # : -> Untyped # - # source://rbi//lib/rbi/type.rb#808 + # source://rbi//lib/rbi/type.rb#848 sig { returns(::RBI::Type::Untyped) } def untyped; end # Builds a type that represents `void`. # : -> Void # - # source://rbi//lib/rbi/type.rb#814 + # source://rbi//lib/rbi/type.rb#854 sig { returns(::RBI::Type::Void) } def void; end @@ -5350,19 +5503,19 @@ class RBI::Type # : (Prism::CallNode node) -> Array[Prism::Node] # - # source://rbi//lib/rbi/type_parser.rb#289 + # source://rbi//lib/rbi/type_parser.rb#314 sig { params(node: ::Prism::CallNode).returns(T::Array[::Prism::Node]) } def call_chain(node); end # : (Prism::CallNode node, Integer count) -> Array[Prism::Node] # - # source://rbi//lib/rbi/type_parser.rb#276 + # source://rbi//lib/rbi/type_parser.rb#301 sig { params(node: ::Prism::CallNode, count: ::Integer).returns(T::Array[::Prism::Node]) } def check_arguments_at_least!(node, count); end # : (Prism::CallNode node, Integer count) -> Array[Prism::Node] # - # source://rbi//lib/rbi/type_parser.rb#261 + # source://rbi//lib/rbi/type_parser.rb#286 sig { params(node: ::Prism::CallNode, count: ::Integer).returns(T::Array[::Prism::Node]) } def check_arguments_exactly!(node, count); end @@ -5370,33 +5523,39 @@ class RBI::Type # # @raise [Error] # - # source://rbi//lib/rbi/type_parser.rb#71 + # source://rbi//lib/rbi/type_parser.rb#96 sig { params(node: ::Prism::CallNode).returns(::RBI::Type) } def parse_call(node); end # : ((Prism::ConstantReadNode | Prism::ConstantPathNode) node) -> Type # - # source://rbi//lib/rbi/type_parser.rb#54 + # source://rbi//lib/rbi/type_parser.rb#56 sig { params(node: T.any(::Prism::ConstantPathNode, ::Prism::ConstantReadNode)).returns(::RBI::Type) } def parse_constant(node); end + # : (Prism::ConstantWriteNode | Prism::ConstantPathWriteNode node) -> Type + # + # source://rbi//lib/rbi/type_parser.rb#73 + sig { params(node: T.any(::Prism::ConstantPathWriteNode, ::Prism::ConstantWriteNode)).returns(::RBI::Type) } + def parse_constant_assignment(node); end + # : (Prism::CallNode node) -> Type # # @raise [Error] # - # source://rbi//lib/rbi/type_parser.rb#211 + # source://rbi//lib/rbi/type_parser.rb#236 sig { params(node: ::Prism::CallNode).returns(::RBI::Type) } def parse_proc(node); end # : ((Prism::HashNode | Prism::KeywordHashNode) node) -> Type # - # source://rbi//lib/rbi/type_parser.rb#190 + # source://rbi//lib/rbi/type_parser.rb#215 sig { params(node: T.any(::Prism::HashNode, ::Prism::KeywordHashNode)).returns(::RBI::Type) } def parse_shape(node); end # : (Prism::ArrayNode node) -> Type # - # source://rbi//lib/rbi/type_parser.rb#185 + # source://rbi//lib/rbi/type_parser.rb#210 sig { params(node: ::Prism::ArrayNode).returns(::RBI::Type) } def parse_tuple(node); end @@ -5404,7 +5563,7 @@ class RBI::Type # # @return [Boolean] # - # source://rbi//lib/rbi/type_parser.rb#302 + # source://rbi//lib/rbi/type_parser.rb#327 sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) } def t?(node); end @@ -5412,7 +5571,7 @@ class RBI::Type # # @return [Boolean] # - # source://rbi//lib/rbi/type_parser.rb#314 + # source://rbi//lib/rbi/type_parser.rb#346 sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) } def t_boolean?(node); end @@ -5420,7 +5579,7 @@ class RBI::Type # # @return [Boolean] # - # source://rbi//lib/rbi/type_parser.rb#321 + # source://rbi//lib/rbi/type_parser.rb#353 sig { params(node: ::Prism::ConstantPathNode).returns(T::Boolean) } def t_class?(node); end @@ -5428,7 +5587,7 @@ class RBI::Type # # @return [Boolean] # - # source://rbi//lib/rbi/type_parser.rb#326 + # source://rbi//lib/rbi/type_parser.rb#358 sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) } def t_class_of?(node); end @@ -5436,15 +5595,23 @@ class RBI::Type # # @return [Boolean] # - # source://rbi//lib/rbi/type_parser.rb#333 + # source://rbi//lib/rbi/type_parser.rb#365 sig { params(node: ::Prism::CallNode).returns(T::Boolean) } def t_proc?(node); end + # : (Prism::Node? node) -> bool + # + # @return [Boolean] + # + # source://rbi//lib/rbi/type_parser.rb#339 + sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) } + def t_type_alias?(node); end + # : (String name) -> bool # # @return [Boolean] # - # source://rbi//lib/rbi/type.rb#899 + # source://rbi//lib/rbi/type.rb#945 sig { params(name: ::String).returns(T::Boolean) } def valid_identifier?(name); end end @@ -5838,79 +6005,79 @@ end # A proc type like `T.proc.void`. # -# source://rbi//lib/rbi/type.rb#667 +# source://rbi//lib/rbi/type.rb#707 class RBI::Type::Proc < ::RBI::Type # : -> void # # @return [Proc] a new instance of Proc # - # source://rbi//lib/rbi/type.rb#678 + # source://rbi//lib/rbi/type.rb#718 sig { void } def initialize; end # : (BasicObject other) -> bool # - # source://rbi//lib/rbi/type.rb#687 + # source://rbi//lib/rbi/type.rb#727 sig { override.params(other: ::BasicObject).returns(T::Boolean) } def ==(other); end # : (untyped type) -> self # - # source://rbi//lib/rbi/type.rb#715 + # source://rbi//lib/rbi/type.rb#755 sig { params(type: T.untyped).returns(T.self_type) } def bind(type); end # : -> Type # - # source://rbi//lib/rbi/type.rb#747 + # source://rbi//lib/rbi/type.rb#787 sig { override.returns(::RBI::Type) } def normalize; end # : (**Type params) -> self # - # source://rbi//lib/rbi/type.rb#697 + # source://rbi//lib/rbi/type.rb#737 sig { params(params: ::RBI::Type).returns(T.self_type) } def params(**params); end # : Type? # - # source://rbi//lib/rbi/type.rb#675 + # source://rbi//lib/rbi/type.rb#715 sig { returns(T.nilable(::RBI::Type)) } def proc_bind; end # : Hash[Symbol, Type] # - # source://rbi//lib/rbi/type.rb#669 + # source://rbi//lib/rbi/type.rb#709 sig { returns(T::Hash[::Symbol, ::RBI::Type]) } def proc_params; end # : Type # - # source://rbi//lib/rbi/type.rb#672 + # source://rbi//lib/rbi/type.rb#712 sig { returns(::RBI::Type) } def proc_returns; end # : (untyped type) -> self # - # source://rbi//lib/rbi/type.rb#703 + # source://rbi//lib/rbi/type.rb#743 sig { params(type: T.untyped).returns(T.self_type) } def returns(type); end # : -> Type # - # source://rbi//lib/rbi/type.rb#753 + # source://rbi//lib/rbi/type.rb#793 sig { override.returns(::RBI::Type) } def simplify; end # : -> String # - # source://rbi//lib/rbi/type.rb#722 + # source://rbi//lib/rbi/type.rb#762 sig { override.returns(::String) } def to_rbi; end # : -> self # - # source://rbi//lib/rbi/type.rb#709 + # source://rbi//lib/rbi/type.rb#749 sig { returns(T.self_type) } def void; end end @@ -5946,43 +6113,43 @@ end # A shape type like `{name: String, age: Integer}`. # -# source://rbi//lib/rbi/type.rb#625 +# source://rbi//lib/rbi/type.rb#665 class RBI::Type::Shape < ::RBI::Type # : (Hash[(String | Symbol), Type] types) -> void # # @return [Shape] a new instance of Shape # - # source://rbi//lib/rbi/type.rb#630 + # source://rbi//lib/rbi/type.rb#670 sig { params(types: T::Hash[T.any(::String, ::Symbol), ::RBI::Type]).void } def initialize(types); end # : (BasicObject other) -> bool # - # source://rbi//lib/rbi/type.rb#637 + # source://rbi//lib/rbi/type.rb#677 sig { override.params(other: ::BasicObject).returns(T::Boolean) } def ==(other); end # : -> Type # - # source://rbi//lib/rbi/type.rb#653 + # source://rbi//lib/rbi/type.rb#693 sig { override.returns(::RBI::Type) } def normalize; end # : -> Type # - # source://rbi//lib/rbi/type.rb#659 + # source://rbi//lib/rbi/type.rb#699 sig { override.returns(::RBI::Type) } def simplify; end # : -> String # - # source://rbi//lib/rbi/type.rb#643 + # source://rbi//lib/rbi/type.rb#683 sig { override.returns(::String) } def to_rbi; end # : Hash[(String | Symbol), Type] # - # source://rbi//lib/rbi/type.rb#627 + # source://rbi//lib/rbi/type.rb#667 sig { returns(T::Hash[T.any(::String, ::Symbol), ::RBI::Type]) } def types; end end @@ -6034,47 +6201,96 @@ end # A tuple type like `[String, Integer]`. # -# source://rbi//lib/rbi/type.rb#589 +# source://rbi//lib/rbi/type.rb#629 class RBI::Type::Tuple < ::RBI::Type # : (Array[Type] types) -> void # # @return [Tuple] a new instance of Tuple # - # source://rbi//lib/rbi/type.rb#594 + # source://rbi//lib/rbi/type.rb#634 sig { params(types: T::Array[::RBI::Type]).void } def initialize(types); end # : (BasicObject other) -> bool # - # source://rbi//lib/rbi/type.rb#601 + # source://rbi//lib/rbi/type.rb#641 sig { override.params(other: ::BasicObject).returns(T::Boolean) } def ==(other); end # : -> Type # - # source://rbi//lib/rbi/type.rb#613 + # source://rbi//lib/rbi/type.rb#653 sig { override.returns(::RBI::Type) } def normalize; end # : -> Type # - # source://rbi//lib/rbi/type.rb#619 + # source://rbi//lib/rbi/type.rb#659 sig { override.returns(::RBI::Type) } def simplify; end # : -> String # - # source://rbi//lib/rbi/type.rb#607 + # source://rbi//lib/rbi/type.rb#647 sig { override.returns(::String) } def to_rbi; end # : Array[Type] # - # source://rbi//lib/rbi/type.rb#591 + # source://rbi//lib/rbi/type.rb#631 sig { returns(T::Array[::RBI::Type]) } def types; end end +# A type alias that references another type by name like `MyTypeAlias`. +# +# source://rbi//lib/rbi/type.rb#587 +class RBI::Type::TypeAlias < ::RBI::Type + # : (String name, Type aliased_type) -> void + # + # @return [TypeAlias] a new instance of TypeAlias + # + # source://rbi//lib/rbi/type.rb#595 + sig { params(name: ::String, aliased_type: ::RBI::Type).void } + def initialize(name, aliased_type); end + + # : (BasicObject other) -> bool + # + # source://rbi//lib/rbi/type.rb#603 + sig { override.params(other: ::BasicObject).returns(T::Boolean) } + def ==(other); end + + # : Type + # + # source://rbi//lib/rbi/type.rb#592 + sig { returns(::RBI::Type) } + def aliased_type; end + + # : String + # + # source://rbi//lib/rbi/type.rb#589 + sig { returns(::String) } + def name; end + + # : -> Type + # + # source://rbi//lib/rbi/type.rb#615 + sig { override.returns(::RBI::Type) } + def normalize; end + + # : -> Type + # + # source://rbi//lib/rbi/type.rb#621 + sig { override.returns(::RBI::Type) } + def simplify; end + + # : -> String + # + # source://rbi//lib/rbi/type.rb#609 + sig { override.returns(::String) } + def to_rbi; end +end + # A type parameter like `T.type_parameter(:U)`. # # source://rbi//lib/rbi/type.rb#551 @@ -6159,109 +6375,115 @@ class RBI::Type::Visitor # : (Type::All type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#56 + # source://rbi//lib/rbi/type_visitor.rb#58 sig { params(type: ::RBI::Type::All).void } def visit_all(type); end # : (Type::Any type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#59 + # source://rbi//lib/rbi/type_visitor.rb#61 sig { params(type: ::RBI::Type::Any).void } def visit_any(type); end # : (Type::Anything type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#62 + # source://rbi//lib/rbi/type_visitor.rb#64 sig { params(type: ::RBI::Type::Anything).void } def visit_anything(type); end # : (Type::AttachedClass type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#65 + # source://rbi//lib/rbi/type_visitor.rb#67 sig { params(type: ::RBI::Type::AttachedClass).void } def visit_attached_class(type); end # : (Type::Boolean type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#68 + # source://rbi//lib/rbi/type_visitor.rb#70 sig { params(type: ::RBI::Type::Boolean).void } def visit_boolean(type); end # : (Type::Class type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#71 + # source://rbi//lib/rbi/type_visitor.rb#73 sig { params(type: ::RBI::Type::Class).void } def visit_class(type); end # : (Type::ClassOf type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#74 + # source://rbi//lib/rbi/type_visitor.rb#76 sig { params(type: ::RBI::Type::ClassOf).void } def visit_class_of(type); end # : (Type::Generic type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#77 + # source://rbi//lib/rbi/type_visitor.rb#79 sig { params(type: ::RBI::Type::Generic).void } def visit_generic(type); end # : (Type::Nilable type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#80 + # source://rbi//lib/rbi/type_visitor.rb#82 sig { params(type: ::RBI::Type::Nilable).void } def visit_nilable(type); end # : (Type::NoReturn type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#86 + # source://rbi//lib/rbi/type_visitor.rb#88 sig { params(type: ::RBI::Type::NoReturn).void } def visit_no_return(type); end # : (Type::Proc type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#89 + # source://rbi//lib/rbi/type_visitor.rb#91 sig { params(type: ::RBI::Type::Proc).void } def visit_proc(type); end # : (Type::SelfType type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#92 + # source://rbi//lib/rbi/type_visitor.rb#94 sig { params(type: ::RBI::Type::SelfType).void } def visit_self_type(type); end # : (Type::Shape type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#98 + # source://rbi//lib/rbi/type_visitor.rb#100 sig { params(type: ::RBI::Type::Shape).void } def visit_shape(type); end # : (Type::Simple type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#83 + # source://rbi//lib/rbi/type_visitor.rb#85 sig { params(type: ::RBI::Type::Simple).void } def visit_simple(type); end # : (Type::Tuple type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#101 + # source://rbi//lib/rbi/type_visitor.rb#103 sig { params(type: ::RBI::Type::Tuple).void } def visit_tuple(type); end + # : (Type::TypeAlias type) -> void + # + # source://rbi//lib/rbi/type_visitor.rb#112 + sig { params(type: ::RBI::Type::TypeAlias).void } + def visit_type_alias(type); end + # : (Type::TypeParameter type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#104 + # source://rbi//lib/rbi/type_visitor.rb#106 sig { params(type: ::RBI::Type::TypeParameter).void } def visit_type_parameter(type); end # : (Type::Untyped type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#107 + # source://rbi//lib/rbi/type_visitor.rb#109 sig { params(type: ::RBI::Type::Untyped).void } def visit_untyped(type); end # : (Type::Void type) -> void # - # source://rbi//lib/rbi/type_visitor.rb#95 + # source://rbi//lib/rbi/type_visitor.rb#97 sig { params(type: ::RBI::Type::Void).void } def visit_void(type); end end @@ -6298,7 +6520,7 @@ class RBI::Type::Void < ::RBI::Type def to_rbi; end end -# source://rbi//lib/rbi/model.rb#1063 +# source://rbi//lib/rbi/model.rb#1159 class RBI::TypeMember < ::RBI::NodeWithComments include ::RBI::Indexable @@ -6306,7 +6528,7 @@ class RBI::TypeMember < ::RBI::NodeWithComments # # @return [TypeMember] a new instance of TypeMember # - # source://rbi//lib/rbi/model.rb#1068 + # source://rbi//lib/rbi/model.rb#1164 sig do params( name: ::String, @@ -6320,7 +6542,7 @@ class RBI::TypeMember < ::RBI::NodeWithComments # : -> String # - # source://rbi//lib/rbi/model.rb#1076 + # source://rbi//lib/rbi/model.rb#1172 sig { returns(::String) } def fully_qualified_name; end @@ -6332,149 +6554,149 @@ class RBI::TypeMember < ::RBI::NodeWithComments # : String # - # source://rbi//lib/rbi/model.rb#1065 + # source://rbi//lib/rbi/model.rb#1161 sig { returns(::String) } def name; end # : -> String # - # source://rbi//lib/rbi/model.rb#1084 + # source://rbi//lib/rbi/model.rb#1180 sig { override.returns(::String) } def to_s; end # : String # - # source://rbi//lib/rbi/model.rb#1065 + # source://rbi//lib/rbi/model.rb#1161 def value; end end -# source://rbi//lib/rbi/rbs_printer.rb#982 +# source://rbi//lib/rbi/rbs_printer.rb#984 class RBI::TypePrinter # : (?max_line_length: Integer?) -> void # # @return [TypePrinter] a new instance of TypePrinter # - # source://rbi//lib/rbi/rbs_printer.rb#987 + # source://rbi//lib/rbi/rbs_printer.rb#989 sig { params(max_line_length: T.nilable(::Integer)).void } def initialize(max_line_length: T.unsafe(nil)); end # : String # - # source://rbi//lib/rbi/rbs_printer.rb#984 + # source://rbi//lib/rbi/rbs_printer.rb#986 sig { returns(::String) } def string; end # : (Type node) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#993 + # source://rbi//lib/rbi/rbs_printer.rb#995 sig { params(node: ::RBI::Type).void } def visit(node); end # : (Type::All type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1108 + # source://rbi//lib/rbi/rbs_printer.rb#1110 sig { params(type: ::RBI::Type::All).void } def visit_all(type); end # : (Type::Any type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1118 + # source://rbi//lib/rbi/rbs_printer.rb#1120 sig { params(type: ::RBI::Type::Any).void } def visit_any(type); end # : (Type::Anything type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1058 + # source://rbi//lib/rbi/rbs_printer.rb#1060 sig { params(type: ::RBI::Type::Anything).void } def visit_anything(type); end # : (Type::AttachedClass type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1083 + # source://rbi//lib/rbi/rbs_printer.rb#1085 sig { params(type: ::RBI::Type::AttachedClass).void } def visit_attached_class(type); end # : (Type::Boolean type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1042 + # source://rbi//lib/rbi/rbs_printer.rb#1044 sig { params(type: ::RBI::Type::Boolean).void } def visit_boolean(type); end # : (Type::Class type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1185 + # source://rbi//lib/rbi/rbs_printer.rb#1187 sig { params(type: ::RBI::Type::Class).void } def visit_class(type); end # : (Type::ClassOf type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1101 + # source://rbi//lib/rbi/rbs_printer.rb#1103 sig { params(type: ::RBI::Type::ClassOf).void } def visit_class_of(type); end # : (Type::Generic type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1047 + # source://rbi//lib/rbi/rbs_printer.rb#1049 sig { params(type: ::RBI::Type::Generic).void } def visit_generic(type); end # : (Type::Nilable type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1088 + # source://rbi//lib/rbi/rbs_printer.rb#1090 sig { params(type: ::RBI::Type::Nilable).void } def visit_nilable(type); end # : (Type::NoReturn type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1068 + # source://rbi//lib/rbi/rbs_printer.rb#1070 sig { params(type: ::RBI::Type::NoReturn).void } def visit_no_return(type); end # : (Type::Proc type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1158 + # source://rbi//lib/rbi/rbs_printer.rb#1160 sig { params(type: ::RBI::Type::Proc).void } def visit_proc(type); end # : (Type::SelfType type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1078 + # source://rbi//lib/rbi/rbs_printer.rb#1080 sig { params(type: ::RBI::Type::SelfType).void } def visit_self_type(type); end # : (Type::Shape type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1138 + # source://rbi//lib/rbi/rbs_printer.rb#1140 sig { params(type: ::RBI::Type::Shape).void } def visit_shape(type); end # : (Type::Simple type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1037 + # source://rbi//lib/rbi/rbs_printer.rb#1039 sig { params(type: ::RBI::Type::Simple).void } def visit_simple(type); end # : (Type::Tuple type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1128 + # source://rbi//lib/rbi/rbs_printer.rb#1130 sig { params(type: ::RBI::Type::Tuple).void } def visit_tuple(type); end # : (Type::TypeParameter type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1180 + # source://rbi//lib/rbi/rbs_printer.rb#1182 sig { params(type: ::RBI::Type::TypeParameter).void } def visit_type_parameter(type); end # : (Type::Untyped type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1073 + # source://rbi//lib/rbi/rbs_printer.rb#1075 sig { params(type: ::RBI::Type::Untyped).void } def visit_untyped(type); end # : (Type::Void type) -> void # - # source://rbi//lib/rbi/rbs_printer.rb#1063 + # source://rbi//lib/rbi/rbs_printer.rb#1065 sig { params(type: ::RBI::Type::Void).void } def visit_void(type); end @@ -6482,7 +6704,7 @@ class RBI::TypePrinter # : (String type_name) -> String # - # source://rbi//lib/rbi/rbs_printer.rb#1194 + # source://rbi//lib/rbi/rbs_printer.rb#1196 sig { params(type_name: ::String).returns(::String) } def translate_t_type(type_name); end end @@ -6532,7 +6754,7 @@ RBI::VERSION = T.let(T.unsafe(nil), String) # @abstract # -# source://rbi//lib/rbi/model.rb#693 +# source://rbi//lib/rbi/model.rb#743 class RBI::Visibility < ::RBI::NodeWithComments abstract! @@ -6540,13 +6762,13 @@ class RBI::Visibility < ::RBI::NodeWithComments # # @return [Visibility] a new instance of Visibility # - # source://rbi//lib/rbi/model.rb#698 + # source://rbi//lib/rbi/model.rb#748 sig { params(visibility: ::Symbol, loc: T.nilable(::RBI::Loc), comments: T::Array[::RBI::Comment]).void } def initialize(visibility, loc: T.unsafe(nil), comments: T.unsafe(nil)); end # : (Object? other) -> bool # - # source://rbi//lib/rbi/model.rb#704 + # source://rbi//lib/rbi/model.rb#754 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end @@ -6554,7 +6776,7 @@ class RBI::Visibility < ::RBI::NodeWithComments # # @return [Boolean] # - # source://rbi//lib/rbi/model.rb#721 + # source://rbi//lib/rbi/model.rb#771 sig { returns(T::Boolean) } def private?; end @@ -6562,7 +6784,7 @@ class RBI::Visibility < ::RBI::NodeWithComments # # @return [Boolean] # - # source://rbi//lib/rbi/model.rb#716 + # source://rbi//lib/rbi/model.rb#766 sig { returns(T::Boolean) } def protected?; end @@ -6570,13 +6792,13 @@ class RBI::Visibility < ::RBI::NodeWithComments # # @return [Boolean] # - # source://rbi//lib/rbi/model.rb#711 + # source://rbi//lib/rbi/model.rb#761 sig { returns(T::Boolean) } def public?; end # : Symbol # - # source://rbi//lib/rbi/model.rb#695 + # source://rbi//lib/rbi/model.rb#745 sig { returns(::Symbol) } def visibility; end end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/rbs@3.9.4.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/rbs@3.9.5.rbi similarity index 100% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/rbs@3.9.4.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/rbs@3.9.5.rbi diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/regexp_parser@2.10.0.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/regexp_parser@2.11.3.rbi similarity index 87% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/regexp_parser@2.10.0.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/regexp_parser@2.11.3.rbi index f1d8174812..fec7320614 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/regexp_parser@2.10.0.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/regexp_parser@2.11.3.rbi @@ -5,275 +5,275 @@ # Please instead update this file by running `bin/tapioca gem regexp_parser`. -# source://regexp_parser//lib/regexp_parser/expression/shared.rb#1 +# source://regexp_parser//lib/regexp_parser/expression/shared.rb#3 module Regexp::Expression; end -# source://regexp_parser//lib/regexp_parser/expression/classes/alternation.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/alternation.rb#7 class Regexp::Expression::Alternation < ::Regexp::Expression::SequenceOperation - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#7 def alternatives; end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#11 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#131 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#133 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/alternation.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/classes/alternation.rb#8 Regexp::Expression::Alternation::OPERAND = Regexp::Expression::Alternative # A sequence of expressions, used by Alternation as one of its alternatives. # -# source://regexp_parser//lib/regexp_parser/expression/classes/alternation.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/alternation.rb#5 class Regexp::Expression::Alternative < ::Regexp::Expression::Sequence - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#10 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#12 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#4 module Regexp::Expression::Anchor; end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#18 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#20 Regexp::Expression::Anchor::BOL = Regexp::Expression::Anchor::BeginningOfLine -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#20 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#22 Regexp::Expression::Anchor::BOS = Regexp::Expression::Anchor::BeginningOfString -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#5 class Regexp::Expression::Anchor::Base < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#148 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#150 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#7 class Regexp::Expression::Anchor::BeginningOfLine < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#11 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#13 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#8 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#10 class Regexp::Expression::Anchor::BeginningOfString < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#12 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#14 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#19 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#21 Regexp::Expression::Anchor::EOL = Regexp::Expression::Anchor::EndOfLine -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#21 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#23 Regexp::Expression::Anchor::EOS = Regexp::Expression::Anchor::EndOfString -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#22 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#24 Regexp::Expression::Anchor::EOSobEOL = Regexp::Expression::Anchor::EndOfStringOrBeforeEndOfLine -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#8 class Regexp::Expression::Anchor::EndOfLine < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#13 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#15 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#9 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#11 class Regexp::Expression::Anchor::EndOfString < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#16 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#11 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#13 class Regexp::Expression::Anchor::EndOfStringOrBeforeEndOfLine < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#15 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#17 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#16 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#18 class Regexp::Expression::Anchor::MatchStart < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#18 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#14 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#16 class Regexp::Expression::Anchor::NonWordBoundary < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#17 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#19 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#13 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#15 def negative?; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#13 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#15 class Regexp::Expression::Anchor::WordBoundary < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#18 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#20 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#64 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#66 module Regexp::Expression::Assertion; end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#65 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#67 class Regexp::Expression::Assertion::Base < ::Regexp::Expression::Group::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#148 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#150 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#67 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#69 class Regexp::Expression::Assertion::Lookahead < ::Regexp::Expression::Assertion::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#19 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#21 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#70 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#72 class Regexp::Expression::Assertion::Lookbehind < ::Regexp::Expression::Assertion::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#20 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#22 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#68 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#70 class Regexp::Expression::Assertion::NegativeLookahead < ::Regexp::Expression::Assertion::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#21 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#23 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#16 def negative?; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#71 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#73 class Regexp::Expression::Assertion::NegativeLookbehind < ::Regexp::Expression::Assertion::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#22 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#24 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#15 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#17 def negative?; end end # alias for symmetry between token symbol and Expression class name # -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#55 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#57 Regexp::Expression::Backref = Regexp::Expression::Backreference -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#4 module Regexp::Expression::Backreference; end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#5 class Regexp::Expression::Backreference::Base < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#155 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#157 def match_length; end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#140 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#142 def referential?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#15 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#17 class Regexp::Expression::Backreference::Name < ::Regexp::Expression::Backreference::Base # @return [Name] a new instance of Name # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#19 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#21 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#23 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#25 def human_name; end # Returns the value of attribute name. # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#18 def name; end # Returns the value of attribute name. # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#18 def reference; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#31 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#33 class Regexp::Expression::Backreference::NameCall < ::Regexp::Expression::Backreference::Name - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#24 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#26 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#43 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#45 class Regexp::Expression::Backreference::NameRecursionLevel < ::Regexp::Expression::Backreference::Name # @return [NameRecursionLevel] a new instance of NameRecursionLevel # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#46 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#48 def initialize(token, options = T.unsafe(nil)); end # Returns the value of attribute recursion_level. # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#44 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#46 def recursion_level; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#7 class Regexp::Expression::Backreference::Number < ::Regexp::Expression::Backreference::Base # @return [Number] a new instance of Number # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#11 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#25 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#27 def human_name; end # Returns the value of attribute number. # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#6 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#8 def number; end # Returns the value of attribute number. # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#6 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#8 def reference; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#30 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#32 class Regexp::Expression::Backreference::NumberCall < ::Regexp::Expression::Backreference::Number - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#29 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#32 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#34 class Regexp::Expression::Backreference::NumberCallRelative < ::Regexp::Expression::Backreference::NumberRelative - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#28 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#30 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#34 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#36 class Regexp::Expression::Backreference::NumberRecursionLevel < ::Regexp::Expression::Backreference::NumberRelative # @return [NumberRecursionLevel] a new instance of NumberRecursionLevel # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#37 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#39 def initialize(token, options = T.unsafe(nil)); end # Returns the value of attribute recursion_level. # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#35 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#37 def recursion_level; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#25 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#27 class Regexp::Expression::Backreference::NumberRelative < ::Regexp::Expression::Backreference::Number # Returns the value of attribute effective_number. # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#26 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#28 def effective_number; end # Sets the attribute effective_number # # @param value the value to set the attribute effective_number to. # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#26 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#28 def effective_number=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#26 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#28 def human_name; end # Returns the value of attribute effective_number. # - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#26 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#28 def reference; end end -# source://regexp_parser//lib/regexp_parser/expression/base.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/base.rb#4 class Regexp::Expression::Base include ::Regexp::Expression::Shared include ::Regexp::Expression::ReferencedExpressions @@ -281,160 +281,160 @@ class Regexp::Expression::Base # @return [Base] a new instance of Base # - # source://regexp_parser//lib/regexp_parser/expression/base.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#7 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#10 def =~(string, offset = T.unsafe(nil)); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#25 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#27 def a?; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#25 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#27 def ascii_classes?; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#60 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#62 def attributes; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#10 def case_insensitive?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def conditional_level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def conditional_level=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def custom_to_s_handling; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def custom_to_s_handling=(_arg0); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#20 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#22 def d?; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#20 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#22 def default_classes?; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#16 def extended?; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#16 def free_spacing?; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/base.rb#47 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#49 def greedy?; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#10 def i?; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#10 def ignore_case?; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/base.rb#51 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#53 def lazy?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def level=(_arg0); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#5 def m?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#10 def match(string, offset = T.unsafe(nil)); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#5 def match?(string); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#5 def matches?(string); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#5 def multiline?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#16 def nesting_level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def options; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def options=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def parent; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def parent=(_arg0); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/base.rb#56 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#58 def possessive?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def pre_quantifier_decorations; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def pre_quantifier_decorations=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#16 def quantifier; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#17 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#19 def quantify(*args); end # Deprecated. Prefer `#repetitions` which has a more uniform interface. # - # source://regexp_parser//lib/regexp_parser/expression/base.rb#26 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#28 def quantity; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/base.rb#51 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#53 def reluctant?; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#33 def repetitions; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def set_level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def set_level=(_arg0); end # %l Level (depth) of the expression. Returns 'root' for the root @@ -470,7 +470,7 @@ class Regexp::Expression::Base # %m Most info, same as '%b %q' # %a All info, same as '%m %t' # - # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#37 + # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#39 def strfre(format = T.unsafe(nil), indent_offset = T.unsafe(nil), index = T.unsafe(nil)); end # %l Level (depth) of the expression. Returns 'root' for the root @@ -506,683 +506,691 @@ class Regexp::Expression::Base # %m Most info, same as '%b %q' # %a All info, same as '%m %t' # - # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#37 + # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#39 def strfregexp(format = T.unsafe(nil), indent_offset = T.unsafe(nil), index = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def te; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def te=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def text; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def text=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#60 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#62 def to_h; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#11 def to_re(format = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def token; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def token=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def ts; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def ts=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def type; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def type=(_arg0); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#30 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#32 def u?; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#30 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#32 def unicode_classes?; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#21 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#23 def unquantified_clone; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#16 def x?; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#4 class Regexp::Expression::CharacterSet < ::Regexp::Expression::Subexpression # @return [CharacterSet] a new instance of CharacterSet # - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#6 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#8 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#18 def close; end # Returns the value of attribute closed. # - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#5 def closed; end # Sets the attribute closed # # @param value the value to set the attribute closed to. # - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#5 def closed=(_arg0); end # Returns the value of attribute closed. # - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#5 def closed?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#12 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#14 def negate; end # Returns the value of attribute negative. # - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#5 def negative; end # Sets the attribute negative # # @param value the value to set the attribute negative to. # - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#5 def negative=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#18 def negative?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#15 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#17 def parts; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/intersection.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/intersection.rb#5 class Regexp::Expression::CharacterSet::IntersectedSequence < ::Regexp::Expression::Sequence - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#29 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#31 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/intersection.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/intersection.rb#7 class Regexp::Expression::CharacterSet::Intersection < ::Regexp::Expression::SequenceOperation - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#30 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#32 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/intersection.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/intersection.rb#8 Regexp::Expression::CharacterSet::Intersection::OPERAND = Regexp::Expression::CharacterSet::IntersectedSequence -# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#5 class Regexp::Expression::CharacterSet::Range < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#10 def <<(exp); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#16 def complete?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#33 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#18 def parts; end - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#6 def ts; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#4 module Regexp::Expression::CharacterType; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#7 class Regexp::Expression::CharacterType::Any < ::Regexp::Expression::CharacterType::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#32 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#34 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#5 class Regexp::Expression::CharacterType::Base < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#17 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#19 def negative?; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#8 class Regexp::Expression::CharacterType::Digit < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#15 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#17 class Regexp::Expression::CharacterType::ExtendedGrapheme < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#8 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#10 class Regexp::Expression::CharacterType::Hex < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#14 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#16 class Regexp::Expression::CharacterType::Linebreak < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#7 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#9 class Regexp::Expression::CharacterType::NonDigit < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#9 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#11 class Regexp::Expression::CharacterType::NonHex < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#13 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#15 class Regexp::Expression::CharacterType::NonSpace < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#11 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#13 class Regexp::Expression::CharacterType::NonWord < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#12 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#14 class Regexp::Expression::CharacterType::Space < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#10 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#12 class Regexp::Expression::CharacterType::Word < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#8 +# source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#10 class Regexp::Expression::Comment < ::Regexp::Expression::FreeSpace - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#33 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#35 def human_name; end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#130 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#132 def comment?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#4 module Regexp::Expression::Conditional; end -# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#18 +# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#20 class Regexp::Expression::Conditional::Branch < ::Regexp::Expression::Sequence - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#34 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#36 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#9 +# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#11 class Regexp::Expression::Conditional::Condition < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#35 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#37 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#148 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#150 def match_length; end # Name or number of the referenced capturing group that determines state. # Returns a String if reference is by name, Integer if by number. # - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#12 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#14 def reference; end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#141 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#143 def referential?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#20 +# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#22 class Regexp::Expression::Conditional::Expression < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#21 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#23 def <<(exp); end # @raise [TooManyBranches] # - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#25 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#27 def add_sequence(active_opts = T.unsafe(nil), params = T.unsafe(nil)); end # @raise [TooManyBranches] # - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#25 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#27 def branch(active_opts = T.unsafe(nil), params = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#43 def branches; end - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#37 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#39 def condition; end - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#32 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#34 def condition=(exp); end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#36 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#38 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#131 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#133 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#17 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#19 def parts; end - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#45 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#47 def reference; end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#142 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#144 def referential?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#5 class Regexp::Expression::Conditional::TooManyBranches < ::Regexp::Parser::Error # @return [TooManyBranches] a new instance of TooManyBranches # - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#6 def initialize; end end # alias for symmetry between Token::* and Expression::* # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#29 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#32 Regexp::Expression::Escape = Regexp::Expression::EscapeSequence -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#4 module Regexp::Expression::EscapeSequence; end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#22 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#25 class Regexp::Expression::EscapeSequence::AbstractMetaControlSequence < ::Regexp::Expression::EscapeSequence::Base private - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#40 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#48 def control_sequence_to_s(control_sequence); end - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#45 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#53 def meta_char_to_codepoint(meta_char); end end # \e # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#7 class Regexp::Expression::EscapeSequence::AsciiEscape < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#2 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#4 def codepoint; end end # \b # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#8 class Regexp::Expression::EscapeSequence::Backspace < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#5 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#5 class Regexp::Expression::EscapeSequence::Base < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_char.rb#2 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_char.rb#4 def char; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end end # \a # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#7 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#9 class Regexp::Expression::EscapeSequence::Bell < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#6 def codepoint; end end # e.g. \u000A # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#18 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#20 class Regexp::Expression::EscapeSequence::Codepoint < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#18 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#20 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#22 class Regexp::Expression::EscapeSequence::CodepointList < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#20 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#28 def char; end - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#28 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#36 def chars; end - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#24 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#32 def codepoint; end - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#32 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#40 def codepoints; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#164 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#166 def match_length; end end # e.g. \cB # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#23 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#26 class Regexp::Expression::EscapeSequence::Control < ::Regexp::Expression::EscapeSequence::AbstractMetaControlSequence - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#52 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#60 def codepoint; end end # \f # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#8 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#10 class Regexp::Expression::EscapeSequence::FormFeed < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#7 def codepoint; end end # e.g. \x0A # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#17 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#19 class Regexp::Expression::EscapeSequence::Hex < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#15 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#17 def codepoint; end end # e.g. \j, \@, \😀 (ineffectual escapes) # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#14 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#16 class Regexp::Expression::EscapeSequence::Literal < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#11 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#13 def codepoint; end end # e.g. \M-Z # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#24 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#27 class Regexp::Expression::EscapeSequence::Meta < ::Regexp::Expression::EscapeSequence::AbstractMetaControlSequence - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#58 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#66 def codepoint; end end # e.g. \M-\cX # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#25 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#28 class Regexp::Expression::EscapeSequence::MetaControl < ::Regexp::Expression::EscapeSequence::AbstractMetaControlSequence - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#64 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#72 def codepoint; end end # \n # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#9 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#11 class Regexp::Expression::EscapeSequence::Newline < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#6 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#8 def codepoint; end end # e.g. \012 # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#16 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#18 class Regexp::Expression::EscapeSequence::Octal < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#13 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#15 def codepoint; end end # \r # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#10 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#12 class Regexp::Expression::EscapeSequence::Return < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#7 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#9 def codepoint; end end # \t # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#11 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#13 class Regexp::Expression::EscapeSequence::Tab < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#10 + def codepoint; end +end + +# e.g. \xE2\x82\xAC +# +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#23 +class Regexp::Expression::EscapeSequence::UTF8Hex < ::Regexp::Expression::EscapeSequence::Base + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#21 def codepoint; end end # \v # -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#12 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#14 class Regexp::Expression::EscapeSequence::VerticalTab < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#11 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#4 class Regexp::Expression::FreeSpace < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#148 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#150 def match_length; end # @raise [Regexp::Parser::Error] # - # source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#5 def quantify(*_args); end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#135 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#137 def decorative?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#4 module Regexp::Expression::Group; end # Special case. Absence group can match 0.. chars, irrespective of content. # TODO: in theory, they *can* exclude match lengths with `.`: `(?~.{3})` # -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#19 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#21 class Regexp::Expression::Group::Absence < ::Regexp::Expression::Group::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#172 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#174 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#20 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#22 class Regexp::Expression::Group::Atomic < ::Regexp::Expression::Group::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#5 class Regexp::Expression::Group::Base < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#18 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#20 def parts; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#40 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#42 class Regexp::Expression::Group::Capture < ::Regexp::Expression::Group::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#37 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#39 def human_name; end # Returns the value of attribute number. # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#43 def identifier; end # Returns the value of attribute number. # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#43 def number; end # Sets the attribute number # # @param value the value to set the attribute number to. # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#43 def number=(_arg0); end # Returns the value of attribute number_at_level. # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#43 def number_at_level; end # Sets the attribute number_at_level # # @param value the value to set the attribute number_at_level to. # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#43 def number_at_level=(_arg0); end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#126 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#128 def capturing?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#60 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#62 class Regexp::Expression::Group::Comment < ::Regexp::Expression::Group::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#20 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#22 def parts; end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#131 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#133 def comment?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#136 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#138 def decorative?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#45 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#47 class Regexp::Expression::Group::Named < ::Regexp::Expression::Group::Capture # @return [Named] a new instance of Named # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#49 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#51 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#38 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#40 def human_name; end # Returns the value of attribute name. # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#46 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#48 def identifier; end # Returns the value of attribute name. # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#46 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#48 def name; end private - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#54 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#56 def initialize_copy(orig); end end # TODO: should split off OptionsSwitch in v3.0.0. Maybe even make it no # longer inherit from Group because it is effectively a terminal expression. # -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#23 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#25 class Regexp::Expression::Group::Options < ::Regexp::Expression::Group::Base # Returns the value of attribute option_changes. # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#24 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#26 def option_changes; end # Sets the attribute option_changes # # @param value the value to set the attribute option_changes to. # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#24 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#26 def option_changes=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#33 def quantify(*args); end private - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#26 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#28 def initialize_copy(orig); end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#8 class Regexp::Expression::Group::Passive < ::Regexp::Expression::Group::Base # @return [Passive] a new instance of Passive # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#11 def initialize(*_arg0); end # Sets the attribute implicit # # @param value the value to set the attribute implicit to. # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#7 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#9 def implicit=(_arg0); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#16 def implicit?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#19 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#21 def parts; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/keep.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/keep.rb#4 module Regexp::Expression::Keep; end # TODO: in regexp_parser v3.0.0 this should possibly be a Subexpression # that contains all expressions to its left. # -# source://regexp_parser//lib/regexp_parser/expression/classes/keep.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/keep.rb#7 class Regexp::Expression::Keep::Mark < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#39 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#41 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#148 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#150 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/literal.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/literal.rb#4 class Regexp::Expression::Literal < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#40 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#42 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#105 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#107 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#85 +# source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#87 Regexp::Expression::MatchLength = Regexp::MatchLength -# source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#10 +# source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#12 Regexp::Expression::Nonposixclass = Regexp::Expression::PosixClass -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#118 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#120 Regexp::Expression::Nonproperty = Regexp::Expression::UnicodeProperty -# source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#4 class Regexp::Expression::PosixClass < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#5 def name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#18 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#20 def negative?; end end # alias for symmetry between token symbol and Expression class name # -# source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#9 +# source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#11 Regexp::Expression::Posixclass = Regexp::Expression::PosixClass # alias for symmetry between token symbol and Expression class name # -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#117 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#119 Regexp::Expression::Property = Regexp::Expression::UnicodeProperty # TODO: in v3.0.0, maybe put Shared back into Base, and inherit from Base and @@ -1190,160 +1198,160 @@ Regexp::Expression::Property = Regexp::Expression::UnicodeProperty # or introduce an Expression::Quantifiable intermediate class. # Or actually allow chaining as a more concise but tricky solution than PR#69. # -# source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#8 class Regexp::Expression::Quantifier include ::Regexp::Expression::Shared extend ::Regexp::Expression::Shared::ClassMethods # @return [Quantifier] a new instance of Quantifier # - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#11 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#13 def initialize(*args); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def conditional_level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def conditional_level=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def custom_to_s_handling; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def custom_to_s_handling=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#33 def greedy?; end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#33 def lazy?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def level=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#42 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#44 def max; end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#38 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#40 def min; end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#46 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#48 def mode; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#16 def nesting_level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def options; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def options=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def parent; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def parent=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#33 def possessive?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def pre_quantifier_decorations; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def pre_quantifier_decorations=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#16 def quantifier; end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#33 def reluctant?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def set_level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def set_level=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def te; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def te=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def text; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def text=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#19 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#21 def to_h; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def token; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def token=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def ts; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def ts=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def type; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def type=(_arg0); end private - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#52 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#54 def deprecated_old_init(token, text, _min, _max, _mode = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#64 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#66 def derived_data; end end -# source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#9 +# source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#11 Regexp::Expression::Quantifier::MODES = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#4 module Regexp::Expression::ReferencedExpressions - # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#7 def referenced_expression; end # Returns the value of attribute referenced_expressions. # - # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#5 def referenced_expressions; end # Sets the attribute referenced_expressions # # @param value the value to set the attribute referenced_expressions to. # - # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#5 def referenced_expressions=(_arg0); end private - # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#11 def initialize_copy(orig); end end -# source://regexp_parser//lib/regexp_parser/expression/classes/root.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/root.rb#4 class Regexp::Expression::Root < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#43 def human_name; end class << self - # source://regexp_parser//lib/regexp_parser/expression/classes/root.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/root.rb#5 def build(options = T.unsafe(nil)); end end end @@ -1355,52 +1363,52 @@ end # Used as the base class for the Alternation alternatives, Conditional # branches, and CharacterSet::Intersection intersected sequences. # -# source://regexp_parser//lib/regexp_parser/expression/sequence.rb#8 +# source://regexp_parser//lib/regexp_parser/expression/sequence.rb#10 class Regexp::Expression::Sequence < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/sequence.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/sequence.rb#29 def quantify(token, *args); end - # source://regexp_parser//lib/regexp_parser/expression/sequence.rb#23 + # source://regexp_parser//lib/regexp_parser/expression/sequence.rb#25 def ts; end class << self - # source://regexp_parser//lib/regexp_parser/expression/sequence.rb#10 + # source://regexp_parser//lib/regexp_parser/expression/sequence.rb#12 def add_to(exp, params = T.unsafe(nil), active_opts = T.unsafe(nil)); end end end # abstract class # -# source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#5 class Regexp::Expression::SequenceOperation < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#12 + # source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#14 def <<(exp); end - # source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#18 def add_sequence(active_opts = T.unsafe(nil), params = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#7 def operands; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def operator; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#22 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#24 def parts; end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#7 def sequences; end - # source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#10 def ts; end end # alias for symmetry between token symbol and Expression class name # -# source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#22 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#24 Regexp::Expression::Set = Regexp::Expression::CharacterSet -# source://regexp_parser//lib/regexp_parser/expression/shared.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/shared.rb#4 module Regexp::Expression::Shared mixes_in_class_methods ::Regexp::Expression::Shared::ClassMethods @@ -1409,7 +1417,7 @@ module Regexp::Expression::Shared # When changing the conditions, please make sure to update # #pretty_print_instance_variables so that it includes all relevant values. # - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#101 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#103 def ==(other); end # Deep-compare two expressions for equality. @@ -1417,25 +1425,25 @@ module Regexp::Expression::Shared # When changing the conditions, please make sure to update # #pretty_print_instance_variables so that it includes all relevant values. # - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#101 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#103 def ===(other); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#51 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#53 def base_length; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#124 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#126 def capturing?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#96 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#99 def coded_offset; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#128 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#130 def comment?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#133 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#135 def decorative?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#47 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#49 def ends_at(include_quantifier = T.unsafe(nil)); end # Deep-compare two expressions for equality. @@ -1443,18 +1451,18 @@ module Regexp::Expression::Shared # When changing the conditions, please make sure to update # #pretty_print_instance_variables so that it includes all relevant values. # - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#101 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#103 def eql?(other); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#55 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#57 def full_length; end # default implementation, e.g. "atomic group", "hex escape", "word type", .. # - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#6 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/printing.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/printing.rb#5 def inspect; end # Test if this expression has the given test_token, and optionally a given @@ -1477,25 +1485,25 @@ module Regexp::Expression::Shared # # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#36 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#38 def is?(test_token, test_type = T.unsafe(nil)); end # not an alias so as to respect overrides of #negative? # # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#10 def negated?; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#5 def negative?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#100 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#103 def nesting_level=(lvl); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#92 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#95 def offset; end # Test if this expression matches an entry in the given scope spec. @@ -1534,50 +1542,50 @@ module Regexp::Expression::Shared # # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#75 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#77 def one_of?(scope, top = T.unsafe(nil)); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#111 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#113 def optional?; end # default implementation # - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#6 def parts; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#84 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#87 def pre_quantifier_decoration(expression_format = T.unsafe(nil)); end # Make pretty-print work despite #inspect implementation. # - # source://regexp_parser//lib/regexp_parser/expression/methods/printing.rb#12 + # source://regexp_parser//lib/regexp_parser/expression/methods/printing.rb#14 def pretty_print(q); end # Called by pretty_print (ruby/pp) and #inspect. # - # source://regexp_parser//lib/regexp_parser/expression/methods/printing.rb#17 + # source://regexp_parser//lib/regexp_parser/expression/methods/printing.rb#19 def pretty_print_instance_variables; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#115 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#117 def quantified?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#106 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#109 def quantifier=(qtf); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#88 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#91 def quantifier_affix(expression_format = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#138 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#140 def referential?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#43 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#45 def starts_at; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#120 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#122 def terminal?; end # #to_s reproduces the original source, as an unparser would. @@ -1593,7 +1601,7 @@ module Regexp::Expression::Shared # lit.to_s(:base) # => 'a' # without quantifier # lit.to_s(:original) # => 'a +' # with quantifier AND intermittent decorations # - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#72 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#74 def to_s(format = T.unsafe(nil)); end # #to_s reproduces the original source, as an unparser would. @@ -1609,10 +1617,10 @@ module Regexp::Expression::Shared # lit.to_s(:base) # => 'a' # without quantifier # lit.to_s(:original) # => 'a +' # with quantifier AND intermittent decorations # - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#72 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#74 def to_str(format = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#37 + # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#39 def token_class; end # Test if this expression has the given test_type, which can be either @@ -1626,83 +1634,83 @@ module Regexp::Expression::Shared # # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#13 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#15 def type?(test_type); end private - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#18 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#20 def init_from_token_and_options(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#32 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#34 def initialize_copy(orig); end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#10 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#12 def intersperse(expressions, separator); end class << self # @private # - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#7 def included(mod); end end end # filled in ./methods/*.rb # -# source://regexp_parser//lib/regexp_parser/expression/shared.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/shared.rb#5 module Regexp::Expression::Shared::ClassMethods - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#125 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#127 def capturing?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#129 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#131 def comment?; end # Convenience method to init a valid Expression without a Regexp::Token # # @raise [ArgumentError] # - # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#7 def construct(params = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#15 + # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#17 def construct_defaults; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#134 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#136 def decorative?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#139 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#141 def referential?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#121 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#123 def terminal?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#25 + # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#27 def token_class; end end -# source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#4 class Regexp::Expression::Subexpression < ::Regexp::Expression::Base include ::Enumerable # @return [Subexpression] a new instance of Subexpression # - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#7 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#9 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#20 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#22 def <<(exp); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def [](*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def at(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#33 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#35 def dig(*indices); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def each(*args, &block); end # Traverses the expression, passing each recursive child to the @@ -1710,68 +1718,68 @@ class Regexp::Expression::Subexpression < ::Regexp::Expression::Base # If the block takes two arguments, the indices of the children within # their parents are also passed to it. # - # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#10 def each_expression(include_self = T.unsafe(nil), &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def empty?(*args, &block); end # Returns the value of attribute expressions. # - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#7 def expressions; end # Sets the attribute expressions # # @param value the value to set the attribute expressions to. # - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#7 def expressions=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#50 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#52 def extract_quantifier_target(quantifier_description); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def fetch(*args, &block); end # Returns a new array with the results of calling the given block once # for every expression. If a block is not given, returns an array with # each expression and its level index as an array. # - # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#56 + # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#58 def flat_map(include_self = T.unsafe(nil), &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def index(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#118 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#120 def inner_match_length; end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def join(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def last(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def length(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#111 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#113 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#21 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#23 def parts; end - # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#102 + # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#104 def strfre_tree(format = T.unsafe(nil), include_self = T.unsafe(nil), separator = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#102 + # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#104 def strfregexp_tree(format = T.unsafe(nil), include_self = T.unsafe(nil), separator = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#39 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#41 def te; end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#43 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#45 def to_h; end # Traverses the subexpression (depth-first, pre-order) and calls the given @@ -1787,10 +1795,10 @@ class Regexp::Expression::Subexpression < ::Regexp::Expression::Base # # Returns self. # - # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#32 + # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#34 def traverse(include_self = T.unsafe(nil), &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def values_at(*args, &block); end # Traverses the subexpression (depth-first, pre-order) and calls the given @@ -1806,285 +1814,285 @@ class Regexp::Expression::Subexpression < ::Regexp::Expression::Base # # Returns self. # - # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#32 + # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#34 def walk(include_self = T.unsafe(nil), &block); end protected - # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#66 + # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#68 def each_expression_with_index(&block); end - # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#73 + # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#75 def each_expression_without_index(&block); end private # Override base method to clone the expressions as well. # - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#13 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#15 def initialize_copy(orig); end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#122 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#124 def terminal?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#4 module Regexp::Expression::UnicodeProperty; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#108 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#110 class Regexp::Expression::UnicodeProperty::Age < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#13 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#15 class Regexp::Expression::UnicodeProperty::Alnum < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#14 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#16 class Regexp::Expression::UnicodeProperty::Alpha < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#31 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#33 class Regexp::Expression::UnicodeProperty::Any < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#15 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#17 class Regexp::Expression::UnicodeProperty::Ascii < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#32 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#34 class Regexp::Expression::UnicodeProperty::Assigned < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#5 class Regexp::Expression::UnicodeProperty::Base < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#6 def name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#19 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#21 def negative?; end - # source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#10 def shortcut; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#16 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#18 class Regexp::Expression::UnicodeProperty::Blank < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#109 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#111 class Regexp::Expression::UnicodeProperty::Block < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#17 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#19 class Regexp::Expression::UnicodeProperty::Cntrl < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#97 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#99 module Regexp::Expression::UnicodeProperty::Codepoint; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#100 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#102 class Regexp::Expression::UnicodeProperty::Codepoint::Any < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#98 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#100 class Regexp::Expression::UnicodeProperty::Codepoint::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#101 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#103 class Regexp::Expression::UnicodeProperty::Codepoint::Control < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#102 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#104 class Regexp::Expression::UnicodeProperty::Codepoint::Format < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#104 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#106 class Regexp::Expression::UnicodeProperty::Codepoint::PrivateUse < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#103 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#105 class Regexp::Expression::UnicodeProperty::Codepoint::Surrogate < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#105 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#107 class Regexp::Expression::UnicodeProperty::Codepoint::Unassigned < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#110 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#112 class Regexp::Expression::UnicodeProperty::Derived < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#18 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#20 class Regexp::Expression::UnicodeProperty::Digit < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#111 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#113 class Regexp::Expression::UnicodeProperty::Emoji < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#112 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#114 class Regexp::Expression::UnicodeProperty::Enumerated < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#19 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#21 class Regexp::Expression::UnicodeProperty::Graph < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#34 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#36 module Regexp::Expression::UnicodeProperty::Letter; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#37 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#39 class Regexp::Expression::UnicodeProperty::Letter::Any < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#35 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#37 class Regexp::Expression::UnicodeProperty::Letter::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#38 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#40 class Regexp::Expression::UnicodeProperty::Letter::Cased < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#40 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#42 class Regexp::Expression::UnicodeProperty::Letter::Lowercase < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#42 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#44 class Regexp::Expression::UnicodeProperty::Letter::Modifier < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#43 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#45 class Regexp::Expression::UnicodeProperty::Letter::Other < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#41 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#43 class Regexp::Expression::UnicodeProperty::Letter::Titlecase < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#39 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#41 class Regexp::Expression::UnicodeProperty::Letter::Uppercase < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#20 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#22 class Regexp::Expression::UnicodeProperty::Lower < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#46 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#48 module Regexp::Expression::UnicodeProperty::Mark; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#49 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#51 class Regexp::Expression::UnicodeProperty::Mark::Any < ::Regexp::Expression::UnicodeProperty::Mark::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#47 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#49 class Regexp::Expression::UnicodeProperty::Mark::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#50 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#52 class Regexp::Expression::UnicodeProperty::Mark::Combining < ::Regexp::Expression::UnicodeProperty::Mark::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#53 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#55 class Regexp::Expression::UnicodeProperty::Mark::Enclosing < ::Regexp::Expression::UnicodeProperty::Mark::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#51 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#53 class Regexp::Expression::UnicodeProperty::Mark::Nonspacing < ::Regexp::Expression::UnicodeProperty::Mark::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#52 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#54 class Regexp::Expression::UnicodeProperty::Mark::Spacing < ::Regexp::Expression::UnicodeProperty::Mark::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#29 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#31 class Regexp::Expression::UnicodeProperty::Newline < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#56 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#58 module Regexp::Expression::UnicodeProperty::Number; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#59 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#61 class Regexp::Expression::UnicodeProperty::Number::Any < ::Regexp::Expression::UnicodeProperty::Number::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#57 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#59 class Regexp::Expression::UnicodeProperty::Number::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#60 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#62 class Regexp::Expression::UnicodeProperty::Number::Decimal < ::Regexp::Expression::UnicodeProperty::Number::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#61 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#63 class Regexp::Expression::UnicodeProperty::Number::Letter < ::Regexp::Expression::UnicodeProperty::Number::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#62 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#64 class Regexp::Expression::UnicodeProperty::Number::Other < ::Regexp::Expression::UnicodeProperty::Number::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#21 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#23 class Regexp::Expression::UnicodeProperty::Print < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#22 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#24 class Regexp::Expression::UnicodeProperty::Punct < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#65 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#67 module Regexp::Expression::UnicodeProperty::Punctuation; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#68 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#70 class Regexp::Expression::UnicodeProperty::Punctuation::Any < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#66 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#68 class Regexp::Expression::UnicodeProperty::Punctuation::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#72 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#74 class Regexp::Expression::UnicodeProperty::Punctuation::Close < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#69 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#71 class Regexp::Expression::UnicodeProperty::Punctuation::Connector < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#70 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#72 class Regexp::Expression::UnicodeProperty::Punctuation::Dash < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#74 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#76 class Regexp::Expression::UnicodeProperty::Punctuation::Final < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#73 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#75 class Regexp::Expression::UnicodeProperty::Punctuation::Initial < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#71 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#73 class Regexp::Expression::UnicodeProperty::Punctuation::Open < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#75 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#77 class Regexp::Expression::UnicodeProperty::Punctuation::Other < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#113 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#115 class Regexp::Expression::UnicodeProperty::Script < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#78 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#80 module Regexp::Expression::UnicodeProperty::Separator; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#81 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#83 class Regexp::Expression::UnicodeProperty::Separator::Any < ::Regexp::Expression::UnicodeProperty::Separator::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#79 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#81 class Regexp::Expression::UnicodeProperty::Separator::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#83 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#85 class Regexp::Expression::UnicodeProperty::Separator::Line < ::Regexp::Expression::UnicodeProperty::Separator::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#84 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#86 class Regexp::Expression::UnicodeProperty::Separator::Paragraph < ::Regexp::Expression::UnicodeProperty::Separator::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#82 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#84 class Regexp::Expression::UnicodeProperty::Separator::Space < ::Regexp::Expression::UnicodeProperty::Separator::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#23 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#25 class Regexp::Expression::UnicodeProperty::Space < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#87 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#89 module Regexp::Expression::UnicodeProperty::Symbol; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#90 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#92 class Regexp::Expression::UnicodeProperty::Symbol::Any < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#88 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#90 class Regexp::Expression::UnicodeProperty::Symbol::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#92 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#94 class Regexp::Expression::UnicodeProperty::Symbol::Currency < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#91 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#93 class Regexp::Expression::UnicodeProperty::Symbol::Math < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#93 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#95 class Regexp::Expression::UnicodeProperty::Symbol::Modifier < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#94 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#96 class Regexp::Expression::UnicodeProperty::Symbol::Other < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#24 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#26 class Regexp::Expression::UnicodeProperty::Upper < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#25 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#27 class Regexp::Expression::UnicodeProperty::Word < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#27 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#29 class Regexp::Expression::UnicodeProperty::XPosixPunct < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#26 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#28 class Regexp::Expression::UnicodeProperty::Xdigit < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#11 +# source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#13 class Regexp::Expression::WhiteSpace < ::Regexp::Expression::FreeSpace - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#42 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#44 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#12 + # source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#14 def merge(exp); end end @@ -2093,554 +2101,564 @@ end # normalizes tokens for the parser, and checks if they are implemented by the # given syntax flavor. # -# source://regexp_parser//lib/regexp_parser/lexer.rb#5 +# source://regexp_parser//lib/regexp_parser/lexer.rb#7 class Regexp::Lexer - # source://regexp_parser//lib/regexp_parser/lexer.rb#71 + # source://regexp_parser//lib/regexp_parser/lexer.rb#73 def emit(token); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#20 + # source://regexp_parser//lib/regexp_parser/lexer.rb#22 def lex(input, syntax = T.unsafe(nil), options: T.unsafe(nil), collect_tokens: T.unsafe(nil), &block); end private - # source://regexp_parser//lib/regexp_parser/lexer.rb#91 + # source://regexp_parser//lib/regexp_parser/lexer.rb#93 def ascend(type, token); end # Returns the value of attribute block. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def block; end # Sets the attribute block # # @param value the value to set the attribute block to. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def block=(_arg0); end # if a codepoint list is followed by a quantifier, that quantifier applies # to the last codepoint, e.g. /\u{61 62 63}{3}/ =~ 'abccc' # c.f. #break_literal. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#143 + # source://regexp_parser//lib/regexp_parser/lexer.rb#145 def break_codepoint_list(token); end # called by scan to break a literal run that is longer than one character # into two separate tokens when it is followed by a quantifier # - # source://regexp_parser//lib/regexp_parser/lexer.rb#123 + # source://regexp_parser//lib/regexp_parser/lexer.rb#125 def break_literal(token); end # Returns the value of attribute collect_tokens. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def collect_tokens; end # Sets the attribute collect_tokens # # @param value the value to set the attribute collect_tokens to. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def collect_tokens=(_arg0); end # Returns the value of attribute conditional_nesting. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def conditional_nesting; end # Sets the attribute conditional_nesting # # @param value the value to set the attribute conditional_nesting to. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def conditional_nesting=(_arg0); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#106 + # source://regexp_parser//lib/regexp_parser/lexer.rb#108 def descend(type, token); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#162 + # source://regexp_parser//lib/regexp_parser/lexer.rb#164 def merge_condition(current, last); end # Returns the value of attribute nesting. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def nesting; end # Sets the attribute nesting # # @param value the value to set the attribute nesting to. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def nesting=(_arg0); end # Returns the value of attribute preprev_token. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def preprev_token; end # Sets the attribute preprev_token # # @param value the value to set the attribute preprev_token to. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def preprev_token=(_arg0); end # Returns the value of attribute prev_token. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def prev_token; end # Sets the attribute prev_token # # @param value the value to set the attribute prev_token to. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def prev_token=(_arg0); end # Returns the value of attribute set_nesting. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def set_nesting; end # Sets the attribute set_nesting # # @param value the value to set the attribute set_nesting to. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def set_nesting=(_arg0); end # Returns the value of attribute shift. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def shift; end # Sets the attribute shift # # @param value the value to set the attribute shift to. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def shift=(_arg0); end # Returns the value of attribute tokens. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def tokens; end # Sets the attribute tokens # # @param value the value to set the attribute tokens to. # - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def tokens=(_arg0); end class << self - # source://regexp_parser//lib/regexp_parser/lexer.rb#16 + # source://regexp_parser//lib/regexp_parser/lexer.rb#18 def lex(input, syntax = T.unsafe(nil), options: T.unsafe(nil), collect_tokens: T.unsafe(nil), &block); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#16 + # source://regexp_parser//lib/regexp_parser/lexer.rb#18 def scan(input, syntax = T.unsafe(nil), options: T.unsafe(nil), collect_tokens: T.unsafe(nil), &block); end end end -# source://regexp_parser//lib/regexp_parser/lexer.rb#12 +# source://regexp_parser//lib/regexp_parser/lexer.rb#14 Regexp::Lexer::CLOSING_TOKENS = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/lexer.rb#14 +# source://regexp_parser//lib/regexp_parser/lexer.rb#16 Regexp::Lexer::CONDITION_TOKENS = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/lexer.rb#7 +# source://regexp_parser//lib/regexp_parser/lexer.rb#9 Regexp::Lexer::OPENING_TOKENS = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#1 +# source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#3 class Regexp::MatchLength include ::Enumerable # @return [MatchLength] a new instance of MatchLength # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#11 def initialize(exp, opts = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#24 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#26 def each(opts = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#35 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#37 def endless_each; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#44 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#46 def fixed?; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#40 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#42 def include?(length); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#60 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#62 def inspect; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#52 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#54 def max; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#48 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#50 def min; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#56 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#58 def minmax; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#65 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#67 def to_re; end private # Returns the value of attribute base_max. # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def base_max; end # Sets the attribute base_max # # @param value the value to set the attribute base_max to. # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def base_max=(_arg0); end # Returns the value of attribute base_min. # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def base_min; end # Sets the attribute base_min # # @param value the value to set the attribute base_min to. # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def base_min=(_arg0); end # Returns the value of attribute exp_class. # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def exp_class; end # Sets the attribute exp_class # # @param value the value to set the attribute exp_class to. # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def exp_class=(_arg0); end # Returns the value of attribute max_rep. # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def max_rep; end # Sets the attribute max_rep # # @param value the value to set the attribute max_rep to. # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def max_rep=(_arg0); end # Returns the value of attribute min_rep. # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def min_rep; end # Sets the attribute min_rep # # @param value the value to set the attribute min_rep to. # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def min_rep=(_arg0); end # Returns the value of attribute reify. # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def reify; end # Sets the attribute reify # # @param value the value to set the attribute reify to. # - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def reify=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#74 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#76 def test_regexp; end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#6 def of(obj); end end end -# source://regexp_parser//lib/regexp_parser/version.rb#2 +# source://regexp_parser//lib/regexp_parser/version.rb#4 class Regexp::Parser include ::Regexp::Expression - # source://regexp_parser//lib/regexp_parser/parser.rb#25 + # source://regexp_parser//lib/regexp_parser/parser.rb#27 def parse(input, syntax = T.unsafe(nil), options: T.unsafe(nil), &block); end private - # source://regexp_parser//lib/regexp_parser/parser.rb#574 + # source://regexp_parser//lib/regexp_parser/parser.rb#577 def active_opts; end - # source://regexp_parser//lib/regexp_parser/parser.rb#99 + # source://regexp_parser//lib/regexp_parser/parser.rb#101 def anchor(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#262 + # source://regexp_parser//lib/regexp_parser/parser.rb#264 def assign_effective_number(exp); end # Assigns referenced expressions to referring expressions, e.g. if there is # an instance of Backreference::Number, its #referenced_expression is set to # the instance of Group::Capture that it refers to via its number. # - # source://regexp_parser//lib/regexp_parser/parser.rb#581 + # source://regexp_parser//lib/regexp_parser/parser.rb#584 def assign_referenced_expressions; end - # source://regexp_parser//lib/regexp_parser/parser.rb#227 + # source://regexp_parser//lib/regexp_parser/parser.rb#229 def backref(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#202 + # source://regexp_parser//lib/regexp_parser/parser.rb#204 def captured_group_count_at_level; end # Returns the value of attribute captured_group_counts. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def captured_group_counts; end # Sets the attribute captured_group_counts # # @param value the value to set the attribute captured_group_counts to. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def captured_group_counts=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#570 + # source://regexp_parser//lib/regexp_parser/parser.rb#573 def close_completed_character_set_range; end - # source://regexp_parser//lib/regexp_parser/parser.rb#210 + # source://regexp_parser//lib/regexp_parser/parser.rb#212 def close_group; end - # source://regexp_parser//lib/regexp_parser/parser.rb#538 + # source://regexp_parser//lib/regexp_parser/parser.rb#541 def close_set; end - # source://regexp_parser//lib/regexp_parser/parser.rb#269 + # source://regexp_parser//lib/regexp_parser/parser.rb#271 def conditional(token); end # Returns the value of attribute conditional_nesting. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def conditional_nesting; end # Sets the attribute conditional_nesting # # @param value the value to set the attribute conditional_nesting to. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def conditional_nesting=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#206 + # source://regexp_parser//lib/regexp_parser/parser.rb#208 def count_captured_group; end # @yield [node] # - # source://regexp_parser//lib/regexp_parser/parser.rb#216 + # source://regexp_parser//lib/regexp_parser/parser.rb#218 def decrease_nesting; end - # source://regexp_parser//lib/regexp_parser/parser.rb#305 + # source://regexp_parser//lib/regexp_parser/parser.rb#307 def escape(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#60 + # source://regexp_parser//lib/regexp_parser/parser.rb#62 def extract_options(input, options); end - # source://regexp_parser//lib/regexp_parser/parser.rb#349 + # source://regexp_parser//lib/regexp_parser/parser.rb#352 def free_space(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#114 + # source://regexp_parser//lib/regexp_parser/parser.rb#116 def group(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#509 + # source://regexp_parser//lib/regexp_parser/parser.rb#512 def increase_group_level(exp); end - # source://regexp_parser//lib/regexp_parser/parser.rb#549 + # source://regexp_parser//lib/regexp_parser/parser.rb#552 def intersection(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#360 + # source://regexp_parser//lib/regexp_parser/parser.rb#363 def keep(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#364 + # source://regexp_parser//lib/regexp_parser/parser.rb#367 def literal(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#368 + # source://regexp_parser//lib/regexp_parser/parser.rb#371 def meta(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#534 + # source://regexp_parser//lib/regexp_parser/parser.rb#537 def negate_set; end - # source://regexp_parser//lib/regexp_parser/parser.rb#299 + # source://regexp_parser//lib/regexp_parser/parser.rb#301 def nest(exp); end - # source://regexp_parser//lib/regexp_parser/parser.rb#294 + # source://regexp_parser//lib/regexp_parser/parser.rb#296 def nest_conditional(exp); end # Returns the value of attribute nesting. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def nesting; end # Sets the attribute nesting # # @param value the value to set the attribute nesting to. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def nesting=(_arg0); end # Returns the value of attribute node. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def node; end # Sets the attribute node # # @param value the value to set the attribute node to. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def node=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#165 + # source://regexp_parser//lib/regexp_parser/parser.rb#167 def open_group(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#527 + # source://regexp_parser//lib/regexp_parser/parser.rb#530 def open_set(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#130 + # source://regexp_parser//lib/regexp_parser/parser.rb#132 def options_group(token); end # Returns the value of attribute options_stack. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def options_stack; end # Sets the attribute options_stack # # @param value the value to set the attribute options_stack to. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def options_stack=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#76 + # source://regexp_parser//lib/regexp_parser/parser.rb#78 def parse_token(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#390 + # source://regexp_parser//lib/regexp_parser/parser.rb#393 def posixclass(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#397 + # source://regexp_parser//lib/regexp_parser/parser.rb#400 def property(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#479 + # source://regexp_parser//lib/regexp_parser/parser.rb#482 def quantifier(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#542 + # source://regexp_parser//lib/regexp_parser/parser.rb#545 def range(token); end # Returns the value of attribute root. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def root; end # Sets the attribute root # # @param value the value to set the attribute root to. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def root=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#379 + # source://regexp_parser//lib/regexp_parser/parser.rb#382 def sequence_operation(klass, token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#515 + # source://regexp_parser//lib/regexp_parser/parser.rb#518 def set(token); end # Returns the value of attribute switching_options. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def switching_options; end # Sets the attribute switching_options # # @param value the value to set the attribute switching_options to. # - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def switching_options=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#198 + # source://regexp_parser//lib/regexp_parser/parser.rb#200 def total_captured_group_count; end - # source://regexp_parser//lib/regexp_parser/parser.rb#553 + # source://regexp_parser//lib/regexp_parser/parser.rb#556 def type(token); end class << self - # source://regexp_parser//lib/regexp_parser/parser.rb#21 + # source://regexp_parser//lib/regexp_parser/parser.rb#23 def parse(input, syntax = T.unsafe(nil), options: T.unsafe(nil), &block); end end end -# source://regexp_parser//lib/regexp_parser/parser.rb#128 +# source://regexp_parser//lib/regexp_parser/parser.rb#130 Regexp::Parser::ENC_FLAGS = T.let(T.unsafe(nil), Array) # base class for all gem-specific errors # -# source://regexp_parser//lib/regexp_parser/error.rb#3 +# source://regexp_parser//lib/regexp_parser/error.rb#5 class Regexp::Parser::Error < ::StandardError; end -# source://regexp_parser//lib/regexp_parser/parser.rb#127 +# source://regexp_parser//lib/regexp_parser/parser.rb#129 Regexp::Parser::MOD_FLAGS = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/parser.rb#7 +# source://regexp_parser//lib/regexp_parser/parser.rb#9 class Regexp::Parser::ParserError < ::Regexp::Parser::Error; end -# source://regexp_parser//lib/regexp_parser/parser.rb#394 +# source://regexp_parser//lib/regexp_parser/parser.rb#397 Regexp::Parser::UP = Regexp::Expression::UnicodeProperty -# source://regexp_parser//lib/regexp_parser/parser.rb#395 +# source://regexp_parser//lib/regexp_parser/parser.rb#398 Regexp::Parser::UPTokens = Regexp::Syntax::Token::UnicodeProperty -# source://regexp_parser//lib/regexp_parser/parser.rb#15 +# source://regexp_parser//lib/regexp_parser/parser.rb#17 class Regexp::Parser::UnknownTokenError < ::Regexp::Parser::ParserError # @return [UnknownTokenError] a new instance of UnknownTokenError # - # source://regexp_parser//lib/regexp_parser/parser.rb#16 + # source://regexp_parser//lib/regexp_parser/parser.rb#18 def initialize(type, token); end end -# source://regexp_parser//lib/regexp_parser/parser.rb#9 +# source://regexp_parser//lib/regexp_parser/parser.rb#11 class Regexp::Parser::UnknownTokenTypeError < ::Regexp::Parser::ParserError # @return [UnknownTokenTypeError] a new instance of UnknownTokenTypeError # - # source://regexp_parser//lib/regexp_parser/parser.rb#10 + # source://regexp_parser//lib/regexp_parser/parser.rb#12 def initialize(type, token); end end -# source://regexp_parser//lib/regexp_parser/version.rb#3 +# source://regexp_parser//lib/regexp_parser/version.rb#5 Regexp::Parser::VERSION = T.let(T.unsafe(nil), String) -# source://regexp_parser//lib/regexp_parser/scanner/errors/scanner_error.rb#3 +# source://regexp_parser//lib/regexp_parser/scanner/errors/scanner_error.rb#5 class Regexp::Scanner + # only public for #||= to work on ruby <= 2.5 + # + # source://regexp_parser//lib/regexp_parser/scanner.rb#2509 + def capturing_group_count; end + + # only public for #||= to work on ruby <= 2.5 + # + # source://regexp_parser//lib/regexp_parser/scanner.rb#2509 + def capturing_group_count=(_arg0); end + # Emits an array with the details of the scanned pattern # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2363 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2484 def emit(type, token, text); end # only public for #||= to work on ruby <= 2.5 # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2388 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2509 def literal_run; end # only public for #||= to work on ruby <= 2.5 # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2388 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2509 def literal_run=(_arg0); end # @raise [PrematureEndError] @@ -2653,170 +2671,182 @@ class Regexp::Scanner # Appends one or more characters to the literal buffer, to be emitted later # by a call to emit_literal. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2425 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2555 def append_literal(data, ts, te); end # Returns the value of attribute block. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def block; end # Sets the attribute block # # @param value the value to set the attribute block to. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def block=(_arg0); end # Returns the value of attribute char_pos. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def char_pos; end # Sets the attribute char_pos # # @param value the value to set the attribute char_pos to. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def char_pos=(_arg0); end # Returns the value of attribute collect_tokens. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def collect_tokens; end # Sets the attribute collect_tokens # # @param value the value to set the attribute collect_tokens to. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def collect_tokens=(_arg0); end # Returns the value of attribute conditional_stack. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def conditional_stack; end # Sets the attribute conditional_stack # # @param value the value to set the attribute conditional_stack to. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def conditional_stack=(_arg0); end # Copy from ts to te from data as text # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2419 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2549 def copy(data, ts, te); end # Emits the literal run collected by calls to the append_literal method. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2430 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2560 def emit_literal; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2465 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2595 def emit_meta_control_sequence(data, ts, te, token); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2436 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2566 def emit_options(text); end + # source://regexp_parser//lib/regexp_parser/scanner.rb#2520 + def extract_encoding(input_object, options); end + # Returns the value of attribute free_spacing. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def free_spacing; end # Sets the attribute free_spacing # # @param value the value to set the attribute free_spacing to. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def free_spacing=(_arg0); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2398 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2528 def free_spacing?(input_object, options); end # Returns the value of attribute group_depth. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def group_depth; end # Sets the attribute group_depth # # @param value the value to set the attribute group_depth to. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def group_depth=(_arg0); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2410 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2540 def in_group?; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2414 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2544 def in_set?; end # Returns the value of attribute prev_token. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def prev_token; end # Sets the attribute prev_token # # @param value the value to set the attribute prev_token to. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def prev_token=(_arg0); end + # Returns the value of attribute regexp_encoding. + # + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 + def regexp_encoding; end + + # Sets the attribute regexp_encoding + # + # @param value the value to set the attribute regexp_encoding to. + # + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 + def regexp_encoding=(_arg0); end + # Returns the value of attribute set_depth. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def set_depth; end # Sets the attribute set_depth # # @param value the value to set the attribute set_depth to. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def set_depth=(_arg0); end # Returns the value of attribute spacing_stack. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def spacing_stack; end # Sets the attribute spacing_stack # # @param value the value to set the attribute spacing_stack to. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def spacing_stack=(_arg0); end # Returns the value of attribute tokens. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def tokens; end # Sets the attribute tokens # # @param value the value to set the attribute tokens to. # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def tokens=(_arg0); end class << self - # source://regexp_parser//lib/regexp_parser/scanner.rb#2349 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2469 def long_prop_map; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2353 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2473 def parse_prop_map(name); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2357 - def posix_classes; end - # Scans the given regular expression text, or Regexp object and collects the # emitted token into an array that gets returned at the end. If a block is # given, it gets called for each emitted token. @@ -2829,98 +2859,103 @@ class Regexp::Scanner # lazy-load property maps when first needed # - # source://regexp_parser//lib/regexp_parser/scanner.rb#2345 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2465 def short_prop_map; end end end # Invalid back reference. Used for name a number refs/calls. # -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#44 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#46 class Regexp::Scanner::InvalidBackrefError < ::Regexp::Scanner::ValidationError # @return [InvalidBackrefError] a new instance of InvalidBackrefError # - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#45 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#47 def initialize(what, reason); end end # Invalid group. Used for named groups. # -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#29 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#31 class Regexp::Scanner::InvalidGroupError < ::Regexp::Scanner::ValidationError # @return [InvalidGroupError] a new instance of InvalidGroupError # - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#30 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#32 def initialize(what, reason); end end # Invalid groupOption. Used for inline options. # TODO: should become InvalidGroupOptionError in v3.0.0 for consistency # -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#37 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#39 class Regexp::Scanner::InvalidGroupOption < ::Regexp::Scanner::ValidationError # @return [InvalidGroupOption] a new instance of InvalidGroupOption # - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#38 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#40 def initialize(option, text); end end # Invalid sequence format. Used for escape sequences, mainly. # -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#22 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#24 class Regexp::Scanner::InvalidSequenceError < ::Regexp::Scanner::ValidationError # @return [InvalidSequenceError] a new instance of InvalidSequenceError # - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#23 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#25 def initialize(what = T.unsafe(nil), where = T.unsafe(nil)); end end +# Use each_with_object for required_ruby_version >= 2.2,or #to_h for >= 2.6 +# +# source://regexp_parser//lib/regexp_parser/scanner.rb#2478 +Regexp::Scanner::POSIX_CLASSES = T.let(T.unsafe(nil), Hash) + # Unexpected end of pattern # -# source://regexp_parser//lib/regexp_parser/scanner/errors/premature_end_error.rb#3 +# source://regexp_parser//lib/regexp_parser/scanner/errors/premature_end_error.rb#5 class Regexp::Scanner::PrematureEndError < ::Regexp::Scanner::ScannerError # @return [PrematureEndError] a new instance of PrematureEndError # - # source://regexp_parser//lib/regexp_parser/scanner/errors/premature_end_error.rb#4 + # source://regexp_parser//lib/regexp_parser/scanner/errors/premature_end_error.rb#6 def initialize(where = T.unsafe(nil)); end end # General scanner error (catch all) # -# source://regexp_parser//lib/regexp_parser/scanner/errors/scanner_error.rb#5 +# source://regexp_parser//lib/regexp_parser/scanner/errors/scanner_error.rb#7 class Regexp::Scanner::ScannerError < ::Regexp::Parser::Error; end # The POSIX class name was not recognized by the scanner. # -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#58 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#60 class Regexp::Scanner::UnknownPosixClassError < ::Regexp::Scanner::ValidationError # @return [UnknownPosixClassError] a new instance of UnknownPosixClassError # - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#59 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#61 def initialize(text, _); end end # The property name was not recognized by the scanner. # -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#51 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#53 class Regexp::Scanner::UnknownUnicodePropertyError < ::Regexp::Scanner::ValidationError # @return [UnknownUnicodePropertyError] a new instance of UnknownUnicodePropertyError # - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#52 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#54 def initialize(name, _); end end # Base for all scanner validation errors # -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#3 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#5 class Regexp::Scanner::ValidationError < ::Regexp::Scanner::ScannerError class << self # Centralizes and unifies the handling of validation related errors. # - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#5 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#7 def for(type, problem, reason = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#9 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#11 def types; end end end @@ -2928,65 +2963,65 @@ end # After loading all the tokens the map is full. Extract all tokens and types # into the All and Types constants. # -# source://regexp_parser//lib/regexp_parser/syntax.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax.rb#5 module Regexp::Syntax private - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#61 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#63 def comparable(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#44 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#46 def const_missing(const_name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#51 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#53 def fallback_version_class(version); end # Returns the syntax specification class for the given syntax # version name. The special names 'any' and '*' return Syntax::Any. # - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#22 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#24 def for(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#26 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#28 def new(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#57 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#59 def specified_versions; end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#32 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#34 def supported?(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#36 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#38 def version_class(version); end class << self - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#61 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#63 def comparable(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#44 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#46 def const_missing(const_name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#51 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#53 def fallback_version_class(version); end # Returns the syntax specification class for the given syntax # version name. The special names 'any' and '*' return Syntax::Any. # - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#22 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#24 def for(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#26 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#28 def new(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#57 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#59 def specified_versions; end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#32 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#34 def supported?(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#36 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#38 def version_class(version); end end end @@ -2995,19 +3030,19 @@ end # is useful during development, testing, and should be useful for some types # of transformations as well. # -# source://regexp_parser//lib/regexp_parser/syntax/any.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/any.rb#7 class Regexp::Syntax::Any < ::Regexp::Syntax::Base class << self # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/syntax/any.rb#8 + # source://regexp_parser//lib/regexp_parser/syntax/any.rb#10 def implements?(_type, _token); end end end # A lookup map of supported types and tokens in a given syntax # -# source://regexp_parser//lib/regexp_parser/syntax/base.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/base.rb#11 class Regexp::Syntax::Base include ::Regexp::Syntax::Token @@ -3015,731 +3050,746 @@ class Regexp::Syntax::Base # # @return [Base] a new instance of Base # - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#99 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#101 def initialize; end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#104 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#106 def method_missing(name, *args); end private # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#115 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#117 def respond_to_missing?(name, include_private = T.unsafe(nil)); end class << self - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#46 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#48 def added_features; end # @raise [NotImplementedError] # - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#40 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#42 def check!(type, token); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#31 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#33 def check?(type, token); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#26 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#28 def excludes(type, tokens); end # Returns the value of attribute features. # - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#13 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#15 def features; end # Sets the attribute features # # @param value the value to set the attribute features to. # - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#13 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#15 def features=(_arg0); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#36 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#38 def implementations(type); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#21 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#23 def implements(type, tokens); end # @raise [NotImplementedError] # - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#40 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#42 def implements!(type, token); end # @return [Boolean] # - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#31 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#33 def implements?(type, token); end # automatically inherit features through the syntax class hierarchy # - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#16 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#18 def inherited(subclass); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#54 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#56 def normalize(type, token); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#74 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#76 def normalize_backref(type, token); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#65 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#67 def normalize_group(type, token); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#50 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#52 def removed_features; end end end -# source://regexp_parser//lib/regexp_parser/syntax/versions.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/versions.rb#10 Regexp::Syntax::CURRENT = Regexp::Syntax::V3_2_0 -# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#8 class Regexp::Syntax::InvalidVersionNameError < ::Regexp::Syntax::SyntaxError # @return [InvalidVersionNameError] a new instance of InvalidVersionNameError # - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#7 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#9 def initialize(name); end end -# source://regexp_parser//lib/regexp_parser/syntax/base.rb#2 +# source://regexp_parser//lib/regexp_parser/syntax/base.rb#4 class Regexp::Syntax::NotImplementedError < ::Regexp::Syntax::SyntaxError # @return [NotImplementedError] a new instance of NotImplementedError # - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#3 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#5 def initialize(syntax, type, token); end end -# source://regexp_parser//lib/regexp_parser/syntax.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax.rb#6 class Regexp::Syntax::SyntaxError < ::Regexp::Parser::Error; end -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#5 module Regexp::Syntax::Token; end -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#42 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#44 Regexp::Syntax::Token::All = T.let(T.unsafe(nil), Array) # alias for symmetry between Token::* and Expression::* # -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#15 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#17 module Regexp::Syntax::Token::Alternation; end -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#16 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#18 Regexp::Syntax::Token::Alternation::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#17 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#19 Regexp::Syntax::Token::Alternation::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#5 module Regexp::Syntax::Token::Anchor; end -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#11 Regexp::Syntax::Token::Anchor::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#6 Regexp::Syntax::Token::Anchor::Basic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#7 Regexp::Syntax::Token::Anchor::Extended = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#9 Regexp::Syntax::Token::Anchor::MatchStart = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#8 Regexp::Syntax::Token::Anchor::String = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#10 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#12 Regexp::Syntax::Token::Anchor::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#5 module Regexp::Syntax::Token::Assertion; end -# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#9 Regexp::Syntax::Token::Assertion::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#6 Regexp::Syntax::Token::Assertion::Lookahead = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#7 Regexp::Syntax::Token::Assertion::Lookbehind = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#10 Regexp::Syntax::Token::Assertion::Type = T.let(T.unsafe(nil), Symbol) # alias for symmetry between token symbol and Expression class name # -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#31 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#33 Regexp::Syntax::Token::Backref = Regexp::Syntax::Token::Backreference -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#5 module Regexp::Syntax::Token::Backreference; end -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#15 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#17 Regexp::Syntax::Token::Backreference::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#9 Regexp::Syntax::Token::Backreference::Name = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#8 Regexp::Syntax::Token::Backreference::Number = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#7 Regexp::Syntax::Token::Backreference::NumberRef = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#6 Regexp::Syntax::Token::Backreference::Plain = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#11 Regexp::Syntax::Token::Backreference::RecursionLevel = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#16 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#18 Regexp::Syntax::Token::Backreference::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#13 Regexp::Syntax::Token::Backreference::V1_8_6 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#13 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#15 Regexp::Syntax::Token::Backreference::V1_9_1 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#5 module Regexp::Syntax::Token::CharacterSet; end -# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#9 Regexp::Syntax::Token::CharacterSet::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#6 Regexp::Syntax::Token::CharacterSet::Basic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#7 Regexp::Syntax::Token::CharacterSet::Extended = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#10 Regexp::Syntax::Token::CharacterSet::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#5 module Regexp::Syntax::Token::CharacterType; end -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#10 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#12 Regexp::Syntax::Token::CharacterType::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#6 Regexp::Syntax::Token::CharacterType::Basic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#10 Regexp::Syntax::Token::CharacterType::Clustered = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#7 Regexp::Syntax::Token::CharacterType::Extended = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#8 Regexp::Syntax::Token::CharacterType::Hex = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#13 Regexp::Syntax::Token::CharacterType::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#5 module Regexp::Syntax::Token::Conditional; end -# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#11 Regexp::Syntax::Token::Conditional::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#8 Regexp::Syntax::Token::Conditional::Condition = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#6 Regexp::Syntax::Token::Conditional::Delimiters = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#9 Regexp::Syntax::Token::Conditional::Separator = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#13 Regexp::Syntax::Token::Conditional::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#5 module Regexp::Syntax::Token::Escape; end -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#10 Regexp::Syntax::Token::Escape::ASCII = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#24 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#26 Regexp::Syntax::Token::Escape::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#6 Regexp::Syntax::Token::Escape::Basic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#8 Regexp::Syntax::Token::Escape::Control = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#20 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#22 Regexp::Syntax::Token::Escape::Hex = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#13 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#15 Regexp::Syntax::Token::Escape::Meta = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#22 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#24 Regexp::Syntax::Token::Escape::Octal = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#25 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#27 Regexp::Syntax::Token::Escape::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#13 Regexp::Syntax::Token::Escape::Unicode = T.let(T.unsafe(nil), Array) # alias for symmetry between Token::* and Expression::* # -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#31 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#33 Regexp::Syntax::Token::EscapeSequence = Regexp::Syntax::Token::Escape -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#13 module Regexp::Syntax::Token::FreeSpace; end -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#12 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#14 Regexp::Syntax::Token::FreeSpace::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#13 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#15 Regexp::Syntax::Token::FreeSpace::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#5 module Regexp::Syntax::Token::Group; end -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#17 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#19 Regexp::Syntax::Token::Group::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#10 Regexp::Syntax::Token::Group::Atomic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#6 Regexp::Syntax::Token::Group::Basic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#10 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#12 Regexp::Syntax::Token::Group::Comment = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#7 Regexp::Syntax::Token::Group::Extended = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#9 Regexp::Syntax::Token::Group::Named = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#11 Regexp::Syntax::Token::Group::Passive = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#18 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#20 Regexp::Syntax::Token::Group::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#12 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#14 Regexp::Syntax::Token::Group::V1_8_6 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#15 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#17 Regexp::Syntax::Token::Group::V2_4_1 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#5 module Regexp::Syntax::Token::Keep; end -# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#8 Regexp::Syntax::Token::Keep::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#6 Regexp::Syntax::Token::Keep::Mark = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#9 Regexp::Syntax::Token::Keep::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#8 module Regexp::Syntax::Token::Literal; end -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#9 Regexp::Syntax::Token::Literal::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#10 Regexp::Syntax::Token::Literal::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#6 Regexp::Syntax::Token::Map = T.let(T.unsafe(nil), Hash) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#5 module Regexp::Syntax::Token::Meta; end -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#10 Regexp::Syntax::Token::Meta::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#7 Regexp::Syntax::Token::Meta::Alternation = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#6 Regexp::Syntax::Token::Meta::Basic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#8 Regexp::Syntax::Token::Meta::Extended = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#11 Regexp::Syntax::Token::Meta::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#5 module Regexp::Syntax::Token::PosixClass; end -# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#11 Regexp::Syntax::Token::PosixClass::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#9 Regexp::Syntax::Token::PosixClass::Extensions = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#13 Regexp::Syntax::Token::PosixClass::NonType = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#6 Regexp::Syntax::Token::PosixClass::Standard = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#10 +# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#12 Regexp::Syntax::Token::PosixClass::Type = T.let(T.unsafe(nil), Symbol) # alias for symmetry between token symbol and Token module name # -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#749 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#764 Regexp::Syntax::Token::Property = Regexp::Syntax::Token::UnicodeProperty -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#5 module Regexp::Syntax::Token::Quantifier; end -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#29 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#31 Regexp::Syntax::Token::Quantifier::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#6 Regexp::Syntax::Token::Quantifier::Greedy = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#22 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#24 Regexp::Syntax::Token::Quantifier::Interval = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#26 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#28 Regexp::Syntax::Token::Quantifier::IntervalAll = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#24 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#26 Regexp::Syntax::Token::Quantifier::IntervalPossessive = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#23 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#25 Regexp::Syntax::Token::Quantifier::IntervalReluctant = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#16 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#18 Regexp::Syntax::Token::Quantifier::Possessive = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#10 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#12 Regexp::Syntax::Token::Quantifier::Reluctant = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#30 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#32 Regexp::Syntax::Token::Quantifier::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#28 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#30 Regexp::Syntax::Token::Quantifier::V1_8_6 = T.let(T.unsafe(nil), Array) # alias for symmetry between token symbol and Token module name # -# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#14 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#16 Regexp::Syntax::Token::Set = Regexp::Syntax::Token::CharacterSet # Type is the same as Backreference so keeping it here, for now. # -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#20 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#22 module Regexp::Syntax::Token::SubexpressionCall; end -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#24 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#26 Regexp::Syntax::Token::SubexpressionCall::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#21 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#23 Regexp::Syntax::Token::SubexpressionCall::Name = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#22 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#24 Regexp::Syntax::Token::SubexpressionCall::Number = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#43 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#45 Regexp::Syntax::Token::Types = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#5 module Regexp::Syntax::Token::UnicodeProperty; end -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#64 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#68 Regexp::Syntax::Token::UnicodeProperty::Age = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#40 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#42 Regexp::Syntax::Token::UnicodeProperty::Age_V1_9_3 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#44 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#46 Regexp::Syntax::Token::UnicodeProperty::Age_V2_0_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#46 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#48 Regexp::Syntax::Token::UnicodeProperty::Age_V2_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#48 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#50 Regexp::Syntax::Token::UnicodeProperty::Age_V2_3_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#50 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#52 Regexp::Syntax::Token::UnicodeProperty::Age_V2_4_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#52 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#54 Regexp::Syntax::Token::UnicodeProperty::Age_V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#54 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#56 Regexp::Syntax::Token::UnicodeProperty::Age_V2_6_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#56 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#58 Regexp::Syntax::Token::UnicodeProperty::Age_V2_6_2 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#58 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#60 Regexp::Syntax::Token::UnicodeProperty::Age_V2_6_3 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#60 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#62 Regexp::Syntax::Token::UnicodeProperty::Age_V3_1_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#62 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#64 Regexp::Syntax::Token::UnicodeProperty::Age_V3_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#739 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#66 +Regexp::Syntax::Token::UnicodeProperty::Age_V3_5_0 = T.let(T.unsafe(nil), Array) + +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#754 Regexp::Syntax::Token::UnicodeProperty::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#13 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#15 module Regexp::Syntax::Token::UnicodeProperty::Category; end -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#36 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#38 Regexp::Syntax::Token::UnicodeProperty::Category::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#33 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#35 Regexp::Syntax::Token::UnicodeProperty::Category::Codepoint = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#14 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#16 Regexp::Syntax::Token::UnicodeProperty::Category::Letter = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#17 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#19 Regexp::Syntax::Token::UnicodeProperty::Category::Mark = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#20 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#22 Regexp::Syntax::Token::UnicodeProperty::Category::Number = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#23 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#25 Regexp::Syntax::Token::UnicodeProperty::Category::Punctuation = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#30 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#32 Regexp::Syntax::Token::UnicodeProperty::Category::Separator = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#27 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#29 Regexp::Syntax::Token::UnicodeProperty::Category::Symbol = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#8 Regexp::Syntax::Token::UnicodeProperty::CharType_V1_9_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#11 Regexp::Syntax::Token::UnicodeProperty::CharType_V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#133 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#143 Regexp::Syntax::Token::UnicodeProperty::Derived = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#66 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#70 Regexp::Syntax::Token::UnicodeProperty::Derived_V1_9_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#120 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#124 Regexp::Syntax::Token::UnicodeProperty::Derived_V2_0_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#125 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#129 Regexp::Syntax::Token::UnicodeProperty::Derived_V2_4_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#129 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#133 Regexp::Syntax::Token::UnicodeProperty::Derived_V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#724 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#137 +Regexp::Syntax::Token::UnicodeProperty::Derived_V3_5_0 = T.let(T.unsafe(nil), Array) + +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#738 Regexp::Syntax::Token::UnicodeProperty::Emoji = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#694 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#708 Regexp::Syntax::Token::UnicodeProperty::Emoji_V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#702 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#716 Regexp::Syntax::Token::UnicodeProperty::Emoji_V2_6_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#722 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#736 Regexp::Syntax::Token::UnicodeProperty::Enumerated = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#706 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#720 Regexp::Syntax::Token::UnicodeProperty::Enumerated_V2_4_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#742 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#757 Regexp::Syntax::Token::UnicodeProperty::NonType = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#13 Regexp::Syntax::Token::UnicodeProperty::POSIX = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#332 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#342 Regexp::Syntax::Token::UnicodeProperty::Script = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#135 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#145 Regexp::Syntax::Token::UnicodeProperty::Script_V1_9_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#231 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#241 Regexp::Syntax::Token::UnicodeProperty::Script_V1_9_3 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#237 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#247 Regexp::Syntax::Token::UnicodeProperty::Script_V2_0_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#247 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#257 Regexp::Syntax::Token::UnicodeProperty::Script_V2_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#273 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#283 Regexp::Syntax::Token::UnicodeProperty::Script_V2_3_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#282 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#292 Regexp::Syntax::Token::UnicodeProperty::Script_V2_4_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#291 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#301 Regexp::Syntax::Token::UnicodeProperty::Script_V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#298 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#308 Regexp::Syntax::Token::UnicodeProperty::Script_V2_6_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#308 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#318 Regexp::Syntax::Token::UnicodeProperty::Script_V2_6_2 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#315 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#325 Regexp::Syntax::Token::UnicodeProperty::Script_V3_1_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#322 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#332 Regexp::Syntax::Token::UnicodeProperty::Script_V3_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#741 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#756 Regexp::Syntax::Token::UnicodeProperty::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#692 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#706 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#334 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#344 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V1_9_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#433 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#443 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_0_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#561 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#571 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#596 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#606 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_3_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#609 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#619 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_4_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#623 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#633 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#633 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#643 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_6_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#647 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#657 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_6_2 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#659 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#669 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V3_1_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#670 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#680 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V3_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#726 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#702 +Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V3_5_0 = T.let(T.unsafe(nil), Array) + +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#740 Regexp::Syntax::Token::UnicodeProperty::V1_9_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#727 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#741 Regexp::Syntax::Token::UnicodeProperty::V1_9_3 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#728 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#742 Regexp::Syntax::Token::UnicodeProperty::V2_0_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#729 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#743 Regexp::Syntax::Token::UnicodeProperty::V2_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#730 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#744 Regexp::Syntax::Token::UnicodeProperty::V2_3_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#731 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#745 Regexp::Syntax::Token::UnicodeProperty::V2_4_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#732 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#746 Regexp::Syntax::Token::UnicodeProperty::V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#733 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#747 Regexp::Syntax::Token::UnicodeProperty::V2_6_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#734 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#748 Regexp::Syntax::Token::UnicodeProperty::V2_6_2 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#735 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#749 Regexp::Syntax::Token::UnicodeProperty::V2_6_3 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#736 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#750 Regexp::Syntax::Token::UnicodeProperty::V3_1_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#737 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#751 Regexp::Syntax::Token::UnicodeProperty::V3_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#12 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#752 +Regexp::Syntax::Token::UnicodeProperty::V3_5_0 = T.let(T.unsafe(nil), Array) + +# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#14 class Regexp::Syntax::UnknownSyntaxNameError < ::Regexp::Syntax::SyntaxError # @return [UnknownSyntaxNameError] a new instance of UnknownSyntaxNameError # - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#13 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#15 def initialize(name); end end -# source://regexp_parser//lib/regexp_parser/syntax/versions/1.8.6.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/1.8.6.rb#3 class Regexp::Syntax::V1_8_6 < ::Regexp::Syntax::Base; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/1.9.1.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/1.9.1.rb#3 class Regexp::Syntax::V1_9_1 < ::Regexp::Syntax::V1_8_6; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/1.9.3.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/1.9.3.rb#3 class Regexp::Syntax::V1_9_3 < ::Regexp::Syntax::V1_9_1; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.0.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.0.0.rb#3 class Regexp::Syntax::V2_0_0 < ::Regexp::Syntax::V1_9_3; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.2.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.2.0.rb#3 class Regexp::Syntax::V2_2_0 < ::Regexp::Syntax::V2_0_0; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.3.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.3.0.rb#3 class Regexp::Syntax::V2_3_0 < ::Regexp::Syntax::V2_2_0; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.4.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.4.0.rb#3 class Regexp::Syntax::V2_4_0 < ::Regexp::Syntax::V2_3_0; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.4.1.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.4.1.rb#3 class Regexp::Syntax::V2_4_1 < ::Regexp::Syntax::V2_4_0; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.5.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.5.0.rb#3 class Regexp::Syntax::V2_5_0 < ::Regexp::Syntax::V2_4_1; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.6.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.6.0.rb#3 class Regexp::Syntax::V2_6_0 < ::Regexp::Syntax::V2_5_0; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.6.2.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.6.2.rb#3 class Regexp::Syntax::V2_6_2 < ::Regexp::Syntax::V2_6_0; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.6.3.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.6.3.rb#3 class Regexp::Syntax::V2_6_3 < ::Regexp::Syntax::V2_6_2; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/3.1.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/3.1.0.rb#3 class Regexp::Syntax::V3_1_0 < ::Regexp::Syntax::V2_6_3; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/3.2.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/3.2.0.rb#3 class Regexp::Syntax::V3_2_0 < ::Regexp::Syntax::V3_1_0; end -# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/versions/3.5.0.rb#1 +class Regexp::Syntax::V3_5_0 < ::Regexp::Syntax::V3_2_0; end + +# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#6 Regexp::Syntax::VERSION_CONST_REGEXP = T.let(T.unsafe(nil), Regexp) -# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#2 +# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#4 Regexp::Syntax::VERSION_FORMAT = T.let(T.unsafe(nil), String) -# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#5 Regexp::Syntax::VERSION_REGEXP = T.let(T.unsafe(nil), Regexp) -# source://regexp_parser//lib/regexp_parser/token.rb#2 +# source://regexp_parser//lib/regexp_parser/token.rb#4 Regexp::TOKEN_KEYS = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/token.rb#13 +# source://regexp_parser//lib/regexp_parser/token.rb#15 class Regexp::Token < ::Struct def conditional_level; end def conditional_level=(_); end - # source://regexp_parser//lib/regexp_parser/token.rb#20 + # source://regexp_parser//lib/regexp_parser/token.rb#22 def length; end def level; end @@ -3747,29 +3797,29 @@ class Regexp::Token < ::Struct # Returns the value of attribute next. # - # source://regexp_parser//lib/regexp_parser/token.rb#14 + # source://regexp_parser//lib/regexp_parser/token.rb#16 def next; end # Sets the attribute next # # @param value the value to set the attribute next to. # - # source://regexp_parser//lib/regexp_parser/token.rb#14 + # source://regexp_parser//lib/regexp_parser/token.rb#16 def next=(_arg0); end - # source://regexp_parser//lib/regexp_parser/token.rb#16 + # source://regexp_parser//lib/regexp_parser/token.rb#18 def offset; end # Returns the value of attribute previous. # - # source://regexp_parser//lib/regexp_parser/token.rb#14 + # source://regexp_parser//lib/regexp_parser/token.rb#16 def previous; end # Sets the attribute previous # # @param value the value to set the attribute previous to. # - # source://regexp_parser//lib/regexp_parser/token.rb#14 + # source://regexp_parser//lib/regexp_parser/token.rb#16 def previous=(_arg0); end def set_level; end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/rexml@3.4.1.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/rexml@3.4.4.rbi similarity index 92% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/rexml@3.4.1.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/rexml@3.4.4.rbi index 54b2d0d8f2..68f1f55979 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/rexml@3.4.1.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/rexml@3.4.4.rbi @@ -113,12 +113,15 @@ class REXML::Attribute # Returns a copy of this attribute # - # source://rexml//lib/rexml/attribute.rb#164 + # source://rexml//lib/rexml/attribute.rb#161 def clone; end # source://rexml//lib/rexml/attribute.rb#132 def doctype; end + # source://rexml//lib/rexml/attribute.rb#205 + def document; end + # The element to which this attribute belongs # # source://rexml//lib/rexml/attribute.rb#15 @@ -129,7 +132,7 @@ class REXML::Attribute # # Returns this attribute # - # source://rexml//lib/rexml/attribute.rb#172 + # source://rexml//lib/rexml/attribute.rb#169 def element=(element); end # Creates (and returns) a hash from both the name and value @@ -137,7 +140,7 @@ class REXML::Attribute # source://rexml//lib/rexml/attribute.rb#111 def hash; end - # source://rexml//lib/rexml/attribute.rb#198 + # source://rexml//lib/rexml/attribute.rb#195 def inspect; end # Returns the namespace URL, if defined, or nil otherwise @@ -165,13 +168,13 @@ class REXML::Attribute # source://rexml//lib/rexml/attribute.rb#95 def namespace(arg = T.unsafe(nil)); end - # source://rexml//lib/rexml/attribute.rb#194 + # source://rexml//lib/rexml/attribute.rb#191 def node_type; end # The normalized value of this attribute. That is, the attribute with # entities intact. # - # source://rexml//lib/rexml/attribute.rb#158 + # source://rexml//lib/rexml/attribute.rb#155 def normalized=(new_normalized); end # Returns the namespace of the attribute. @@ -191,12 +194,12 @@ class REXML::Attribute # # This method is usually not called directly. # - # source://rexml//lib/rexml/attribute.rb#185 + # source://rexml//lib/rexml/attribute.rb#182 def remove; end # Returns the attribute value, with entities replaced # - # source://rexml//lib/rexml/attribute.rb#140 + # source://rexml//lib/rexml/attribute.rb#137 def to_s; end # Returns this attribute out as XML source, expanding the name @@ -212,22 +215,22 @@ class REXML::Attribute # Returns the UNNORMALIZED value of this attribute. That is, entities # have been expanded to their values # - # source://rexml//lib/rexml/attribute.rb#149 + # source://rexml//lib/rexml/attribute.rb#146 def value; end # Writes this attribute (EG, puts 'key="value"' to the output) # - # source://rexml//lib/rexml/attribute.rb#190 + # source://rexml//lib/rexml/attribute.rb#187 def write(output, indent = T.unsafe(nil)); end - # source://rexml//lib/rexml/attribute.rb#204 + # source://rexml//lib/rexml/attribute.rb#201 def xpath; end end # A class that defines the set of Attributes of an Element and provides # operations for accessing elements in that set. # -# source://rexml//lib/rexml/element.rb#2137 +# source://rexml//lib/rexml/element.rb#2131 class REXML::Attributes < ::Hash # :call-seq: # new(element) @@ -248,7 +251,7 @@ class REXML::Attributes < ::Hash # # @return [Attributes] a new instance of Attributes # - # source://rexml//lib/rexml/element.rb#2156 + # source://rexml//lib/rexml/element.rb#2150 def initialize(element); end # :call-seq: @@ -271,7 +274,7 @@ class REXML::Attributes < ::Hash # attrs.add(REXML::Attribute.new('baz', '3')) # => baz='3' # attrs.include?('baz') # => true # - # source://rexml//lib/rexml/element.rb#2522 + # source://rexml//lib/rexml/element.rb#2516 def <<(attribute); end # :call-seq: @@ -295,7 +298,7 @@ class REXML::Attributes < ::Hash # # Related: get_attribute (returns an \Attribute object). # - # source://rexml//lib/rexml/element.rb#2181 + # source://rexml//lib/rexml/element.rb#2175 def [](name); end # :call-seq: @@ -321,7 +324,7 @@ class REXML::Attributes < ::Hash # attrs['baz:att'] = nil # attrs.include?('baz:att') # => false # - # source://rexml//lib/rexml/element.rb#2365 + # source://rexml//lib/rexml/element.rb#2358 def []=(name, value); end # :call-seq: @@ -344,7 +347,7 @@ class REXML::Attributes < ::Hash # attrs.add(REXML::Attribute.new('baz', '3')) # => baz='3' # attrs.include?('baz') # => true # - # source://rexml//lib/rexml/element.rb#2522 + # source://rexml//lib/rexml/element.rb#2516 def add(attribute); end # :call-seq: @@ -375,7 +378,7 @@ class REXML::Attributes < ::Hash # attrs.delete(attr) # => # => # attrs.delete(attr) # => # => # - # source://rexml//lib/rexml/element.rb#2475 + # source://rexml//lib/rexml/element.rb#2471 def delete(attribute); end # :call-seq: @@ -394,7 +397,7 @@ class REXML::Attributes < ::Hash # attrs = ele.attributes # attrs.delete_all('att') # => [att='<'] # - # source://rexml//lib/rexml/element.rb#2544 + # source://rexml//lib/rexml/element.rb#2538 def delete_all(name); end # :call-seq: @@ -419,7 +422,7 @@ class REXML::Attributes < ::Hash # ["bar:att", "2"] # ["att", "<"] # - # source://rexml//lib/rexml/element.rb#2283 + # source://rexml//lib/rexml/element.rb#2276 def each; end # :call-seq: @@ -444,7 +447,7 @@ class REXML::Attributes < ::Hash # [REXML::Attribute, bar:att='2'] # [REXML::Attribute, att='<'] # - # source://rexml//lib/rexml/element.rb#2250 + # source://rexml//lib/rexml/element.rb#2243 def each_attribute; end # :call-seq: @@ -466,7 +469,7 @@ class REXML::Attributes < ::Hash # attrs.get_attribute('att') # => att='<' # attrs.get_attribute('nosuch') # => nil # - # source://rexml//lib/rexml/element.rb#2309 + # source://rexml//lib/rexml/element.rb#2302 def get_attribute(name); end # :call-seq: @@ -486,7 +489,7 @@ class REXML::Attributes < ::Hash # attrs.get_attribute_ns('http://foo', 'att') # => foo:att='1' # attrs.get_attribute_ns('http://foo', 'nosuch') # => nil # - # source://rexml//lib/rexml/element.rb#2570 + # source://rexml//lib/rexml/element.rb#2564 def get_attribute_ns(namespace, name); end # :call-seq: @@ -503,7 +506,7 @@ class REXML::Attributes < ::Hash # ele = d.root.elements['//ele'] # => # ele.attributes.length # => 3 # - # source://rexml//lib/rexml/element.rb#2221 + # source://rexml//lib/rexml/element.rb#2214 def length; end # :call-seq: @@ -515,7 +518,7 @@ class REXML::Attributes < ::Hash # d = REXML::Document.new(xml_string) # d.root.attributes.namespaces # => {"xmlns"=>"foo", "x"=>"bar", "y"=>"twee"} # - # source://rexml//lib/rexml/element.rb#2431 + # source://rexml//lib/rexml/element.rb#2426 def namespaces; end # :call-seq: @@ -529,7 +532,7 @@ class REXML::Attributes < ::Hash # d = REXML::Document.new(xml_string) # d.root.attributes.prefixes # => ["x", "y"] # - # source://rexml//lib/rexml/element.rb#2406 + # source://rexml//lib/rexml/element.rb#2400 def prefixes; end # :call-seq: @@ -546,7 +549,7 @@ class REXML::Attributes < ::Hash # ele = d.root.elements['//ele'] # => # ele.attributes.length # => 3 # - # source://rexml//lib/rexml/element.rb#2221 + # source://rexml//lib/rexml/element.rb#2214 def size; end # :call-seq: @@ -565,7 +568,7 @@ class REXML::Attributes < ::Hash # attrs = ele.attributes.to_a # => [foo:att='1', bar:att='2', att='<'] # attrs.first.class # => REXML::Attribute # - # source://rexml//lib/rexml/element.rb#2203 + # source://rexml//lib/rexml/element.rb#2196 def to_a; end end @@ -648,7 +651,7 @@ class REXML::Child # This doesn't yet handle encodings # - # source://rexml//lib/rexml/child.rb#91 + # source://rexml//lib/rexml/child.rb#90 def bytes; end # Returns:: the document this child belongs to, or nil if this child @@ -794,20 +797,20 @@ module REXML::DClonable; end # This is an abstract class. You never use this directly; it serves as a # parent class for the specific declarations. # -# source://rexml//lib/rexml/doctype.rb#242 +# source://rexml//lib/rexml/doctype.rb#238 class REXML::Declaration < ::REXML::Child # @return [Declaration] a new instance of Declaration # - # source://rexml//lib/rexml/doctype.rb#243 + # source://rexml//lib/rexml/doctype.rb#239 def initialize(src); end - # source://rexml//lib/rexml/doctype.rb#248 + # source://rexml//lib/rexml/doctype.rb#244 def to_s; end # == DEPRECATED # See REXML::Formatters # - # source://rexml//lib/rexml/doctype.rb#255 + # source://rexml//lib/rexml/doctype.rb#251 def write(output, indent); end end @@ -837,7 +840,7 @@ class REXML::DocType < ::REXML::Parent # source://rexml//lib/rexml/doctype.rb#80 def initialize(first, parent = T.unsafe(nil)); end - # source://rexml//lib/rexml/doctype.rb#185 + # source://rexml//lib/rexml/doctype.rb#181 def add(child); end # source://rexml//lib/rexml/doctype.rb#125 @@ -858,7 +861,7 @@ class REXML::DocType < ::REXML::Parent # source://rexml//lib/rexml/doctype.rb#66 def entities; end - # source://rexml//lib/rexml/doctype.rb#181 + # source://rexml//lib/rexml/doctype.rb#177 def entity(name); end # name is the name of the doctype @@ -887,7 +890,7 @@ class REXML::DocType < ::REXML::Parent # # Method contributed by Henrik Martensson # - # source://rexml//lib/rexml/doctype.rb#229 + # source://rexml//lib/rexml/doctype.rb#225 def notation(name); end # This method returns a list of notations that have been declared in the @@ -896,7 +899,7 @@ class REXML::DocType < ::REXML::Parent # # Method contributed by Henrik Martensson # - # source://rexml//lib/rexml/doctype.rb#221 + # source://rexml//lib/rexml/doctype.rb#217 def notations; end # This method retrieves the public identifier identifying the document's @@ -904,14 +907,14 @@ class REXML::DocType < ::REXML::Parent # # Method contributed by Henrik Martensson # - # source://rexml//lib/rexml/doctype.rb#195 + # source://rexml//lib/rexml/doctype.rb#191 def public; end # This method retrieves the system identifier identifying the document's DTD # # Method contributed by Henrik Martensson # - # source://rexml//lib/rexml/doctype.rb#207 + # source://rexml//lib/rexml/doctype.rb#203 def system; end # output:: @@ -1038,7 +1041,7 @@ class REXML::Document < ::REXML::Element # d.add(REXML::Element.new('foo')) # d.to_s # => "" # - # source://rexml//lib/rexml/document.rb#172 + # source://rexml//lib/rexml/document.rb#174 def <<(child); end # :call-seq: @@ -1075,7 +1078,7 @@ class REXML::Document < ::REXML::Element # d.add(REXML::Element.new('foo')) # d.to_s # => "" # - # source://rexml//lib/rexml/document.rb#172 + # source://rexml//lib/rexml/document.rb#174 def add(child); end # :call-seq: @@ -1085,7 +1088,7 @@ class REXML::Document < ::REXML::Element # # REXML::Element.add_element(name_or_element, attributes) # - # source://rexml//lib/rexml/document.rb#211 + # source://rexml//lib/rexml/document.rb#213 def add_element(arg = T.unsafe(nil), arg2 = T.unsafe(nil)); end # :call-seq: @@ -1094,7 +1097,7 @@ class REXML::Document < ::REXML::Element # Returns the new document resulting from executing # Document.new(self). See Document.new. # - # source://rexml//lib/rexml/document.rb#122 + # source://rexml//lib/rexml/document.rb#124 def clone; end # :call-seq: @@ -1107,10 +1110,10 @@ class REXML::Document < ::REXML::Element # d = REXML::Document.new('') # d.doctype.class # => nil # - # source://rexml//lib/rexml/document.rb#243 + # source://rexml//lib/rexml/document.rb#245 def doctype; end - # source://rexml//lib/rexml/document.rb#446 + # source://rexml//lib/rexml/document.rb#448 def document; end # :call-seq: @@ -1123,31 +1126,31 @@ class REXML::Document < ::REXML::Element # d = REXML::Document.new('') # d.encoding # => "UTF-8" # - # source://rexml//lib/rexml/document.rb#292 + # source://rexml//lib/rexml/document.rb#294 def encoding; end # Returns the value of attribute entity_expansion_count. # - # source://rexml//lib/rexml/document.rb#435 + # source://rexml//lib/rexml/document.rb#437 def entity_expansion_count; end # Sets the attribute entity_expansion_limit # # @param value the value to set the attribute entity_expansion_limit to. # - # source://rexml//lib/rexml/document.rb#436 + # source://rexml//lib/rexml/document.rb#438 def entity_expansion_limit=(_arg0); end # Returns the value of attribute entity_expansion_text_limit. # - # source://rexml//lib/rexml/document.rb#437 + # source://rexml//lib/rexml/document.rb#439 def entity_expansion_text_limit; end # Sets the attribute entity_expansion_text_limit # # @param value the value to set the attribute entity_expansion_text_limit to. # - # source://rexml//lib/rexml/document.rb#437 + # source://rexml//lib/rexml/document.rb#439 def entity_expansion_text_limit=(_arg0); end # :call-seq: @@ -1155,7 +1158,7 @@ class REXML::Document < ::REXML::Element # # Returns an empty string. # - # source://rexml//lib/rexml/document.rb#131 + # source://rexml//lib/rexml/document.rb#133 def expanded_name; end # :call-seq: @@ -1165,7 +1168,7 @@ class REXML::Document < ::REXML::Element # d = doc_type # d ? d.name : "UNDEFINED" # - # source://rexml//lib/rexml/document.rb#131 + # source://rexml//lib/rexml/document.rb#133 def name; end # :call-seq: @@ -1173,10 +1176,10 @@ class REXML::Document < ::REXML::Element # # Returns the symbol +:document+. # - # source://rexml//lib/rexml/document.rb#112 + # source://rexml//lib/rexml/document.rb#114 def node_type; end - # source://rexml//lib/rexml/document.rb#439 + # source://rexml//lib/rexml/document.rb#441 def record_entity_expansion; end # :call-seq: @@ -1189,7 +1192,7 @@ class REXML::Document < ::REXML::Element # d = REXML::Document.new('') # d.root # => nil # - # source://rexml//lib/rexml/document.rb#227 + # source://rexml//lib/rexml/document.rb#229 def root; end # :call-seq: @@ -1205,7 +1208,7 @@ class REXML::Document < ::REXML::Element # # @return [Boolean] # - # source://rexml//lib/rexml/document.rb#307 + # source://rexml//lib/rexml/document.rb#309 def stand_alone?; end # :call-seq: @@ -1219,12 +1222,12 @@ class REXML::Document < ::REXML::Element # d = REXML::Document.new('') # d.version # => "1.0" # - # source://rexml//lib/rexml/document.rb#277 + # source://rexml//lib/rexml/document.rb#279 def version; end # :call-seq: - # doc.write(output=$stdout, indent=-1, transtive=false, ie_hack=false, encoding=nil) - # doc.write(options={:output => $stdout, :indent => -1, :transtive => false, :ie_hack => false, :encoding => nil}) + # doc.write(output=$stdout, indent=-1, transitive=false, ie_hack=false, encoding=nil) + # doc.write(options={:output => $stdout, :indent => -1, :transitive => false, :ie_hack => false, :encoding => nil}) # # Write the XML tree out, optionally with indent. This writes out the # entire XML document, including XML declarations, doctype declarations, @@ -1278,7 +1281,7 @@ class REXML::Document < ::REXML::Element # instead of encoding in XML declaration. # Defaults to nil. It means encoding in XML declaration is used. # - # source://rexml//lib/rexml/document.rb#367 + # source://rexml//lib/rexml/document.rb#369 def write(*arguments); end # :call-seq: @@ -1294,44 +1297,62 @@ class REXML::Document < ::REXML::Element # d.xml_decl.class # => REXML::XMLDecl # d.xml_decl.to_s # => "" # - # source://rexml//lib/rexml/document.rb#260 + # source://rexml//lib/rexml/document.rb#262 def xml_decl; end private - # source://rexml//lib/rexml/document.rb#451 + # source://rexml//lib/rexml/document.rb#467 def build(source); end + # New document level cache is created and available in this block. + # This API is thread unsafe. Users can't change this document in this block. + # + # source://rexml//lib/rexml/document.rb#458 + def enable_cache; end + + # Returns the value of attribute namespaces_cache. + # + # source://rexml//lib/rexml/document.rb#454 + def namespaces_cache; end + + # Sets the attribute namespaces_cache + # + # @param value the value to set the attribute namespaces_cache to. + # + # source://rexml//lib/rexml/document.rb#454 + def namespaces_cache=(_arg0); end + class << self # Get the entity expansion limit. By default the limit is set to 10000. # # Deprecated. Use REXML::Security.entity_expansion_limit= instead. # - # source://rexml//lib/rexml/document.rb#417 + # source://rexml//lib/rexml/document.rb#419 def entity_expansion_limit; end # Set the entity expansion limit. By default the limit is set to 10000. # # Deprecated. Use REXML::Security.entity_expansion_limit= instead. # - # source://rexml//lib/rexml/document.rb#410 + # source://rexml//lib/rexml/document.rb#412 def entity_expansion_limit=(val); end # Get the entity expansion limit. By default the limit is set to 10240. # # Deprecated. Use REXML::Security.entity_expansion_text_limit instead. # - # source://rexml//lib/rexml/document.rb#431 + # source://rexml//lib/rexml/document.rb#433 def entity_expansion_text_limit; end # Set the entity expansion limit. By default the limit is set to 10240. # # Deprecated. Use REXML::Security.entity_expansion_text_limit= instead. # - # source://rexml//lib/rexml/document.rb#424 + # source://rexml//lib/rexml/document.rb#426 def entity_expansion_text_limit=(val); end - # source://rexml//lib/rexml/document.rb#403 + # source://rexml//lib/rexml/document.rb#405 def parse_stream(source, listener); end end end @@ -1682,7 +1703,7 @@ class REXML::Element < ::REXML::Parent # root[:attr] # => "value" # root[:nosuch] # => nil # - # source://rexml//lib/rexml/element.rb#1246 + # source://rexml//lib/rexml/element.rb#1238 def [](name_or_index); end # :call-seq: @@ -1711,7 +1732,7 @@ class REXML::Element < ::REXML::Parent # e.add_attribute(a) # => attr='VALUE' # e['attr'] # => "VALUE" # - # source://rexml//lib/rexml/element.rb#1345 + # source://rexml//lib/rexml/element.rb#1336 def add_attribute(key, value = T.unsafe(nil)); end # :call-seq: @@ -1737,7 +1758,7 @@ class REXML::Element < ::REXML::Parent # a = [['foo' => 'bar'], ['baz' => 'bat']] # e.add_attributes(a) # - # source://rexml//lib/rexml/element.rb#1376 + # source://rexml//lib/rexml/element.rb#1367 def add_attributes(hash); end # :call-seq: @@ -1774,7 +1795,7 @@ class REXML::Element < ::REXML::Parent # e0.add_element(e1, {'bat' => '0', 'bam' => '1'}) # e0[1] # => # - # source://rexml//lib/rexml/element.rb#732 + # source://rexml//lib/rexml/element.rb#725 def add_element(element, attrs = T.unsafe(nil)); end # :call-seq: @@ -1795,7 +1816,7 @@ class REXML::Element < ::REXML::Parent # e.add_namespace('baz', 'bat') # e.namespaces # => {"xmlns"=>"bar", "baz"=>"bat"} # - # source://rexml//lib/rexml/element.rb#655 + # source://rexml//lib/rexml/element.rb#648 def add_namespace(prefix, uri = T.unsafe(nil)); end # :call-seq: @@ -1837,7 +1858,7 @@ class REXML::Element < ::REXML::Parent # a.add_text(REXML::Text.new('baz')) # a.to_a # => ["foo", , "bar", "baz", "baz"] # - # source://rexml//lib/rexml/element.rb#1147 + # source://rexml//lib/rexml/element.rb#1139 def add_text(text); end # :call-seq: @@ -1869,7 +1890,7 @@ class REXML::Element < ::REXML::Parent # document.root.attribute("x") # => x='x' # document.root.attribute("x", "a") # => a:x='a:x' # - # source://rexml//lib/rexml/element.rb#1287 + # source://rexml//lib/rexml/element.rb#1279 def attribute(name, namespace = T.unsafe(nil)); end # Mechanisms for accessing attributes and child elements of this @@ -1894,7 +1915,7 @@ class REXML::Element < ::REXML::Parent # cds.frozen? # => true # cds.map {|cd| cd.class } # => [REXML::CData, REXML::CData] # - # source://rexml//lib/rexml/element.rb#1420 + # source://rexml//lib/rexml/element.rb#1411 def cdatas; end # :call-seq: @@ -1927,7 +1948,7 @@ class REXML::Element < ::REXML::Parent # cs.map {|c| c.class } # => [REXML::Comment, REXML::Comment] # cs.map {|c| c.to_s } # => ["foo", "bar"] # - # source://rexml//lib/rexml/element.rb#1441 + # source://rexml//lib/rexml/element.rb#1432 def comments; end # The context holds information about the processing environment, such as @@ -1953,7 +1974,7 @@ class REXML::Element < ::REXML::Parent # e.delete_attribute('bar') # => # e.delete_attribute('bar') # => nil # - # source://rexml//lib/rexml/element.rb#1395 + # source://rexml//lib/rexml/element.rb#1386 def delete_attribute(key); end # :call-seq: @@ -1993,7 +2014,7 @@ class REXML::Element < ::REXML::Parent # a.delete_element('//c') # => # a.delete_element('//c') # => nil # - # source://rexml//lib/rexml/element.rb#778 + # source://rexml//lib/rexml/element.rb#771 def delete_element(element); end # :call-seq: @@ -2018,7 +2039,7 @@ class REXML::Element < ::REXML::Parent # d.root.delete_namespace('nosuch') # d.to_s # => "" # - # source://rexml//lib/rexml/element.rb#687 + # source://rexml//lib/rexml/element.rb#680 def delete_namespace(namespace = T.unsafe(nil)); end # :call-seq: @@ -2061,7 +2082,7 @@ class REXML::Element < ::REXML::Parent # ... # # - # source://rexml//lib/rexml/element.rb#930 + # source://rexml//lib/rexml/element.rb#923 def each_element(xpath = T.unsafe(nil), &block); end # :call-seq: @@ -2113,7 +2134,7 @@ class REXML::Element < ::REXML::Parent # # # - # source://rexml//lib/rexml/element.rb#847 + # source://rexml//lib/rexml/element.rb#840 def each_element_with_attribute(key, value = T.unsafe(nil), max = T.unsafe(nil), name = T.unsafe(nil), &block); end # :call-seq: @@ -2163,7 +2184,7 @@ class REXML::Element < ::REXML::Parent # # ... # - # source://rexml//lib/rexml/element.rb#904 + # source://rexml//lib/rexml/element.rb#897 def each_element_with_text(text = T.unsafe(nil), max = T.unsafe(nil), name = T.unsafe(nil), &block); end # Mechanisms for accessing attributes and child elements of this @@ -2187,7 +2208,7 @@ class REXML::Element < ::REXML::Parent # d = REXML::Document.new(xml_string) # d.root.get_elements('//a') # => [ ... , ] # - # source://rexml//lib/rexml/element.rb#949 + # source://rexml//lib/rexml/element.rb#942 def get_elements(xpath); end # :call-seq: @@ -2207,7 +2228,7 @@ class REXML::Element < ::REXML::Parent # # d.root.get_text(1) # => "this is bold!" # - # source://rexml//lib/rexml/element.rb#1053 + # source://rexml//lib/rexml/element.rb#1045 def get_text(path = T.unsafe(nil)); end # :call-seq: @@ -2222,7 +2243,7 @@ class REXML::Element < ::REXML::Parent # # @return [Boolean] # - # source://rexml//lib/rexml/element.rb#1315 + # source://rexml//lib/rexml/element.rb#1306 def has_attributes?; end # :call-seq: @@ -2239,7 +2260,7 @@ class REXML::Element < ::REXML::Parent # # @return [Boolean] # - # source://rexml//lib/rexml/element.rb#794 + # source://rexml//lib/rexml/element.rb#787 def has_elements?; end # :call-seq: @@ -2256,7 +2277,7 @@ class REXML::Element < ::REXML::Parent # # @return [Boolean] # - # source://rexml//lib/rexml/element.rb#1002 + # source://rexml//lib/rexml/element.rb#995 def has_text?; end # :call-seq: @@ -2266,7 +2287,7 @@ class REXML::Element < ::REXML::Parent # # See {Element Context}[../doc/rexml/context_rdoc.html]. # - # source://rexml//lib/rexml/element.rb#513 + # source://rexml//lib/rexml/element.rb#512 def ignore_whitespace_nodes; end # :call-seq: @@ -2310,7 +2331,7 @@ class REXML::Element < ::REXML::Parent # is.map {|i| i.class } # => [REXML::Instruction, REXML::Instruction] # is.map {|i| i.to_s } # => ["", ""] # - # source://rexml//lib/rexml/element.rb#1462 + # source://rexml//lib/rexml/element.rb#1453 def instructions; end # :call-seq: @@ -2333,7 +2354,7 @@ class REXML::Element < ::REXML::Parent # b.namespace('y') # => "2" # b.namespace('nosuch') # => nil # - # source://rexml//lib/rexml/element.rb#618 + # source://rexml//lib/rexml/element.rb#619 def namespace(prefix = T.unsafe(nil)); end # :call-seq: @@ -2355,7 +2376,7 @@ class REXML::Element < ::REXML::Parent # d.elements['//b'].namespaces # => {"x"=>"1", "y"=>"2"} # d.elements['//c'].namespaces # => {"x"=>"1", "y"=>"2", "z"=>"3"} # - # source://rexml//lib/rexml/element.rb#591 + # source://rexml//lib/rexml/element.rb#590 def namespaces; end # :call-seq: @@ -2368,7 +2389,7 @@ class REXML::Element < ::REXML::Parent # d.root.elements['b'].next_element #-> # d.root.elements['c'].next_element #-> nil # - # source://rexml//lib/rexml/element.rb#963 + # source://rexml//lib/rexml/element.rb#956 def next_element; end # :call-seq: @@ -2380,7 +2401,7 @@ class REXML::Element < ::REXML::Parent # a = d.root # => # a.node_type # => :element # - # source://rexml//lib/rexml/element.rb#1168 + # source://rexml//lib/rexml/element.rb#1160 def node_type; end # :call-seq: @@ -2402,7 +2423,7 @@ class REXML::Element < ::REXML::Parent # d.elements['//b'].prefixes # => ["x", "y"] # d.elements['//c'].prefixes # => ["x", "y", "z"] # - # source://rexml//lib/rexml/element.rb#565 + # source://rexml//lib/rexml/element.rb#564 def prefixes; end # :call-seq: @@ -2415,7 +2436,7 @@ class REXML::Element < ::REXML::Parent # d.root.elements['c'].previous_element #-> # d.root.elements['b'].previous_element #-> nil # - # source://rexml//lib/rexml/element.rb#979 + # source://rexml//lib/rexml/element.rb#972 def previous_element; end # :call-seq: @@ -2428,7 +2449,7 @@ class REXML::Element < ::REXML::Parent # The evaluation is tested against +expanded_name+, and so is namespace # sensitive. # - # source://rexml//lib/rexml/element.rb#533 + # source://rexml//lib/rexml/element.rb#532 def raw; end # :call-seq: @@ -2513,7 +2534,7 @@ class REXML::Element < ::REXML::Parent # Note also that the text note is retrieved by method get_text, # and so is always normalized text. # - # source://rexml//lib/rexml/element.rb#1030 + # source://rexml//lib/rexml/element.rb#1023 def text(path = T.unsafe(nil)); end # :call-seq: @@ -2541,7 +2562,7 @@ class REXML::Element < ::REXML::Parent # # d.root.text = nil #-> '' # - # source://rexml//lib/rexml/element.rb#1089 + # source://rexml//lib/rexml/element.rb#1081 def text=(text); end # :call-seq: @@ -2556,7 +2577,7 @@ class REXML::Element < ::REXML::Parent # ts.map {|t| t.class } # => [REXML::Text, REXML::Text] # ts.map {|t| t.to_s } # => ["text", "more"] # - # source://rexml//lib/rexml/element.rb#1478 + # source://rexml//lib/rexml/element.rb#1469 def texts; end # :call-seq: @@ -2570,7 +2591,7 @@ class REXML::Element < ::REXML::Parent # The evaluation is tested against the element's +expanded_name+, # and so is namespace-sensitive. # - # source://rexml//lib/rexml/element.rb#490 + # source://rexml//lib/rexml/element.rb#489 def whitespace; end # == DEPRECATED @@ -2596,7 +2617,7 @@ class REXML::Element < ::REXML::Parent # doc.write( out ) #-> doc is written to the string 'out' # doc.write( $stdout ) #-> doc written to the console # - # source://rexml//lib/rexml/element.rb#1504 + # source://rexml//lib/rexml/element.rb#1495 def write(output = T.unsafe(nil), indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end # :call-seq: @@ -2619,25 +2640,28 @@ class REXML::Element < ::REXML::Parent # e = REXML::Element.new('foo') # e.xpath # => "foo" # - # source://rexml//lib/rexml/element.rb#1192 + # source://rexml//lib/rexml/element.rb#1184 def xpath; end private - # source://rexml//lib/rexml/element.rb#1521 + # source://rexml//lib/rexml/element.rb#1519 def __to_xpath_helper(node); end + # source://rexml//lib/rexml/element.rb#1511 + def calculate_namespaces; end + # A private helper method # - # source://rexml//lib/rexml/element.rb#1536 + # source://rexml//lib/rexml/element.rb#1534 def each_with_something(test, max = T.unsafe(nil), name = T.unsafe(nil)); end end -# source://rexml//lib/rexml/doctype.rb#261 +# source://rexml//lib/rexml/doctype.rb#257 class REXML::ElementDecl < ::REXML::Declaration # @return [ElementDecl] a new instance of ElementDecl # - # source://rexml//lib/rexml/doctype.rb#262 + # source://rexml//lib/rexml/doctype.rb#258 def initialize(src); end end @@ -2683,7 +2707,7 @@ end # elements = d.root.elements # elements # => # ... > # -# source://rexml//lib/rexml/element.rb#1591 +# source://rexml//lib/rexml/element.rb#1589 class REXML::Elements include ::Enumerable @@ -2700,7 +2724,7 @@ class REXML::Elements # # @return [Elements] a new instance of Elements # - # source://rexml//lib/rexml/element.rb#1604 + # source://rexml//lib/rexml/element.rb#1602 def initialize(parent); end # :call-seq: @@ -2765,7 +2789,7 @@ class REXML::Elements # element.parent # => ... # element.context # => {:raw=>:all} # - # source://rexml//lib/rexml/element.rb#1921 + # source://rexml//lib/rexml/element.rb#1915 def <<(element = T.unsafe(nil)); end # :call-seq: @@ -2821,7 +2845,7 @@ class REXML::Elements # eles[4, 'book'] # => ... # eles[5, 'book'] # => nil # - # source://rexml//lib/rexml/element.rb#1676 + # source://rexml//lib/rexml/element.rb#1674 def [](index, name = T.unsafe(nil)); end # :call-seq: @@ -2860,7 +2884,7 @@ class REXML::Elements # eles[50] = REXML::Text.new('bar') # => "bar" # eles.size # => 5 # - # source://rexml//lib/rexml/element.rb#1731 + # source://rexml//lib/rexml/element.rb#1725 def []=(index, element); end # :call-seq: @@ -2925,7 +2949,7 @@ class REXML::Elements # element.parent # => ... # element.context # => {:raw=>:all} # - # source://rexml//lib/rexml/element.rb#1921 + # source://rexml//lib/rexml/element.rb#1915 def add(element = T.unsafe(nil)); end # :call-seq: @@ -2945,7 +2969,7 @@ class REXML::Elements # xpath = '//book [@category="web"]' # elements.collect(xpath) {|element| element.size } # => [17, 9] # - # source://rexml//lib/rexml/element.rb#1984 + # source://rexml//lib/rexml/element.rb#1978 def collect(xpath = T.unsafe(nil)); end # :call-seq: @@ -2989,7 +3013,7 @@ class REXML::Elements # elements.delete('//book [@category="children"]') # => ... # elements.delete('//nosuch') # => nil # - # source://rexml//lib/rexml/element.rb#1821 + # source://rexml//lib/rexml/element.rb#1815 def delete(element); end # :call-seq: @@ -3009,7 +3033,7 @@ class REXML::Elements # elements.size # => 0 # elements.delete_all('//book') # => [] # - # source://rexml//lib/rexml/element.rb#1847 + # source://rexml//lib/rexml/element.rb#1841 def delete_all(xpath); end # :call-seq: @@ -3040,7 +3064,7 @@ class REXML::Elements # ... # ... # - # source://rexml//lib/rexml/element.rb#1963 + # source://rexml//lib/rexml/element.rb#1957 def each(xpath = T.unsafe(nil)); end # :call-seq: @@ -3055,7 +3079,7 @@ class REXML::Elements # # @return [Boolean] # - # source://rexml//lib/rexml/element.rb#1751 + # source://rexml//lib/rexml/element.rb#1745 def empty?; end # :call-seq: @@ -3072,7 +3096,7 @@ class REXML::Elements # elements.index(ele_4) # => 3 # elements.index(ele_3) # => -1 # - # source://rexml//lib/rexml/element.rb#1769 + # source://rexml//lib/rexml/element.rb#1763 def index(element); end # :call-seq: @@ -3152,7 +3176,7 @@ class REXML::Elements # total += element.size # end # => 26 # - # source://rexml//lib/rexml/element.rb#2069 + # source://rexml//lib/rexml/element.rb#2063 def inject(xpath = T.unsafe(nil), initial = T.unsafe(nil)); end # :call-seq: @@ -3166,7 +3190,7 @@ class REXML::Elements # elements = REXML::Elements.new(d.root) # elements.parent == d.root # => true # - # source://rexml//lib/rexml/element.rb#1619 + # source://rexml//lib/rexml/element.rb#1617 def parent; end # :call-seq: @@ -3178,7 +3202,7 @@ class REXML::Elements # d.root.elements.size # => 3 # Three elements. # d.root.size # => 6 # Three elements plus three text nodes.. # - # source://rexml//lib/rexml/element.rb#2093 + # source://rexml//lib/rexml/element.rb#2087 def size; end # :call-seq: @@ -3199,23 +3223,23 @@ class REXML::Elements # # elements.to_a('//c') # => [] # - # source://rexml//lib/rexml/element.rb#2117 + # source://rexml//lib/rexml/element.rb#2111 def to_a(xpath = T.unsafe(nil)); end private # Private helper class. Removes quotes from quoted strings # - # source://rexml//lib/rexml/element.rb#2125 + # source://rexml//lib/rexml/element.rb#2119 def literalize(name); end end # source://rexml//lib/rexml/encoding.rb#4 module REXML::Encoding - # source://rexml//lib/rexml/encoding.rb#29 + # source://rexml//lib/rexml/encoding.rb#26 def decode(string); end - # source://rexml//lib/rexml/encoding.rb#25 + # source://rexml//lib/rexml/encoding.rb#22 def encode(string); end # ID ---> Encoding name @@ -3228,7 +3252,7 @@ module REXML::Encoding private - # source://rexml//lib/rexml/encoding.rb#34 + # source://rexml//lib/rexml/encoding.rb#31 def find_encoding(name); end end @@ -3321,17 +3345,17 @@ class REXML::Entity < ::REXML::Child end end -# source://rexml//lib/rexml/doctype.rb#267 +# source://rexml//lib/rexml/doctype.rb#263 class REXML::ExternalEntity < ::REXML::Child # @return [ExternalEntity] a new instance of ExternalEntity # - # source://rexml//lib/rexml/doctype.rb#268 + # source://rexml//lib/rexml/doctype.rb#264 def initialize(src); end - # source://rexml//lib/rexml/doctype.rb#272 + # source://rexml//lib/rexml/doctype.rb#268 def to_s; end - # source://rexml//lib/rexml/doctype.rb#275 + # source://rexml//lib/rexml/doctype.rb#271 def write(output, indent); end end @@ -3675,48 +3699,48 @@ end # A Source that wraps an IO. See the Source class for method # documentation # -# source://rexml//lib/rexml/source.rb#215 +# source://rexml//lib/rexml/source.rb#220 class REXML::IOSource < ::REXML::Source # block_size has been deprecated # # @return [IOSource] a new instance of IOSource # - # source://rexml//lib/rexml/source.rb#219 + # source://rexml//lib/rexml/source.rb#224 def initialize(arg, block_size = T.unsafe(nil), encoding = T.unsafe(nil)); end # @return the current line in the source # - # source://rexml//lib/rexml/source.rb#324 + # source://rexml//lib/rexml/source.rb#329 def current_line; end # @return [Boolean] # - # source://rexml//lib/rexml/source.rb#319 + # source://rexml//lib/rexml/source.rb#324 def empty?; end - # source://rexml//lib/rexml/source.rb#279 + # source://rexml//lib/rexml/source.rb#284 def ensure_buffer; end - # source://rexml//lib/rexml/source.rb#283 + # source://rexml//lib/rexml/source.rb#288 def match(pattern, cons = T.unsafe(nil)); end # @return [Boolean] # - # source://rexml//lib/rexml/source.rb#302 + # source://rexml//lib/rexml/source.rb#307 def match?(pattern, cons = T.unsafe(nil)); end - # source://rexml//lib/rexml/source.rb#240 + # source://rexml//lib/rexml/source.rb#245 def read(term = T.unsafe(nil), min_bytes = T.unsafe(nil)); end - # source://rexml//lib/rexml/source.rb#261 + # source://rexml//lib/rexml/source.rb#266 def read_until(term); end private - # source://rexml//lib/rexml/source.rb#371 + # source://rexml//lib/rexml/source.rb#376 def encoding_updated; end - # source://rexml//lib/rexml/source.rb#346 + # source://rexml//lib/rexml/source.rb#351 def readline(term = T.unsafe(nil)); end end @@ -3882,48 +3906,48 @@ module REXML::Node def to_s(indent = T.unsafe(nil)); end end -# source://rexml//lib/rexml/doctype.rb#280 +# source://rexml//lib/rexml/doctype.rb#276 class REXML::NotationDecl < ::REXML::Child # @return [NotationDecl] a new instance of NotationDecl # - # source://rexml//lib/rexml/doctype.rb#282 + # source://rexml//lib/rexml/doctype.rb#278 def initialize(name, middle, pub, sys); end # This method retrieves the name of the notation. # # Method contributed by Henrik Martensson # - # source://rexml//lib/rexml/doctype.rb#307 + # source://rexml//lib/rexml/doctype.rb#302 def name; end # Returns the value of attribute public. # - # source://rexml//lib/rexml/doctype.rb#281 + # source://rexml//lib/rexml/doctype.rb#277 def public; end # Sets the attribute public # # @param value the value to set the attribute public to. # - # source://rexml//lib/rexml/doctype.rb#281 + # source://rexml//lib/rexml/doctype.rb#277 def public=(_arg0); end # Returns the value of attribute system. # - # source://rexml//lib/rexml/doctype.rb#281 + # source://rexml//lib/rexml/doctype.rb#277 def system; end # Sets the attribute system # # @param value the value to set the attribute system to. # - # source://rexml//lib/rexml/doctype.rb#281 + # source://rexml//lib/rexml/doctype.rb#277 def system=(_arg0); end - # source://rexml//lib/rexml/doctype.rb#290 + # source://rexml//lib/rexml/doctype.rb#286 def to_s; end - # source://rexml//lib/rexml/doctype.rb#300 + # source://rexml//lib/rexml/doctype.rb#295 def write(output, indent = T.unsafe(nil)); end end @@ -4161,51 +4185,51 @@ end class REXML::Parsers::BaseParser # @return [BaseParser] a new instance of BaseParser # - # source://rexml//lib/rexml/parsers/baseparser.rb#163 + # source://rexml//lib/rexml/parsers/baseparser.rb#164 def initialize(source); end - # source://rexml//lib/rexml/parsers/baseparser.rb#173 + # source://rexml//lib/rexml/parsers/baseparser.rb#175 def add_listener(listener); end # Returns true if there are no more events # # @return [Boolean] # - # source://rexml//lib/rexml/parsers/baseparser.rb#208 + # source://rexml//lib/rexml/parsers/baseparser.rb#210 def empty?; end - # source://rexml//lib/rexml/parsers/baseparser.rb#543 + # source://rexml//lib/rexml/parsers/baseparser.rb#537 def entity(reference, entities); end # Returns the value of attribute entity_expansion_count. # - # source://rexml//lib/rexml/parsers/baseparser.rb#178 + # source://rexml//lib/rexml/parsers/baseparser.rb#180 def entity_expansion_count; end # Sets the attribute entity_expansion_limit # # @param value the value to set the attribute entity_expansion_limit to. # - # source://rexml//lib/rexml/parsers/baseparser.rb#179 + # source://rexml//lib/rexml/parsers/baseparser.rb#181 def entity_expansion_limit=(_arg0); end # Sets the attribute entity_expansion_text_limit # # @param value the value to set the attribute entity_expansion_text_limit to. # - # source://rexml//lib/rexml/parsers/baseparser.rb#180 + # source://rexml//lib/rexml/parsers/baseparser.rb#182 def entity_expansion_text_limit=(_arg0); end # Returns true if there are more events. Synonymous with !empty? # # @return [Boolean] # - # source://rexml//lib/rexml/parsers/baseparser.rb#213 + # source://rexml//lib/rexml/parsers/baseparser.rb#215 def has_next?; end # Escapes all possible entities # - # source://rexml//lib/rexml/parsers/baseparser.rb#554 + # source://rexml//lib/rexml/parsers/baseparser.rb#548 def normalize(input, entities = T.unsafe(nil), entity_filter = T.unsafe(nil)); end # Peek at the +depth+ event in the stack. The first element on the stack @@ -4215,78 +4239,90 @@ class REXML::Parsers::BaseParser # event, so you can effectively pre-parse the entire document (pull the # entire thing into memory) using this method. # - # source://rexml//lib/rexml/parsers/baseparser.rb#229 + # source://rexml//lib/rexml/parsers/baseparser.rb#231 def peek(depth = T.unsafe(nil)); end - # source://rexml//lib/rexml/parsers/baseparser.rb#198 + # source://rexml//lib/rexml/parsers/baseparser.rb#200 def position; end # Returns the next event. This is a +PullEvent+ object. # - # source://rexml//lib/rexml/parsers/baseparser.rb#244 + # source://rexml//lib/rexml/parsers/baseparser.rb#246 def pull; end - # source://rexml//lib/rexml/parsers/baseparser.rb#187 + # source://rexml//lib/rexml/parsers/baseparser.rb#189 def reset; end # Returns the value of attribute source. # - # source://rexml//lib/rexml/parsers/baseparser.rb#177 + # source://rexml//lib/rexml/parsers/baseparser.rb#179 def source; end - # source://rexml//lib/rexml/parsers/baseparser.rb#182 + # source://rexml//lib/rexml/parsers/baseparser.rb#184 def stream=(source); end # Unescapes all possible entities # - # source://rexml//lib/rexml/parsers/baseparser.rb#570 + # source://rexml//lib/rexml/parsers/baseparser.rb#564 def unnormalize(string, entities = T.unsafe(nil), filter = T.unsafe(nil)); end # Push an event back on the head of the stream. This method # has (theoretically) infinite depth. # - # source://rexml//lib/rexml/parsers/baseparser.rb#219 + # source://rexml//lib/rexml/parsers/baseparser.rb#221 def unshift(token); end private - # source://rexml//lib/rexml/parsers/baseparser.rb#619 + # source://rexml//lib/rexml/parsers/baseparser.rb#613 def add_namespace(prefix, uri); end # @return [Boolean] # - # source://rexml//lib/rexml/parsers/baseparser.rb#652 + # source://rexml//lib/rexml/parsers/baseparser.rb#646 def need_source_encoding_update?(xml_declaration_encoding); end - # source://rexml//lib/rexml/parsers/baseparser.rb#791 + # source://rexml//lib/rexml/parsers/baseparser.rb#652 + def normalize_xml_declaration_encoding(xml_declaration_encoding); end + + # source://rexml//lib/rexml/parsers/baseparser.rb#849 + def parse_attribute_value_with_equal(name); end + + # source://rexml//lib/rexml/parsers/baseparser.rb#868 def parse_attributes(prefixes); end - # source://rexml//lib/rexml/parsers/baseparser.rb#671 + # source://rexml//lib/rexml/parsers/baseparser.rb#669 def parse_id(base_error_message, accept_external_id:, accept_public_id:); end - # source://rexml//lib/rexml/parsers/baseparser.rb#699 + # source://rexml//lib/rexml/parsers/baseparser.rb#697 def parse_id_invalid_details(accept_external_id:, accept_public_id:); end - # source://rexml//lib/rexml/parsers/baseparser.rb#658 + # source://rexml//lib/rexml/parsers/baseparser.rb#656 def parse_name(base_error_message); end - # source://rexml//lib/rexml/parsers/baseparser.rb#634 + # source://rexml//lib/rexml/parsers/baseparser.rb#628 def pop_namespaces_restore; end - # source://rexml//lib/rexml/parsers/baseparser.rb#737 + # source://rexml//lib/rexml/parsers/baseparser.rb#735 + def process_comment; end + + # source://rexml//lib/rexml/parsers/baseparser.rb#747 def process_instruction; end - # source://rexml//lib/rexml/parsers/baseparser.rb#254 + # source://rexml//lib/rexml/parsers/baseparser.rb#256 def pull_event; end - # source://rexml//lib/rexml/parsers/baseparser.rb#628 + # source://rexml//lib/rexml/parsers/baseparser.rb#622 def push_namespaces_restore; end - # source://rexml//lib/rexml/parsers/baseparser.rb#645 + # source://rexml//lib/rexml/parsers/baseparser.rb#639 def record_entity_expansion(delta = T.unsafe(nil)); end - # source://rexml//lib/rexml/parsers/baseparser.rb#773 + # source://rexml//lib/rexml/parsers/baseparser.rb#831 def scan_quote; end + + # source://rexml//lib/rexml/parsers/baseparser.rb#769 + def xml_declaration; end end # source://rexml//lib/rexml/parsers/baseparser.rb#130 @@ -4301,31 +4337,34 @@ REXML::Parsers::BaseParser::PUBLIC_ID = T.let(T.unsafe(nil), Regexp) # source://rexml//lib/rexml/parsers/baseparser.rb#143 module REXML::Parsers::BaseParser::Private; end -# source://rexml//lib/rexml/parsers/baseparser.rb#147 +# source://rexml//lib/rexml/parsers/baseparser.rb#148 REXML::Parsers::BaseParser::Private::ATTLISTDECL_END = T.let(T.unsafe(nil), Regexp) -# source://rexml//lib/rexml/parsers/baseparser.rb#152 +# source://rexml//lib/rexml/parsers/baseparser.rb#153 REXML::Parsers::BaseParser::Private::CARRIAGE_RETURN_NEWLINE_PATTERN = T.let(T.unsafe(nil), Regexp) -# source://rexml//lib/rexml/parsers/baseparser.rb#153 +# source://rexml//lib/rexml/parsers/baseparser.rb#154 REXML::Parsers::BaseParser::Private::CHARACTER_REFERENCES = T.let(T.unsafe(nil), Regexp) # source://rexml//lib/rexml/parsers/baseparser.rb#146 REXML::Parsers::BaseParser::Private::CLOSE_PATTERN = T.let(T.unsafe(nil), Regexp) -# source://rexml//lib/rexml/parsers/baseparser.rb#154 +# source://rexml//lib/rexml/parsers/baseparser.rb#155 REXML::Parsers::BaseParser::Private::DEFAULT_ENTITIES_PATTERNS = T.let(T.unsafe(nil), Hash) -# source://rexml//lib/rexml/parsers/baseparser.rb#151 +# source://rexml//lib/rexml/parsers/baseparser.rb#152 REXML::Parsers::BaseParser::Private::ENTITYDECL_PATTERN = T.let(T.unsafe(nil), Regexp) -# source://rexml//lib/rexml/parsers/baseparser.rb#149 +# source://rexml//lib/rexml/parsers/baseparser.rb#147 +REXML::Parsers::BaseParser::Private::EQUAL_PATTERN = T.let(T.unsafe(nil), Regexp) + +# source://rexml//lib/rexml/parsers/baseparser.rb#150 REXML::Parsers::BaseParser::Private::GEDECL_PATTERN = T.let(T.unsafe(nil), String) -# source://rexml//lib/rexml/parsers/baseparser.rb#148 +# source://rexml//lib/rexml/parsers/baseparser.rb#149 REXML::Parsers::BaseParser::Private::NAME_PATTERN = T.let(T.unsafe(nil), Regexp) -# source://rexml//lib/rexml/parsers/baseparser.rb#150 +# source://rexml//lib/rexml/parsers/baseparser.rb#151 REXML::Parsers::BaseParser::Private::PEDECL_PATTERN = T.let(T.unsafe(nil), String) # source://rexml//lib/rexml/parsers/baseparser.rb#144 @@ -4334,7 +4373,7 @@ REXML::Parsers::BaseParser::Private::PEREFERENCE_PATTERN = T.let(T.unsafe(nil), # source://rexml//lib/rexml/parsers/baseparser.rb#145 REXML::Parsers::BaseParser::Private::TAG_PATTERN = T.let(T.unsafe(nil), Regexp) -# source://rexml//lib/rexml/parsers/baseparser.rb#159 +# source://rexml//lib/rexml/parsers/baseparser.rb#160 REXML::Parsers::BaseParser::Private::XML_PREFIXED_NAMESPACE = T.let(T.unsafe(nil), String) # source://rexml//lib/rexml/parsers/baseparser.rb#66 @@ -4583,28 +4622,28 @@ class REXML::Source # @param encoding if non-null, sets the encoding of the source to this # @return [Source] a new instance of Source # - # source://rexml//lib/rexml/source.rb#87 + # source://rexml//lib/rexml/source.rb#88 def initialize(arg, encoding = T.unsafe(nil)); end # The current buffer (what we're going to read next) # - # source://rexml//lib/rexml/source.rb#100 + # source://rexml//lib/rexml/source.rb#101 def buffer; end - # source://rexml//lib/rexml/source.rb#110 + # source://rexml//lib/rexml/source.rb#111 def buffer_encoding=(encoding); end # @return the current line in the source # - # source://rexml//lib/rexml/source.rb#175 + # source://rexml//lib/rexml/source.rb#180 def current_line; end - # source://rexml//lib/rexml/source.rb#104 + # source://rexml//lib/rexml/source.rb#105 def drop_parsed_content; end # @return [Boolean] true if the Source is exhausted # - # source://rexml//lib/rexml/source.rb#170 + # source://rexml//lib/rexml/source.rb#175 def empty?; end # Returns the value of attribute encoding. @@ -4615,10 +4654,10 @@ class REXML::Source # Inherited from Encoding # Overridden to support optimized en/decoding # - # source://rexml//lib/rexml/source.rb#116 + # source://rexml//lib/rexml/source.rb#117 def encoding=(enc); end - # source://rexml//lib/rexml/source.rb#134 + # source://rexml//lib/rexml/source.rb#135 def ensure_buffer; end # The line number of the last consumed text @@ -4626,50 +4665,56 @@ class REXML::Source # source://rexml//lib/rexml/source.rb#64 def line; end - # source://rexml//lib/rexml/source.rb#137 + # source://rexml//lib/rexml/source.rb#138 def match(pattern, cons = T.unsafe(nil)); end # @return [Boolean] # - # source://rexml//lib/rexml/source.rb#145 + # source://rexml//lib/rexml/source.rb#146 def match?(pattern, cons = T.unsafe(nil)); end - # source://rexml//lib/rexml/source.rb#161 + # source://rexml//lib/rexml/source.rb#166 def peek_byte; end - # source://rexml//lib/rexml/source.rb#153 + # source://rexml//lib/rexml/source.rb#158 def position; end - # source://rexml//lib/rexml/source.rb#157 + # source://rexml//lib/rexml/source.rb#162 def position=(pos); end - # source://rexml//lib/rexml/source.rb#121 + # source://rexml//lib/rexml/source.rb#122 def read(term = T.unsafe(nil)); end - # source://rexml//lib/rexml/source.rb#124 + # source://rexml//lib/rexml/source.rb#125 def read_until(term); end - # source://rexml//lib/rexml/source.rb#165 + # source://rexml//lib/rexml/source.rb#170 def scan_byte; end + # source://rexml//lib/rexml/source.rb#154 + def skip_spaces; end + private - # source://rexml//lib/rexml/source.rb#184 + # source://rexml//lib/rexml/source.rb#189 def detect_encoding; end - # source://rexml//lib/rexml/source.rb#202 + # source://rexml//lib/rexml/source.rb#207 def encoding_updated; end end # source://rexml//lib/rexml/source.rb#67 module REXML::Source::Private; end -# source://rexml//lib/rexml/source.rb#69 +# source://rexml//lib/rexml/source.rb#70 REXML::Source::Private::PRE_DEFINED_TERM_PATTERNS = T.let(T.unsafe(nil), Hash) -# source://rexml//lib/rexml/source.rb#68 +# source://rexml//lib/rexml/source.rb#69 REXML::Source::Private::SCANNER_RESET_SIZE = T.let(T.unsafe(nil), Integer) +# source://rexml//lib/rexml/source.rb#68 +REXML::Source::Private::SPACES_PATTERN = T.let(T.unsafe(nil), Regexp) + # Generates Source-s. USE THIS CLASS. # # source://rexml//lib/rexml/source.rb#38 @@ -4759,10 +4804,10 @@ class REXML::Text < ::REXML::Child # source://rexml//lib/rexml/text.rb#174 def empty?; end - # source://rexml//lib/rexml/text.rb#274 + # source://rexml//lib/rexml/text.rb#271 def indent_text(string, level = T.unsafe(nil), style = T.unsafe(nil), indentfirstline = T.unsafe(nil)); end - # source://rexml//lib/rexml/text.rb#228 + # source://rexml//lib/rexml/text.rb#225 def inspect; end # source://rexml//lib/rexml/text.rb#170 @@ -4795,7 +4840,7 @@ class REXML::Text < ::REXML::Child # u = Text.new( "sean russell", false, nil, true ) # u.to_s #-> "sean russell" # - # source://rexml//lib/rexml/text.rb#223 + # source://rexml//lib/rexml/text.rb#220 def to_s; end # Returns the string value of this text. This is the text without @@ -4812,7 +4857,7 @@ class REXML::Text < ::REXML::Child # u = Text.new( "sean russell", false, nil, true ) # u.value #-> "sean russell" # - # source://rexml//lib/rexml/text.rb#245 + # source://rexml//lib/rexml/text.rb#242 def value; end # Sets the contents of this text node. This expects the text to be @@ -4823,16 +4868,16 @@ class REXML::Text < ::REXML::Child # e[0].value = "bar" # bar # e[0].value = "" # <a> # - # source://rexml//lib/rexml/text.rb#257 + # source://rexml//lib/rexml/text.rb#254 def value=(val); end - # source://rexml//lib/rexml/text.rb#263 + # source://rexml//lib/rexml/text.rb#260 def wrap(string, width, addnewline = T.unsafe(nil)); end # == DEPRECATED # See REXML::Formatters # - # source://rexml//lib/rexml/text.rb#289 + # source://rexml//lib/rexml/text.rb#288 def write(writer, indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end # Writes out text, substituting special characters beforehand. @@ -4850,42 +4895,42 @@ class REXML::Text < ::REXML::Child # } # puts ascOut # - # source://rexml//lib/rexml/text.rb#321 + # source://rexml//lib/rexml/text.rb#318 def write_with_substitution(out, input); end # FIXME # This probably won't work properly # - # source://rexml//lib/rexml/text.rb#301 + # source://rexml//lib/rexml/text.rb#300 def xpath; end private - # source://rexml//lib/rexml/text.rb#334 + # source://rexml//lib/rexml/text.rb#331 def clear_cache; end class << self # check for illegal characters # # source://rexml//lib/rexml/text.rb#116 - def check(string, pattern, doctype); end + def check(string, pattern, doctype = T.unsafe(nil)); end - # source://rexml//lib/rexml/text.rb#404 + # source://rexml//lib/rexml/text.rb#401 def expand(ref, doctype, filter); end # Escapes all possible entities # - # source://rexml//lib/rexml/text.rb#366 + # source://rexml//lib/rexml/text.rb#363 def normalize(input, doctype = T.unsafe(nil), entity_filter = T.unsafe(nil)); end # Reads text, substituting entities # - # source://rexml//lib/rexml/text.rb#340 + # source://rexml//lib/rexml/text.rb#337 def read_with_substitution(input, illegal = T.unsafe(nil)); end # Unescapes all possible entities # - # source://rexml//lib/rexml/text.rb#390 + # source://rexml//lib/rexml/text.rb#387 def unnormalize(string, doctype = T.unsafe(nil), filter = T.unsafe(nil), illegal = T.unsafe(nil), entity_expansion_text_limit: T.unsafe(nil)); end end end @@ -5036,7 +5081,7 @@ class REXML::XPath # XPath.each( node, '/book/publisher/text()=$publisher', {}, {"publisher"=>"O'Reilly"}) \ # {|el| ... } # - # source://rexml//lib/rexml/xpath.rb#60 + # source://rexml//lib/rexml/xpath.rb#55 def each(element, path = T.unsafe(nil), namespaces = T.unsafe(nil), variables = T.unsafe(nil), options = T.unsafe(nil), &block); end # Finds and returns the first node that matches the supplied xpath. @@ -5062,31 +5107,31 @@ class REXML::XPath # Returns an array of nodes matching a given XPath. # - # source://rexml//lib/rexml/xpath.rb#72 + # source://rexml//lib/rexml/xpath.rb#62 def match(element, path = T.unsafe(nil), namespaces = T.unsafe(nil), variables = T.unsafe(nil), options = T.unsafe(nil)); end end end # @private # -# source://rexml//lib/rexml/xpath_parser.rb#963 +# source://rexml//lib/rexml/xpath_parser.rb#965 class REXML::XPathNode # @return [XPathNode] a new instance of XPathNode # - # source://rexml//lib/rexml/xpath_parser.rb#965 + # source://rexml//lib/rexml/xpath_parser.rb#967 def initialize(node, context = T.unsafe(nil)); end # Returns the value of attribute context. # - # source://rexml//lib/rexml/xpath_parser.rb#964 + # source://rexml//lib/rexml/xpath_parser.rb#966 def context; end - # source://rexml//lib/rexml/xpath_parser.rb#974 + # source://rexml//lib/rexml/xpath_parser.rb#976 def position; end # Returns the value of attribute raw_node. # - # source://rexml//lib/rexml/xpath_parser.rb#964 + # source://rexml//lib/rexml/xpath_parser.rb#966 def raw_node; end end @@ -5104,7 +5149,7 @@ class REXML::XPathParser # source://rexml//lib/rexml/xpath_parser.rb#60 def initialize(strict: T.unsafe(nil)); end - # source://rexml//lib/rexml/xpath_parser.rb#94 + # source://rexml//lib/rexml/xpath_parser.rb#107 def []=(variable_name, value); end # Performs a depth-first (document order) XPath search, and returns the @@ -5112,66 +5157,66 @@ class REXML::XPathParser # # FIXME: This method is incomplete! # - # source://rexml//lib/rexml/xpath_parser.rb#103 + # source://rexml//lib/rexml/xpath_parser.rb#116 def first(path_stack, node); end - # source://rexml//lib/rexml/xpath_parser.rb#84 - def get_first(path, nodeset); end + # source://rexml//lib/rexml/xpath_parser.rb#97 + def get_first(path, node); end - # source://rexml//lib/rexml/xpath_parser.rb#139 - def match(path_stack, nodeset); end + # source://rexml//lib/rexml/xpath_parser.rb#153 + def match(path_stack, node); end # source://rexml//lib/rexml/xpath_parser.rb#69 def namespaces=(namespaces = T.unsafe(nil)); end # source://rexml//lib/rexml/xpath_parser.rb#79 - def parse(path, nodeset); end + def parse(path, node); end - # source://rexml//lib/rexml/xpath_parser.rb#89 - def predicate(path, nodeset); end + # source://rexml//lib/rexml/xpath_parser.rb#102 + def predicate(path, node); end # source://rexml//lib/rexml/xpath_parser.rb#74 def variables=(vars = T.unsafe(nil)); end private - # source://rexml//lib/rexml/xpath_parser.rb#779 + # source://rexml//lib/rexml/xpath_parser.rb#781 def child(nodeset); end - # source://rexml//lib/rexml/xpath_parser.rb#920 + # source://rexml//lib/rexml/xpath_parser.rb#922 def compare(a, operator, b); end - # source://rexml//lib/rexml/xpath_parser.rb#682 + # source://rexml//lib/rexml/xpath_parser.rb#687 def descendant(nodeset, include_self); end - # source://rexml//lib/rexml/xpath_parser.rb#693 + # source://rexml//lib/rexml/xpath_parser.rb#698 def descendant_recursive(raw_node, new_nodeset, new_nodes, include_self); end - # source://rexml//lib/rexml/xpath_parser.rb#942 + # source://rexml//lib/rexml/xpath_parser.rb#944 def each_unnode(nodeset); end - # source://rexml//lib/rexml/xpath_parser.rb#641 + # source://rexml//lib/rexml/xpath_parser.rb#646 def enter(tag, *args); end - # source://rexml//lib/rexml/xpath_parser.rb#819 + # source://rexml//lib/rexml/xpath_parser.rb#821 def equality_relational_compare(set1, op, set2); end - # source://rexml//lib/rexml/xpath_parser.rb#591 + # source://rexml//lib/rexml/xpath_parser.rb#596 def evaluate_predicate(expression, nodesets); end # Expr takes a stack of path elements and a set of nodes (either a Parent # or an Array and returns an Array of matching nodes # - # source://rexml//lib/rexml/xpath_parser.rb#175 + # source://rexml//lib/rexml/xpath_parser.rb#186 def expr(path_stack, nodeset, context = T.unsafe(nil)); end - # source://rexml//lib/rexml/xpath_parser.rb#582 + # source://rexml//lib/rexml/xpath_parser.rb#587 def filter_nodeset(nodeset); end - # source://rexml//lib/rexml/xpath_parser.rb#749 + # source://rexml//lib/rexml/xpath_parser.rb#754 def following(node); end - # source://rexml//lib/rexml/xpath_parser.rb#760 + # source://rexml//lib/rexml/xpath_parser.rb#765 def following_node_of(node); end # Returns a String namespace for a node, given a prefix @@ -5180,22 +5225,22 @@ class REXML::XPathParser # 1. Use the supplied namespace mapping first. # 2. If no mapping was supplied, use the context node to look up the namespace # - # source://rexml//lib/rexml/xpath_parser.rb#163 + # source://rexml//lib/rexml/xpath_parser.rb#174 def get_namespace(node, prefix); end - # source://rexml//lib/rexml/xpath_parser.rb#646 + # source://rexml//lib/rexml/xpath_parser.rb#651 def leave(tag, *args); end - # source://rexml//lib/rexml/xpath_parser.rb#767 + # source://rexml//lib/rexml/xpath_parser.rb#771 def next_sibling_node(node); end - # source://rexml//lib/rexml/xpath_parser.rb#477 + # source://rexml//lib/rexml/xpath_parser.rb#488 def node_test(path_stack, nodesets, any_type: T.unsafe(nil)); end - # source://rexml//lib/rexml/xpath_parser.rb#806 + # source://rexml//lib/rexml/xpath_parser.rb#808 def norm(b); end - # source://rexml//lib/rexml/xpath_parser.rb#894 + # source://rexml//lib/rexml/xpath_parser.rb#896 def normalize_compare_values(a, operator, b); end # Builds a nodeset of all of the preceding nodes of the supplied node, @@ -5203,10 +5248,10 @@ class REXML::XPathParser # preceding:: includes every element in the document that precedes this node, # except for ancestors # - # source://rexml//lib/rexml/xpath_parser.rb#712 + # source://rexml//lib/rexml/xpath_parser.rb#717 def preceding(node); end - # source://rexml//lib/rexml/xpath_parser.rb#734 + # source://rexml//lib/rexml/xpath_parser.rb#739 def preceding_node_of(node); end # Reorders an array of nodes so that they are in document order @@ -5218,24 +5263,24 @@ class REXML::XPathParser # I wouldn't have to do this. Maybe add a document IDX for each node? # Problems with mutable documents. Or, rewrite everything. # - # source://rexml//lib/rexml/xpath_parser.rb#659 + # source://rexml//lib/rexml/xpath_parser.rb#664 def sort(array_of_nodes, order); end - # source://rexml//lib/rexml/xpath_parser.rb#441 + # source://rexml//lib/rexml/xpath_parser.rb#452 def step(path_stack, any_type: T.unsafe(nil), order: T.unsafe(nil)); end # @return [Boolean] # - # source://rexml//lib/rexml/xpath_parser.rb#154 + # source://rexml//lib/rexml/xpath_parser.rb#165 def strict?; end - # source://rexml//lib/rexml/xpath_parser.rb#634 + # source://rexml//lib/rexml/xpath_parser.rb#639 def trace(*args); end - # source://rexml//lib/rexml/xpath_parser.rb#954 + # source://rexml//lib/rexml/xpath_parser.rb#956 def unnode(nodeset); end - # source://rexml//lib/rexml/xpath_parser.rb#881 + # source://rexml//lib/rexml/xpath_parser.rb#883 def value_type(value); end end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/rouge@4.5.2.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/rouge@4.6.1.rbi similarity index 97% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/rouge@4.5.2.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/rouge@4.6.1.rbi index 280eea298e..816ce739f4 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/rouge@4.5.2.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/rouge@4.6.1.rbi @@ -215,7 +215,7 @@ end # Transforms a token stream into HTML output. # -# source://rouge//lib/rouge/formatters/html_legacy.rb#10 +# source://rouge//lib/rouge/formatters/html_legacy.rb#7 class Rouge::Formatters::HTMLLegacy < ::Rouge::Formatter # Initialize with options. # @@ -234,12 +234,12 @@ class Rouge::Formatters::HTMLLegacy < ::Rouge::Formatter # @param opts [Hash] a customizable set of options # @return [HTMLLegacy] a new instance of HTMLLegacy # - # source://rouge//lib/rouge/formatters/html_legacy.rb#27 + # source://rouge//lib/rouge/formatters/html_legacy.rb#24 def initialize(opts = T.unsafe(nil)); end # @yield the html output. # - # source://rouge//lib/rouge/formatters/html_legacy.rb#40 + # source://rouge//lib/rouge/formatters/html_legacy.rb#37 def stream(tokens, &b); end end @@ -837,33 +837,33 @@ class Rouge::Lexer # @param opts [Hash] a customizable set of options # @return [Lexer] a new instance of Lexer # - # source://rouge//lib/rouge/lexer.rb#323 + # source://rouge//lib/rouge/lexer.rb#325 def initialize(opts = T.unsafe(nil)); end - # source://rouge//lib/rouge/lexer.rb#338 + # source://rouge//lib/rouge/lexer.rb#340 def as_bool(val); end - # source://rouge//lib/rouge/lexer.rb#366 + # source://rouge//lib/rouge/lexer.rb#368 def as_lexer(val); end - # source://rouge//lib/rouge/lexer.rb#355 + # source://rouge//lib/rouge/lexer.rb#357 def as_list(val); end - # source://rouge//lib/rouge/lexer.rb#349 + # source://rouge//lib/rouge/lexer.rb#351 def as_string(val); end - # source://rouge//lib/rouge/lexer.rb#379 + # source://rouge//lib/rouge/lexer.rb#381 def as_token(val); end - # source://rouge//lib/rouge/lexer.rb#389 + # source://rouge//lib/rouge/lexer.rb#391 def bool_option(name, &default); end # Continue the lex from the the current state without resetting # - # source://rouge//lib/rouge/lexer.rb#474 + # source://rouge//lib/rouge/lexer.rb#476 def continue_lex(string, &b); end - # source://rouge//lib/rouge/lexer.rb#415 + # source://rouge//lib/rouge/lexer.rb#417 def hash_option(name, defaults, &val_cast); end # Given a string, yield [token, chunk] pairs. If no block is given, @@ -876,18 +876,18 @@ class Rouge::Lexer # @option opts # @param opts [Hash] a customizable set of options # - # source://rouge//lib/rouge/lexer.rb#451 + # source://rouge//lib/rouge/lexer.rb#453 def lex(string, opts = T.unsafe(nil), &b); end - # source://rouge//lib/rouge/lexer.rb#403 + # source://rouge//lib/rouge/lexer.rb#405 def lexer_option(name, &default); end - # source://rouge//lib/rouge/lexer.rb#407 + # source://rouge//lib/rouge/lexer.rb#409 def list_option(name, &default); end # -*- instance methods -*- # # - # source://rouge//lib/rouge/lexer.rb#313 + # source://rouge//lib/rouge/lexer.rb#315 def options; end # Called after each lex is finished. The default implementation @@ -895,7 +895,7 @@ class Rouge::Lexer # # @abstract # - # source://rouge//lib/rouge/lexer.rb#437 + # source://rouge//lib/rouge/lexer.rb#439 def reset!; end # Yield `[token, chunk]` pairs, given a prepared input stream. This @@ -904,24 +904,24 @@ class Rouge::Lexer # @abstract # @param stream [StringScanner] the stream # - # source://rouge//lib/rouge/lexer.rb#508 + # source://rouge//lib/rouge/lexer.rb#510 def stream_tokens(stream, &b); end - # source://rouge//lib/rouge/lexer.rb#399 + # source://rouge//lib/rouge/lexer.rb#401 def string_option(name, &default); end # delegated to {Lexer.tag} # - # source://rouge//lib/rouge/lexer.rb#497 + # source://rouge//lib/rouge/lexer.rb#499 def tag; end - # source://rouge//lib/rouge/lexer.rb#411 + # source://rouge//lib/rouge/lexer.rb#413 def token_option(name, &default); end # Returns a new lexer with the given options set. Useful for e.g. setting # debug flags post hoc, or providing global overrides for certain options # - # source://rouge//lib/rouge/lexer.rb#332 + # source://rouge//lib/rouge/lexer.rb#334 def with(opts = T.unsafe(nil)); end class << self @@ -935,18 +935,18 @@ class Rouge::Lexer # # Lexer.find('eruby') # => Erb # - # source://rouge//lib/rouge/lexer.rb#261 + # source://rouge//lib/rouge/lexer.rb#263 def aliases(*args); end # @return a list of all lexers. # - # source://rouge//lib/rouge/lexer.rb#141 + # source://rouge//lib/rouge/lexer.rb#143 def all; end # @private # @raise [EncodingError] # - # source://rouge//lib/rouge/lexer.rb#295 + # source://rouge//lib/rouge/lexer.rb#297 def assert_utf8!(str); end # In case #continue_lex is called statically, we simply @@ -959,23 +959,23 @@ class Rouge::Lexer # @return [Boolean] # - # source://rouge//lib/rouge/lexer.rb#215 + # source://rouge//lib/rouge/lexer.rb#217 def debug_enabled?; end # Specify or get a small demo string for this lexer # - # source://rouge//lib/rouge/lexer.rb#134 + # source://rouge//lib/rouge/lexer.rb#136 def demo(arg = T.unsafe(nil)); end # Specify or get the path name containing a small demo for # this lexer (can be overriden by {demo}). # - # source://rouge//lib/rouge/lexer.rb#127 + # source://rouge//lib/rouge/lexer.rb#129 def demo_file(arg = T.unsafe(nil)); end # Specify or get this lexer's description. # - # source://rouge//lib/rouge/lexer.rb#109 + # source://rouge//lib/rouge/lexer.rb#111 def desc(arg = T.unsafe(nil)); end # Return true if there is an in-text indication (such as a shebang @@ -986,7 +986,7 @@ class Rouge::Lexer # like {TextAnalyzer#shebang?} and {TextAnalyzer#doctype?} # @return [Boolean] # - # source://rouge//lib/rouge/lexer.rb#520 + # source://rouge//lib/rouge/lexer.rb#522 def detect?(text); end # Determine if a lexer has a method named +:detect?+ defined in its @@ -994,13 +994,13 @@ class Rouge::Lexer # # @return [Boolean] # - # source://rouge//lib/rouge/lexer.rb#221 + # source://rouge//lib/rouge/lexer.rb#223 def detectable?; end - # source://rouge//lib/rouge/lexer.rb#211 + # source://rouge//lib/rouge/lexer.rb#213 def disable_debug!; end - # source://rouge//lib/rouge/lexer.rb#207 + # source://rouge//lib/rouge/lexer.rb#209 def enable_debug!; end # Specify a list of filename globs associated with this lexer. @@ -1017,7 +1017,7 @@ class Rouge::Lexer # filenames '*.rb', '*.ruby', 'Gemfile', 'Rakefile' # end # - # source://rouge//lib/rouge/lexer.rb#280 + # source://rouge//lib/rouge/lexer.rb#282 def filenames(*fnames); end # Given a name in string, return the correct lexer class. @@ -1045,7 +1045,7 @@ class Rouge::Lexer # This is used in the Redcarpet plugin as well as Rouge's own # markdown lexer for highlighting internal code blocks. # - # source://rouge//lib/rouge/lexer.rb#94 + # source://rouge//lib/rouge/lexer.rb#96 def find_fancy(str, code = T.unsafe(nil), default_options = T.unsafe(nil)); end # Guess which lexer to use based on a hash of info. @@ -1060,16 +1060,16 @@ class Rouge::Lexer # @see Lexer.detect? # @see Lexer.guesses # - # source://rouge//lib/rouge/lexer.rb#182 + # source://rouge//lib/rouge/lexer.rb#184 def guess(info = T.unsafe(nil), &fallback); end - # source://rouge//lib/rouge/lexer.rb#199 + # source://rouge//lib/rouge/lexer.rb#201 def guess_by_filename(fname); end - # source://rouge//lib/rouge/lexer.rb#195 + # source://rouge//lib/rouge/lexer.rb#197 def guess_by_mimetype(mt); end - # source://rouge//lib/rouge/lexer.rb#203 + # source://rouge//lib/rouge/lexer.rb#205 def guess_by_source(source); end # Guess which lexer to use based on a hash of info. @@ -1078,7 +1078,7 @@ class Rouge::Lexer # an error. It will return a (possibly empty) list of potential lexers # to use. # - # source://rouge//lib/rouge/lexer.rb#150 + # source://rouge//lib/rouge/lexer.rb#152 def guesses(info = T.unsafe(nil)); end # Lexes `stream` with the given options. The lex is delegated to a @@ -1105,13 +1105,13 @@ class Rouge::Lexer # mimetypes 'text/html', 'application/xhtml+xml' # end # - # source://rouge//lib/rouge/lexer.rb#290 + # source://rouge//lib/rouge/lexer.rb#292 def mimetypes(*mts); end - # source://rouge//lib/rouge/lexer.rb#121 + # source://rouge//lib/rouge/lexer.rb#123 def option(name, desc); end - # source://rouge//lib/rouge/lexer.rb#117 + # source://rouge//lib/rouge/lexer.rb#119 def option_docs; end # Used to specify or get the canonical name of this lexer class. @@ -1125,32 +1125,32 @@ class Rouge::Lexer # # Lexer.find('foo') # => MyLexer # - # source://rouge//lib/rouge/lexer.rb#245 + # source://rouge//lib/rouge/lexer.rb#247 def tag(t = T.unsafe(nil)); end # Specify or get this lexer's title. Meant to be human-readable. # - # source://rouge//lib/rouge/lexer.rb#101 + # source://rouge//lib/rouge/lexer.rb#103 def title(t = T.unsafe(nil)); end protected # @private # - # source://rouge//lib/rouge/lexer.rb#228 + # source://rouge//lib/rouge/lexer.rb#230 def register(name, lexer); end private - # source://rouge//lib/rouge/lexer.rb#306 + # source://rouge//lib/rouge/lexer.rb#308 def registry; end end end -# source://rouge//lib/rouge/lexer.rb#525 +# source://rouge//lib/rouge/lexer.rb#527 module Rouge::Lexers class << self - # source://rouge//lib/rouge/lexer.rb#529 + # source://rouge//lib/rouge/lexer.rb#531 def load_lexer(relpath); end end end @@ -1363,7 +1363,7 @@ class Rouge::Lexers::Awk < ::Rouge::RegexLexer end end -# source://rouge//lib/rouge/lexer.rb#526 +# source://rouge//lib/rouge/lexer.rb#528 Rouge::Lexers::BASE_DIR = T.let(T.unsafe(nil), String) # source://rouge//lib/rouge/lexers/bbcbasic.rb#6 @@ -1431,6 +1431,20 @@ end # source://rouge//lib/rouge/lexers/bibtex.rb#9 class Rouge::Lexers::BibTeX < ::Rouge::RegexLexer; end +# source://rouge//lib/rouge/lexers/bicep.rb#3 +class Rouge::Lexers::Bicep < ::Rouge::RegexLexer + class << self + # source://rouge//lib/rouge/lexers/bicep.rb#17 + def datatypes; end + + # source://rouge//lib/rouge/lexers/bicep.rb#21 + def functions; end + + # source://rouge//lib/rouge/lexers/bicep.rb#10 + def keywords; end + end +end + # source://rouge//lib/rouge/lexers/brainfuck.rb#6 class Rouge::Lexers::Brainfuck < ::Rouge::RegexLexer; end @@ -1564,7 +1578,22 @@ end class Rouge::Lexers::CSVS < ::Rouge::RegexLexer; end # source://rouge//lib/rouge/lexers/csharp.rb#6 -class Rouge::Lexers::CSharp < ::Rouge::RegexLexer; end +class Rouge::Lexers::CSharp < ::Rouge::RegexLexer + class << self + # source://rouge//lib/rouge/lexers/csharp.rb#43 + def cpp_keywords; end + + # Reserved Identifiers + # Contextual Keywords + # LINQ Query Expressions + # + # source://rouge//lib/rouge/lexers/csharp.rb#20 + def keywords; end + + # source://rouge//lib/rouge/lexers/csharp.rb#36 + def keywords_type; end + end +end # source://rouge//lib/rouge/lexers/cuda.rb#7 class Rouge::Lexers::CUDA < ::Rouge::Lexers::Cpp @@ -3637,14 +3666,14 @@ end # source://rouge//lib/rouge/lexers/python.rb#6 class Rouge::Lexers::Python < ::Rouge::RegexLexer - # source://rouge//lib/rouge/lexers/python.rb#73 + # source://rouge//lib/rouge/lexers/python.rb#76 def current_string; end class << self # source://rouge//lib/rouge/lexers/python.rb#28 def builtins; end - # source://rouge//lib/rouge/lexers/python.rb#42 + # source://rouge//lib/rouge/lexers/python.rb#44 def builtins_pseudo; end # @return [Boolean] @@ -3652,7 +3681,7 @@ class Rouge::Lexers::Python < ::Rouge::RegexLexer # source://rouge//lib/rouge/lexers/python.rb#15 def detect?(text); end - # source://rouge//lib/rouge/lexers/python.rb#46 + # source://rouge//lib/rouge/lexers/python.rb#48 def exceptions; end # source://rouge//lib/rouge/lexers/python.rb#19 @@ -3660,22 +3689,22 @@ class Rouge::Lexers::Python < ::Rouge::RegexLexer end end -# source://rouge//lib/rouge/lexers/python.rb#247 +# source://rouge//lib/rouge/lexers/python.rb#274 class Rouge::Lexers::Python::StringRegister < ::Array # @return [Boolean] # - # source://rouge//lib/rouge/lexers/python.rb#248 + # source://rouge//lib/rouge/lexers/python.rb#275 def delim?(delim); end - # source://rouge//lib/rouge/lexers/python.rb#252 + # source://rouge//lib/rouge/lexers/python.rb#279 def register(type: T.unsafe(nil), delim: T.unsafe(nil)); end - # source://rouge//lib/rouge/lexers/python.rb#256 + # source://rouge//lib/rouge/lexers/python.rb#283 def remove; end # @return [Boolean] # - # source://rouge//lib/rouge/lexers/python.rb#260 + # source://rouge//lib/rouge/lexers/python.rb#287 def type?(type); end end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-ast@1.45.1.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-ast@1.47.1.rbi similarity index 90% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-ast@1.45.1.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-ast@1.47.1.rbi index 0859ae2096..f8a5504024 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-ast@1.45.1.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-ast@1.47.1.rbi @@ -235,7 +235,7 @@ class RuboCop::AST::AsgnNode < ::RuboCop::AST::Node end # Common functionality for primitive literal nodes: `sym`, `str`, -# `int`, `float`, `rational`... +# `int`, `float`, `rational`, `complex`... # # source://rubocop-ast//lib/rubocop/ast/node/mixin/basic_literal_node.rb#7 module RuboCop::AST::BasicLiteralNode @@ -452,7 +452,7 @@ end # parser = Parser::Ruby25.new(builder) # root_node = parser.parse(buffer) # -# source://rubocop-ast//lib/rubocop/ast/builder.rb#128 +# source://rubocop-ast//lib/rubocop/ast/builder.rb#129 class RuboCop::AST::Builder < ::Parser::Builders::Default include ::RuboCop::AST::BuilderExtensions end @@ -468,7 +468,7 @@ module RuboCop::AST::BuilderExtensions # @api private # @return [Node] the generated node # - # source://rubocop-ast//lib/rubocop/ast/builder.rb#100 + # source://rubocop-ast//lib/rubocop/ast/builder.rb#101 def n(type, children, source_map); end # Overwrite the base method to allow strings with invalid encoding @@ -476,14 +476,14 @@ module RuboCop::AST::BuilderExtensions # # @api private # - # source://rubocop-ast//lib/rubocop/ast/builder.rb#106 + # source://rubocop-ast//lib/rubocop/ast/builder.rb#107 def string_value(token); end private # @api private # - # source://rubocop-ast//lib/rubocop/ast/builder.rb#112 + # source://rubocop-ast//lib/rubocop/ast/builder.rb#113 def node_klass(type); end class << self @@ -1085,6 +1085,16 @@ end # source://rubocop-ast//lib/rubocop/ast/node/mixin/collection_node.rb#9 RuboCop::AST::CollectionNode::ARRAY_METHODS = T.let(T.unsafe(nil), Array) +# A node extension for `complex` nodes. This will be used in place of a plain +# node when the builder constructs the AST, making its methods available to +# all `complex` nodes within RuboCop. +# +# source://rubocop-ast//lib/rubocop/ast/node/complex_node.rb#8 +class RuboCop::AST::ComplexNode < ::RuboCop::AST::Node + include ::RuboCop::AST::BasicLiteralNode + include ::RuboCop::AST::NumericNode +end + # Common functionality for nodes that have conditions: # `if`, `while`, `until`, `case`. # This currently doesn't include `when` nodes, because they have multiple @@ -2738,19 +2748,19 @@ class RuboCop::AST::Node < ::Parser::AST::Node # @return [Node] a new instance of Node # @see https://www.rubydoc.info/gems/ast/AST/Node:initialize # - # source://rubocop-ast//lib/rubocop/ast/node.rb#148 + # source://rubocop-ast//lib/rubocop/ast/node.rb#155 def initialize(type, children = T.unsafe(nil), properties = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def __ENCODING___type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def __FILE___type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def __LINE___type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def alias_type?; end # Returns an array of ancestor nodes. @@ -2758,188 +2768,198 @@ class RuboCop::AST::Node < ::Parser::AST::Node # # @return [Array] an array of ancestor nodes # - # source://rubocop-ast//lib/rubocop/ast/node.rb#313 + # source://rubocop-ast//lib/rubocop/ast/node.rb#320 def ancestors; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def and_asgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def and_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#542 + # source://rubocop-ast//lib/rubocop/ast/node.rb#549 def any_block_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#522 + # source://rubocop-ast//lib/rubocop/ast/node.rb#529 def any_def_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#546 + # source://rubocop-ast//lib/rubocop/ast/node.rb#553 def any_match_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # @return [Boolean] + # + # source://rubocop-ast//lib/rubocop/ast/node.rb#557 + def any_str_type?; end + + # @return [Boolean] + # + # source://rubocop-ast//lib/rubocop/ast/node.rb#561 + def any_sym_type?; end + + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def arg_expr_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def arg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def args_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#518 + # source://rubocop-ast//lib/rubocop/ast/node.rb#525 def argument?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#526 + # source://rubocop-ast//lib/rubocop/ast/node.rb#533 def argument_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def array_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def array_pattern_with_tail_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def array_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#470 + # source://rubocop-ast//lib/rubocop/ast/node.rb#477 def assignment?; end # Some cops treat the shovel operator as a kind of assignment. # - # source://rubocop-ast//lib/rubocop/ast/node.rb#420 + # source://rubocop-ast//lib/rubocop/ast/node.rb#427 def assignment_or_similar?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def back_ref_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#474 + # source://rubocop-ast//lib/rubocop/ast/node.rb#481 def basic_conditional?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#428 + # source://rubocop-ast//lib/rubocop/ast/node.rb#435 def basic_literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def begin_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def block_pass_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def block_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def blockarg_expr_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def blockarg_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#530 + # source://rubocop-ast//lib/rubocop/ast/node.rb#537 def boolean_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def break_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#510 + # source://rubocop-ast//lib/rubocop/ast/node.rb#517 def call_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def case_match_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def case_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def casgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def cbase_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#514 + # source://rubocop-ast//lib/rubocop/ast/node.rb#521 def chained?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#594 + # source://rubocop-ast//lib/rubocop/ast/node.rb#609 def class_constructor?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#612 + # source://rubocop-ast//lib/rubocop/ast/node.rb#627 def class_definition?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def class_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#210 + # source://rubocop-ast//lib/rubocop/ast/node.rb#217 def complete!; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#215 + # source://rubocop-ast//lib/rubocop/ast/node.rb#222 def complete?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def complex_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#478 + # source://rubocop-ast//lib/rubocop/ast/node.rb#485 def conditional?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#359 + # source://rubocop-ast//lib/rubocop/ast/node.rb#366 def const_name; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def const_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def const_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def csend_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def cvar_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def cvasgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def def_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#379 + # source://rubocop-ast//lib/rubocop/ast/node.rb#386 def defined_module; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#384 + # source://rubocop-ast//lib/rubocop/ast/node.rb#391 def defined_module_name; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def defined_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def defs_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def dstr_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def dsym_type?; end # Calls the given block for each ancestor node from parent to root. @@ -2952,169 +2972,169 @@ class RuboCop::AST::Node < ::Parser::AST::Node # @return [Enumerator] if no block is given # @yieldparam node [Node] each ancestor node # - # source://rubocop-ast//lib/rubocop/ast/node.rb#301 + # source://rubocop-ast//lib/rubocop/ast/node.rb#308 def each_ancestor(*types, &block); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def eflipflop_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def empty_else_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#414 + # source://rubocop-ast//lib/rubocop/ast/node.rb#421 def empty_source?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def ensure_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#462 + # source://rubocop-ast//lib/rubocop/ast/node.rb#469 def equals_asgn?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def erange_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def false_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#436 + # source://rubocop-ast//lib/rubocop/ast/node.rb#443 def falsey_literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def find_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#327 + # source://rubocop-ast//lib/rubocop/ast/node.rb#334 def first_line; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def float_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def for_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def forward_arg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def forward_args_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def forwarded_args_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def forwarded_kwrestarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def forwarded_restarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#591 + # source://rubocop-ast//lib/rubocop/ast/node.rb#606 def global_const?(param0 = T.unsafe(nil), param1); end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#550 + # source://rubocop-ast//lib/rubocop/ast/node.rb#565 def guard_clause?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def gvar_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def gvasgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def hash_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def hash_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def ident_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def if_guard_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def if_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def iflipflop_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#444 + # source://rubocop-ast//lib/rubocop/ast/node.rb#451 def immutable_literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def in_match_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def in_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def index_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def indexasgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def int_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def irange_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def itarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def itblock_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def ivar_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def ivasgn_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#491 + # source://rubocop-ast//lib/rubocop/ast/node.rb#498 def keyword?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwargs_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwbegin_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwnilarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwoptarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwrestarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwsplat_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#585 + # source://rubocop-ast//lib/rubocop/ast/node.rb#600 def lambda?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#588 + # source://rubocop-ast//lib/rubocop/ast/node.rb#603 def lambda_or_proc?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def lambda_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#331 + # source://rubocop-ast//lib/rubocop/ast/node.rb#338 def last_line; end # Use is discouraged, this is a potentially slow method and can lead @@ -3122,7 +3142,7 @@ class RuboCop::AST::Node < ::Parser::AST::Node # # @return [Node, nil] the left (aka previous) sibling # - # source://rubocop-ast//lib/rubocop/ast/node.rb#253 + # source://rubocop-ast//lib/rubocop/ast/node.rb#260 def left_sibling; end # Use is discouraged, this is a potentially slow method and can lead @@ -3130,22 +3150,22 @@ class RuboCop::AST::Node < ::Parser::AST::Node # # @return [Array] the left (aka previous) siblings # - # source://rubocop-ast//lib/rubocop/ast/node.rb#263 + # source://rubocop-ast//lib/rubocop/ast/node.rb#270 def left_siblings; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#335 + # source://rubocop-ast//lib/rubocop/ast/node.rb#342 def line_count; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#424 + # source://rubocop-ast//lib/rubocop/ast/node.rb#431 def literal?; end # Shortcut to safely check if a location is present # # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#558 + # source://rubocop-ast//lib/rubocop/ast/node.rb#573 def loc?(which_loc); end # Shortcut to safely test a particular location, even if @@ -3153,86 +3173,86 @@ class RuboCop::AST::Node < ::Parser::AST::Node # # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#566 + # source://rubocop-ast//lib/rubocop/ast/node.rb#581 def loc_is?(which_loc, str); end # NOTE: `loop { }` is a normal method call and thus not a loop keyword. # # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#487 + # source://rubocop-ast//lib/rubocop/ast/node.rb#494 def loop_keyword?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def lvar_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def lvasgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def masgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_alt_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_as_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_current_line_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#573 + # source://rubocop-ast//lib/rubocop/ast/node.rb#588 def match_guard_clause?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_nil_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_pattern_p_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_rest_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_var_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_with_lvasgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_with_trailing_comma_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def mlhs_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#619 + # source://rubocop-ast//lib/rubocop/ast/node.rb#634 def module_definition?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def module_type?; end # Predicates # # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#406 + # source://rubocop-ast//lib/rubocop/ast/node.rb#413 def multiline?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#440 + # source://rubocop-ast//lib/rubocop/ast/node.rb#447 def mutable_literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#750 + # source://rubocop-ast//lib/rubocop/ast/node.rb#765 def new_class_or_module_block?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def next_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def nil_type?; end # Common destructuring method. This can be used to normalize @@ -3245,95 +3265,95 @@ class RuboCop::AST::Node < ::Parser::AST::Node # source://ast/2.4.3/lib/ast/node.rb#56 def node_parts; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#341 + # source://rubocop-ast//lib/rubocop/ast/node.rb#348 def nonempty_line_count; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def not_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def nth_ref_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def numargs_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def numblock_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#534 + # source://rubocop-ast//lib/rubocop/ast/node.rb#541 def numeric_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def objc_kwarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def objc_restarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def objc_varargs_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def op_asgn_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#502 + # source://rubocop-ast//lib/rubocop/ast/node.rb#509 def operator_keyword?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def optarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def or_asgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def or_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def pair_type?; end # Returns the parent node, or `nil` if the receiver is a root node. # # @return [Node, nil] the parent node or `nil` # - # source://rubocop-ast//lib/rubocop/ast/node.rb#192 + # source://rubocop-ast//lib/rubocop/ast/node.rb#199 def parent; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#201 + # source://rubocop-ast//lib/rubocop/ast/node.rb#208 def parent?; end # Searching the AST # - # source://rubocop-ast//lib/rubocop/ast/node.rb#390 + # source://rubocop-ast//lib/rubocop/ast/node.rb#397 def parent_module_name; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#506 + # source://rubocop-ast//lib/rubocop/ast/node.rb#513 def parenthesized_call?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def pin_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#482 + # source://rubocop-ast//lib/rubocop/ast/node.rb#489 def post_condition_loop?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def postexe_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def preexe_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#578 + # source://rubocop-ast//lib/rubocop/ast/node.rb#593 def proc?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def procarg0_type?; end # Some expressions are evaluated for their value, some for their side @@ -3346,60 +3366,60 @@ class RuboCop::AST::Node < ::Parser::AST::Node # # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#662 + # source://rubocop-ast//lib/rubocop/ast/node.rb#677 def pure?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#538 + # source://rubocop-ast//lib/rubocop/ast/node.rb#545 def range_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def rational_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#352 + # source://rubocop-ast//lib/rubocop/ast/node.rb#359 def receiver(param0 = T.unsafe(nil)); end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#132 + # source://rubocop-ast//lib/rubocop/ast/node.rb#139 def recursive_basic_literal?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#132 + # source://rubocop-ast//lib/rubocop/ast/node.rb#139 def recursive_literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def redo_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#458 + # source://rubocop-ast//lib/rubocop/ast/node.rb#465 def reference?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def regexp_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def regopt_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def resbody_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def rescue_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def restarg_expr_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def restarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def retry_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def return_type?; end # Use is discouraged, this is a potentially slow method and can lead @@ -3407,7 +3427,7 @@ class RuboCop::AST::Node < ::Parser::AST::Node # # @return [Node, nil] the right (aka next) sibling # - # source://rubocop-ast//lib/rubocop/ast/node.rb#244 + # source://rubocop-ast//lib/rubocop/ast/node.rb#251 def right_sibling; end # Use is discouraged, this is a potentially slow method and can lead @@ -3415,18 +3435,18 @@ class RuboCop::AST::Node < ::Parser::AST::Node # # @return [Array] the right (aka next) siblings # - # source://rubocop-ast//lib/rubocop/ast/node.rb#272 + # source://rubocop-ast//lib/rubocop/ast/node.rb#279 def right_siblings; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#206 + # source://rubocop-ast//lib/rubocop/ast/node.rb#213 def root?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def sclass_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def self_type?; end # Most nodes are of 'send' type, so this method is defined @@ -3434,15 +3454,15 @@ class RuboCop::AST::Node < ::Parser::AST::Node # # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#185 + # source://rubocop-ast//lib/rubocop/ast/node.rb#192 def send_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def shadowarg_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#466 + # source://rubocop-ast//lib/rubocop/ast/node.rb#473 def shorthand_asgn?; end # Returns the index of the receiver node in its siblings. (Sibling index @@ -3451,58 +3471,58 @@ class RuboCop::AST::Node < ::Parser::AST::Node # # @return [Integer, nil] the index of the receiver node in its siblings # - # source://rubocop-ast//lib/rubocop/ast/node.rb#237 + # source://rubocop-ast//lib/rubocop/ast/node.rb#244 def sibling_index; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#410 + # source://rubocop-ast//lib/rubocop/ast/node.rb#417 def single_line?; end # NOTE: Some rare nodes may have no source, like `s(:args)` in `foo {}` # # @return [String, nil] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#319 + # source://rubocop-ast//lib/rubocop/ast/node.rb#326 def source; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#345 + # source://rubocop-ast//lib/rubocop/ast/node.rb#352 def source_length; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#323 + # source://rubocop-ast//lib/rubocop/ast/node.rb#330 def source_range; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#498 + # source://rubocop-ast//lib/rubocop/ast/node.rb#505 def special_keyword?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def splat_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#357 + # source://rubocop-ast//lib/rubocop/ast/node.rb#364 def str_content(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def str_type?; end # @deprecated Use `:class_constructor?` # - # source://rubocop-ast//lib/rubocop/ast/node.rb#607 + # source://rubocop-ast//lib/rubocop/ast/node.rb#622 def struct_constructor?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def super_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def sym_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def true_type?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#432 + # source://rubocop-ast//lib/rubocop/ast/node.rb#439 def truthy_literal?; end # Determine if the node is one of several node types in a single query @@ -3511,19 +3531,19 @@ class RuboCop::AST::Node < ::Parser::AST::Node # # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#167 + # source://rubocop-ast//lib/rubocop/ast/node.rb#174 def type?(*types); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def undef_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def unless_guard_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def until_post_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def until_type?; end # Override `AST::Node#updated` so that `AST::Processor` does not try to @@ -3532,7 +3552,7 @@ class RuboCop::AST::Node < ::Parser::AST::Node # identical subtrees. Rather, the entire AST must be copied any time any # part of it is changed. # - # source://rubocop-ast//lib/rubocop/ast/node.rb#226 + # source://rubocop-ast//lib/rubocop/ast/node.rb#233 def updated(type = T.unsafe(nil), children = T.unsafe(nil), properties = T.unsafe(nil)); end # Some expressions are evaluated for their value, some for their side @@ -3545,78 +3565,78 @@ class RuboCop::AST::Node < ::Parser::AST::Node # # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#632 + # source://rubocop-ast//lib/rubocop/ast/node.rb#647 def value_used?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#454 + # source://rubocop-ast//lib/rubocop/ast/node.rb#461 def variable?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def when_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def while_post_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def while_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def xstr_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def yield_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def zsuper_type?; end protected - # source://rubocop-ast//lib/rubocop/ast/node.rb#196 + # source://rubocop-ast//lib/rubocop/ast/node.rb#203 def parent=(node); end private # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#689 + # source://rubocop-ast//lib/rubocop/ast/node.rb#704 def begin_value_used?; end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#700 + # source://rubocop-ast//lib/rubocop/ast/node.rb#715 def case_if_value_used?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#370 + # source://rubocop-ast//lib/rubocop/ast/node.rb#377 def defined_module0(param0 = T.unsafe(nil)); end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#694 + # source://rubocop-ast//lib/rubocop/ast/node.rb#709 def for_value_used?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#736 + # source://rubocop-ast//lib/rubocop/ast/node.rb#751 def parent_module_name_for_block(ancestor); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#724 + # source://rubocop-ast//lib/rubocop/ast/node.rb#739 def parent_module_name_for_sclass(sclass_node); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#711 + # source://rubocop-ast//lib/rubocop/ast/node.rb#726 def parent_module_name_part(node); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#680 + # source://rubocop-ast//lib/rubocop/ast/node.rb#695 def visit_ancestors(types); end # @return [Boolean] # - # source://rubocop-ast//lib/rubocop/ast/node.rb#706 + # source://rubocop-ast//lib/rubocop/ast/node.rb#721 def while_until_value_used?; end class << self private - # source://rubocop-ast//lib/rubocop/ast/node.rb#127 + # source://rubocop-ast//lib/rubocop/ast/node.rb#134 def def_recursive_literal_predicate(kind); end end end @@ -3766,47 +3786,47 @@ class RuboCop::AST::NodePattern # @return [NodePattern] a new instance of NodePattern # - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#77 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#78 def initialize(str, compiler: T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#90 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#91 def ==(other); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#107 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#108 def as_json(_options = T.unsafe(nil)); end # Returns the value of attribute ast. # - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#73 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#74 def ast; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def captures(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#111 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#112 def encode_with(coder); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#90 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#91 def eql?(other); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#119 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#120 def freeze; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#115 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#116 def init_with(coder); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#103 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#104 def marshal_dump; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#99 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#100 def marshal_load(pattern); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#85 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#86 def match(*args, **rest, &block); end # Returns the value of attribute match_code. # - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#73 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#74 def match_code; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -3814,13 +3834,13 @@ class RuboCop::AST::NodePattern # Returns the value of attribute pattern. # - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#73 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#74 def pattern; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def positional_parameters(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#95 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#96 def to_s; end class << self @@ -3828,7 +3848,7 @@ class RuboCop::AST::NodePattern # # @yield [element] # - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#59 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#60 def descend(element, &block); end end end @@ -3927,7 +3947,7 @@ class RuboCop::AST::NodePattern::Compiler # @return [Compiler] a new instance of Compiler # - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#15 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#16 def initialize; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -3935,65 +3955,65 @@ class RuboCop::AST::NodePattern::Compiler # Returns the value of attribute binding. # - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#13 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#14 def binding; end # Returns the value of attribute captures. # - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#13 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#14 def captures; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#42 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#43 def compile_as_atom(node); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#46 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#47 def compile_as_node_pattern(node, **options); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#50 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#51 def compile_sequence(sequence, var:); end # Enumerates `enum` while keeping track of state across # union branches (captures and unification). # - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#38 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#39 def each_union(enum, &block); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#74 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#75 def freeze; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#31 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#32 def named_parameter(name); end # Returns the value of attribute named_parameters. # - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#13 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#14 def named_parameters; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#70 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#71 def next_capture; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#54 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#55 def parser; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#26 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#27 def positional_parameter(number); end # Returns the value of attribute positional_parameters. # - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#13 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#14 def positional_parameters; end # Utilities # - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#60 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#61 def with_temp_variables(*names, &block); end private - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#81 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#82 def enforce_same_captures(enum); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#96 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#97 def new_capture; end end @@ -4612,7 +4632,7 @@ class RuboCop::AST::NodePattern::Compiler::Subcompiler end end -# source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#53 +# source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#54 class RuboCop::AST::NodePattern::Invalid < ::StandardError; end # Lexer class for `NodePattern` @@ -5392,6 +5412,9 @@ RuboCop::AST::NodePattern::Sets::SET_ALL_ANY_CLASS_OF_ETC = T.let(T.unsafe(nil), # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_ANY_EMPTY_NONE_ETC = T.let(T.unsafe(nil), Set) +# source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 +RuboCop::AST::NodePattern::Sets::SET_ANY_NONE = T.let(T.unsafe(nil), Set) + # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_ARRAY_HASH = T.let(T.unsafe(nil), Set) @@ -5452,6 +5475,9 @@ RuboCop::AST::NodePattern::Sets::SET_ESCAPE_ENCODE_UNESCAPE_DECODE = T.let(T.uns # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_EXIST_EXISTS = T.let(T.unsafe(nil), Set) +# source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 +RuboCop::AST::NodePattern::Sets::SET_EXTEND_INCLUDE = T.let(T.unsafe(nil), Set) + # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_FILETEST_FILE_DIR_SHELL = T.let(T.unsafe(nil), Set) @@ -5635,12 +5661,6 @@ RuboCop::AST::NodePattern::Sets::SET_SPAWN_SYSTEM = T.let(T.unsafe(nil), Set) # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_SPRINTF_FORMAT = T.let(T.unsafe(nil), Set) -# source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 -RuboCop::AST::NodePattern::Sets::SET_START_WITH_END_WITH = T.let(T.unsafe(nil), Set) - -# source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 -RuboCop::AST::NodePattern::Sets::SET_START_WITH_STARTS_WITH_END_WITH_ENDS_WITH = T.let(T.unsafe(nil), Set) - # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_STRUCT_CLASS = T.let(T.unsafe(nil), Set) @@ -5740,10 +5760,10 @@ RuboCop::AST::NodePattern::Sets::SET____ETC_4 = T.let(T.unsafe(nil), Set) # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_____2 = T.let(T.unsafe(nil), Set) -# source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#55 +# source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#56 RuboCop::AST::NodePattern::VAR = T.let(T.unsafe(nil), String) -# Common functionality for primitive numeric nodes: `int`, `float`, `rational`... +# Common functionality for primitive numeric nodes: `int`, `float`, `rational`, `complex`... # # source://rubocop-ast//lib/rubocop/ast/node/mixin/numeric_node.rb#6 module RuboCop::AST::NumericNode @@ -5983,20 +6003,20 @@ end # Implements `arguments` as `children[first_argument_index..-1]` # and optimizes other calls # -# source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#83 +# source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#84 module RuboCop::AST::ParameterizedNode::RestArguments include ::RuboCop::AST::ParameterizedNode # @return [Array] arguments, if any # - # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#89 + # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#90 def arguments; end # Checks whether this node has any arguments. # # @return [Boolean] whether this node has any arguments # - # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#119 + # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#120 def arguments?; end # A shorthand for getting the first argument of the node. @@ -6005,7 +6025,7 @@ module RuboCop::AST::ParameterizedNode::RestArguments # @return [Node, nil] the first argument of the node, # or `nil` if there are no arguments # - # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#103 + # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#104 def first_argument; end # A shorthand for getting the last argument of the node. @@ -6014,11 +6034,11 @@ module RuboCop::AST::ParameterizedNode::RestArguments # @return [Node, nil] the last argument of the node, # or `nil` if there are no arguments # - # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#112 + # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#113 def last_argument; end end -# source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#86 +# source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#87 RuboCop::AST::ParameterizedNode::RestArguments::EMPTY_ARGUMENTS = T.let(T.unsafe(nil), Array) # A specialized `ParameterizedNode` for node that have a single child @@ -6031,7 +6051,7 @@ module RuboCop::AST::ParameterizedNode::WrappedArguments # @return [Array] The arguments of the node. # - # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#69 + # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#70 def arguments; end end @@ -6870,397 +6890,397 @@ RuboCop::AST::Token::LEFT_PAREN_TYPES = T.let(T.unsafe(nil), Array) module RuboCop::AST::Traversal extend ::RuboCop::AST::Traversal::CallbackCompiler - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#183 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#184 def on_(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on___ENCODING__(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on___FILE__(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on___LINE__(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_alias(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_and(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_and_asgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_arg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_arg_expr(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_args(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_array(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_array_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_array_pattern_with_tail(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_back_ref(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_begin(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#160 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#161 def on_block(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#139 def on_block_pass(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_blockarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_break(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_case(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_case_match(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#155 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#156 def on_casgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_cbase(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#156 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#157 def on_class(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_complex(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#154 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#155 def on_const(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_const_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#165 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#166 def on_csend(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_cvar(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#140 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#141 def on_cvasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#157 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#158 def on_def(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_defined?(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#163 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#164 def on_defs(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_dstr(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_dsym(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_eflipflop(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_empty_else(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_ensure(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_erange(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_false(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_find_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_float(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_for(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_forward_arg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_forward_args(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_forwarded_args(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_forwarded_kwrestarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_forwarded_restarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_gvar(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#140 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#141 def on_gvasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_hash(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_hash_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#159 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#160 def on_if(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_if_guard(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_iflipflop(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_in_match(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_in_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_index(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_indexasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_int(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_irange(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#162 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#163 def on_itblock(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_ivar(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#140 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#141 def on_ivasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_kwarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_kwargs(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_kwbegin(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_kwnilarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#141 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#142 def on_kwoptarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#134 def on_kwrestarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#134 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#135 def on_kwsplat(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_lambda(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_lvar(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#140 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#141 def on_lvasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_masgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_match_alt(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_match_as(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_match_current_line(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_match_nil_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_match_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_match_pattern_p(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#134 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#135 def on_match_rest(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_match_var(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_match_with_lvasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_match_with_trailing_comma(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_mlhs(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#142 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#143 def on_module(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_mrasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_next(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_nil(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_not(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_nth_ref(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#161 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#162 def on_numblock(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#158 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#159 def on_op_asgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#141 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#142 def on_optarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_or(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_or_asgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_pair(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_pin(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#139 def on_postexe(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#139 def on_preexe(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_procarg0(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_rasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_rational(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_redo(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_regexp(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#144 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 def on_regopt(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_resbody(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_rescue(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#134 def on_restarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_retry(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_return(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#142 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#143 def on_sclass(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_self(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#165 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#166 def on_send(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_shadowarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#134 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#135 def on_splat(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_str(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_super(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_sym(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_true(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_undef(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_unless_guard(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#142 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#143 def on_until(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_until_post(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_when(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#142 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#143 def on_while(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_while_post(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_xstr(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_yield(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_zsuper(node); end # source://rubocop-ast//lib/rubocop/ast/traversal.rb#17 @@ -7308,7 +7328,7 @@ RuboCop::AST::Traversal::CallbackCompiler::TEMPLATE = T.let(T.unsafe(nil), Hash) # source://rubocop-ast//lib/rubocop/ast/traversal.rb#12 class RuboCop::AST::Traversal::DebugError < ::RuntimeError; end -# source://rubocop-ast//lib/rubocop/ast/traversal.rb#109 +# source://rubocop-ast//lib/rubocop/ast/traversal.rb#110 RuboCop::AST::Traversal::NO_CHILD_NODES = T.let(T.unsafe(nil), Set) # source://rubocop-ast//lib/rubocop/ast/traversal.rb#15 @@ -7459,28 +7479,28 @@ class RuboCop::AST::YieldNode < ::RuboCop::AST::Node end class RuboCop::CommentConfig - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#34 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#34 def initialize(processed_source); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#63 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#63 def comment_only_line?(line_number); end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def config(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#51 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#51 def cop_disabled_line_ranges; end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#39 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#39 def cop_enabled_at_line?(cop, line_number); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#47 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#47 def cop_opted_in?(cop); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#55 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#55 def extra_enabled_comments; end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#30 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#30 def processed_source; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -7488,51 +7508,51 @@ class RuboCop::CommentConfig private - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#96 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#96 def analyze; end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#124 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#124 def analyze_cop(analysis, directive); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#144 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#144 def analyze_disabled(analysis, directive); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#155 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#155 def analyze_rest(analysis, directive); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#135 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#135 def analyze_single_line(analysis, directive); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#164 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#164 def cop_line_ranges(analysis); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#170 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#170 def each_directive; end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#69 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#69 def extra_enabled_comments_with_names(extras:, names:); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#190 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#190 def handle_enable_all(directive, names, extras); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#204 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#204 def handle_switch(directive, names, extras); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#115 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#115 def inject_disabled_cops_directives(analyses); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#183 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#183 def non_comment_token_line_numbers; end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#83 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#83 def opt_in_cops; end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#179 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#179 def qualified_cop_name(cop_name); end end class RuboCop::Config - # source://rubocop/1.76.2/lib/rubocop/config.rb#31 + # source://rubocop/1.81.1/lib/rubocop/config.rb#31 def initialize(hash = T.unsafe(nil), loaded_path = T.unsafe(nil)); end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -7541,40 +7561,40 @@ class RuboCop::Config # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def []=(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#212 + # source://rubocop/1.81.1/lib/rubocop/config.rb#212 def active_support_extensions_enabled?; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#127 + # source://rubocop/1.81.1/lib/rubocop/config.rb#127 def add_excludes_from_higher_level(highest_config); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#239 + # source://rubocop/1.81.1/lib/rubocop/config.rb#239 def allowed_camel_case_file?(file); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#283 + # source://rubocop/1.81.1/lib/rubocop/config.rb#283 def base_dir_for_path_parameters; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#313 + # source://rubocop/1.81.1/lib/rubocop/config.rb#313 def bundler_lock_file_path; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#85 + # source://rubocop/1.81.1/lib/rubocop/config.rb#85 def check; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#180 + # source://rubocop/1.81.1/lib/rubocop/config.rb#180 def clusivity_config_for_badge?(badge); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#200 + # source://rubocop/1.81.1/lib/rubocop/config.rb#200 def cop_enabled?(name); end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def delete(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#139 + # source://rubocop/1.81.1/lib/rubocop/config.rb#139 def deprecation_check; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def dig(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#204 + # source://rubocop/1.81.1/lib/rubocop/config.rb#204 def disabled_new_cops?; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -7583,40 +7603,40 @@ class RuboCop::Config # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def each_key(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#208 + # source://rubocop/1.81.1/lib/rubocop/config.rb#208 def enabled_new_cops?; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def fetch(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#261 + # source://rubocop/1.81.1/lib/rubocop/config.rb#261 def file_to_exclude?(file); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#220 + # source://rubocop/1.81.1/lib/rubocop/config.rb#220 def file_to_include?(file); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#196 + # source://rubocop/1.81.1/lib/rubocop/config.rb#196 def for_all_cops; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#166 + # source://rubocop/1.81.1/lib/rubocop/config.rb#166 def for_badge(badge); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#153 + # source://rubocop/1.81.1/lib/rubocop/config.rb#153 def for_cop(cop); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#191 + # source://rubocop/1.81.1/lib/rubocop/config.rb#191 def for_department(department_name); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#160 + # source://rubocop/1.81.1/lib/rubocop/config.rb#160 def for_enabled_cop(cop); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#338 + # source://rubocop/1.81.1/lib/rubocop/config.rb#338 def gem_versions_in_target; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#342 + # source://rubocop/1.81.1/lib/rubocop/config.rb#342 def inspect; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#110 + # source://rubocop/1.81.1/lib/rubocop/config.rb#110 def internal?; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -7625,16 +7645,16 @@ class RuboCop::Config # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def keys(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#81 + # source://rubocop/1.81.1/lib/rubocop/config.rb#81 def loaded_features; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#21 + # source://rubocop/1.81.1/lib/rubocop/config.rb#21 def loaded_path; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#77 + # source://rubocop/1.81.1/lib/rubocop/config.rb#77 def loaded_plugins; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#115 + # source://rubocop/1.81.1/lib/rubocop/config.rb#115 def make_excludes_absolute; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -7643,37 +7663,37 @@ class RuboCop::Config # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def merge(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#293 + # source://rubocop/1.81.1/lib/rubocop/config.rb#293 def parser_engine; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#274 + # source://rubocop/1.81.1/lib/rubocop/config.rb#274 def path_relative_to_config(path); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#270 + # source://rubocop/1.81.1/lib/rubocop/config.rb#270 def patterns_to_exclude; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#266 + # source://rubocop/1.81.1/lib/rubocop/config.rb#266 def patterns_to_include; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#324 + # source://rubocop/1.81.1/lib/rubocop/config.rb#324 def pending_cops; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#253 + # source://rubocop/1.81.1/lib/rubocop/config.rb#253 def possibly_include_hidden?; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def replace(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#105 + # source://rubocop/1.81.1/lib/rubocop/config.rb#105 def signature; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#308 + # source://rubocop/1.81.1/lib/rubocop/config.rb#308 def smart_loaded_path; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#216 + # source://rubocop/1.81.1/lib/rubocop/config.rb#216 def string_literals_frozen_by_default?; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#297 + # source://rubocop/1.81.1/lib/rubocop/config.rb#297 def target_rails_version; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -7685,7 +7705,7 @@ class RuboCop::Config # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def to_hash(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#101 + # source://rubocop/1.81.1/lib/rubocop/config.rb#101 def to_s; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -7694,37 +7714,37 @@ class RuboCop::Config # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def validate(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#92 + # source://rubocop/1.81.1/lib/rubocop/config.rb#92 def validate_after_resolution; end private - # source://rubocop/1.76.2/lib/rubocop/config.rb#392 + # source://rubocop/1.81.1/lib/rubocop/config.rb#392 def department_of(qualified_cop_name); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#380 + # source://rubocop/1.81.1/lib/rubocop/config.rb#380 def enable_cop?(qualified_cop_name, cop_options); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#367 + # source://rubocop/1.81.1/lib/rubocop/config.rb#367 def gem_version_to_major_minor_float(gem_version); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#373 + # source://rubocop/1.81.1/lib/rubocop/config.rb#373 def read_gem_versions_from_target_lockfile; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#354 + # source://rubocop/1.81.1/lib/rubocop/config.rb#354 def read_rails_version_from_bundler_lock_file; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#349 + # source://rubocop/1.81.1/lib/rubocop/config.rb#349 def target_rails_version_from_bundler_lock_file; end class << self - # source://rubocop/1.76.2/lib/rubocop/config.rb#23 + # source://rubocop/1.81.1/lib/rubocop/config.rb#23 def create(hash, path, check: T.unsafe(nil)); end end end class RuboCop::ConfigValidator - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#28 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#28 def initialize(config); end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -7733,66 +7753,66 @@ class RuboCop::ConfigValidator # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def smart_loaded_path(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#65 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#65 def target_ruby_version; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#34 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#34 def validate; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#61 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#61 def validate_after_resolution; end private - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#100 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#100 def alert_about_unrecognized_cops(invalid_cop_names); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#263 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#263 def check_cop_config_value(hash, parent = T.unsafe(nil)); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#73 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#73 def check_obsoletions; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#80 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#80 def check_target_ruby; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#205 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#205 def each_invalid_parameter(cop_name); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#116 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#116 def list_unknown_cops(invalid_cop_names); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#284 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#284 def param_error_message(parent, key, value, supposed_values); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#252 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#252 def reject_conflicting_safe_settings; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#243 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#243 def reject_mutually_exclusive_defaults; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#139 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#139 def suggestion(name); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#71 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#71 def target_ruby; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#217 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#217 def validate_enforced_styles(valid_cop_names); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#166 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#166 def validate_new_cops_parameter; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#191 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#191 def validate_parameter_names(valid_cop_names); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#177 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#177 def validate_parameter_shape(valid_cop_names); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#237 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#237 def validate_support_and_has_list(name, formats, valid); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#155 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#155 def validate_syntax_cop; end end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-minitest@0.38.1.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-minitest@0.38.2.rbi similarity index 99% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-minitest@0.38.1.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-minitest@0.38.2.rbi index c01a558d48..b526789897 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-minitest@0.38.1.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-minitest@0.38.2.rbi @@ -1271,7 +1271,7 @@ class RuboCop::Cop::Minitest::MultipleAssertions < ::RuboCop::Cop::Base include ::RuboCop::Cop::DefNode include ::RuboCop::Cop::MinitestExplorationHelpers - # source://rubocop/1.76.2/lib/rubocop/cop/exclude_limit.rb#11 + # source://rubocop/1.81.1/lib/rubocop/cop/exclude_limit.rb#11 def max=(value); end # source://rubocop-minitest//lib/rubocop/cop/minitest/multiple_assertions.rb#37 @@ -2513,9 +2513,15 @@ module RuboCop::Cop::MinitestExplorationHelpers # @api private # @return [Boolean] # - # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#118 + # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#117 def assertion_method?(node); end + # @api private + # @return [Boolean] + # + # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#129 + def assertion_prefix_method?(node); end + # @api private # # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#97 @@ -2534,7 +2540,7 @@ module RuboCop::Cop::MinitestExplorationHelpers # @api private # @return [Boolean] # - # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#130 + # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#125 def lifecycle_hook_method?(node); end # @api private diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-performance@1.25.0.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-performance@1.26.0.rbi similarity index 97% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-performance@1.25.0.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-performance@1.26.0.rbi index 328ecd9930..e551decf53 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-performance@1.25.0.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-performance@1.26.0.rbi @@ -14,35 +14,79 @@ module RuboCop::Cop; end module RuboCop::Cop::Lint; end class RuboCop::Cop::Lint::UnusedMethodArgument < ::RuboCop::Cop::Base - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#75 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#75 def not_implemented?(param0 = T.unsafe(nil)); end private - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#128 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#128 def allowed_exception_class?(node); end - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#90 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#90 def autocorrect(corrector, node); end - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#94 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#94 def check_argument(variable); end - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#102 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#102 def ignored_method?(body); end - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#107 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#107 def message(variable); end class << self - # source://rubocop-performance//lib/rubocop-performance.rb#12 + # source://rubocop-performance//lib/rubocop-performance.rb#11 def autocorrect_incompatible_with; end - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#84 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#84 def joining_forces; end end end +module RuboCop::Cop::Naming; end + +class RuboCop::Cop::Naming::BlockForwarding < ::RuboCop::Cop::Base + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#68 + def on_def(node); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#68 + def on_defs(node); end + + private + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#118 + def anonymous_block_argument?(node); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#101 + def block_argument_name_matched?(block_pass_node, last_argument); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#150 + def block_forwarding_name; end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#91 + def expected_block_forwarding_style?(node, last_argument); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#122 + def explicit_block_argument?(node); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#110 + def invalidates_syntax?(block_pass_node); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#126 + def register_offense(block_argument, node); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#142 + def use_block_argument_as_local_variable?(node, last_argument); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#114 + def use_kwarg_in_method_definition?(node); end + + class << self + # source://rubocop-performance//lib/rubocop-performance.rb#11 + def autocorrect_incompatible_with; end + end +end + # source://rubocop-performance//lib/rubocop/cop/performance/ancestors_include.rb#5 module RuboCop::Cop::Performance; end @@ -863,22 +907,22 @@ class RuboCop::Cop::Performance::Count < ::RuboCop::Cop::Base # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#89 def eligible_node?(node); end - # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#132 + # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#134 def negate_block_pass_as_inline_block(node); end - # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#111 + # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#113 def negate_block_pass_reject(corrector, node); end - # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#118 + # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#120 def negate_block_reject(corrector, node); end - # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#128 + # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#130 def negate_expression(node); end - # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#103 + # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#105 def negate_reject(corrector, node); end - # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#93 + # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#95 def source_starting_at(node); end end @@ -1092,9 +1136,9 @@ RuboCop::Cop::Performance::Detect::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array # source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#36 RuboCop::Cop::Performance::Detect::REVERSE_MSG = T.let(T.unsafe(nil), String) -# Checks for double `#start_with?` or `#end_with?` calls -# separated by `||`. In some cases such calls can be replaced -# with an single `#start_with?`/`#end_with?` call. +# Checks for consecutive `#start_with?` or `#end_with?` calls. +# These methods accept multiple arguments, so in some cases like when +# they are separated by `||`, they can be combined into a single method call. # # `IncludeActiveSupportAliases` configuration option is used to check for # `starts_with?` and `ends_with?`. These methods are defined by Active Support. @@ -1103,11 +1147,13 @@ RuboCop::Cop::Performance::Detect::REVERSE_MSG = T.let(T.unsafe(nil), String) # # bad # str.start_with?("a") || str.start_with?(Some::CONST) # str.start_with?("a", "b") || str.start_with?("c") +# !str.start_with?(foo) && !str.start_with?(bar) # str.end_with?(var1) || str.end_with?(var2) # # # good # str.start_with?("a", Some::CONST) # str.start_with?("a", "b", "c") +# !str.start_with?(foo, bar) # str.end_with?(var1, var2) # @example IncludeActiveSupportAliases: false (default) # # good @@ -1125,40 +1171,52 @@ RuboCop::Cop::Performance::Detect::REVERSE_MSG = T.let(T.unsafe(nil), String) # str.starts_with?("a", "b", "c") # str.ends_with?(var1, var2) # -# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#41 +# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#43 class RuboCop::Cop::Performance::DoubleStartEndWith < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#96 - def check_with_active_support_aliases(param0 = T.unsafe(nil)); end + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#57 + def on_and(node); end - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#46 + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#51 def on_or(node); end - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#90 - def two_start_end_with_calls(param0 = T.unsafe(nil)); end + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#108 + def two_start_end_with_calls(param0 = T.unsafe(nil), methods_to_check:); end + + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#114 + def two_start_end_with_calls_negated(param0 = T.unsafe(nil), methods_to_check:); end private - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#60 + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#75 def autocorrect(corrector, first_call_args, second_call_args, combined_args); end + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#65 + def check(node, receiver, method, first_call_args, second_call_args); end + # @return [Boolean] # - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#86 + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#104 def check_for_active_support_aliases?; end - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#82 + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#100 def combine_args(first_call_args, second_call_args); end - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#76 - def message(node, receiver, first_call_args, method, combined_args); end + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#91 + def message(node, receiver, method, combined_args); end - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#68 - def process_source(node); end + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#83 + def methods; end end -# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#44 +# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#48 +RuboCop::Cop::Performance::DoubleStartEndWith::METHODS = T.let(T.unsafe(nil), Set) + +# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#49 +RuboCop::Cop::Performance::DoubleStartEndWith::METHODS_WITH_ACTIVE_SUPPORT = T.let(T.unsafe(nil), Set) + +# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#46 RuboCop::Cop::Performance::DoubleStartEndWith::MSG = T.let(T.unsafe(nil), String) # Identifies unnecessary use of a regex where `String#end_with?` would suffice. @@ -1433,8 +1491,10 @@ class RuboCop::Cop::Performance::InefficientHashSearch < ::RuboCop::Cop::Base # source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#71 def replacement(node); end + # @return [Boolean] + # # source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#86 - def use_long_method; end + def use_long_method?; end end # source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#45 diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-rails@2.32.0.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-rails@2.33.4.rbi similarity index 100% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-rails@2.32.0.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-rails@2.33.4.rbi diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-sorbet@0.10.4.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-sorbet@0.11.0.rbi similarity index 88% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-sorbet@0.10.4.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-sorbet@0.11.0.rbi index 52fee32c7f..815b3f57bd 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-sorbet@0.10.4.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop-sorbet@0.11.0.rbi @@ -564,30 +564,29 @@ RuboCop::Cop::Sorbet::EnforceSigilOrder::PREFERRED_ORDER = T.let(T.unsafe(nil), # # * `ParameterTypePlaceholder`: placeholders used for parameter types (default: 'T.untyped') # * `ReturnTypePlaceholder`: placeholders used for return types (default: 'T.untyped') +# * `Style`: signature style to enforce - 'sig' for sig blocks, 'rbs' for RBS comments, 'both' to allow either (default: 'sig') # -# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#27 +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#26 class RuboCop::Cop::Sorbet::EnforceSignatures < ::RuboCop::Cop::Base include ::RuboCop::Cop::Sorbet::SignatureHelp extend ::RuboCop::Cop::AutoCorrector - # @return [EnforceSignatures] a new instance of EnforceSignatures - # # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#33 - def initialize(config = T.unsafe(nil), options = T.unsafe(nil)); end - - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#39 def accessor?(param0 = T.unsafe(nil)); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#43 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#37 def on_def(node); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#47 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#41 def on_defs(node); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#51 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#53 + def on_new_investigation; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#45 def on_send(node); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#55 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#49 def on_signature(node); end # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#59 @@ -595,73 +594,203 @@ class RuboCop::Cop::Sorbet::EnforceSignatures < ::RuboCop::Cop::Base private - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#97 - def autocorrect(corrector, node); end + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#154 + def add_accessor_parameter_if_needed(suggest, symbol, method); end + + # @return [Boolean] + # + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#176 + def allow_rbs?; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#113 + def autocorrect_with_signature_type(corrector, node, type); end # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#68 def check_node(node); end - # @return [Boolean] - # - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#81 - def has_rbs_comment?(node); end + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#119 + def create_signature_suggestion(node, type); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#114 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#168 def param_type_placeholder; end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#93 - def preceeding_comments(node); end + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#146 + def populate_accessor_suggestion(suggest, node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#136 + def populate_method_definition_suggestion(suggest, node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#128 + def populate_signature_suggestion(suggest, node); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#118 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#109 + def rbs_checker; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#172 def return_type_placeholder; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#160 + def set_void_return_for_writer(suggest, method); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#105 + def sig_checker; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#180 + def signature_style; end + + # @return [Boolean] + # + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#164 + def writer_or_accessor?(method); end end -# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#31 -RuboCop::Cop::Sorbet::EnforceSignatures::RBS_COMMENT_REGEX = T.let(T.unsafe(nil), Regexp) +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#209 +class RuboCop::Cop::Sorbet::EnforceSignatures::RBSSignatureChecker < ::RuboCop::Cop::Sorbet::EnforceSignatures::SignatureChecker + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#212 + def signature_node(node); end + + private + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#225 + def find_non_send_ancestor(node); end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#210 +RuboCop::Cop::Sorbet::EnforceSignatures::RBSSignatureChecker::RBS_COMMENT_REGEX = T.let(T.unsafe(nil), Regexp) + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#285 +class RuboCop::Cop::Sorbet::EnforceSignatures::RBSSuggestion + # @return [RBSSuggestion] a new instance of RBSSuggestion + # + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#288 + def initialize(indent); end + + # Returns the value of attribute has_block. + # + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#286 + def has_block; end -# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#122 + # Sets the attribute has_block + # + # @param value the value to set the attribute has_block to. + # + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#286 + def has_block=(_arg0); end + + # Returns the value of attribute params. + # + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#286 + def params; end + + # Sets the attribute params + # + # @param value the value to set the attribute params to. + # + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#286 + def params=(_arg0); end + + # Returns the value of attribute returns. + # + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#286 + def returns; end + + # Sets the attribute returns + # + # @param value the value to set the attribute returns to. + # + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#286 + def returns=(_arg0); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#295 + def to_autocorrect; end + + private + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#301 + def generate_signature; end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#231 +class RuboCop::Cop::Sorbet::EnforceSignatures::SigSignatureChecker < ::RuboCop::Cop::Sorbet::EnforceSignatures::SignatureChecker + # @return [SigSignatureChecker] a new instance of SigSignatureChecker + # + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#232 + def initialize(processed_source); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#245 + def clear_signature(scope); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#241 + def on_signature(node, scope); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#237 + def signature_node(scope); end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#250 class RuboCop::Cop::Sorbet::EnforceSignatures::SigSuggestion # @return [SigSuggestion] a new instance of SigSuggestion # - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#125 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#253 def initialize(indent, param_placeholder, return_placeholder); end # Returns the value of attribute params. # - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#123 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#251 def params; end # Sets the attribute params # # @param value the value to set the attribute params to. # - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#123 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#251 def params=(_arg0); end # Returns the value of attribute returns. # - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#123 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#251 def returns; end # Sets the attribute returns # # @param value the value to set the attribute returns to. # - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#123 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#251 def returns=(_arg0); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#133 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#261 def to_autocorrect; end private - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#145 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#267 def generate_params; end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#157 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#274 def generate_return; end end +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#195 +class RuboCop::Cop::Sorbet::EnforceSignatures::SignatureChecker + # @return [SignatureChecker] a new instance of SignatureChecker + # + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#196 + def initialize(processed_source); end + + protected + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#204 + def preceding_comments(node); end + + # Returns the value of attribute processed_source. + # + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#202 + def processed_source; end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#30 +RuboCop::Cop::Sorbet::EnforceSignatures::VALID_STYLES = T.let(T.unsafe(nil), Array) + # Checks that there is only one Sorbet sigil in a given file # # For example, the following class with two sigils @@ -1044,6 +1173,48 @@ RuboCop::Cop::Sorbet::ForbidTAbsurd::MSG = T.let(T.unsafe(nil), String) # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_absurd.rb#19 RuboCop::Cop::Sorbet::ForbidTAbsurd::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) +# Detect and autocorrect `T.any(..., NilClass, ...)` to `T.nilable(...)` +# +# @example +# +# # bad +# T.any(String, NilClass) +# T.any(NilClass, String) +# T.any(NilClass, Symbol, String) +# +# # good +# T.nilable(String) +# T.nilable(String) +# T.nilable(T.any(Symbol, String)) +# +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#19 +class RuboCop::Cop::Sorbet::ForbidTAnyWithNil < ::RuboCop::Cop::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#31 + def nil_const_node?(param0 = T.unsafe(nil)); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#35 + def on_csend(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#35 + def on_send(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#26 + def t_any_call?(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#52 + def build_replacement(non_nil_args); end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#22 +RuboCop::Cop::Sorbet::ForbidTAnyWithNil::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#23 +RuboCop::Cop::Sorbet::ForbidTAnyWithNil::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + # Disallows using `T.bind` anywhere. # # @example @@ -1131,6 +1302,45 @@ end # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_enum.rb#27 RuboCop::Cop::Sorbet::ForbidTEnum::MSG = T.let(T.unsafe(nil), String) +# Forbids `extend T::Helpers` and `include T::Helpers` in classes and modules. +# +# This is useful when using RBS or RBS-inline syntax for type signatures, +# where `T::Helpers` is not needed and including it is redundant. +# +# @example +# +# # bad +# class Example +# extend T::Helpers +# end +# +# # bad +# module Example +# include T::Helpers +# end +# +# # good +# class Example +# end +# +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_helpers.rb#26 +class RuboCop::Cop::Sorbet::ForbidTHelpers < ::RuboCop::Cop::Base + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_helpers.rb#35 + def on_csend(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_helpers.rb#35 + def on_send(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_helpers.rb#31 + def t_helpers?(param0 = T.unsafe(nil)); end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_helpers.rb#27 +RuboCop::Cop::Sorbet::ForbidTHelpers::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_helpers.rb#28 +RuboCop::Cop::Sorbet::ForbidTHelpers::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + # Disallows using `T.let` anywhere. # # @example @@ -1187,6 +1397,45 @@ RuboCop::Cop::Sorbet::ForbidTMust::MSG = T.let(T.unsafe(nil), String) # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_must.rb#19 RuboCop::Cop::Sorbet::ForbidTMust::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) +# Forbids `extend T::Sig` and `include T::Sig` in classes and modules. +# +# This is useful when using RBS or RBS-inline syntax for type signatures, +# where `T::Sig` is not needed and including it is redundant. +# +# @example +# +# # bad +# class Example +# extend T::Sig +# end +# +# # bad +# module Example +# include T::Sig +# end +# +# # good +# class Example +# end +# +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_sig.rb#26 +class RuboCop::Cop::Sorbet::ForbidTSig < ::RuboCop::Cop::Base + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_sig.rb#35 + def on_csend(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_sig.rb#35 + def on_send(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_sig.rb#31 + def t_sig?(param0 = T.unsafe(nil)); end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_sig.rb#27 +RuboCop::Cop::Sorbet::ForbidTSig::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_sig.rb#28 +RuboCop::Cop::Sorbet::ForbidTSig::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + # Disallow using `T::Struct` and `T::Props`. # # @example @@ -2239,17 +2488,17 @@ class RuboCop::Sorbet::Error < ::StandardError; end # A plugin that integrates RuboCop Sorbet with RuboCop's plugin system. # -# source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#15 +# source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#10 class RuboCop::Sorbet::Plugin < ::LintRoller::Plugin - # source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#16 + # source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#11 def about; end - # source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#29 + # source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#24 def rules(_context); end # @return [Boolean] # - # source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#25 + # source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#20 def supported?(context); end end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop@1.76.2.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop@1.81.1.rbi similarity index 97% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop@1.76.2.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop@1.81.1.rbi index 08c538f7cb..7823d3cd7e 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop@1.76.2.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/rubocop@1.81.1.rbi @@ -98,44 +98,50 @@ class RuboCop::CLI private - # source://rubocop//lib/rubocop/cli.rb#156 + # source://rubocop//lib/rubocop/cli.rb#162 def act_on_options; end - # source://rubocop//lib/rubocop/cli.rb#198 + # source://rubocop//lib/rubocop/cli.rb#209 def apply_default_formatter; end - # source://rubocop//lib/rubocop/cli.rb#125 + # source://rubocop//lib/rubocop/cli.rb#131 def execute_runners; end - # source://rubocop//lib/rubocop/cli.rb#182 + # source://rubocop//lib/rubocop/cli.rb#193 def handle_editor_mode; end # @raise [Finished] # - # source://rubocop//lib/rubocop/cli.rb#187 + # source://rubocop//lib/rubocop/cli.rb#198 def handle_exiting_options; end - # source://rubocop//lib/rubocop/cli.rb#144 + # source://rubocop//lib/rubocop/cli.rb#150 def parallel_by_default!; end - # source://rubocop//lib/rubocop/cli.rb#80 + # source://rubocop//lib/rubocop/cli.rb#86 def profile_if_needed; end - # source://rubocop//lib/rubocop/cli.rb#113 + # source://rubocop//lib/rubocop/cli.rb#223 + def report_pending_cops; end + + # source://rubocop//lib/rubocop/cli.rb#119 def require_gem(name); end - # source://rubocop//lib/rubocop/cli.rb#121 + # source://rubocop//lib/rubocop/cli.rb#127 def run_command(name); end - # source://rubocop//lib/rubocop/cli.rb#174 + # source://rubocop//lib/rubocop/cli.rb#180 def set_options_to_config_loader; end - # source://rubocop//lib/rubocop/cli.rb#133 + # source://rubocop//lib/rubocop/cli.rb#188 + def set_options_to_pending_cops_reporter; end + + # source://rubocop//lib/rubocop/cli.rb#139 def suggest_extensions; end # @raise [OptionArgumentError] # - # source://rubocop//lib/rubocop/cli.rb#137 + # source://rubocop//lib/rubocop/cli.rb#143 def validate_options_vs_config; end end @@ -840,7 +846,7 @@ class RuboCop::CommentConfig # source://rubocop//lib/rubocop/comment_config.rb#63 def comment_only_line?(line_number); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def config(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/comment_config.rb#51 @@ -864,7 +870,7 @@ class RuboCop::CommentConfig # source://rubocop//lib/rubocop/comment_config.rb#30 def processed_source; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def registry(*_arg0, **_arg1, &_arg2); end private @@ -1040,10 +1046,10 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#31 def initialize(hash = T.unsafe(nil), loaded_path = T.unsafe(nil)); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def [](*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def []=(*_arg0, **_arg1, &_arg2); end # @return [Boolean] @@ -1087,13 +1093,13 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#200 def cop_enabled?(name); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def delete(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#139 def deprecation_check; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def dig(*_arg0, **_arg1, &_arg2); end # @return [Boolean] @@ -1101,10 +1107,10 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#204 def disabled_new_cops?; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def each(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def each_key(*_arg0, **_arg1, &_arg2); end # @return [Boolean] @@ -1112,7 +1118,7 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#208 def enabled_new_cops?; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def fetch(*_arg0, **_arg1, &_arg2); end # @return [Boolean] @@ -1174,10 +1180,10 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#110 def internal?; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def key?(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def keys(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#81 @@ -1194,10 +1200,10 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#115 def make_excludes_absolute; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def map(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def merge(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#293 @@ -1223,7 +1229,7 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#253 def possibly_include_hidden?; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def replace(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#105 @@ -1240,22 +1246,22 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#297 def target_rails_version; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def target_ruby_version(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def to_h(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def to_hash(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#101 def to_s; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def transform_values(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def validate(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#92 @@ -1427,7 +1433,7 @@ class RuboCop::ConfigLoader extend ::RuboCop::FileFinder class << self - # source://rubocop//lib/rubocop/config_loader.rb#152 + # source://rubocop//lib/rubocop/config_loader.rb#132 def add_excludes_from_files(config, config_file); end # Used to add features that were required inside a config or from @@ -1435,7 +1441,7 @@ class RuboCop::ConfigLoader # # @api private # - # source://rubocop//lib/rubocop/config_loader.rb#241 + # source://rubocop//lib/rubocop/config_loader.rb#206 def add_loaded_features(loaded_features); end # Used to add plugins that were required inside a config or from @@ -1443,13 +1449,13 @@ class RuboCop::ConfigLoader # # @api private # - # source://rubocop//lib/rubocop/config_loader.rb#234 + # source://rubocop//lib/rubocop/config_loader.rb#199 def add_loaded_plugins(loaded_plugins); end - # source://rubocop//lib/rubocop/config_loader.rb#91 + # source://rubocop//lib/rubocop/config_loader.rb#85 def add_missing_namespaces(path, hash); end - # source://rubocop//lib/rubocop/config_loader.rb#41 + # source://rubocop//lib/rubocop/config_loader.rb#33 def clear_options; end # Returns the path of .rubocop.yml searching upwards in the @@ -1458,90 +1464,90 @@ class RuboCop::ConfigLoader # user's home directory is checked. If there's no .rubocop.yml # there either, the path to the default file is returned. # - # source://rubocop//lib/rubocop/config_loader.rb#119 + # source://rubocop//lib/rubocop/config_loader.rb#113 def configuration_file_for(target_dir); end - # source://rubocop//lib/rubocop/config_loader.rb#123 + # source://rubocop//lib/rubocop/config_loader.rb#117 def configuration_from_file(config_file, check: T.unsafe(nil)); end # Returns the value of attribute debug. # - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def debug; end # Sets the attribute debug # # @param value the value to set the attribute debug to. # - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def debug=(_arg0); end # Returns the value of attribute debug. # - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def debug?; end - # source://rubocop//lib/rubocop/config_loader.rb#162 + # source://rubocop//lib/rubocop/config_loader.rb#142 def default_configuration; end # Sets the attribute default_configuration # # @param value the value to set the attribute default_configuration to. # - # source://rubocop//lib/rubocop/config_loader.rb#35 + # source://rubocop//lib/rubocop/config_loader.rb#27 def default_configuration=(_arg0); end # Returns the value of attribute disable_pending_cops. # - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def disable_pending_cops; end # Sets the attribute disable_pending_cops # # @param value the value to set the attribute disable_pending_cops to. # - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def disable_pending_cops=(_arg0); end # Returns the value of attribute enable_pending_cops. # - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def enable_pending_cops; end # Sets the attribute enable_pending_cops # # @param value the value to set the attribute enable_pending_cops to. # - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def enable_pending_cops=(_arg0); end # Returns the value of attribute ignore_parent_exclusion. # - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def ignore_parent_exclusion; end # Sets the attribute ignore_parent_exclusion # # @param value the value to set the attribute ignore_parent_exclusion to. # - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def ignore_parent_exclusion=(_arg0); end # Returns the value of attribute ignore_parent_exclusion. # - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def ignore_parent_exclusion?; end # Returns the value of attribute ignore_unrecognized_cops. # - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def ignore_unrecognized_cops; end # Sets the attribute ignore_unrecognized_cops # # @param value the value to set the attribute ignore_unrecognized_cops to. # - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def ignore_unrecognized_cops=(_arg0); end # This API is primarily intended for testing and documenting plugins. @@ -1549,83 +1555,67 @@ class RuboCop::ConfigLoader # so this API is usually not needed. It is intended to be used only when implementing tests # that do not use `rubocop/rspec/support`. # - # source://rubocop//lib/rubocop/config_loader.rb#174 + # source://rubocop//lib/rubocop/config_loader.rb#154 def inject_defaults!(config_yml_path); end - # source://rubocop//lib/rubocop/config_loader.rb#53 + # source://rubocop//lib/rubocop/config_loader.rb#45 def load_file(file, check: T.unsafe(nil)); end - # @raise [TypeError] - # - # source://rubocop//lib/rubocop/config_loader.rb#78 + # source://rubocop//lib/rubocop/config_loader.rb#70 def load_yaml_configuration(absolute_path); end # Returns the value of attribute loaded_features. # - # source://rubocop//lib/rubocop/config_loader.rb#36 + # source://rubocop//lib/rubocop/config_loader.rb#28 def loaded_features; end # Returns the value of attribute loaded_plugins. # - # source://rubocop//lib/rubocop/config_loader.rb#36 + # source://rubocop//lib/rubocop/config_loader.rb#28 def loaded_plugins; end # Return a recursive merge of two hashes. That is, a normal hash merge, # with the addition that any value that is a hash, and occurs in both # arguments, will also be merged. And so on. # - # source://rubocop//lib/rubocop/config_loader.rb#110 + # source://rubocop//lib/rubocop/config_loader.rb#104 def merge(base_hash, derived_hash); end # Merges the given configuration with the default one. # - # source://rubocop//lib/rubocop/config_loader.rb#227 + # source://rubocop//lib/rubocop/config_loader.rb#192 def merge_with_default(config, config_file, unset_nil: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/config_loader.rb#143 - def pending_cops_only_qualified(pending_cops); end - - # @return [Boolean] - # - # source://rubocop//lib/rubocop/config_loader.rb#147 - def possible_new_cops?(config); end - # Returns the path RuboCop inferred as the root of the project. No file # searches will go past this directory. # # @deprecated Use `RuboCop::ConfigFinder.project_root` instead. # - # source://rubocop//lib/rubocop/config_loader.rb#202 + # source://rubocop//lib/rubocop/config_loader.rb#182 def project_root; end - # source://rubocop//lib/rubocop/config_loader.rb#211 - def warn_on_pending_cops(pending_cops); end - - # source://rubocop//lib/rubocop/config_loader.rb#219 - def warn_pending_cop(cop); end - private - # source://rubocop//lib/rubocop/config_loader.rb#255 + # source://rubocop//lib/rubocop/config_loader.rb#220 def check_duplication(yaml_code, absolute_path); end - # source://rubocop//lib/rubocop/config_loader.rb#247 + # source://rubocop//lib/rubocop/config_loader.rb#212 def file_path(file); end # Read the specified file, or exit with a friendly, concise message on # stderr. Care is taken to use the standard OS exit code for a "file not # found" error. # - # source://rubocop//lib/rubocop/config_loader.rb#275 + # source://rubocop//lib/rubocop/config_loader.rb#240 def read_file(absolute_path); end - # source://rubocop//lib/rubocop/config_loader.rb#251 + # source://rubocop//lib/rubocop/config_loader.rb#216 def resolver; end - # source://rubocop//lib/rubocop/config_loader.rb#281 + # source://rubocop//lib/rubocop/config_loader.rb#246 def yaml_tree_to_hash(yaml_tree); end - # source://rubocop//lib/rubocop/config_loader.rb#291 + # source://rubocop//lib/rubocop/config_loader.rb#256 def yaml_tree_to_hash!(yaml_tree); end end end @@ -2388,28 +2378,31 @@ class RuboCop::ConfigStore # source://rubocop//lib/rubocop/config_store.rb#10 def initialize; end + # source://rubocop//lib/rubocop/config_store.rb#28 + def apply_options!(options); end + # If type (file/dir) is known beforehand, # prefer using #for_file or #for_dir for improved performance # - # source://rubocop//lib/rubocop/config_store.rb#52 + # source://rubocop//lib/rubocop/config_store.rb#57 def for(file_or_dir); end - # source://rubocop//lib/rubocop/config_store.rb#61 + # source://rubocop//lib/rubocop/config_store.rb#66 def for_dir(dir); end - # source://rubocop//lib/rubocop/config_store.rb#42 + # source://rubocop//lib/rubocop/config_store.rb#47 def for_file(file); end - # source://rubocop//lib/rubocop/config_store.rb#46 + # source://rubocop//lib/rubocop/config_store.rb#51 def for_pwd; end - # source://rubocop//lib/rubocop/config_store.rb#33 + # source://rubocop//lib/rubocop/config_store.rb#38 def force_default_config!; end - # source://rubocop//lib/rubocop/config_store.rb#28 + # source://rubocop//lib/rubocop/config_store.rb#33 def options_config=(options_config); end - # source://rubocop//lib/rubocop/config_store.rb#37 + # source://rubocop//lib/rubocop/config_store.rb#42 def unvalidated; end # Returns the value of attribute validated. @@ -2435,10 +2428,10 @@ class RuboCop::ConfigValidator # source://rubocop//lib/rubocop/config_validator.rb#28 def initialize(config); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def for_all_cops(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def smart_loaded_path(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config_validator.rb#65 @@ -2630,18 +2623,18 @@ class RuboCop::Cop::AlignmentCorrector private - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#113 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#116 def alignment_column(align_to); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#40 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#43 def autocorrect_line(corrector, line_begin_pos, expr, column_delta, taboo_ranges); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#81 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#84 def block_comment_within?(expr); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#87 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#90 def calculate_range(expr, line_begin_pos, column_delta); end # Some special kinds of string literals are not composed of literal @@ -2652,19 +2645,19 @@ class RuboCop::Cop::AlignmentCorrector # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#75 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#78 def delimited_string_literal?(node); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#99 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#102 def each_line(expr); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#60 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#63 def inside_string_range(node); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#54 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#57 def inside_string_ranges(node); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#107 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#110 def whitespace_range(node); end end end @@ -5347,7 +5340,7 @@ class RuboCop::Cop::Corrector < ::Parser::Source::TreeRewriter # Legacy # - # source://parser/3.3.8.0/lib/parser/source/tree_rewriter.rb#252 + # source://parser/3.3.9.0/lib/parser/source/tree_rewriter.rb#252 def rewrite; end # Swaps sources at the given ranges. @@ -5676,12 +5669,7 @@ module RuboCop::Cop::EndKeywordAlignment private - # @return [Boolean] - # - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#60 - def accept_end_kw_alignment?(end_loc); end - - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#50 + # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#49 def add_offense_for_misalignment(node, align_with); end # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#19 @@ -5692,21 +5680,21 @@ module RuboCop::Cop::EndKeywordAlignment # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#75 + # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#69 def line_break_before_keyword?(whole_expression, rhs); end - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#35 + # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#34 def matching_ranges(end_loc, align_ranges); end - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#41 + # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#40 def start_line_range(node); end - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#65 + # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#59 def style_parameter_name; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#69 + # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#63 def variable_alignment?(whole_expression, rhs, end_alignment_style); end end @@ -5799,7 +5787,7 @@ class RuboCop::Cop::ForToEachCorrector private - # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#57 + # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#62 def collection_end; end # Returns the value of attribute collection_node. @@ -5807,13 +5795,13 @@ class RuboCop::Cop::ForToEachCorrector # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#25 def collection_node; end - # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#31 + # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#36 def collection_source; end # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#27 def correction; end - # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#45 + # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#50 def end_range; end # Returns the value of attribute for_node. @@ -5821,12 +5809,12 @@ class RuboCop::Cop::ForToEachCorrector # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#25 def for_node; end - # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#53 + # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#58 def keyword_begin; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#39 + # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#44 def requires_parentheses?; end # Returns the value of attribute variable_node. @@ -6014,6 +6002,76 @@ RuboCop::Cop::Gemspec::AddRuntimeDependency::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/gemspec/add_runtime_dependency.rb#26 RuboCop::Cop::Gemspec::AddRuntimeDependency::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) +# Use consistent style for Gemspec attributes assignment. +# +# @example +# +# # bad +# # This example uses two styles for assignment of metadata attribute. +# Gem::Specification.new do |spec| +# spec.metadata = { 'key' => 'value' } +# spec.metadata['another-key'] = 'another-value' +# end +# +# # good +# Gem::Specification.new do |spec| +# spec.metadata['key'] = 'value' +# spec.metadata['another-key'] = 'another-value' +# end +# +# # good +# Gem::Specification.new do |spec| +# spec.metadata = { 'key' => 'value', 'another-key' => 'another-value' } +# end +# +# # bad +# # This example uses two styles for assignment of authors attribute. +# Gem::Specification.new do |spec| +# spec.authors = %w[author-0 author-1] +# spec.authors[2] = 'author-2' +# end +# +# # good +# Gem::Specification.new do |spec| +# spec.authors = %w[author-0 author-1 author-2] +# end +# +# # good +# Gem::Specification.new do |spec| +# spec.authors[0] = 'author-0' +# spec.authors[1] = 'author-1' +# spec.authors[2] = 'author-2' +# end +# +# # good +# # This example uses consistent assignment per attribute, +# # even though two different styles are used overall. +# Gem::Specification.new do |spec| +# spec.metadata = { 'key' => 'value' } +# spec.authors[0] = 'author-0' +# spec.authors[1] = 'author-1' +# spec.authors[2] = 'author-2' +# end +# +# source://rubocop//lib/rubocop/cop/gemspec/attribute_assignment.rb#57 +class RuboCop::Cop::Gemspec::AttributeAssignment < ::RuboCop::Cop::Base + include ::RuboCop::Cop::GemspecHelp + + # source://rubocop//lib/rubocop/cop/gemspec/attribute_assignment.rb#62 + def on_new_investigation; end + + private + + # source://rubocop//lib/rubocop/cop/gemspec/attribute_assignment.rb#77 + def source_assignments(ast); end + + # source://rubocop//lib/rubocop/cop/gemspec/attribute_assignment.rb#84 + def source_indexed_assignments(ast); end +end + +# source://rubocop//lib/rubocop/cop/gemspec/attribute_assignment.rb#60 +RuboCop::Cop::Gemspec::AttributeAssignment::MSG = T.let(T.unsafe(nil), String) + # Enforce that gem dependency version specifications or a commit reference (branch, # ref, or tag) are either required or forbidden. # @@ -6337,35 +6395,24 @@ class RuboCop::Cop::Gemspec::DuplicatedAssignment < ::RuboCop::Cop::Base include ::RuboCop::Cop::RangeHelp include ::RuboCop::Cop::GemspecHelp - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#58 - def assignment_method_declarations(param0); end - - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#64 - def indexed_assignment_method_declarations(param0); end - - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#73 + # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#57 def on_new_investigation; end private - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#105 + # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#83 def duplicated_assignment_method_nodes; end - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#113 + # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#91 def duplicated_indexed_assignment_method_nodes; end - # @return [Boolean] - # - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#99 - def match_block_variable_name?(receiver_name); end - - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#82 + # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#66 def process_assignment_method_nodes; end - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#90 + # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#74 def process_indexed_assignment_method_nodes; end - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#120 + # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#98 def register_offense(node, assignment, line_of_first_occurrence); end end @@ -6514,30 +6561,33 @@ class RuboCop::Cop::Gemspec::RequireMFA < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#70 def metadata(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#87 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#78 + def metadata_assignment(param0); end + + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#95 def on_block(node); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#78 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#86 def rubygems_mfa_required(param0); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#83 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#91 def true_string?(param0 = T.unsafe(nil)); end private - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#115 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#123 def autocorrect(corrector, node, block_var, metadata); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#139 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#153 def change_value(corrector, value); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#125 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#133 def correct_metadata(corrector, metadata); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#133 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#141 def insert_mfa_required(corrector, node, block_var); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#108 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#116 def mfa_value(metadata_value); end end @@ -6680,11 +6730,22 @@ RuboCop::Cop::Gemspec::RubyVersionGlobalsUsage::MSG = T.let(T.unsafe(nil), Strin module RuboCop::Cop::GemspecHelp extend ::RuboCop::AST::NodePattern::Macros + # source://rubocop//lib/rubocop/cop/mixin/gemspec_help.rb#30 + def assignment_method_declarations(param0); end + # source://rubocop//lib/rubocop/cop/mixin/gemspec_help.rb#20 def gem_specification(param0); end # source://rubocop//lib/rubocop/cop/mixin/gemspec_help.rb#10 def gem_specification?(param0 = T.unsafe(nil)); end + + # source://rubocop//lib/rubocop/cop/mixin/gemspec_help.rb#36 + def indexed_assignment_method_declarations(param0); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/mixin/gemspec_help.rb#45 + def match_block_variable_name?(receiver_name); end end # Source and spec generator for new cops @@ -9743,37 +9804,49 @@ RuboCop::Cop::Layout::EmptyLineAfterMultilineCondition::MSG = T.let(T.unsafe(nil # # good # class ErrorA < BaseError; end # class ErrorB < BaseError; end -# class ErrorC < BaseError; end # # # good # class ErrorA < BaseError; end # # class ErrorB < BaseError; end # -# class ErrorC < BaseError; end +# # good - DefLikeMacros: [memoize] +# memoize :attribute_a +# memoize :attribute_b +# +# # good +# memoize :attribute_a +# +# memoize :attribute_b # @example AllowAdjacentOneLineDefs: false # # # bad # class ErrorA < BaseError; end # class ErrorB < BaseError; end -# class ErrorC < BaseError; end # # # good # class ErrorA < BaseError; end # # class ErrorB < BaseError; end # -# class ErrorC < BaseError; end +# # bad - DefLikeMacros: [memoize] +# memoize :attribute_a +# memoize :attribute_b +# +# # good +# memoize :attribute_a +# +# memoize :attribute_b # -# source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#102 +# source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#114 class RuboCop::Cop::Layout::EmptyLineBetweenDefs < ::RuboCop::Cop::Base include ::RuboCop::Cop::RangeHelp extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#139 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#151 def autocorrect(corrector, prev_def, node, count); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#124 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#136 def check_defs(nodes); end # We operate on `begin` nodes, instead of using `OnMethodDef`, @@ -9782,100 +9855,100 @@ class RuboCop::Cop::Layout::EmptyLineBetweenDefs < ::RuboCop::Cop::Base # doing a linear scan over siblings, so we don't want to call # it on each def. # - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#117 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#129 def on_begin(node); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#287 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#305 def allowance_range?; end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#269 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#287 def autocorrect_insert_lines(corrector, newline_pos, count); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#262 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#280 def autocorrect_remove_lines(corrector, newline_pos, count); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#222 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#242 def blank_lines_count_between(first_def_node, second_def_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#166 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#180 def candidate?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#186 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#206 def class_candidate?(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#250 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#272 def def_end(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#158 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#170 def def_location(correction_node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#242 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#262 def def_start(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#173 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#187 def empty_line_between_macros; end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#254 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#276 def end_loc(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#200 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#220 def expected_lines; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#218 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#238 def line_count_allowed?(count); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#234 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#254 def lines_between_defs(first_def_node, second_def_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#177 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#191 def macro_candidate?(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#230 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#250 def maximum_empty_lines; end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#194 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#214 def message(node, count: T.unsafe(nil)); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#182 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#202 def method_candidate?(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#226 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#246 def minimum_empty_lines; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#190 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#210 def module_candidate?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#209 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#229 def multiple_blank_lines_groups?(first_def_node, second_def_node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#276 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#294 def node_type(node); end class << self - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#108 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#120 def autocorrect_incompatible_with; end end end -# source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#106 +# source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#118 RuboCop::Cop::Layout::EmptyLineBetweenDefs::MSG = T.let(T.unsafe(nil), String) # Checks for two or more consecutive blank lines. @@ -9923,6 +9996,81 @@ RuboCop::Cop::Layout::EmptyLines::LINE_OFFSET = T.let(T.unsafe(nil), Integer) # source://rubocop//lib/rubocop/cop/layout/empty_lines.rb#25 RuboCop::Cop::Layout::EmptyLines::MSG = T.let(T.unsafe(nil), String) +# Checks for an empty line after a module inclusion method (`extend`, +# `include` and `prepend`), or a group of them. +# +# @example +# # bad +# class Foo +# include Bar +# attr_reader :baz +# end +# +# # good +# class Foo +# include Bar +# +# attr_reader :baz +# end +# +# # also good - multiple module inclusions grouped together +# class Foo +# extend Bar +# include Baz +# prepend Qux +# end +# +# source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#30 +class RuboCop::Cop::Layout::EmptyLinesAfterModuleInclusion < ::RuboCop::Cop::Base + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#40 + def on_send(node); end + + private + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#85 + def allowed_method?(node); end + + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#54 + def autocorrect(corrector, node); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#69 + def enable_directive_comment?(line); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#75 + def line_empty?(line); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#65 + def next_line_empty_or_enable_directive_comment?(line); end + + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#93 + def next_line_node(node); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#79 + def require_empty_line?(node); end +end + +# source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#36 +RuboCop::Cop::Layout::EmptyLinesAfterModuleInclusion::MODULE_INCLUSION_METHODS = T.let(T.unsafe(nil), Array) + +# source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#34 +RuboCop::Cop::Layout::EmptyLinesAfterModuleInclusion::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#38 +RuboCop::Cop::Layout::EmptyLinesAfterModuleInclusion::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + # Access modifiers should be surrounded by blank lines. # # @example EnforcedStyle: around (default) @@ -10140,23 +10288,13 @@ class RuboCop::Cop::Layout::EmptyLinesAroundArguments < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#65 - def empty_lines(node); end - - # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#71 - def extra_lines(node); end - - # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#93 - def inner_lines(node); end - - # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#84 - def line_numbers(node); end - - # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#97 - def outer_lines(node); end + # @yield [range.source_buffer.line_range(range.last_line - 1).adjust(end_pos: 1)] + # + # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#73 + def empty_range_for_starting_point(start); end - # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#78 - def processed_lines(node); end + # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#65 + def extra_lines(node, &block); end # @return [Boolean] # @@ -13535,31 +13673,36 @@ class RuboCop::Cop::Layout::LineLength < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#309 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#310 def allow_heredoc?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#317 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#318 def allow_string_split?; end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#313 + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#385 + def allowed_combination?(line, uri_range, qualified_name_range); end + + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#314 def allowed_heredoc; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#266 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#267 def allowed_line?(line, line_index); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#181 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#182 def breakable_block_range(block_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#368 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#397 def breakable_dstr?(node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#230 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#231 def breakable_dstr_begin_position(node); end # Returns the value of attribute breakable_range. @@ -13574,21 +13717,21 @@ class RuboCop::Cop::Layout::LineLength < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/layout/line_length.rb#112 def breakable_range=(_arg0); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#189 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#190 def breakable_range_after_semicolon(semicolon_token); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#235 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#236 def breakable_range_by_line_index; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#172 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#173 def breakable_string?(node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#239 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#240 def breakable_string_delimiters; end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#202 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#203 def breakable_string_position(node); end # Locate where to break a string that is too long, ensuring that escape characters @@ -13596,16 +13739,16 @@ class RuboCop::Cop::Layout::LineLength < ::RuboCop::Cop::Base # If the string contains spaces, use them to determine a place for a clean break; # otherwise, the string will be broken at the line length limit. # - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#214 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#215 def breakable_string_range(node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#344 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#352 def check_directive_line(line, line_index); end # source://rubocop//lib/rubocop/cop/layout/line_length.rb#135 def check_for_breakable_block(block_node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#157 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#158 def check_for_breakable_dstr(node); end # source://rubocop//lib/rubocop/cop/layout/line_length.rb#114 @@ -13614,54 +13757,62 @@ class RuboCop::Cop::Layout::LineLength < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/layout/line_length.rb#127 def check_for_breakable_semicolons(processed_source); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#145 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#146 def check_for_breakable_str(node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#254 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#255 def check_line(line, line_index); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#361 - def check_uri_line(line, line_index); end + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#369 + def check_line_for_exemptions(line, line_index); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#294 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#295 def excess_range(uri_range, line, line_index); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#321 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#322 def extract_heredocs(ast); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#243 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#244 def heredocs; end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#247 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#248 def highlight_start(line); end # Find the largest possible substring of a string node to retain before a break # - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#384 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#413 def largest_possible_string(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#340 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#341 def line_in_heredoc?(line_number); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#331 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#332 def line_in_permitted_heredoc?(line_number); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#305 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#306 def max; end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#276 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#379 + def range_if_applicable(line, type); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#345 + def receiver_contains_heredoc?(node); end + + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#277 def register_offense(loc, line, line_index, length: T.unsafe(nil)); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#272 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#273 def shebang?(line, line_index); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#373 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#402 def string_delimiter(node); end end @@ -14747,6 +14898,8 @@ RuboCop::Cop::Layout::MultilineMethodParameterLineBreaks::MSG = T.let(T.unsafe(n # condition, an explicit `return` statement, etc. In other contexts, the second operand should # be indented regardless of enforced style. # +# In both styles, operators should be aligned when an assignment begins on the next line. +# # @example EnforcedStyle: aligned (default) # # bad # if a + @@ -14776,49 +14929,49 @@ RuboCop::Cop::Layout::MultilineMethodParameterLineBreaks::MSG = T.let(T.unsafe(n # something_else # end # -# source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#43 +# source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#45 class RuboCop::Cop::Layout::MultilineOperationIndentation < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle include ::RuboCop::Cop::Alignment include ::RuboCop::Cop::MultilineExpressionIndentation extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#49 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#51 def on_and(node); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#53 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#55 def on_or(node); end # @raise [ValidationError] # - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#57 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#59 def validate_config; end private - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#68 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#70 def autocorrect(corrector, node); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#78 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#80 def check_and_or(node); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#109 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#113 def message(node, lhs, rhs); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#83 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#85 def offending_range(node, lhs, rhs, given_style); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#72 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#74 def relevant_node?(node); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#120 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#124 def right_hand_side(send_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#96 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#98 def should_align?(node, rhs, given_style); end end @@ -15106,7 +15259,7 @@ class RuboCop::Cop::Layout::RescueEnsureAlignment < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/layout/rescue_ensure_alignment.rb#72 def autocorrect(corrector, node, alignment_location); end - # source://rubocop//lib/rubocop/cop/layout/rescue_ensure_alignment.rb#202 + # source://rubocop//lib/rubocop/cop/layout/rescue_ensure_alignment.rb#210 def begin_end_alignment_style; end # Check alignment of node with rescue or ensure modifiers. @@ -15493,6 +15646,8 @@ RuboCop::Cop::Layout::SpaceAroundEqualsInParameterDefault::MSG = T.let(T.unsafe( # # something = 123if test # +# return(foo + bar) +# # # good # something 'test' do |x| # end @@ -15502,193 +15657,195 @@ RuboCop::Cop::Layout::SpaceAroundEqualsInParameterDefault::MSG = T.let(T.unsafe( # # something = 123 if test # -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#27 +# return (foo + bar) +# +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#32 class RuboCop::Cop::Layout::SpaceAroundKeyword < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#41 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#46 def on_and(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#45 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#50 def on_block(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#49 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#54 def on_break(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#53 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#58 def on_case(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#57 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#62 def on_case_match(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#157 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#162 def on_defined?(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#61 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#66 def on_ensure(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#65 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#70 def on_for(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#69 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#74 def on_if(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#73 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#78 def on_if_guard(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#77 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#82 def on_in_pattern(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#81 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#86 def on_kwbegin(node); end # Handle one-line pattern matching syntax (`in`) with `Parser::Ruby27`. # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#86 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#91 def on_match_pattern(node); end # Handle one-line pattern matching syntax (`in`) with `Parser::Ruby30`. # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#93 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#98 def on_match_pattern_p(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#97 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#102 def on_next(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#101 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#106 def on_or(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#105 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#110 def on_postexe(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#109 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#114 def on_preexe(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#113 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#118 def on_resbody(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#117 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#122 def on_rescue(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#121 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#126 def on_return(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#125 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#130 def on_send(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#129 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#134 def on_super(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#137 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#142 def on_unless_guard(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#141 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#146 def on_until(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#145 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#150 def on_when(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#149 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#154 def on_while(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#153 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#158 def on_yield(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#133 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#138 def on_zsuper(node); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#236 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#241 def accept_left_parenthesis?(range); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#240 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#245 def accept_left_square_bracket?(range); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#244 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#249 def accept_namespace_operator?(range); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#229 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#234 def accepted_opening_delimiter?(range, char); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#163 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#168 def check(node, locations, begin_keyword = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#178 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#183 def check_begin(node, range, begin_keyword); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#184 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#189 def check_end(node, range, begin_keyword); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#197 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#202 def check_keyword(node, range); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#193 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#198 def do?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#252 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#257 def namespace_operator?(range, pos); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#256 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#261 def preceded_by_operator?(node, _range); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#248 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#253 def safe_navigation_call?(range, pos); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#218 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#223 def space_after_missing?(range); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#211 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#216 def space_before_missing?(range); end end -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#36 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#41 RuboCop::Cop::Layout::SpaceAroundKeyword::ACCEPT_LEFT_PAREN = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#37 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#42 RuboCop::Cop::Layout::SpaceAroundKeyword::ACCEPT_LEFT_SQUARE_BRACKET = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#38 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#43 RuboCop::Cop::Layout::SpaceAroundKeyword::ACCEPT_NAMESPACE_OPERATOR = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#33 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#38 RuboCop::Cop::Layout::SpaceAroundKeyword::DO = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#31 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#36 RuboCop::Cop::Layout::SpaceAroundKeyword::MSG_AFTER = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#30 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#35 RuboCop::Cop::Layout::SpaceAroundKeyword::MSG_BEFORE = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#35 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#40 RuboCop::Cop::Layout::SpaceAroundKeyword::NAMESPACE_OPERATOR = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#39 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#44 RuboCop::Cop::Layout::SpaceAroundKeyword::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#34 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#39 RuboCop::Cop::Layout::SpaceAroundKeyword::SAFE_NAVIGATION = T.let(T.unsafe(nil), String) # Checks method call operators to not have spaces around them. @@ -15856,6 +16013,12 @@ class RuboCop::Cop::Layout::SpaceAroundOperators < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#115 def on_masgn(node); end + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#154 + def on_match_alt(node); end + + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#158 + def on_match_as(node); end + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#148 def on_match_pattern(node); end @@ -15885,69 +16048,69 @@ class RuboCop::Cop::Layout::SpaceAroundOperators < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#258 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#266 def align_hash_cop_config; end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#197 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#205 def autocorrect(corrector, range, right_operand); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#178 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#186 def check_operator(type, operator, right_operand); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#211 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#219 def enclose_operator_with_space(corrector, range); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#238 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#246 def excess_leading_space?(type, operator, with_space); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#253 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#261 def excess_trailing_space?(right_operand, with_space); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#279 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#287 def force_equal_sign_alignment?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#262 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#270 def hash_table_style?; end # @yield [msg] # - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#192 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#200 def offense(type, operator, with_space, right_operand); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#224 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#232 def offense_message(type, operator, with_space, right_operand); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#174 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#182 def operator_with_regular_syntax?(send_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#168 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#176 def regular_operator?(send_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#283 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#291 def should_not_have_surrounding_space?(operator, right_operand); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#269 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#277 def space_around_exponent_operator?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#273 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#281 def space_around_slash_operator?(right_operand); end class << self @@ -16079,13 +16242,6 @@ class RuboCop::Cop::Layout::SpaceBeforeBrackets < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/layout/space_before_brackets.rb#24 def on_send(node); end - - private - - # @return [Boolean] - # - # source://rubocop//lib/rubocop/cop/layout/space_before_brackets.rb#39 - def dot_before_brackets?(node, receiver_end_pos, selector_begin_pos); end end # source://rubocop//lib/rubocop/cop/layout/space_before_brackets.rb#21 @@ -16349,64 +16505,67 @@ class RuboCop::Cop::Layout::SpaceInsideArrayLiteralBrackets < ::RuboCop::Cop::Ba private - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#119 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#124 def array_brackets(node); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#105 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#110 def autocorrect(corrector, node); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#227 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#232 def compact(corrector, bracket, side); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#213 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#218 def compact_corrections(corrector, node, left, right); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#205 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#210 def compact_offense(node, token, side: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#167 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#172 def compact_offenses(node, left, right, start_ok, end_ok); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#128 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#133 def empty_config; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#136 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#141 def end_has_own_line?(token); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#143 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#106 + def find_node_with_brackets(node); end + + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#148 def index_for(node, token); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#151 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#156 def issue_offenses(node, left, right, start_ok, end_ok); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#147 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#152 def line_and_column_for(token); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#188 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#193 def multi_dimensional_array?(node, token, side: T.unsafe(nil)); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#199 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#204 def next_to_bracket?(token, side: T.unsafe(nil)); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#163 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#168 def next_to_comment?(node, token); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#132 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#137 def next_to_newline?(node, token); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#180 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#185 def qualifies_for_compact?(node, token, side: T.unsafe(nil)); end end @@ -17303,6 +17462,11 @@ module RuboCop::Cop::LineLengthHelp private + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#28 + def allow_qualified_name?; end + # @return [Boolean] # # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#24 @@ -17310,46 +17474,52 @@ module RuboCop::Cop::LineLengthHelp # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#28 - def allowed_uri_position?(line, uri_range); end + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#32 + def allowed_position?(line, range); end # @return [Boolean] # # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#15 def directive_on_source_line?(line_index); end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#73 - def extend_uri_end_position(line, end_position); end + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#85 + def extend_end_position(line, end_position); end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#36 - def find_excessive_uri_range(line); end + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#40 + def find_excessive_range(line, type); end # @return [Boolean] # # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#11 def ignore_cop_directives?; end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#60 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#72 def indentation_difference(line); end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#32 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#36 def line_length(line); end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#111 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#127 def line_length_without_directive(line); end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#52 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#64 + def match_qualified_names(string); end + + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#56 def match_uris(string); end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#89 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#116 + def qualified_name_regexp; end + + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#101 def tab_indentation_width; end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#94 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#106 def uri_regexp; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#104 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#120 def valid_uri?(uri_ish_string); end end @@ -18719,7 +18889,7 @@ class RuboCop::Cop::Lint::DeprecatedOpenSSLConstant < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb#66 def autocorrect(corrector, node); end - # source://rubocop//lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb#130 + # source://rubocop//lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb#133 def build_cipher_arguments(node, algorithm_name, no_arguments); end # source://rubocop//lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb#93 @@ -19183,6 +19353,10 @@ RuboCop::Cop::Lint::DuplicateMatchPattern::MSG = T.let(T.unsafe(nil), String) # Checks for duplicated instance (or singleton) method # definitions. # +# NOTE: Aliasing a method to itself is allowed, as it indicates that +# the developer intends to suppress Ruby's method redefinition warnings. +# See https://bugs.ruby-lang.org/issues/13574. +# # @example # # # bad @@ -19216,6 +19390,18 @@ RuboCop::Cop::Lint::DuplicateMatchPattern::MSG = T.let(T.unsafe(nil), String) # end # # alias bar foo +# +# # good +# alias foo foo +# def foo +# 1 +# end +# +# # good +# alias_method :foo, :foo +# def foo +# 1 +# end # @example AllCops:ActiveSupportExtensionsEnabled: false (default) # # # good @@ -19256,92 +19442,92 @@ RuboCop::Cop::Lint::DuplicateMatchPattern::MSG = T.let(T.unsafe(nil), String) # delegate :foo, to: :bar # end # -# source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#84 +# source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#100 class RuboCop::Cop::Lint::DuplicateMethods < ::RuboCop::Cop::Base # @return [DuplicateMethods] a new instance of DuplicateMethods # - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#89 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#105 def initialize(config = T.unsafe(nil), options = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#127 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#145 def alias_method?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#132 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#150 def delegate_method?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#115 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#131 def method_alias?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#119 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#135 def on_alias(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#95 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#111 def on_def(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#103 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#119 def on_defs(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#142 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#160 def on_send(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#140 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#158 def sym_name(param0 = T.unsafe(nil)); end private - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#158 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#179 def check_const_receiver(node, name, const_name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#165 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#186 def check_self_receiver(node, name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#187 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#208 def delegate_prefix(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#275 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#296 def found_attr(node, args, readable: T.unsafe(nil), writable: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#203 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#224 def found_instance_method(node, name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#226 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#247 def found_method(node, method_name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#216 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#237 def found_sclass_method(node, name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#199 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#220 def hash_value(node, key); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#253 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#274 def location(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#285 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#306 def lookup_constant(node, const_name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#172 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#193 def message_for_dup(node, method_name, key); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#245 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#266 def method_key(node, method_name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#261 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#282 def on_attr(node, attr_name, args); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#177 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#198 def on_delegate(node, method_names); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#303 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#324 def qualified_name(enclosing, namespace, mod_name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#317 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#338 def source_location(node); end end -# source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#85 +# source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#101 RuboCop::Cop::Lint::DuplicateMethods::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#86 +# source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#102 RuboCop::Cop::Lint::DuplicateMethods::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # Checks for duplicate elements in `Regexp` character classes. @@ -19365,57 +19551,38 @@ class RuboCop::Cop::Lint::DuplicateRegexpCharacterClassElement < ::RuboCop::Cop: include ::RuboCop::Cop::RangeHelp extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#37 + # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#35 def each_repeated_character_class_element_loc(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#29 + # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#27 def on_regexp(node); end private - # @return [Boolean] - # - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#102 - def escaped_octal?(string); end - - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#54 + # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#52 def group_expressions(node, expressions); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#110 + # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#73 def interpolation_locs(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#106 - def octal?(char); end - - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#71 - def pop_octal_digits(current_child, expressions); end - - # @return [Boolean] - # - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#89 + # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#60 def skip_expression?(expr); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#80 - def source_range(children); end - # Since we blank interpolations with a space for every char of the interpolation, we would # mark every space (except the first) as duplicate if we do not skip regexp_parser nodes # that are within an interpolation. # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#96 + # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#67 def within_interpolation?(node, child); end end # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#25 RuboCop::Cop::Lint::DuplicateRegexpCharacterClassElement::MSG_REPEATED_ELEMENT = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#27 -RuboCop::Cop::Lint::DuplicateRegexpCharacterClassElement::OCTAL_DIGITS_AFTER_ESCAPE = T.let(T.unsafe(nil), Integer) - # Checks for duplicate ``require``s and ``require_relative``s. # # @example @@ -20380,21 +20547,25 @@ class RuboCop::Cop::Lint::FloatComparison < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#122 - def check_numeric_returning_method(node); end - - # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#111 - def check_send(node); end - # @return [Boolean] # # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#90 def float?(node); end + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#111 + def float_send?(node); end + # @return [Boolean] # # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#105 def literal_safe?(node); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#122 + def numeric_returning_method?(node); end end # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#59 @@ -21195,70 +21366,75 @@ class RuboCop::Cop::Lint::LiteralAsCondition < ::RuboCop::Cop::Base include ::RuboCop::Cop::RangeHelp extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#160 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#174 def message(node); end # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#45 def on_and(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#125 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#137 def on_case(case_node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#140 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#154 def on_case_match(case_match_node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#57 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#69 def on_if(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#154 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#57 + def on_or(node); end + + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#168 def on_send(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#95 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#107 def on_until(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#110 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#122 def on_until_post(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#65 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#77 def on_while(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#80 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#92 def on_while_post(node); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#175 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#189 def basic_literal?(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#207 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#221 def check_case(case_node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#166 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#180 def check_for_literal(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#187 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#201 def check_node(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#216 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#230 def condition(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#231 - def condition_evaluation(node, cond); end + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#245 + def condition_evaluation?(node, cond); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#240 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#254 def correct_if_node(node, cond); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#197 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#211 def handle_node(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#183 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#197 def primitive_array?(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#224 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#238 def when_conditions_range(when_node); end end @@ -21530,21 +21706,21 @@ class RuboCop::Cop::Lint::MissingCopEnableDirective < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#70 + # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#69 def acceptable_range?(cop, line_range); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#104 + # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#103 def department_enabled?(cop, comment); end - # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#64 + # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#63 def each_missing_enable; end - # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#87 + # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#86 def max_range; end - # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#91 + # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#90 def message(cop, comment, type = T.unsafe(nil)); end end @@ -22603,33 +22779,33 @@ RuboCop::Cop::Lint::NumberedParameterAssignment::NUM_PARAM_MSG = T.let(T.unsafe( class RuboCop::Cop::Lint::NumericOperationWithConstantResult < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#56 + # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#57 def abbreviated_assignment_with_constant_result?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#59 + # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#60 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#69 + # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#70 def on_op_asgn(node); end - # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#59 + # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#60 def on_send(node); end - # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#52 + # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#53 def operation_with_constant_result?(param0 = T.unsafe(nil)); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#80 + # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#81 def constant_result?(lhs, operation, rhs); end end -# source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#48 +# source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#49 RuboCop::Cop::Lint::NumericOperationWithConstantResult::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#49 +# source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#50 RuboCop::Cop::Lint::NumericOperationWithConstantResult::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # Checks for unintended or-assignment to a constant. @@ -23478,6 +23654,15 @@ RuboCop::Cop::Lint::RedundantRequireStatement::RUBY_22_LOADED_FEATURES = T.let(T # In the example below, the safe navigation operator (`&.`) is unnecessary # because `NilClass` has methods like `respond_to?` and `is_a?`. # +# The `InferNonNilReceiver` option specifies whether to look into previous code +# paths to infer if the receiver can't be nil. This check is unsafe because the receiver +# can be redefined between the safe navigation call and previous regular method call. +# It does the inference only in the current scope, e.g. within the same method definition etc. +# +# The `AdditionalNilMethods` option specifies additional custom methods which are +# defined on `NilClass`. When `InferNonNilReceiver` is set, they are used to determine +# whether the receiver can be nil. +# # @example # # bad # CamelCaseConst&.do_something @@ -23486,6 +23671,20 @@ RuboCop::Cop::Lint::RedundantRequireStatement::RUBY_22_LOADED_FEATURES = T.let(T # CamelCaseConst.do_something # # # bad +# foo.to_s&.strip +# foo.to_i&.zero? +# foo.to_f&.zero? +# foo.to_a&.size +# foo.to_h&.size +# +# # good +# foo.to_s.strip +# foo.to_i.zero? +# foo.to_f.zero? +# foo.to_a.size +# foo.to_h.size +# +# # bad # do_something if attrs&.respond_to?(:[]) # # # good @@ -23532,52 +23731,106 @@ RuboCop::Cop::Lint::RedundantRequireStatement::RUBY_22_LOADED_FEATURES = T.let(T # # good # do_something if attrs.nil_safe_method(:[]) # do_something if attrs&.not_nil_safe_method(:[]) +# @example InferNonNilReceiver: false (default) +# # good +# foo.bar +# foo&.baz +# @example InferNonNilReceiver: true +# # bad +# foo.bar +# foo&.baz # would raise on previous line if `foo` is nil # -# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#84 +# # good +# foo.bar +# foo.baz +# +# # bad +# if foo.condition? +# foo&.bar +# end +# +# # good +# if foo.condition? +# foo.bar +# end +# +# # good (different scopes) +# def method1 +# foo.bar +# end +# +# def method2 +# foo&.bar +# end +# @example AdditionalNilMethods: [present?] +# # good +# foo.present? +# foo&.bar +# +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#145 class RuboCop::Cop::Lint::RedundantSafeNavigation < ::RuboCop::Cop::Base include ::RuboCop::Cop::AllowedMethods extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#101 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#166 def conversion_with_default?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#113 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#178 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#123 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#200 def on_or(node); end - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#96 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#161 def respond_to_nil_specific_method?(param0 = T.unsafe(nil)); end private + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#252 + def additional_nil_methods; end + # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#139 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#216 def assume_receiver_instance_exists?(receiver); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#145 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#233 def check?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#154 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#244 def condition?(parent, node); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#222 + def guaranteed_instance?(node); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#248 + def infer_non_nil_receiver?; end end -# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#88 +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#158 +RuboCop::Cop::Lint::RedundantSafeNavigation::GUARANTEED_INSTANCE_METHODS = T.let(T.unsafe(nil), Array) + +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#149 RuboCop::Cop::Lint::RedundantSafeNavigation::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#89 +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#150 RuboCop::Cop::Lint::RedundantSafeNavigation::MSG_LITERAL = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#91 +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#151 +RuboCop::Cop::Lint::RedundantSafeNavigation::MSG_NON_NIL = T.let(T.unsafe(nil), String) + +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#154 RuboCop::Cop::Lint::RedundantSafeNavigation::NIL_SPECIFIC_METHODS = T.let(T.unsafe(nil), Set) -# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#93 +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#156 RuboCop::Cop::Lint::RedundantSafeNavigation::SNAKE_CASE = T.let(T.unsafe(nil), Regexp) # Checks for unneeded usages of splat expansion. @@ -24284,7 +24537,7 @@ end # source://rubocop//lib/rubocop/cop/lint/rescue_exception.rb#24 RuboCop::Cop::Lint::RescueException::MSG = T.let(T.unsafe(nil), String) -# Check for arguments to `rescue` that will result in a `TypeError` +# Checks for arguments to `rescue` that will result in a `TypeError` # if an exception is raised. # # @example @@ -24655,62 +24908,79 @@ RuboCop::Cop::Lint::ScriptPermission::SHEBANG = T.let(T.unsafe(nil), String) # # # good (method calls possibly can return different results) # hash[foo] = hash[foo] +# @example AllowRBSInlineAnnotation:true +# # good +# foo = foo #: Integer +# foo, bar = foo, bar #: Integer +# Foo = Foo #: Integer +# hash['foo'] = hash['foo'] #: Integer +# obj.attr = obj.attr #: Integer # -# source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#26 +# source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#34 class RuboCop::Cop::Lint::SelfAssignment < ::RuboCop::Cop::Base - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#67 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#82 def on_and_asgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#56 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#67 def on_casgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#36 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#44 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#45 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#55 def on_cvasgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#45 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#55 def on_gvasgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#45 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#55 def on_ivasgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#45 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#55 def on_lvasgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#63 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#75 def on_masgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#67 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#82 def on_or_asgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#36 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#44 def on_send(node); end private - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#101 + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#134 + def allow_rbs_inline_annotation?; end + + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#119 def handle_attribute_assignment(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#90 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#107 def handle_key_assignment(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#74 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#91 def multiple_self_assignment?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#85 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#130 + def rbs_inline_annotation?(node); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#102 def rhs_matches_lhs?(rhs, lhs); end end -# source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#29 +# source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#37 RuboCop::Cop::Lint::SelfAssignment::ASSIGNMENT_TYPE_TO_RHS_TYPE = T.let(T.unsafe(nil), Hash) -# source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#27 +# source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#35 RuboCop::Cop::Lint::SelfAssignment::MSG = T.let(T.unsafe(nil), String) # Checks for `send`, `public_send`, and `__send__` methods @@ -24864,17 +25134,17 @@ class RuboCop::Cop::Lint::ShadowedArgument < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/lint/shadowed_argument.rb#82 def check_argument(argument); end + # Check whether the given node is always executed or not + # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/shadowed_argument.rb#171 - def ignore_implicit_references?; end + # source://rubocop//lib/rubocop/cop/lint/shadowed_argument.rb#152 + def conditional_assignment?(node, stop_search_node); end - # Check whether the given node is nested into block or conditional. - # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/shadowed_argument.rb#152 - def node_within_block_or_conditional?(node, stop_search_node); end + # source://rubocop//lib/rubocop/cop/lint/shadowed_argument.rb#171 + def ignore_implicit_references?; end # source://rubocop//lib/rubocop/cop/lint/shadowed_argument.rb#144 def reference_pos(node); end @@ -26519,7 +26789,7 @@ class RuboCop::Cop::Lint::UnusedMethodArgument < ::RuboCop::Cop::Base def message(variable); end class << self - # source://rubocop-performance/1.25.0/lib/rubocop-performance.rb#12 + # source://rubocop-performance/1.26.0/lib/rubocop-performance.rb#11 def autocorrect_incompatible_with; end # source://rubocop//lib/rubocop/cop/lint/unused_method_argument.rb#84 @@ -26541,6 +26811,7 @@ end # # # good # CGI.escape('http://example.com') +# URI.encode_uri_component(uri) # Since Ruby 3.1 # URI.encode_www_form([['example', 'param'], ['lang', 'en']]) # URI.encode_www_form(page: 10, locale: 'en') # URI.encode_www_form_component('http://example.com') @@ -26551,31 +26822,32 @@ end # # # good # CGI.unescape(enc_uri) +# URI.decode_uri_component(uri) # Since Ruby 3.1 # URI.decode_www_form(enc_uri) # URI.decode_www_form_component(enc_uri) # -# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#32 +# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#34 class RuboCop::Cop::Lint::UriEscapeUnescape < ::RuboCop::Cop::Base - # source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#57 + # source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#59 def on_send(node); end - # source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#51 + # source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#53 def uri_escape_unescape?(param0 = T.unsafe(nil)); end end -# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#33 +# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#35 RuboCop::Cop::Lint::UriEscapeUnescape::ALTERNATE_METHODS_OF_URI_ESCAPE = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#38 +# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#40 RuboCop::Cop::Lint::UriEscapeUnescape::ALTERNATE_METHODS_OF_URI_UNESCAPE = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#47 +# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#49 RuboCop::Cop::Lint::UriEscapeUnescape::METHOD_NAMES = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#44 +# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#46 RuboCop::Cop::Lint::UriEscapeUnescape::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#48 +# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#50 RuboCop::Cop::Lint::UriEscapeUnescape::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # Identifies places where `URI.regexp` is obsolete and should not be used. @@ -26788,7 +27060,7 @@ class RuboCop::Cop::Lint::UselessAccessModifier < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#298 + # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#302 def any_context_creating_methods?(child); end # @return [Boolean] @@ -26816,7 +27088,7 @@ class RuboCop::Cop::Lint::UselessAccessModifier < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#292 + # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#296 def eval_call?(child); end # @return [Boolean] @@ -26831,7 +27103,7 @@ class RuboCop::Cop::Lint::UselessAccessModifier < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#288 + # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#292 def start_of_new_scope?(child); end end @@ -27232,33 +27504,33 @@ RuboCop::Cop::Lint::UselessMethodDefinition::MSG = T.let(T.unsafe(nil), String) class RuboCop::Cop::Lint::UselessNumericOperation < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#43 + # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#44 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#55 + # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#56 def on_op_asgn(node); end - # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#43 + # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#44 def on_send(node); end - # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#41 + # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#42 def useless_abbreviated_assignment?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#38 + # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#39 def useless_operation?(param0 = T.unsafe(nil)); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#68 + # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#69 def useless?(operation, number); end end -# source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#34 +# source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#35 RuboCop::Cop::Lint::UselessNumericOperation::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#35 +# source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#36 RuboCop::Cop::Lint::UselessNumericOperation::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # Checks for useless OR (`||` and `or`) expressions. @@ -27482,8 +27754,10 @@ class RuboCop::Cop::Lint::UselessRuby2Keywords < ::RuboCop::Cop::Base # `ruby2_keywords` is only allowed if there's a `restarg` and no keyword arguments # + # @return [Boolean] + # # source://rubocop//lib/rubocop/cop/lint/useless_ruby2_keywords.rb#118 - def allowed_arguments(arguments); end + def allowed_arguments?(arguments); end # source://rubocop//lib/rubocop/cop/lint/useless_ruby2_keywords.rb#109 def find_method_definition(node, method_name); end @@ -27650,6 +27924,52 @@ RuboCop::Cop::Lint::UselessTimes::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/lint/useless_times.rb#29 RuboCop::Cop::Lint::UselessTimes::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) +# source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#6 +module RuboCop::Cop::Lint::Utils; end + +# Utility class that checks if the receiver can't be nil. +# +# source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#8 +class RuboCop::Cop::Lint::Utils::NilReceiverChecker + # @return [NilReceiverChecker] a new instance of NilReceiverChecker + # + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#11 + def initialize(receiver, additional_nil_methods); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#17 + def cant_be_nil?; end + + private + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#24 + def _cant_be_nil?(node, receiver); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#108 + def else_branch?(node); end + + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#112 + def find_top_if(node); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#81 + def non_nil_method?(method_name); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#86 + def sole_condition_of_parent_if?(node); end +end + +# source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#9 +RuboCop::Cop::Lint::Utils::NilReceiverChecker::NIL_METHODS = T.let(T.unsafe(nil), Set) + # Checks for operators, variables, literals, lambda, proc and nonmutating # methods used in void context. # @@ -27663,6 +27983,12 @@ RuboCop::Cop::Lint::UselessTimes::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # enumerator.each { |item| item >= 2 } #=> [2, 3] # ---- # +# NOTE: Return values in assignment method definitions such as `def foo=(arg)` are +# detected because they are in a void context. However, autocorrection does not remove +# the return value, as that would change behavior. In such cases, whether to remove +# the return value or rename the method to something more appropriate should be left to +# the user. +# # @example CheckForMethodsWithNoSideEffects: false (default) # # bad # def some_method @@ -27697,125 +28023,125 @@ RuboCop::Cop::Lint::UselessTimes::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # do_something(some_array) # end # -# source://rubocop//lib/rubocop/cop/lint/void.rb#53 +# source://rubocop//lib/rubocop/cop/lint/void.rb#59 class RuboCop::Cop::Lint::Void < ::RuboCop::Cop::Base include ::RuboCop::Cop::RangeHelp extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/lint/void.rb#91 + # source://rubocop//lib/rubocop/cop/lint/void.rb#97 def on_begin(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#81 + # source://rubocop//lib/rubocop/cop/lint/void.rb#87 def on_block(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#96 + # source://rubocop//lib/rubocop/cop/lint/void.rb#102 def on_ensure(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#81 + # source://rubocop//lib/rubocop/cop/lint/void.rb#87 def on_itblock(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#91 + # source://rubocop//lib/rubocop/cop/lint/void.rb#97 def on_kwbegin(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#81 + # source://rubocop//lib/rubocop/cop/lint/void.rb#87 def on_numblock(node); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/void.rb#262 + # source://rubocop//lib/rubocop/cop/lint/void.rb#269 def all_keys_entirely_literal?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/void.rb#266 + # source://rubocop//lib/rubocop/cop/lint/void.rb#273 def all_values_entirely_literal?(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#240 + # source://rubocop//lib/rubocop/cop/lint/void.rb#247 def autocorrect_nonmutating_send(corrector, node, suggestion); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#234 + # source://rubocop//lib/rubocop/cop/lint/void.rb#240 def autocorrect_void_expression(corrector, node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#221 + # source://rubocop//lib/rubocop/cop/lint/void.rb#227 def autocorrect_void_op(corrector, node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#102 + # source://rubocop//lib/rubocop/cop/lint/void.rb#108 def check_begin(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#206 + # source://rubocop//lib/rubocop/cop/lint/void.rb#212 def check_ensure(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#116 + # source://rubocop//lib/rubocop/cop/lint/void.rb#122 def check_expression(expr); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#164 + # source://rubocop//lib/rubocop/cop/lint/void.rb#170 def check_literal(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#188 + # source://rubocop//lib/rubocop/cop/lint/void.rb#194 def check_nonmutating(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#172 + # source://rubocop//lib/rubocop/cop/lint/void.rb#178 def check_self(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#146 + # source://rubocop//lib/rubocop/cop/lint/void.rb#152 def check_var(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#180 + # source://rubocop//lib/rubocop/cop/lint/void.rb#186 def check_void_expression(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#130 + # source://rubocop//lib/rubocop/cop/lint/void.rb#136 def check_void_op(node, &block); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/void.rb#249 + # source://rubocop//lib/rubocop/cop/lint/void.rb#256 def entirely_literal?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/lint/void.rb#214 + # source://rubocop//lib/rubocop/cop/lint/void.rb#220 def in_void_context?(node); end end -# source://rubocop//lib/rubocop/cop/lint/void.rb#66 +# source://rubocop//lib/rubocop/cop/lint/void.rb#72 RuboCop::Cop::Lint::Void::BINARY_OPERATORS = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#60 +# source://rubocop//lib/rubocop/cop/lint/void.rb#66 RuboCop::Cop::Lint::Void::CONST_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/void.rb#63 +# source://rubocop//lib/rubocop/cop/lint/void.rb#69 RuboCop::Cop::Lint::Void::EXPRESSION_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/void.rb#61 +# source://rubocop//lib/rubocop/cop/lint/void.rb#67 RuboCop::Cop::Lint::Void::LIT_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/void.rb#76 +# source://rubocop//lib/rubocop/cop/lint/void.rb#82 RuboCop::Cop::Lint::Void::METHODS_REPLACEABLE_BY_EACH = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#78 +# source://rubocop//lib/rubocop/cop/lint/void.rb#84 RuboCop::Cop::Lint::Void::NONMUTATING_METHODS = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#69 +# source://rubocop//lib/rubocop/cop/lint/void.rb#75 RuboCop::Cop::Lint::Void::NONMUTATING_METHODS_WITH_BANG_VERSION = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#64 +# source://rubocop//lib/rubocop/cop/lint/void.rb#70 RuboCop::Cop::Lint::Void::NONMUTATING_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/void.rb#68 +# source://rubocop//lib/rubocop/cop/lint/void.rb#74 RuboCop::Cop::Lint::Void::OPERATORS = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#58 +# source://rubocop//lib/rubocop/cop/lint/void.rb#64 RuboCop::Cop::Lint::Void::OP_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/void.rb#62 +# source://rubocop//lib/rubocop/cop/lint/void.rb#68 RuboCop::Cop::Lint::Void::SELF_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/void.rb#67 +# source://rubocop//lib/rubocop/cop/lint/void.rb#73 RuboCop::Cop::Lint::Void::UNARY_OPERATORS = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#59 +# source://rubocop//lib/rubocop/cop/lint/void.rb#65 RuboCop::Cop::Lint::Void::VAR_MSG = T.let(T.unsafe(nil), String) # Common functionality for obtaining source ranges from regexp matches @@ -29085,24 +29411,24 @@ class RuboCop::Cop::Minitest::MultipleAssertions < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/exclude_limit.rb#11 def max=(value); end - # source://rubocop-minitest/0.38.1/lib/rubocop/cop/minitest/multiple_assertions.rb#37 + # source://rubocop-minitest/0.38.2/lib/rubocop/cop/minitest/multiple_assertions.rb#37 def on_class(class_node); end private - # source://rubocop-minitest/0.38.1/lib/rubocop/cop/minitest/multiple_assertions.rb#54 + # source://rubocop-minitest/0.38.2/lib/rubocop/cop/minitest/multiple_assertions.rb#54 def assertions_count(node); end - # source://rubocop-minitest/0.38.1/lib/rubocop/cop/minitest/multiple_assertions.rb#62 + # source://rubocop-minitest/0.38.2/lib/rubocop/cop/minitest/multiple_assertions.rb#62 def assertions_count_based_on_type(node); end - # source://rubocop-minitest/0.38.1/lib/rubocop/cop/minitest/multiple_assertions.rb#77 + # source://rubocop-minitest/0.38.2/lib/rubocop/cop/minitest/multiple_assertions.rb#77 def assertions_count_in_assignment(node); end - # source://rubocop-minitest/0.38.1/lib/rubocop/cop/minitest/multiple_assertions.rb#99 + # source://rubocop-minitest/0.38.2/lib/rubocop/cop/minitest/multiple_assertions.rb#99 def assertions_count_in_branches(branches); end - # source://rubocop-minitest/0.38.1/lib/rubocop/cop/minitest/multiple_assertions.rb#103 + # source://rubocop-minitest/0.38.2/lib/rubocop/cop/minitest/multiple_assertions.rb#103 def max_assertions; end end @@ -29764,7 +30090,7 @@ class RuboCop::Cop::Naming::BlockForwarding < ::RuboCop::Cop::Base def use_kwarg_in_method_definition?(node); end class << self - # source://rubocop//lib/rubocop/cop/naming/block_forwarding.rb#64 + # source://rubocop-performance/1.26.0/lib/rubocop-performance.rb#11 def autocorrect_incompatible_with; end end end @@ -30002,9 +30328,6 @@ class RuboCop::Cop::Naming::FileName < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/naming/file_name.rb#204 def match_acronym?(expected, name); end - # source://rubocop//lib/rubocop/cop/naming/file_name.rb#172 - def match_namespace(node, namespace, expected); end - # @return [Boolean] # # source://rubocop//lib/rubocop/cop/naming/file_name.rb#90 @@ -30015,6 +30338,11 @@ class RuboCop::Cop::Naming::FileName < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/naming/file_name.rb#86 def matching_definition?(file_path); end + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/naming/file_name.rb#172 + def namespace_matches?(node, namespace, expected); end + # source://rubocop//lib/rubocop/cop/naming/file_name.rb#98 def no_definition_message(basename, file_path); end @@ -30556,12 +30884,52 @@ RuboCop::Cop::Naming::MemoizedInstanceVariableName::UNDERSCORE_REQUIRED = T.let( # # # good # def foo_bar; end +# +# # bad +# define_method :fooBar do +# end +# +# # good +# define_method :foo_bar do +# end +# +# # bad +# Struct.new(:fooBar) +# +# # good +# Struct.new(:foo_bar) +# +# # bad +# alias_method :fooBar, :some_method +# +# # good +# alias_method :foo_bar, :some_method # @example EnforcedStyle: camelCase # # bad # def foo_bar; end # # # good # def fooBar; end +# +# # bad +# define_method :foo_bar do +# end +# +# # good +# define_method :fooBar do +# end +# +# # bad +# Struct.new(:foo_bar) +# +# # good +# Struct.new(:fooBar) +# +# # bad +# alias_method :foo_bar, :some_method +# +# # good +# alias_method :fooBar, :some_method # @example ForbiddenIdentifiers: ['def', 'super'] # # bad # def def; end @@ -30571,7 +30939,7 @@ RuboCop::Cop::Naming::MemoizedInstanceVariableName::UNDERSCORE_REQUIRED = T.let( # def release_v1; end # def api_gen1; end # -# source://rubocop//lib/rubocop/cop/naming/method_name.rb#59 +# source://rubocop//lib/rubocop/cop/naming/method_name.rb#99 class RuboCop::Cop::Naming::MethodName < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle include ::RuboCop::Cop::ConfigurableFormatting @@ -30581,47 +30949,77 @@ class RuboCop::Cop::Naming::MethodName < ::RuboCop::Cop::Base include ::RuboCop::Cop::ForbiddenIdentifiers include ::RuboCop::Cop::ForbiddenPattern - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#90 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#122 + def define_data?(param0 = T.unsafe(nil)); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#119 + def new_struct?(param0 = T.unsafe(nil)); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#149 + def on_alias(node); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#138 def on_def(node); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#90 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#138 def on_defs(node); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#75 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#124 def on_send(node); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#73 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#116 def str_name(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#70 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#113 def sym_name(param0 = T.unsafe(nil)); end private - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#120 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#230 def attr_name(name_item); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#103 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#206 def forbidden_name?(name); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#131 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#174 + def handle_alias_method(node); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#181 + def handle_attr_accessor(node); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#168 + def handle_define_data(node); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#155 + def handle_define_method(node); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#196 + def handle_method_name(node, name); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#161 + def handle_new_struct(node); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#245 def message(style); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#124 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#234 def range_position(node); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#107 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#211 def register_forbidden_name(node); end end -# source://rubocop//lib/rubocop/cop/naming/method_name.rb#66 +# source://rubocop//lib/rubocop/cop/naming/method_name.rb#106 RuboCop::Cop::Naming::MethodName::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/naming/method_name.rb#67 +# source://rubocop//lib/rubocop/cop/naming/method_name.rb#107 RuboCop::Cop::Naming::MethodName::MSG_FORBIDDEN = T.let(T.unsafe(nil), String) +# source://rubocop//lib/rubocop/cop/naming/method_name.rb#109 +RuboCop::Cop::Naming::MethodName::OPERATOR_METHODS = T.let(T.unsafe(nil), Set) + # Checks method parameter names for how descriptive they # are. It is highly configurable. # @@ -30681,10 +31079,11 @@ end # end in a question mark. # # The cop assesses a predicate method as one that returns boolean values. Likewise, -# a method that only returns literal values is assessed as non-predicate. The cop does -# not make an assessment if the return type is unknown (method calls, variables, etc.). +# a method that only returns literal values is assessed as non-predicate. Other predicate +# method calls are assumed to return boolean values. The cop does not make an assessment +# if the return type is unknown (non-predicate method calls, variables, etc.). # -# NOTE: Operator methods (`def ==`, etc.) are ignored. +# NOTE: The `initialize` method and operator methods (`def ==`, etc.) are ignored. # # By default, the cop runs in `conservative` mode, which allows a method to be named # with a question mark as long as at least one return value is boolean. In `aggressive` @@ -30696,6 +31095,11 @@ end # guidelines. By default, `call` is allowed. The cop also has `AllowedPatterns` # configuration to allow method names by regular expression. # +# Although returning a call to another predicate method is treated as a boolean value, +# certain method names can be known to not return a boolean, despite ending in a `?` +# (for example, `Numeric#nonzero?` returns `self` or `nil`). These methods can be +# configured using `NonBooleanPredicates`. +# # The cop can furthermore be configured to allow all bang methods (method names # ending with `!`), with `AllowBangMethods: true` (default false). # @@ -30720,6 +31124,36 @@ end # 5 # end # +# # bad +# def foo +# x == y +# end +# +# # good +# def foo? +# x == y +# end +# +# # bad +# def foo +# !x +# end +# +# # good +# def foo? +# !x +# end +# +# # bad - returns the value of another predicate method +# def foo +# bar? +# end +# +# # good +# def foo? +# bar? +# end +# # # good - operator method # def ==(other) # hash == other.hash @@ -30746,6 +31180,16 @@ end # return unless bar? # true # end +# @example AllowedMethods: [call] (default) +# # good +# def call +# foo == bar +# end +# @example AllowedPatterns: [\Afoo] +# # good +# def foo? +# 'foo' +# end # @example AllowBangMethods: false (default) # # bad # def save! @@ -30757,92 +31201,109 @@ end # true # end # -# source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#92 +# source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#140 class RuboCop::Cop::Naming::PredicateMethod < ::RuboCop::Cop::Base include ::RuboCop::Cop::AllowedMethods include ::RuboCop::Cop::AllowedPattern - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#99 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#147 def on_def(node); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#99 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#147 def on_defs(node); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#123 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#172 def acceptable?(return_values); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#151 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#202 def all_return_values_boolean?(return_values); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#239 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#302 def allow_bang_methods?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#115 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#163 def allowed?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#233 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#296 def allowed_bang_method?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#206 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#266 def and_or?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#158 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#209 def boolean_return?(value); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#229 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#292 def conservative?; end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#210 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#270 def extract_and_or_clauses(node); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#217 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#277 def extract_conditional_branches(node); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#176 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#236 def extract_return_value(node); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#189 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#249 def last_value(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#133 - def non_comparison_call?(value); end + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#215 + def method_returning_boolean?(value); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#162 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#222 def potential_non_predicate?(return_values); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#194 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#254 def process_return_values(return_values); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#137 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#188 def return_values(node); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#182 + def unknown_method_call?(value); end + + # If a method ending in `?` is known to not return a boolean value, + # (for example, `Numeric#nonzero?`) it should be treated as a non-boolean + # value, despite the method naming. + # + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#309 + def wayward_predicate?(name); end + + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#313 + def wayward_predicates; end end -# source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#97 +# source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#145 RuboCop::Cop::Naming::PredicateMethod::MSG_NON_PREDICATE = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#96 +# source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#144 RuboCop::Cop::Naming::PredicateMethod::MSG_PREDICATE = T.let(T.unsafe(nil), String) # Checks that predicate method names end with a question mark and @@ -30973,8 +31434,10 @@ class RuboCop::Cop::Naming::PredicatePrefix < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/naming/predicate_prefix.rb#182 def message(method_name, new_name); end + # @return [Boolean] + # # source://rubocop//lib/rubocop/cop/naming/predicate_prefix.rb#198 - def method_definition_macros(macro_name); end + def method_definition_macro?(macro_name); end # source://rubocop//lib/rubocop/cop/naming/predicate_prefix.rb#190 def predicate_prefixes; end @@ -31743,44 +32206,44 @@ class RuboCop::Cop::ParenthesesCorrector # Add a comma back after the heredoc identifier # - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#74 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#77 def add_heredoc_comma(corrector, node); end # If the node contains a heredoc, remove the comma too # It'll be added back in the right place later # - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#64 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#67 def extend_range_for_heredoc(node, range); end # If removing parentheses leaves a comma on its own line, remove all the whitespace # preceding it to prevent a syntax error. # - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#41 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#44 def handle_orphaned_comma(corrector, node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#80 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#83 def heredoc?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#28 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#31 def next_char_is_question_mark?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#32 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#35 def only_closing_paren_before_comma?(node); end # Get a range for the closing parenthesis and all whitespace to the left of it # - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#51 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#54 def parens_range(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#24 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#27 def ternary_condition?(node); end end end @@ -32597,20 +33060,21 @@ RuboCop::Cop::Security::CompoundHash::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Ar # # eval(something) # binding.eval(something) +# Kernel.eval(something) # -# source://rubocop//lib/rubocop/cop/security/eval.rb#14 +# source://rubocop//lib/rubocop/cop/security/eval.rb#15 class RuboCop::Cop::Security::Eval < ::RuboCop::Cop::Base - # source://rubocop//lib/rubocop/cop/security/eval.rb#19 + # source://rubocop//lib/rubocop/cop/security/eval.rb#20 def eval?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/security/eval.rb#23 + # source://rubocop//lib/rubocop/cop/security/eval.rb#24 def on_send(node); end end -# source://rubocop//lib/rubocop/cop/security/eval.rb#15 +# source://rubocop//lib/rubocop/cop/security/eval.rb#16 RuboCop::Cop::Security::Eval::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/security/eval.rb#16 +# source://rubocop//lib/rubocop/cop/security/eval.rb#17 RuboCop::Cop::Security::Eval::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # Checks for the first argument to `IO.read`, `IO.binread`, `IO.write`, `IO.binwrite`, @@ -32732,52 +33196,53 @@ RuboCop::Cop::Security::MarshalLoad::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Arr # # good (literal strings) # open("foo.text") # URI.open("http://example.com") +# URI.parse(url).open # -# source://rubocop//lib/rubocop/cop/security/open.rb#37 +# source://rubocop//lib/rubocop/cop/security/open.rb#38 class RuboCop::Cop::Security::Open < ::RuboCop::Cop::Base - # source://rubocop//lib/rubocop/cop/security/open.rb#46 + # source://rubocop//lib/rubocop/cop/security/open.rb#47 def on_send(node); end - # source://rubocop//lib/rubocop/cop/security/open.rb#42 + # source://rubocop//lib/rubocop/cop/security/open.rb#43 def open?(param0 = T.unsafe(nil)); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/security/open.rb#75 + # source://rubocop//lib/rubocop/cop/security/open.rb#76 def composite_string?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/security/open.rb#83 + # source://rubocop//lib/rubocop/cop/security/open.rb#84 def concatenated_string?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/security/open.rb#79 + # source://rubocop//lib/rubocop/cop/security/open.rb#80 def interpolated_string?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/security/open.rb#57 + # source://rubocop//lib/rubocop/cop/security/open.rb#58 def safe?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/security/open.rb#67 + # source://rubocop//lib/rubocop/cop/security/open.rb#68 def safe_argument?(argument); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/security/open.rb#71 + # source://rubocop//lib/rubocop/cop/security/open.rb#72 def simple_string?(node); end end -# source://rubocop//lib/rubocop/cop/security/open.rb#38 +# source://rubocop//lib/rubocop/cop/security/open.rb#39 RuboCop::Cop::Security::Open::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/security/open.rb#39 +# source://rubocop//lib/rubocop/cop/security/open.rb#40 RuboCop::Cop::Security::Open::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # Checks for the use of YAML class methods which have @@ -33412,54 +33877,57 @@ class RuboCop::Cop::Style::AccessorGrouping < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#74 def check(send_node); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#122 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#125 def class_send_elements(class_node); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#179 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#182 def group_accessors(node, accessors); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#99 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#102 def groupable_accessor?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#142 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#145 def groupable_sibling_accessor?(node, sibling); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#149 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#152 def groupable_sibling_accessors(send_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#134 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#137 def grouped_style?; end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#155 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#158 def message(send_node); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#160 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#163 def preferred_accessors(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#94 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#97 def previous_line_comment?(node); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#185 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#203 + def range_with_trailing_argument_comment(node); end + + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#188 def separate_accessors(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#138 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#141 def separated_style?; end # Group after constants # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#174 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#177 def skip_for_grouping?(node); end end @@ -33851,21 +34319,21 @@ class RuboCop::Cop::Style::ArgumentsForwarding < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector extend ::RuboCop::Cop::TargetRubyVersion - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#160 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#159 def on_def(node); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#160 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#159 def on_defs(node); end private - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#202 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#201 def add_forward_all_offenses(node, send_classifications, forwardable_args); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#385 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#379 def add_parens_if_missing(node, corrector); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#227 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#230 def add_post_ruby_32_offenses(def_node, send_classifications, forwardable_args); end # Checks if forwarding is uses both in blocks and outside of blocks. @@ -33874,7 +34342,7 @@ class RuboCop::Cop::Style::ArgumentsForwarding < ::RuboCop::Cop::Base # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#309 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#312 def all_forwarding_offenses_correctable?(send_classifications); end # Ruby 3.3.0 had a bug where accessing an anonymous block argument inside of a block @@ -33883,215 +34351,215 @@ class RuboCop::Cop::Style::ArgumentsForwarding < ::RuboCop::Cop::Base # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#320 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#323 def allow_anonymous_forwarding_in_block?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#377 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#371 def allow_only_rest_arguments?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#365 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#367 def arguments_range(node, first_node); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#277 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#280 def classification_and_forwards(def_node, send_node, referenced_lvars, forwardable_args); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#262 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#265 def classify_send_nodes(def_node, send_nodes, referenced_lvars, forwardable_args); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#564 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#558 def explicit_block_name?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#184 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#183 def extract_forwardable_args(args); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#252 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#225 + def forward_all_first_argument(node); end + + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#255 def non_splat_or_block_pass_lvar_references(body); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#196 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#195 def only_forwards_all?(send_classifications); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#188 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#187 def redundant_forwardable_named_args(restarg, kwrestarg, blockarg); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#296 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#299 def redundant_named_arg(arg, config_name, keyword); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#354 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#357 def register_forward_all_offense(def_or_send, send_or_arguments, rest_or_splat); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#327 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#330 def register_forward_args_offense(def_arguments_or_send, rest_arg_or_splat); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#343 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#346 def register_forward_block_arg_offense(add_parens, def_arguments_or_send, block_arg); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#335 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#338 def register_forward_kwargs_offense(add_parens, def_arguments_or_send, kwrest_arg_or_splat); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#381 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#375 def use_anonymous_forwarding?; end class << self - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#156 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#155 def autocorrect_incompatible_with; end end end -# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#149 -RuboCop::Cop::Style::ArgumentsForwarding::ADDITIONAL_ARG_TYPES = T.let(T.unsafe(nil), Array) - -# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#152 +# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#151 RuboCop::Cop::Style::ArgumentsForwarding::ARGS_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#154 +# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#153 RuboCop::Cop::Style::ArgumentsForwarding::BLOCK_MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#148 RuboCop::Cop::Style::ArgumentsForwarding::FORWARDING_LVAR_TYPES = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#151 +# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#150 RuboCop::Cop::Style::ArgumentsForwarding::FORWARDING_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#153 +# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#152 RuboCop::Cop::Style::ArgumentsForwarding::KWARGS_MSG = T.let(T.unsafe(nil), String) # Classifies send nodes for possible rest/kwrest/all (including block) forwarding. # -# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#393 +# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#387 class RuboCop::Cop::Style::ArgumentsForwarding::SendNodeClassifier extend ::RuboCop::AST::NodePattern::Macros # @return [SendNodeClassifier] a new instance of SendNodeClassifier # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#422 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#416 def initialize(def_node, send_node, referenced_lvars, forwardable_args, **config); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#450 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#444 def classification; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#406 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#400 def def_all_anonymous_args?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#400 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#394 def extract_forwarded_kwrest_arg(param0 = T.unsafe(nil), param1); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#444 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#438 def forwarded_block_arg; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#403 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#397 def forwarded_block_arg?(param0 = T.unsafe(nil), param1); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#438 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#432 def forwarded_kwrest_arg; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#432 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#426 def forwarded_rest_arg; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#397 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#391 def forwarded_rest_arg?(param0 = T.unsafe(nil), param1); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#415 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#409 def send_all_anonymous_args?(param0 = T.unsafe(nil)); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#535 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#529 def additional_kwargs?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#531 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#525 def additional_kwargs_or_forwarded_kwargs?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#545 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#539 def allow_offense_for_no_block?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#516 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#510 def any_arg_referenced?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#500 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#494 def arguments; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#465 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#459 def can_forward_all?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#539 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#533 def forward_additional_kwargs?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#496 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#490 def forwarded_rest_and_kwrest_args; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#558 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#552 def missing_rest_arg_or_kwrest_arg?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#549 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#543 def no_additional_args?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#524 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#518 def no_post_splat_args?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#492 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#486 def offensive_block_forwarding?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#512 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#506 def referenced_block_arg?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#508 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#502 def referenced_kwrest_arg?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#504 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#498 def referenced_rest_arg?; end # def foo(a = 41, ...) is a syntax error in 3.0. # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#477 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#471 def ruby_30_or_lower_optarg?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#481 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#475 def ruby_32_only_anonymous_forwarding?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#488 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#482 def ruby_32_or_higher_missing_rest_or_kwest?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#520 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#514 def target_ruby_version; end end @@ -34184,12 +34652,17 @@ RuboCop::Cop::Style::ArrayFirstLast::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Arr # In Ruby 3.1, `Array#intersect?` has been added. # -# This cop identifies places where `(array1 & array2).any?` -# or `(array1.intersection(array2)).any?` can be replaced by -# `array1.intersect?(array2)`. +# This cop identifies places where: +# +# * `(array1 & array2).any?` +# * `(array1.intersection(array2)).any?` +# * `array1.any? { |elem| array2.member?(elem) }` +# * `(array1 & array2).count > 0` +# * `(array1 & array2).size > 0` # -# The `array1.intersect?(array2)` method is faster than -# `(array1 & array2).any?` and is more readable. +# can be replaced with `array1.intersect?(array2)`. +# +# `array1.intersect?(array2)` is faster and more readable. # # In cases like the following, compatibility is not ensured, # so it will not be detected when using block argument. @@ -34215,9 +34688,26 @@ RuboCop::Cop::Style::ArrayFirstLast::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Arr # array1.intersection(array2).empty? # array1.intersection(array2).none? # +# # bad +# array1.any? { |elem| array2.member?(elem) } +# array1.none? { |elem| array2.member?(elem) } +# # # good # array1.intersect?(array2) # !array1.intersect?(array2) +# +# # bad +# (array1 & array2).count > 0 +# (array1 & array2).count.positive? +# (array1 & array2).count != 0 +# +# (array1 & array2).count == 0 +# (array1 & array2).count.zero? +# +# # good +# array1.intersect?(array2) +# +# !array1.intersect?(array2) # @example AllCops:ActiveSupportExtensionsEnabled: false (default) # # good # (array1 & array2).present? @@ -34231,54 +34721,104 @@ RuboCop::Cop::Style::ArrayFirstLast::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Arr # array1.intersect?(array2) # !array1.intersect?(array2) # -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#60 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#82 class RuboCop::Cop::Style::ArrayIntersect < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector extend ::RuboCop::Cop::TargetRubyVersion - # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#70 + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#119 + def any_none_block_intersection(param0 = T.unsafe(nil)); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#94 def bad_intersection_check?(param0 = T.unsafe(nil), param1); end - # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#86 + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#105 + def intersection_size_check?(param0 = T.unsafe(nil)); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#154 + def on_block(node); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#142 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#86 + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#154 + def on_itblock(node); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#154 + def on_numblock(node); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#142 def on_send(node); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#103 + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#168 def bad_intersection?(node); end - # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#117 - def message(receiver, argument, method_name, dot, existing); end + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#173 + def bad_intersection_predicates; end + + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#185 + def register_offense(node, replacement); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#113 + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#181 def straight?(method_name); end end -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#67 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#89 RuboCop::Cop::Style::ArrayIntersect::ACTIVE_SUPPORT_PREDICATES = T.let(T.unsafe(nil), Set) -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#80 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#91 +RuboCop::Cop::Style::ArrayIntersect::ARRAY_SIZE_METHODS = T.let(T.unsafe(nil), Set) + +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#137 RuboCop::Cop::Style::ArrayIntersect::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#83 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#139 RuboCop::Cop::Style::ArrayIntersect::NEGATED_METHODS = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#66 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#88 RuboCop::Cop::Style::ArrayIntersect::PREDICATES = T.let(T.unsafe(nil), Set) -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#84 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#140 RuboCop::Cop::Style::ArrayIntersect::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#82 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#138 RuboCop::Cop::Style::ArrayIntersect::STRAIGHT_METHODS = T.let(T.unsafe(nil), Array) +# Use `include?(element)` instead of `intersect?([element])`. +# +# @example +# # bad +# array.intersect?([element]) +# +# # good +# array.include?(element) +# +# source://rubocop//lib/rubocop/cop/style/array_intersect_with_single_element.rb#17 +class RuboCop::Cop::Style::ArrayIntersectWithSingleElement < ::RuboCop::Cop::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop//lib/rubocop/cop/style/array_intersect_with_single_element.rb#29 + def on_csend(node); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect_with_single_element.rb#29 + def on_send(node); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect_with_single_element.rb#25 + def single_element(param0 = T.unsafe(nil)); end +end + +# source://rubocop//lib/rubocop/cop/style/array_intersect_with_single_element.rb#20 +RuboCop::Cop::Style::ArrayIntersectWithSingleElement::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop//lib/rubocop/cop/style/array_intersect_with_single_element.rb#22 +RuboCop::Cop::Style::ArrayIntersectWithSingleElement::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + # Checks for uses of "*" as a substitute for _join_. # # Not all cases can reliably checked, due to Ruby's dynamic @@ -34693,12 +35233,12 @@ class RuboCop::Cop::Style::BitwisePredicate < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/bitwise_predicate.rb#60 def nobits?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/bitwise_predicate.rb#73 + # source://rubocop//lib/rubocop/cop/style/bitwise_predicate.rb#74 def on_send(node); end private - # source://rubocop//lib/rubocop/cop/style/bitwise_predicate.rb#88 + # source://rubocop//lib/rubocop/cop/style/bitwise_predicate.rb#95 def preferred_method(node); end end @@ -34747,7 +35287,7 @@ RuboCop::Cop::Style::BlockComments::END_LENGTH = T.let(T.unsafe(nil), Integer) # source://rubocop//lib/rubocop/cop/style/block_comments.rb#23 RuboCop::Cop::Style::BlockComments::MSG = T.let(T.unsafe(nil), String) -# Check for uses of braces or do/end around single line or +# Checks for uses of braces or do/end around single line or # multi-line blocks. # # Methods that can be either procedural or functional and cannot be @@ -35957,6 +36497,90 @@ end # source://rubocop//lib/rubocop/cop/style/collection_methods.rb#47 RuboCop::Cop::Style::CollectionMethods::MSG = T.let(T.unsafe(nil), String) +# Prefer `Enumerable` predicate methods over expressions with `count`. +# +# The cop checks calls to `count` without arguments, or with a +# block. It doesn't register offenses for `count` with a positional +# argument because its behavior differs from predicate methods (`count` +# matches the argument using `==`, while `any?`, `none?` and `one?` use +# `===`). +# +# NOTE: This cop doesn't check `length` and `size` methods because they +# would yield false positives. For example, `String` implements `length` +# and `size`, but it doesn't include `Enumerable`. +# +# @example +# +# # bad +# x.count.positive? +# x.count > 0 +# x.count != 0 +# +# x.count(&:foo?).positive? +# x.count { |item| item.foo? }.positive? +# +# # good +# x.any? +# +# x.any?(&:foo?) +# x.any? { |item| item.foo? } +# +# # bad +# x.count.zero? +# x.count == 0 +# +# # good +# x.none? +# +# # bad +# x.count == 1 +# x.one? +# @example AllCops:ActiveSupportExtensionsEnabled: false (default) +# +# # good +# x.count > 1 +# @example AllCops:ActiveSupportExtensionsEnabled: true +# +# # bad +# x.count > 1 +# +# # good +# x.many? +# +# source://rubocop//lib/rubocop/cop/style/collection_querying.rb#96 +class RuboCop::Cop::Style::CollectionQuerying < ::RuboCop::Cop::Base + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop//lib/rubocop/cop/style/collection_querying.rb#115 + def count_predicate(param0 = T.unsafe(nil)); end + + # source://rubocop//lib/rubocop/cop/style/collection_querying.rb#132 + def on_send(node); end + + private + + # source://rubocop//lib/rubocop/cop/style/collection_querying.rb#159 + def removal_range(node); end + + # source://rubocop//lib/rubocop/cop/style/collection_querying.rb#149 + def replacement_method(node); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/style/collection_querying.rb#153 + def replacement_supported?(method_name); end +end + +# source://rubocop//lib/rubocop/cop/style/collection_querying.rb#100 +RuboCop::Cop::Style::CollectionQuerying::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop//lib/rubocop/cop/style/collection_querying.rb#104 +RuboCop::Cop::Style::CollectionQuerying::REPLACEMENTS = T.let(T.unsafe(nil), Hash) + +# source://rubocop//lib/rubocop/cop/style/collection_querying.rb#102 +RuboCop::Cop::Style::CollectionQuerying::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + # Checks for methods invoked via the `::` operator instead # of the `.` operator (like `FileUtils::rmdir` instead of `FileUtils.rmdir`). # @@ -36660,7 +37284,7 @@ RuboCop::Cop::Style::ConcatArrayLiterals::MSG_FOR_PERCENT_LITERALS = T.let(T.uns # source://rubocop//lib/rubocop/cop/style/concat_array_literals.rb#31 RuboCop::Cop::Style::ConcatArrayLiterals::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) -# Check for `if` and `case` statements where each branch is used for +# Checks for `if` and `case` statements where each branch is used for # both the assignment and comparison of the same variable # when using the return of the condition can be used instead. # @@ -37330,7 +37954,7 @@ end # source://rubocop//lib/rubocop/cop/style/def_with_parentheses.rb#45 RuboCop::Cop::Style::DefWithParentheses::MSG = T.let(T.unsafe(nil), String) -# Check for chained `dig` calls that can be collapsed into a single `dig`. +# Checks for chained `dig` calls that can be collapsed into a single `dig`. # # @example # # bad @@ -39522,34 +40146,36 @@ RuboCop::Cop::Style::ExplicitBlockArgument::MSG = T.let(T.unsafe(nil), String) class RuboCop::Cop::Style::ExponentialNotation < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle - # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#68 + # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#69 def on_float(node); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#79 + # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#80 def engineering?(node); end - # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#90 - def integral(node); end + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#91 + def integral?(node); end - # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#110 + # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#111 def message(_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#95 + # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#96 def offense?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#74 + # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#75 def scientific?(node); end end -# source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#62 +# source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#63 RuboCop::Cop::Style::ExponentialNotation::MESSAGES = T.let(T.unsafe(nil), Hash) # Suggests `ENV.fetch` for the replacement of `ENV[]`. @@ -39558,7 +40184,19 @@ RuboCop::Cop::Style::ExponentialNotation::MESSAGES = T.let(T.unsafe(nil), Hash) # On the other hand, `ENV.fetch` raises `KeyError` or returns the explicitly # specified default value. # -# @example +# @example DefaultToNil: true (default) +# # bad +# ENV['X'] +# x = ENV['X'] +# +# # good +# ENV.fetch('X', nil) +# x = ENV.fetch('X', nil) +# +# # also good +# !ENV['X'] +# ENV['X'].some_method # (e.g. `.nil?`) +# @example DefaultToNil: false # # bad # ENV['X'] # x = ENV['X'] @@ -39571,14 +40209,14 @@ RuboCop::Cop::Style::ExponentialNotation::MESSAGES = T.let(T.unsafe(nil), Hash) # !ENV['X'] # ENV['X'].some_method # (e.g. `.nil?`) # -# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#25 +# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#38 class RuboCop::Cop::Style::FetchEnvVar < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#32 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#46 def env_with_bracket?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#36 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#50 def on_send(node); end private @@ -39593,12 +40231,12 @@ class RuboCop::Cop::Style::FetchEnvVar < ::RuboCop::Cop::Base # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#106 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#128 def allowable_use?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#49 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#71 def allowed_var?(node); end # The following are allowed cases: @@ -39608,27 +40246,35 @@ class RuboCop::Cop::Style::FetchEnvVar < ::RuboCop::Cop::Base # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#114 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#136 def assigned?(node); end + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#63 + def default_to_nil?; end + # Check if the node is a receiver and receives a message with dot syntax. # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#90 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#112 def message_chained_with_dot?(node); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#127 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#149 def new_code(name_node); end + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#67 + def offense_message; end + # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#85 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#107 def offensive?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#121 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#143 def or_lhs?(node); end # Avoid offending in the following cases: @@ -39636,27 +40282,32 @@ class RuboCop::Cop::Style::FetchEnvVar < ::RuboCop::Cop::Base # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#81 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#103 def partial_matched?(node, condition); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#54 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#76 def used_as_flag?(node); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#61 - def used_if_condition_in_body(node); end + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#83 + def used_if_condition_in_body?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#70 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#92 def used_in_condition?(node, condition); end end -# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#28 -RuboCop::Cop::Style::FetchEnvVar::MSG = T.let(T.unsafe(nil), String) +# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#42 +RuboCop::Cop::Style::FetchEnvVar::MSG_WITHOUT_NIL = T.let(T.unsafe(nil), String) + +# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#41 +RuboCop::Cop::Style::FetchEnvVar::MSG_WITH_NIL = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#29 +# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#43 RuboCop::Cop::Style::FetchEnvVar::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # Prefer to use `File.empty?('path/to/file')` when checking if a file is empty. @@ -40938,32 +41589,32 @@ class RuboCop::Cop::Style::HashConversion < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#137 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#145 def allowed_splat_argument?; end - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#130 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#138 def args_to_hash(args); end - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#117 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#123 def multi_argument(node); end - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#94 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#95 def register_offense_for_hash(node, hash_argument); end - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#103 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#104 def register_offense_for_zip_method(node, zip_method); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#113 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#114 def requires_parens?(node); end - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#71 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#72 def single_argument(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#88 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#89 def use_zip_method_without_argument?(first_argument); end end @@ -42010,13 +42661,13 @@ class RuboCop::Cop::Style::IfUnlessModifier < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#249 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#258 def another_statement_on_same_line?(node); end # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#150 def autocorrect(corrector, node); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#303 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#312 def comment_on_node_line(node); end # @return [Boolean] @@ -42032,12 +42683,12 @@ class RuboCop::Cop::Style::IfUnlessModifier < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#112 def endless_method?(body); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#290 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#299 def extract_heredoc_from(last_argument); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#233 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#242 def line_length_enabled_at_line?(line); end # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#142 @@ -42045,38 +42696,38 @@ class RuboCop::Cop::Style::IfUnlessModifier < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#237 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#246 def named_capture_in_condition?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#241 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#250 def non_eligible_node?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#245 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#254 def non_simple_if_unless?(node); end # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#134 def pattern_matching_nodes(condition); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#307 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#316 def remove_comment(corrector, _node, comment); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#297 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#306 def remove_heredoc(corrector, heredoc); end # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#159 def replacement_for_modifier_form(corrector, node); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#283 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#292 def to_modifier_form_with_move_comment(node, indentation, comment); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#263 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#272 def to_normal_form(node, indentation); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#271 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#280 def to_normal_form_with_heredoc(node, indentation, heredoc); end # @return [Boolean] @@ -42089,6 +42740,11 @@ class RuboCop::Cop::Style::IfUnlessModifier < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#178 def too_long_due_to_modifier?(node); end + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#233 + def too_long_line_based_on_allow_qualified_name?(line); end + # @return [Boolean] # # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#224 @@ -42496,7 +43152,7 @@ end # source://rubocop//lib/rubocop/cop/style/inline_comment.rb#21 RuboCop::Cop::Style::InlineComment::MSG = T.let(T.unsafe(nil), String) -# Check for usages of not (`not` or `!`) called on a method +# Checks for usages of not (`not` or `!`) called on a method # when an inverse of that method can be used instead. # # Methods that can be inverted by a not (`not` or `!`) should be defined @@ -42784,32 +43440,104 @@ RuboCop::Cop::Style::IpAddresses::IPV6_MAX_SIZE = T.let(T.unsafe(nil), Integer) # source://rubocop//lib/rubocop/cop/style/ip_addresses.rb#25 RuboCop::Cop::Style::IpAddresses::MSG = T.let(T.unsafe(nil), String) -# Checks for assignments to a local `it` variable inside a block +# Checks for local variables and method parameters named `it`, # where `it` can refer to the first anonymous parameter as of Ruby 3.4. +# Use a meaningful variable name instead. # -# Although Ruby allows reassigning `it` in these cases, it could +# NOTE: Although Ruby allows reassigning `it` in these cases, it could # cause confusion if `it` is used as a block parameter elsewhere. -# For consistency, this also applies to numblocks and blocks with -# parameters, even though `it` cannot be used in those cases. # # @example # # bad -# foo { it = 5 } -# foo { |bar| it = bar } -# foo { it = _2 } +# it = 5 # -# # good - use a different variable name -# foo { var = 5 } -# foo { |bar| var = bar } -# foo { bar = _2 } +# # good +# var = 5 +# +# # bad +# def foo(it) +# end +# +# # good +# def foo(arg) +# end +# +# # bad +# def foo(it = 5) +# end +# +# # good +# def foo(arg = 5) +# end +# +# # bad +# def foo(*it) +# end +# +# # good +# def foo(*args) +# end +# +# # bad +# def foo(it:) +# end +# +# # good +# def foo(arg:) +# end +# +# # bad +# def foo(it: 5) +# end +# +# # good +# def foo(arg: 5) +# end # -# source://rubocop//lib/rubocop/cop/style/it_assignment.rb#24 +# # bad +# def foo(**it) +# end +# +# # good +# def foo(**kwargs) +# end +# +# # bad +# def foo(&it) +# end +# +# # good +# def foo(&block) +# end +# +# source://rubocop//lib/rubocop/cop/style/it_assignment.rb#75 class RuboCop::Cop::Style::ItAssignment < ::RuboCop::Cop::Base - # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#27 + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_arg(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_blockarg(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_kwarg(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_kwoptarg(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_kwrestarg(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 def on_lvasgn(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_optarg(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_restarg(node); end end -# source://rubocop//lib/rubocop/cop/style/it_assignment.rb#25 +# source://rubocop//lib/rubocop/cop/style/it_assignment.rb#76 RuboCop::Cop::Style::ItAssignment::MSG = T.let(T.unsafe(nil), String) # Checks for blocks with one argument where `it` block parameter can be used. @@ -43389,10 +44117,10 @@ class RuboCop::Cop::Style::MagicCommentFormat::CommentRange # source://rubocop//lib/rubocop/cop/style/magic_comment_format.rb#125 def directives; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def loc(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def text(*_arg0, **_arg1, &_arg2); end # A magic comment can contain one value (normal style) or @@ -43682,7 +44410,7 @@ class RuboCop::Cop::Style::MapToHash < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/map_to_hash.rb#73 + # source://rubocop//lib/rubocop/cop/style/map_to_hash.rb#71 def autocorrect(corrector, to_h, map); end class << self @@ -43729,7 +44457,7 @@ class RuboCop::Cop::Style::MapToSet < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/map_to_set.rb#56 + # source://rubocop//lib/rubocop/cop/style/map_to_set.rb#54 def autocorrect(corrector, to_set, map); end end @@ -43864,6 +44592,20 @@ RuboCop::Cop::Style::MapToSet::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # class Foo # bar :baz # end +# @example AllowedMethods: ["puts", "print"] +# +# # good +# puts "Hello world" +# print "Hello world" +# # still enforces parentheses on other methods +# array.delete(e) +# @example AllowedPatterns: ["^assert"] +# +# # good +# assert_equal 'test', x +# assert_match(/foo/, bar) +# # still enforces parentheses on other methods +# array.delete(e) # @example AllowParenthesesInMultilineCall: false (default) # # # bad @@ -43927,7 +44669,7 @@ RuboCop::Cop::Style::MapToSet::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # # good # "#{t 'this.is.also.good'}" # -# source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#204 +# source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#220 class RuboCop::Cop::Style::MethodCallWithArgsParentheses < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle include ::RuboCop::Cop::AllowedMethods @@ -43937,30 +44679,30 @@ class RuboCop::Cop::Style::MethodCallWithArgsParentheses < ::RuboCop::Cop::Base include ::RuboCop::Cop::Style::MethodCallWithArgsParentheses::OmitParentheses extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#219 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#235 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#219 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#235 def on_send(node); end - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#219 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#235 def on_yield(node); end private - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#227 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#243 def args_begin(node); end - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#235 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#251 def args_end(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#239 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#255 def args_parenthesized?(node); end class << self - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#215 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#231 def autocorrect_incompatible_with; end end end @@ -44005,12 +44747,12 @@ module RuboCop::Cop::Style::MethodCallWithArgsParentheses::OmitParentheses # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#232 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#230 def assigned_before?(node, target); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#240 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#238 def assignment_in_condition?(node); end # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#34 @@ -44063,7 +44805,7 @@ module RuboCop::Cop::Style::MethodCallWithArgsParentheses::OmitParentheses # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#250 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#248 def forwards_anonymous_rest_arguments?(node); end # @return [Boolean] @@ -44083,7 +44825,7 @@ module RuboCop::Cop::Style::MethodCallWithArgsParentheses::OmitParentheses # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#236 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#234 def inside_string_interpolation?(node); end # Require hash value omission be enclosed in parentheses to prevent the following issue: @@ -45608,7 +46350,7 @@ class RuboCop::Cop::Style::MutableConstant < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle extend ::RuboCop::Cop::AutoCorrector - # source://rubocop-sorbet/0.10.4/lib/rubocop/cop/sorbet/mutable_constant_sorbet_aware_behaviour.rb#18 + # source://rubocop-sorbet/0.11.0/lib/rubocop/cop/sorbet/mutable_constant_sorbet_aware_behaviour.rb#18 def on_assignment(value); end # source://rubocop//lib/rubocop/cop/style/mutable_constant.rb#127 @@ -45626,7 +46368,7 @@ class RuboCop::Cop::Style::MutableConstant < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/mutable_constant.rb#216 def splat_value(param0 = T.unsafe(nil)); end - # source://rubocop-sorbet/0.10.4/lib/rubocop/cop/sorbet/mutable_constant_sorbet_aware_behaviour.rb#12 + # source://rubocop-sorbet/0.11.0/lib/rubocop/cop/sorbet/mutable_constant_sorbet_aware_behaviour.rb#12 def t_let(param0 = T.unsafe(nil)); end private @@ -46410,22 +47152,22 @@ class RuboCop::Cop::Style::NilComparison < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#41 def nil_comparison?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#46 + # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#47 def on_send(node); end private - # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#67 + # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#69 def message(_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#79 + # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#81 def prefer_comparison?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#71 + # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#73 def style_check?(node, &block); end end @@ -47487,15 +48229,15 @@ RuboCop::Cop::Style::OrAssignment::MSG = T.let(T.unsafe(nil), String) # b = 2 # c = 3 # -# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#25 +# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#23 class RuboCop::Cop::Style::ParallelAssignment < ::RuboCop::Cop::Base include ::RuboCop::Cop::RescueNode extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#115 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#110 def implicit_self_getter?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#31 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#29 def on_masgn(node); end private @@ -47504,50 +48246,49 @@ class RuboCop::Cop::Style::ParallelAssignment < ::RuboCop::Cop::Base # This makes the sorting algorithm work for expressions such as # `self.a, self.b = b, a`. # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#108 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#103 def add_self_to_getters(right_elements); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#61 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#62 def allowed_lhs?(elements); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#55 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#56 def allowed_masign?(lhs_elements, rhs_elements); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#67 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#68 def allowed_rhs?(node); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#75 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#76 def assignment_corrector(node, rhs, order); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#48 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#49 def autocorrect(corrector, node, rhs); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#91 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#92 def find_valid_order(left_elements, right_elements); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#174 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#186 def modifier_statement?(node); end end -# Helper class necessitated by silly design of TSort prior to Ruby 2.1 -# Newer versions have a better API, but that doesn't help us +# Topologically sorts the assignments with Kahn's algorithm. +# https://en.wikipedia.org/wiki/Topological_sorting#Kahn's_algorithm # -# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#119 +# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#114 class RuboCop::Cop::Style::ParallelAssignment::AssignmentSorter - include ::TSort extend ::RuboCop::AST::NodePattern::Macros # @return [AssignmentSorter] a new instance of AssignmentSorter # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#132 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#126 def initialize(assignments); end # `lhs` is an assignment method call like `obj.attr=` or `ary[idx]=`. @@ -47555,121 +48296,124 @@ class RuboCop::Cop::Style::ParallelAssignment::AssignmentSorter # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#161 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#173 def accesses?(rhs, lhs); end + # Returns all the assignments which must come after `assignment` + # (due to dependencies on the previous value of the assigned var) + # + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#152 + def dependencies_for_assignment(assignment); end + # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#154 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#166 def dependency?(lhs, rhs); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#130 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#124 def matching_calls(param0, param1, param2); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#140 - def tsort_each_child(assignment); end - - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#136 - def tsort_each_node(*_arg0, **_arg1, &_arg2); end + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#130 + def tsort; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#127 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#121 def uses_var?(param0, param1); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#124 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#118 def var_name(param0 = T.unsafe(nil)); end end # An internal class for correcting parallel assignment # -# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#181 +# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#193 class RuboCop::Cop::Style::ParallelAssignment::GenericCorrector include ::RuboCop::Cop::Alignment # @return [GenericCorrector] a new instance of GenericCorrector # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#186 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#198 def initialize(node, rhs, modifier, config, new_elements); end # Returns the value of attribute config. # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#184 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#196 def config; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#194 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#206 def correction; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#198 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#210 def correction_range; end # Returns the value of attribute node. # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#184 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#196 def node; end # Returns the value of attribute rescue_result. # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#184 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#196 def rescue_result; end # Returns the value of attribute rhs. # - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#184 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#196 def rhs; end protected - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#204 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#216 def assignment; end private - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#225 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#237 def cop_config; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#221 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#233 def extract_sources(node); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#210 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#222 def source(node, loc); end end -# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#29 +# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#27 RuboCop::Cop::Style::ParallelAssignment::MSG = T.let(T.unsafe(nil), String) # An internal class for correcting parallel assignment # guarded by if, unless, while, or until # -# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#267 +# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#279 class RuboCop::Cop::Style::ParallelAssignment::ModifierCorrector < ::RuboCop::Cop::Style::ParallelAssignment::GenericCorrector - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#268 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#280 def correction; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#277 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#289 def correction_range; end private - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#283 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#295 def modifier_range(node); end end # An internal class for correcting parallel assignment # protected by rescue # -# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#232 +# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#244 class RuboCop::Cop::Style::ParallelAssignment::RescueCorrector < ::RuboCop::Cop::Style::ParallelAssignment::GenericCorrector - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#233 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#245 def correction; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#244 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#256 def correction_range; end private - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#255 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#267 def begin_correction(rescue_result); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#250 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#262 def def_correction(rescue_result); end end @@ -48616,9 +49360,15 @@ class RuboCop::Cop::Style::RedundantBegin < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#76 def offensive_kwbegins(param0); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#88 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#111 def on_block(node); end + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#94 + def on_case(node); end + + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#94 + def on_case_match(node); end + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#80 def on_def(node); end @@ -48626,70 +49376,82 @@ class RuboCop::Cop::Style::RedundantBegin < ::RuboCop::Cop::Base def on_defs(node); end # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#88 + def on_if(node); end + + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#111 def on_itblock(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#100 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#123 def on_kwbegin(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#88 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#111 def on_numblock(node); end + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#99 + def on_until(node); end + + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#99 + def on_while(node); end + private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#108 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#131 def allowable_kwbegin?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#182 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#205 def begin_block_has_multiline_statements?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#174 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#197 def condition_range(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#186 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#211 def contain_rescue_or_ensure?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#167 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#190 def correct_modifier_form_after_multiline_begin_block(corrector, node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#178 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#201 def empty_begin?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#115 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#228 + def inspect_branches(node); end + + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#138 def register_offense(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#144 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#167 def remove_begin(corrector, offense_range, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#132 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#155 def replace_begin_with_statement(corrector, offense_range, node); end # Restore comments that occur between "begin" and "first_child". # These comments will be moved to above the assignment line. # - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#154 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#177 def restore_removed_comments(corrector, offense_range, node, first_child); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#161 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#184 def use_modifier_form_after_multiline_begin_block?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#199 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#224 def valid_begin_assignment?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#192 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#217 def valid_context_using_only_begin?(node); end class << self @@ -49328,7 +50090,7 @@ class RuboCop::Cop::Style::RedundantFetchBlock < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#55 def on_block(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#89 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#81 def rails_cache?(param0 = T.unsafe(nil)); end # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#48 @@ -49336,38 +50098,28 @@ class RuboCop::Cop::Style::RedundantFetchBlock < ::RuboCop::Cop::Base private - # @return [Boolean] - # - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#74 - def basic_literal?(node); end - - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#104 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#96 def build_bad_method(send, body); end - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#97 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#89 def build_good_method(send, body); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#111 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#103 def check_for_constant?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#115 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#107 def check_for_string?; end - # @return [Boolean] - # - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#78 - def const_type?(node); end - - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#93 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#85 def fetch_range(send, node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#82 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#74 def should_not_check?(send, body); end end @@ -49552,43 +50304,43 @@ class RuboCop::Cop::Style::RedundantFormat < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#137 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#138 def all_fields_literal?(string, arguments); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#224 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#239 def argument_value(argument); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#220 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#235 def argument_values(arguments); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#256 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#271 def complex_value(complex_node); end # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#109 def detect_unnecessary_fields(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#242 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#257 def dsym_value(dsym_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#155 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#168 def find_argument(sequence, arguments, hash); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#196 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#211 def float?(argument); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#246 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#261 def hash_value(hash_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#192 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#207 def integer?(argument); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#168 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#183 def matching_argument?(sequence, argument); end # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#105 @@ -49596,20 +50348,28 @@ class RuboCop::Cop::Style::RedundantFormat < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#186 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#201 def numeric?(argument); end # Add correct quotes to the formatted string, preferring retaining the existing # quotes if possible. # - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#202 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#217 def quote(string, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#252 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#267 def rational_value(rational_node); end # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#121 def register_all_fields_literal(node, string, arguments); end + + # If the sequence has a variable (`*`) width, it cannot be autocorrected + # if the width is not given as a numeric literal argument + # + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#160 + def unknown_variable_width?(sequence, arguments); end end # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#60 @@ -49621,7 +50381,7 @@ RuboCop::Cop::Style::RedundantFormat::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#59 RuboCop::Cop::Style::RedundantFormat::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Set) -# Check for uses of `Object#freeze` on immutable objects. +# Checks for uses of `Object#freeze` on immutable objects. # # NOTE: `Regexp` and `Range` literals are frozen objects since Ruby 3.0. # @@ -49952,7 +50712,7 @@ RuboCop::Cop::Style::RedundantInterpolationUnfreeze::MSG = T.let(T.unsafe(nil), # source://rubocop//lib/rubocop/cop/style/redundant_interpolation_unfreeze.rb#28 RuboCop::Cop::Style::RedundantInterpolationUnfreeze::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) -# Check for redundant line continuation. +# Checks for redundant line continuation. # # This cop marks a line continuation as redundant if removing the backslash # does not result in a syntax error. @@ -50142,28 +50902,25 @@ class RuboCop::Cop::Style::RedundantParentheses < ::RuboCop::Cop::Base include ::RuboCop::Cop::Parentheses extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#34 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#31 def allowed_pin_operator?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#311 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#332 def first_send_argument?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#316 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#337 def first_super_argument?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#321 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#342 def first_yield_argument?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#192 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#190 def interpolation?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#28 - def method_node_and_args(param0 = T.unsafe(nil)); end - - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#36 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#33 def on_begin(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#31 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#28 def rescue?(param0 = T.unsafe(nil)); end # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#23 @@ -50173,155 +50930,170 @@ class RuboCop::Cop::Style::RedundantParentheses < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#209 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#216 def allow_in_multiline_conditions?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#71 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#68 def allowed_ancestor?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#64 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#61 def allowed_expression?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#76 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#73 def allowed_multiple_expression?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#85 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#82 def allowed_ternary?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#194 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#192 def argument_of_parenthesized_method_call?(begin_node, node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#325 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#346 def call_chain_starts_with_int?(begin_node, send_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#141 + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#220 + def call_node?(node); end + + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#138 def check(begin_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#213 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#224 def check_send(begin_node, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#223 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#236 def check_unary(begin_node, node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#247 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#259 def disallowed_literal?(begin_node, node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#257 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#269 def disallowed_one_line_pattern_matching?(begin_node, node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#331 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#352 def do_end_block_in_method_chain?(begin_node, node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#112 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#109 def empty_parentheses?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#156 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#153 def find_offense_message(begin_node, node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#117 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#114 def first_arg_begins_with_hash_literal?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#300 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#321 def first_argument?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#57 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#54 def ignore_syntax?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#126 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#123 def in_pattern_matching_in_method_argument?(begin_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#243 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#255 def keyword_ancestor?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#274 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#289 def keyword_with_redundant_parentheses?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#98 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#95 def like_method_argument_parentheses?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#203 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#210 def method_call_parentheses_required?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#287 - def method_call_with_redundant_parentheses?(node); end + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#302 + def method_call_with_redundant_parentheses?(begin_node, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#133 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#130 def method_chain_begins_with_hash_literal(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#105 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#102 def multiline_control_flow_statements?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#233 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#245 def offense(node, msg); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#296 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#201 + def oneline_rescue_parentheses_required?(begin_node, node); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#317 def only_begin_arg?(args); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#48 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#45 def parens_allowed?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#263 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#278 def raised_to_power_negative_numeric?(begin_node, node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#239 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#310 + def singular_parenthesized_parent?(begin_node); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#251 def suspect_unary?(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#91 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#88 def ternary_parentheses_required?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#44 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#41 def variable?(node); end end @@ -50466,10 +51238,10 @@ class RuboCop::Cop::Style::RedundantRegexpArgument < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/redundant_regexp_argument.rb#65 def determinist_regexp?(regexp_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_argument.rb#69 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_argument.rb#70 def preferred_argument(regexp_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_argument.rb#88 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_argument.rb#92 def replacement(regexp_node); end end @@ -50631,31 +51403,36 @@ class RuboCop::Cop::Style::RedundantRegexpEscape < ::RuboCop::Cop::Base include ::RuboCop::Cop::RangeHelp extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#45 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#46 def on_regexp(node); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#60 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#61 def allowed_escape?(node, char, index, within_character_class); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#76 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#78 def char_class_begins_or_ends_with_escaped_hyphen?(node, index); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#92 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#94 def delimiter?(node, char); end - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#98 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#106 def each_escape(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#110 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#118 def escape_range_at_index(node, index); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#100 + def requires_escape_to_avoid_interpolation?(char_before_escape, escaped_char); end end # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#41 @@ -50667,6 +51444,9 @@ RuboCop::Cop::Style::RedundantRegexpEscape::ALLOWED_OUTSIDE_CHAR_CLASS_METACHAR_ # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#42 RuboCop::Cop::Style::RedundantRegexpEscape::ALLOWED_WITHIN_CHAR_CLASS_METACHAR_ESCAPES = T.let(T.unsafe(nil), Array) +# source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#44 +RuboCop::Cop::Style::RedundantRegexpEscape::INTERPOLATION_SIGILS = T.let(T.unsafe(nil), Array) + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#39 RuboCop::Cop::Style::RedundantRegexpEscape::MSG_REDUNDANT_ESCAPE = T.let(T.unsafe(nil), String) @@ -50849,44 +51629,44 @@ class RuboCop::Cop::Style::RedundantSelf < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#68 def on_and_asgn(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#84 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#87 def on_args(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#116 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#119 def on_block(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#88 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#91 def on_blockarg(node); end # Using self.x to distinguish from local variable x # - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#79 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#82 def on_def(node); end # Using self.x to distinguish from local variable x # - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#79 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#82 def on_defs(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#123 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#126 def on_if(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#100 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#103 def on_in_pattern(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#116 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#119 def on_itblock(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#96 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#99 def on_lvasgn(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#92 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#95 def on_masgn(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#116 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#119 def on_numblock(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#73 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#76 def on_op_asgn(node); end # Assignment of self.x @@ -50894,35 +51674,35 @@ class RuboCop::Cop::Style::RedundantSelf < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#68 def on_or_asgn(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#104 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#107 def on_send(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#123 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#126 def on_until(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#123 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#126 def on_while(node); end private - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#190 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#193 def add_lhs_to_local_variables_scopes(rhs, lhs); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#198 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#201 def add_masgn_lhs_variables(rhs, lhs); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#204 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#207 def add_match_var_scopes(in_pattern_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#139 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#142 def add_scope(node, local_variables = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#184 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#187 def allow_self(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#145 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#148 def allowed_send_node?(node); end # Respects `Lint/ItWithoutArgumentsInBlock` cop and the following Ruby 3.3's warning: @@ -50933,15 +51713,15 @@ class RuboCop::Cop::Style::RedundantSelf < ::RuboCop::Cop::Base # # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#160 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#163 def it_method_in_block?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#176 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#179 def on_argument(node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#168 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#171 def regular_method_call?(node); end class << self @@ -52084,10 +52864,10 @@ class RuboCop::Cop::Style::SafeNavigation < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#137 def not_nil_check?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#162 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#165 def on_and(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#145 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#146 def on_if(node); end # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#143 @@ -52098,105 +52878,110 @@ class RuboCop::Cop::Style::SafeNavigation < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#389 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#408 def add_safe_nav_to_all_methods_in_chain(corrector, start_method, method_chain); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#293 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#304 def allowed_if_condition?(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#232 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#235 def and_parts(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#381 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#400 def begin_range(node, method_call); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#340 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#359 def chain_length(method_chain, method); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#214 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#217 def collect_and_clauses(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#274 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#285 def comments(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#226 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#229 def concat_nodes(nodes, and_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#261 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#264 def dotless_operator_call?(method_call); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#385 + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#272 + def dotless_operator_method?(method_call); end + + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#404 def end_range(node, method_call); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#312 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#323 def extract_common_parts(method_chain, checked_variable); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#253 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#256 def extract_if_body(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#297 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#308 def extract_parts_from_if(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#320 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#331 def find_matching_receiver_invocation(method_chain, checked_variable); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#208 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#211 def find_method_chain(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#267 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#278 def handle_comments(corrector, node, method_call); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#334 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#345 def matching_call_nodes?(left, right); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#330 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#341 def matching_nodes?(left, right); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#402 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#421 def max_chain_length; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#377 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#396 def method_called?(send_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#369 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#388 def negated?(send_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#239 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#242 def offending_node?(node, lhs_receiver, rhs, rhs_receiver); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#280 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#291 def relevant_comment_ranges(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#191 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#194 def report_offense(node, rhs, rhs_receiver, *removal_ranges, offense_range: T.unsafe(nil)); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#360 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#379 def unsafe_method?(node, send_node); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#348 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#367 def unsafe_method_used?(node, method_chain, method); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#249 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#252 def use_var_only_in_unless_modifier?(node, variable); end end @@ -53078,7 +53863,7 @@ class RuboCop::Cop::Style::SingleLineMethods < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/single_line_methods.rb#136 + # source://rubocop//lib/rubocop/cop/style/single_line_methods.rb#139 def disallow_endless_method_style?; end # source://rubocop//lib/rubocop/cop/style/single_line_methods.rb#104 @@ -53238,39 +54023,44 @@ class RuboCop::Cop::Style::SoleNestedConditional < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#187 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#190 def add_parentheses?(node); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#168 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#169 def add_parentheses_if_needed(condition); end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#201 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#231 def allow_modifier?; end # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#81 def assigned_variables(condition); end + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#198 + def assignment_in_and?(node); end + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#98 def autocorrect(corrector, node, if_branch); end # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#106 def autocorrect_outer_condition_basic(corrector, node, if_branch); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#142 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#143 def autocorrect_outer_condition_modify_form(corrector, node, if_branch); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#160 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#161 def chainable_condition(node); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#131 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#132 def correct_for_basic_condition_style(corrector, node, if_branch); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#151 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#152 def correct_for_comment(corrector, node, if_branch); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#122 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#123 def correct_for_guard_condition_style(corrector, node, if_branch); end # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#117 @@ -53283,10 +54073,16 @@ class RuboCop::Cop::Style::SoleNestedConditional < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#182 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#185 def parenthesize_method?(node); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#194 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#211 + def parenthesized_and(node); end + + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#221 + def parenthesized_and_clause(node); end + + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#204 def parenthesized_method_arguments(node); end # @return [Boolean] @@ -53461,7 +54257,7 @@ RuboCop::Cop::Style::SpecialGlobalVars::PERL_VARS = T.let(T.unsafe(nil), Hash) # source://rubocop//lib/rubocop/cop/style/special_global_vars.rb#138 RuboCop::Cop::Style::SpecialGlobalVars::STYLE_VARS_MAP = T.let(T.unsafe(nil), Hash) -# Check for parentheses around stabby lambda arguments. +# Checks for parentheses around stabby lambda arguments. # There are two different styles. Defaults to `require_parentheses`. # # @example EnforcedStyle: require_parentheses (default) @@ -53730,8 +54526,8 @@ class RuboCop::Cop::Style::StringConcatenation < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#158 - def adjust_str(node); end + # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#149 + def adjust_str(part); end # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#114 def collect_parts(node, parts = T.unsafe(nil)); end @@ -53744,7 +54540,7 @@ class RuboCop::Cop::Style::StringConcatenation < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#106 def find_topmost_plus_node(node); end - # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#162 + # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#166 def handle_quotes(parts); end # @return [Boolean] @@ -53757,7 +54553,7 @@ class RuboCop::Cop::Style::StringConcatenation < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#96 def line_end_concatenation?(node); end - # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#172 + # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#176 def mode; end # @return [Boolean] @@ -53773,7 +54569,7 @@ class RuboCop::Cop::Style::StringConcatenation < ::RuboCop::Cop::Base # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#168 + # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#172 def single_quoted?(str_node); end # @return [Boolean] @@ -54972,6 +55768,9 @@ RuboCop::Cop::Style::TrailingBodyOnModule::MSG = T.let(T.unsafe(nil), String) # for all parenthesized multi-line method calls with arguments. # * `comma`: Requires a comma after the last argument, but only for # parenthesized method calls where each argument is on its own line. +# * `diff_comma`: Requires a comma after the last argument, but only +# when that argument is followed by an immediate newline, even if +# there is an inline comment on the same line. # * `no_comma`: Requires that there is no comma after the last # argument. # @@ -55035,6 +55834,47 @@ RuboCop::Cop::Style::TrailingBodyOnModule::MSG = T.let(T.unsafe(nil), String) # 1, # 2, # ) +# @example EnforcedStyleForMultiline: diff_comma +# # bad +# method(1, 2,) +# +# # good +# method(1, 2) +# +# # good +# method( +# 1, 2, +# 3, +# ) +# +# # good +# method( +# 1, 2, 3, +# ) +# +# # good +# method( +# 1, +# 2, +# ) +# +# # bad +# method(1, [ +# 2, +# ],) +# +# # good +# method(1, [ +# 2, +# ]) +# +# # bad +# object[1, 2, +# 3, 4,] +# +# # good +# object[1, 2, +# 3, 4] # @example EnforcedStyleForMultiline: no_comma (default) # # bad # method(1, 2,) @@ -55054,21 +55894,21 @@ RuboCop::Cop::Style::TrailingBodyOnModule::MSG = T.let(T.unsafe(nil), String) # 2 # ) # -# source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#96 +# source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#141 class RuboCop::Cop::Style::TrailingCommaInArguments < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle include ::RuboCop::Cop::RangeHelp include ::RuboCop::Cop::TrailingComma extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#104 + # source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#149 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#104 + # source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#149 def on_send(node); end class << self - # source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#100 + # source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#145 def autocorrect_incompatible_with; end end end @@ -55751,20 +56591,19 @@ RuboCop::Cop::Style::TrivialAccessors::MSG = T.let(T.unsafe(nil), String) # # source://rubocop//lib/rubocop/cop/style/unless_else.rb#22 class RuboCop::Cop::Style::UnlessElse < ::RuboCop::Cop::Base - include ::RuboCop::Cop::RangeHelp extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/unless_else.rb#28 + # source://rubocop//lib/rubocop/cop/style/unless_else.rb#27 def on_if(node); end - # source://rubocop//lib/rubocop/cop/style/unless_else.rb#45 - def range_between_condition_and_else(node, condition); end + # source://rubocop//lib/rubocop/cop/style/unless_else.rb#44 + def range_between_condition_and_else(node); end - # source://rubocop//lib/rubocop/cop/style/unless_else.rb#49 + # source://rubocop//lib/rubocop/cop/style/unless_else.rb#50 def range_between_else_and_end(node); end end -# source://rubocop//lib/rubocop/cop/style/unless_else.rb#26 +# source://rubocop//lib/rubocop/cop/style/unless_else.rb#25 RuboCop::Cop::Style::UnlessElse::MSG = T.let(T.unsafe(nil), String) # Checks for the use of logical operators in an `unless` condition. @@ -57189,33 +58028,33 @@ module RuboCop::Cop::Utils; end class RuboCop::Cop::Utils::FormatString # @return [FormatString] a new instance of FormatString # - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#94 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#104 def initialize(string); end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#98 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#108 def format_sequences; end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#110 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#120 def max_digit_dollar_num; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#106 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#116 def named_interpolation?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#102 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#112 def valid?; end private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#122 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#132 def mixed_formats?; end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#116 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#126 def parse; end end @@ -57262,7 +58101,7 @@ class RuboCop::Cop::Utils::FormatString::FormatSequence # Number of arguments required for the format sequence # - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#75 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#85 def arity; end # Returns the value of attribute begin_pos. @@ -57280,7 +58119,7 @@ class RuboCop::Cop::Utils::FormatString::FormatSequence # source://rubocop//lib/rubocop/cop/utils/format_string.rb#48 def flags; end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#79 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#89 def max_digit_dollar_num; end # Returns the value of attribute name. @@ -57298,7 +58137,7 @@ class RuboCop::Cop::Utils::FormatString::FormatSequence # source://rubocop//lib/rubocop/cop/utils/format_string.rb#48 def precision; end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#83 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#93 def style; end # @return [Boolean] @@ -57311,6 +58150,14 @@ class RuboCop::Cop::Utils::FormatString::FormatSequence # source://rubocop//lib/rubocop/cop/utils/format_string.rb#48 def type; end + # @return [Boolean] + # + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#74 + def variable_width?; end + + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#78 + def variable_width_argument_number; end + # Returns the value of attribute width. # # source://rubocop//lib/rubocop/cop/utils/format_string.rb#48 @@ -57373,164 +58220,169 @@ class RuboCop::Cop::VariableForce < ::RuboCop::Cop::Force # # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#79 + # source://rubocop//lib/rubocop/cop/variable_force.rb#81 def investigate(processed_source); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#88 + # source://rubocop//lib/rubocop/cop/variable_force.rb#90 def process_node(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#74 + # source://rubocop//lib/rubocop/cop/variable_force.rb#76 def variable_table; end private - # source://rubocop//lib/rubocop/cop/variable_force.rb#374 + # source://rubocop//lib/rubocop/cop/variable_force.rb#391 def after_declaring_variable(arg); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#374 + # source://rubocop//lib/rubocop/cop/variable_force.rb#391 def after_entering_scope(arg); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#374 + # source://rubocop//lib/rubocop/cop/variable_force.rb#391 def after_leaving_scope(arg); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#374 + # source://rubocop//lib/rubocop/cop/variable_force.rb#391 def before_declaring_variable(arg); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#374 + # source://rubocop//lib/rubocop/cop/variable_force.rb#391 def before_entering_scope(arg); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#374 + # source://rubocop//lib/rubocop/cop/variable_force.rb#391 def before_leaving_scope(arg); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#346 + # source://rubocop//lib/rubocop/cop/variable_force.rb#352 def descendant_reference(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#336 + # source://rubocop//lib/rubocop/cop/variable_force.rb#342 def each_descendant_reference(loop_node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#321 + # source://rubocop//lib/rubocop/cop/variable_force.rb#327 def find_variables_in_loop(loop_node); end # This is called for each scope recursively. # # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#97 + # source://rubocop//lib/rubocop/cop/variable_force.rb#99 def inspect_variables_in_scope(scope_node); end - # Mark all assignments which are referenced in the same loop + # Mark last assignments which are referenced in the same loop # as referenced by ignoring AST order since they would be referenced # in next iteration. # # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#302 + # source://rubocop//lib/rubocop/cop/variable_force.rb#309 def mark_assignments_as_referenced_in_loop(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#130 + # source://rubocop//lib/rubocop/cop/variable_force.rb#132 def node_handler_method_name(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#103 + # source://rubocop//lib/rubocop/cop/variable_force.rb#105 def process_children(origin_node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#238 + # source://rubocop//lib/rubocop/cop/variable_force.rb#240 def process_loop(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#182 + # source://rubocop//lib/rubocop/cop/variable_force.rb#184 def process_pattern_match_variable(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#164 + # source://rubocop//lib/rubocop/cop/variable_force.rb#166 def process_regexp_named_captures(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#253 + # source://rubocop//lib/rubocop/cop/variable_force.rb#260 def process_rescue(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#272 + # source://rubocop//lib/rubocop/cop/variable_force.rb#279 def process_scope(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#291 + # source://rubocop//lib/rubocop/cop/variable_force.rb#298 def process_send(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#146 + # source://rubocop//lib/rubocop/cop/variable_force.rb#148 def process_variable_assignment(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#134 + # source://rubocop//lib/rubocop/cop/variable_force.rb#136 def process_variable_declaration(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#226 + # source://rubocop//lib/rubocop/cop/variable_force.rb#228 def process_variable_multiple_assignment(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#196 + # source://rubocop//lib/rubocop/cop/variable_force.rb#198 def process_variable_operator_assignment(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#233 + # source://rubocop//lib/rubocop/cop/variable_force.rb#235 def process_variable_referencing(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#264 + # source://rubocop//lib/rubocop/cop/variable_force.rb#271 def process_zero_arity_super(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#190 + # source://rubocop//lib/rubocop/cop/variable_force.rb#363 + def reference_assignments(loop_assignments, loop_node); end + + # @api private + # + # source://rubocop//lib/rubocop/cop/variable_force.rb#192 def regexp_captured_names(node); end # @api private # @return [Boolean] # - # source://rubocop//lib/rubocop/cop/variable_force.rb#357 + # source://rubocop//lib/rubocop/cop/variable_force.rb#374 def scanned_node?(node); end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#361 + # source://rubocop//lib/rubocop/cop/variable_force.rb#378 def scanned_nodes; end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#111 + # source://rubocop//lib/rubocop/cop/variable_force.rb#113 def skip_children!; end # @api private # - # source://rubocop//lib/rubocop/cop/variable_force.rb#285 + # source://rubocop//lib/rubocop/cop/variable_force.rb#292 def twisted_nodes(node); end end @@ -57689,6 +58541,11 @@ class RuboCop::Cop::VariableForce::AssignmentReference < ::Struct end end +# @api private +# +# source://rubocop//lib/rubocop/cop/variable_force.rb#74 +RuboCop::Cop::VariableForce::BRANCH_NODES = T.let(T.unsafe(nil), Array) + # Namespace for branch classes for each control structure. # # source://rubocop//lib/rubocop/cop/variable_force/branch.rb#7 @@ -58121,7 +58978,7 @@ RuboCop::Cop::VariableForce::MULTIPLE_ASSIGNMENT_TYPE = T.let(T.unsafe(nil), Sym # @api private # -# source://rubocop//lib/rubocop/cop/variable_force.rb#115 +# source://rubocop//lib/rubocop/cop/variable_force.rb#117 RuboCop::Cop::VariableForce::NODE_HANDLER_METHOD_NAMES = T.let(T.unsafe(nil), Hash) # @api private @@ -59368,38 +60225,38 @@ class RuboCop::Formatter::DisabledConfigFormatter < ::RuboCop::Formatter::BaseFo # @return [DisabledConfigFormatter] a new instance of DisabledConfigFormatter # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#27 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#43 def initialize(output, options = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#40 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#56 def file_finished(file, offenses); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#33 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#49 def file_started(_file, options); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#48 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#64 def finished(_inspected_files); end private # @return [Boolean] # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#69 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#85 def auto_gen_enforced_style?; end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#73 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#89 def command; end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#165 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#181 def cop_config_params(default_cfg, cfg); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#186 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#199 def default_config(cop_name); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#230 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#243 def excludes(offending_files, cop_name, parent); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#201 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#214 def filtered_config(cfg); end # Returns true if the given arr include the given elm or if any of the @@ -59407,106 +60264,109 @@ class RuboCop::Formatter::DisabledConfigFormatter < ::RuboCop::Formatter::BaseFo # # @return [Boolean] # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#278 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#291 def include_or_match?(arr, elm); end # @return [Boolean] # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#251 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#264 def merge_mode_for_exclude?(cfg); end # @return [Boolean] # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#272 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#285 def no_exclude_limit?; end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#102 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#118 def output_cop(cop_name, offense_count); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#137 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#153 def output_cop_comments(output_buffer, cfg, cop_name, offense_count); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#190 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#203 def output_cop_config(output_buffer, cfg, cop_name); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#172 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#185 def output_cop_param_comments(output_buffer, params, default_cfg); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#220 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#233 def output_exclude_list(output_buffer, offending_files, cop_name); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#255 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#268 def output_exclude_path(output_buffer, exclude_path, parent); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#209 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#222 def output_offending_files(output_buffer, cfg, cop_name); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#96 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#112 def output_offenses; end # @return [Boolean] # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#268 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#281 def safe_autocorrect?(config); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#116 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#132 def set_max(cfg, cop_name); end # @return [Boolean] # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#125 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#141 def should_set_max?(cop_name); end # @return [Boolean] # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#65 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#81 def show_offense_counts?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#61 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#77 def show_timestamp?; end # @return [Boolean] # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#157 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#173 def supports_safe_autocorrect?(cop_class, default_cfg); end # @return [Boolean] # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#161 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#177 def supports_unsafe_autocorrect?(cop_class, default_cfg); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#92 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#108 def timestamp; end class << self # Returns the value of attribute config_to_allow_offenses. # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#24 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#40 def config_to_allow_offenses; end # Sets the attribute config_to_allow_offenses # # @param value the value to set the attribute config_to_allow_offenses to. # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#24 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#40 def config_to_allow_offenses=(_arg0); end # Returns the value of attribute detected_styles. # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#24 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#40 def detected_styles; end # Sets the attribute detected_styles # # @param value the value to set the attribute detected_styles to. # - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#24 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#40 def detected_styles=(_arg0); end end end +# source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#20 +RuboCop::Formatter::DisabledConfigFormatter::EXCLUDED_CONFIG_KEYS = T.let(T.unsafe(nil), Array) + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#10 RuboCop::Formatter::DisabledConfigFormatter::HEADING = T.let(T.unsafe(nil), String) @@ -60044,46 +60904,46 @@ class RuboCop::Formatter::MarkdownFormatter < ::RuboCop::Formatter::BaseFormatte # @return [MarkdownFormatter] a new instance of MarkdownFormatter # - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#11 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#12 def initialize(output, options = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#21 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#22 def file_finished(file, offenses); end # Returns the value of attribute files. # - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#9 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#10 def files; end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#26 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#27 def finished(inspected_files); end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#17 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#18 def started(target_files); end # Returns the value of attribute summary. # - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#9 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#10 def summary; end private - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#73 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#74 def possible_ellipses(location); end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#33 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#34 def render_markdown; end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#67 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#68 def write_code(offense); end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#61 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#62 def write_context(offense); end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#42 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#43 def write_file_messages; end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#54 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#55 def write_heading(file); end end @@ -60138,56 +60998,56 @@ class RuboCop::Formatter::PacmanFormatter < ::RuboCop::Formatter::ClangStyleForm # @return [PacmanFormatter] a new instance of PacmanFormatter # - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#19 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#20 def initialize(output, options = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#50 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#51 def cols; end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#37 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#38 def file_finished(file, offenses); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#33 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#34 def file_started(_file, _options); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#43 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#44 def next_step(offenses); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#64 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#65 def pacdots(number); end # Returns the value of attribute progress_line. # - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#12 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#13 def progress_line; end # Sets the attribute progress_line # # @param value the value to set the attribute progress_line to. # - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#12 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#13 def progress_line=(_arg0); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#26 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#27 def started(target_files); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#68 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#69 def step(character); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#57 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#58 def update_progress_line; end end -# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#14 +# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#15 RuboCop::Formatter::PacmanFormatter::FALLBACK_TERMINAL_WIDTH = T.let(T.unsafe(nil), Integer) -# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#15 +# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#16 RuboCop::Formatter::PacmanFormatter::GHOST = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#17 +# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#18 RuboCop::Formatter::PacmanFormatter::PACDOT = T.let(T.unsafe(nil), Rainbow::Presenter) -# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#16 +# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#17 RuboCop::Formatter::PacmanFormatter::PACMAN = T.let(T.unsafe(nil), Rainbow::Presenter) # This formatter display dots for files with no offenses and @@ -61253,6 +62113,61 @@ RuboCop::PathUtil::HIDDEN_FILE_PATTERN = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/path_util.rb#35 RuboCop::PathUtil::SMART_PATH_CACHE = T.let(T.unsafe(nil), Hash) +# Reports information about pending cops that are not explicitly configured. +# +# This class is responsible for displaying warnings when new cops have been added to RuboCop +# but have not yet been enabled or disabled in the user's configuration. +# It provides a centralized way to determine whether such warnings should be shown, +# based on global flags or configuration settings. +# +# source://rubocop//lib/rubocop/pending_cops_reporter.rb#10 +class RuboCop::PendingCopsReporter + class << self + # Returns the value of attribute disable_pending_cops. + # + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#20 + def disable_pending_cops; end + + # Sets the attribute disable_pending_cops + # + # @param value the value to set the attribute disable_pending_cops to. + # + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#20 + def disable_pending_cops=(_arg0); end + + # Returns the value of attribute enable_pending_cops. + # + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#20 + def enable_pending_cops; end + + # Sets the attribute enable_pending_cops + # + # @param value the value to set the attribute enable_pending_cops to. + # + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#20 + def enable_pending_cops=(_arg0); end + + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#22 + def warn_if_needed(config); end + + private + + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#31 + def pending_cops_only_qualified(pending_cops); end + + # @return [Boolean] + # + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#35 + def possible_new_cops?(config); end + + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#40 + def warn_on_pending_cops(pending_cops); end + + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#48 + def warn_pending_cop(cop); end + end +end + # This module provides information on the platform that RuboCop is being run # on. # @@ -61592,7 +62507,7 @@ class RuboCop::ResultCache # # @api private # - # source://rubocop//lib/rubocop/result_cache.rb#229 + # source://rubocop//lib/rubocop/result_cache.rb#231 def context_checksum(team, options); end # @api private @@ -61611,7 +62526,7 @@ class RuboCop::ResultCache # # @api private # - # source://rubocop//lib/rubocop/result_cache.rb#220 + # source://rubocop//lib/rubocop/result_cache.rb#222 def relevant_options_digest(options); end # The checksum of the RuboCop program running the inspection. @@ -61767,7 +62682,7 @@ class RuboCop::Runner # Check whether a run created source identical to a previous run, which # means that we definitely have an infinite loop. # - # source://rubocop//lib/rubocop/runner.rb#331 + # source://rubocop//lib/rubocop/runner.rb#333 def check_for_infinite_loop(processed_source, offenses_by_iteration); end # @return [Boolean] @@ -61777,10 +62692,10 @@ class RuboCop::Runner # @return [Boolean] # - # source://rubocop//lib/rubocop/runner.rb#433 + # source://rubocop//lib/rubocop/runner.rb#435 def considered_failure?(offense); end - # source://rubocop//lib/rubocop/runner.rb#470 + # source://rubocop//lib/rubocop/runner.rb#472 def default_config(cop_name); end # source://rubocop//lib/rubocop/runner.rb#275 @@ -61794,7 +62709,7 @@ class RuboCop::Runner # source://rubocop//lib/rubocop/runner.rb#239 def except_redundant_cop_disable_directive?; end - # source://rubocop//lib/rubocop/runner.rb#360 + # source://rubocop//lib/rubocop/runner.rb#362 def extract_ruby_sources(processed_source); end # source://rubocop//lib/rubocop/runner.rb#248 @@ -61809,25 +62724,25 @@ class RuboCop::Runner # source://rubocop//lib/rubocop/runner.rb#243 def file_started(file); end - # source://rubocop//lib/rubocop/runner.rb#413 + # source://rubocop//lib/rubocop/runner.rb#415 def filter_cop_classes(cop_classes, config); end # source://rubocop//lib/rubocop/runner.rb#104 def find_target_files(paths); end - # source://rubocop//lib/rubocop/runner.rb#424 + # source://rubocop//lib/rubocop/runner.rb#426 def formatter_set; end - # source://rubocop//lib/rubocop/runner.rb#485 - def get_processed_source(file); end + # source://rubocop//lib/rubocop/runner.rb#487 + def get_processed_source(file, prism_result); end - # source://rubocop//lib/rubocop/runner.rb#345 + # source://rubocop//lib/rubocop/runner.rb#347 def inspect_file(processed_source, team = T.unsafe(nil)); end # source://rubocop//lib/rubocop/runner.rb#115 def inspect_files(files); end - # source://rubocop//lib/rubocop/runner.rb#306 + # source://rubocop//lib/rubocop/runner.rb#308 def iterate_until_no_changes(source, offenses_by_iteration); end # source://rubocop//lib/rubocop/runner.rb#148 @@ -61835,30 +62750,30 @@ class RuboCop::Runner # @return [Boolean] # - # source://rubocop//lib/rubocop/runner.rb#466 + # source://rubocop//lib/rubocop/runner.rb#468 def mark_as_safe_by_config?(config); end - # source://rubocop//lib/rubocop/runner.rb#474 + # source://rubocop//lib/rubocop/runner.rb#476 def minimum_severity_to_fail; end - # source://rubocop//lib/rubocop/runner.rb#374 + # source://rubocop//lib/rubocop/runner.rb#376 def mobilize_team(processed_source); end - # source://rubocop//lib/rubocop/runner.rb#379 + # source://rubocop//lib/rubocop/runner.rb#381 def mobilized_cop_classes(config); end # @return [Boolean] # - # source://rubocop//lib/rubocop/runner.rb#442 + # source://rubocop//lib/rubocop/runner.rb#444 def offense_displayed?(offense); end - # source://rubocop//lib/rubocop/runner.rb#454 + # source://rubocop//lib/rubocop/runner.rb#456 def offenses_to_report(offenses); end # source://rubocop//lib/rubocop/runner.rb#152 def process_file(file); end - # source://rubocop//lib/rubocop/runner.rb#403 + # source://rubocop//lib/rubocop/runner.rb#405 def qualify_option_cop_names; end # @yield [cop] @@ -61874,17 +62789,17 @@ class RuboCop::Runner # otherwise dormant team that can be used for config- and option- # level caching in ResultCache. # - # source://rubocop//lib/rubocop/runner.rb#517 + # source://rubocop//lib/rubocop/runner.rb#519 def standby_team(config); end # @return [Boolean] # - # source://rubocop//lib/rubocop/runner.rb#420 + # source://rubocop//lib/rubocop/runner.rb#422 def style_guide_cops_only?(config); end # @return [Boolean] # - # source://rubocop//lib/rubocop/runner.rb#458 + # source://rubocop//lib/rubocop/runner.rb#460 def supports_safe_autocorrect?(offense); end # @yield [team] @@ -61999,7 +62914,7 @@ class RuboCop::TargetFinder # # @api private # - # source://rubocop//lib/rubocop/target_finder.rb#62 + # source://rubocop//lib/rubocop/target_finder.rb#60 def find_files(base_dir, flags); end # Finds all Ruby source files under the current or other supplied directory. A Ruby source file @@ -62052,6 +62967,12 @@ class RuboCop::TargetFinder # source://rubocop//lib/rubocop/target_finder.rb#205 def force_exclusion?; end + # @api private + # @return [Boolean] + # + # source://rubocop//lib/rubocop/target_finder.rb#82 + def hidden_path?(path); end + # @api private # @return [Boolean] # @@ -62128,8 +63049,8 @@ class RuboCop::TargetFinder # @api private # @return [Boolean] # - # source://rubocop//lib/rubocop/target_finder.rb#77 - def to_inspect?(file, hidden_files, base_dir_config); end + # source://rubocop//lib/rubocop/target_finder.rb#75 + def to_inspect?(file, base_dir_config); end # @api private # @@ -62156,34 +63077,34 @@ class RuboCop::TargetRuby # @api private # @return [TargetRuby] a new instance of TargetRuby # - # source://rubocop//lib/rubocop/target_ruby.rb#273 + # source://rubocop//lib/rubocop/target_ruby.rb#282 def initialize(config); end # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#289 + # source://rubocop//lib/rubocop/target_ruby.rb#298 def rubocop_version_with_support; end # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#277 + # source://rubocop//lib/rubocop/target_ruby.rb#286 def source; end # @api private # @return [Boolean] # - # source://rubocop//lib/rubocop/target_ruby.rb#285 + # source://rubocop//lib/rubocop/target_ruby.rb#294 def supported?; end # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#281 + # source://rubocop//lib/rubocop/target_ruby.rb#290 def version; end class << self # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#258 + # source://rubocop//lib/rubocop/target_ruby.rb#267 def supported_versions; end end end @@ -62192,23 +63113,23 @@ end # # @api private # -# source://rubocop//lib/rubocop/target_ruby.rb#205 +# source://rubocop//lib/rubocop/target_ruby.rb#214 class RuboCop::TargetRuby::BundlerLockFile < ::RuboCop::TargetRuby::Source # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#206 + # source://rubocop//lib/rubocop/target_ruby.rb#215 def name; end private # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#239 + # source://rubocop//lib/rubocop/target_ruby.rb#248 def bundler_lock_file_path; end # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#212 + # source://rubocop//lib/rubocop/target_ruby.rb#221 def find_version; end end @@ -62221,18 +63142,18 @@ RuboCop::TargetRuby::DEFAULT_VERSION = T.let(T.unsafe(nil), Float) # # @api private # -# source://rubocop//lib/rubocop/target_ruby.rb#246 +# source://rubocop//lib/rubocop/target_ruby.rb#255 class RuboCop::TargetRuby::Default < ::RuboCop::TargetRuby::Source # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#247 + # source://rubocop//lib/rubocop/target_ruby.rb#256 def name; end private # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#253 + # source://rubocop//lib/rubocop/target_ruby.rb#262 def find_version; end end @@ -62259,7 +63180,7 @@ class RuboCop::TargetRuby::GemspecFile < ::RuboCop::TargetRuby::Source # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#137 + # source://rubocop//lib/rubocop/target_ruby.rb#146 def find_minimal_known_ruby(right_hand_side); end # @api private @@ -62274,7 +63195,7 @@ class RuboCop::TargetRuby::GemspecFile < ::RuboCop::TargetRuby::Source # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#133 + # source://rubocop//lib/rubocop/target_ruby.rb#142 def version_from_array(array); end # @api private @@ -62284,7 +63205,7 @@ class RuboCop::TargetRuby::GemspecFile < ::RuboCop::TargetRuby::Source # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#121 + # source://rubocop//lib/rubocop/target_ruby.rb#130 def version_from_right_hand_side(right_hand_side); end end @@ -62341,49 +63262,49 @@ end # # @api private # -# source://rubocop//lib/rubocop/target_ruby.rb#151 +# source://rubocop//lib/rubocop/target_ruby.rb#160 class RuboCop::TargetRuby::RubyVersionFile < ::RuboCop::TargetRuby::Source # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#155 + # source://rubocop//lib/rubocop/target_ruby.rb#164 def name; end private # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#161 + # source://rubocop//lib/rubocop/target_ruby.rb#170 def filename; end # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#169 + # source://rubocop//lib/rubocop/target_ruby.rb#178 def find_version; end # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#165 + # source://rubocop//lib/rubocop/target_ruby.rb#174 def pattern; end # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#176 + # source://rubocop//lib/rubocop/target_ruby.rb#185 def version_file; end end # @api private # -# source://rubocop//lib/rubocop/target_ruby.rb#152 +# source://rubocop//lib/rubocop/target_ruby.rb#161 RuboCop::TargetRuby::RubyVersionFile::RUBY_VERSION_FILENAME = T.let(T.unsafe(nil), String) # @api private # -# source://rubocop//lib/rubocop/target_ruby.rb#153 +# source://rubocop//lib/rubocop/target_ruby.rb#162 RuboCop::TargetRuby::RubyVersionFile::RUBY_VERSION_PATTERN = T.let(T.unsafe(nil), Regexp) # @api private # -# source://rubocop//lib/rubocop/target_ruby.rb#262 +# source://rubocop//lib/rubocop/target_ruby.rb#271 RuboCop::TargetRuby::SOURCES = T.let(T.unsafe(nil), Array) # A place where information about a target ruby version is found. @@ -62419,34 +63340,34 @@ end # # @api private # -# source://rubocop//lib/rubocop/target_ruby.rb#184 +# source://rubocop//lib/rubocop/target_ruby.rb#193 class RuboCop::TargetRuby::ToolVersionsFile < ::RuboCop::TargetRuby::RubyVersionFile # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#188 + # source://rubocop//lib/rubocop/target_ruby.rb#197 def name; end private # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#194 + # source://rubocop//lib/rubocop/target_ruby.rb#203 def filename; end # @api private # - # source://rubocop//lib/rubocop/target_ruby.rb#198 + # source://rubocop//lib/rubocop/target_ruby.rb#207 def pattern; end end # @api private # -# source://rubocop//lib/rubocop/target_ruby.rb#185 +# source://rubocop//lib/rubocop/target_ruby.rb#194 RuboCop::TargetRuby::ToolVersionsFile::TOOL_VERSIONS_FILENAME = T.let(T.unsafe(nil), String) # @api private # -# source://rubocop//lib/rubocop/target_ruby.rb#186 +# source://rubocop//lib/rubocop/target_ruby.rb#195 RuboCop::TargetRuby::ToolVersionsFile::TOOL_VERSIONS_PATTERN = T.let(T.unsafe(nil), Regexp) # source://rubocop//lib/rubocop/ast_aliases.rb#7 diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/simplecov-cobertura@2.1.0.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/simplecov-cobertura@3.1.0.rbi similarity index 84% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/simplecov-cobertura@2.1.0.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/simplecov-cobertura@3.1.0.rbi index c7db94a332..5049e65dd4 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/simplecov-cobertura@2.1.0.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/simplecov-cobertura@3.1.0.rbi @@ -144,52 +144,51 @@ end class SimpleCov::Formatter::CoberturaFormatter # @return [CoberturaFormatter] a new instance of CoberturaFormatter # - # source://simplecov-cobertura//lib/simplecov-cobertura.rb#15 + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#13 def initialize(result_file_name: T.unsafe(nil)); end - # source://simplecov-cobertura//lib/simplecov-cobertura.rb#19 + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#17 def format(result); end private - # source://simplecov-cobertura//lib/simplecov-cobertura.rb#151 - def coverage_output(result); end - - # source://simplecov-cobertura//lib/simplecov-cobertura.rb#166 + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#158 def extract_rate(percent); end - # source://simplecov-cobertura//lib/simplecov-cobertura.rb#170 - def project_root; end + # Roughly mirrors private method SimpleCov::Formatter::HTMLFormatter#output_coverage + # + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#147 + def output_message(result, output_path); end # source://simplecov-cobertura//lib/simplecov-cobertura.rb#162 + def project_root; end + + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#154 def resolve_filename(filename); end - # source://simplecov-cobertura//lib/simplecov-cobertura.rb#36 + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#35 def result_to_xml(result); end - # source://simplecov-cobertura//lib/simplecov-cobertura.rb#134 + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#136 def set_branch_attributes(line, file_line, branched_lines, branched_lines_covered); end - # source://simplecov-cobertura//lib/simplecov-cobertura.rb#115 + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#117 def set_class_attributes(class_, file); end - # source://simplecov-cobertura//lib/simplecov-cobertura.rb#86 + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#88 def set_coverage_attributes(coverage, result); end - # source://simplecov-cobertura//lib/simplecov-cobertura.rb#129 + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#131 def set_line_attributes(line, file_line); end - # source://simplecov-cobertura//lib/simplecov-cobertura.rb#103 + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#105 def set_package_attributes(package, name, result); end - - # source://simplecov-cobertura//lib/simplecov-cobertura.rb#144 - def set_xml_head(lines = T.unsafe(nil)); end end -# source://simplecov-cobertura//lib/simplecov-cobertura.rb#13 +# source://simplecov-cobertura//lib/simplecov-cobertura.rb#11 SimpleCov::Formatter::CoberturaFormatter::DTD_URL = T.let(T.unsafe(nil), String) -# source://simplecov-cobertura//lib/simplecov-cobertura.rb#12 +# source://simplecov-cobertura//lib/simplecov-cobertura.rb#10 SimpleCov::Formatter::CoberturaFormatter::RESULT_FILE_NAME = T.let(T.unsafe(nil), String) # source://simplecov-cobertura//lib/simplecov-cobertura/version.rb#4 diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/simplecov-html@0.13.1.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/simplecov-html@0.13.2.rbi similarity index 84% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/simplecov-html@0.13.1.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/simplecov-html@0.13.2.rbi index 2cd96d315b..bf14804a89 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/simplecov-html@0.13.1.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/simplecov-html@0.13.2.rbi @@ -5,7 +5,7 @@ # Please instead update this file by running `bin/tapioca gem simplecov-html`. -# source://simplecov-html//lib/simplecov-html.rb#16 +# source://simplecov-html//lib/simplecov-html.rb#15 module SimpleCov class << self # source://simplecov/0.22.0/lib/simplecov.rb#174 @@ -132,7 +132,7 @@ module SimpleCov end end -# source://simplecov-html//lib/simplecov-html.rb#17 +# source://simplecov-html//lib/simplecov-html.rb#16 module SimpleCov::Formatter class << self # source://simplecov/0.22.0/lib/simplecov/default_formatter.rb#7 @@ -140,85 +140,85 @@ module SimpleCov::Formatter end end -# source://simplecov-html//lib/simplecov-html.rb#18 +# source://simplecov-html//lib/simplecov-html.rb#17 class SimpleCov::Formatter::HTMLFormatter # @return [HTMLFormatter] a new instance of HTMLFormatter # - # source://simplecov-html//lib/simplecov-html.rb#19 + # source://simplecov-html//lib/simplecov-html.rb#26 def initialize; end - # source://simplecov-html//lib/simplecov-html.rb#26 + # source://simplecov-html//lib/simplecov-html.rb#33 def format(result); end private - # source://simplecov-html//lib/simplecov-html.rb#94 + # source://simplecov-html//lib/simplecov-html.rb#93 def asset_inline(name); end - # source://simplecov-html//lib/simplecov-html.rb#72 + # source://simplecov-html//lib/simplecov-html.rb#79 def asset_output_path; end - # source://simplecov-html//lib/simplecov-html.rb#80 + # source://simplecov-html//lib/simplecov-html.rb#87 def assets_path(name); end # @return [Boolean] # - # source://simplecov-html//lib/simplecov-html.rb#41 + # source://simplecov-html//lib/simplecov-html.rb#48 def branchable_result?; end - # source://simplecov-html//lib/simplecov-html.rb#125 + # source://simplecov-html//lib/simplecov-html.rb#124 def coverage_css_class(covered_percent); end - # source://simplecov-html//lib/simplecov-html.rb#121 + # source://simplecov-html//lib/simplecov-html.rb#120 def covered_percent(percent); end # Returns a table containing the given source files # - # source://simplecov-html//lib/simplecov-html.rb#112 + # source://simplecov-html//lib/simplecov-html.rb#111 def formatted_file_list(title, source_files); end # Returns the html for the given source_file # - # source://simplecov-html//lib/simplecov-html.rb#105 + # source://simplecov-html//lib/simplecov-html.rb#104 def formatted_source_file(source_file); end # Return a (kind of) unique id for the source file given. Uses SHA1 on path for the id # - # source://simplecov-html//lib/simplecov-html.rb#146 + # source://simplecov-html//lib/simplecov-html.rb#145 def id(source_file); end # @return [Boolean] # - # source://simplecov-html//lib/simplecov-html.rb#48 + # source://simplecov-html//lib/simplecov-html.rb#55 def line_status?(source_file, line); end - # source://simplecov-html//lib/simplecov-html.rb#158 + # source://simplecov-html//lib/simplecov-html.rb#157 def link_to_source_file(source_file); end - # source://simplecov-html//lib/simplecov-html.rb#56 + # source://simplecov-html//lib/simplecov-html.rb#63 def output_message(result); end - # source://simplecov-html//lib/simplecov-html.rb#68 + # source://simplecov-html//lib/simplecov-html.rb#75 def output_path; end - # source://simplecov-html//lib/simplecov-html.rb#154 + # source://simplecov-html//lib/simplecov-html.rb#153 def shortened_filename(source_file); end - # source://simplecov-html//lib/simplecov-html.rb#135 + # source://simplecov-html//lib/simplecov-html.rb#134 def strength_css_class(covered_strength); end # Returns the an erb instance for the template of given name # - # source://simplecov-html//lib/simplecov-html.rb#64 + # source://simplecov-html//lib/simplecov-html.rb#71 def template(name); end - # source://simplecov-html//lib/simplecov-html.rb#150 + # source://simplecov-html//lib/simplecov-html.rb#149 def timeago(time); end end # Only have a few content types, just hardcode them # -# source://simplecov-html//lib/simplecov-html.rb#87 +# source://simplecov-html//lib/simplecov-html.rb#19 SimpleCov::Formatter::HTMLFormatter::CONTENT_TYPES = T.let(T.unsafe(nil), Hash) # source://simplecov-html//lib/simplecov-html/version.rb#6 diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/spoom@1.6.3.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/spoom@1.6.3.rbi index 2c3d364ff9..38997e33b7 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/spoom@1.6.3.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/spoom@1.6.3.rbi @@ -183,13 +183,13 @@ class Spoom::Cli::Main < ::Thor # source://spoom//lib/spoom/cli.rb#64 def coverage(*args); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def deadcode(*args); end # source://spoom//lib/spoom/cli.rb#74 def lsp(*args); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def srb(*args); end # source://spoom//lib/spoom/cli.rb#93 @@ -343,24 +343,24 @@ end # source://spoom//lib/spoom/cli/srb.rb#14 class Spoom::Cli::Srb::Main < ::Thor - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def assertions(*args); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def bump(*args); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def coverage(*args); end def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def lsp(*args); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def sigs(*args); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def tc(*args); end end @@ -1271,7 +1271,7 @@ class Spoom::Coverage::D3::ColorPalette < ::T::Struct prop :strong, ::String class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -1751,7 +1751,7 @@ class Spoom::Coverage::Snapshot < ::T::Struct sig { params(obj: T::Hash[::String, T.untyped]).returns(::Spoom::Coverage::Snapshot) } def from_obj(obj); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -1942,7 +1942,7 @@ class Spoom::Deadcode::Definition < ::T::Struct def to_json(*args); end class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -3097,7 +3097,7 @@ class Spoom::Deadcode::Send < ::T::Struct def each_arg_assoc(&block); end class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -3119,7 +3119,7 @@ class Spoom::ExecResult < ::T::Struct def to_s; end class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -3384,7 +3384,7 @@ class Spoom::FileTree::Node < ::T::Struct def path; end class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -3466,7 +3466,7 @@ class Spoom::Git::Commit < ::T::Struct def timestamp; end class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end # Parse a line formatted as `%h %at` into a `Commit` @@ -3615,7 +3615,7 @@ class Spoom::LSP::Diagnostic < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Diagnostic) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -3656,7 +3656,7 @@ class Spoom::LSP::DocumentSymbol < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::DocumentSymbol) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -3730,7 +3730,7 @@ class Spoom::LSP::Hover < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Hover) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -3761,7 +3761,7 @@ class Spoom::LSP::Location < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Location) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -3846,7 +3846,7 @@ class Spoom::LSP::Position < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Position) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -3890,7 +3890,7 @@ class Spoom::LSP::Range < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Range) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -3980,7 +3980,7 @@ class Spoom::LSP::SignatureHelp < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::SignatureHelp) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -4559,7 +4559,7 @@ class Spoom::Model::Reference < ::T::Struct sig { params(name: ::String, location: ::Spoom::Location).returns(::Spoom::Model::Reference) } def constant(name, location); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end # : (String name, Spoom::Location location) -> Reference diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/tapioca@0.16.11.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/tapioca@0.16.11.rbi index c68f4e15be..7d2f6ada75 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/tapioca@0.16.11.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/tapioca@0.16.11.rbi @@ -55,16 +55,16 @@ module RBI; end # source://tapioca//lib/tapioca/rbi_ext/model.rb#5 class RBI::Tree < ::RBI::NodeWithComments - # source://rbi/0.3.6/lib/rbi/model.rb#113 + # source://rbi/0.3.7/lib/rbi/model.rb#113 def initialize(loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi/0.3.6/lib/rbi/model.rb#120 + # source://rbi/0.3.7/lib/rbi/model.rb#120 def <<(node); end - # source://rbi/0.3.6/lib/rbi/rewriters/add_sig_templates.rb#63 + # source://rbi/0.3.7/lib/rbi/rewriters/add_sig_templates.rb#63 def add_sig_templates!(with_todo_comment: T.unsafe(nil)); end - # source://rbi/0.3.6/lib/rbi/rewriters/annotate.rb#46 + # source://rbi/0.3.7/lib/rbi/rewriters/annotate.rb#46 def annotate!(annotation, annotate_scopes: T.unsafe(nil), annotate_properties: T.unsafe(nil)); end # source://tapioca//lib/tapioca/rbi_ext/model.rb#38 @@ -128,49 +128,49 @@ class RBI::Tree < ::RBI::NodeWithComments end def create_type_variable(name, type:, variance: T.unsafe(nil), fixed: T.unsafe(nil), upper: T.unsafe(nil), lower: T.unsafe(nil)); end - # source://rbi/0.3.6/lib/rbi/rewriters/deannotate.rb#38 + # source://rbi/0.3.7/lib/rbi/rewriters/deannotate.rb#38 def deannotate!(annotation); end - # source://rbi/0.3.6/lib/rbi/model.rb#126 + # source://rbi/0.3.7/lib/rbi/model.rb#126 def empty?; end - # source://rbi/0.3.6/lib/rbi/rewriters/filter_versions.rb#113 + # source://rbi/0.3.7/lib/rbi/rewriters/filter_versions.rb#113 def filter_versions!(version); end - # source://rbi/0.3.6/lib/rbi/rewriters/flatten_singleton_methods.rb#58 + # source://rbi/0.3.7/lib/rbi/rewriters/flatten_singleton_methods.rb#58 def flatten_singleton_methods!; end - # source://rbi/0.3.6/lib/rbi/rewriters/flatten_visibilities.rb#57 + # source://rbi/0.3.7/lib/rbi/rewriters/flatten_visibilities.rb#57 def flatten_visibilities!; end - # source://rbi/0.3.6/lib/rbi/rewriters/group_nodes.rb#78 + # source://rbi/0.3.7/lib/rbi/rewriters/group_nodes.rb#78 def group_nodes!; end - # source://rbi/0.3.6/lib/rbi/index.rb#62 + # source://rbi/0.3.7/lib/rbi/index.rb#62 def index; end - # source://rbi/0.3.6/lib/rbi/rewriters/merge_trees.rb#323 + # source://rbi/0.3.7/lib/rbi/rewriters/merge_trees.rb#323 def merge(other, left_name: T.unsafe(nil), right_name: T.unsafe(nil), keep: T.unsafe(nil)); end - # source://rbi/0.3.6/lib/rbi/rewriters/nest_non_public_members.rb#43 + # source://rbi/0.3.7/lib/rbi/rewriters/nest_non_public_members.rb#43 def nest_non_public_members!; end - # source://rbi/0.3.6/lib/rbi/rewriters/nest_singleton_methods.rb#33 + # source://rbi/0.3.7/lib/rbi/rewriters/nest_singleton_methods.rb#33 def nest_singleton_methods!; end - # source://rbi/0.3.6/lib/rbi/rewriters/nest_top_level_members.rb#60 + # source://rbi/0.3.7/lib/rbi/rewriters/nest_top_level_members.rb#60 def nest_top_level_members!; end - # source://rbi/0.3.6/lib/rbi/model.rb#110 + # source://rbi/0.3.7/lib/rbi/model.rb#110 def nodes; end - # source://rbi/0.3.6/lib/rbi/rewriters/attr_to_methods.rb#50 + # source://rbi/0.3.7/lib/rbi/rewriters/attr_to_methods.rb#50 def replace_attributes_with_methods!; end - # source://rbi/0.3.6/lib/rbi/rewriters/sort_nodes.rb#118 + # source://rbi/0.3.7/lib/rbi/rewriters/sort_nodes.rb#118 def sort_nodes!; end - # source://rbi/0.3.6/lib/rbi/rewriters/translate_rbs_sigs.rb#82 + # source://rbi/0.3.7/lib/rbi/rewriters/translate_rbs_sigs.rb#82 def translate_rbs_sigs!; end private @@ -190,7 +190,7 @@ class RBI::TypedParam < ::T::Struct const :type, ::String class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -876,7 +876,7 @@ class Tapioca::Commands::Command sig { void } def initialize; end - # source://thor/1.3.2/lib/thor/base.rb#155 + # source://thor/1.4.0/lib/thor/base.rb#155 sig { returns(::Thor::Actions) } def file_writer; end @@ -1151,7 +1151,7 @@ class Tapioca::ConfigHelper::ConfigError < ::T::Struct const :message_parts, T::Array[::Tapioca::ConfigHelper::ConfigErrorMessagePart] class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -1162,7 +1162,7 @@ class Tapioca::ConfigHelper::ConfigErrorMessagePart < ::T::Struct const :colors, T::Array[::Symbol] class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -2236,7 +2236,7 @@ class Tapioca::GemInfo < ::T::Struct sig { params(spec: ::Bundler::LazySpecification).returns(::Tapioca::GemInfo) } def from_spec(spec); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/thor@1.3.2.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/thor@1.4.0.rbi similarity index 98% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/thor@1.3.2.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/thor@1.4.0.rbi index 06a6a7c745..44586d67ba 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/thor@1.3.2.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/thor@1.4.0.rbi @@ -751,7 +751,7 @@ module Thor::Actions # # comment_lines 'config/initializers/session_store.rb', /cookie_store/ # - # source://thor//lib/thor/actions/file_manipulation.rb#308 + # source://thor//lib/thor/actions/file_manipulation.rb#333 def comment_lines(path, flag, *args); end # Copies the file from the relative source to the relative destination. If @@ -928,9 +928,30 @@ module Thor::Actions # match << " no more. Use thor!" # end # - # source://thor//lib/thor/actions/file_manipulation.rb#262 + # source://thor//lib/thor/actions/file_manipulation.rb#291 def gsub_file(path, flag, *args, &block); end + # Run a regular expression replacement on a file, raising an error if the + # contents of the file are not changed. + # + # ==== Parameters + # path:: path of the file to be changed + # flag:: the regexp or string to be replaced + # replacement:: the replacement, can be also given as a block + # config:: give :verbose => false to not log the status, and + # :force => true, to force the replacement regardless of runner behavior. + # + # ==== Example + # + # gsub_file! 'app/controllers/application_controller.rb', /#\s*(filter_parameter_logging :password)/, '\1' + # + # gsub_file! 'README', /rake/, :green do |match| + # match << " no more. Use thor!" + # end + # + # source://thor//lib/thor/actions/file_manipulation.rb#263 + def gsub_file!(path, flag, *args, &block); end + # Goes to the root and execute the given block. # # source://thor//lib/thor/actions.rb#200 @@ -1066,7 +1087,7 @@ module Thor::Actions # remove_file 'README' # remove_file 'app/controllers/application_controller.rb' # - # source://thor//lib/thor/actions/file_manipulation.rb#325 + # source://thor//lib/thor/actions/file_manipulation.rb#350 def remove_dir(path, config = T.unsafe(nil)); end # Removes a file at the given location. @@ -1080,7 +1101,7 @@ module Thor::Actions # remove_file 'README' # remove_file 'app/controllers/application_controller.rb' # - # source://thor//lib/thor/actions/file_manipulation.rb#325 + # source://thor//lib/thor/actions/file_manipulation.rb#350 def remove_file(path, config = T.unsafe(nil)); end # Executes a command returning the contents of the command. @@ -1164,7 +1185,7 @@ module Thor::Actions # # uncomment_lines 'config/initializers/session_store.rb', /active_record/ # - # source://thor//lib/thor/actions/file_manipulation.rb#289 + # source://thor//lib/thor/actions/file_manipulation.rb#314 def uncomment_lines(path, flag, *args); end protected @@ -1179,25 +1200,28 @@ module Thor::Actions private - # source://thor//lib/thor/actions/file_manipulation.rb#346 + # source://thor//lib/thor/actions/file_manipulation.rb#385 + def actually_gsub_file(path, flag, args, error_on_no_change, &block); end + + # source://thor//lib/thor/actions/file_manipulation.rb#371 def capture(*args); end - # source://thor//lib/thor/actions/file_manipulation.rb#342 + # source://thor//lib/thor/actions/file_manipulation.rb#367 def concat(string); end # Returns the value of attribute output_buffer. # - # source://thor//lib/thor/actions/file_manipulation.rb#337 + # source://thor//lib/thor/actions/file_manipulation.rb#362 def output_buffer; end # Sets the attribute output_buffer # # @param value the value to set the attribute output_buffer to. # - # source://thor//lib/thor/actions/file_manipulation.rb#337 + # source://thor//lib/thor/actions/file_manipulation.rb#362 def output_buffer=(_arg0); end - # source://thor//lib/thor/actions/file_manipulation.rb#350 + # source://thor//lib/thor/actions/file_manipulation.rb#375 def with_output_buffer(buf = T.unsafe(nil)); end class << self @@ -1209,9 +1233,9 @@ end # Thor::Actions#capture depends on what kind of buffer is used in ERB. # Thus CapturableERB fixes ERB to use String buffer. # -# source://thor//lib/thor/actions/file_manipulation.rb#362 +# source://thor//lib/thor/actions/file_manipulation.rb#398 class Thor::Actions::CapturableERB < ::ERB - # source://thor//lib/thor/actions/file_manipulation.rb#363 + # source://thor//lib/thor/actions/file_manipulation.rb#399 def set_eoutvar(compiler, eoutvar = T.unsafe(nil)); end end @@ -3655,9 +3679,6 @@ class Thor::Shell::Basic # source://thor//lib/thor/shell/basic.rb#296 def file_collision_help(block_given); end - # source://thor//lib/thor/shell/basic.rb#383 - def git_merge_tool; end - # @return [Boolean] # # source://thor//lib/thor/shell/basic.rb#286 diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/treetop@1.6.12.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/treetop@1.6.12.rbi index 2e52e694bb..14f4bbe3be 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/treetop@1.6.12.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/treetop@1.6.12.rbi @@ -227,17 +227,15 @@ end # source://treetop//lib/treetop/runtime/compiled_parser.rb#1 module Treetop - class << self - # compile a treetop source file and load it - # - # source://treetop//lib/treetop/compiler/grammar_compiler.rb#35 - def load(path); end + # compile a treetop source file and load it + # + # source://treetop//lib/treetop/compiler/grammar_compiler.rb#35 + def self.load(path); end - # compile a treetop source string and load it - # - # source://treetop//lib/treetop/compiler/grammar_compiler.rb#48 - def load_from_string(s); end - end + # compile a treetop source string and load it + # + # source://treetop//lib/treetop/compiler/grammar_compiler.rb#48 + def self.load_from_string(s); end end # source://treetop//lib/treetop/compiler/lexical_address_space.rb#2 @@ -1729,10 +1727,10 @@ class Treetop::Runtime::CompiledParser # source://treetop//lib/treetop/runtime/compiled_parser.rb#6 def input; end - # source://idlc/0.1.0/lib/idlc.rb#17 + # source://idlc/0.1.0/lib/idlc.rb#18 def input_file; end - # source://idlc/0.1.0/lib/idlc.rb#28 + # source://idlc/0.1.0/lib/idlc.rb#29 def instantiate_node(node_type, *args); end # Returns the value of attribute max_terminal_failure_index. @@ -1750,7 +1748,7 @@ class Treetop::Runtime::CompiledParser # source://treetop//lib/treetop/runtime/compiled_parser.rb#7 def root=(_arg0); end - # source://idlc/0.1.0/lib/idlc.rb#19 + # source://idlc/0.1.0/lib/idlc.rb#20 def set_input_file(filename, starting_line = T.unsafe(nil)); end # source://treetop//lib/treetop/runtime/compiled_parser.rb#54 diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/unicode-display_width@3.2.0.rbi similarity index 97% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/unicode-display_width@3.2.0.rbi index 0d6ec7f17a..6302173096 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/unicode-display_width@3.2.0.rbi @@ -5,9 +5,6 @@ # Please instead update this file by running `bin/tapioca gem unicode-display_width`. -# require "rbconfig" -# RbConfig::CONFIG["host_os"] =~ /mswin|mingw/ # windows -# # source://unicode-display_width//lib/unicode/display_width/constants.rb#3 module Unicode; end @@ -79,9 +76,12 @@ Unicode::DisplayWidth::DEFAULT_AMBIGUOUS = T.let(T.unsafe(nil), Integer) # source://unicode-display_width//lib/unicode/display_width.rb#32 Unicode::DisplayWidth::EMOJI_SEQUENCES_REGEX_MAPPING = T.let(T.unsafe(nil), Hash) -# source://unicode-display_width//lib/unicode/display_width/emoji_support.rb#6 +# source://unicode-display_width//lib/unicode/display_width/emoji_support.rb#5 module Unicode::DisplayWidth::EmojiSupport class << self + # source://unicode-display_width//lib/unicode/display_width/emoji_support.rb#18 + def _recommended; end + # Tries to find out which terminal emulator is used to # set emoji: config to best suiting value # @@ -91,7 +91,7 @@ module Unicode::DisplayWidth::EmojiSupport # Please note: Many terminals do not set any ENV vars, # maybe CSI queries can help? # - # source://unicode-display_width//lib/unicode/display_width/emoji_support.rb#15 + # source://unicode-display_width//lib/unicode/display_width/emoji_support.rb#14 def recommended; end end end diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/unicode-emoji@4.1.0.rbi similarity index 100% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/unicode-emoji@4.1.0.rbi diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/uri@1.0.3.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/uri@1.0.4.rbi similarity index 96% rename from tools/ruby-gems/idlc/sorbet/rbi/gems/uri@1.0.3.rbi rename to tools/ruby-gems/idlc/sorbet/rbi/gems/uri@1.0.4.rbi index 8a70cf8630..b0eeaade38 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/uri@1.0.3.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/uri@1.0.4.rbi @@ -753,7 +753,7 @@ class URI::Generic # # => "http://my.example.com/main.rbx?page=1" # merge # - # source://uri//lib/uri/generic.rb#1109 + # source://uri//lib/uri/generic.rb#1124 def +(oth); end # == Args @@ -773,28 +773,34 @@ class URI::Generic # uri.route_from('http://my.example.com') # #=> # # - # source://uri//lib/uri/generic.rb#1261 + # source://uri//lib/uri/generic.rb#1274 def -(oth); end # Compares two URIs. # - # source://uri//lib/uri/generic.rb#1386 + # source://uri//lib/uri/generic.rb#1399 def ==(oth); end # Returns true if URI has a scheme (e.g. http:// or https://) specified. # # @return [Boolean] # - # source://uri//lib/uri/generic.rb#972 + # source://uri//lib/uri/generic.rb#987 def absolute; end # Returns true if URI has a scheme (e.g. http:// or https://) specified. # # @return [Boolean] # - # source://uri//lib/uri/generic.rb#972 + # source://uri//lib/uri/generic.rb#987 def absolute?; end + # Returns the authority info (array of user, password, host and + # port), if any is set. Or returns +nil+. + # + # source://uri//lib/uri/generic.rb#579 + def authority; end + # == Args # # +v+:: @@ -813,7 +819,7 @@ class URI::Generic # uri.coerce("http://foo.com") # #=> [#, #] # - # source://uri//lib/uri/generic.rb#1465 + # source://uri//lib/uri/generic.rb#1478 def coerce(oth); end # Components of the URI in the order. @@ -823,12 +829,12 @@ class URI::Generic # Returns the password component after URI decoding. # - # source://uri//lib/uri/generic.rb#583 + # source://uri//lib/uri/generic.rb#589 def decoded_password; end # Returns the user component after URI decoding. # - # source://uri//lib/uri/generic.rb#578 + # source://uri//lib/uri/generic.rb#584 def decoded_user; end # Returns default port. @@ -840,7 +846,7 @@ class URI::Generic # # @return [Boolean] # - # source://uri//lib/uri/generic.rb#1400 + # source://uri//lib/uri/generic.rb#1413 def eql?(oth); end # Returns a proxy URI. @@ -861,7 +867,7 @@ class URI::Generic # # @raise [BadURIError] # - # source://uri//lib/uri/generic.rb#1491 + # source://uri//lib/uri/generic.rb#1504 def find_proxy(env = T.unsafe(nil)); end # Returns the fragment component of the URI. @@ -892,12 +898,12 @@ class URI::Generic # uri.fragment = "time=1305212086" # uri.to_s #=> "http://my.example.com/?id=25#time=1305212086" # - # source://uri//lib/uri/generic.rb#929 + # source://uri//lib/uri/generic.rb#944 def fragment=(v); end # Returns the hash value. # - # source://uri//lib/uri/generic.rb#1395 + # source://uri//lib/uri/generic.rb#1408 def hash; end # Returns true if URI is hierarchical. @@ -920,7 +926,7 @@ class URI::Generic # # @return [Boolean] # - # source://uri//lib/uri/generic.rb#961 + # source://uri//lib/uri/generic.rb#976 def hierarchical?; end # Returns the host component of the URI. @@ -966,7 +972,7 @@ class URI::Generic # uri.host = "foo.com" # uri.to_s #=> "http://foo.com" # - # source://uri//lib/uri/generic.rb#639 + # source://uri//lib/uri/generic.rb#652 def host=(v); end # Extract the host part of the URI and unwrap brackets for IPv6 addresses. @@ -978,7 +984,7 @@ class URI::Generic # uri.hostname #=> "::1" # uri.host #=> "[::1]" # - # source://uri//lib/uri/generic.rb#654 + # source://uri//lib/uri/generic.rb#668 def hostname; end # Sets the host part of the URI as the argument with brackets for IPv6 addresses. @@ -993,10 +999,10 @@ class URI::Generic # If the argument seems to be an IPv6 address, # it is wrapped with brackets. # - # source://uri//lib/uri/generic.rb#671 + # source://uri//lib/uri/generic.rb#685 def hostname=(v); end - # source://uri//lib/uri/generic.rb#1442 + # source://uri//lib/uri/generic.rb#1455 def inspect; end # == Args @@ -1016,7 +1022,7 @@ class URI::Generic # uri.merge("/main.rbx?page=1") # # => "http://my.example.com/main.rbx?page=1" # - # source://uri//lib/uri/generic.rb#1109 + # source://uri//lib/uri/generic.rb#1124 def merge(oth); end # == Args @@ -1036,7 +1042,7 @@ class URI::Generic # uri.merge!("/main.rbx?page=1") # uri.to_s # => "http://my.example.com/main.rbx?page=1" # - # source://uri//lib/uri/generic.rb#1081 + # source://uri//lib/uri/generic.rb#1096 def merge!(oth); end # Returns normalized URI. @@ -1051,12 +1057,12 @@ class URI::Generic # * scheme and host are converted to lowercase, # * an empty path component is set to "/". # - # source://uri//lib/uri/generic.rb#1318 + # source://uri//lib/uri/generic.rb#1331 def normalize; end # Destructive version of #normalize. # - # source://uri//lib/uri/generic.rb#1327 + # source://uri//lib/uri/generic.rb#1340 def normalize!; end # Returns the opaque part of the URI. @@ -1083,7 +1089,7 @@ class URI::Generic # # See also URI::Generic.check_opaque. # - # source://uri//lib/uri/generic.rb#901 + # source://uri//lib/uri/generic.rb#916 def opaque=(v); end # Returns the parser to be used. @@ -1148,7 +1154,7 @@ class URI::Generic # uri.path = "/faq/" # uri.to_s #=> "http://my.example.com/faq/" # - # source://uri//lib/uri/generic.rb#815 + # source://uri//lib/uri/generic.rb#830 def path=(v); end # Returns the port component of the URI. @@ -1179,7 +1185,7 @@ class URI::Generic # uri.port = 8080 # uri.to_s #=> "http://my.example.com:8080" # - # source://uri//lib/uri/generic.rb#729 + # source://uri//lib/uri/generic.rb#743 def port=(v); end # Returns the query component of the URI. @@ -1208,7 +1214,7 @@ class URI::Generic # # @raise [InvalidURIError] # - # source://uri//lib/uri/generic.rb#839 + # source://uri//lib/uri/generic.rb#854 def query=(v); end # source://uri//lib/uri/generic.rb#252 @@ -1216,14 +1222,14 @@ class URI::Generic # @raise [InvalidURIError] # - # source://uri//lib/uri/generic.rb#745 + # source://uri//lib/uri/generic.rb#760 def registry=(v); end # Returns true if URI does not have a scheme (e.g. http:// or https://) specified. # # @return [Boolean] # - # source://uri//lib/uri/generic.rb#984 + # source://uri//lib/uri/generic.rb#999 def relative?; end # == Args @@ -1243,7 +1249,7 @@ class URI::Generic # uri.route_from('http://my.example.com') # #=> # # - # source://uri//lib/uri/generic.rb#1261 + # source://uri//lib/uri/generic.rb#1274 def route_from(oth); end # == Args @@ -1263,7 +1269,7 @@ class URI::Generic # uri.route_to('http://my.example.com/main.rbx?page=1') # #=> # # - # source://uri//lib/uri/generic.rb#1301 + # source://uri//lib/uri/generic.rb#1314 def route_to(oth); end # Returns the scheme component of the URI. @@ -1313,17 +1319,17 @@ class URI::Generic # uri.select(:userinfo, :host, :path) # # => ["myuser:mypass", "my.example.com", "/test.rbx"] # - # source://uri//lib/uri/generic.rb#1431 + # source://uri//lib/uri/generic.rb#1444 def select(*components); end # Constructs String from URI. # - # source://uri//lib/uri/generic.rb#1342 + # source://uri//lib/uri/generic.rb#1355 def to_s; end # Constructs String from URI. # - # source://uri//lib/uri/generic.rb#1342 + # source://uri//lib/uri/generic.rb#1355 def to_str; end # Returns the user component (without URI decoding). @@ -1368,21 +1374,27 @@ class URI::Generic # Returns an Array of the components defined from the COMPONENT Array. # - # source://uri//lib/uri/generic.rb#1407 + # source://uri//lib/uri/generic.rb#1420 def component_ary; end + # Protected setter for the authority info (+user+, +password+, +host+ + # and +port+). If +port+ is +nil+, +default_port+ will be set. + # + # source://uri//lib/uri/generic.rb#627 + def set_authority(user, password, host, port = T.unsafe(nil)); end + # Protected setter for the host component +v+. # # See also URI::Generic.host=. # - # source://uri//lib/uri/generic.rb#613 + # source://uri//lib/uri/generic.rb#619 def set_host(v); end # Protected setter for the opaque component +v+. # # See also URI::Generic.opaque=. # - # source://uri//lib/uri/generic.rb#883 + # source://uri//lib/uri/generic.rb#898 def set_opaque(v); end # Protected setter for the password component +v+. @@ -1396,19 +1408,19 @@ class URI::Generic # # See also URI::Generic.path=. # - # source://uri//lib/uri/generic.rb#789 + # source://uri//lib/uri/generic.rb#804 def set_path(v); end # Protected setter for the port component +v+. # # See also URI::Generic.port=. # - # source://uri//lib/uri/generic.rb#702 + # source://uri//lib/uri/generic.rb#716 def set_port(v); end # @raise [InvalidURIError] # - # source://uri//lib/uri/generic.rb#740 + # source://uri//lib/uri/generic.rb#755 def set_registry(v); end # Protected setter for the scheme component +v+. @@ -1441,7 +1453,7 @@ class URI::Generic # Can not have a registry or opaque component defined, # with a host component defined. # - # source://uri//lib/uri/generic.rb#594 + # source://uri//lib/uri/generic.rb#600 def check_host(v); end # Checks the opaque +v+ component for RFC2396 compliance and @@ -1450,7 +1462,7 @@ class URI::Generic # Can not have a host, port, user, or path component defined, # with an opaque component defined. # - # source://uri//lib/uri/generic.rb#861 + # source://uri//lib/uri/generic.rb#876 def check_opaque(v); end # Checks the password +v+ component for RFC2396 compliance @@ -1469,7 +1481,7 @@ class URI::Generic # Can not have a opaque component defined, # with a path component defined. # - # source://uri//lib/uri/generic.rb#757 + # source://uri//lib/uri/generic.rb#772 def check_path(v); end # Checks the port +v+ component for RFC2396 compliance @@ -1478,12 +1490,12 @@ class URI::Generic # Can not have a registry or opaque component defined, # with a port component defined. # - # source://uri//lib/uri/generic.rb#683 + # source://uri//lib/uri/generic.rb#697 def check_port(v); end # @raise [InvalidURIError] # - # source://uri//lib/uri/generic.rb#735 + # source://uri//lib/uri/generic.rb#750 def check_registry(v); end # Checks the scheme +v+ component against the URI::Parser Regexp for :SCHEME. @@ -1519,7 +1531,7 @@ class URI::Generic # Merges a base path +base+, with relative path +rel+, # returns a modified base path. # - # source://uri//lib/uri/generic.rb#1000 + # source://uri//lib/uri/generic.rb#1015 def merge_path(base, rel); end # Replaces self by other URI object. @@ -1529,17 +1541,17 @@ class URI::Generic # :stopdoc: # - # source://uri//lib/uri/generic.rb#1193 + # source://uri//lib/uri/generic.rb#1206 def route_from0(oth); end # :stopdoc: # - # source://uri//lib/uri/generic.rb#1154 + # source://uri//lib/uri/generic.rb#1167 def route_from_path(src, dst); end # Returns an Array of the path split on '/'. # - # source://uri//lib/uri/generic.rb#991 + # source://uri//lib/uri/generic.rb#1006 def split_path(path); end # Returns the userinfo +ui+ as [user, password] @@ -1588,7 +1600,7 @@ class URI::Generic # @return [Boolean] # - # source://uri//lib/uri/generic.rb#1557 + # source://uri//lib/uri/generic.rb#1570 def use_proxy?(hostname, addr, port, no_proxy); end # source://uri//lib/uri/generic.rb#63 diff --git a/tools/ruby-gems/idlc/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi b/tools/ruby-gems/idlc/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi index 7aab948f1d..e468b44357 100644 --- a/tools/ruby-gems/idlc/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +++ b/tools/ruby-gems/idlc/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi @@ -388,7 +388,7 @@ class YARDSorbet::TStructProp < ::T::Struct const :types, T::Array[::String] class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end diff --git a/tools/ruby-gems/idlc/test/idl/constraint_errors.yaml b/tools/ruby-gems/idlc/test/idl/constraint_errors.yaml new file mode 100644 index 0000000000..4ebe01bdad --- /dev/null +++ b/tools/ruby-gems/idlc/test/idl/constraint_errors.yaml @@ -0,0 +1,11 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# c: constraint body, which should cause a type error + +tests: + - c: | + true -> 1; + - c: | + 1 -> false; diff --git a/tools/ruby-gems/idlc/test/idl/constraints.yaml b/tools/ruby-gems/idlc/test/idl/constraints.yaml new file mode 100644 index 0000000000..5c5a2bcc6d --- /dev/null +++ b/tools/ruby-gems/idlc/test/idl/constraints.yaml @@ -0,0 +1,44 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# c: constraint body +# r: result -- true if pass, false if not + +tests: + - c: | + true -> true; + r: true + - c: | + true -> false; + r: false + - c: | + false -> true; + r: true + - c: | + false -> false; + r: true + - c: | + (false && true) -> false; + r: true + - c: | + (false || true) -> false; + r: false + - c: | + true -> (false && true); + r: false + - c: | + true -> (false || true); + r: true + - c: | + TRUE_PARAM -> TRUE_PARAM; + p: + TRUE_PARAM: true + r: true + - c: | + for (U32 i = 0; i < 8; i++) { + TRUE_ARRAY[i] -> TRUE_ARRAY[i]; + } + p: + TRUE_ARRAY: [true, true, true, true, true, true, true, true] + r: true diff --git a/tools/ruby-gems/idlc/test/idl/literals.yaml b/tools/ruby-gems/idlc/test/idl/literals.yaml index 21f941a3c7..109ab29676 100644 --- a/tools/ruby-gems/idlc/test/idl/literals.yaml +++ b/tools/ruby-gems/idlc/test/idl/literals.yaml @@ -4,6 +4,11 @@ # SPDX-License-Identifier: BSD-3-Clause-Clear +# e: IDL expression +# =: Expected result (to_idl) +# d: description +# p: parameter value list + schema: expression_schema.json# tests: ################################################### diff --git a/tools/ruby-gems/idlc/test/run.rb b/tools/ruby-gems/idlc/test/run.rb index 85c0a14b6e..fc97d9ad3e 100644 --- a/tools/ruby-gems/idlc/test/run.rb +++ b/tools/ruby-gems/idlc/test/run.rb @@ -1,7 +1,7 @@ -# typed: false # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear +# typed: false # frozen_string_literal: true IDLC_ROOT = (Pathname.new(__dir__) / "..").realpath @@ -11,9 +11,13 @@ SimpleCov.start do enable_coverage :branch + add_filter "/test/" root IDLC_ROOT.to_s coverage_dir (IDLC_ROOT / "coverage").to_s - formatter SimpleCov::Formatter::CoberturaFormatter + formatter SimpleCov::Formatter::MultiFormatter.new([ + SimpleCov::Formatter::CoberturaFormatter, + SimpleCov::Formatter::HTMLFormatter, + ]) end puts "[SimpleCov] Coverage started." @@ -21,5 +25,6 @@ require "minitest/autorun" require_relative "test_expressions" +require_relative "test_constraints" require_relative "test_cli" require_relative "test_loops" diff --git a/tools/ruby-gems/idlc/test/test_cli.rb b/tools/ruby-gems/idlc/test/test_cli.rb index f98a0c4c9e..67b53dabc4 100644 --- a/tools/ruby-gems/idlc/test/test_cli.rb +++ b/tools/ruby-gems/idlc/test/test_cli.rb @@ -1,3 +1,4 @@ +# typed: false # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear @@ -31,7 +32,7 @@ def test_eval_addition end def test_operation_tc - Tempfile.open('idl') do |f| + Tempfile.open("idl") do |f| f.write <<~YAML operation(): | XReg src1 = X[xs1]; @@ -42,7 +43,6 @@ def test_operation_tc f.flush run_cmd("idlc tc inst -k 'operation()' -d xs1=5 -d xs2=5 -d xd=5 #{f.path}") - puts result.out assert_equal 0, result.status assert_empty result.err, "nothing should be written to STDERR" assert_empty result.out, "nothing should be written to STDOUT" diff --git a/tools/ruby-gems/idlc/test/test_constraints.rb b/tools/ruby-gems/idlc/test/test_constraints.rb new file mode 100644 index 0000000000..6a3bcb8f1c --- /dev/null +++ b/tools/ruby-gems/idlc/test/test_constraints.rb @@ -0,0 +1,86 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: false +# frozen_string_literal: true + +require "minitest/autorun" + +require "yaml" + +require_relative "helpers" +require "idlc" + +$root ||= (Pathname.new(__FILE__) / ".." / ".." / ".." / "..").realpath + +def to_idl_type(value) + case value + when Integer + width = value.zero? ? 1 : value.bit_length + Idl::Type.new(:bits, width:) + when String + Idl::Type.new(:string) + when TrueClass, FalseClass + Idl::Type.new(:boolean) + when Array + Idl::Type.new(:array, sub_type: to_idl_type(value[0])) + else + raise "Unexepected type" + end +end + +class ConstraintTestFactory + def self.create(klass_name, yaml_path) + raise ArgumentError, "klass_name must be a String" unless klass_name.is_a?(String) && klass_name.size > 0 + raise ArgumentError, "klass_name must be uppercase" unless klass_name[0] == klass_name[0].upcase + + # Test IDL constraints + Object.const_set(klass_name, + Class.new(Minitest::Test) do + include TestMixin + make_my_diffs_pretty! + + def setup + @symtab = Idl::SymbolTable.new + @compiler = Idl::Compiler.new + end + + test_yaml = YAML.load(File.read("#{Kernel.__dir__}/#{yaml_path}")) + test_yaml["tests"].each_with_index do |test, i| + define_method "test_#{i}" do + if test.key?("p") + @symtab.push(nil) + test["p"].each do |name, value| + @symtab.add!(name, Idl::Var.new(name, to_idl_type(value), value)) + end + end + constraint_ast = nil + if test["r"].nil? + assert_raises Idl::AstNode::TypeError do + ast = @compiler.compile_constraint(test["c"], @symtab, pass_error: true) + ast.type_check(@symtab) + end + else + out, err = capture_io do + constraint_ast = @compiler.compile_constraint(test["c"], @symtab) + constraint_ast.type_check(@symtab) + end + + if test["r"] + assert constraint_ast.satisfied?(@symtab), "Expected '#{constraint_ast.text_value}' to be true" + else + refute constraint_ast.satisfied?(@symtab), "Expected '#{constraint_ast.text_value}' to be false" + end + end + + @symtab.pop if test.key?("p") + end + end + end + ) + end +end + +# now list all the YAML files that specify constraints to test +ConstraintTestFactory.create("Constraints", "idl/constraints.yaml") +ConstraintTestFactory.create("BadConstraints", "idl/constraint_errors.yaml") diff --git a/tools/ruby-gems/idlc/test/test_functions.rb b/tools/ruby-gems/idlc/test/test_functions.rb index 6793c52e02..34f405530a 100644 --- a/tools/ruby-gems/idlc/test/test_functions.rb +++ b/tools/ruby-gems/idlc/test/test_functions.rb @@ -1,11 +1,12 @@ +# typed: false # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear # frozen_string_literal: true -require 'idlc' -require 'idlc/passes/reachable_exceptions' -require_relative 'test_helper' +require "idlc" +require "idlc/passes/reachable_exceptions" +require_relative "test_helper" require "minitest/autorun" $root ||= (Pathname.new(__FILE__) / ".." / ".." / ".." / "..").realpath @@ -146,7 +147,7 @@ def test_that_reachable_raise_analysis_respects_known_paths_down_an_unknown_path @cfg_arch.global_ast = ast ast.freeze_tree(@symtab) - test_ast = ast.functions.select { |f| f.name == "test" }[0] + test_ast = ast.functions.find { |f| f.name == "test" } pruned_test_ast = test_ast.body.prune(@symtab.deep_clone) assert_equal (1 << 1), pruned_test_ast.reachable_exceptions(@symtab.deep_clone) end diff --git a/tools/ruby-gems/udb/Gemfile b/tools/ruby-gems/udb/Gemfile index 6e77539098..a022ce653f 100644 --- a/tools/ruby-gems/udb/Gemfile +++ b/tools/ruby-gems/udb/Gemfile @@ -1,8 +1,8 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# frozen_string_literal: true # typed: true +# frozen_string_literal: true source "https://rubygems.org" diff --git a/tools/ruby-gems/udb/Gemfile.lock b/tools/ruby-gems/udb/Gemfile.lock index c2782d086c..ad47f3fcb2 100644 --- a/tools/ruby-gems/udb/Gemfile.lock +++ b/tools/ruby-gems/udb/Gemfile.lock @@ -22,16 +22,21 @@ PATH concurrent-ruby idlc json_schemer + numbers_and_words + pastel + ruby-minisat (>= 2.2.0.3) sorbet-runtime terminal-table thor tilt + tty-logger + tty-progressbar udb_helpers GEM remote: https://rubygems.org/ specs: - activesupport (8.0.2) + activesupport (8.0.3) base64 benchmark (>= 0.3) bigdecimal @@ -44,16 +49,16 @@ GEM securerandom (>= 0.3) tzinfo (~> 2.0, >= 2.0.5) uri (>= 0.13.1) - asciidoctor (2.0.23) + asciidoctor (2.0.24) ast (2.4.3) awesome_print (1.9.2) base64 (0.3.0) benchmark (0.4.1) - bigdecimal (3.2.2) + bigdecimal (3.3.1) commander (5.0.0) highline (~> 3.0.0) concurrent-ruby (1.3.5) - connection_pool (2.5.3) + connection_pool (2.5.4) docile (1.4.1) drb (2.2.3) erubi (1.13.1) @@ -61,7 +66,7 @@ GEM highline (3.0.1) i18n (1.14.7) concurrent-ruby (~> 1.0) - json (2.12.2) + json (2.15.1) json_schemer (2.4.0) bigdecimal hana (~> 1.3) @@ -70,25 +75,29 @@ GEM language_server-protocol (3.17.0.5) lint_roller (1.1.0) logger (1.7.0) - minitest (5.25.5) + minitest (5.26.0) netrc (0.11.0) + numbers_and_words (1.0.2) + i18n (<= 2) parallel (1.27.0) - parser (3.3.8.0) + parser (3.3.9.0) ast (~> 2.4.1) racc + pastel (0.8.0) + tty-color (~> 0.5) polyglot (0.3.5) - prism (1.4.0) + prism (1.5.2) racc (1.8.1) - rack (3.1.16) + rack (3.2.3) rainbow (3.1.1) - rbi (0.3.6) + rbi (0.3.7) prism (~> 1.0) rbs (>= 3.4.4) - rbs (3.9.4) + rbs (3.9.5) logger - regexp_parser (2.10.0) - rexml (3.4.1) - rubocop (1.76.2) + regexp_parser (2.11.3) + rexml (3.4.4) + rubocop (1.81.1) json (~> 2.3) language_server-protocol (~> 3.17.0.2) lint_roller (~> 1.1.0) @@ -96,50 +105,53 @@ GEM parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.45.1, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.45.1) + rubocop-ast (1.47.1) parser (>= 3.3.7.2) prism (~> 1.4) rubocop-github (0.26.0) rubocop (>= 1.76) rubocop-performance (>= 1.24) rubocop-rails (>= 2.23) - rubocop-minitest (0.38.1) + rubocop-minitest (0.38.2) lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.38.0, < 2.0) - rubocop-performance (1.25.0) + rubocop-performance (1.26.0) lint_roller (~> 1.1) rubocop (>= 1.75.0, < 2.0) - rubocop-ast (>= 1.38.0, < 2.0) - rubocop-rails (2.32.0) + rubocop-ast (>= 1.44.0, < 2.0) + rubocop-rails (2.33.4) activesupport (>= 4.2.0) lint_roller (~> 1.1) rack (>= 1.1) rubocop (>= 1.75.0, < 2.0) rubocop-ast (>= 1.44.0, < 2.0) - rubocop-sorbet (0.10.4) + rubocop-sorbet (0.11.0) lint_roller rubocop (>= 1.75.2) + ruby-minisat (2.2.0.3) ruby-progressbar (1.13.0) securerandom (0.4.1) simplecov (0.22.0) docile (~> 1.1) simplecov-html (~> 0.11) simplecov_json_formatter (~> 0.1) - simplecov-html (0.13.1) + simplecov-cobertura (3.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.13.2) simplecov_json_formatter (0.1.4) simpleidn (0.2.3) - sorbet (0.5.12189) - sorbet-static (= 0.5.12189) - sorbet-runtime (0.5.12189) - sorbet-static (0.5.12189-aarch64-linux) - sorbet-static (0.5.12189-x86_64-linux) - sorbet-static-and-runtime (0.5.12189) - sorbet (= 0.5.12189) - sorbet-runtime (= 0.5.12189) + sorbet (0.6.12645) + sorbet-static (= 0.6.12645) + sorbet-runtime (0.6.12645) + sorbet-static (0.6.12645-x86_64-linux) + sorbet-static-and-runtime (0.6.12645) + sorbet (= 0.6.12645) + sorbet-runtime (= 0.6.12645) spoom (1.6.3) erubi (>= 1.10.0) prism (>= 0.28.0) @@ -147,6 +159,7 @@ GEM rexml (>= 3.2.6) sorbet-static-and-runtime (>= 0.5.10187) thor (>= 0.19.2) + strings-ansi (0.2.0) tapioca (0.16.11) benchmark bundler (>= 2.2.25) @@ -159,23 +172,30 @@ GEM yard-sorbet terminal-table (4.0.0) unicode-display_width (>= 1.1.1, < 4) - thor (1.3.2) - tilt (2.6.0) + thor (1.4.0) + tilt (2.6.1) treetop (1.6.12) polyglot (~> 0.3) + tty-color (0.6.0) + tty-cursor (0.7.1) + tty-logger (0.6.0) + pastel (~> 0.8) + tty-progressbar (0.18.3) + strings-ansi (~> 0.2) + tty-cursor (~> 0.7) + tty-screen (~> 0.8) + unicode-display_width (>= 1.6, < 3.0) + tty-screen (0.8.2) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - unicode-display_width (3.1.4) - unicode-emoji (~> 4.0, >= 4.0.4) - unicode-emoji (4.0.4) - uri (1.0.3) + unicode-display_width (2.6.0) + uri (1.0.4) yard (0.9.37) yard-sorbet (0.9.0) sorbet-runtime yard PLATFORMS - aarch64-linux-gnu x86_64-linux-gnu DEPENDENCIES @@ -185,6 +205,7 @@ DEPENDENCIES rubocop-performance rubocop-sorbet simplecov + simplecov-cobertura sorbet tapioca udb! diff --git a/tools/ruby-gems/udb/REUSE.toml b/tools/ruby-gems/udb/REUSE.toml index 314d525ec5..9b0211aee2 100644 --- a/tools/ruby-gems/udb/REUSE.toml +++ b/tools/ruby-gems/udb/REUSE.toml @@ -15,6 +15,7 @@ SPDX-License-Identifier = "BSD-3-Clause-Clear" [[annotations]] path = [ "sorbet/**", + "test/boolean_expressions.json", "Gemfile.lock" ] SPDX-FileCopyrightText = "NONE" diff --git a/tools/ruby-gems/udb/Rakefile b/tools/ruby-gems/udb/Rakefile index e71fadda64..8ecb88cf73 100644 --- a/tools/ruby-gems/udb/Rakefile +++ b/tools/ruby-gems/udb/Rakefile @@ -28,6 +28,7 @@ namespace :chore do task :update_deps do ENV["BUNDLE_APP_CONFIG"] = ($root / ".bundle").to_s Dir.chdir(RUBY_UDB_ROOT) do + sh "bundle install --gemfile #{RUBY_UDB_ROOT}/Gemfile" sh "bundle update --gemfile #{RUBY_UDB_ROOT}/Gemfile" sh "bundle exec --gemfile #{RUBY_UDB_ROOT}/Gemfile tapioca gems --all" sh "bundle exec --gemfile #{RUBY_UDB_ROOT}/Gemfile tapioca dsl" @@ -40,6 +41,19 @@ namespace :chore do sh "bundle exec srb tc --lsp --disable-watchman" end end + + task :collate_cov, [:cov_dir] do |t, args| + require "simplecov" + require "simplecov-cobertura" + + SimpleCov.collate Dir["#{args[:cov_dir]}/*.resultset.json"] do + coverage_dir (UDB_ROOT / "coverage").to_s + formatter SimpleCov::Formatter::MultiFormatter.new([ + SimpleCov::Formatter::CoberturaFormatter, + SimpleCov::Formatter::HTMLFormatter, + ]) + end + end end end diff --git a/tools/ruby-gems/udb/lib/tapioca/dsl/compilers/architecture_compiler.rb b/tools/ruby-gems/udb/lib/tapioca/dsl/compilers/cfg_arch_compiler.rb similarity index 91% rename from tools/ruby-gems/udb/lib/tapioca/dsl/compilers/architecture_compiler.rb rename to tools/ruby-gems/udb/lib/tapioca/dsl/compilers/cfg_arch_compiler.rb index a771c31b9f..86755c2dbd 100644 --- a/tools/ruby-gems/udb/lib/tapioca/dsl/compilers/architecture_compiler.rb +++ b/tools/ruby-gems/udb/lib/tapioca/dsl/compilers/cfg_arch_compiler.rb @@ -1,19 +1,19 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# frozen_string_literal: true # typed: true +# frozen_string_literal: true require "active_support/inflector/methods" -require "udb/architecture" +require "udb/cfg_arch" module Tapioca module Compilers class Encryptable < Tapioca::Dsl::Compiler extend T::Sig - ConstantType = type_member { { fixed: T.class_of(Udb::Architecture) } } + ConstantType = type_member { { fixed: T.class_of(Udb::ConfiguredArchitecture) } } sig { override.returns(T::Enumerable[Module]) } def self.gather_constants diff --git a/tools/ruby-gems/udb/lib/udb.rb b/tools/ruby-gems/udb/lib/udb.rb index 945ab9e2a4..c01f67df35 100644 --- a/tools/ruby-gems/udb/lib/udb.rb +++ b/tools/ruby-gems/udb/lib/udb.rb @@ -9,8 +9,7 @@ module Udb; end require_relative "udb/cert_normative_rule" require_relative "udb/cert_test_procedure" require_relative "udb/doc_link" -require_relative "udb/exception_code" -require_relative "udb/req_expression" +require_relative "udb/condition" require_relative "udb/schema" require_relative "udb/version" @@ -19,6 +18,7 @@ module Udb; end require_relative "udb/obj/csr_field" require_relative "udb/obj/csr" require_relative "udb/obj/database_obj" +require_relative "udb/obj/exception_code" require_relative "udb/obj/extension" require_relative "udb/obj/instruction" require_relative "udb/obj/manual" diff --git a/tools/ruby-gems/udb/lib/udb/architecture.rb b/tools/ruby-gems/udb/lib/udb/architecture.rb index 7126575fc4..6b62e72c3a 100644 --- a/tools/ruby-gems/udb/lib/udb/architecture.rb +++ b/tools/ruby-gems/udb/lib/udb/architecture.rb @@ -1,8 +1,8 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear +# typed: true # frozen_string_literal: true -# typed: false # The Architecture class is the API to the architecture database. # The "database" contains RISC-V standards including extensions, instructions, @@ -50,7 +50,7 @@ require_relative "obj/certificate" require_relative "obj/csr" require_relative "obj/csr_field" -require_relative "exception_code" +require_relative "obj/exception_code" require_relative "obj/extension" require_relative "obj/instruction" require_relative "obj/manual" @@ -60,361 +60,268 @@ module Udb -class Architecture - extend T::Sig + class Architecture + extend T::Sig - # @return [Pathname] Path to the directory with the standard YAML files - attr_reader :path + # Path to the directory with the standard YAML files + attr_reader :path - # @param arch_dir [String,Pathname] Path to a directory with a fully merged/resolved architecture definition - def initialize(arch_dir) - @arch_dir = Pathname.new(arch_dir) - raise "Arch directory not found: #{arch_dir}" unless @arch_dir.exist? + # @param arch_dir [String,Pathname] Path to a directory with a fully merged/resolved architecture definition + sig { params(arch_dir: T.any(Pathname, String)).void } + def initialize(arch_dir) + @arch_dir = Pathname.new(arch_dir) + raise "Arch directory not found: #{arch_dir}" unless @arch_dir.exist? - @arch_dir = @arch_dir.realpath - @path = @arch_dir # alias - @objects = Concurrent::Hash.new - @object_hashes = Concurrent::Hash.new - end + @arch_dir = @arch_dir.realpath + @path = @arch_dir # alias + @objects = Concurrent::Hash.new + @object_hashes = Concurrent::Hash.new + end - # validate the architecture against JSON Schema and any object-specific verification - # @param show_progress [Boolean] Whether to show a progress bar - sig { params(resolver: Resolver, show_progress: T::Boolean).void } - def validate(resolver, show_progress: true) - progressbar = ProgressBar.create(total: objs.size) if show_progress + # validate the architecture against JSON Schema and any object-specific verification + # @param show_progress [Boolean] Whether to show a progress bar + sig { params(resolver: Resolver, show_progress: T::Boolean).void } + def validate(resolver, show_progress: true) + progressbar = ProgressBar.create(total: objs.size) if show_progress - objs.each do |obj| - next unless obj.is_a?(TopLevelDatabaseObject) + objs.each do |obj| + next unless obj.is_a?(TopLevelDatabaseObject) - progressbar.increment if show_progress - obj.validate(resolver) + progressbar.increment if show_progress + obj.validate(resolver) + end end - end - # These instance methods are create when this Architecture class is first loaded. - # This is a Ruby "class" method and so self is the entire Architecture class, not an instance it. - # However, this class method creates normal instance methods and when they are called - # self is an instance of the Architecture class. - # - # @!macro [attach] generate_obj_methods - # @method $1s - # @return [Array<$3>] List of all $1s defined in the standard - # - # @method $1_hash - # @return [Hash] Hash of all $1s - # - # @method $1 - # @param name [String] The $1 name - # @return [$3] The $1 - # @return [nil] if there is no $1 named +name+ - sig { params(fn_name: String, arch_dir: String, obj_class: T.class_of(DatabaseObject)).void } - def self.generate_obj_methods(fn_name, arch_dir, obj_class) - plural_fn = ActiveSupport::Inflector.pluralize(fn_name) - - define_method(plural_fn) do - return @objects[arch_dir] unless @objects[arch_dir].nil? - - @objects[arch_dir] = Concurrent::Array.new - @object_hashes[arch_dir] = Concurrent::Hash.new - Dir.glob(@arch_dir / arch_dir / "**" / "*.yaml") do |obj_path| - f = File.open(obj_path) - f.flock(File::LOCK_EX) - obj_yaml = YAML.load(f.read, filename: obj_path, permitted_classes: [Date]) - f.flock(File::LOCK_UN) - @objects[arch_dir] << obj_class.new(obj_yaml, Pathname.new(obj_path).realpath, self) - @object_hashes[arch_dir][@objects[arch_dir].last.name] = @objects[arch_dir].last + OBJS = [ + { + fn_name: "extension", + arch_dir: "ext", + klass: Extension, + kind: DatabaseObject::Kind::Extension + }, + { + fn_name: "instruction", + arch_dir: "inst", + klass: Instruction, + kind: DatabaseObject::Kind::Instruction + }, + { + fn_name: "instruction_type", + arch_dir: "inst_type", + klass: InstructionType, + kind: DatabaseObject::Kind::InstructionType + }, + { + fn_name: "instruction_subtype", + arch_dir: "inst_subtype", + klass: InstructionSubtype, + kind: DatabaseObject::Kind::InstructionSubtype + }, + { + fn_name: "csr", + arch_dir: "csr", + klass: Csr, + kind: DatabaseObject::Kind::Csr + }, + { + fn_name: "param", + arch_dir: "param", + klass: Parameter, + kind: DatabaseObject::Kind::Parameter + }, + { + fn_name: "exception_code", + arch_dir: "exception_code", + klass: ExceptionCode, + kind: DatabaseObject::Kind::ExceptionCode + }, + { + fn_name: "interrupt_code", + arch_dir: "interrupt_code", + klass: InterruptCode, + kind: DatabaseObject::Kind::InterruptCode + }, + { + fn_name: "proc_cert_class", + arch_dir: "proc_cert_class", + klass: ProcCertClass, + kind: DatabaseObject::Kind::ProcessorCertificateClass + }, + { + fn_name: "proc_cert_model", + arch_dir: "proc_cert_model", + klass: ProcCertModel, + kind: DatabaseObject::Kind::ProcessorCertificateModel + }, + { + fn_name: "manual", + arch_dir: "manual", + klass: Manual, + kind: DatabaseObject::Kind::Manual + }, + { + fn_name: "manual_version", + arch_dir: "manual_version", + klass: ManualVersion, + kind: DatabaseObject::Kind::ManualVersion + }, + { + fn_name: "profile_release", + arch_dir: "profile_release", + klass: ProfileRelease, + kind: DatabaseObject::Kind::ProfileRelease + }, + { + fn_name: "profile_family", + arch_dir: "profile_family", + klass: ProfileFamily, + kind: DatabaseObject::Kind::ProfileFamily + }, + { + fn_name: "profile", + arch_dir: "profile", + klass: Profile, + kind: DatabaseObject::Kind::Profile + }, + { + fn_name: "prm", + arch_dir: "prm", + klass: Prm, + kind: DatabaseObject::Kind::Prm + } + ].freeze + + # @return [Array] All known objects + sig { returns(T::Array[TopLevelDatabaseObject]) } + def objs + return @objs unless @objs.nil? + + @objs = [] + OBJS.each do |obj_info| + @objs.concat(send(ActiveSupport::Inflector.pluralize(obj_info[:fn_name]))) end - @objects[arch_dir] + @objs.freeze end - define_method("#{fn_name}_hash") do - return @object_hashes[arch_dir] unless @object_hashes[arch_dir].nil? - - send(plural_fn) # create the hash - - @object_hashes[arch_dir] + # @return All known extension versions + sig { returns(T::Array[ExtensionVersion]) } + def extension_versions + @extension_versions ||= extensions.map(&:versions).flatten.freeze end - define_method(fn_name) do |name| - return @object_hashes[arch_dir][name] unless @object_hashes[arch_dir].nil? + # @return Alphabetical list of all portfolio classes defined in the architecture + sig { returns(T::Array[PortfolioClass]) } + def portfolio_classes + return @portfolio_classes unless @portfolio_classes.nil? - send(plural_fn) # create the hash - - @object_hashes[arch_dir][name] + @portfolio_classes = profile_families.concat(proc_cert_classes).sort_by!(&:name).freeze end - end - OBJS = [ - { - fn_name: "extension", - arch_dir: "ext", - klass: Extension, - kind: DatabaseObject::Kind::Extension - }, - { - fn_name: "instruction", - arch_dir: "inst", - klass: Instruction, - kind: DatabaseObject::Kind::Instruction - }, - { - fn_name: "instruction_type", - arch_dir: "inst_type", - klass: InstructionType, - kind: DatabaseObject::Kind::InstructionType - }, - { - fn_name: "instruction_subtype", - arch_dir: "inst_subtype", - klass: InstructionSubtype, - kind: DatabaseObject::Kind::InstructionSubtype - }, - { - fn_name: "csr", - arch_dir: "csr", - klass: Csr, - kind: DatabaseObject::Kind::Csr - }, - { - fn_name: "proc_cert_class", - arch_dir: "proc_cert_class", - klass: ProcCertClass, - kind: DatabaseObject::Kind::ProcessorCertificateClass - }, - { - fn_name: "proc_cert_model", - arch_dir: "proc_cert_model", - klass: ProcCertModel, - kind: DatabaseObject::Kind::ProcessorCertificateModel - }, - { - fn_name: "manual", - arch_dir: "manual", - klass: Manual, - kind: DatabaseObject::Kind::Manual - }, - { - fn_name: "manual_version", - arch_dir: "manual_version", - klass: ManualVersion, - kind: DatabaseObject::Kind::ManualVersion - }, - { - fn_name: "profile_release", - arch_dir: "profile_release", - klass: ProfileRelease, - kind: DatabaseObject::Kind::ProfileRelease - }, - { - fn_name: "profile_family", - arch_dir: "profile_family", - klass: ProfileFamily, - kind: DatabaseObject::Kind::ProfileFamily - }, - { - fn_name: "profile", - arch_dir: "profile", - klass: Profile, - kind: DatabaseObject::Kind::Profile - }, - { - fn_name: "prm", - arch_dir: "prm", - klass: Prm, - kind: DatabaseObject::Kind::Prm - } - ].freeze - - OBJS.each do |obj_info| - generate_obj_methods(obj_info[:fn_name], obj_info[:arch_dir], obj_info[:klass]) - end + # @return Hash of all portfolio classes defined in the architecture + sig { returns(T::Hash[String, PortfolioClass]) } + def portfolio_class_hash + return @portfolio_class_hash unless @portfolio_class_hash.nil? - # @return [Array] All known objects - sig { returns(T::Array[TopLevelDatabaseObject]) } - def objs - return @objs unless @objs.nil? - - @objs = [] - OBJS.each do |obj_info| - @objs.concat(send(ActiveSupport::Inflector.pluralize(obj_info[:fn_name]))) + @portfolio_class_hash = {} + portfolio_classes.each do |portfolio_class| + @portfolio_class_hash[portfolio_class.name] = portfolio_class + end + @portfolio_class_hash.freeze end - @objs.freeze - end - - # @return [Array] Alphabetical list of all parameters defined in the architecture - def params - return @params unless @params.nil? - @params = extensions.map(&:params).flatten.uniq(&:name).sort_by!(&:name) - end + # @return [PortfolioClass] Portfolio class named +name+ + # @return [nil] if there is no Portfolio class named +name+ + def portfolio_class(name) = portfolio_class_hash[name] - # @return [Hash] Hash of all extension parameters defined in the architecture - def param_hash - return @param_hash unless @param_hash.nil? + # @return [Array] Alphabetical list of all portfolios defined in the architecture + def portfolios + return @portfolios unless @portfolios.nil? - @param_hash = {} - params.each do |param| - @param_hash[param.name] = param + @portfolios = @profiles.concat(@certificates).sort_by!(&:name) end - @param_hash - end - - # @return [Parameter] Parameter named +name+ - # @return [nil] if there is no parameter named +name+ - sig { params(name: String).returns(T.nilable(Parameter)) } - def param(name) - param_hash[name] - end - # @return [Array] Alphabetical list of all portfolio classes defined in the architecture - def portfolio_classes - return @portfolio_classes unless @portfolio_classes.nil? + # @return [Hash] Hash of all portfolios defined in the architecture + def portfolio_hash + return @portfolio_hash unless @portfolio_hash.nil? - @portfolio_classes = profile_families.concat(proc_cert_classes).sort_by!(&:name) - end - - # @return [Hash] Hash of all portfolio classes defined in the architecture - def portfolio_class_hash - return @portfolio_class_hash unless @portfolio_class_hash.nil? - - @portfolio_class_hash = {} - portfolio_classes.each do |portfolio_class| - @portfolio_class_hash[portfolio_class.name] = portfolio_class + @portfolio_hash = {} + portfolios.each do |portfolio| + @portfolio_hash[portfolio.name] = portfolio + end + @portfolio_hash end - @portfolio_class_hash - end - # @return [PortfolioClass] Portfolio class named +name+ - # @return [nil] if there is no Portfolio class named +name+ - def portfolio_class(name) = portfolio_class_hash[name] - - # @return [Array] Alphabetical list of all portfolios defined in the architecture - def portfolios - return @portfolios unless @portfolios.nil? - - @portfolios = @profiles.concat(@certificates).sort_by!(&:name) - end - - # @return [Hash] Hash of all portfolios defined in the architecture - def portfolio_hash - return @portfolio_hash unless @portfolio_hash.nil? - - @portfolio_hash = {} - portfolios.each do |portfolio| - @portfolio_hash[portfolio.name] = portfolio + # @return [PortfolioClass] Portfolio named +name+ + # @return [nil] if there is no Portfolio named +name+ + def portfolio(name) + portfolio_hash[name] end - @portfolio_hash - end - - # @return [PortfolioClass] Portfolio named +name+ - # @return [nil] if there is no Portfolio named +name+ - def portfolio(name) - portfolio_hash[name] - end - - # @return [Array] All exception codes defined by the spec - def exception_codes - return @exception_codes unless @exception_codes.nil? - - @exception_codes = - extensions.reduce([]) do |list, ext| - ecodes = extension(ext.name).data["exception_codes"] - next list if ecodes.nil? - - ecodes.each do |ecode| - # double check that all the codes are unique - raise "Duplicate exception code" if list.any? { |e| e.num == ecode["num"] || e.name == ecode["name"] || e.var == ecode["var"] } - list << ExceptionCode.new(ecode["name"], ecode["var"], ecode["num"], ext) + # given a `$ref` target, return the Ruby object + # + # @params uri [String] JSON Reference pointer + # @return [Object] The pointed-to object + sig { params(uri: String).returns(T.untyped) } + def ref(uri) + raise ArgumentError, "JSON Reference (#{uri}) must contain one '#'" unless uri.count("#") == 1 + + file_path, obj_path = uri.split("#") + file_path = T.must(file_path) + obj = T.let(nil, T.untyped) + obj = + case file_path + when /^proc_cert_class.*/ + proc_cert_class_name = File.basename(file_path, ".yaml") + proc_cert_class(proc_cert_class_name) + when /^proc_cert_model.*/ + proc_cert_model_name = File.basename(file_path, ".yaml") + proc_cert_model(proc_cert_model_name) + when /^csr.*/ + csr_name = File.basename(file_path, ".yaml") + csr(csr_name) + when /^ext.*/ + ext_name = File.basename(file_path, ".yaml") + extension(ext_name) + when %r{^inst/.*} + inst_name = File.basename(file_path, ".yaml") + instruction(inst_name) + when /^manual.*/ + manual_name = File.basename(file_path, ".yaml") + manual(manual_name) + when /^manual_version.*/ + manual_name = File.basename(file_path, ".yaml") + manual_version(manual_name) + when /^profile_family.*/ + profile_family_name = File.basename(file_path, ".yaml") + profile_family(profile_family_name) + when /^profile_release.*/ + profile_release_name = File.basename(file_path, ".yaml") + profile_release(profile_release_name) + when /^profile.*/ + profile_name = File.basename(file_path, ".yaml") + profile(profile_name) + when %r{^inst_subtype/.*/.*} + inst_subtype_name = File.basename(file_path, ".yaml") + instruction_subtype(inst_subtype_name) + when %r{^inst_type/[^/]+} + # type + inst_type_name = File.basename(file_path, ".yaml") + instruction_type(inst_type_name) + else + raise "Unhandled ref object: #{file_path}" end - list - end - end - - # @return [Array] All interrupt codes defined by extensions - def interrupt_codes - return @interrupt_codes unless @interrupt_codes.nil? - @interupt_codes = - extensions.reduce([]) do |list, ext| - icodes = extension(ext.name).data["interrupt_codes"] - next list if icodes.nil? + unless obj_path.nil? + parts = obj_path.split("/") + parts.each do |part| + raise "Error in $ref. There is no method '#{part}' for a #{obj.class.name}" unless obj.respond_to?(part.to_sym) - icodes.each do |icode| - # double check that all the codes are unique - if list.any? { |i| i.num == icode["num"] || i.name == icode["name"] || i.var == icode["var"] } - raise "Duplicate interrupt code" - end - - list << InterruptCode.new(icode["name"], icode["var"], icode["num"], ext) + obj = obj.send(part) end - list end - end - # given a `$ref` target, return the Ruby object - # - # @params uri [String] JSON Reference pointer - # @return [Object] The pointed-to object - sig { params(uri: String).returns(DatabaseObject) } - def ref(uri) - raise ArgumentError, "JSON Reference (#{uri}) must contain one '#'" unless uri.count("#") == 1 - - file_path, obj_path = uri.split("#") - obj = - case file_path - when /^proc_cert_class.*/ - proc_cert_class_name = File.basename(file_path, ".yaml") - proc_cert_class(proc_cert_class_name) - when /^proc_cert_model.*/ - proc_cert_model_name = File.basename(file_path, ".yaml") - proc_cert_model(proc_cert_model_name) - when /^csr.*/ - csr_name = File.basename(file_path, ".yaml") - csr(csr_name) - when /^ext.*/ - ext_name = File.basename(file_path, ".yaml") - extension(ext_name) - when %r{^inst/.*} - inst_name = File.basename(file_path, ".yaml") - instruction(inst_name) - when /^manual.*/ - manual_name = File.basename(file_path, ".yaml") - manual(manual_name) - when /^manual_version.*/ - manual_name = File.basename(file_path, ".yaml") - manual_version(manual_name) - when /^profile_family.*/ - profile_family_name = File.basename(file_path, ".yaml") - profile_family(profile_family_name) - when /^profile_release.*/ - profile_release_name = File.basename(file_path, ".yaml") - profile_release(profile_release_name) - when /^profile.*/ - profile_name = File.basename(file_path, ".yaml") - profile(profile_name) - when %r{^inst_subtype/.*/.*} - inst_subtype_name = File.basename(file_path, ".yaml") - instruction_subtype(inst_subtype_name) - when %r{^inst_type/[^/]+} - # type - inst_type_name = File.basename(file_path, ".yaml") - instruction_type(inst_type_name) - else - raise "Unhandled ref object: #{file_path}" - end - - unless obj_path.nil? - parts = obj_path.split("/") - parts.each do |part| - raise "Error in $ref. There is no method '#{part}' for a #{obj.class.name}" unless obj.respond_to?(part.to_sym) - - obj = obj.send(part) - end + obj end - - obj end -end end diff --git a/tools/ruby-gems/udb/lib/udb/cfg_arch.rb b/tools/ruby-gems/udb/lib/udb/cfg_arch.rb index 866be888dc..b02a487440 100644 --- a/tools/ruby-gems/udb/lib/udb/cfg_arch.rb +++ b/tools/ruby-gems/udb/lib/udb/cfg_arch.rb @@ -10,13 +10,14 @@ # or created at runtime for things like profiles and certificate models. require "concurrent" -require "ruby-prof" require "tilt" +require "tty-progressbar" require "yaml" require "pathname" -require_relative 'obj/non_isa_specification' +require_relative "obj/non_isa_specification" require_relative "config" require_relative "architecture" +require_relative "log" require "idlc" require "idlc/symbol_table" @@ -32,1284 +33,1386 @@ module Udb -class ConfiguredArchitecture < Architecture - extend T::Sig - - # @return [Idl::Compiler] The IDL compiler - sig { returns(Idl::Compiler) } - attr_reader :idl_compiler - - # @return [Idl::IsaAst] Abstract syntax tree of global scope - sig { returns(Idl::IsaAst) } - attr_reader :global_ast - - # @return [String] Name of this definition. Special names are: - # * '_' - The generic architecture, with no configuration settings. - # * 'rv32' - A generic RV32 architecture, with only one parameter set (XLEN == 32) - # * 'rv64' - A generic RV64 architecture, with only one parameter set (XLEN == 64) - sig { returns(String) } - attr_reader :name - - sig { returns(AbstractConfig) } - attr_reader :config - - sig { returns(T::Boolean) } - def fully_configured? = @config.fully_configured? - - sig { returns(T::Boolean) } - def partially_configured? = @config.partially_configured? - - sig { returns(T::Boolean) } - def unconfigured? = @config.unconfigured? - - sig { returns(T.nilable(Integer)) } - def mxlen = @config.mxlen - - sig { returns(T::Hash[String, T.untyped]) } - def param_values = @config.param_values - - # Returns whether or not it may be possible to switch XLEN given this definition. - # - # There are three cases when this will return true: - # 1. A mode (e.g., U) is known to be implemented, and the CSR bit that controls XLEN in that mode is known to be writable. - # 2. A mode is known to be implemented, but the writability of the CSR bit that controls XLEN in that mode is not known. - # 3. It is not known if the mode is implemented. - # - # - # @return [Boolean] true if this configuration might execute in multiple xlen environments - # (e.g., that in some mode the effective xlen can be either 32 or 64, depending on CSR values) - sig { returns(T::Boolean) } - def multi_xlen? - return true if @mxlen.nil? - - ["S", "U", "VS", "VU"].any? { |mode| multi_xlen_in_mode?(mode) } - end + class ConfiguredArchitecture < Architecture + extend T::Sig + + # @return [Idl::Compiler] The IDL compiler + sig { returns(Idl::Compiler) } + attr_reader :idl_compiler + + # @return [String] Name of this definition. Special names are: + # * '_' - The generic architecture, with no configuration settings. + # * 'rv32' - A generic RV32 architecture, with only one parameter set (XLEN == 32) + # * 'rv64' - A generic RV64 architecture, with only one parameter set (XLEN == 64) + sig { returns(String) } + attr_reader :name + + sig { returns(AbstractConfig) } + attr_reader :config + + sig { returns(T::Boolean) } + def fully_configured? = @config.fully_configured? + + sig { returns(T::Boolean) } + def partially_configured? = @config.partially_configured? + + sig { returns(T::Boolean) } + def unconfigured? = @config.unconfigured? + + # MXLEN parameter value, or nil if it is not known + sig { returns(T.nilable(Integer)) } + def mxlen = @config.mxlen + + # known parameter values as a hash of param_name => param_value + sig { returns(T::Hash[String, T.untyped]) } + def param_values = @config.param_values + + # Returns whether or not it may be possible to switch XLEN given this definition. + # + # There are three cases when this will return true: + # 1. A mode (e.g., U) is known to be implemented, and the CSR bit that controls XLEN in that mode is known to be writable. + # 2. A mode is known to be implemented, but the writability of the CSR bit that controls XLEN in that mode is not known. + # 3. It is not known if the mode is implemented. + # + # + # @return true if this configuration might execute in multiple xlen environments + # (e.g., that in some mode the effective xlen can be either 32 or 64, depending on CSR values) + sig { returns(T::Boolean) } + def multi_xlen? + @memo.multi_xlen ||= + begin + return true if @mxlen.nil? - # Returns whether or not it may be possible to switch XLEN in +mode+ given this definition. - # - # There are three cases when this will return true: - # 1. +mode+ (e.g., U) is known to be implemented, and the CSR bit that controls XLEN in +mode+ is known to be writable. - # 2. +mode+ is known to be implemented, but the writability of the CSR bit that controls XLEN in +mode+ is not known. - # 3. It is not known if +mode+ is implemented. - # - # Will return false if +mode+ is not possible (e.g., because U is a prohibited extension) - # - # @param mode [String] mode to check. One of "M", "S", "U", "VS", "VU" - # @return [Boolean] true if this configuration might execute in multiple xlen environments in +mode+ - # (e.g., that in some mode the effective xlen can be either 32 or 64, depending on CSR values) - sig { params(mode: String).returns(T::Boolean) } - def multi_xlen_in_mode?(mode) - return false if mxlen == 32 - - case mode - when "M" - mxlen.nil? - when "S" - return true if unconfigured? + ["S", "U", "VS", "VU"].any? { |mode| multi_xlen_in_mode?(mode) } + end + end - if fully_configured? - ext?(:S) && (param_values["SXLEN"] == 3264) - elsif partially_configured? - return false if prohibited_ext?(:S) + # Returns whether or not it may be possible to switch XLEN in +mode+ given this definition. + # + # There are three cases when this will return true: + # 1. +mode+ (e.g., U) is known to be implemented, and the CSR bit that controls XLEN in +mode+ is known to be writable. + # 2. +mode+ is known to be implemented, but the writability of the CSR bit that controls XLEN in +mode+ is not known. + # 3. It is not known if +mode+ is implemented. + # + # Will return false if +mode+ is not possible (e.g., because U is a prohibited extension) + # + # @param mode mode to check. One of "M", "S", "U", "VS", "VU" + # @return true if this configuration might execute in multiple xlen environments in +mode+ + # (e.g., that in some mode the effective xlen can be either 32 or 64, depending on CSR values) + sig { params(mode: String).returns(T::Boolean) } + def multi_xlen_in_mode?(mode) + @memo.multi_xlen_in_mode[mode] ||= + begin + return false if mxlen == 32 - return true unless ext?(:S) # if S is not known to be implemented, we can't say anything about it + case mode + when "M" + mxlen.nil? + when "S" + return true if unconfigured? - return true unless param_values.key?("SXLEN") + if fully_configured? + ext?(:S) && (param_values["SXLEN"].size > 1) + elsif partially_configured? + return false if prohibited_ext?(:S) - param_values["SXLEN"] == 3264 - else - raise "Unexpected configuration state" - end - when "U" - return false if prohibited_ext?(:U) + return true unless ext?(:S) # if S is not known to be implemented, we can't say anything about it - return true if unconfigured? + return true unless param_values.key?("SXLEN") - if fully_configured? - ext?(:U) && (param_values["UXLEN"] == 3264) - elsif partially_configured? - return true unless ext?(:U) # if U is not known to be implemented, we can't say anything about it + param_values["SXLEN"].size > 1 + else + raise "Unexpected configuration state" + end + when "U" + return false if prohibited_ext?(:U) - return true unless param_values.key?("UXLEN") + return true if unconfigured? - param_values["UXLEN"] == 3264 - else - raise "Unexpected configuration state" - end - when "VS" - return false if prohibited_ext?(:H) + if fully_configured? + ext?(:U) && (param_values["UXLEN"].size > 1) + elsif partially_configured? + return true unless ext?(:U) # if U is not known to be implemented, we can't say anything about it - return true if unconfigured? + return true unless param_values.key?("UXLEN") - if fully_configured? - ext?(:H) && (param_values["VSXLEN"] == 3264) - elsif partially_configured? - return true unless ext?(:H) # if H is not known to be implemented, we can't say anything about it + param_values["UXLEN"].size > 1 + else + raise "Unexpected configuration state" + end + when "VS" + return false if prohibited_ext?(:H) - return true unless param_values.key?("VSXLEN") + return true if unconfigured? - param_values["VSXLEN"] == 3264 - else - raise "Unexpected configuration state" - end - when "VU" - return false if prohibited_ext?(:H) + if fully_configured? + ext?(:H) && (param_values["VSXLEN"].size > 1) + elsif partially_configured? + return true unless ext?(:H) # if H is not known to be implemented, we can't say anything about it - return true if unconfigured? + return true unless param_values.key?("VSXLEN") - if fully_configured? - ext?(:H) && (param_values["VUXLEN"] == 3264) - elsif partially_configured? - return true unless ext?(:H) # if H is not known to be implemented, we can't say anything about it + param_values["VSXLEN"].size > 1 + else + raise "Unexpected configuration state" + end + when "VU" + return false if prohibited_ext?(:H) - return true unless param_values.key?("VUXLEN") + return true if unconfigured? - param_values["VUXLEN"] == 3264 - else - raise "Unexpected configuration state" - end - when "D" - mxlen.nil? - else - raise ArgumentError, "Bad mode" - end - end + if fully_configured? + ext?(:H) && (param_values["VUXLEN"].size > 1) + elsif partially_configured? + return true unless ext?(:H) # if H is not known to be implemented, we can't say anything about it - # @return [Array] List of possible XLENs in any mode for this config - sig { returns(T::Array[Integer]) } - def possible_xlens = multi_xlen? ? [32, 64] : [mxlen] + return true unless param_values.key?("VUXLEN") - # hash for Hash lookup - sig { override.returns(Integer) } - def hash = @name_sym.hash + param_values["VUXLEN"].size > 1 + else + raise "Unexpected configuration state" + end + else + raise ArgumentError, "Bad mode" + end + end + end - # @return [Idl::SymbolTable] Symbol table with global scope - # @return [nil] if the architecture is not configured (use symtab_32 or symtab_64) - sig { returns(Idl::SymbolTable) } - def symtab - raise NotImplementedError, "Un-configured ConfiguredArchitectures have no symbol table" if @symtab.nil? + # @return [Array] List of possible XLENs in any mode for this config + sig { returns(T::Array[Integer]) } + def possible_xlens = multi_xlen? ? [32, 64] : [mxlen] - @symtab - end + # @api private + # hash for Hash lookup + sig { override.returns(Integer) } + def hash = @name_sym.hash - sig { returns(ConfigType) } - def config_type = @config_type + sig { override.params(other: T.anything).returns(T::Boolean) } + def eql?(other) + return false unless other.is_a?(ConfiguredArchitecture) - # return the params as a hash of symbols for the SymbolTable - sig { returns(T::Hash[String, T.any(Idl::Var, Idl::Type)]) } - def param_syms - syms = {} + @name.eql?(other.name) + end - params_with_value.each do |param_with_value| - type = Idl::Type.from_json_schema(param_with_value.schema).make_const - if type.kind == :array && type.width == :unknown - type = Idl::Type.new(:array, width: T.cast(param_with_value.value, T.untyped).length, sub_type: type.sub_type, qualifiers: [:const]) - end + # @return Symbol table with global scope included + sig { returns(Idl::SymbolTable) } + def symtab + @symtab ||= + begin + @symtab = create_symtab - # could already be present... - existing_sym = syms[param_with_value.name] - if existing_sym.nil? - syms[param_with_value.name] = Idl::Var.new(param_with_value.name, type, param_with_value.value, param: true) - else - unless existing_sym.type.equal_to?(type) && existing_sym.value == param_with_value.value - raise Idl::SymbolTable::DuplicateSymError, "Definition error: Param #{param_with_value.name} is defined by multiple extensions and is not the same definition in each" + global_ast.add_global_symbols(@symtab) + + @symtab.deep_freeze + raise if @symtab.name.nil? + global_ast.freeze_tree(@symtab) + @symtab end - end end - # now add all parameters, even those not implemented - params_without_value.each do |param| - if param.exts.size == 1 - syms[param.name] = Idl::Var.new(param.name, param.idl_type.make_const, param: true) - else - # could already be present... - existing_sym = syms[param.name] - if existing_sym.nil? - syms[param.name] = Idl::Var.new(param.name, param.idl_type.make_const, param: true) - else - unless existing_sym.type.equal_to?(param.idl_type) - raise "Definition error: Param #{param.name} is defined by multiple extensions and is not the same definition in each" - end + sig { returns(Idl::IsaAst) } + def global_ast + @global_ast ||= + begin + # now add globals to the phase1 symtab + overlay_path = @config.info.overlay_path + custom_globals_path = overlay_path.nil? ? Pathname.new("/does/not/exist") : overlay_path / "isa" / "globals.isa" + idl_path = File.exist?(custom_globals_path) ? custom_globals_path : @config.info.spec_path / "isa" / "globals.isa" + @idl_compiler.compile_file( + idl_path + ) end - end end - syms - end + sig { returns(ConfigType) } + def config_type = @config_type - # validate a configuration - sig { - params( - config_path: Pathname, - std_path: Pathname, # path to standard architecture spec - custom_path: Pathname, # path to custom overlay, if needed - gen_path: Pathname # path to put generated files - ).returns(T::Boolean) - } - def self.validate( - config_path, - std_path: Udb.default_std_isa_path, - custom_path: Udb.default_custom_isa_path, - gen_path: Udb.default_gen_path - ) - - config_spec = YAML.load_file(config_path) - case config_spec.fetch("type") - when "unconfigured" - true # nothing else to do! - when "fully configured" - validate_full_config(config_path, std_path:, custom_path:, gen_path:) - when "partially configured" - validate_partial_config(config_path, std_path:, custom_path:, gen_path:) - else - raise "Not a valid configuration type: #{config_spec.fetch('type')}" + # return type for #valid? + class ValidationResult < T::Struct + const :valid, T::Boolean + const :reasons, T::Array[String] # filled with messages if valid is false end - end - sig { - params( - config_path: Pathname, - gen_path: Pathname, - std_path: Pathname, - custom_path: Pathname - ).returns(T::Boolean) - } - def self.validate_full_config(config_path, gen_path:, std_path:, custom_path:) - config_spec = YAML.load_file(config_path) - resolver = Resolver.new( - gen_path_override: gen_path, - std_path_override: std_path, - custom_path_override: custom_path - ) - resolver.resolve_arch(config_spec) - resolved_path = resolver.gen_path / "resolved_spec" / config_spec["name"] - - # first, check that all the extensions are defined - config_spec.fetch("implemented_extensions").each do |e| - ext_name = T.let("", String) - ext_version = T.let("", String) - if e.is_a?(Array) - ext_name = e.fetch(0) - ext_version = e.fetch(1) + # whether or not the configuration is valid. if it's not, reasons are provided + sig { returns(ValidationResult) } + def valid? + if fully_configured? + full_config_valid? + elsif partially_configured? + partial_config_valid? else - ext_name = e.fetch("name") - ext_version = e.fetch("version") + ValidationResult.new(valid: true, reasons: []) end - - unless (resolved_path / "ext" / "#{ext_name}.yaml").file? - raise "Cannot find defintion of extension #{ext_name} #{resolved_path / "ext" / "#{ext_name}.yaml"}" - end - - ext_spec = YAML.load_file(resolved_path / "ext" / "#{ext_name}.yaml") - has_ver = ext_spec.fetch("versions").any? do |ext_ver| - VersionSpec.new(ext_ver.fetch("version")).eql?(ext_version) - end - - raise "Cannot find version #{ext_version} of #{ext_name}" unless has_ver end - cfg_arch = resolver.cfg_arch_for(config_path) + # @api private + sig { returns(ValidationResult) } + def full_config_valid? + # check extension requirements + reasons = [] - param_missing = T.let(false, T::Boolean) - # check params - cfg_arch.transitive_implemented_extension_versions.each do |ext_ver| - ext_ver.params.each do |param| - unless config_spec.fetch("params").key?(param.name) - warn "missing required parameter #{param.name}" - param_missing = true + explicitly_implemented_extension_versions.each do |ext_ver| + unless ext_ver.valid? + reasons << "Extension version has no definition: #{ext_ver}" next end - unless param.schema.validate(config_spec.fetch("params").fetch(param.name)) - warn "value of parameter #{param.name} is not valid" - param_missing = true + unless ext_ver.combined_requirements_condition.satisfied_by_cfg_arch?(self) == SatisfiedResult::Yes + reasons << "Extension requirement is unmet: #{ext_ver}. Needs: #{ext_ver.combined_requirements_condition}" end end - end - warn "Parameter(s) are missing or invalid" if param_missing - !param_missing - end - private_class_method :validate_full_config - - sig { - params( - config_path: Pathname, - gen_path: Pathname, - std_path: Pathname, - custom_path: Pathname - ).returns(T::Boolean) - } - def self.validate_partial_config(config_path, gen_path:, std_path:, custom_path:) - config_spec = YAML.load_file(config_path) - resolver = Resolver.new( - gen_path_override: gen_path, - std_path_override: std_path, - custom_path_override: custom_path - ) - resolver.resolve_arch(config_spec) - resolved_path = resolver.gen_path / "resolved_spec" / config_spec["name"] - - # first, check that all the extensions are defined - config_spec.fetch("mandatory_extensions").each do |e| - ext_name = e.fetch("name") - ext_req = RequirementSpec.new(e.fetch("version")) - - unless (resolved_path / "ext" / "#{ext_name}.yaml").file? - raise "Cannot find defintion of extension #{ext_name} #{resolved_path / "ext" / "#{ext_name}.yaml"}" + # check parameter requirements + config.param_values.each do |param_name, param_value| + p = param(param_name) + if p.nil? + reasons << "Parameter has no definition: '#{param_name}'" + next + end + unless p.schema.validate(param_value, udb_resolver: @config.info.resolver) + reasons << "Parameter value violates the schema: '#{param_name}' = '#{param_value}'" + end + unless p.defined_by_condition.satisfied_by_cfg_arch?(self) == SatisfiedResult::Yes + reasons << "Parameter is not defined by this config: '#{param_name}'. Needs: #{p.defined_by_condition}" + end + unless p.requirements_condition.satisfied_by_cfg_arch?(self) == SatisfiedResult::Yes + reasons << "Parameter requirements not met: '#{param_name}'. Needs: #{p.requirements_condition} #{p.requirements_condition.to_logic_tree(expand: true)}" + end end - ext_spec = YAML.load_file(resolved_path / "ext" / "#{ext_name}.yaml") - has_ver = ext_spec.fetch("versions").any? do |ext_ver| - ext_req.satisfied_by?(VersionSpec.new(ext_ver.fetch("version")), ext_spec) + # to know all of the parameters that must be listed, we have to expand the implemented extension versions + # and then collect all of the defined parameters + required_parameters = params.select do |param| + param.defined_by_condition.satisfied_by_cfg_arch?(self) == SatisfiedResult::Yes end - raise "Cannot find any version of #{ext_name} that satisfies #{ext_req}" unless has_ver + missing_params = required_parameters.reject do |param| + config.param_values.key?(param.name) + end + unless missing_params.empty? + reasons += missing_params.map { |p| "Parameter is required but missing: '#{p.name}'" } + end + + if reasons.empty? + ValidationResult.new(valid: true, reasons: []) + else + ValidationResult.new(valid: false, reasons:) + end end + private :full_config_valid? - cfg_arch = resolver.cfg_arch_for(config_path) + # @api private + sig { returns(ValidationResult) } + def partial_config_valid? + reasons = [] - invalid_param = T.let(false, T::Boolean) - # check params - possible_params = cfg_arch.mandatory_extension_reqs.map(&:params).flatten.uniq - if config_spec.key?("params") - config_spec.fetch("params").each do |pname, pvalue| - unless possible_params.any? { |param| param.name == pname } - warn "Parameter #{pname} is not from a mandatory extension" - invalid_param = true - next + mandatory_extension_reqs.each do |ext_req| + unless ext_req.valid? + reasons << "Extension requirement can never be met (no match in the database): #{ext_req}" end + end - param = possible_params.find { |param| param.name == pname } - unless param.schema.validate(pvalue) - warn "value of parameter #{param.name} is not valid" - invalid_param = true + # first check extension requirements + # need to make sure that it is possible to construct a config that + # meets the requirements without introducing a conflict + mandatory_cond = + Condition.conjunction( + mandatory_extension_reqs.select(&:valid?).map { |ext_req| ext_req.to_condition }, + self + ) + unless mandatory_cond.satisfiable? + mandatory_cond.to_logic_tree(expand: true).minimal_unsat_subsets.each do |min| + reasons << "Mandatory extension requirements conflict: This is not satisfiable: #{min.to_s(format: LogicNode::LogicSymbolFormat::C)}" end end - end - warn "Parameter(s) are invalid" if invalid_param - !invalid_param - end - private_class_method :validate_partial_config - - # Initialize a new configured architecture definition - # - # @param name [:to_s] The name associated with this ConfiguredArchitecture - # @param config [AbstractConfig] The configuration object - # @param arch_path [Pathnam] Path to the resolved architecture directory corresponding to the configuration - sig { params(name: String, config: AbstractConfig).void } - def initialize(name, config) + # check that provided param values are defined and match the schema + config.param_values.each do |param_name, param_value| + p = param(param_name) + # pwv.name is not a defined parameter + if p.nil? + reasons << "Parameter has no definition: '#{param_name}'" + next + end - super(config.info.resolved_spec_path) + unless p.schema.validate(param_value, udb_resolver: @config.info.resolver) + reasons << "Parameter value violates the schema: '#{param_name}' = '#{param_value}'" + end - @name = name.to_s.freeze - @name_sym = @name.to_sym.freeze + # check that parameter is defined by the partial config (e.g., is defined by a mandatory + # extension and/or other param value). + unless p.defined_by_condition.satisfied_by_cfg_arch?(self) == SatisfiedResult::Yes + reasons << "Parameter is not defined by this config: '#{param_name}'. Needs #{p.defined_by_condition}" + end - @config = config - @config_type = T.let(@config.type, ConfigType) - @mxlen = config.mxlen - @mxlen.freeze + if p.requirements_condition.satisfied_by_cfg_arch?(self) == SatisfiedResult::No + reasons << "Parameter requirements cannot be met: '#{param_name}'. Needs: #{p.requirements_condition}" + end + end - @idl_compiler = Idl::Compiler.new + unless reasons.empty? + return ValidationResult.new(valid: false, reasons:) + end - symtab_callbacks = Idl::SymbolTable::BuiltinFunctionCallbacks.new( - implemented: ( - Idl::SymbolTable.make_implemented_callback do |ext_name| - if fully_configured? - ext?(ext_name) - else - # we can know if it is implemented, but not if it's not implemented for a partially configured - if ext?(ext_name) - true - elsif prohibited_ext?(ext_name) - false + ValidationResult.new(valid: true, reasons: []) + end + private :partial_config_valid? + + # @api private + # Return callbacks needed by a SymbolTable to check properties of the configuration + sig { returns(Idl::SymbolTable::BuiltinFunctionCallbacks) } + def symtab_callbacks + Idl::SymbolTable::BuiltinFunctionCallbacks.new( + implemented: ( + Idl::SymbolTable.make_implemented_callback do |ext_name| + if fully_configured? + ext?(ext_name) + else + # we can know if it is implemented, but not if it's not implemented for a partially configured + if ext?(ext_name) + true + elsif prohibited_ext?(ext_name) + false + end end end - end - ), - implemented_version: ( - Idl::SymbolTable.make_implemented_version_callback do |ext_name, version| - if fully_configured? - ext?(ext_name, [version]) - else - # we can know if it is implemented, but not if it's not implemented for a partially configured - if ext?(ext_name, [version]) - true - elsif prohibited_ext?(ext_name) - false + ), + implemented_version: ( + Idl::SymbolTable.make_implemented_version_callback do |ext_name, version| + if fully_configured? + ext?(ext_name, [version]) + else + # we can know if it is implemented, but not if it's not implemented for a partially configured + if ext?(ext_name, [version]) + true + elsif prohibited_ext?(ext_name) + false + end end end - end - ), - implemented_csr: ( - Idl::SymbolTable.make_implemented_csr_callback do |csr_addr| - if fully_configured? - if transitive_implemented_csrs.any? { |c| c.address == csr_addr } - true + ), + implemented_csr: ( + Idl::SymbolTable.make_implemented_csr_callback do |csr_addr| + if fully_configured? + if implemented_csrs.any? { |c| c.address == csr_addr } + true + end + else + if not_prohibited_csrs.none? { |c| c.address == csr_addr } + false + end end + end + ) + ) + end + private :symtab_callbacks + + # @api private + # generated enum defintions for the symbol table + sig { returns(T::Array[Idl::SymbolTable::EnumDef]) } + def symtab_enums + [ + Idl::SymbolTable::EnumDef.new( + name: "ExtensionName", + element_values: (1..extensions.size).to_a, + element_names: extensions.map(&:name) + ), + Idl::SymbolTable::EnumDef.new( + name: "ExceptionCode", + element_values: exception_codes.map(&:num), + element_names: exception_codes.map(&:var) + ), + Idl::SymbolTable::EnumDef.new( + name: "InterruptCode", + element_values: interrupt_codes.map(&:num), + element_names: interrupt_codes.map(&:var) + ) + ] + end + private :symtab_enums + + # @api private + sig { returns(Idl::SymbolTable) } + def create_symtab + all_params = # including both those will value/without value, and those in scope/out of scope + @config.param_values.map do |pname, pvalue| + p = param(pname) + unless p.nil? + ParameterWithValue.new(p, pvalue) + end + end.compact \ + + params.reject { |p| @config.param_values.key?(p.name) } + final_param_vars = all_params.map do |param| + idl_type = + if param.schema_known? + param.idl_type else - if not_prohibited_csrs.none? { |c| c.address == csr_addr } - false + begin + idl_types = + param.possible_schemas.map do |schema| + schema.to_idl_type + end + if idl_types.fetch(0).kind == :bits + # use the worst case sizing + if !(t = idl_types.find { |t| t.width == :unknown }).nil? + t + else + idl_types.max { |t1, t2| T.cast(t1.width, Integer) <=> T.cast(t2.width, Integer) } + end + else + idl_types.at(0) + end + rescue Parameter::NoMatchingSchemaError + # nothing matched. That's only OK if this parameter is not defined in this config + # unfortunately, we can't easily check that there because that requires a constructed + # symtab ;( + # we are just going to assume the user has validated the config (or is in the process + # of validating it) + # if param.defined_by_condition.satisfied_by_cfg_arch?(self) + # Udb.logger.warn "Parameter '#{param.name}' is defined, but has no matching schema" + # end + + # just pick some possible schema + param.all_schemas.fetch(0).to_idl_type end end + if param.value_known? + Idl::Var.new(param.name, idl_type.make_const, param.value, param: true) + else + Idl::Var.new(param.name, idl_type.make_const, param: true) end - ) - ) + end - params = params_with_value.concat(params_without_value).concat(out_of_scope_params) - params.uniq! { |p| p.name } - @symtab = Idl::SymbolTable.new( mxlen:, - possible_xlens:, - params:, + possible_xlens_cb: proc { possible_xlens }, + builtin_global_vars: final_param_vars, builtin_funcs: symtab_callbacks, - builtin_enums: [ - Idl::SymbolTable::EnumDef.new( - name: "ExtensionName", - element_values: (1..extensions.size).to_a, - element_names: extensions.map(&:name) - ), - Idl::SymbolTable::EnumDef.new( - name: "ExceptionCode", - element_values: exception_codes.map(&:num), - element_names: exception_codes.map(&:var) - ), - Idl::SymbolTable::EnumDef.new( - name: "InterruptCode", - element_values: interrupt_codes.map(&:num), - element_names: interrupt_codes.map(&:var) - ) - ], + builtin_enums: symtab_enums, name: @name, - csrs: + csrs:, + params: all_params ) - overlay_path = config.info.overlay_path - - custom_globals_path = overlay_path.nil? ? Pathname.new("/does/not/exist") : overlay_path / "isa" / "globals.isa" - idl_path = File.exist?(custom_globals_path) ? custom_globals_path : config.info.spec_path / "isa" / "globals.isa" - @global_ast = @idl_compiler.compile_file( - idl_path - ) - @global_ast.add_global_symbols(@symtab) - @symtab.deep_freeze - raise if @symtab.name.nil? - @global_ast.freeze_tree(@symtab) - - @params_with_value = T.let(nil, T.nilable(T::Array[ParameterWithValue])) - end + end + private :create_symtab + + class MemoizedState < T::Struct + prop :multi_xlen_in_mode, T::Hash[String, T::Boolean] + prop :multi_xlen, T.nilable(T::Boolean) + prop :params_with_value, T.nilable(T::Array[ParameterWithValue]) + prop :params_without_value, T.nilable(T::Array[Parameter]) + prop :out_of_scope_params, T.nilable(T::Array[Parameter]) + prop :implemented_extension_versions, T.nilable(T::Array[ExtensionVersion]) + prop :implemented_extension_version_hash, T.nilable(T::Hash[String, ExtensionVersion]) + end + + # Initialize a new configured architecture definition + # + # @param name [:to_s] The name associated with this ConfiguredArchitecture + # @param config [AbstractConfig] The configuration object + # @param arch_path [Pathnam] Path to the resolved architecture directory corresponding to the configuration + sig { params(name: String, config: AbstractConfig).void } + def initialize(name, config) + Udb.logger.info "Constructing ConfiguredArchiture for #{name}" + super(config.info.resolved_spec_path) + + @name = name.to_s.freeze + @name_sym = @name.to_sym.freeze + + @memo = MemoizedState.new(multi_xlen_in_mode: {}) - # Returns a string representation of the object, suitable for debugging. - # @return [String] A string representation of the object. - sig { override.returns(String) } - def inspect = "ConfiguredArchitecture##{name}" - - # type check all IDL, including globals, instruction ops, and CSR functions - # - # @param config [AbstractConfig] Configuration - # @param show_progress [Boolean] whether to show progress bars - # @param io [IO] where to write progress bars - # @return [void] - sig { params(show_progress: T::Boolean, io: IO).void } - def type_check(show_progress: true, io: $stdout) - io.puts "Type checking IDL code for #{@config.name}..." if show_progress - progressbar = - if show_progress - ProgressBar.create(title: "Instructions", total: possible_instructions.size) + @config = config + @config_type = T.let(@config.type, ConfigType) + @mxlen = config.mxlen + @mxlen.freeze + + @idl_compiler = Idl::Compiler.new + end + + def inspect + "CfgArch##{name}" + end + + # @api private + # metaprogramming function to create accessor methods for top-level database objects + # + # This is defined in ConfiguredArchitecture, rather than Architecture because the object + # models all expect to work with a ConfiguredArchitecture + # + # For example, created the following functions: + # extensions # array of all extensions + # extension_hash # hash of all extensions, indexed by name + # extension(name) # getter for extension 'name' + # instructions # array of all extensions + # instruction_hash # hash of all extensions, indexed by name + # instruction(name) # getter for extension 'name' + # ... + # + # @!macro [attach] generate_obj_methods + # @method $1s + # @return [Array<$3>] List of all $1s defined in the standard + # + # @method $1_hash + # @return [Hash] Hash of all $1s + # + # @method $1 + # @param name [String] The $1 name + # @return [$3] The $1 + # @return [nil] if there is no $1 named +name+ + sig { params(fn_name: String, arch_dir: String, obj_class: T.class_of(TopLevelDatabaseObject)).void } + def self.generate_obj_methods(fn_name, arch_dir, obj_class) + + plural_fn = ActiveSupport::Inflector.pluralize(fn_name) + + define_method(plural_fn) do + return @objects[arch_dir] unless @objects[arch_dir].nil? + + @objects[arch_dir] = Concurrent::Array.new + @object_hashes[arch_dir] = Concurrent::Hash.new + Dir.glob(@arch_dir / arch_dir / "**" / "*.yaml") do |obj_path| + f = File.open(obj_path) + f.flock(File::LOCK_EX) + obj_yaml = YAML.load(f.read, filename: obj_path, permitted_classes: [Date]) + f.flock(File::LOCK_UN) + @objects[arch_dir] << obj_class.new(obj_yaml, Pathname.new(obj_path).realpath, T.cast(self, ConfiguredArchitecture)) + @object_hashes[arch_dir][@objects[arch_dir].last.name] = @objects[arch_dir].last + end + @objects[arch_dir] end - possible_instructions.each do |inst| - progressbar.increment if show_progress - if @mxlen == 32 - inst.type_checked_operation_ast(32) if inst.rv32? - elsif @mxlen == 64 - inst.type_checked_operation_ast(64) if inst.rv64? - inst.type_checked_operation_ast(32) if possible_xlens.include?(32) && inst.rv32? + define_method("#{fn_name}_hash") do + return @object_hashes[arch_dir] unless @object_hashes[arch_dir].nil? + + send(plural_fn) # create the hash + + @object_hashes[arch_dir] end - end - progressbar = - if show_progress - ProgressBar.create(title: "CSRs", total: possible_csrs.size) + define_method(fn_name) do |name| + return @object_hashes[arch_dir][name] unless @object_hashes[arch_dir].nil? + + send(plural_fn) # create the hash + + @object_hashes[arch_dir][name] end + end + + # call generate_obj_methods for each known top-level database object + OBJS.each do |obj_info| + generate_obj_methods(obj_info[:fn_name], obj_info[:arch_dir], obj_info[:klass]) + end - possible_csrs.each do |csr| - progressbar.increment if show_progress - if csr.has_custom_sw_read? - if (possible_xlens.include?(32) && csr.defined_in_base32?) - csr.type_checked_sw_read_ast(32) + # type check all IDL, including globals, instruction ops, and CSR functions + # + # @param show_progress whether to show progress bars + # @param io where to write progress bars + # @return [void] + sig { params(show_progress: T::Boolean, io: IO).void } + def type_check(show_progress: true, io: $stdout) + io.puts "Type checking IDL code for #{@config.name}..." if show_progress + insts = possible_instructions(show_progress:) + + progressbar = + if show_progress + TTY::ProgressBar.new("type checking possible instructions [:bar]", total: insts.size, output: $stdout) end - if (possible_xlens.include?(64) && csr.defined_in_base64?) - csr.type_checked_sw_read_ast(64) + + possible_instructions.each do |inst| + progressbar.advance if show_progress + if @mxlen == 32 + inst.type_checked_operation_ast(32) if inst.rv32? + elsif @mxlen == 64 + inst.type_checked_operation_ast(64) if inst.rv64? + inst.type_checked_operation_ast(32) if possible_xlens.include?(32) && inst.rv32? end end - csr.possible_fields.each do |field| - unless field.type_ast.nil? - if possible_xlens.include?(32) && csr.defined_in_base32? && field.defined_in_base32? - field.type_checked_type_ast(32) + + progressbar = + if show_progress + TTY::ProgressBar.new("type checking CSRs [:bar]", total: possible_csrs.size, output: $stdout) + end + + possible_csrs.each do |csr| + progressbar.advance if show_progress + if csr.has_custom_sw_read? + if (possible_xlens.include?(32) && csr.defined_in_base32?) + csr.type_checked_sw_read_ast(32) end - if possible_xlens.include?(64) && csr.defined_in_base64? && field.defined_in_base64? - field.type_checked_type_ast(64) + if (possible_xlens.include?(64) && csr.defined_in_base64?) + csr.type_checked_sw_read_ast(64) end end - unless field.reset_value_ast.nil? - if ((possible_xlens.include?(32) && csr.defined_in_base32? && field.defined_in_base32?) || - (possible_xlens.include?(64) && csr.defined_in_base64? && field.defined_in_base64?)) - field.type_checked_reset_value_ast if csr.defined_in_base32? && field.defined_in_base32? + csr.possible_fields.each do |field| + unless field.type_ast.nil? + if possible_xlens.include?(32) && csr.defined_in_base32? && field.defined_in_base32? + field.type_checked_type_ast(32) + end + if possible_xlens.include?(64) && csr.defined_in_base64? && field.defined_in_base64? + field.type_checked_type_ast(64) + end + end + unless field.reset_value_ast.nil? + if ((possible_xlens.include?(32) && csr.defined_in_base32? && field.defined_in_base32?) || + (possible_xlens.include?(64) && csr.defined_in_base64? && field.defined_in_base64?)) + field.type_checked_reset_value_ast if csr.defined_in_base32? && field.defined_in_base32? + end + end + unless field.sw_write_ast(symtab).nil? + field.type_checked_sw_write_ast(symtab, 32) if possible_xlens.include?(32) && csr.defined_in_base32? && field.defined_in_base32? + field.type_checked_sw_write_ast(symtab, 64) if possible_xlens.include?(64) && csr.defined_in_base64? && field.defined_in_base64? end end - unless field.sw_write_ast(@symtab).nil? - field.type_checked_sw_write_ast(@symtab, 32) if possible_xlens.include?(32) && csr.defined_in_base32? && field.defined_in_base32? - field.type_checked_sw_write_ast(@symtab, 64) if possible_xlens.include?(64) && csr.defined_in_base64? && field.defined_in_base64? + end + + func_list = reachable_functions(show_progress:) + progressbar = + if show_progress + TTY::ProgressBar.new("type checking functions [:bar]", total: func_list.size, output: $stdout) end + func_list.each do |func| + progressbar.advance if show_progress + func.type_check(symtab) end + + puts "done" if show_progress end - func_list = reachable_functions - progressbar = - if show_progress - ProgressBar.create(title: "Functions", total: func_list.size) - end - func_list.each do |func| - progressbar.increment if show_progress - func.type_check(@symtab) + # @return List of all parameters with one known value in the config + sig { returns(T::Array[ParameterWithValue]) } + def params_with_value + @memo.params_with_value ||= + @config.param_values.map do |param_name, param_value| + p = param(param_name) + if p.nil? + Udb.logger.warn "#{param_name} is not a parameter" + else + ParameterWithValue.new(p, param_value) + end + end.compact end - puts "done" if show_progress - end + # List of all available parameters without one known value in the config + sig { returns(T::Array[Parameter]) } + def params_without_value + @memo.params_without_value ||= + params.select do |p| + !@config.param_values.key?(p.name) \ + && p.defined_by_condition.could_be_satisfied_by_cfg_arch?(self) + end + end - # @return [Array] List of all parameters with one known value in the config - sig { returns(T::Array[ParameterWithValue]) } - def params_with_value - @params_with_value ||= T.let( - case @config_type - when ConfigType::UnConfig - T.cast([], T::Array[ParameterWithValue]) - when ConfigType::Full - params = T.let([], T::Array[ParameterWithValue]) - transitive_implemented_extension_versions.each do |ext_version| - ext = T.must(extension(ext_version.name)) - ext.params.each do |ext_param| - if !@config.param_values.key?(ext_param.name) - if ext_param.when.satisfied_by_cfg_arch?(self) != SatisfiedResult::No - raise "missing parameter value for #{ext_param.name} in config #{config.name}" - else - next - end - end - next if params.any? { |p| p.name == ext_param.name } + # Returns list of parameters that out of scope for the config + sig { returns(T::Array[Parameter]) } + def out_of_scope_params + @memo.out_of_scope_params ||= + begin + out_of_scope_params = [] + params.each do |param| + next if params_with_value.any? { |p| p.name == param.name } + next if params_without_value.any? { |p| p.name == param.name } - params << ParameterWithValue.new( - ext_param, - @config.param_values.fetch(ext_param.name) - ) + out_of_scope_params << param end + out_of_scope_params end - params - when ConfigType::Partial - params = T.let([], T::Array[ParameterWithValue]) - - mandatory_extension_reqs.each do |ext_requirement| - ext = T.must(extension(ext_requirement.name)) - ext.params.each do |ext_param| - # Params listed in the config always only have one value. - next unless @config.param_values.key?(ext_param.name) - next if params.any? { |p| p.name == ext_param.name } - - params << ParameterWithValue.new( - ext_param, - T.must(@config.param_values[ext_param.name]) - ) + end + + # @return List of extension versions explicitly marked as implemented in the config. + sig { returns(T::Array[ExtensionVersion]) } + def implemented_extension_versions + @memo.implemented_extension_versions ||= + begin + unless fully_configured? + raise ArgumentError, "implemented_extension_versions only valid for fully configured systems" end - end - params - else - T.absurd(@config_type) - end, - T.nilable(T::Array[ParameterWithValue])) - end - # @return [Array] List of all available parameters without one known value in the config - sig { returns(T::Array[Parameter]) } - def params_without_value - return @params_without_value unless @params_without_value.nil? - - @params_without_value = [] - extensions.each do |ext| - next if possible_extensions.none? { |poss| poss.name == ext.name } - ext.params.each do |ext_param| - # Params listed in the config always only have one value. - next if @config.param_values.key?(ext_param.name) - next if @params_without_value.any? { |p| p.name == ext_param.name } - next if ext_param.when.satisfied_by_cfg_arch?(self) == SatisfiedResult::No - - @params_without_value << ext_param - end + T.cast(@config, FullConfig).implemented_extensions.map do |e| + ExtensionVersion.new(e.fetch("name"), e.fetch("version"), self, fail_if_version_does_not_exist: false) + end + end end - @params_without_value - end - # Returns list of parameters that out of scope for the config - sig { returns(T::Array[Parameter]) } - def out_of_scope_params - return @out_of_scope_params unless @out_of_scope_params.nil? + # @deprecated in favor of implemented_extension_versions + def explicitly_implemented_extension_versions = implemented_extension_versions - @out_of_scope_params = [] - extensions.each do |ext| - ext.params.each do |ext_param| - next if params_with_value.any? { |p| p.name == ext_param.name } - next if params_without_value.any? { |p| p.name == ext_param.name } + # @deprecated in favor of implemented_extension_versions + def transitive_implemented_extension_versions = implemented_extension_versions - @out_of_scope_params << ext_param - end - end - @out_of_scope_params - end - # @return [Array] List of extension versions explicitly marked as implemented in the config. - # Does *not* include extensions implied by explicitly implemented extensions. - sig { returns(T::Array[ExtensionVersion]) } - def explicitly_implemented_extension_versions - return @explicitly_implemented_extension_versions if defined?(@explicitly_implemented_extension_versions) + # given the current (invalid) config, try to come up with a list of extension versions that, + # if added, might make the config valid + # + # For example, if C, F, and D are implemented but not Zca, Zcf, Zcd, return [Zca, Zcf, Zcd] + sig { params(ext_vers: T::Array[ExtensionVersion]).returns(T::Array[ExtensionVersion]) } + def expand_implemented_extension_list(ext_vers) + + # build up a condition requiring all ext_vers, have it expand, and then minimize it + # what's left is the full list + condition = + Condition.conjunction(ext_vers.map(&:to_condition), self) - unless fully_configured? - raise ArgumentError, "implemented_extension_versions only valid for fully configured systems" + res = condition.implied_extension_requirements + (ext_vers + + res.map do |cond_ext_req| + if cond_ext_req.cond.empty? + cond_ext_req.ext_req.satisfying_versions.fetch(0) + else + nil + end + end.compact).uniq end - @explicitly_implemented_extension_versions ||= - T.cast(@config, FullConfig).implemented_extensions.map do |e| - ExtensionVersion.new(e.fetch("name"), e.fetch("version"), self, fail_if_version_does_not_exist: true) - end - end - # @return [Array] List of all extensions known to be implemented in this config, including transitive implications - sig { returns(T::Array[ExtensionVersion]) } - def transitive_implemented_extension_versions - return @transitive_implemented_extension_versions unless @transitive_implemented_extension_versions.nil? + sig { params(ext_name: String).returns(T.nilable(ExtensionVersion)) } + def implemented_extension_version(ext_name) + @memo.implemented_extension_version_hash ||= + implemented_extension_versions.to_h { |ext_ver| [ext_ver.name, ext_ver] } - raise "transitive_implemented_extension_versions is only valid for a fully configured definition" unless @config.fully_configured? + @memo.implemented_extension_version_hash[ext_name] + end - @transitive_implemented_extension_versions = explicitly_implemented_extension_versions.dup + # @return List of all mandatory extension requirements (not transitive) + sig { returns(T::Array[ExtensionRequirement]) } + def mandatory_extension_reqs + @mandatory_extension_reqs ||= + begin + raise "Only partial configs have mandatory extension requirements" unless @config.is_a?(PartialConfig) - added_ext_vers = [] - loop do - @transitive_implemented_extension_versions.each do |ext_ver| - ext_ver.implications.each do |cond_ext_ver| - applies = cond_ext_ver.cond.satisfied_by? do |ext_req| - @transitive_implemented_extension_versions.any? do |inner_ext_ver| - next false if ext_ver == inner_ext_ver + @config.mandatory_extensions.map do |e| + ename = T.cast(e["name"], String) - ext_req.satisfied_by?(inner_ext_ver) + if e["version"].nil? + ExtensionRequirement.new(ename, ">= 0", presence: Presence.new("mandatory"), arch: self) + else + if e["version"].is_a?(Array) + ExtensionRequirement.new(ename, T.cast(e.fetch("version"), T::Array[String]), presence: Presence.new("mandatory"), arch: self) + else + ExtensionRequirement.new(ename, T.cast(e.fetch("version"), String), presence: Presence.new("mandatory"), arch: self) + end end end - if applies && !@transitive_implemented_extension_versions.include?(cond_ext_ver.ext_ver) - added_ext_vers << cond_ext_ver.ext_ver - end end - end - break if added_ext_vers.empty? - - added_ext_vers.each { |ext_ver| @transitive_implemented_extension_versions << ext_ver } - - added_ext_vers = [] end - @transitive_implemented_extension_versions.sort! - @transitive_implemented_extension_versions - end - alias implemented_extension_versions transitive_implemented_extension_versions - - # @return [Array] List of all mandatory extension requirements (not transitive) - sig { returns(T::Array[ExtensionRequirement]) } - def mandatory_extension_reqs - return @mandatory_extension_reqs if defined?(@mandatory_extension_reqs) + # list of all the extension versions that optional, i.e: + # lis of all the extension versions would not fufill a mandatory requirement and are not prhohibited + sig { returns(T::Array[ExtensionRequirement]) } + def optional_extension_versions + @optional_extension_versions ||= + begin + if fully_configured? + [] + elsif partially_configured? + # optional is all extensions - mandatory - prohibited + extension_versions.reject do |ext_ver| + mandatory_extension_reqs.any? { |ext_req| ext_req.satisfied_by?(ext_ver) } || + prohibited_extension_versions.any? { |prohibited_ext_ver| prohibited_ext_ver == ext_ver } + end + else + # unconfig; all extension versions are optional + extension_versions + end + end + end - @mandatory_extension_reqs ||= - T.cast(@config, PartialConfig).mandatory_extensions.map do |e| - ename = T.cast(e["name"], String) - ext = extension(ename) - raise "Cannot find extension #{e['name']} in the architecture definition" if ext.nil? + # @return [Array] List of extensions that are possibly supported + sig { returns(T::Array[Extension]) } + def possible_extensions + return @not_prohibited_extensions if defined?(@not_prohibited_extensions) - if e["version"].is_a?(Array) - ExtensionRequirement.new(ename, T.cast(e.fetch("version"), T::Array[String]), presence: Presence.new("mandatory"), arch: self) + @not_prohibited_extensions ||= + if @config.fully_configured? + implemented_extension_versions.map { |ext_ver| ext_ver.ext }.uniq + elsif @config.partially_configured? + # reject any extension in which all of the extension versions are prohibited + extensions.reject { |ext| (ext.versions - prohibited_extension_versions).empty? } else - ExtensionRequirement.new(ename, T.cast(e.fetch("version"), String), presence: Presence.new("mandatory"), arch: self) + extensions end - end - end - - # @return [Array] List of extensions that are possibly supported - sig { returns(T::Array[Extension]) } - def not_prohibited_extensions - return @not_prohibited_extensions if defined?(@not_prohibited_extensions) - - @not_prohibited_extensions ||= - if @config.fully_configured? - transitive_implemented_extension_versions.map { |ext_ver| ext_ver.ext }.uniq - elsif @config.partially_configured? - # reject any extension in which all of the extension versions are prohibited - extensions.reject { |ext| (ext.versions - transitive_prohibited_extension_versions).empty? } - else - extensions - end - end - alias possible_extensions not_prohibited_extensions - - # @return [Array] List of all ExtensionVersions that are possible to support - sig { returns(T::Array[ExtensionVersion]) } - def not_prohibited_extension_versions - return @not_prohibited_extension_versions if defined?(@not_prohibited_extension_versions) - - @not_prohibited_extension_versions ||= - if @config.fully_configured? - transitive_implemented_extension_versions - elsif @config.partially_configured? - extensions.map(&:versions).flatten.reject { |ext_ver| transitive_prohibited_extension_versions.include?(ext_ver) } - else - extensions.map(&:versions).flatten - end - end - alias possible_extension_versions not_prohibited_extension_versions - - sig { params(ext_ver: ExtensionVersion).void } - def add_ext_ver_and_conflicts(ext_ver) - @transitive_prohibited_extension_versions << ext_ver - ext_ver.implications.each do |cond_ext_ver| - next if @transitive_prohibited_extension_versions.include?(cond_ext_ver.ext_ver) - - sat = cond_ext_ver.cond.satisfied_by_cfg_arch?(self) - if sat == SatisfiedResult::Yes - @transitive_prohibited_extension_versions << cond_ext_ver.ext_ver - end end - end - private :add_ext_ver_and_conflicts - - # @return [Array] List of all extension versions that are prohibited. - # This includes extensions explicitly prohibited by the config file - # and extensions that conflict with a mandatory extension. - sig { returns(T::Array[ExtensionVersion]) } - def transitive_prohibited_extension_versions - return @transitive_prohibited_extension_versions unless @transitive_prohibited_extension_versions.nil? - - @transitive_prohibited_extension_versions = [] - - if @config.partially_configured? - @transitive_prohibited_extension_versions = - T.cast(@config, PartialConfig).prohibited_extensions.map do |ext_req_data| - ext_req = ExtensionRequirement.new(T.cast(ext_req_data.fetch("name"), String), ext_req_data.fetch("version"), arch: self) - ext_req.satisfying_versions.each { |ext_ver| add_ext_ver_and_conflicts(ext_ver) } - end - - # now add any extensions that are prohibited by a mandatory extension - mandatory_extension_reqs.each do |ext_req| - ext_req.satisfying_versions do |ext_ver| - add_ext_ver_and_conflicts(ext_ver) - end - end + alias not_prohibited_extensions possible_extensions + + # @return List of all extension versions that are prohibited. + # This includes extensions explicitly prohibited by the config file + # and extensions that conflict with a mandatory extension. + sig { returns(T::Array[ExtensionVersion]) } + def prohibited_extension_versions + @prohibited_extension_versions ||= + extension_versions - possible_extension_versions + end - # now add everything that is not mandatory or implied by mandatory, if additional extensions are not allowed - unless T.cast(@config, PartialConfig).additional_extensions_allowed? - extensions.each do |ext| - ext.versions.each do |ext_ver| - next if mandatory_extension_reqs.any? { |ext_req| ext_req.satisfied_by?(ext_ver) } - next if mandatory_extension_reqs.any? { |ext_req| ext_req.extension.implies.eval.any? { |impl| impl.ext_ver == ext_ver } } + # the complete set of extension versions that could be implemented in this config + def possible_extension_versions + @possible_extension_versions ||= + begin + if @config.partially_configured? + # collect all the explictly prohibited extensions + prohibited_ext_reqs = + T.cast(@config, PartialConfig).prohibited_extensions.map do |ext_req_yaml| + ExtensionRequirement.create(ext_req_yaml, self) + end + prohibition_condition = + Condition.conjunction(prohibited_ext_reqs.map(&:to_condition), self) - @transitive_prohibited_extension_versions << ext_ver + # collect all mandatory + mandatory_ext_reqs = + T.cast(@config, PartialConfig).mandatory_extensions.map do |ext_req_yaml| + ExtensionRequirement.create(ext_req_yaml, self) + end + mandatory_condition = + Condition.conjunction(mandatory_ext_reqs.map(&:to_condition), self) + + if T.cast(@config, PartialConfig).additional_extensions_allowed? + # non-mandatory extensions are OK. + extensions.map(&:versions).flatten.select do |ext_ver| + # select all versions that can be satisfied simultaneous with + # the mandatory and !prohibition conditions + condition = + Condition.conjunction( + [ + ext_ver.to_condition, + mandatory_condition, + Condition.not(prohibition_condition, self) + ], + self + ) + + # can't just call condition.could_be_satisfied_by_cfg_arch? here because + # that implementation calls possible_extension_versions (this function), + # and we'll get stuck in an infinite loop + # + # so, instead, we partially evaluate whatever parameters are known and then + # see if the formula is satisfiable + condition.partially_evaluate_for_params(self, expand: true).satisfiable? + end + else + # non-mandatory extensions are NOT allowed + # we want to return the list of extension versions implied by mandatory, + # minus any that are explictly prohibited + mandatory_extension_reqs.map(&:satisfying_versions).flatten.select do |ext_ver| + condition = Condition.conjunction([Condition.not(prohibition_condition, self), ext_ver.to_condition], self) + + # see comment above for why we don't call could_be_satisfied_by_cfg_arch? + condition.partially_evaluate_for_params(self, expand: true).satisfiable? + end + end + elsif @config.fully_configured? + # full config: only the implemented versions are possible + implemented_extension_versions + else + # unconfig; everything is possible + extensions.map(&:versions).flatten end end - end - - elsif @config.fully_configured? - extensions.each do |ext| - ext.versions.each do |ext_ver| - @transitive_prohibited_extension_versions << ext_ver unless transitive_implemented_extension_versions.include?(ext_ver) - end - end - - # else, unconfigured....nothing to do # rubocop:disable Layout/CommentIndentation - end - @transitive_prohibited_extension_versions - end - alias prohibited_extension_versions transitive_prohibited_extension_versions - - # @overload prohibited_ext?(ext) - # Returns true if the ExtensionVersion +ext+ is prohibited - # @param ext [ExtensionVersion] An extension version - # @return [Boolean] - # - # @overload prohibited_ext?(ext) - # Returns true if any version of the extension named +ext+ is prohibited - # @param ext [String] An extension name - # @return [Boolean] - sig { params(ext: T.any(ExtensionVersion, String, Symbol)).returns(T::Boolean) } - def prohibited_ext?(ext) - if ext.is_a?(ExtensionVersion) - transitive_prohibited_extension_versions.include?(ext) - elsif ext.is_a?(String) || ext.is_a?(Symbol) - transitive_prohibited_extension_versions.any? { |ext_ver| ext_ver.name == ext.to_s } - else - raise ArgumentError, "Argument to prohibited_ext? should be an ExtensionVersion or a String" + # @overload prohibited_ext?(ext) + # Returns true if the ExtensionVersion +ext+ is prohibited + # @param ext [ExtensionVersion] An extension version + # @return [Boolean] + # + # @overload prohibited_ext?(ext) + # Returns true if any version of the extension named +ext+ is prohibited + # @param ext [String] An extension name + # @return [Boolean] + sig { params(ext: T.any(ExtensionVersion, String, Symbol)).returns(T::Boolean) } + def prohibited_ext?(ext) + if ext.is_a?(ExtensionVersion) + prohibited_extension_versions.include?(ext) + elsif ext.is_a?(String) || ext.is_a?(Symbol) + prohibited_extension_versions.any? { |ext_ver| ext_ver.name == ext.to_s } + else + raise ArgumentError, "Argument to prohibited_ext? should be an ExtensionVersion or a String" + end end - end - # @overload ext?(ext_name) - # @param ext_name [#to_s] Extension name (case sensitive) - # @return [Boolean] True if the extension `name` is implemented - # @overload ext?(ext_name, ext_version_requirements) - # @param ext_name [#to_s] Extension name (case sensitive) - # @param ext_version_requirements [Number,String,Array] Extension version requirements - # @return [Boolean] True if the extension `name` meeting `ext_version_requirements` is implemented - # @example Checking extension presence with a version requirement - # ConfigurationArchitecture.ext?(:S, ">= 1.12") - # @example Checking extension presence with multiple version requirements - # ConfigurationArchitecture.ext?(:S, ">= 1.12", "< 1.15") - # @example Checking extension precsence with a precise version requirement - # ConfigurationArchitecture.ext?(:S, 1.12) - sig { params(ext_name: T.any(String, Symbol), ext_version_requirements: T::Array[String]).returns(T::Boolean) } - def ext?(ext_name, ext_version_requirements = []) - @ext_cache ||= {} - cached_result = @ext_cache[[ext_name, ext_version_requirements]] - return cached_result unless cached_result.nil? - - result = - if @config.fully_configured? - transitive_implemented_extension_versions.any? do |e| - if ext_version_requirements.empty? - e.name == ext_name.to_s - else - requirement = ExtensionRequirement.new(ext_name.to_s, ext_version_requirements, arch: self) - requirement.satisfied_by?(e) + # @overload ext?(ext_name) + # @param ext_name [#to_s] Extension name (case sensitive) + # @return [Boolean] True if the extension `name` is implemented + # @overload ext?(ext_name, ext_version_requirements) + # @param ext_name [#to_s] Extension name (case sensitive) + # @param ext_version_requirements [Number,String,Array] Extension version requirements + # @return [Boolean] True if the extension `name` meeting `ext_version_requirements` is implemented + # @example Checking extension presence with a version requirement + # ConfigurationArchitecture.ext?(:S, ">= 1.12") + # @example Checking extension presence with multiple version requirements + # ConfigurationArchitecture.ext?(:S, ">= 1.12", "< 1.15") + # @example Checking extension precsence with a precise version requirement + # ConfigurationArchitecture.ext?(:S, 1.12) + # sig { params(ext_name: T.any(String, Symbol), ext_version_requirements: T::Array[String]).returns(T::Boolean) } + def ext?(ext_name, ext_version_requirements = []) + @ext_cache ||= {} + cached_result = @ext_cache[[ext_name, ext_version_requirements]] + return cached_result unless cached_result.nil? + + result = + if @config.fully_configured? + implemented_extension_versions.any? do |e| + if ext_version_requirements.empty? + e.name == ext_name.to_s + else + requirement = ExtensionRequirement.new(ext_name.to_s, ext_version_requirements, arch: self) + requirement.satisfied_by?(e) + end end - end - elsif @config.partially_configured? - mandatory_extension_reqs.any? do |e| - if ext_version_requirements.empty? - e.name == ext_name.to_s - else - requirement = ExtensionRequirement.new(ext_name.to_s, ext_version_requirements, arch: self) - e.satisfying_versions.all? do |ext_ver| - requirement.satisfied_by?(ext_ver) + elsif @config.partially_configured? + mandatory_extension_reqs.any? do |e| + if ext_version_requirements.empty? + e.name == ext_name.to_s + else + requirement = ExtensionRequirement.new(ext_name.to_s, ext_version_requirements, arch: self) + e.satisfying_versions.all? do |ext_ver| + requirement.satisfied_by?(ext_ver) + end end end + else + raise "unexpected type" unless unconfigured? + + false end - else - raise "unexpected type" unless unconfigured? + @ext_cache[[ext_name, ext_version_requirements]] = result + end - false - end - @ext_cache[[ext_name, ext_version_requirements]] = result - end + # @return [Array] All exception codes known to be implemented + sig { returns(T::Array[ExceptionCode]) } + def implemented_exception_codes + @implemented_exception_codes ||= + exception_codes.select { |code| code.defined_by_condition.satisfied_by_cfg_arch?(self) } + end - # @return [Array] All exception codes known to be implemented - sig { returns(T::Array[ExceptionCode]) } - def implemented_exception_codes - @implemented_exception_codes ||= - implemented_extension_versions.map { |ext_ver| ext_ver.exception_codes }.compact.flatten - end + # @return [Array] All interrupt codes known to be implemented + sig { returns(T::Array[InterruptCode]) } + def implemented_interrupt_codes + @implemented_interupt_codes ||= + implemented_exception_codes.select { |code| code.defined_by_condition.satisfied_by_cfg_arch?(self) } + end - # @return [Array] All interrupt codes known to be implemented - sig { returns(T::Array[InterruptCode]) } - def implemented_interrupt_codes - @implemented_interupt_codes ||= - implemented_extension_versions.map { |ext_ver| ext_ver.interrupt_codes }.compact.flatten - end + # @return [Array] List of all functions defined by the architecture + sig { returns(T::Array[Idl::FunctionBodyAst]) } + def functions + @functions ||= global_ast.functions + end - # @return [Array] List of all functions defined by the architecture - sig { returns(T::Array[Idl::FunctionBodyAst]) } - def functions - @functions ||= @global_ast.functions - end + # @return [Idl::FetchAst] Fetch block + sig { returns(Idl::FetchAst) } + def fetch + @fetch ||= global_ast.fetch + end - # @return [Idl::FetchAst] Fetch block - sig { returns(Idl::FetchAst) } - def fetch - @fetch ||= @global_ast.fetch - end + # @return [Array] List of globals + sig { returns(T::Array[T.any(Idl::GlobalAst, Idl::GlobalWithInitializationAst)]) } + def globals + return @globals unless @globals.nil? - # @return [Array] List of globals - sig { returns(T::Array[T.any(Idl::GlobalAst, Idl::GlobalWithInitializationAst)]) } - def globals - return @globals unless @globals.nil? + @globals = global_ast.globals + end - @globals = @global_ast.globals - end + # @return [Array] List of all implemented CSRs + sig { returns(T::Array[Csr]) } + def implemented_csrs + @implemented_csrs ||= + begin + unless fully_configured? + raise ArgumentError, "implemented_csrs is only defined for fully configured systems" + end - # @return [Array] List of all implemented CSRs - sig { returns(T::Array[Csr]) } - def transitive_implemented_csrs - unless fully_configured? - raise ArgumentError, "transitive_implemented_csrs is only defined for fully configured systems" + csrs.select do |csr| + csr.defined_by_condition.satisfied_by_cfg_arch?(self) == SatisfiedResult::Yes + end + end end - @transitive_implemented_csrs ||= - csrs.select do |csr| - csr.defined_by_condition.satisfied_by? do |ext_req| - transitive_implemented_extension_versions.any? { |ext_ver| ext_req.satisfied_by?(ext_ver) } - end - end - end - alias implemented_csrs transitive_implemented_csrs - - # @return [Array] List of all CSRs that it is possible to implement - sig { returns(T::Array[Csr]) } - def not_prohibited_csrs - @not_prohibited_csrs ||= - if @config.fully_configured? - transitive_implemented_csrs - elsif @config.partially_configured? - csrs.select do |csr| - csr.defined_by_condition.satisfied_by? do |ext_req| - not_prohibited_extension_versions.any? { |ext_ver| ext_req.satisfied_by?(ext_ver) } + # @deprecated in favor of implemented_csrs + def transitive_implemented_csrs = implemented_csrs + + # @return [Array] List of all CSRs that it is possible to implement + sig { params(show_progress: T::Boolean).returns(T::Array[Csr]) } + def possible_csrs(show_progress: false) + @not_prohibited_csrs ||= + if @config.fully_configured? + implemented_csrs + elsif @config.partially_configured? + bar = + if show_progress + TTY::ProgressBar.new("determining possible CSRs [:bar]", total: csrs.size, output: $stdout) + end + csrs.select do |csr| + bar.advance if show_progress + csr.defined_by_condition.satisfied_by_cfg_arch?(self) != SatisfiedResult::No end + else + csrs end - else - csrs - end - end - alias possible_csrs not_prohibited_csrs - - # @return [Array] List of all implemented instructions, sorted by name - sig { returns(T::Array[Instruction]) } - def transitive_implemented_instructions - unless fully_configured? - raise ArgumentError, "transitive_implemented_instructions is only defined for fully configured systems" end + alias not_prohibited_csrs possible_csrs - @transitive_implemented_instructions ||= - instructions.select do |inst| - inst.defined_by_condition.satisfied_by? do |ext_req| - transitive_implemented_extension_versions.any? { |ext_ver| ext_req.satisfied_by?(ext_ver) } - end + # @return List of all implemented instructions, sorted by name + sig { returns(T::Array[Instruction]) } + def implemented_instructions + unless fully_configured? + raise ArgumentError, "implemented_instructions is only defined for fully configured systems" end - end - alias implemented_instructions transitive_implemented_instructions - # @return [Array] List of all prohibited instructions, sorted by name - sig { returns(T::Array[Instruction]) } - def transitive_prohibited_instructions - # an instruction is prohibited if it is not defined by any .... TODO LEFT OFF HERE.... - @transitive_prohibited_instructions ||= - if fully_configured? - instructions - transitive_implemented_instructions - elsif partially_configured? + @implemented_instructions ||= instructions.select do |inst| - inst.defined_by_condition.satisfied_by? do |ext_req| - not_prohibited_extension_versions.none? { |ext_ver| ext_req.satisfied_by?(ext_ver) } + inst.defined_by_condition.satisfied_by_cfg_arch?(self) == SatisfiedResult::Yes + end + end + + # @depracted in favor of #implemented_instructions + def transitive_implemented_instructions = implemented_instructions + + # @return [Array] List of all prohibited instructions, sorted by name + sig { returns(T::Array[Instruction]) } + def prohibited_instructions + # an instruction is prohibited if it is not defined by any .... TODO LEFT OFF HERE.... + @prohibited_instructions ||= + if fully_configured? + instructions - implemented_instructions + elsif partially_configured? + instructions.select do |inst| + inst.defined_by_condition.satisfied_by_cfg_arch?(self) == SatisfiedResult::No end + else + [] end - else - [] - end - end - alias prohibited_instructions transitive_prohibited_instructions + end + + # @depracated in favor of #prohibited_instructions + def transitive_prohibited_instructions = prohibited_instructions - # @return [Array] List of all instructions that are not prohibited by the config, sorted by name - sig { returns(T::Array[Instruction]) } - def not_prohibited_instructions - return @not_prohibited_instructions if defined?(@not_prohibited_instructions) + # @return List of all instructions that are not prohibited by the config, sorted by name + sig { params(show_progress: T::Boolean).returns(T::Array[Instruction]) } + def possible_instructions(show_progress: false) + return @not_prohibited_instructions if defined?(@not_prohibited_instructions) - @not_prohibited_instructions_mutex ||= Thread::Mutex.new - @not_prohibited_instructions_mutex.synchronize do @not_prohibited_instructions ||= if @config.fully_configured? - transitive_implemented_instructions + implemented_instructions elsif @config.partially_configured? + bar = + if show_progress + TTY::ProgressBar.new("determining possible instructions [:bar]", total: instructions.size, output: $stdout) + end instructions.select do |inst| + bar.advance if show_progress + possible_xlens.any? { |xlen| inst.defined_in_base?(xlen) } && \ - inst.defined_by_condition.satisfied_by? do |ext_req| - not_prohibited_extension_versions.any? { |ext_ver| ext_req.satisfied_by?(ext_ver) } - end + inst.defined_by_condition.satisfied_by_cfg_arch?(self) != SatisfiedResult::No end else instructions end + + @not_prohibited_instructions end - @not_prohibited_instructions - end - alias possible_instructions not_prohibited_instructions + alias not_prohibited_instructions possible_instructions - # @return [Integer] The largest instruction encoding in the config - sig { returns(Integer) } - def largest_encoding - @largest_encoding ||= - if fully_configured? - transitive_implemented_instructions.map(&:max_encoding_width).max - elsif partially_configured? - not_prohibited_instructions.map(&:max_encoding_width).max - else - instructions.map(&:max_encoding_width).max - end - end + # @return [Integer] The largest instruction encoding in the config + sig { returns(Integer) } + def largest_encoding + @largest_encoding ||= possible_instructions.map(&:max_encoding_width).max + end - # @return [Array] List of all reachable IDL functions for the config - sig { returns(T::Array[Idl::FunctionDefAst]) } - def implemented_functions - return @implemented_functions if @implemented_functions - return [] unless fully_configured? + # @return [Array] List of all reachable IDL functions for the config + sig { returns(T::Array[Idl::FunctionDefAst]) } + def implemented_functions + return @implemented_functions unless @implemented_functions.nil? - @implemented_functions = [] + @implemented_functions = [] - puts " Finding all reachable functions from instruction operations" + Udb.logger.info " Finding all reachable functions from instruction operations" - transitive_implemented_instructions.each do |inst| - @implemented_functions << - if inst.base.nil? - if multi_xlen? - (inst.reachable_functions(32) + - inst.reachable_functions(64)) + implemented_instructions.each do |inst| + @implemented_functions << + if inst.base.nil? + if multi_xlen? + (inst.reachable_functions(32) + + inst.reachable_functions(64)) + else + inst.reachable_functions(mxlen) + end else - inst.reachable_functions(mxlen) + inst.reachable_functions(inst.base) end - else - inst.reachable_functions(inst.base) - end - end - @implemented_functions = @implemented_functions.flatten - @implemented_functions.uniq!(&:name) + end + @implemented_functions = @implemented_functions.flatten + @implemented_functions.uniq!(&:name) - puts " Finding all reachable functions from CSR operations" + Udb.logger.info " Finding all reachable functions from CSR operations" - transitive_implemented_csrs.each do |csr| - csr_funcs = csr.reachable_functions - csr_funcs.each do |f| + implemented_csrs.each do |csr| + csr_funcs = csr.reachable_functions + csr_funcs.each do |f| + @implemented_functions << f unless @implemented_functions.any? { |i| i.name == f.name } + end + end + + # now add everything from fetch + st = symtab.global_clone + st.push(global_ast.fetch.body) + fetch_fns = global_ast.fetch.body.reachable_functions(st) + fetch_fns.each do |f| @implemented_functions << f unless @implemented_functions.any? { |i| i.name == f.name } end - end + st.release - # now add everything from fetch - symtab = @symtab.global_clone - symtab.push(@global_ast.fetch.body) - fetch_fns = @global_ast.fetch.body.reachable_functions(symtab) - fetch_fns.each do |f| - @implemented_functions << f unless @implemented_functions.any? { |i| i.name == f.name } + @implemented_functions end - symtab.release - @implemented_functions - end + # @return [Array] List of functions that can be reached by the configuration + sig { params(show_progress: T::Boolean).returns(T::Array[Idl::FunctionDefAst]) } + def reachable_functions(show_progress: false) + return @reachable_functions unless @reachable_functions.nil? + + @reachable_functions = [] + + insts = possible_instructions(show_progress:) + csrs = possible_csrs(show_progress:) - # @return [Array] List of functions that can be reached by the configuration - sig { returns(T::Array[Idl::FunctionDefAst]) } - def reachable_functions - return @reachable_functions unless @reachable_functions.nil? + bar = + if show_progress + TTY::ProgressBar.new("determining reachable IDL functions [:bar]", total: insts.size + csrs.size + 1 + global_ast.functions.size, output: $stdout) + end - insts = not_prohibited_instructions - @reachable_functions = [] + possible_instructions.each do |inst| + bar.advance if show_progress - insts.each do |inst| - fns = - if inst.base.nil? - if multi_xlen? - (inst.reachable_functions(32) + - inst.reachable_functions(64)) + fns = + if inst.base.nil? + if multi_xlen? + (inst.reachable_functions(32) + + inst.reachable_functions(64)) + else + inst.reachable_functions(mxlen) + end else - inst.reachable_functions(mxlen) + inst.reachable_functions(inst.base) end - else - inst.reachable_functions(inst.base) - end - @reachable_functions.concat(fns) - end + @reachable_functions.concat(fns) + end + + @reachable_functions += + possible_csrs.flat_map do |csr| + bar.advance if show_progress + + csr.reachable_functions + end.uniq + + # now add everything from fetch + st = @symtab.global_clone + st.push(global_ast.fetch.body) + @reachable_functions += global_ast.fetch.body.reachable_functions(st) + bar.advance if show_progress + st.release + + # now add everything from external functions + st = @symtab.global_clone + global_ast.functions.select { |fn| fn.external? }.each do |fn| + st.push(fn) + @reachable_functions << fn + fn.apply_template_and_arg_syms(st) + @reachable_functions += fn.reachable_functions(st) + bar.advance if show_progress + st.pop + end + st.release - @reachable_functions += - not_prohibited_csrs.flat_map(&:reachable_functions).uniq - - # now add everything from fetch - symtab = @symtab.global_clone - symtab.push(@global_ast.fetch.body) - @reachable_functions += @global_ast.fetch.body.reachable_functions(symtab) - symtab.release - - # now add everything from external functions - symtab = @symtab.global_clone - @global_ast.functions.select { |fn| fn.external? }.each do |fn| - symtab.push(fn) - @reachable_functions << fn - fn.apply_template_and_arg_syms(symtab) - @reachable_functions += fn.reachable_functions(symtab) - symtab.pop + @reachable_functions.uniq! + @reachable_functions end - symtab.release - @reachable_functions.uniq! - @reachable_functions - end + # Given an adoc string, find names of CSR/Instruction/Extension enclosed in `monospace` + # and replace them with links to the relevant object page. + # See backend_helpers.rb for a definition of the proprietary link format. + # + # @param adoc [String] Asciidoc source + # @return [String] Asciidoc source, with link placeholders + sig { params(adoc: String).returns(String) } + def convert_monospace_to_links(adoc) + h = Class.new do include Udb::Helpers::TemplateHelpers end.new + adoc.gsub(/`([\w.]+)`/) do |match| + name = Regexp.last_match(1) + csr_name, field_name = T.must(name).split(".") + csr = not_prohibited_csrs.find { |c| c.name == csr_name } + if !field_name.nil? && !csr.nil? && csr.field?(field_name) + h.link_to_udb_doc_csr_field(csr_name, field_name) + elsif !csr.nil? + h.link_to_udb_doc_csr(csr_name) + elsif not_prohibited_instructions.any? { |inst| inst.name == name } + h.link_to_udb_doc_inst(name) + elsif not_prohibited_extensions.any? { |ext| ext.name == name } + h.link_to_udb_doc_ext(name) + else + match + end + end + end - # @return [Array] List of all non-ISA specs that could apply to this configuration - sig { returns(T::Array[T.untyped]) } - def possible_non_isa_specs - return @possible_non_isa_specs if defined?(@possible_non_isa_specs) + # Returns an environment hash suitable for use with ERb templates. + # + # This method returns a hash containing the architecture definition and other + # relevant data that can be used to generate ERb templates. + # + # @return [Hash] An environment hash suitable for use with ERb templates. + sig { returns(Object) } + def erb_env + return @env unless @env.nil? + + @env = Class.new + @env.extend T::Sig + @env.instance_variable_set(:@cfg, @cfg) + @env.instance_variable_set(:@params, @params) + @env.instance_variable_set(:@cfg_arch, self) + @env.instance_variable_set(:@arch, self) # For backwards-compatibility + + # add each parameter, either as a method (lowercase) or constant (uppercase) + params_with_value.each do |param| + @env.const_set(param.name, param.value) unless @env.const_defined?(param.name) + end + params_without_value.each do |param| + @env.const_set(param.name, :unknown) unless @env.const_defined?(param.name) + end + @env.instance_exec do + # method to check if a given extension (with an optional version number) is present + # + # @param ext_name [String,#to_s] Name of the extension + # @param ext_requirement [String, #to_s] Version string, as a Gem Requirement (https://guides.rubygems.org/patterns/#pessimistic-version-constraint) + # @return [Boolean] whether or not extension +ext_name+ meeting +ext_requirement+ is implemented in the config + sig { params(ext_name: T.any(String, Symbol), ext_requirements: T.any(String, T::Array[String])).returns(T::Boolean) } + def ext?(ext_name, ext_requirements = []) + ext_reqs = + case ext_requirements + when Array + ext_requirements + when String + [ext_requirements] + else + T.absurd(ext_requirements) + end + @cfg_arch.ext?(ext_name.to_s, ext_reqs) + end - @possible_non_isa_specs = [] + # List of possible XLENs for any implemented mode + sig { returns(T::Array[Integer]) } + def possible_xlens + @cfg_arch.possible_xlens + end - # Discover local non-ISA specifications - non_isa_path = Pathname.new(__dir__).parent.parent.parent.parent.parent / "spec/custom/non_isa" - if non_isa_path.exist? - non_isa_path.glob("*.yaml").each do |spec_file| - next if spec_file.basename.to_s.start_with?('prm') # Skip PRM files + # @returns [Hash] architecturally-defined exception codes and their names + def implemented_exception_codes + @cfg_arch.implemented_exception_codes + end - begin - spec_name = spec_file.basename('.yaml').to_s - spec_data = YAML.load_file(spec_file) - next unless spec_data['kind'] == 'non-isa specification' - - spec_obj = Udb::NonIsaSpecification.new(spec_name, spec_data) - @possible_non_isa_specs << spec_obj - rescue => e - warn "Failed to load non-ISA spec #{spec_file}: #{e.message}" + # returns [Hash] architecturally-defined interrupt codes and their names + def implemented_interrupt_codes + @cfg_arch.implemented_interrupt_codes end end + + @env + end + private :erb_env + + # passes _erb_template_ through ERB within the content of this config + # + # @param erb_template [String] ERB source + # @return [String] The rendered text + sig { params(erb_template: String, what: String).returns(String) } + def render_erb(erb_template, what = "") + t = Tempfile.new("template") + t.write erb_template + t.flush + begin + Tilt["erb"].new(t.path, trim: "-").render(erb_env) + rescue + warn "While rendering ERB template: #{what}" + raise + ensure + t.close + t.unlink + end end - @possible_non_isa_specs.sort_by(&:name) - end - # @return [Array] List of all implemented non-ISA specs, filtered by configuration - sig { returns(T::Array[T.untyped]) } - def implemented_non_isa_specs - return @implemented_non_isa_specs if defined?(@implemented_non_isa_specs) + # @return [Array] List of all non-ISA specs that could apply to this configuration + sig { returns(T::Array[T.untyped]) } + def possible_non_isa_specs + return @possible_non_isa_specs if defined?(@possible_non_isa_specs) - @implemented_non_isa_specs = possible_non_isa_specs.select do |spec| - spec.exists_in_cfg?(self) - end - @implemented_non_isa_specs - end - alias transitive_implemented_non_isa_specs implemented_non_isa_specs - - # Given an adoc string, find names of CSR/Instruction/Extension enclosed in `monospace` - # and replace them with links to the relevant object page. - # See backend_helpers.rb for a definition of the proprietary link format. - # - # @param adoc [String] Asciidoc source - # @return [String] Asciidoc source, with link placeholders - sig { params(adoc: String).returns(String) } - def convert_monospace_to_links(adoc) - h = Class.new do include Udb::Helpers::TemplateHelpers end.new - adoc.gsub(/`([\w.]+)`/) do |match| - name = Regexp.last_match(1) - csr_name, field_name = T.must(name).split(".") - csr = not_prohibited_csrs.find { |c| c.name == csr_name } - if !field_name.nil? && !csr.nil? && csr.field?(field_name) - h.link_to_udb_doc_csr_field(csr_name, field_name) - elsif !csr.nil? - h.link_to_udb_doc_csr(csr_name) - elsif not_prohibited_instructions.any? { |inst| inst.name == name } - h.link_to_udb_doc_inst(name) - elsif not_prohibited_extensions.any? { |ext| ext.name == name } - h.link_to_udb_doc_ext(name) - else - match - end - end - end - # Returns an environment hash suitable for use with ERb templates. - # - # This method returns a hash containing the architecture definition and other - # relevant data that can be used to generate ERb templates. - # - # @return [Hash] An environment hash suitable for use with ERb templates. - sig { returns(Object) } - def erb_env - return @env unless @env.nil? - - @env = Class.new - @env.extend T::Sig - @env.instance_variable_set(:@cfg, @cfg) - @env.instance_variable_set(:@params, @params) - @env.instance_variable_set(:@cfg_arch, self) - @env.instance_variable_set(:@arch, self) # For backwards-compatibility - - # add each parameter, either as a method (lowercase) or constant (uppercase) - params_with_value.each do |param| - @env.const_set(param.name, param.value) unless @env.const_defined?(param.name) - end + @possible_non_isa_specs = [] - params_without_value.each do |param| - @env.const_set(param.name, :unknown) unless @env.const_defined?(param.name) - end + # Discover local non-ISA specifications + non_isa_path = Pathname.new(__dir__).parent.parent.parent.parent.parent / "spec/custom/non_isa" + if non_isa_path.exist? + non_isa_path.glob("*.yaml").each do |spec_file| + next if spec_file.basename.to_s.start_with?("prm") # Skip PRM files - @env.instance_exec do - # method to check if a given extension (with an optional version number) is present - # - # @param ext_name [String,#to_s] Name of the extension - # @param ext_requirement [String, #to_s] Version string, as a Gem Requirement (https://guides.rubygems.org/patterns/#pessimistic-version-constraint) - # @return [Boolean] whether or not extension +ext_name+ meeting +ext_requirement+ is implemented in the config - sig { params(ext_name: T.any(String, Symbol), ext_requirements: T.any(String, T::Array[String])).returns(T::Boolean) } - def ext?(ext_name, ext_requirements = []) - ext_reqs = - case ext_requirements - when Array - ext_requirements - when String - [ext_requirements] - else - T.absurd(ext_requirements) - end - @cfg_arch.ext?(ext_name.to_s, ext_reqs) - end + begin + spec_name = spec_file.basename(".yaml").to_s + spec_data = YAML.load_file(spec_file) + next unless spec_data["kind"] == "non-isa specification" - # List of possible XLENs for any implemented mode - sig { returns(T::Array[Integer]) } - def possible_xlens - @cfg_arch.possible_xlens + spec_obj = Udb::NonIsaSpecification.new(spec_name, spec_data) + @possible_non_isa_specs << spec_obj + rescue => e + warn "Failed to load non-ISA spec #{spec_file}: #{e.message}" + end + end end - # info on interrupt and exception codes + @possible_non_isa_specs.sort_by(&:name) + end - # @returns [Hash] architecturally-defined exception codes and their names - def exception_codes - @cfg_arch.exception_codes - end + # @return [Array] List of all implemented non-ISA specs, filtered by configuration + sig { returns(T::Array[T.untyped]) } + def implemented_non_isa_specs + return @implemented_non_isa_specs if defined?(@implemented_non_isa_specs) - # returns [Hash] architecturally-defined interrupt codes and their names - def interrupt_codes - @cfg_arch.interrupt_codes + @implemented_non_isa_specs = possible_non_isa_specs.select do |spec| + spec.exists_in_cfg?(self) end - # @returns [Hash] architecturally-defined exception codes and their names - def implemented_exception_codes - @cfg_arch.implemented_exception_codes - end + @implemented_non_isa_specs + end - # returns [Hash] architecturally-defined interrupt codes and their names - def implemented_interrupt_codes - @cfg_arch.implemented_interrupt_codes + # @deprecated in favor of #implemented_non_isa_specs + def transitive_implemented_non_isa_specs = implemented_non_isa_specs + + # Given an adoc string, find names of CSR/Instruction/Extension enclosed in `monospace` + # and replace them with links to the relevant object page. + # See backend_helpers.rb for a definition of the proprietary link format. + # + # @param adoc [String] Asciidoc source + # @return [String] Asciidoc source, with link placeholders + sig { params(adoc: String).returns(String) } + def convert_monospace_to_links(adoc) + h = Class.new do include Udb::Helpers::TemplateHelpers end.new + adoc.gsub(/`([\w.]+)`/) do |match| + name = Regexp.last_match(1) + csr_name, field_name = T.must(name).split(".") + csr = not_prohibited_csrs.find { |c| c.name == csr_name } + if !field_name.nil? && !csr.nil? && csr.field?(field_name) + h.link_to_udb_doc_csr_field(csr_name, field_name) + elsif !csr.nil? + h.link_to_udb_doc_csr(csr_name) + elsif not_prohibited_instructions.any? { |inst| inst.name == name } + h.link_to_udb_doc_inst(name) + elsif not_prohibited_extensions.any? { |ext| ext.name == name } + h.link_to_udb_doc_ext(name) + else + match + end end end - @env - end - private :erb_env - - # passes _erb_template_ through ERB within the content of this config - # - # @param erb_template [String] ERB source - # @return [String] The rendered text - sig { params(erb_template: String, what: String).returns(String) } - def render_erb(erb_template, what = "") - t = Tempfile.new("template") - t.write erb_template - t.flush - begin - Tilt["erb"].new(t.path, trim: "-").render(erb_env) - rescue - warn "While rendering ERB template: #{what}" - raise - ensure - t.close - t.unlink - end end end - -end diff --git a/tools/ruby-gems/udb/lib/udb/cli.rb b/tools/ruby-gems/udb/lib/udb/cli.rb index e030451d4f..107e31525d 100644 --- a/tools/ruby-gems/udb/lib/udb/cli.rb +++ b/tools/ruby-gems/udb/lib/udb/cli.rb @@ -6,6 +6,7 @@ # typed: true # frozen_string_literal: true +require "pastel" require "thor" require "terminal-table" @@ -21,6 +22,12 @@ def self.subcommand_prefix "-#{T.must(match[0]).downcase}" end end + + no_commands do + def pastel + @pastel ||= Pastel.new(enabled: $stdout.tty?) + end + end end module Udb @@ -28,6 +35,41 @@ module CliCommands class Validate < SubCommandBase include Thor::Actions + desc "spec", "Validate that the spec follows the schema" + long_desc <<~DESC + Validate that all of the files in the spec conform to the data schema. + + The specification is determined by --config. + DESC + method_option :std, aliases: "-a", type: :string, desc: "Path to standard specification database", default: Udb.default_std_isa_path.to_s + method_option :custom, type: :string, desc: "Path to custom specification directory, if needed", default: Udb.default_custom_isa_path.to_s + method_option :config, type: :string, required: true, desc: "Configuration name, or path to a config file", default: "_" + method_option :config_dir, type: :string, desc: "Path to directory with config files", default: Udb.default_cfgs_path.to_s + method_option :gen, type: :string, desc: "Path to folder used for generation", default: Udb.default_gen_path.to_s + def spec + + cfg_file = + if File.file?(options[:config]) + Pathname.new(options[:config]) + elsif File.file?("#{options[:config_dir]}/#{options[:config]}.yaml") + Pathname.new("#{options[:config_dir]}/#{options[:config]}.yaml") + else + raise ArgumentError, "Cannot find config: #{options[:config]}" + end + + resolver = + Udb::Resolver.new( + std_path_override: Pathname.new(options[:std]), + gen_path_override: Pathname.new(options[:gen]), + custom_path_override: Pathname.new(options[:custom]) + ) + cfg_arch = resolver.cfg_arch_for(cfg_file.realpath) + + puts "Checking arch files against schema.." + cfg_arch.validate($resolver, show_progress: true) + puts "All files validate against their schema" + end + desc "cfg NAME_OR_PATH", "Validate a configuration file" long_desc <<~DESC Check that a configuration file is valid for the given spec. @@ -50,13 +92,23 @@ def cfg(name_or_path) else raise ArgumentError, "Cannot find config: #{name_or_path}" end - result = ConfiguredArchitecture.validate(cfg_file) + resolver = + Udb::Resolver.new( + std_path_override: Pathname.new(options[:std]), + gen_path_override: Pathname.new(options[:gen]), + custom_path_override: Pathname.new(options[:custom]) + ) + cfg_arch = resolver.cfg_arch_for(cfg_file.realpath) + result = cfg_arch.valid? - cfg_spec = YAML.load_file(cfg_file) - if result - say "Config #{cfg_spec.fetch('name')} is valid" + if result.valid + say "Config #{pastel.bold(cfg_arch.name)} is #{pastel.green.bold("valid")}" else - say "Config #{cfg_spec.fetch('name')} is invalid" + say "Config #{pastel.bold(cfg_arch.name)} is #{pastel.red.bold("invalid")}" + say "" + result.reasons.each do |r| + say " * #{pastel.yellow.bold(r)}" + end exit 1 end end @@ -138,11 +190,11 @@ def parameter(param_name) say <<~INFO #{param_name} - Defined by extension: - #{param.exts.map { |e| " - #{e.name}" }.join("\n")} + Defined by: + #{param.defined_by_condition.to_s_pretty} Description: - #{param.desc.gsub("\n", "\n ")} + #{param.description.gsub("\n", "\n ")} Value: #{param.schema.to_pretty_s} @@ -198,7 +250,7 @@ def extensions method_option :config_dir, type: :string, desc: "Path to directory with config files", default: Udb.default_cfgs_path.to_s method_option :config, type: :string, required: true, desc: "Configuration name, or path to a config file", default: "_" method_option :extensions, aliases: "-e", type: :array, desc: "Only list parameters from extensions" - method_option :output_format, aliases: "-f", enum: ["ascii", "yaml", "json"], type: :string, desc: "Output format. 'ascii' prints a table to stdout. 'yaml' prints YAML to stdout. 'json' prints JSON to stdout", default: 'ascii' + method_option :output_format, aliases: "-f", enum: ["ascii", "yaml", "json"], type: :string, desc: "Output format. 'ascii' prints a table to stdout. 'yaml' prints YAML to stdout. 'json' prints JSON to stdout", default: "ascii" method_option :output, aliases: "-o", type: :string, desc: "Output file, or '-' for stdout", default: "-" def parameters raise ArgumentError, "Arch directory does not exist: #{options[:arch]}" unless File.directory?(options[:arch]) @@ -228,27 +280,27 @@ def parameters cfg_arch = resolver.cfg_arch_for(cfg_file.realpath) params = if options[:extensions] - cfg_arch.possible_extensions.select{ |e| options[:extensions].include?(e.name) }.map(&:params).flatten.uniq(&:name).sort + cfg_arch.possible_extensions.select { |e| options[:extensions].include?(e.name) }.map(&:params).flatten.uniq(&:name).sort else cfg_arch.possible_extensions.map(&:params).flatten.uniq(&:name).sort end if options[:output_format] == "ascii" table = ::Terminal::Table.new( - headings: ["Name", "Extension(s)", "description"], - rows: params.map { |p| [p.name, p.exts.map(&:name).join(", "), p.desc] }, + headings: ["Name", "Defined By", "description"], + rows: params.map { |p| [p.name, p.defined_by_condition.implied_extension_requirements.map(&:ext_req).map(&:name).join(", "), p.description] }, ) table.style = { all_separators: true } out.puts table elsif options[:output_format] == "yaml" yaml = [] params.each do |p| - yaml << { "name" => p.name, "exts" => p.exts.map(&:name), "description" => p.desc } + yaml << { "name" => p.name, "exts" => p.defined_by_condition.implied_extension_requirements.map(&:ext_req).map(&:name), "description" => p.description } end out.puts YAML.dump(yaml) elsif options[:output_format] == "json" yaml = [] params.each do |p| - yaml << { "name" => p.name, "exts" => p.exts.map(&:name), "description" => p.desc } + yaml << { "name" => p.name, "exts" => p.defined_by_condition.implied_extension_requirements.map(&:ext_req).map(&:name), "description" => p.description } end out.puts JSON.dump(yaml) end diff --git a/tools/ruby-gems/udb/lib/udb/condition.rb b/tools/ruby-gems/udb/lib/udb/condition.rb new file mode 100644 index 0000000000..4bc34a8e97 --- /dev/null +++ b/tools/ruby-gems/udb/lib/udb/condition.rb @@ -0,0 +1,1358 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: true +# frozen_string_literal: true + +require "minisat" +require "sorbet-runtime" + +require "idlc/symbol_table" +require "udb/logic" + +require "udb/idl/condition_to_udb" + +module Udb + + class DatabaseObject; end + class TopLevelDatabaseObject < DatabaseObject; end + class Architecture; end + class ConfiguredArchitecture < Architecture; end + class Extension < TopLevelDatabaseObject; end + class ExtensionVersion; end + class ExtensionRequirement; end + class AbstractCondition; end + + # an ExtensionRequirement that only applies when cond is true + class ConditionalExtensionRequirement < T::Struct + prop :ext_req, ExtensionRequirement + prop :cond, AbstractCondition + end + + # an ExtensionVersion that only applies when cond is true + class ConditionalExtensionVersion < T::Struct + prop :ext_ver, ExtensionVersion + prop :cond, AbstractCondition + end + + # wrapper around an IDL function containing constraints + class Constraint + extend T::Sig + + sig { returns(T.nilable(String)) } + attr_reader :reason + + sig { + params( + idl: String, + input_file: T.nilable(Pathname), + input_line: T.nilable(Integer), + cfg_arch: ConfiguredArchitecture, + reason: T.nilable(String) + ).void + } + def initialize(idl, input_file:, input_line:, cfg_arch:, reason: nil) + @cfg_arch = cfg_arch + symtab = cfg_arch.symtab.global_clone + @ast = @cfg_arch.idl_compiler.compile_constraint(idl, symtab) + symtab.release + @reason = reason + end + + sig { params(symtab: Idl::SymbolTable).returns(T::Boolean) } + def eval(symtab) + @ast.satisfied?(symtab) + end + + # convert into a pure UDB condition + sig { returns(T.any(T::Hash[String, T.untyped], T::Boolean)) } + def to_h + symtab = @cfg_arch.symtab.global_clone + h = @ast.to_udb_h(symtab) + symtab.release + + h + end + + # convert into a pure UDB condition + sig { returns(String) } + def to_yaml + YAML.dump(to_h) + end + + # @api private + sig { + params( + expand: T::Boolean, + expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)] + ) + .returns(LogicNode) + } + def to_logic_tree_internal(expand:, expanded_ext_vers:) + Condition.new(to_h, @cfg_arch).to_logic_tree_internal(expand:, expanded_ext_vers:) + end + end + + # return type for satisfied_by functions + class SatisfiedResult < T::Enum + enums do + Yes = new + No = new + Maybe = new + end + end.freeze + SatisfiedResult::Yes.freeze + SatisfiedResult::No.freeze + SatisfiedResult::Maybe.freeze + + # a condition + class AbstractCondition + extend T::Sig + extend T::Helpers + abstract! + + # returns true if this condition is always true or always false + # (does not depend on extensions or parameters) + sig { abstract.returns(T::Boolean) } + def empty?; end + + # convert to the underlying LogicNode-based tree + sig { abstract.params(expand: T::Boolean).returns(LogicNode) } + def to_logic_tree(expand:); end + + # @api private + sig { abstract.params(expand: T::Boolean, expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)]).returns(LogicNode) } + def to_logic_tree_internal(expand:, expanded_ext_vers:); end + + # is this condition satisfiable? + sig { returns(T::Boolean) } + def satisfiable? + to_logic_tree(expand: true).satisfiable? + end + + # is is possible for this condition and other to be simultaneously true? + sig { params(other: AbstractCondition).returns(T::Boolean) } + def compatible?(other) + Condition.conjunction([self, other], @cfg_arch).satisfiable? + end + + # @return if the condition is, possibly is, or is definately not satisfied by cfg_arch + sig { abstract.params(_cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) } + def satisfied_by_cfg_arch?(_cfg_arch); end + + # partially evaluate by replacing any known parameter terms with true/false, and returning + # a new condition + sig { abstract.params(cfg_arch: ConfiguredArchitecture, expand: T::Boolean).returns(AbstractCondition) } + def partially_evaluate_for_params(cfg_arch, expand:); end + + # If ext_req is *not* satisfied, is condition satisfiable? + sig { abstract.params(_ext_req: ExtensionRequirement).returns(T::Boolean) } + def satisfiability_depends_on_ext_req?(_ext_req); end + + # for the given config arch, is condition satisfiable? + sig { params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) } + def could_be_satisfied_by_cfg_arch?(cfg_arch) + satisfied_by_cfg_arch?(cfg_arch) != SatisfiedResult::No + end + + # is this condition logically equivalent to other? + # this is true logical equivalence, not just syntatic equivalence, e.g.: + # (a || a) is equivalent to (a) + sig { params(other: AbstractCondition).returns(T::Boolean) } + def equivalent?(other) + to_logic_tree(expand: true).equivalent?(other.to_logic_tree(expand: true)) + end + + sig { params(other_condition: AbstractCondition).returns(T::Boolean) } + def covered_by?(other_condition) + # cover means other_condition always implies self + # can test that by seeing if the contradiction is satisfiable, i.e.: + # if other_condition -> self , contradition would be other_condition & not self + contradiction = LogicNode.new( + LogicNodeType::And, + [ + other_condition.to_logic_tree(expand: true), + LogicNode.new(LogicNodeType::Not, [to_logic_tree(expand: true)]) + ] + ) + !contradiction.satisfiable? + end + + sig { params(other_condition: AbstractCondition).returns(T::Boolean) } + def always_implies?(other_condition) + other_condition.covered_by?(self) + end + + # true if the condition references a parameter at some point + sig { abstract.returns(T::Boolean) } + def has_param?; end + + # true if the condition references an extension requirements at some point + sig { abstract.returns(T::Boolean) } + def has_extension_requirement?; end + + sig { abstract.returns(AbstractCondition) } + def minimize; end + + # convert condition into UDB-compatible hash + sig { abstract.returns(T.any(T::Hash[String, T.untyped], T::Boolean)) } + def to_h; end + + # convert condition into UDB-compatible YAML string + sig { overridable.returns(String) } + def to_yaml + YAML.dump(to_h) + end + + # convert condition into valid IDL + sig { abstract.params(cfg_arch: ConfiguredArchitecture).returns(String) } + def to_idl(cfg_arch); end + + # condition as an equation + sig { abstract.returns(String) } + def to_s; end + + # condition in prose + sig { abstract.returns(String) } + def to_s_pretty; end + + # condition in Asciidoc + sig { abstract.returns(String) } + def to_asciidoc; end + + # assuming that the condition represents an extension dependency, + # return the specified extensions along with the condition under + # which they apply + # + # specifically, this returns the complete list of positive terms (terms that are not negated + # in solution) of requirements, + # along with a conditionthat must hold for condition to be satisfied when the positive term is met + # + # @example + # given the equation (representing implications of the "C" extension): + # Zca@1.0.0 AND (!F OR Zcf@1.0.0) AND (!D OR Zcd@1.0.0) + # + # return: + # [ + # { ext_req: Zca@1.0.0, cond: True }, + # { ext_req: Zcf@1.0.0, cond: !F }, + # { ext_req: Zcd@1.0.0, cond: !D } + # ] + # + # @example + # given the equation + # Zc AND ((Zc1 AND Zc2) OR (!Zcond)) + # + # return + # [ + # { ext_ver: Zc, cond True}, + # { ext_ver: Zc1, cond: !Zcond}, + # { ext_ver: Zc2, cond: !Zcond} + # ] + # + # This list is *not* transitive; if an implication I1 implies another extension I2, + # only I1 shows up in the list + sig { abstract.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) } + def implied_extension_requirements(expand: true); end + + # inversion of implied_extension_requirements + sig { abstract.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) } + def implied_extension_conflicts(expand: true); end + end + + # @api private + module ConvertibleToLogicNode + extend T::Sig + + sig { params(tree: LogicNode, expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)]).void } + def expand_ext_vers_in_logic_tree(tree, expanded_ext_vers:) + terms_to_check = tree.terms + expansion_size_pre = expanded_ext_vers.size + + Kernel.loop do + next_terms_to_check = [] + terms_to_check.each do |term| + next unless term.is_a?(ExtensionTerm) + ext_req = term.to_ext_req(@cfg_arch) + + ext_req.satisfying_versions.each do |ext_ver| + next if expanded_ext_vers.include?(ext_ver) + expanded_ext_vers[ext_ver] = :in_progress + + ext_ver_requirements = ext_ver.requirements_condition.to_logic_tree_internal(expand: true, expanded_ext_vers:) + ext_requirements = ext_ver.ext.requirements_condition.to_logic_tree_internal(expand: true, expanded_ext_vers:) + + expansion = + LogicNode.new(LogicNodeType::And, [ext_requirements, ext_ver_requirements]) + expanded_ext_vers[ext_ver] = expansion + next_terms_to_check.concat expansion.terms + end + end + + break if next_terms_to_check.empty? || expanded_ext_vers.size == expansion_size_pre + terms_to_check = next_terms_to_check.uniq + end + end + end + + # represents a condition in the UDB data, which could include conditions involving + # extensions and/or parameters + class Condition < AbstractCondition + extend T::Sig + extend T::Helpers + include ConvertibleToLogicNode + + sig { + params( + cfg_arch: ConfiguredArchitecture, + conds: T::Array[T.all(AbstractCondition, Object)] + ) + .returns(AbstractCondition) + } + def self.join(cfg_arch, conds) + if conds.size == 0 + AlwaysTrueCondition.new + elsif conds.size == 1 + conds.fetch(0) + else + Condition.new({ "allOf" => conds.map(&:to_h) }, cfg_arch) + end + end + + class MemoizedState < T::Struct + prop :satisfied_by_cfg_arch, T::Hash[ConfiguredArchitecture, SatisfiedResult] + end + + sig { + params( + yaml: T.any(T::Hash[String, T.untyped], T::Boolean), + cfg_arch: ConfiguredArchitecture, + input_file: T.nilable(Pathname), + input_line: T.nilable(Integer) + ) + .void + } + def initialize(yaml, cfg_arch, input_file: nil, input_line: nil) + @yaml = yaml + @cfg_arch = cfg_arch + @input_file = input_file + @input_line = input_line + @memo = MemoizedState.new(satisfied_by_cfg_arch: {}) + end + + sig { override.returns(T::Boolean) } + def empty? = @yaml == true || @yaml == false || @yaml.empty? + + sig { override.params(expand: T::Boolean).returns(LogicNode) } + def to_logic_tree(expand:) + if expand + @logic_tree_expanded ||= + begin + expanded_ext_vers = T.let({}, T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)]) + tree = to_logic_tree_internal(expand:, expanded_ext_vers:) + + before_param_expansion = + if expanded_ext_vers.empty? + tree + else + implications = expanded_ext_vers.map { |ext_ver, logic_req| LogicNode.new(LogicNodeType::If, [ext_ver.to_condition.to_logic_tree(expand: false), T.cast(logic_req, LogicNode)]) } + LogicNode.new(LogicNodeType::And, [tree] + implications) + end + + extra_param_implications = T.let([], T::Array[LogicNode]) + before_param_expansion.terms.each do |term| + next unless term.is_a?(ParameterTerm) + + same_param_terms = before_param_expansion.terms.select { |t| t.is_a?(ParameterTerm) && !t.equal?(term) && t.name == term.name } + same_param_terms.each do |other_term| + relation = term.relation_to(T.cast(other_term, ParameterTerm)) + unless relation.nil? + extra_param_implications << relation + end + end + end + + before_xlen_expansion = + if extra_param_implications.empty? + before_param_expansion + else + LogicNode.new(LogicNodeType::And, [before_param_expansion] + extra_param_implications) + end + + if before_xlen_expansion.terms.any? { |t| t.is_a?(XlenTerm) } + LogicNode.new(LogicNodeType::And, [before_xlen_expansion, LogicNode.new(LogicNodeType::Xor, [LogicNode::Xlen32, LogicNode::Xlen64])]) + else + before_xlen_expansion + end + end + else + @logic_tree_unexpanded ||= to_logic_tree_helper(@yaml, expand:, expanded_ext_vers: {}) + end + end + + sig { override.returns(AbstractCondition) } + def minimize + Condition.new(to_logic_tree(expand: true).minimize(LogicNode::CanonicalizationType::ProductOfSums).to_h, @cfg_arch) + end + + # @api private + sig { + override + .params(expand: T::Boolean, expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)]) + .returns(LogicNode).checked(:never) + } + def to_logic_tree_internal(expand:, expanded_ext_vers:) + to_logic_tree_helper(@yaml, expand:, expanded_ext_vers:) + end + + sig { + overridable + .params( + yaml: T.any(T::Hash[String, T.untyped], T::Boolean), + expand: T::Boolean, + expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)] + ).returns(LogicNode) + } + def to_logic_tree_helper(yaml, expand:, expanded_ext_vers:) + if yaml.is_a?(TrueClass) + LogicNode::True + elsif yaml.is_a?(FalseClass) + LogicNode::False + elsif yaml.key?("allOf") + LogicNode.new(LogicNodeType::And, yaml["allOf"].map { |node| to_logic_tree_helper(node, expand:, expanded_ext_vers:) }) + elsif yaml.key?("anyOf") + LogicNode.new(LogicNodeType::Or, yaml["anyOf"].map { |node| to_logic_tree_helper(node, expand:, expanded_ext_vers:) }) + elsif yaml.key?("noneOf") + LogicNode.new(LogicNodeType::None, yaml["noneOf"].map { |node| to_logic_tree_helper(node, expand:, expanded_ext_vers:) }) + elsif yaml.key?("oneOf") + LogicNode.new(LogicNodeType::Xor, yaml["oneOf"].map { |node| to_logic_tree_helper(node, expand:, expanded_ext_vers:) }) + elsif yaml.key?("not") + LogicNode.new(LogicNodeType::Not, [to_logic_tree_helper(yaml.fetch("not"), expand:, expanded_ext_vers:)]) + elsif yaml.key?("if") + antecedent = to_logic_tree_helper(yaml.fetch("if"), expand:, expanded_ext_vers:) + consequent = to_logic_tree_helper(yaml.fetch("then"), expand:, expanded_ext_vers:) + LogicNode.new(LogicNodeType::If, [antecedent, consequent]) + elsif yaml.key?("extension") + ExtensionCondition.new(yaml["extension"], @cfg_arch).to_logic_tree_internal(expand:, expanded_ext_vers:) + elsif yaml.key?("param") + ParamCondition.new(yaml["param"], @cfg_arch).to_logic_tree_internal(expand:, expanded_ext_vers:) + elsif yaml.key?("xlen") + case yaml.fetch("xlen") + when 32 + LogicNode::Xlen32 + when 64 + LogicNode::Xlen64 + else + raise "unexpected" + end + elsif yaml.key?("idl()") + IdlCondition.new(yaml, @cfg_arch, input_file: nil, input_line: nil).to_logic_tree_internal(expand:, expanded_ext_vers:) + else + raise "Unexpected: #{yaml.keys}" + end + end + private :to_logic_tree_helper + + sig { override.returns(T::Boolean) } + def has_param? + to_logic_tree(expand: true).terms.any? { |t| t.is_a?(ParameterTerm) } + end + + sig { override.returns(T::Boolean) } + def has_extension_requirement? + to_logic_tree(expand: true).terms.any? { |t| t.is_a?(ExtensionVersion) } + end + + EvalCallbackType = T.type_alias { T.proc.params(term: TermType).returns(SatisfiedResult) } + # @api private + sig { params(blk: EvalCallbackType).returns(EvalCallbackType) } + def make_cb_proc(&blk) + blk + end + + # return a new condition where any parameter term with a known outcome is replaced with a true/false + sig { override.params(cfg_arch: ConfiguredArchitecture, expand: T::Boolean).returns(Condition) } + def partially_evaluate_for_params(cfg_arch, expand:) + cb = make_cb_proc do |term| + if term.is_a?(ExtensionTerm) + SatisfiedResult::Maybe + elsif term.is_a?(ParameterTerm) + term.partial_eval(cfg_arch.config.param_values) + elsif term.is_a?(FreeTerm) + raise "unreachable" + elsif term.is_a?(XlenTerm) + # can't use cfg_arch.possible_xlens because of an initialization circular dependency in figuring out + # is S/U is implemented + if term.xlen == 32 + if cfg_arch.mxlen.nil? + SatisfiedResult::Maybe + elsif cfg_arch.mxlen == 32 + SatisfiedResult::Yes + else + # mxlen == 64. can some other mode be 32? + if cfg_arch.config.param_values.key?("SXLEN") && T.cast(cfg_arch.config.param_values.fetch("SXLEN"), T::Array[Integer]).include?(32) + SatisfiedResult::Yes + elsif cfg_arch.config.param_values.key?("UXLEN") && T.cast(cfg_arch.config.param_values.fetch("UXLEN"), T::Array[Integer]).include?(32) + SatisfiedResult::Yes + elsif cfg_arch.config.param_values.key?("VSXLEN") && T.cast(cfg_arch.config.param_values.fetch("VSXLEN"), T::Array[Integer]).include?(32) + SatisfiedResult::Yes + elsif cfg_arch.config.param_values.key?("VUXLEN") && T.cast(cfg_arch.config.param_values.fetch("VUXLEN"), T::Array[Integer]).include?(32) + SatisfiedResult::Yes + else + SatisfiedResult::No + end + end + elsif term.xlen == 64 + if cfg_arch.mxlen.nil? + SatisfiedResult::Maybe + elsif cfg_arch.mxlen == 32 + SatisfiedResult::No + else + SatisfiedResult::Yes + end + else + raise "term.zlen is not 32 or 64" + end + else + T.absurd(term) + end + end + + Condition.new( + to_logic_tree(expand:).partial_evaluate(cb).to_h, + cfg_arch + ) + end + + sig { override.params(cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) } + def satisfied_by_cfg_arch?(cfg_arch) + @memo.satisfied_by_cfg_arch[cfg_arch] ||= + if cfg_arch.fully_configured? + implemented_ext_cb = make_cb_proc do |term| + if term.is_a?(ExtensionTerm) + ext_ver = cfg_arch.implemented_extension_version(term.name) + next SatisfiedResult::No if ext_ver.nil? + term.to_ext_req(cfg_arch).satisfied_by?(ext_ver) \ + ? SatisfiedResult::Yes + : SatisfiedResult::No + elsif term.is_a?(ParameterTerm) + if cfg_arch.param_values.key?(term.name) + term.eval(cfg_arch) + else + SatisfiedResult::No + end + elsif term.is_a?(FreeTerm) + raise "unreachable" + elsif term.is_a?(XlenTerm) + if cfg_arch.possible_xlens.include?(term.xlen) + if cfg_arch.possible_xlens.size == 1 + SatisfiedResult::Yes + else + SatisfiedResult::Maybe + end + else + SatisfiedResult::No + end + else + T.absurd(term) + end + end + if to_logic_tree(expand: true).eval_cb(implemented_ext_cb) == SatisfiedResult::Yes + SatisfiedResult::Yes + else + SatisfiedResult::No + end + elsif cfg_arch.partially_configured? + cb = make_cb_proc do |term| + if term.is_a?(ExtensionTerm) + if cfg_arch.mandatory_extension_reqs.any? { |cfg_ext_req| cfg_ext_req.satisfied_by?(term.to_ext_req(cfg_arch)) } + SatisfiedResult::Yes + elsif cfg_arch.possible_extension_versions.any? { |cfg_ext_ver| term.to_ext_req(cfg_arch).satisfied_by?(cfg_ext_ver) } + SatisfiedResult::Maybe + else + SatisfiedResult::No + end + elsif term.is_a?(ParameterTerm) + term.eval(cfg_arch) + elsif term.is_a?(FreeTerm) + raise "unreachable" + elsif term.is_a?(XlenTerm) + if cfg_arch.possible_xlens.include?(term.xlen) + if cfg_arch.possible_xlens.size == 1 + SatisfiedResult::Yes + else + SatisfiedResult::Maybe + end + else + SatisfiedResult::No + end + else + T.absurd(term) + end + end + + to_logic_tree(expand: true).eval_cb(cb) + else + # unconfig. Can't really say anthing + SatisfiedResult::Maybe + end + end + + sig { override.params(ext_req: ExtensionRequirement).returns(T::Boolean) } + def satisfiability_depends_on_ext_req?(ext_req) + to_logic_tree(expand: true).satisfiability_depends_on_ext_req?(ext_req) + end + + sig { override.returns(T.any(T::Hash[String, T.untyped], T::Boolean)) } + def to_h + T.cast(to_logic_tree(expand: false).to_h, T::Hash[String, T.untyped]) + end + + sig { override.params(cfg_arch: ConfiguredArchitecture).returns(String) } + def to_idl(cfg_arch) + idl = to_logic_tree(expand: false).to_idl(cfg_arch) + if to_logic_tree(expand: false).type == LogicNodeType::If + idl + else + "-> #{idl};" + end + end + + sig { override.returns(String) } + def to_s + to_logic_tree(expand: false).to_s(format: LogicNode::LogicSymbolFormat::C) + end + + # return the condition in a nice, human-readable form + sig { override.returns(String) } + def to_s_pretty + to_logic_tree(expand: false).to_s_pretty + end + + sig { override.returns(String) } + def to_asciidoc + to_logic_tree(expand: false).to_asciidoc(include_versions: false) + end + + sig { override.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) } + def implied_extension_requirements(expand: true) + # strategy: + # 1. convert to product-of-sums. + # 2. for each product, find the positive terms. These are the implications + # 3. for each product, find the negative terms. These are the "conditions" when the positive terms apply + + @implications ||= begin + reqs = T.let([], T::Array[ConditionalExtensionRequirement]) + pos = to_logic_tree(expand:).minimize(LogicNode::CanonicalizationType::ProductOfSums) + + if pos.type == LogicNodeType::Term + single_term = pos.children.fetch(0) + if single_term.is_a?(ExtensionTerm) + reqs << ConditionalExtensionRequirement.new(ext_req: single_term.to_ext_req(@cfg_arch), cond: Condition::True) + else + # this is a single parameter, do nothing + end + elsif pos.type == LogicNodeType::Not + # there are no positive terms, do nothing + elsif pos.type == LogicNodeType::And + pos.children.each do |child| + child = T.cast(child, LogicNode) + if child.type == LogicNodeType::Term + term = child.children.fetch(0) + if term.is_a?(ExtensionTerm) + reqs << \ + ConditionalExtensionRequirement.new( + ext_req: term.to_ext_req(@cfg_arch), + cond: AlwaysTrueCondition.new + ) + end + elsif child.type == LogicNodeType::Not + # not a positive term; do nothing + elsif child.children.all? { |child| T.cast(child, LogicNode).type == LogicNodeType::Not } + # there is no positive term, so do nothing + else + raise "? #{child.type}" unless child.type == LogicNodeType::Or + + positive_terms = + child.node_children.select do |and_child| + and_child.type == LogicNodeType::Term && and_child.children.fetch(0).is_a?(ExtensionTerm) + end + cond_terms = + child.node_children.select { |and_child| and_child.type == LogicNodeType::Not } + .map { |neg_term| neg_term.node_children.fetch(0) } + cond_terms += + child.node_children.select do |and_child| + and_child.type == LogicNodeType::Term && and_child.children.fetch(0).is_a?(ParameterTerm) + end.map { |c| LogicNode.new(LogicNodeType::Not, [c]) } + positive_terms.each do |pterm| + cond_node = + if cond_terms.empty? + LogicNode::True + else + cond_terms.size == 1 \ + ? cond_terms.fetch(0) + : LogicNode.new(LogicNodeType::And, cond_terms) + end + + reqs << \ + ConditionalExtensionRequirement.new( + ext_req: T.cast(pterm.children.fetch(0), ExtensionTerm).to_ext_req(@cfg_arch), + cond: Condition.new(cond_node.to_h, @cfg_arch) + ) + end + reqs + end + end + end + reqs + end + end + + sig { override.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) } + def implied_extension_conflicts(expand: true) + # strategy: + # 1. invert extension requiremnts (to get conflicts) + # 1. convert to product-of-sums. + # 2. for each product, find the positive terms. These are the conflicts + # 3. for each product, find the negative terms. These are the "conditions" when the positive terms apply + + @conflicts ||= begin + conflicts = T.let([], T::Array[ConditionalExtensionRequirement]) + pos = LogicNode.new(LogicNodeType::Not, [to_logic_tree(expand:)]).minimize(LogicNode::CanonicalizationType::ProductOfSums) + puts pos + if pos.type == LogicNodeType::Term + # there are no negative terms, do nothing + elsif pos.type == LogicNodeType::Not + single_term = pos.node_children.fetch(0).children.fetch(0) + if single_term.is_a?(ExtensionTerm) + conflicts << \ + ConditionalExtensionRequirement.new( + ext_req: single_term.to_ext_req(@cfg_arch), + cond: Condition::True + ) + else + # parameter, do nothing + end + elsif pos.type == LogicNodeType::And + pos.children.each do |child| + child = T.cast(child, LogicNode) + if child.type == LogicNodeType::Term + # not a negative term; do nothing + elsif child.type == LogicNodeType::Not + term = child.node_children.fetch(0).children.fetch(0) + if term.is_a?(ExtensionTerm) + conflicts << \ + ConditionalExtensionRequirement.new( + ext_req: term.to_ext_req(@cfg_arch), + cond: AlwaysTrueCondition.new + ) + else + puts "Not a term: #{term} #{term.class.name}" + end + elsif child.children.all? { |child| T.cast(child, LogicNode).type == LogicNodeType::Term } + # there is no negative term, so do nothing + else + raise "? #{child.type}" unless child.type == LogicNodeType::Or + + negative_terms = + child.node_children.select do |and_child| + and_child.type == LogicNodeType::Not && and_child.node_children.fetch(0).children.fetch(0).is_a?(ExtensionTerm) + end.map { |n| n.node_children.fetch(0) } + cond_terms = + child.node_children.select { |and_child| and_child.type == LogicNodeType::Term } + negative_terms.each do |nterm| + cond_node = + if cond_terms.empty? + LogicNode::True + else + cond_terms.size == 1 \ + ? cond_terms.fetch(0) + : LogicNode.new(LogicNodeType::Or, cond_terms) + end + + conflicts << \ + ConditionalExtensionRequirement.new( + ext_req: T.cast(nterm.children.fetch(0), ExtensionTerm).to_ext_req(@cfg_arch), + cond: Condition.new(cond_node.to_h, @cfg_arch) + ) + end + conflicts + end + end + end + puts conflicts.map { |c| c.ext_req.name } unless conflicts.empty? + conflicts + end + end + + ################################################################### + # + # The following functions can be used to programatically build conditions from + # other conditions, e.g.,: + # + # Condition.not( + # Condition.conjunction([cond1, cond1], cfg_arch), + # cfg_arch + # ) + ################################################################### + + # return a new Condition that the logical AND of conditions + sig { + params( + conditions: T::Array[AbstractCondition], + cfg_arch: ConfiguredArchitecture, + ) + .returns(AbstractCondition) + } + def self.conjunction(conditions, cfg_arch) + if conditions.empty? + AlwaysFalseCondition.new + elsif conditions.size == 1 + conditions.fetch(0) + else + Condition.new( + LogicNode.new( + LogicNodeType::And, + conditions.map { |c| c.to_logic_tree_internal(expand: false, expanded_ext_vers: {}) } + ).to_h, + cfg_arch + ) + end + end + + # return a new Condition that the logical OR of conditions + sig { + params( + conditions: T::Array[AbstractCondition], + cfg_arch: ConfiguredArchitecture, + ) + .returns(AbstractCondition) + } + def self.disjunction(conditions, cfg_arch) + if conditions.empty? + AlwaysFalseCondition.new + elsif conditions.size == 1 + conditions.fetch(0) + else + Condition.new( + LogicNode.new( + LogicNodeType::Or, + conditions.map { |c| c.to_logic_tree_internal(expand: false, expanded_ext_vers: {}) } + ).to_h, + cfg_arch + ) + end + end + + sig { + params( + condition: AbstractCondition, + cfg_arch: ConfiguredArchitecture + ) + .returns(AbstractCondition) + } + def self.not(condition, cfg_arch) + if condition.is_a?(AlwaysFalseCondition) + AlwaysTrueCondition.new + elsif condition.is_a?(AlwaysTrueCondition) + AlwaysFalseCondition.new + else + Condition.new( + LogicNode.new( + LogicNodeType::Not, + [condition.to_logic_tree_internal(expand: false, expanded_ext_vers: {})] + ).to_h, + cfg_arch + ) + end + end + end + + class LogicCondition < Condition + + sig { params(logic_node: LogicNode, cfg_arch: ConfiguredArchitecture).void } + def initialize(logic_node, cfg_arch) + @logic_node = logic_node + @cfg_arch = cfg_arch + end + + sig { override.returns(T::Boolean) } + def empty? = @logic_node.type == LogicNodeType::True || @logic_node.type == LogicNodeType::False + + sig { override.params(expand: T::Boolean, expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)]).returns(LogicNode) } + def to_logic_tree_internal(expand:, expanded_ext_vers:) + if expand + @expanded_logic_node ||= + expand_ext_vers_in_logic_tree(@logic_node, expanded_ext_vers:) + end + + @logic_node + end + end + + class AlwaysTrueCondition < AbstractCondition + extend T::Sig + + sig { override.returns(T::Boolean) } + def empty? = true + + sig { override.params(expand: T::Boolean).returns(LogicNode) } + def to_logic_tree(expand:) + LogicNode::True + end + + # @api private + sig { + override + .params(expand: T::Boolean, expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)]) + .returns(LogicNode) + } + def to_logic_tree_internal(expand:, expanded_ext_vers:) + LogicNode::True + end + + sig { override.params(_other: T.untyped).returns(T::Boolean) } + def compatible?(_other) = true + + sig { override.returns(T.any(T::Hash[String, T.untyped], T::Boolean)) } + def to_h + true + end + + sig { override.params(_cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) } + def satisfied_by_cfg_arch?(_cfg_arch) = SatisfiedResult::Yes + + sig { override.params(cfg_arch: ConfiguredArchitecture, expand: T::Boolean).returns(AbstractCondition) } + def partially_evaluate_for_params(cfg_arch, expand:) = self + + sig { override.params(ext_req: ExtensionRequirement).returns(T::Boolean) } + def satisfiability_depends_on_ext_req?(ext_req) = false + + sig { override.returns(T::Boolean) } + def has_extension_requirement? = false + + sig { override.returns(AbstractCondition) } + def minimize = self + + sig { override.returns(T::Boolean) } + def has_param? = false + + sig { override.params(cfg_arch: ConfiguredArchitecture).returns(String) } + def to_idl(cfg_arch) = "-> true;" + + sig { override.returns(String) } + def to_s = "true" + + sig { override.returns(String) } + def to_s_pretty + "always" + end + + sig { override.returns(String) } + def to_asciidoc = "true" + + sig { override.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) } + def implied_extension_requirements(expand: true) = [] + + sig { override.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) } + def implied_extension_conflicts(expand: true) = [] + end + + class AlwaysFalseCondition < AbstractCondition + extend T::Sig + + sig { override.returns(T::Boolean) } + def empty? = true + + sig { override.params(expand: T::Boolean).returns(LogicNode) } + def to_logic_tree(expand:) + LogicNode::False + end + + sig { + override + .params(expand: T::Boolean, expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)]) + .returns(LogicNode) + } + def to_logic_tree_internal(expand:, expanded_ext_vers:) + LogicNode::False + end + + sig { override.params(_other: T.untyped).returns(T::Boolean) } + def compatible?(_other) = false + + sig { override.returns(T.any(T::Hash[String, T.untyped], T::Boolean)) } + def to_h + false + end + + sig { override.params(_cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) } + def satisfied_by_cfg_arch?(_cfg_arch) = SatisfiedResult::No + + sig { override.params(cfg_arch: ConfiguredArchitecture, expand: T::Boolean).returns(AbstractCondition) } + def partially_evaluate_for_params(cfg_arch, expand:) = self + + sig { override.params(ext_req: ExtensionRequirement).returns(T::Boolean) } + def satisfiability_depends_on_ext_req?(ext_req) = false + + sig { override.returns(T::Boolean) } + def has_extension_requirement? = false + + sig { override.returns(AbstractCondition) } + def minimize = self + + sig { override.returns(T::Boolean) } + def has_param? = false + + sig { override.params(cfg_arch: ConfiguredArchitecture).returns(String) } + def to_idl(cfg_arch) = "-> false;" + + sig { override.returns(String) } + def to_s = "false" + + sig { override.returns(String) } + def to_s_pretty + "never" + end + + sig { override.returns(String) } + def to_asciidoc = "false" + + sig { override.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) } + def implied_extension_requirements(expand: true) = [] + + sig { override.params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) } + def implied_extension_conflicts(expand: true) = [] + end + + class Condition + True = AlwaysTrueCondition.new.freeze + False = AlwaysFalseCondition.new.freeze + end + + class ParamCondition < Condition + extend T::Sig + + sig { params(yaml: T::Hash[String, T.untyped], cfg_arch: ConfiguredArchitecture).void } + def initialize(yaml, cfg_arch) + super(yaml, cfg_arch) + end + + sig { + params( + yaml: T.any(TrueClass, FalseClass, T::Hash[String, T.untyped]), + expand: T::Boolean, + expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)] + ) + .returns(LogicNode) + } + def to_param_logic_tree_helper(yaml, expand:, expanded_ext_vers:) + if yaml == true + LogicNode::True + elsif yaml == false + LogicNode::False + elsif yaml.key?("name") + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new(yaml)]) + elsif yaml.key?("allOf") + LogicNode.new(LogicNodeType::And, yaml.fetch("allOf").map { |y| to_param_logic_tree_helper(y, expand:, expanded_ext_vers:) }) + elsif yaml.key?("anyOf") + LogicNode.new(LogicNodeType::Or, yaml.fetch("anyOf").map { |y| to_param_logic_tree_helper(y, expand:, expanded_ext_vers:) }) + elsif yaml.key?("oneOf") + LogicNode.new(LogicNodeType::Xor, yaml.fetch("oneOf").map { |y| to_param_logic_tree_helper(y, expand:, expanded_ext_vers:) }) + elsif yaml.key?("noneOf") + LogicNode.new(LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Or, yaml.fetch("noneOf").map { |y| to_param_logic_tree_helper(y, expand:, expanded_ext_vers:) }) + ] + ) + elsif yaml.key?("not") + LogicNode.new(LogicNodeType::Not, [to_param_logic_tree_helper(yaml.fetch("not"), expand:, expanded_ext_vers:)]) + elsif yaml.key?("if") + LogicNode.new(LogicNodeType::If, + [ + Condition.new(yaml.fetch("if"), @cfg_arch).to_logic_tree_internal(expand:, expanded_ext_vers:), + to_param_logic_tree_helper(yaml.fetch("then"), expand:, expanded_ext_vers:) + ] + ) + + else + raise "unexpected key #{yaml.keys}" + end + end + + sig { + override + .params(expand: T::Boolean, expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)]) + .returns(LogicNode) + } + def to_logic_tree_internal(expand:, expanded_ext_vers:) + if expand + # can't memoize expansion, otherwise we'll miss the expansions! + to_param_logic_tree_helper(@yaml, expand:, expanded_ext_vers:) + else + @logic_tree ||= to_param_logic_tree_helper(@yaml, expand:, expanded_ext_vers:) + end + end + end + + class ExtensionCondition < Condition + extend T::Sig + + sig { params(yaml: T::Hash[String, T.untyped], cfg_arch: ConfiguredArchitecture).void } + def initialize(yaml, cfg_arch) + super(yaml, cfg_arch) + end + + sig { override.params(expand: T::Boolean, expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)]).returns(LogicNode) } + def to_logic_tree_internal(expand:, expanded_ext_vers:) + if expand + # can't memoize expansion, otherwise we'll miss the expansions! + to_logic_tree_helper(@yaml, expand:, expanded_ext_vers:) + else + @unexpanded_logic_tree ||= to_logic_tree_helper(@yaml, expand:, expanded_ext_vers:) + end + end + + # convert an ExtensionRequirement into a logic tree + # if expand is true, also add requirements of the extension and all satisfing versions to the tree + sig { + params( + yaml: T::Hash[String, T.untyped], + cfg_arch: ConfiguredArchitecture, + expand: T::Boolean, + expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)] + ).returns(LogicNode) + } + def ext_req_to_logic_node(yaml, cfg_arch, expand:, expanded_ext_vers:) + ext_req = ExtensionRequirement.create(yaml, cfg_arch) + + if !expand + LogicNode.new(LogicNodeType::Term, [ext_req.to_term]) + else + # to expand, we have to split the req into versions and apply version-specific requirements + # to avoid an infinite loop when an extension appears more than once, we also need to track + # which expansions have already occurred. + # + # (C) + # + # C -> Zca && (!D || Zcd) && (!F || Zcf) + # Zca -> (((!D || Zcd) && (!F || Zcf)) -> C) + + # any of the satisfying versions will do + ext_req_cond = + if ext_req.satisfying_versions.empty? + LogicNode::False + elsif ext_req.satisfying_versions.size == 1 + # we've just expanded...don't need to again! + ext_req.satisfying_versions.fetch(0).to_condition.to_logic_tree_internal(expand: false, expanded_ext_vers:) + else + LogicNode.new( + LogicNodeType::Or, + ext_req.satisfying_versions.map do |ext_ver| + # we've just expanded...don't need to again! + ext_ver.to_condition.to_logic_tree_internal(expand: false, expanded_ext_vers:) + end + ) + end + + expand_ext_vers_in_logic_tree(ext_req_cond, expanded_ext_vers:) + + ext_req_cond + end + end + private :ext_req_to_logic_node + + sig { + override + .params( + yaml: T.any(T::Hash[String, T.untyped], T::Boolean), + expand: T::Boolean, + expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)] + ) + .returns(LogicNode) + } + def to_logic_tree_helper(yaml, expand:, expanded_ext_vers:) + if !yaml.is_a?(Hash) + if yaml == true + LogicNode::True + elsif yaml == false + LogicNode::False + else + T.absurd(yaml) + end + else + if yaml.key?("allOf") + LogicNode.new(LogicNodeType::And, yaml["allOf"].map { |node| to_logic_tree_helper(node, expand:, expanded_ext_vers:) }) + elsif yaml.key?("anyOf") + LogicNode.new(LogicNodeType::Or, yaml["anyOf"].map { |node| to_logic_tree_helper(node, expand:, expanded_ext_vers:) }) + elsif yaml.key?("noneOf") + LogicNode.new(LogicNodeType::Or, yaml["noneOf"].map { |node| to_logic_tree_helper(node, expand:, expanded_ext_vers:) }) + elsif yaml.key?("oneOf") + LogicNode.new(LogicNodeType::Xor, yaml["oneOf"].map { |node| to_logic_tree_helper(node, expand:, expanded_ext_vers:) }) + elsif yaml.key?("not") + LogicNode.new(LogicNodeType::Not, [to_logic_tree_helper(yaml.fetch("not"), expand:, expanded_ext_vers:)]) + elsif yaml.key?("if") + LogicNode.new( + LogicNodeType::If, + [ + Condition.new(yaml.fetch("if"), @cfg_arch, input_file: @input_file, input_line: @input_line) + .to_logic_tree_internal(expand:, expanded_ext_vers:), + to_logic_tree_helper(yaml.fetch("then"), expand:, expanded_ext_vers:) + ] + ) + elsif yaml.key?("name") + ext_req_to_logic_node(yaml, @cfg_arch, expand:, expanded_ext_vers:) + else + raise "unexpected key #{yaml.keys}" + end + end + end + private :to_logic_tree_helper + end + + class IdlCondition < Condition + + sig { returns(String) } + def reason = T.cast(@yaml, T::Hash[String, T.untyped]).fetch("reason") + + sig { + params( + yaml: T::Hash[String, T.untyped], + cfg_arch: ConfiguredArchitecture, + input_file: T.nilable(Pathname), + input_line: T.nilable(Integer) + ) + .void + } + def initialize(yaml, cfg_arch, input_file:, input_line:) + super(yaml, cfg_arch, input_file:, input_line:) + + raise "missing required key" unless T.cast(@yaml, T::Hash[String, T.untyped]).key?("idl()") + end + + sig { returns(Constraint) } + def constraint + @constraint ||= Constraint.new( + T.cast(@yaml, T::Hash[String, T.untyped]).fetch("idl()"), + input_file: @input_file, + input_line: @input_line, + cfg_arch: @cfg_arch + ) + end + + sig { override.params(expand: T::Boolean, expanded_ext_vers: T::Hash[ExtensionVersion, T.any(Symbol, LogicNode)]).returns(LogicNode) } + def to_logic_tree_internal(expand:, expanded_ext_vers:) + if expand + constraint.to_logic_tree_internal(expand:, expanded_ext_vers:) + else + @logic_tree = constraint.to_logic_tree_internal(expand:, expanded_ext_vers:) + end + end + + sig { override.returns(T.any(T::Hash[String, T.untyped], T::Boolean)) } + def to_h = constraint.to_h + + sig { override.params(cfg_arch: ConfiguredArchitecture).returns(String) } + def to_idl(cfg_arch) = T.cast(@yaml, T::Hash[String, T.untyped]).fetch("idl()") + + end + + # represents a `requires:` entry for an extension version + # something is implied if it points to a single extension version, e.g.: + # + # requires: + # extension: + # name: A + # version: = 1.0.0 # <- this is an implication + # + # The list of implied extensions can be conditional, for example: + # + # requires: + # extension: + # allOf: + # - name: Zca + # version: "1.0.0" + # - if: + # extension: + # name: F + # version: ~> 2.2 + # then: + # name: Zcf + # version: "1.0.0" + # - if: + # extension: + # name: D + # version: ~> 2.2 + # then: + # name: Zcd + # version: "1.0.0" + # + + + # a conditional list of extension requirements + class ExtensionRequirementList + extend T::Sig + + class ParseState < T::Enum + enums do + Condition = new + ExtensionCondition = new + end + end + + sig { params(yaml: T::Hash[String, T.untyped], cfg_arch: ConfiguredArchitecture).void } + def initialize(yaml, cfg_arch) + @yaml = yaml + @cfg_arch = cfg_arch + @list = T.let(nil, T.nilable(T::Array[ConditionalExtensionRequirement])) + @implied_extension_versions = T.let(nil, T.nilable(T::Array[ConditionalExtensionVersion])) + end + + sig { params(yaml: T::Hash[String, T.untyped]).returns(ConditionalExtensionRequirement) } + def make_cond_ext_req(yaml) + ext_req = ExtensionRequirement.create(yaml, @cfg_arch) + cond = + if yaml.key?("when") + Condition.new(yaml.fetch("when"), @cfg_arch) + else + AlwaysTrueCondition.new + end + ConditionalExtensionRequirement.new(ext_req:, cond:) + end + + sig { params(yaml: T::Hash[String, T.untyped], l: T::Array[ConditionalExtensionRequirement]).void } + def do_list(yaml, l) + if yaml.key?("name") + l << make_cond_ext_req(yaml) + elsif yaml.key?("allOf") + yaml.fetch("allOf").each { |item| do_list(item, l) } + else + raise "unexpected key #{yaml.keys}" + end + end + + sig { returns(T::Array[ConditionalExtensionRequirement]) } + def list + return @list unless @list.nil? + + @list = [] + do_list(@yaml, @list) + @list + end + + sig { returns(T::Array[ConditionalExtensionVersion]) } + def implied_extension_versions + return @implied_extension_versions unless @implied_extension_versions.nil? + + @implied_extension_versions = [] + list.each do |cond_ext_req| + ext_req = cond_ext_req.ext_req + if (ext_req.requirement_specs.size == 1) && (ext_req.requirement_specs.fetch(0).op == "=") + ext_ver = ext_req.satisfying_versions.fetch(0) + @implied_extension_versions << ConditionalExtensionVersion.new(ext_ver:, cond: cond_ext_req.cond) + end + end + @implied_extension_versions + end + end +end diff --git a/tools/ruby-gems/udb/lib/udb/config.rb b/tools/ruby-gems/udb/lib/udb/config.rb index 6170c1dc1f..62b3c398e0 100644 --- a/tools/ruby-gems/udb/lib/udb/config.rb +++ b/tools/ruby-gems/udb/lib/udb/config.rb @@ -25,305 +25,308 @@ class ConfigType < T::Enum # There are child classes derived from AbstractConfig to handle: # - Configurations specified by YAML files in the /cfg directory # - Configurations specified by portfolio groups (certificates and profile releases) -class AbstractConfig - extend T::Sig - extend T::Helpers - abstract! - - ParamValueType = T.type_alias { T.any(Integer, String, T::Boolean) } - - #################### - # ABSTRACT METHODS # - #################### - - # @return [Hash] A hash mapping parameter name to value for any parameter that has - # been configured with a value. May be empty. - sig { abstract.returns(T::Hash[String, ParamValueType]) } - def param_values; end - - # @return [Boolean] Is an overlay present? - sig { returns(T::Boolean) } - def overlay? = !(@data["arch_overlay"].nil? || @data["arch_overlay"].empty?) - - # @return [String] Either a path to an overlay directory, or the name of a folder under arch_overlay/ - # @return [nil] No arch_overlay for this config - sig { returns(T.nilable(String)) } - def arch_overlay = @data["arch_overlay"] - - # @return Absolute path to the arch_overlay - # @return No arch_overlay for this config - sig { returns(T.nilable(Pathname)) } - def arch_overlay_abs - @info.overlay_path - end + class AbstractConfig + extend T::Sig + extend T::Helpers + abstract! + + ParamValueType = T.type_alias { T.any(Integer, String, T::Boolean, T::Array[Integer], T::Array[String], T::Array[T::Boolean]) } + + #################### + # ABSTRACT METHODS # + #################### + + # @return [Hash] A hash mapping parameter name to value for any parameter that has + # been configured with a value. May be empty. + sig { abstract.returns(T::Hash[String, ParamValueType]) } + def param_values; end + + # @return [Boolean] Is an overlay present? + sig { returns(T::Boolean) } + def overlay? = !(@data["arch_overlay"].nil? || @data["arch_overlay"].empty?) + + # @return [String] Either a path to an overlay directory, or the name of a folder under arch_overlay/ + # @return [nil] No arch_overlay for this config + sig { returns(T.nilable(String)) } + def arch_overlay = @data["arch_overlay"] + + # @return Absolute path to the arch_overlay + # @return No arch_overlay for this config + sig { returns(T.nilable(Pathname)) } + def arch_overlay_abs + @info.overlay_path + end - sig { returns(Resolver::ConfigInfo) } - attr_reader :info + sig { returns(Resolver::ConfigInfo) } + attr_reader :info - sig { abstract.returns(T.nilable(Integer)) } - def mxlen; end + sig { returns(String) } + def description = @data["description"] - sig { abstract.returns(T::Boolean) } - def fully_configured?; end + sig { abstract.returns(T.nilable(Integer)) } + def mxlen; end - sig { abstract.returns(T::Boolean) } - def partially_configured?; end + sig { abstract.returns(T::Boolean) } + def fully_configured?; end - sig { abstract.returns(T::Boolean) } - def unconfigured?; end + sig { abstract.returns(T::Boolean) } + def partially_configured?; end - ######################## - # NON-ABSTRACT METHODS # - ######################## + sig { abstract.returns(T::Boolean) } + def unconfigured?; end - # use AbstractConfig#create instead - private_class_method :new + ######################## + # NON-ABSTRACT METHODS # + ######################## - sig { params(data: T::Hash[String, T.untyped], info: Resolver::ConfigInfo).void } - def initialize(data, info) - @data = data - @info = info - @name = @data.fetch("name") - @name.freeze - @type = ConfigType.deserialize(T.cast(@data.fetch("type"), String)) - @type.freeze - end + # use AbstractConfig#create instead + private_class_method :new + + sig { params(data: T::Hash[String, T.untyped], info: Resolver::ConfigInfo).void } + def initialize(data, info) + @data = data + @info = info + @name = @data.fetch("name") + @name.freeze + @type = ConfigType.deserialize(T.cast(@data.fetch("type"), String)) + @type.freeze + end - sig { returns(ConfigType) } - attr_reader :type + sig { returns(ConfigType) } + attr_reader :type - sig { returns(String) } - def name = @name + sig { returns(String) } + def name = @name - sig { returns(T::Boolean) } - def configured? = !unconfigured? + sig { returns(T::Boolean) } + def configured? = !unconfigured? - sig { params(obj: T.untyped).returns(T.untyped) } - def self.freeze_data(obj) - if obj.is_a?(Hash) - obj.each do |k, v| - obj[k] = freeze_data(v) + sig { params(obj: T.untyped).returns(T.untyped) } + def self.freeze_data(obj) + if obj.is_a?(Hash) + obj.each do |k, v| + obj[k] = freeze_data(v) + end + elsif obj.is_a?(Array) + obj.each { |v| freeze_data(v) } end - elsif obj.is_a?(Array) - obj.each { |v| freeze_data(v) } - end - obj.freeze - end - private_class_method :freeze_data - - # Factory method to create a FullConfig, PartialConfig, or UnConfig based - # on the contents of cfg_file_path_or_portfolio_grp - # - # @return [AbstractConfig] A new AbstractConfig object - sig { params(cfg_file_path_or_portfolio_grp: T.any(Pathname, PortfolioGroup), info: Resolver::ConfigInfo).returns(AbstractConfig) } - def self.create(cfg_file_path_or_portfolio_grp, info) - if cfg_file_path_or_portfolio_grp.is_a?(Pathname) - cfg_file_path = T.cast(cfg_file_path_or_portfolio_grp, Pathname) - raise ArgumentError, "Cannot find #{cfg_file_path}" unless cfg_file_path.exist? - - data = ::YAML.load_file(cfg_file_path) - - # now deep freeze the data - freeze_data(data) - - case data["type"] - when "fully configured" - FullConfig.send(:new, data, info) - when "partially configured" + obj.freeze + end + private_class_method :freeze_data + + # Factory method to create a FullConfig, PartialConfig, or UnConfig based + # on the contents of cfg_file_path_or_portfolio_grp + # + # @return [AbstractConfig] A new AbstractConfig object + sig { params(cfg_file_path_or_portfolio_grp: T.any(Pathname, PortfolioGroup), info: Resolver::ConfigInfo).returns(AbstractConfig) } + def self.create(cfg_file_path_or_portfolio_grp, info) + if cfg_file_path_or_portfolio_grp.is_a?(Pathname) + cfg_file_path = T.cast(cfg_file_path_or_portfolio_grp, Pathname) + raise ArgumentError, "Cannot find #{cfg_file_path}" unless cfg_file_path.exist? + + data = ::YAML.load_file(cfg_file_path) + + # now deep freeze the data + freeze_data(data) + + case data["type"] + when "fully configured" + FullConfig.send(:new, data, info) + when "partially configured" + PartialConfig.send(:new, data, info) + when "unconfigured" + UnConfig.send(:new, data, info) + else + raise "Unexpected type (#{data['type']}) in config" + end + elsif cfg_file_path_or_portfolio_grp.is_a?(PortfolioGroup) + portfolio_grp = T.cast(cfg_file_path_or_portfolio_grp, PortfolioGroup) + data = { + "$schema" => "config_schema.json#", + "kind" => "architecture configuration", + "type" => "partially configured", + "name" => portfolio_grp.name, + "description" => "Partial config construction from Portfolio Group #{portfolio_grp.name}", + "params" => portfolio_grp.param_values, + "mandatory_extensions" => portfolio_grp.mandatory_ext_reqs.map do |ext_req| + { + "name" => ext_req.name, + "version" => ext_req.requirement_specs.map(&:to_s) + } + end + } + data.fetch("params")["MXLEN"] = portfolio_grp.max_base + freeze_data(data) PartialConfig.send(:new, data, info) - when "unconfigured" - UnConfig.send(:new, data, info) else - raise "Unexpected type (#{data['type']}) in config" + T.absurd(cfg_file_path_or_portfolio_grp) end - elsif cfg_file_path_or_portfolio_grp.is_a?(PortfolioGroup) - portfolio_grp = T.cast(cfg_file_path_or_portfolio_grp, PortfolioGroup) - data = { - "$schema" => "config_schema.json#", - "kind" => "architecture configuration", - "type" => "partially configured", - "name" => portfolio_grp.name, - "description" => "Partial config construction from Portfolio Group #{portfolio_grp.name}", - "params" => portfolio_grp.param_values, - "mandatory_extensions" => portfolio_grp.mandatory_ext_reqs.map do |ext_req| - { - "name" => ext_req.name, - "version" => ext_req.requirement_specs.map(&:to_s) - } - end - } - data.fetch("params")["MXLEN"] = portfolio_grp.max_base - freeze_data(data) - PartialConfig.send(:new, data, info) - else - T.absurd(cfg_file_path_or_portfolio_grp) end end -end -################################################################# -# This class represents a configuration that is "unconfigured". # -# It doesn't know anything about extensions or parameters. # -################################################################# -class UnConfig < AbstractConfig - ######################## - # NON-ABSTRACT METHODS # - ######################## + ################################################################# + # This class represents a configuration that is "unconfigured". # + # It doesn't know anything about extensions or parameters. # + ################################################################# + class UnConfig < AbstractConfig + ######################## + # NON-ABSTRACT METHODS # + ######################## - sig { params(data: T::Hash[String, T.untyped], info: Resolver::ConfigInfo).void } - def initialize(data, info) - super(data, info) + sig { params(data: T::Hash[String, T.untyped], info: Resolver::ConfigInfo).void } + def initialize(data, info) + super(data, info) - @param_values = {}.freeze - end + @param_values = {}.freeze + end - ############################### - # ABSTRACT METHODS OVERRIDDEN # - ############################### + ############################### + # ABSTRACT METHODS OVERRIDDEN # + ############################### - sig { override.returns(T::Hash[String, ParamValueType]) } - def param_values = @param_values + sig { override.returns(T::Hash[String, ParamValueType]) } + def param_values = @param_values - sig { override.returns(NilClass) } - def mxlen = nil + sig { override.returns(NilClass) } + def mxlen = nil - sig { override.returns(T::Boolean) } - def fully_configured? = false + sig { override.returns(T::Boolean) } + def fully_configured? = false - sig { override.returns(T::Boolean) } - def partially_configured? = false + sig { override.returns(T::Boolean) } + def partially_configured? = false - sig { override.returns(T::Boolean) } - def unconfigured? = true -end + sig { override.returns(T::Boolean) } + def unconfigured? = true + end ############################################################################################################## # This class represents a configuration that is "partially-configured" (e.g., portfolio or configurable IP). # # It only lists mandatory & prohibited extensions and fully-constrained parameters (single value). ############################################################################################################## -class PartialConfig < AbstractConfig - ######################## - # NON-ABSTRACT METHODS # - ######################## + class PartialConfig < AbstractConfig + ######################## + # NON-ABSTRACT METHODS # + ######################## - sig { params(data: T::Hash[String, T.untyped], info: Resolver::ConfigInfo).void } - def initialize(data, info) - super(data, info) + sig { params(data: T::Hash[String, T.untyped], info: Resolver::ConfigInfo).void } + def initialize(data, info) + super(data, info) - @param_values = @data.key?("params") ? @data["params"] : [].freeze + @param_values = @data.key?("params") ? @data["params"] : [].freeze - @mxlen = @data.dig("params", "MXLEN") - if @mxlen.nil? - raise "Must set MXLEN for a configured config" - end + @mxlen = @data.dig("params", "MXLEN") + if @mxlen.nil? + raise "Must set MXLEN for a configured config" + end - @mxlen.freeze - end + @mxlen.freeze + end - ############################### - # ABSTRACT METHODS OVERRIDDEN # - ############################### + ############################### + # ABSTRACT METHODS OVERRIDDEN # + ############################### - sig { override.returns(T::Hash[String, ParamValueType]) } - def param_values = @param_values + sig { override.returns(T::Hash[String, ParamValueType]) } + def param_values = @param_values - sig { override.returns(Integer) } - def mxlen = @mxlen + sig { override.returns(Integer) } + def mxlen = @mxlen - sig { override.returns(T::Boolean) } - def fully_configured? = false + sig { override.returns(T::Boolean) } + def fully_configured? = false - sig { override.returns(T::Boolean) } - def partially_configured? = true + sig { override.returns(T::Boolean) } + def partially_configured? = true - sig { override.returns(T::Boolean) } - def unconfigured? = false + sig { override.returns(T::Boolean) } + def unconfigured? = false - sig { returns(T::Array[T::Hash[String, T.any(String, T::Array[String])]]) } - def mandatory_extensions - @mandatory_extensions ||= - if @data["mandatory_extensions"].nil? - [] - else - @data["mandatory_extensions"].map do |e| - # convert the requirement to always be an array - { "name" => e["name"], "version" => e["version"].is_a?(String) ? [e["version"]] : e["version"]} + sig { returns(T::Array[T::Hash[String, T.any(String, T::Array[String])]]) } + def mandatory_extensions + @mandatory_extensions ||= + if @data["mandatory_extensions"].nil? + [] + else + @data["mandatory_extensions"].map do |e| + # convert the requirement to always be an array + { "name" => e["name"], "version" => e["version"].is_a?(String) ? [e["version"]] : e["version"] } + end end - end - end + end - sig { returns(T::Array[T::Hash[String, T.any(String, T::Array[String])]]) } - def prohibited_extensions - @prohibited_extensions ||= - if @data["prohibited_extensions"].nil? - [] - else - @data["prohibited_extensions"].map do |e| - # convert the requirement to always be an array - { "name" => e["name"], "version" => e["version"].is_a?(String) ? [e["version"]] : e["version"]} + sig { returns(T::Array[T::Hash[String, T.any(String, T::Array[String])]]) } + def prohibited_extensions + @prohibited_extensions ||= + if @data["prohibited_extensions"].nil? + [] + else + @data["prohibited_extensions"].map do |e| + # convert the requirement to always be an array + { "name" => e["name"], "version" => e["version"].is_a?(String) ? [e["version"]] : e["version"] } + end end - end - end - - # Whether or not a compliant instance of this partial config can have more extensions than those listed - # in mandatory_extensions/non_mandatory_extensions. - sig { returns(T::Boolean) } - def additional_extensions_allowed? = @data.key?("additional_extensions") ? @data["additional_extensions"] : true -end - -################################################################################################################ -# This class represents a configuration that is "fully-configured" (e.g., SoC tapeout or fully-configured IP). # -# It has a complete list of extensions and parameters (all are a single value at this point). # -################################################################################################################ -class FullConfig < AbstractConfig - ######################## - # NON-ABSTRACT METHODS # - ######################## - - sig { params(data: T::Hash[String, T.untyped], info: Resolver::ConfigInfo).void } - def initialize(data, info) - super(data, info) - - @param_values = @data["params"] + end - @mxlen = @data.dig("params", "MXLEN").freeze - raise "Must set MXLEN for a configured config" if @mxlen.nil? + # Whether or not a compliant instance of this partial config can have more extensions than those listed + # in mandatory_extensions/non_mandatory_extensions. + sig { returns(T::Boolean) } + def additional_extensions_allowed? = @data.key?("additional_extensions") ? @data["additional_extensions"] : true end - ############################### - # ABSTRACT METHODS OVERRIDDEN # - ############################### - - sig { override.returns(T::Hash[String, ParamValueType]) } - def param_values = @param_values - - sig { override.returns(Integer) } - def mxlen = @mxlen + ################################################################################################################ + # This class represents a configuration that is "fully-configured" (e.g., SoC tapeout or fully-configured IP). # + # It has a complete list of extensions and parameters (all are a single value at this point). # + ################################################################################################################ + class FullConfig < AbstractConfig + ######################## + # NON-ABSTRACT METHODS # + ######################## - sig { override.returns(T::Boolean) } - def fully_configured? = true + sig { params(data: T::Hash[String, T.untyped], info: Resolver::ConfigInfo).void } + def initialize(data, info) + super(data, info) - sig { override.returns(T::Boolean) } - def partially_configured? = false + @param_values = @data["params"] - sig { override.returns(T::Boolean) } - def unconfigured? = false + @mxlen = @data.dig("params", "MXLEN").freeze + raise "Must set MXLEN for a configured config" if @mxlen.nil? + end - sig { returns(T::Array[T::Hash[String, String]]) } - def implemented_extensions - @implemented_extensions ||= - if @data["implemented_extensions"].nil? - [] - else - @data["implemented_extensions"].map do |e| - if e.is_a?(Array) - { "name" => e[0], "version" => e[1] } - else - e + ############################### + # ABSTRACT METHODS OVERRIDDEN # + ############################### + + sig { override.returns(T::Hash[String, ParamValueType]) } + def param_values = @param_values + + sig { override.returns(Integer) } + def mxlen = @mxlen + + sig { override.returns(T::Boolean) } + def fully_configured? = true + + sig { override.returns(T::Boolean) } + def partially_configured? = false + + sig { override.returns(T::Boolean) } + def unconfigured? = false + + sig { returns(T::Array[T::Hash[String, String]]) } + def implemented_extensions + @implemented_extensions ||= + if @data["implemented_extensions"].nil? + [] + else + @data["implemented_extensions"].map do |e| + if e.is_a?(Array) + { "name" => e[0], "version" => e[1] } + elsif e.is_a?(Hash) + { "name" => e.fetch("name"), "version" => RequirementSpec.new(e.fetch("version")).version_spec.to_s } + end end end - end + end end end -end diff --git a/tools/ruby-gems/udb/lib/udb/eqn_parser.rb b/tools/ruby-gems/udb/lib/udb/eqn_parser.rb new file mode 100644 index 0000000000..525c04c770 --- /dev/null +++ b/tools/ruby-gems/udb/lib/udb/eqn_parser.rb @@ -0,0 +1,188 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: true +# frozen_string_literal: true + +# parses an equation from the `eqntott`/`espresso` tools + +require "sorbet-runtime" +require "treetop" + +module Udb + + class LogicNode; end + + # parses the equation format from `eqntott` / `espresso` and converts it to a LogicNode + class Eqn + + EQN_GRAMMAR = <<~GRAMMAR + grammar Eqn + rule eqn + expression space* ';' space* + end + + rule name + [a-zA-Z_] [a-zA-Z0-9.]* + end + + rule zero + 'ZERO' / '0' + end + + rule one + 'ONE' / '1' + end + + rule paren + '(' space* ')' + / + '(' space* conjunction space* ')' + end + + rule not + '!' space* name + end + + rule unary_expression + paren / not / zero / one / name + end + + rule conjunction + first:unary_expression r:(space* '&' space* unary_expression)+ + / + unary_expression + end + + rule disjunction + first:conjunction r:(space* '|' space* conjunction)+ + / + conjunction + end + + rule expression + (space* disjunction space*) + { + def to_logic_tree(term_map) + disjunction.to_logic_tree(term_map) + end + } + end + + rule space + [ \n] + end + end + GRAMMAR + + class EqnTop < Treetop::Runtime::SyntaxNode + extend T::Sig + sig { params(term_map: T::Hash[String, TermType]).returns(LogicNode) } + def to_logic_tree(term_map) + send(:expression).to_logic_tree(term_map) + end + end + + class EqnName < Treetop::Runtime::SyntaxNode + extend T::Sig + sig { params(term_map: T::Hash[String, TermType]).returns(LogicNode) } + def to_logic_tree(term_map) + term = term_map.fetch(text_value) + LogicNode.new( + LogicNodeType::Term, + [term] + ) + end + end + + class EqnOne < Treetop::Runtime::SyntaxNode + extend T::Sig + sig { params(term_map: T::Hash[String, TermType]).returns(LogicNode) } + def to_logic_tree(term_map) + LogicNode.new(LogicNodeType::True, []) + end + end + + class EqnZero < Treetop::Runtime::SyntaxNode + extend T::Sig + sig { params(term_map: T::Hash[String, TermType]).returns(LogicNode) } + def to_logic_tree(term_map) + LogicNode.new(LogicNodeType::False, []) + end + end + + class EmptyEqnParen < Treetop::Runtime::SyntaxNode + extend T::Sig + sig { params(term_map: T::Hash[String, TermType]).returns(LogicNode) } + def to_logic_tree(term_map) + LogicNode::True + end + end + + class EqnParen < Treetop::Runtime::SyntaxNode + extend T::Sig + sig { params(term_map: T::Hash[String, TermType]).returns(LogicNode) } + def to_logic_tree(term_map) + send(:conjunction).to_logic_tree(term_map) + end + end + + class EqnNot < Treetop::Runtime::SyntaxNode + extend T::Sig + sig { params(term_map: T::Hash[String, TermType]).returns(LogicNode) } + def to_logic_tree(term_map) + LogicNode.new(LogicNodeType::Not, [send(:name).to_logic_tree(term_map)]) + end + end + + class EqnAnd < Treetop::Runtime::SyntaxNode + extend T::Sig + sig { params(term_map: T::Hash[String, TermType]).returns(LogicNode) } + def to_logic_tree(term_map) + children = T.let([], T::Array[LogicNode]) + children << send(:first).to_logic_tree(term_map) + send(:r).elements.each do |e| + children << e.unary_expression.to_logic_tree(term_map) + end + LogicNode.new(LogicNodeType::And, children) + end + end + + class EqnOr < Treetop::Runtime::SyntaxNode + extend T::Sig + sig { params(term_map: T::Hash[String, TermType]).returns(LogicNode) } + def to_logic_tree(term_map) + children = T.let([], T::Array[LogicNode]) + children << send(:first).to_logic_tree(term_map) + send(:r).elements.each do |e| + children << e.conjunction.to_logic_tree(term_map) + end + LogicNode.new(LogicNodeType::Or, children) + end + end + + EqnParser = Treetop.load_from_string(EQN_GRAMMAR) + + extend T::Sig + sig { params(eqn: String).void } + def initialize(eqn) + @eqn = eqn + @parser = EqnParser.new + end + + sig { params(term_map: T::Hash[String, TermType]).returns(LogicNode) } + def to_logic_tree(term_map) + m = @parser.parse(@eqn) + if m.nil? + puts "start" + pp @eqn + puts "end" + raise "Error parsing eqn: #{@parser.failure_reason}" + end + + raise "unexpected" unless m.is_a?(EqnTop) + + m.to_logic_tree(term_map) + end + end +end diff --git a/tools/ruby-gems/udb/lib/udb/exception_code.rb b/tools/ruby-gems/udb/lib/udb/exception_code.rb deleted file mode 100644 index f1da668c9f..0000000000 --- a/tools/ruby-gems/udb/lib/udb/exception_code.rb +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. -# SPDX-License-Identifier: BSD-3-Clause-Clear - -# typed: strict -# frozen_string_literal: true - -require "sorbet-runtime" - -module Udb - class DatabaseObject; end - class TopLevelDatabaseObject < DatabaseObject; end - class Extension < TopLevelDatabaseObject; end - - # a synchroncous exception code - class ExceptionCode - extend T::Sig - - # @return [String] Long-form display name (can include special characters) - sig { returns(String) } - attr_reader :name - - # @return [String] Field name for an IDL enum - sig { returns(String) } - attr_reader :var - - # @return [Integer] Code, written into *mcause - sig { returns(Integer) } - attr_reader :num - - # @return [Extension] Extension that defines this code - sig { returns(Extension) } - attr_reader :ext - - sig { params(name: String, var: String, number: Integer, ext: Extension).void } - def initialize(name, var, number, ext) - @name = T.let(name, String) - @name.freeze - @var = T.let(var, String) - @num = T.let(number, Integer) - @ext = T.let(ext, Extension) - end - end - - # all the same information as ExceptinCode, but for interrupts - InterruptCode = Class.new(ExceptionCode) -end diff --git a/tools/ruby-gems/udb/lib/udb/idl/condition_to_udb.rb b/tools/ruby-gems/udb/lib/udb/idl/condition_to_udb.rb new file mode 100644 index 0000000000..fb1d302616 --- /dev/null +++ b/tools/ruby-gems/udb/lib/udb/idl/condition_to_udb.rb @@ -0,0 +1,386 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: true +# frozen_string_literal: true + +require "sorbet-runtime" + +require "idlc/ast" + +module Idl + class AstNode + extend T::Sig + + UdbHashType = T.type_alias do T.any(T::Hash[String, T.untyped], T::Boolean) end + + sig { overridable.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) + raise "Need to implement #{self.class.name}::to_udb_h in #{__FILE__}" + end + end + + class ImplicationExpressionAst < AstNode + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) + if antecedent.is_a?(TrueExpressionAst) + consequent.to_udb_h(symtab) + else + { + "if" => antecedent.to_udb_h(symtab), + "then" => consequent.to_udb_h(symtab) + } + end + end + end + + class ParenExpressionAst < AstNode + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) + expression.to_udb_h(symtab) + end + end + + class ImplicationStatementAst < AstNode + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) + expression.to_udb_h(symtab) + end + end + + class ConstraintBodyAst < AstNode + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) + if @children.size == 1 + @children.fetch(0).to_udb_h(symtab) + else + { + "allOf" => @children.map { |child| child.to_udb_h(symtab) } + } + end + end + end + + class TrueExpressionAst < AstNode + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) = true + end + + class FalseExpressionAst < AstNode + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) = false + end + + class IdAst < AstNode + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) + { + "param" => { + "name" => name, + "equal" => true + } + } + end + end + + class ForLoopAst < AstNode + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) + res = { "allOf" => [] } + + symtab.push(self) + init.execute(symtab) + while condition.value(symtab) + stmts.each do |stmt| + if stmt.is_a?(ImplicationStatementAst) + res["allOf"] << stmt.to_udb_h(symtab) + elsif stmt.is_a?(ReturnStatementAst) + raise "Returns are not allowed in constraints" + else + stmt.execute(symtab) + end + end + update.execute(symtab) + end + symtab.pop + + res + end + end + + class AryElementAccessAst < AstNode + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) + { + "param" => { + "name" => var.name, + "index" => index.value(symtab), + "equal" => true + } + } + end + end + + class UnaryOperatorExpressionAst < AstNode + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) + case @op + when "!" + { + "not" => exp.to_udb_h(symtab) + } + when "-", "~" + raise "No conversion for -/~" + else + raise "Unexpected" + end + end + end + + class ArrayIncludesAst < AstNode + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) + a = ary + raise "not a parameter: #{a.text_value}" unless a.is_a?(IdAst) + + value_result = value_try do + return { + "param" => + { + "name" => a.name, + "includes" => expr.value(symtab) + } + } + end + value_else(value_result) do + raise "Comparison value (#{expr.text_value}) must be compile-time evaluatable in #{text_value}" + end + end + end + + class FunctionCallExpressionAst < AstNode + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) + case name + when "implemented?" + type_error "Bad argument to implemented?" unless args.fetch(0).text_value =~ /^ExtensionName::[A-Z][a-z0-9]*$/ + { + "extension" => { + "name" => args.fetch(0).text_value.gsub("ExtensionName::", "") + } + } + when "implemented_version?" + type_error "Bad first argument to implemented_version?" unless args.fetch(0).text_value =~ /^ExtensionName::[A-Z][a-z0-9]*$/ + type_error "Bad second argument to implemented_version?" unless args.fetch(1).text_value =~ /((?:>=)|(?:>)|(?:~>)|(?:<)|(?:<=)|(?:!=)|(?:=))\s*([0-9]+)(?:\.([0-9]+)(?:\.([0-9]+)(?:-(pre))?)?)?/ + { + "extension" => { + "name" => args.fetch(0).text_value.gsub("ExtensionName::", ""), + "version" => args.fetch(1).text_value.gsub('"', "") + } + } + when "xlen" + { + "xlen" => args.fetch(0).value(symtab) + } + else + type_error "unsupported function in an IDL condition: #{name}" + end + end + end + + class BinaryExpressionAst < AstNode + OP_TO_KEY = { + "==" => "equal", + "!=" => "not_equal", + ">" => "greater_than", + "<" => "less_than", + ">=" => "greater_than_or_equal", + "<=" => "less_than_or_equal" + } + sig { override.params(symtab: Idl::SymbolTable).returns(UdbHashType) } + def to_udb_h(symtab) + case @op + when "&&" + { + "allOf" => [ + lhs.to_udb_h(symtab), + rhs.to_udb_h(symtab) + ] + } + when "||" + { + "anyOf" => [ + lhs.to_udb_h(symtab), + rhs.to_udb_h(symtab) + ] + } + when "==", "!=", "<", ">", "<=", ">=" + if lhs.is_a?(IdAst) + value_result = value_try do + return { + "param" => { + "name" => lhs.name, + OP_TO_KEY.fetch(@op) => rhs.value(symtab) + } + } + end + value_else(value_result) do + raise <<~MSG + Comparison value (#{rhs.text_value}) must be compile-time evaluatable in #{text_value} + While evaluating value of #{AstNode.value_error_ast.text_value}: + '#{AstNode.value_error_reason}' + MSG + end + elsif lhs.is_a?(AryElementAccessAst) + raise "#{lhs.var.text_value} is not a parameter" unless lhs.var.is_a?(IdAst) + + index_value = T.let(nil, T.nilable(Integer)) + value_result = value_try do + index_value = lhs.index.value(symtab) + end + value_else(value_result) do + raise "Array index value (#{lhs.index.text_value}) must be known at compile time in #{text_value}" + end + + value_result = value_try do + return { + "param" => { + "name" => lhs.name, + OP_TO_KEY.fetch(@op) => rhs.value(symtab), + "index" => T.must(index_value) + } + } + end + value_else(value_result) do + raise "Comparison value (#{rhs.text_value}) must be compile-time evaluatable in #{text_value}" + end + elsif lhs.is_a?(AryRangeAccessAst) + raise "#{lhs.var.text_value} is not a parameter" unless lhs.var.is_a?(IdAst) + + value_result = value_try do + return { + "param" => { + "name" => lhs.var.name, + "range" => "#{lhs.msb.value(symtab)}-#{lhs.lsb.value(symtab)}", + OP_TO_KEY.fetch(@op) => rhs.value(symtab) + } + } + end + value_else(value_result) do + raise "Comparison value, msb, and lsb must all be compile-time evaluatable in #{text_value}" + end + + elsif lhs.is_a?(ArraySizeAst) + raise "#{lhs.expression.text_value} is not a parameter" unless lhs.expression.is_a?(IdAst) + + value_result = value_try do + return { + "param" => { + "name" => lhs.expression.name, + OP_TO_KEY.fetch(@op) => rhs.value(symtab), + "size" => true + } + } + end + value_else(value_result) do + raise "Comparison value (#{rhs.text_value}) must be compile-time evaluatable in #{text_value}" + end + elsif rhs.is_a?(IdAst) + value_result = value_try do + return { + "param" => { + "name" => rhs.name, + OP_TO_KEY.fetch(@op) => lhs.value(symtab) + } + } + end + value_else(value_result) do + raise "Comparison value (#{lhs.text_value}) must be compile-time evaluatable in #{text_value}" + end + elsif rhs.is_a?(AryElementAccessAst) + raise "#{rhs.var.text_value} is not a parameter" unless rhs.var.is_a?(IdAst) + + index_value = T.let(nil, T.nilable(Integer)) + value_result = value_try do + index_value = rhs.index.value(symtab) + end + value_else(value_result) do + raise "Array index value (#{rhs.index.text_value}) must be known at compile time in #{text_value}" + end + + value_result = value_try do + return { + "param" => { + "name" => rhs.name, + OP_TO_KEY.fetch(@op) => lhs.value(symtab), + "index" => T.must(index_value) + } + } + end + value_else(value_result) do + raise "Comparison value (#{lhs.text_value}) must be compile-time evaluatable in #{text_value}" + end + elsif rhs.is_a?(AryRangeAccessAst) + raise "#{rhs.var.text_value} is not a parameter" unless rhs.var.is_a?(IdAst) + + value_result = value_try do + return { + "param" => { + "name" => rhs.var.name, + "range" => "#{rhs.msb.value(symtab)}-#{rhs.lsb.value(symtab)}", + OP_TO_KEY.fetch(@op) => lhs.value(symtab) + } + } + end + value_else(value_result) do + raise "Comparison value, msb, and lsb must all be compile-time evaluatable in #{text_value}" + end + + elsif rhs.is_a?(ArraySizeAst) + raise "#{rhs.expression.text_value} is not a parameter" unless rhs.expression.is_a?(IdAst) + + value_result = value_try do + return { + "param" => { + "name" => rhs.expression.name, + OP_TO_KEY.fetch(@op) => lhs.value(symtab), + "size" => true + } + } + end + value_else(value_result) do + raise "Comparison value (#{lhs.text_value}) must be compile-time evaluatable in #{text_value}" + end + elsif lhs.is_a?(FunctionCallExpressionAst) + if lhs.name == "xlen" + if @op == "==" + return { "xlen" => rhs.value(symtab) } + elsif @op == "!=" + return { "not": { "xlen" => rhs.value(symtab) } } + else + raise "'#{text_value}' can not be converted to UDB YAML" + end + else + raise "'#{text_value}' can not be converted to UDB YAML" + end + elsif rhs.is_a?(FunctionCallExpressionAst) + if rhs.name == "xlen" + if @op == "==" + return { "xlen" => lhs.value(symtab) } + elsif @op == "!=" + return { "not": { "xlen" => lhs.value(symtab) } } + else + raise "'#{text_value}' can not be converted to UDB YAML" + end + else + raise "'#{text_value}' can not be converted to UDB YAML" + end + else + raise "'#{text_value}' can not be converted to UDB YAML" + end + else + raise "'#{text_value}` uses an operator (#{@op}) that cannot be converted to UDB YAML" + end + end + end +end diff --git a/tools/ruby-gems/udb/lib/udb/log.rb b/tools/ruby-gems/udb/lib/udb/log.rb new file mode 100644 index 0000000000..13a60b2d87 --- /dev/null +++ b/tools/ruby-gems/udb/lib/udb/log.rb @@ -0,0 +1,26 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: true +# frozen_string_literal: true + +require "logger" +require "tty-logger" + +require "sorbet-runtime" + +module Udb + extend T::Sig + + sig { returns(T.any(Logger, TTY::Logger)).checked(:never) } + def self.logger + @logger ||= TTY::Logger.new do |config| + config.level = :warn + end + end + + sig { params(logger: T.any(Logger, TTY::Logger)).returns(T.any(Logger, TTY::Logger)) } + def self.set_logger(logger) + @logger = logger + end +end diff --git a/tools/ruby-gems/udb/lib/udb/logic.rb b/tools/ruby-gems/udb/lib/udb/logic.rb new file mode 100644 index 0000000000..84e7c49eac --- /dev/null +++ b/tools/ruby-gems/udb/lib/udb/logic.rb @@ -0,0 +1,3360 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: true +# frozen_string_literal: true + +require "numbers_and_words" +require "minisat" +require "tempfile" +require "treetop" + +require "idlc/symbol_table" +require "udb/eqn_parser" +require "udb/version_spec" + +# Implements the LogicNode class, which is used to test for satisfiability/equality/etc of logic +# +# LogicNode isn't meant to used by the "public" API. It is used by the Condition classes, which +# correspond to concepts in the UDB data +# +# @see Condition +module Udb + # node types in a boolean logic tree + class LogicNodeType < T::Enum + enums do + True = new + False = new + Term = new + Not = new + And = new + Or = new + Xor = new + None = new + If = new + end + end + + class XlenTerm + extend T::Sig + include Comparable + + attr_reader :xlen + + sig { params(xlen: Integer).void } + def initialize(xlen) + @xlen = xlen + end + + sig { params(cfg_arch: ConfiguredArchitecture).returns(Condition) } + def to_condition(cfg_arch) + Condition.new({ "xlen" => @xlen }, cfg_arch) + end + + sig { override.returns(String) } + def to_s + "xlen=#{@xlen}" + end + + sig { returns(String) } + def to_s_pretty = to_s + + sig { returns(String) } + def to_asciidoc = "xlen() == #{@xlen}" + + sig { returns(T::Hash[String, Integer]) } + def to_h + { + "xlen" => @xlen + } + end + + sig { params(cfg_arch: ConfiguredArchitecture).returns(String) } + def to_idl(cfg_arch) + "(xlen() == #{@xlen})" + end + + sig { + override + .params(other: T.untyped) + .returns(T.nilable(Integer)) + .checked(:never) + } + def <=>(other) + return nil unless other.is_a?(XlenTerm) + + @xlen <=> other.xlen + end + + # hash and eql? must be implemented to use ExtensionTerm as a Hash key + sig { override.returns(Integer) } + def hash = to_s.hash + + sig { + override + .params(other: T.untyped) + .returns(T::Boolean) + .checked(:never) + } + def eql?(other) + return false unless other.is_a?(XlenTerm) + + (self <=> other) == 0 + end + end + + # a terminal for an Extension with a version specifier (a-la an ExtensionRequirement) + # we don't use ExtensionRequirement for terminals just to keep LogicNode independent of the rest of UDB + class ExtensionTerm + extend T::Sig + include Comparable + + class ComparisonOp < T::Enum + enums do + Equal = new("=") + GreaterThanOrEqual = new(">=") + GreaterThan = new(">") + LessThanOrEqual = new("<=") + LessThan = new("<") + Comparable = new("~>") + end + end + + sig { returns(String) } + attr_reader :name + + sig { returns(VersionSpec) } + attr_reader :version + + sig { returns(ComparisonOp) } + def comparison = @op + + sig { params(name: String, op: T.any(ComparisonOp, String), ver: T.any(String, VersionSpec)).void } + def initialize(name, op, ver) + @name = name + @op = T.let( + if op.is_a?(String) + ComparisonOp.deserialize(op) + else + op + end, + + ComparisonOp) + @version = ver.is_a?(String) ? VersionSpec.new(ver) : ver + end + + sig { returns(T::Boolean) } + def matches_any_version? + @op == ComparisonOp::Equal && @version == VersionSpec.new("0") + end + + sig { params(cfg_arch: ConfiguredArchitecture).returns(ExtensionRequirement) } + def to_ext_req(cfg_arch) + ExtensionRequirement.new(@name, "#{@op.serialize} #{@version}", arch: cfg_arch) + end + + + sig { params(cfg_arch: ConfiguredArchitecture).returns(ExtensionVersion) } + def to_ext_ver(cfg_arch) + raise "Not an extension version" unless @op == ComparisonOp::Equal + + ExtensionVersion.new(@name, @version.to_s, cfg_arch) + end + + sig { params(cfg_arch: ConfiguredArchitecture).returns(Condition) } + def to_condition(cfg_arch) + Condition.new({ "extension" => { "name" => name, "version" => "#{@op.serialize} #{@version}" } }, cfg_arch) + end + + sig { override.returns(String) } + def to_s + "#{@name}#{@op.serialize}#{@version}" + end + + sig { returns(String) } + def to_s_pretty + "Extension #{@name}, version #{@version}" + end + + sig { returns(T::Hash[String, String]) } + def to_h + { + "name" => @name, + "version" => "#{@op.serialize} #{@version}" + } + end + + sig { params(cfg_arch: ConfiguredArchitecture).returns(String) } + def to_idl(cfg_arch) + if @op == ComparisonOp::GreaterThanOrEqual && @version.eql?("0") + "implemented?(ExtensionName::#{@name})" + else + "implemented_version?(ExtensionName::#{@name}, \"#{@op.serialize} #{@version}\")" + end + end + + # return the minimum version possible that would satisfy this term + def min_possible_version + case @op + when ComparisonOp::Equal, ComparisonOp::GreaterThanOrEqual, ComparisonOp::Comparable + @version + when ComparisonOp::GreaterThan + @version.increment_patch + when ComparisonOp::LessThanOrEqual, ComparisonOp::LessThan + VersionSpec.new("0") + else + T.absurd(@op) + end + end + + # return the maximum version possible that would satisfy this term + sig { returns(VersionSpec) } + def max_possible_version + case @op + when ComparisonOp::Equal, ComparisonOp::LessThanOrEqual, ComparisonOp::Comparable + @version + when ComparisonOp::LessThan + if @version.zero? + nil + else + @version.decrement_patch + end + when ComparisonOp::GreaterThanOrEqual, ComparisonOp::GreaterThan + VersionSpec.new("0") + else + T.absurd(@op) + end + end + + sig { + override + .params(other: T.untyped) + .returns(T.nilable(Integer)) + .checked(:never) + } + def <=>(other) + return nil unless other.is_a?(ExtensionTerm) + + other_ext = other + if @op == ComparisonOp::Equal && other_ext.comparison == ComparisonOp::Equal + if @name == other_ext.name + T.must(@version <=> other_ext.version) + else + T.must(@name <=> other_ext.name) + end + else + if @name == other_ext.name + if min_possible_version == other_ext.min_possible_version + max_possible_version <=> other_ext.max_possible_version + else + min_possible_version <=> other_ext.min_possible_version + end + else + T.must(@name <=> other_ext.name) + end + end + end + + # hash and eql? must be implemented to use ExtensionTerm as a Hash key + sig { override.returns(Integer) } + def hash = to_s.hash + + sig { + override + .params(other: T.untyped) + .returns(T::Boolean) + .checked(:never) + } + def eql?(other) + return false unless other.is_a?(ExtensionTerm) + + (self <=> other) == 0 + end + + end + + # a terminal for a Parameter test (e.g., MXLEN == 32) + class ParameterTerm + extend T::Sig + include Comparable + + class ParameterComparisonType < T::Enum + enums do + Equal = new("equal") + NotEqual = new("not_equal") + LessThan = new("less_than") + GreaterThan = new("greater_than") + LessThanOrEqual = new("less_than_or_equal") + GreaterThanOrEqual = new("greater_than_or_equal") + Includes = new("includes") + OneOf = new("oneOf") + end + end + + ValueType = T.type_alias { T.any(Integer, String, T::Boolean, T::Array[T.any(Integer, String)]) } + + sig { params(yaml: T::Hash[String, T.untyped]).void } + def initialize(yaml) + @yaml = yaml + end + + sig { returns(String) } + def name = @yaml.fetch("name") + + sig { returns(String) } + def reason = @yaml.fetch("reason") + + sig { returns(T.nilable(Integer)) } + def index = @yaml["index"] + + sig { returns(T.nilable(T::Boolean)) } + def size = @yaml["size"] + + sig { returns(T::Boolean) } + def array_comparison? = @yaml.key?("index") || @yaml.key?("size") || @yaml.key?("includes") + + sig { returns(ValueType) } + def comparison_value + @yaml.fetch(comparison_type.serialize) + end + + sig { returns(ParameterComparisonType) } + def comparison_type + if @yaml.key?("equal") + ParameterComparisonType::Equal + elsif @yaml.key?("not_equal") + ParameterComparisonType::NotEqual + elsif @yaml.key?("less_than") + ParameterComparisonType::LessThan + elsif @yaml.key?("greater_than") + ParameterComparisonType::GreaterThan + elsif @yaml.key?("less_than_or_equal") + ParameterComparisonType::LessThanOrEqual + elsif @yaml.key?("greater_than_or_equal") + ParameterComparisonType::GreaterThanOrEqual + elsif @yaml.key?("includes") + ParameterComparisonType::Includes + elsif @yaml.key?("oneOf") + ParameterComparisonType::OneOf + else + raise "No comparison found in [#{@yaml.keys}]" + end + end + + sig { params(value: T.untyped).returns(SatisfiedResult) } + def eval_value(value) + t = comparison_type + case t + when ParameterComparisonType::Equal + (value == @yaml["equal"]) ? SatisfiedResult::Yes : SatisfiedResult::No + when ParameterComparisonType::NotEqual + (value != @yaml["not_equal"]) ? SatisfiedResult::Yes : SatisfiedResult::No + when ParameterComparisonType::LessThan + (value < @yaml["less_than"]) ? SatisfiedResult::Yes : SatisfiedResult::No + when ParameterComparisonType::GreaterThan + (value > @yaml["greater_than"]) ? SatisfiedResult::Yes : SatisfiedResult::No + when ParameterComparisonType::LessThanOrEqual + (value <= @yaml["less_than_or_equal"]) ? SatisfiedResult::Yes : SatisfiedResult::No + when ParameterComparisonType::GreaterThanOrEqual + (value >= @yaml["greater_than_or_equal"]) ? SatisfiedResult::Yes : SatisfiedResult::No + when ParameterComparisonType::Includes + (value.include?(@yaml["includes"])) ? SatisfiedResult::Yes : SatisfiedResult::No + when ParameterComparisonType::OneOf + (@yaml["oneOf"].include?(value)) ? SatisfiedResult::Yes : SatisfiedResult::No + else + T.absurd(t) + end + end + + sig { params(param_values: T::Hash[String, T.untyped]).returns(SatisfiedResult) } + def _eval(param_values) + val = param_values[name] + + # don't have the value, so can't say either way + return SatisfiedResult::Maybe if val.nil? + + if val.is_a?(Array) + raise "Missing index, includes, or size key in #{@yaml}" unless array_comparison? + + if @yaml.key?("index") + raise "Index out of range" if T.cast(@yaml.fetch("index"), Integer) >= T.cast(val, Array).size + + value = val.fetch(@yaml.fetch("index")) + eval_value(value) + elsif @yaml.key?("includes") + eval_value(val) + elsif @yaml.key?("size") + value = val.size + eval_value(value) + else + raise "unreachable" + end + elsif val.is_a?(Integer) + if @yaml.key?("range") + msb, lsb = @yaml.fetch("range").split("-").map(&:to_i) + eval_value((val >> lsb) & (1 << (msb - lsb))) + else + eval_value(val) + end + else + eval_value(val) + end + end + + sig { params(cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) } + def eval(cfg_arch) + p = cfg_arch.param(name) + + # we know nothing at all about this param. it might not even be valid + return SatisfiedResult::No if p.nil? + + # since conditions are involved in ConfiguredArchitecture creation + # (to, for example, determine the list of implemented extensions) + # we use the parameter values directly from the config instead of the symtab + # (which may not be constructed yet) + _eval(cfg_arch.config.param_values) + end + + sig { params(param_values: T::Hash[String, T.untyped]).returns(SatisfiedResult) } + def partial_eval(param_values) = _eval(param_values) + + sig { returns(T::Hash[String, T.untyped]) } + def to_h + @yaml + end + + sig { params(cfg_arch: T.nilable(ConfiguredArchitecture)).returns(String) } + def to_idl(cfg_arch) + t = comparison_type + case t + when ParameterComparisonType::Equal + if comparison_value.is_a?(String) + "(#{param_to_s}==\"#{comparison_value}\")" + else + "(#{param_to_s}==#{comparison_value})" + end + when ParameterComparisonType::NotEqual + if comparison_value.is_a?(String) + "(#{param_to_s}!=\"#{comparison_value}\")" + else + "(#{param_to_s}!=#{comparison_value})" + end + when ParameterComparisonType::LessThan + "(#{param_to_s}<#{comparison_value})" + when ParameterComparisonType::GreaterThan + "(#{param_to_s}>#{comparison_value})" + when ParameterComparisonType::LessThanOrEqual + "(#{param_to_s}<=#{comparison_value})" + when ParameterComparisonType::GreaterThanOrEqual + "(#{param_to_s}>=#{comparison_value})" + when ParameterComparisonType::Includes + "$array_includes?(#{param_to_s}, #{comparison_value})" + when ParameterComparisonType::OneOf + "(#{T.cast(comparison_value, T::Array[T.any(Integer, String)]).map { |v| "#{param_to_s}==#{v}" }.join("||")})" + else + T.absurd(t) + end + end + + def to_asciidoc + padoc = + index.nil? \ + ? name + : "#{name}[#{index}]" + type = comparison_type + case type + when ParameterTerm::ParameterComparisonType::Equal + "`#{padoc}` == #{comparison_value}" + when ParameterTerm::ParameterComparisonType::NotEqual + "`#{padoc}` != #{comparison_value}" + when ParameterTerm::ParameterComparisonType::LessThan + "`#{padoc}` < #{comparison_value}" + when ParameterTerm::ParameterComparisonType::GreaterThan + "`#{padoc}` > #{comparison_value}" + when ParameterTerm::ParameterComparisonType::LessThanOrEqual + "`#{padoc}` <= #{comparison_value}" + when ParameterTerm::ParameterComparisonType::GreaterThanOrEqual + "`#{padoc}` >= #{comparison_value}" + when ParameterTerm::ParameterComparisonType::Includes + "#{comparison_value} in `#{padoc}`" + when ParameterTerm::ParameterComparisonType::OneOf + "`#{padoc}` in [#{@yaml["oneOf"].join(", ")}]" + else + T.absurd(type) + end + end + + sig { returns(String) } + def param_to_s + if !index.nil? + "#{name}[#{index}]" + elsif !size.nil? + "$array_size(#{name})" + else + name + end + end + + sig { override.returns(String) } + def to_s + # just return IDL + to_idl(nil) + end + + sig { returns(String) } + def to_s_pretty + t = comparison_type + i = index + if i.nil? + case t + when ParameterComparisonType::Equal + "Paremeter #{@name} equals #{comparison_value}" + when ParameterComparisonType::NotEqual + "Paremeter #{@name} does not equal #{comparison_value}" + when ParameterComparisonType::LessThan + "Paremeter #{@name} is less than #{comparison_value}" + when ParameterComparisonType::GreaterThan + "Paremeter #{@name} is greater than #{comparison_value}" + when ParameterComparisonType::LessThanOrEqual + "Paremeter #{@name} is less than or equal to #{comparison_value}" + when ParameterComparisonType::GreaterThanOrEqual + "Paremeter #{@name} is greater than or equal to #{comparison_value}" + when ParameterComparisonType::Includes + "Paremeter #{@name} (an array) includes the value #{comparison_value}" + when ParameterComparisonType::OneOf + "Paremeter #{@name} is one of the following values: #{comparison_value}" + else + T.absurd(t) + end + else + case t + when ParameterComparisonType::Equal + "The #{i.to_words(ordinal: true, remove_hyphen: true)} element of paremeter #{@name} equals #{comparison_value}" + when ParameterComparisonType::NotEqual + "The #{i.to_words(ordinal: true, remove_hyphen: true)} element of paremeter #{@name} does not equal #{comparison_value}" + when ParameterComparisonType::LessThan + "The #{i.to_words(ordinal: true, remove_hyphen: true)} element of paremeter #{@name} is less than #{comparison_value}" + when ParameterComparisonType::GreaterThan + "The #{i.to_words(ordinal: true, remove_hyphen: true)} element of paremeter #{@name} is greater than #{comparison_value}" + when ParameterComparisonType::LessThanOrEqual + "The #{i.to_words(ordinal: true, remove_hyphen: true)} element of paremeter #{@name} is less than or equal to #{comparison_value}" + when ParameterComparisonType::GreaterThanOrEqual + "The #{i.to_words(ordinal: true, remove_hyphen: true)} element of paremeter #{@name} is greater than or equal to #{comparison_value}" + when ParameterComparisonType::Includes + raise "Cannot occur" + when ParameterComparisonType::OneOf + "The #{i.to_words(ordinal: true, remove_hyphen: true)} element of paremeter #{@name} equals on of the following values: #{comparison_value}" + else + T.absurd(t) + end + end + end + + sig { returns(T::Boolean) } + def param_is_array? + @yaml.keys.any? { |k| ["index", "includes", "size"].include?(k) } + end + + # if self and other_param had a well-defined logical relationship, return it + # otherwise, return nil + # *note*: this is only one half of the relationship. to get the whole picture, need to use + # self.relation_to(other_param) && other_param.relation_to(self) + sig { params(other_param: ParameterTerm).returns(T.nilable(LogicNode)) } + def relation_to(other_param) + return nil unless name == other_param.name + + self_implies_other = + LogicNode.new(LogicNodeType::If, [LogicNode.new(LogicNodeType::Term, [self]), LogicNode.new(LogicNodeType::Term, [other_param])]) + + self_implies_not_other = + LogicNode.new(LogicNodeType::If, [LogicNode.new(LogicNodeType::Term, [self]), LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [other_param])])]) + + if param_is_array? + if @yaml.key?("includes") + if other_param.to_h.key?("index") && other_param.to_h.key?("equals") && (other_param.to_h.fetch("equals") == @yaml.fetch("includes")) + self_implies_other + elsif other_param.to_h.key?("size") && other_param.to_h.key?("equals") && (other_param.to_h.fetch("equals") == 0) + self_implies_not_other + elsif other_param.to_h.key?("size") && other_param.to_h.key?("not_equal") && (other_param.to_h.fetch("not_equal") == 0) + self_implies_other + elsif other_param.to_h.key?("size") && other_param.to_h.key?("greater_than") && (other_param.to_h.fetch("greater_than") == 0) + self_implies_other + end + elsif @yaml.key?("size") + scalar_relation_to(other_param, self_implies_other, self_implies_not_other) + elsif @yaml.key?("index") && other_param.to_h.key?("index") + scalar_relation_to(other_param, self_implies_other, self_implies_not_other) + end + else + scalar_relation_to(other_param, self_implies_other, self_implies_not_other) + end + end + + # @api private + sig { params(other_param: ParameterTerm, self_implies_other: LogicNode, self_implies_not_other: LogicNode).returns(T.nilable(LogicNode)) } + def scalar_relation_to(other_param, self_implies_other, self_implies_not_other) + op = comparison_type + other_op = other_param.comparison_type + + case op + when ParameterComparisonType::Equal + case other_op + when ParameterComparisonType::Equal + if comparison_value != other_param.comparison_value + self_implies_not_other + else + self_implies_other + end + when ParameterComparisonType::NotEqual + if comparison_value != other_param.comparison_value + if comparison_value.is_a?(TrueClass) || comparison_value.is_a?(FalseClass) + self_implies_other + end + else + self_implies_other + end + when ParameterComparisonType::LessThan + if T.cast(comparison_value, Integer) < T.cast(other_param.comparison_value, Integer) + self_implies_other + else + self_implies_not_other + end + when ParameterComparisonType::LessThanOrEqual + if T.cast(comparison_value, Integer) <= T.cast(other_param.comparison_value, Integer) + self_implies_other + else + self_implies_not_other + end + when ParameterComparisonType::GreaterThan + if T.cast(comparison_value, Integer) > T.cast(other_param.comparison_value, Integer) + self_implies_other + else + self_implies_not_other + end + when ParameterComparisonType::GreaterThanOrEqual + if T.cast(comparison_value, Integer) >= T.cast(other_param.comparison_value, Integer) + self_implies_other + else + self_implies_not_other + end + when ParameterComparisonType::OneOf + if T.cast(other_param.comparison_value, T::Array[T.any(String, Integer)]).include?(comparison_value) + self_implies_other + else + self_implies_not_other + end + when ParameterComparisonType::Includes + raise "impossible" + else + T.absurd(other_op) + end + when ParameterComparisonType::NotEqual + case other_op + when ParameterComparisonType::Equal + if comparison_value != other_param.comparison_value + if comparison_value.is_a?(TrueClass) || comparison_value.is_a?(FalseClass) + self_implies_other + end + else + self_implies_other + end + when ParameterComparisonType::NotEqual + if comparison_value != other_param.comparison_value # otherwise, this would be self-comparison + if comparison_value.is_a?(TrueClass) || comparison_value.is_a?(FalseClass) + self_implies_not_other + end + else + self_implies_other + end + when ParameterComparisonType::LessThan, + ParameterComparisonType::LessThanOrEqual, + ParameterComparisonType::GreaterThan, + ParameterComparisonType::GreaterThanOrEqual, + ParameterComparisonType::OneOf + # nothing to say here. + when ParameterComparisonType::Includes + raise "impossible" + else + T.absurd(other_op) + end + when ParameterComparisonType::LessThan + case other_op + when ParameterComparisonType::Equal + if T.cast(comparison_value, Integer) <= T.cast(other_param.comparison_value, Integer) + self_implies_not_other + end + when ParameterComparisonType::NotEqual + if T.cast(comparison_value, Integer) <= T.cast(other_param.comparison_value, Integer) + self_implies_other + end + when ParameterComparisonType::LessThan + if T.cast(comparison_value, Integer) <= T.cast(other_param.comparison_value, Integer) + self_implies_other + end + when ParameterComparisonType::LessThanOrEqual + if T.cast(comparison_value, Integer) < T.cast(other_param.comparison_value, Integer) + self_implies_other + end + when ParameterComparisonType::GreaterThan + if T.cast(comparison_value, Integer) <= T.cast(other_param.comparison_value, Integer) + self_implies_not_other + end + when ParameterComparisonType::GreaterThanOrEqual + if T.cast(comparison_value, Integer) <= T.cast(other_param.comparison_value, Integer) + self_implies_not_other + end + when ParameterComparisonType::OneOf + if T.cast(other_param.comparison_value, T::Array[Integer]).all? { |v| v >= T.cast(comparison_value, Integer) } + self_implies_not_other + end + when ParameterComparisonType::Includes + raise "impossible" + else + T.absurd(other_op) + end + when ParameterComparisonType::LessThanOrEqual + case other_op + when ParameterComparisonType::Equal + if T.cast(comparison_value, Integer) < T.cast(other_param.comparison_value, Integer) + self_implies_not_other + end + when ParameterComparisonType::NotEqual + if T.cast(comparison_value, Integer) < T.cast(other_param.comparison_value, Integer) + self_implies_other + end + when ParameterComparisonType::LessThan + if T.cast(comparison_value, Integer) < T.cast(other_param.comparison_value, Integer) + self_implies_other + end + when ParameterComparisonType::LessThanOrEqual + if T.cast(comparison_value, Integer) <= T.cast(other_param.comparison_value, Integer) + self_implies_other + end + when ParameterComparisonType::GreaterThan + if T.cast(comparison_value, Integer) < T.cast(other_param.comparison_value, Integer) + self_implies_not_other + end + when ParameterComparisonType::GreaterThanOrEqual + if T.cast(comparison_value, Integer) <= T.cast(other_param.comparison_value, Integer) + self_implies_not_other + end + when ParameterComparisonType::OneOf + if T.cast(other_param.comparison_value, T::Array[Integer]).all? { |v| v > T.cast(comparison_value, Integer) } + self_implies_not_other + end + when ParameterComparisonType::Includes + raise "impossible" + else + T.absurd(other_op) + end + when ParameterComparisonType::GreaterThan + case other_op + when ParameterComparisonType::Equal + if T.cast(comparison_value, Integer) <= T.cast(other_param.comparison_value, Integer) + self_implies_not_other + end + when ParameterComparisonType::NotEqual + if T.cast(comparison_value, Integer) <= T.cast(other_param.comparison_value, Integer) + self_implies_other + end + when ParameterComparisonType::LessThan + if T.cast(comparison_value, Integer) <= T.cast(other_param.comparison_value, Integer) + self_implies_not_other + end + when ParameterComparisonType::LessThanOrEqual + if T.cast(comparison_value, Integer) < T.cast(other_param.comparison_value, Integer) + self_implies_not_other + end + when ParameterComparisonType::GreaterThan + if T.cast(comparison_value, Integer) >= T.cast(other_param.comparison_value, Integer) + self_implies_other + end + when ParameterComparisonType::GreaterThanOrEqual + if T.cast(comparison_value, Integer) > T.cast(other_param.comparison_value, Integer) + self_implies_other + end + when ParameterComparisonType::OneOf + if T.cast(other_param.comparison_value, T::Array[Integer]).all? { |v| v <= T.cast(comparison_value, Integer) } + self_implies_not_other + end + when ParameterComparisonType::Includes + # if self is a size operation and size is 0, we can know that other_param does not include + # otherwise, we know nothing + if @yaml.key?("size") && size == 0 + self_implies_not_other + end + else + T.absurd(other_op) + end + when ParameterComparisonType::GreaterThanOrEqual + case other_op + when ParameterComparisonType::Equal + if T.cast(comparison_value, Integer) < T.cast(other_param.comparison_value, Integer) + self_implies_not_other + end + when ParameterComparisonType::NotEqual + if T.cast(comparison_value, Integer) < T.cast(other_param.comparison_value, Integer) + self_implies_other + end + when ParameterComparisonType::LessThan + if T.cast(comparison_value, Integer) < T.cast(other_param.comparison_value, Integer) + self_implies_not_other + end + when ParameterComparisonType::LessThanOrEqual + if T.cast(comparison_value, Integer) <= T.cast(other_param.comparison_value, Integer) + self_implies_not_other + end + when ParameterComparisonType::GreaterThan + if T.cast(comparison_value, Integer) > T.cast(other_param.comparison_value, Integer) + self_implies_other + end + when ParameterComparisonType::GreaterThanOrEqual + if T.cast(comparison_value, Integer) >= T.cast(other_param.comparison_value, Integer) + self_implies_other + end + when ParameterComparisonType::OneOf + if T.cast(other_param.comparison_value, T::Array[Integer]).all? { |v| v < T.cast(comparison_value, Integer) } + self_implies_not_other + end + when ParameterComparisonType::Includes + raise "impossible" + else + T.absurd(other_op) + end + when ParameterComparisonType::OneOf + case other_op + when ParameterComparisonType::Equal + if T.cast(comparison_value, T::Array[Integer]).all? { |v| v != T.cast(other_param.comparison_value, Integer) } + self_implies_not_other + end + when ParameterComparisonType::NotEqual + if T.cast(comparison_value, T::Array[Integer]).all? { |v| v != T.cast(other_param.comparison_value, Integer) } + self_implies_other + end + when ParameterComparisonType::LessThan + if T.cast(comparison_value, T::Array[Integer]).all? { |v| v >= T.cast(other_param.comparison_value, Integer) } + self_implies_not_other + end + when ParameterComparisonType::LessThanOrEqual + if T.cast(comparison_value, T::Array[Integer]).all? { |v| v > T.cast(other_param.comparison_value, Integer) } + self_implies_not_other + end + when ParameterComparisonType::GreaterThan + if T.cast(comparison_value, T::Array[Integer]).all? { |v| v <= T.cast(other_param.comparison_value, Integer) } + self_implies_not_other + end + when ParameterComparisonType::GreaterThanOrEqual + if T.cast(comparison_value, T::Array[Integer]).all? { |v| v < T.cast(other_param.comparison_value, Integer) } + self_implies_not_other + end + when ParameterComparisonType::OneOf + # self implies other if all in set set are also in other set + if T.cast(comparison_value, T::Array[Integer]).all? { |v| T.cast(other_param.comparison_value, T::Array[Integer]).include?(v) } + self_implies_other + end + when ParameterComparisonType::Includes + raise "impossible" + else + T.absurd(other_op) + end + when ParameterComparisonType::Includes + raise "impossible" + else + T.absurd(op) + end + end + + sig { + override + .params(other: T.untyped) + .returns(T.nilable(Integer)) + .checked(:never) + } + def <=>(other) + return nil unless other.is_a?(ParameterTerm) + + other_param = other + if name != other_param.name + name <=> other_param.name + elsif !index.nil? && !other_param.index.nil? && index != other_param.index + T.must(index) <=> T.must(other_param.index) + elsif size != other.size + # one is a size operator and one isn't. + size.nil? ? 1 : -1 + elsif @yaml.key?("includes") || other_param.to_h.key?("includes") + if @yaml.key?("includes") && other_param.to_h.key?("includes") + @yaml.fetch("includes") <=> other_param.to_h.fetch("includes") + elsif @yaml.key?("includes") && !other_param.to_h.key?("includes") + 1 + elsif !@yaml.key?("includes") && other_param.to_h.key?("includes") + -1 + end + elsif @yaml.key?("oneOf") || other_param.to_h.key?("oneOf") + if @yaml.key?("oneOf") && other_param.to_h.key?("oneOf") + @yaml.fetch("oneOf") <=> other_param.to_h.fetch("oneOf") + elsif @yaml.key?("oneOf") + 1 + else + -1 + end + elsif comparison_type != other_param.comparison_type + comparison_type <=> other_param.comparison_type + elsif comparison_value != other_param.comparison_value + cv = comparison_value + if cv.is_a?(String) + cv <=> T.cast(other_param.comparison_value, String) + elsif cv.is_a?(Array) + cv <=> T.cast(other_param.comparison_value, T::Array[T.any(String, T::Boolean, Integer)]) + else + T.cast(comparison_value, Integer) <=> T.cast(other_param.comparison_value, Integer) + end + else + # these are the same (ignoring reason) + return 0 + end + end + + # hash and eql? must be implemented to use ParameterTerm as a Hash key + sig { + override + .returns(Integer) + .checked(:never) + } + def hash = @yaml.hash + + sig { + override + .params(other: T.untyped) + .returns(T::Boolean) + .checked(:never) + } + def eql?(other) + return false unless other.is_a?(ParameterTerm) + + (self <=> other) == 0 + end + end + + # @api private + # represents a "free" term, i.e., one that is not bound to the problem at hand + # used by the Tseytin Transformation, which introduces new propositions to represent + # subformula + class FreeTerm + extend T::Sig + include Comparable + + @next_id = 1 + + sig { returns(Integer) } + attr_reader :id + + sig { void } + def initialize + @id = FreeTerm.instance_variable_get(:@next_id) + FreeTerm.instance_variable_set(:@next_id, @id + 1) + end + + sig { + override + .returns(String) + } + def to_s + "t#{@id}" + end + + sig { params(cfg_arch: ConfiguredArchitecture).returns(String) } + def to_idl(cfg_arch) + "FreeTerm" + end + + def to_h = {} + + sig { returns(String) } + def to_s_pretty = to_s + + sig { + override + .params(other: T.untyped) + .returns(T.nilable(Integer)) + .checked(:never) + } + def <=>(other) + return nil unless other.is_a?(FreeTerm) + + @id <=> other.id + end + + # hash and eql? must be implemented to use ParameterTerm as a Hash key + sig { + override + .returns(Integer) + .checked(:never) + } + def hash = @id.hash + + sig { + override + .params(other: T.untyped) + .returns(T::Boolean) + .checked(:never) + } + def eql?(other) + return false unless other.is_a?(FreeTerm) + + (self <=> other) == 0 + end + end + + TermType = T.type_alias { T.any(ExtensionTerm, ParameterTerm, XlenTerm, FreeTerm) } + + # Abstract syntax tree of the condition logic + class LogicNode + extend T::Sig + + ChildType = T.type_alias { T.any(LogicNode, TermType) } + + sig { returns(LogicNodeType) } + attr_reader :type + + sig { returns(T::Array[ChildType]) } + attr_reader :children + + # object to hold results of expensive calculations + # LogicNode type and children are frozen at construction so + # we can safely remember and return these values + class MemoizedState < T::Struct + # when true, the formula is known to be in CNF form + # when false, the formula is known to not be in CNF form + prop :is_cnf, T.nilable(T::Boolean) + + # when not nil, an equisatisfiable representation of self in CNF form + prop :cnf_form, T.nilable(LogicNode) + + # when true, a flattened version of the formula would be CNF + # when false, a flattened version of the formula would not be CNF + prop :is_nested_cnf, T.nilable(T::Boolean) + + # when true, the formula would be unaltered by calling reduce + # when false, the formula would be reduced further by calling reduce + prop :is_reduced, T.nilable(T::Boolean) + + # list of terms in the formula + prop :terms, T.nilable(T::Array[TermType]) + + # list of literals in the formula + prop :literals, T.nilable(T::Array[TermType]) + + # when true, formula is known to be satisfiable + # when false, formula is known to be unsatisfiable + prop :is_satisfiable, T.nilable(T::Boolean) + + # result of #equisat_cnf + prop :equisat_cnf, T.nilable(LogicNode) + + # result of #equisat_cnf + prop :equiv_cnf, T.nilable(LogicNode) + end + + attr_accessor :memo + + sig { params(type: LogicNodeType, children: T::Array[ChildType]).void } + def initialize(type, children) + if [LogicNodeType::Term, LogicNodeType::Not].include?(type) && children.size != 1 + raise ArgumentError, "Children must be singular" + end + if [LogicNodeType::And, LogicNodeType::Or, LogicNodeType::Xor, LogicNodeType::None, LogicNodeType::If].include?(type) && children.size < 2 + raise ArgumentError, "Children must have at least two elements" + end + + @children = children + @children.freeze + @node_children = (@type == LogicNodeType::Term) ? nil : T.cast(@children, T::Array[LogicNode]) + + + if [LogicNodeType::True, LogicNodeType::False].include?(type) && !children.empty? + raise ArgumentError, "Children must be empty" + elsif type == LogicNodeType::Term + # ensure the children are TermType + children.each { |child| T.assert_type!(T.cast(child, TermType), TermType) } + else + # raise ArgumentError, "All Children must be LogicNodes" unless children.all? { |child| child.is_a?(LogicNode) } + end + + @type = type + @type.freeze + + # used for memoization in transformation routines + @memo = MemoizedState.new( + is_cnf: nil, + is_nested_cnf: nil, + is_reduced: nil, + terms: nil, + literals: nil, + is_satisfiable: nil, + equisat_cnf: nil, + equiv_cnf: nil + ) + end + + # @api private + sig { returns(T::Array[LogicNode]) } + def node_children + @node_children + end + + True = LogicNode.new(LogicNodeType::True, []) + True.memo.is_cnf = true + True.memo.is_nested_cnf = true + True.memo.is_reduced = true + True.memo.cnf_form = True + True.memo.terms = [].freeze + True.memo.literals = [].freeze + True.freeze + + False = LogicNode.new(LogicNodeType::False, []) + False.memo.is_cnf = true + False.memo.is_nested_cnf = true + False.memo.is_reduced = true + False.memo.cnf_form = False + False.memo.terms = [].freeze + False.memo.literals = [].freeze + False.freeze + + Xlen32 = LogicNode.new(LogicNodeType::Term, [XlenTerm.new(32).freeze]).freeze + Xlen64 = LogicNode.new(LogicNodeType::Term, [XlenTerm.new(64).freeze]).freeze + + # If ext_req is false, can this logic tree be satisfied? + sig { params(ext_req: ExtensionRequirement).returns(T::Boolean) } + def satisfiability_depends_on_ext_req?(ext_req) + # the tree needs something in ext_vers if it is always + # unsatisfiable when the corresponding ExtensionTerms are false + cb = LogicNode.make_eval_cb do |term| + case term + when ExtensionTerm + ext_req.satisfied_by?(term.to_ext_req(ext_req.cfg_arch)) \ + ? SatisfiedResult::No + : SatisfiedResult::Maybe + when ParameterTerm + SatisfiedResult::Maybe + when FreeTerm + SatisfiedResult::No + when XlenTerm + SatisfiedResult::Maybe + else + T.absurd(term) + end + end + eval_cb(cb) == SatisfiedResult::No + end + + # @return The unique terms (leafs) of this tree + sig { returns(T::Array[TermType]) } + def terms + @memo.terms ||= literals.uniq + end + + # @return The unique terms (leafs) of this tree, exculding antecendents of an IF + sig { returns(T::Array[TermType]) } + def terms_no_antecendents + if @type == LogicNodeType::If + node_children.fetch(1).terms_no_antecendents + elsif @type == LogicNodeType::Term + [T.cast(@children.fetch(0), TermType)] + else + node_children.map { |child| child.terms_no_antecendents }.flatten.uniq + end + end + + # @return all literals in the tree + # unlike #terms, this list will include leaves that are equivalent + sig { returns(T::Array[TermType]) } + def literals + @memo.literals ||= + if @type == LogicNodeType::Term + [@children.fetch(0)] + else + node_children.map { |child| child.literals }.flatten + end + end + + + sig { params(mterms: T::Array[String], group_by: String).returns(T::Hash[Integer, T::Array[String]]) } + def self.group_mterms(mterms, group_by) + groups = T.let({}, T::Hash[Integer, T::Array[String]]) + mterms.each do |mterm| + n = mterm.count(group_by) + groups[n] ||= [] + groups.fetch(n) << mterm + end + groups + end + + class PairMintermsResult < T::Struct + const :new_group, T::Array[String] + const :matched_mterms, T::Set[String] + end + + sig { params(group1: T::Array[String], group2: T::Array[String]).returns(PairMintermsResult) } + def self.pair_mterms(group1, group2) + new_group = [] + matched = Set.new + group1.each do |m1| + group2.each do |m2| + diff_count = 0 + diff_index = -1 + loop_index = 0 + m1.each_char do |bit| + if bit != m2[loop_index] + diff_count += 1 + diff_index = loop_index + end + loop_index += 1 + end + if diff_count == 1 + new_mterm = m1.dup + new_mterm[diff_index] = "-" + new_group << new_mterm + matched.add(m1) + matched.add(m2) + end + end + end + PairMintermsResult.new(new_group: new_group.uniq, matched_mterms: matched) + end + + + def self.prime_implicant_covers_mterm?(implicant, minterm) + implicant.chars.zip(minterm.chars).all? do |i_bit, m_bit| + i_bit == "-" || i_bit == m_bit + end + end + + class PrimeImplicantsResult < T::Struct + const :essential, T::Array[String] + const :minimal, T::Array[String] + end + + # given a list of minterms/maxterms, each represented by a string of "0" and "1", + # return the prime implicants, represented by a string of "0", "1", and "-" + sig { params(mterms: T::Array[String], group_by: String).returns(PrimeImplicantsResult) } + def self.find_prime_implicants(mterms, group_by) + groups = group_mterms(mterms, group_by) + + # Pair mterms until no further simplification is possible + prime_implicants = T.let([], T::Array[String]) + matched = T.let(Set.new, T::Set[String]) + while groups.size > 1 + new_groups = Hash.new { |h, k| h[k] = [] } + matched.clear + groups.keys.sort.each_cons(2) do |k1, k2| + res = pair_mterms(T.must(groups[T.must(k1)]), T.must(groups[T.must(k2)])) + matched.merge(res.matched_mterms) + new_group = res.new_group + new_groups[k1] += new_group unless new_group.empty? + end + prime_implicants += groups.values.flatten.reject { |mterm| matched.include?(mterm) } + groups = new_groups + end + prime_implicants += groups.values.flatten.reject { |mterm| matched.include?(mterm) } + prime_implicants.uniq! + + coverage = Hash.new { |h, k| h[k] = [] } + + mterms.each do |minterm| + prime_implicants.each_with_index do |implicant, idx| + if prime_implicant_covers_mterm?(implicant, minterm) + coverage[minterm] << idx + end + end + end + + essential_indices = [] + uncovered = mterms.dup + + # Find essential prime implicants + coverage.each do |mterm, implicant_indices| + if implicant_indices.size == 1 + idx = implicant_indices.first + unless essential_indices.include?(idx) + essential_indices << idx + # Remove all minterms covered by this implicant + uncovered.reject! { |m| prime_implicant_covers_mterm?(prime_implicants.fetch(idx), m) } + end + end + end + + minimal_indices = essential_indices.dup + # Greedy selection for remaining minterms + while uncovered.any? + best_idx = T.cast(prime_implicants.each_with_index.max_by do |implicant, idx| + uncovered.count { |m| prime_implicant_covers_mterm?(implicant, m) } + end, T::Array[Integer]).last + + minimal_indices << best_idx + uncovered.reject! { |m| prime_implicant_covers_mterm?(prime_implicants.fetch(T.must(best_idx)), m) } + end + + PrimeImplicantsResult.new( + essential: essential_indices.map { |i| prime_implicants.fetch(i) }, + minimal: minimal_indices.map { |i| prime_implicants.fetch(i) } + ) + end + + class CanonicalizationType < T::Enum + enums do + SumOfProducts = new + ProductOfSums = new + end + end + + sig { params(result_type: CanonicalizationType).returns(LogicNode) } + def quine_mccluskey(result_type) + # map terms to indicies for later + nterms = terms.size + term_idx = T.let({}, T::Hash[TermType, Integer]) + terms.each_with_index do |term, idx| + term_idx[term] = idx + end + + # mterms are either minterms (for sum-of-products) or maxterms (for product-of-sums) + mterms = + case result_type + when CanonicalizationType::SumOfProducts + minterms = T.let([], T::Array[String]) + (1 << nterms).times do |val| + cb = LogicNode.make_eval_cb do |term| + ((val >> term_idx.fetch(term)) & 1).zero? ? SatisfiedResult::No : SatisfiedResult::Yes + end + if eval_cb(cb) == SatisfiedResult::Yes + minterms << val.to_s(2).rjust(nterms, "0") + end + end + minterms + when CanonicalizationType::ProductOfSums + maxterms = T.let([], T::Array[String]) + (1 << nterms).times do |val| + cb = LogicNode.make_eval_cb do |term| + ((val >> term_idx.fetch(term)) & 1).zero? ? SatisfiedResult::No : SatisfiedResult::Yes + end + if eval_cb(cb) == SatisfiedResult::No + # swap 0's and 1's since maxterms are inverted + maxterms << val.to_s(2).gsub("0", "X").gsub("1", "0").gsub("X", "1").rjust(nterms, "1") + end + end + maxterms + else + T.absurd(result_type) + end + + if mterms.empty? + if result_type == CanonicalizationType::SumOfProducts + return False + else + return True + end + end + + primes = LogicNode.find_prime_implicants(mterms, result_type == CanonicalizationType::SumOfProducts ? "1" : "0") + min_primes = primes.minimal + + if (result_type == CanonicalizationType::SumOfProducts) + products = T.let([], T::Array[LogicNode]) + min_primes.each do |p| + product = T.let([], T::Array[LogicNode]) + p = p.reverse + p.size.times do |idx| + if p[idx] == "1" + product << LogicNode.new(LogicNodeType::Term, [terms.fetch(idx)]) + elsif p[idx] == "0" + product << LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [terms.fetch(idx)])]) + end + end + if product.size == 0 + # trivially satisfiable + products << True + elsif product.size == 1 + products << product.fetch(0) + else + products << LogicNode.new(LogicNodeType::And, product) + end + end + + if products.size == 0 + # trivially satisfiable + True + elsif products.size == 1 + products.fetch(0) + else + LogicNode.new(LogicNodeType::Or, products) + end + elsif result_type == CanonicalizationType::ProductOfSums + sums = T.let([], T::Array[LogicNode]) + min_primes.each do |p| + sum = T.let([], T::Array[LogicNode]) + p = p.reverse + p.size.times do |idx| + if p[idx] == "1" + sum << LogicNode.new(LogicNodeType::Term, [terms.fetch(idx)]) + elsif p[idx] == "0" + sum << LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [terms.fetch(idx)])]) + end + end + if sum.size == 0 + # unsatisfiable + sums << False + elsif sum.size == 1 + sums << sum.fetch(0) + else + sums << LogicNode.new(LogicNodeType::Or, sum) + end + end + + if sums.size == 0 + False + elsif sums.size == 1 + sums.fetch(0) + else + LogicNode.new(LogicNodeType::And, sums) + end + else + T.absurd(result_type) + end + end + private :quine_mccluskey + + # convert to either sum-of-products form or product-of-sums form and minimize the result + sig { params(result_type: CanonicalizationType).returns(LogicNode) } + def minimize(result_type) + if terms.size <= 4 + quine_mccluskey(result_type) + else + # special-case check for when the formula is large but obviously already minimized + # added this because espresso runtime for Shcounterenw requirements was painfully long + if result_type == CanonicalizationType::ProductOfSums && terms.size > 32 && nnf.nested_cnf? && terms.size == literals.size + equiv_cnf + else + espresso(result_type, true) + end + end + end + + class ConditionalEndterm < T::Struct + const :term, TermType + const :cond, LogicNode + end + + EvalCallbackType = T.type_alias { T.proc.params(arg0: TermType).returns(SatisfiedResult) } + sig { params(blk: EvalCallbackType).returns(EvalCallbackType) } + def self.make_eval_cb(&blk) + blk + end + + ReplaceCallbackType = T.type_alias { T.proc.params(arg0: LogicNode).returns(LogicNode) } + sig { params(blk: ReplaceCallbackType).returns(ReplaceCallbackType) } + def self.make_replace_cb(&blk) + blk + end + + sig { params(callback: ReplaceCallbackType).returns(LogicNode) } + def replace_terms(callback) + case @type + when LogicNodeType::True, LogicNodeType::False + self + when LogicNodeType::Term + callback.call(self) + when LogicNodeType::If, LogicNodeType::Not, LogicNodeType::And, + LogicNodeType::Or, LogicNodeType::None, LogicNodeType::Xor + LogicNode.new( + @type, + node_children.map { |c| c.replace_terms(callback) } + ) + else + T.absurd(@type) + end + end + + sig { params(callback: EvalCallbackType).returns(SatisfiedResult) } + def eval_cb(callback) + case @type + when LogicNodeType::True + SatisfiedResult::Yes + when LogicNodeType::False + SatisfiedResult::No + when LogicNodeType::Term + child = T.cast(@children.fetch(0), TermType) + callback.call(child) + when LogicNodeType::If + cond_ext_ret = node_children.fetch(0) + res = cond_ext_ret.eval_cb(callback) + if res == SatisfiedResult::Yes + node_children.fetch(1).eval_cb(callback) + elsif res == SatisfiedResult::Maybe + ## if "then" is true, then res doesn't matter.... + node_children.fetch(1).eval_cb(callback) == SatisfiedResult::Yes \ + ? SatisfiedResult::Yes + : SatisfiedResult::Maybe + else + # if antecedent is false, implication is true + SatisfiedResult::Yes + end + when LogicNodeType::Not + res = node_children.fetch(0).eval_cb(callback) + case res + when SatisfiedResult::Yes + SatisfiedResult::No + when SatisfiedResult::No + SatisfiedResult::Yes + when SatisfiedResult::Maybe + SatisfiedResult::Maybe + else + T.absurd(res) + end + when LogicNodeType::And + yes_cnt = T.let(0, Integer) + node_children.each do |child| + res1 = child.eval_cb(callback) + return SatisfiedResult::No if res1 == SatisfiedResult::No + + yes_cnt += 1 if res1 == SatisfiedResult::Yes + end + if yes_cnt == node_children.size + SatisfiedResult::Yes + else + SatisfiedResult::Maybe + end + when LogicNodeType::Or + no_cnt = 0 + node_children.each do |child| + res1 = child.eval_cb(callback) + return SatisfiedResult::Yes if res1 == SatisfiedResult::Yes + + no_cnt += 1 if res1 == SatisfiedResult::No + end + if no_cnt == node_children.size + SatisfiedResult::No + else + SatisfiedResult::Maybe + end + when LogicNodeType::None + no_cnt = 0 + node_children.each do |child| + res1 = child.eval_cb(callback) + return SatisfiedResult::No if res1 == SatisfiedResult::Yes + + no_cnt += 1 if res1 == SatisfiedResult::No + end + if no_cnt == node_children.size + SatisfiedResult::Yes + else + SatisfiedResult::Maybe + end + when LogicNodeType::Xor + yes_cnt = T.let(0, Integer) + has_maybe = T.let(false, T::Boolean) + node_children.each do |child| + res1 = child.eval_cb(callback) + + has_maybe ||= (res1 == SatisfiedResult::Maybe) + yes_cnt += 1 if res1 == SatisfiedResult::Yes + return SatisfiedResult::No if yes_cnt > 1 + end + if yes_cnt == 1 && !has_maybe + SatisfiedResult::Yes + elsif has_maybe + SatisfiedResult::Maybe + else + SatisfiedResult::No + end + else + T.absurd(@type) + end + end + + # partially evalute -- replace anything known with true/false, and otherwise leave it alone + sig { params(cb: EvalCallbackType).returns(LogicNode) } + def partial_evaluate(cb) + case @type + when LogicNodeType::Term + res = cb.call(T.cast(@children.fetch(0), TermType)) + if res == SatisfiedResult::Yes + True + elsif res == SatisfiedResult::No + False + else + self + end + else + LogicNode.new(@type, node_children.map { |child| child.partial_evaluate(cb) }) + end + end + + class LogicSymbolFormat < T::Enum + enums do + C = new + Eqn = new + English = new + Predicate = new + end + end + + LOGIC_SYMBOLS = { + LogicSymbolFormat::C => { + TRUE: "1", + FALSE: "0", + NOT: "!", + AND: "&&", + OR: "||", + XOR: "^", + IMPLIES: "->" # making this up; there is no implication operator in C + }, + LogicSymbolFormat::Eqn => { + TRUE: "ONE", + FALSE: "ZERO", + NOT: "!", + AND: "&", + OR: "|", + XOR: "DOES NOT EXIST", + IMPLIES: "DOES NOT EXIST" + }, + LogicSymbolFormat::English => { + TRUE: "true", + FALSE: "false", + NOT: "NOT ", + AND: "AND", + OR: "OR", + XOR: "XOR", + IMPLIES: "IMPLIES" + }, + LogicSymbolFormat::Predicate => { + TRUE: "true", + FALSE: "false", + NOT: "\u00ac", + AND: "\u2227", + OR: "\u2228", + XOR: "\u2295", + IMPLIES: "\u2192" + } + } + + # return a nice, human-readable form that may gloss over details + sig { returns(String) } + def to_s_pretty + if @type == LogicNodeType::True + "true" + elsif @type == LogicNodeType::False + "false" + elsif @type == LogicNodeType::Term + @children.fetch(0).to_s_pretty + elsif @type == LogicNodeType::Not + "not #{@children.fetch(0).to_s_pretty}" + elsif @type == LogicNodeType::And + "(#{node_children.map { |c| c.to_s_pretty }.join(" and ")})" + elsif @type == LogicNodeType::Or + "(#{node_children.map { |c| c.to_s_pretty }.join(" or ")})" + elsif @type == LogicNodeType::Xor + "(#{node_children.map { |c| c.to_s_pretty }.join(" xor ")})" + elsif @type == LogicNodeType::None + "none of (#{node_children.map { |c| c.to_s_pretty }.join(", ")})" + elsif @type == LogicNodeType::If + "if #{node_children.fetch(0).to_s_pretty} then #{node_children.fetch(1).to_s_pretty})" + else + T.absurd(@type) + end + end + + sig { params(format: LogicSymbolFormat).returns(String) } + def to_s(format: LogicSymbolFormat::Predicate) + if @type == LogicNodeType::True + LOGIC_SYMBOLS[format][:TRUE] + elsif @type == LogicNodeType::False + LOGIC_SYMBOLS[format][:FALSE] + elsif @type == LogicNodeType::Term + @children[0].to_s + elsif @type == LogicNodeType::Not + "#{LOGIC_SYMBOLS[format][:NOT]}#{node_children.fetch(0).to_s(format:)}" + elsif @type == LogicNodeType::And + "(#{node_children.map { |c| c.to_s(format:) }.join(" #{LOGIC_SYMBOLS[format][:AND]} ")})" + elsif @type == LogicNodeType::Or + "(#{node_children.map { |c| c.to_s(format:) }.join(" #{LOGIC_SYMBOLS[format][:OR]} ")})" + elsif @type == LogicNodeType::Xor + "(#{node_children.map { |c| c.to_s(format:) }.join(" #{LOGIC_SYMBOLS[format][:XOR]} ")})" + elsif @type == LogicNodeType::None + "#{LOGIC_SYMBOLS[format][:NOT]}(#{node_children.map { |c| c.to_s(format:) }.join(" #{LOGIC_SYMBOLS[format][:OR]} ")})" + elsif @type == LogicNodeType::If + "(#{node_children.fetch(0).to_s(format:)} #{LOGIC_SYMBOLS[format][:IMPLIES]} #{node_children.fetch(1).to_s(format:)})" + else + T.absurd(@type) + end + end + + sig { params(include_versions: T::Boolean).returns(String) } + def to_asciidoc(include_versions:) + case @type + when LogicNodeType::Term + term = T.cast(children.fetch(0), TermType) + if term.is_a?(ExtensionTerm) + if include_versions + "`#{term.name}`#{term.comparison}#{term.version.canonical}" + else + "`#{term.name}`" + end + elsif term.is_a?(ParameterTerm) + term.to_asciidoc + elsif term.is_a?(FreeTerm) + raise "Should not occur" + elsif term.is_a?(XlenTerm) + term.to_asciidoc + else + T.absurd(term) + end + when LogicNodeType::False + "false" + when LogicNodeType::True + "true" + when LogicNodeType::Not + "!#{node_children.fetch(0).to_asciidoc(include_versions:)}" + when LogicNodeType::And + "(#{node_children.map { |c| c.to_asciidoc(include_versions:) }.join(" && ")})" + when LogicNodeType::Or + "(#{node_children.map { |c| c.to_asciidoc(include_versions:) }.join(" || ")})" + when LogicNodeType::If + "(#{node_children.fetch(0).to_asciidoc(include_versions:)} -> #{node_children.fetch(1).to_asciidoc(include_versions:)})" + when LogicNodeType::Xor + "(#{node_children.map { |c| c.to_asciidoc(include_versions:) }.join(" ࣷ ")})" + when LogicNodeType::None + "!(#{node_children.map { |c| c.to_asciidoc(include_versions:) }.join(" || ")})" + else + T.absurd(@type) + end + end + + sig { params(cfg_arch: ConfiguredArchitecture).returns(String) } + def to_idl(cfg_arch) + case @type + when LogicNodeType::True + "true" + when LogicNodeType::False + "false" + when LogicNodeType::Term + T.cast(@children.fetch(0), TermType).to_idl(cfg_arch) + when LogicNodeType::Not + "!#{node_children.fetch(0).to_idl(cfg_arch)}" + when LogicNodeType::And + "(#{node_children.map { |c| c.to_idl(cfg_arch) }.join(" && ") })" + when LogicNodeType::Or + "(#{node_children.map { |c| c.to_idl(cfg_arch) }.join(" || ")})" + when LogicNodeType::Xor, LogicNodeType::None + nnf.to_idl(cfg_arch) + when LogicNodeType::If + "(!(#{node_children.fetch(0).to_idl(cfg_arch)}) || (#{node_children.fetch(1).to_idl(cfg_arch)}))" + else + T.absurd(@type) + end + end + + # convert to a UDB schema + sig { params(term_determined: T::Boolean).returns(T.any(T::Boolean, T::Hash[String, T.untyped])) } + def to_h(term_determined = false) + if @type == LogicNodeType::True + true + elsif @type == LogicNodeType::False + false + elsif @type == LogicNodeType::Term + if term_determined + @children.fetch(0).to_h + else + child = T.cast(@children.fetch(0), TermType) + case child + when ExtensionTerm + { "extension" => @children.fetch(0).to_h } + when ParameterTerm + { "param" => @children.fetch(0).to_h } + when FreeTerm + raise "unexpected" + when XlenTerm + @children.fetch(0).to_h + else + T.absurd(child) + end + end + elsif @type == LogicNodeType::Not + child = node_children.fetch(0) + if !term_determined && terms_no_antecendents.all? { |term| term.is_a?(ExtensionTerm) } + { "extension" => { "not" => child.to_h(true) } } + elsif !term_determined && terms_no_antecendents.all? { |term| term.is_a?(ParameterTerm) } + { "param" => { "not" => child.to_h(true) } } + else + { "not" => child.to_h(term_determined) } + end + elsif @type == LogicNodeType::And + if !term_determined && terms_no_antecendents.all? { |term| term.is_a?(ExtensionTerm) } + { "extension" => { "allOf" => node_children.map { |child| child.to_h(true) } } } + elsif !term_determined && terms_no_antecendents.all? { |term| term.is_a?(ParameterTerm) } + { "param" => { "allOf" => node_children.map { |child| child.to_h(true) } } } + else + { "allOf" => node_children.map { |child| child.to_h(term_determined) } } + end + elsif @type == LogicNodeType::Or + if !term_determined && terms_no_antecendents.all? { |term| term.is_a?(ExtensionTerm) } + { "extension" => { "anyOf" => node_children.map { |child| child.to_h(true) } } } + elsif !term_determined && terms_no_antecendents.all? { |term| term.is_a?(ParameterTerm) } + { "param" => { "anyOf" => node_children.map { |child| child.to_h(true) } } } + else + { "anyOf" => node_children.map { |child| child.to_h(term_determined) } } + end + elsif @type == LogicNodeType::Xor + if !term_determined && terms_no_antecendents.all? { |term| term.is_a?(ExtensionTerm) } + { "extension" => { "oneOf" => node_children.map { |child| child.to_h(true) } } } + elsif !term_determined && terms_no_antecendents.all? { |term| term.is_a?(ParameterTerm) } + { "param" => { "oneOf" => node_children.map { |child| child.to_h(true) } } } + else + { "oneOf" => node_children.map { |child| child.to_h(term_determined) } } + end + elsif @type == LogicNodeType::None + if !term_determined && terms_no_antecendents.all? { |term| term.is_a?(ExtensionTerm) } + { "extension" => { "noneOf" => node_children.map { |child| child.to_h(true) } } } + elsif !term_determined && terms_no_antecendents.all? { |term| term.is_a?(ParameterTerm) } + { "param" => { "noneOf" => node_children.map { |child| child.to_h(true) } } } + else + { "noneOf" => node_children.map { |child| child.to_h(term_determined) } } + end + elsif @type == LogicNodeType::If + { + "if" => node_children.fetch(0).to_h(false), + "then" => node_children.fetch(1).to_h(term_determined) + } + else + T.absurd(@type) + end + end + + sig { + params(node: LogicNode) + .returns(LogicNode) + .checked(:never) + } + def do_nnf_for_not(node) + child = node.node_children.fetch(0) + child_type = child.type + case child_type + when LogicNodeType::Term + # identity + node + when LogicNodeType::True + # invert to false + False + when LogicNodeType::False + # invert to true + True + when LogicNodeType::And + # distribute + # !(a && b) == (!a || !b) + LogicNode.new( + LogicNodeType::Or, + child.node_children.map { |child2| do_nnf(LogicNode.new(LogicNodeType::Not, [child2])) } + ) + when LogicNodeType::Or + # distribute + # !(a || b) == (!a && !b) + LogicNode.new( + LogicNodeType::And, + child.node_children.map { |child2| do_nnf(LogicNode.new(LogicNodeType::Not, [child2])) } + ) + when LogicNodeType::Not + # !!A = A + grandchild = child.node_children.fetch(0) + do_nnf(grandchild) + when LogicNodeType::If, LogicNodeType::None, LogicNodeType::Xor + do_nnf_for_not(LogicNode.new(LogicNodeType::Not, [do_nnf(child)])) + else + T.absurd(child_type) + end + end + private :do_nnf_for_not + + # rewrite to Negation Normal Form + sig { params(node: LogicNode).returns(LogicNode).checked(:never) } + def do_nnf(node) + node_type = node.type + case node_type + when LogicNodeType::Not + do_nnf_for_not(node) + when LogicNodeType::And, LogicNodeType::Or + LogicNode.new(node_type, node.node_children.map { |child2| do_nnf(child2) }) + when LogicNodeType::None + # NOR(A, b) = !A && !B + LogicNode.new( + LogicNodeType::And, + node.node_children.map { |child2| do_nnf(LogicNode.new(LogicNodeType::Not, [child2])) } + ) + when LogicNodeType::Xor + # XOR(A, b) = (A && !B) || (!A && B) + new_kids = [] + node.children.size.times do |i| + group = [] + node.children.size.times do |j| + if i == j + group << do_nnf(node.node_children.fetch(j)) + else + group << do_nnf(LogicNode.new(LogicNodeType::Not, [node.children.fetch(j)])) + end + end + new_kids << LogicNode.new(LogicNodeType::And, group) + end + LogicNode.new( + LogicNodeType::Or, + new_kids + ) + when LogicNodeType::If + # A -> B == !A or B + LogicNode.new( + LogicNodeType::Or, + [ + do_nnf(LogicNode.new( + LogicNodeType::Not, + [node.node_children.fetch(0)] + )), + do_nnf(node.node_children.fetch(1)) + ] + ) + when LogicNodeType::Term, LogicNodeType::True, LogicNodeType::False + node + else + T.absurd(node_type) + end + end + private :do_nnf + + # @return self, converted to Negation Normal Form + sig { returns(LogicNode) } + def nnf + do_nnf(self) + end + + # @return true iff self is in Negation Normal Form + def nnf? + if @type == LogicNodeType::Not + node_children.fetch(0).type == LogicNodeType::Term + elsif @type == LogicNodeType::Term + true + else + node_children.all? { |child| child.nnf? } + end + end + + # rewrite so that each node has at most two children + # + # @example + # (A || B || C) => ((A || B) || C) + sig { params(node: LogicNode).returns(LogicNode).checked(:never) } + def do_group_by_2(node) + t = node.type + case t + when LogicNodeType::And + root = + LogicNode.new( + LogicNodeType::And, + [ + do_group_by_2(node.node_children.fetch(0)), + do_group_by_2(node.node_children.fetch(1)) + ] + ) + (2...node.children.size).each do |i| + root = + LogicNode.new( + LogicNodeType::And, + [ + root, + do_group_by_2(node.node_children.fetch(i)) + ] + ) + end + root + when LogicNodeType::Or + root = + LogicNode.new( + LogicNodeType::Or, + [ + do_group_by_2(node.node_children.fetch(0)), + do_group_by_2(node.node_children.fetch(1)) + ] + ) + (2...node.children.size).each do |i| + root = + LogicNode.new( + LogicNodeType::Or, + [ + root, + do_group_by_2(node.node_children.fetch(i)) + ] + ) + end + root + when LogicNodeType::Xor + # XOR is not distributive, so we need to conver this to AND/OR and then group_by_2 + do_group_by_2(do_nnf(node)) + when LogicNodeType::None + if node.children.size == 2 + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new( + LogicNodeType::Or, + [ + do_group_by_2(node.node_children.fetch(0)), + do_group_by_2(node.node_children.fetch(1)) + ] + ) + ] + ) + else + tree = + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new( + LogicNodeType::Or, + [ + do_group_by_2(node.node_children.fetch(0)), + do_group_by_2(node.node_children.fetch(1)) + ] + ) + ] + ) + (2...node.children.size).each do |i| + tree = + LogicNode.new( + LogicNodeType::Or, + [ + tree, + do_group_by_2(node.node_children.fetch(i)) + ] + ) + end + tree + end + when LogicNodeType::Term, LogicNodeType::True, LogicNodeType::False + node + when LogicNodeType::Not + LogicNode.new(LogicNodeType::Not, [do_group_by_2(node.node_children.fetch(0))]) + when LogicNodeType::If + LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new( + LogicNodeType::Not, + [do_group_by_2(node.node_children.fetch(0))] + ), + do_group_by_2(node.node_children.fetch(1)) + ] + ) + else + T.absurd(t) + end + end + private :do_group_by_2 + + # does each node have at most two children? + sig { params(node: LogicNode).returns(T::Boolean) } + def grouped_by_2?(node) + t = node.type + case t + when LogicNodeType::And, LogicNodeType::Or + node.children.size == 2 && \ + grouped_by_2?(node.node_children.fetch(0)) && \ + grouped_by_2?(node.node_children.fetch(1)) + when LogicNodeType::Not + grouped_by_2?(node.node_children.fetch(0)) + when LogicNodeType::Term + true + when LogicNodeType::None, LogicNodeType::If, LogicNodeType::Xor + raise "?" + when LogicNodeType::True, LogicNodeType::False + true + else + T.absurd(t) + end + end + + # @return rewrites the tree so that no node has more than 2 children + # + # @example + # (A || B || C) => ((A || B) || C) + sig { returns(LogicNode) } + def group_by_2 + do_group_by_2(self) + end + + # distribute OR over AND + # + # @example + # A || (B && C) => (A || B) && (A || C) + # + # @example + # (A && B) || C => (A || C) && (B || C) + # + # @example + # (A && B) || (C && D) => ((A || C) && (A || D)) && ((B || C) && (B || D)) + sig { params(left: LogicNode, right: LogicNode, clause_count: T::Array[Integer], raise_on_explosion: T::Boolean).returns(LogicNode) } + def distribute_or(left, right, clause_count = [0], raise_on_explosion:) + if left.type == LogicNodeType::And && right.type == LogicNodeType::And + # we want to do: + # + # left || right + # (A && B) || (C && D) => ((A || C) && (A || D)) && ((B || C) && (B || D)) + + a = do_equiv_cnf(left.node_children.fetch(0), clause_count, raise_on_explosion:) + b = do_equiv_cnf(left.node_children.fetch(1), clause_count, raise_on_explosion:) + c = do_equiv_cnf(right.node_children.fetch(0), clause_count, raise_on_explosion:) + d = do_equiv_cnf(right.node_children.fetch(1), clause_count, raise_on_explosion:) + + # t1 is an AND of cnfs, so t1 will be cnf + clause_count[0] = clause_count.fetch(0) + 2 + t1 = + LogicNode.new( + LogicNodeType::And, + [ + do_equiv_cnf(LogicNode.new(LogicNodeType::Or, [a, c]), clause_count, raise_on_explosion:), + do_equiv_cnf(LogicNode.new(LogicNodeType::Or, [a, d]), clause_count, raise_on_explosion:), + ] + ) + + # t2 is an AND of cnfs, so t1 will be cnf + clause_count[0] = clause_count.fetch(0) + 2 + t2 = + LogicNode.new( + LogicNodeType::And, + [ + do_equiv_cnf(LogicNode.new(LogicNodeType::Or, [b, c]), clause_count, raise_on_explosion:), + do_equiv_cnf(LogicNode.new(LogicNodeType::Or, [b, d]), clause_count, raise_on_explosion:), + ] + ) + # t3 is an AND of cnfs, so t3 will be cnf + LogicNode.new(LogicNodeType::And, [t1, t2]) + elsif left.type == LogicNodeType::And + # we want to do: + # + # left || right + # (A && B) || C => (A || C) && (B || C) + + a = do_equiv_cnf(left.node_children.fetch(0), clause_count, raise_on_explosion:) + b = do_equiv_cnf(left.node_children.fetch(1), clause_count, raise_on_explosion:) + c = do_equiv_cnf(right, clause_count, raise_on_explosion:) + + clause_count[0] = clause_count.fetch(0) + 1 + clause1 = do_equiv_cnf(LogicNode.new(LogicNodeType::Or, [a, c]), clause_count, raise_on_explosion:) + clause_count[0] = clause_count.fetch(0) + 1 + clause2 = do_equiv_cnf(LogicNode.new(LogicNodeType::Or, [b, c]), clause_count, raise_on_explosion:) + + LogicNode.new(LogicNodeType::And, [clause1, clause2]) + elsif right.type == LogicNodeType::And + # want to do: + # + # left || right + # A || (B && C) => (A || B) && (A || C) + + a = do_equiv_cnf(left, clause_count, raise_on_explosion:) + b = do_equiv_cnf(right.node_children.fetch(0), clause_count, raise_on_explosion:) + c = do_equiv_cnf(right.node_children.fetch(1), clause_count, raise_on_explosion:) + + clause_count[0] = clause_count.fetch(0) + 2 + t1 = LogicNode.new(LogicNodeType::And, + [ + do_equiv_cnf(LogicNode.new(LogicNodeType::Or, [a, b]), clause_count, raise_on_explosion:), + do_equiv_cnf(LogicNode.new(LogicNodeType::Or, [a, c]), clause_count, raise_on_explosion:) + ] + ).reduce + raise "?" unless t1.nested_cnf? + t1 + else + # this is + # (A || B), where either A and/or B is a disjunction + a = do_equiv_cnf(left, clause_count, raise_on_explosion:) + b = do_equiv_cnf(right, clause_count, raise_on_explosion:) + + clause_count[0] = clause_count.fetch(0) + 2 + t1 = LogicNode.new(LogicNodeType::Or, [a, b]).reduce + t1 = t1.nested_cnf? ? t1 : do_equiv_cnf(t1, clause_count, raise_on_explosion:).reduce + raise "?" unless t1.nested_cnf? + t1 + end + end + private :distribute_or + + class SizeExplosion < RuntimeError; end + + # rewrite to Conjunctive Normal Form (i.e., product-of-sums) using Demorgan's laws + sig { + params( + node: LogicNode, + clause_count: T::Array[Integer], + raise_on_explosion: T::Boolean + ) + .returns(LogicNode) + .checked(:never) + } + def do_equiv_cnf(node, clause_count = [0], raise_on_explosion:) + return node if node.nested_cnf? == true + + if raise_on_explosion && clause_count.fetch(0) > 10 + raise SizeExplosion + end + + cnf_node = + if node.type == LogicNodeType::And + raise "??" unless node.children.size == 2 + left = node.node_children.fetch(0) + right = node.node_children.fetch(1) + + left = do_equiv_cnf(left, clause_count, raise_on_explosion:).reduce + right = do_equiv_cnf(right, clause_count, raise_on_explosion:).reduce + # left and right are in cnf form + # If we and them together, the result is still cnf + LogicNode.new(LogicNodeType::And, [left, right]).reduce + elsif node.type == LogicNodeType::Or + raise "??" unless node.children.size == 2 + # distributed or over and + distribute_or( + node.node_children.fetch(0), + node.node_children.fetch(1), + clause_count, + raise_on_explosion: + ) + else + unless [ + node.type == LogicNodeType::Term, + (node.type == LogicNodeType::Not && \ + node.node_children.fetch(0).type == LogicNodeType::Term), + node.type == LogicNodeType::True, + node.type == LogicNodeType::False + ].any? + raise "?? #{node.to_s(format: LogicSymbolFormat::C)}" + end + node.reduce + end + if cnf_node.frozen? + raise "?" unless cnf_node.memo.is_nested_cnf + else + cnf_node.memo.is_nested_cnf = true + end + cnf_node + end + private :do_equiv_cnf + + # flattens a boolean expression using associativity rules. + # It simplifies nested AND and OR operations by merging them into a single level. + # + # @example + # ((A || B) || C) => (A || B || C) + sig { params(node: LogicNode).returns(LogicNode) } + def flatten_cnf(node) + if node.type == LogicNodeType::And + flattened_kids = node.node_children.map { |child| flatten_cnf(child) } + + if flattened_kids.any? { |child| child.type == LogicNodeType::False } + # whole conjunction can be reduced to false + False + else + non_literal_kids = flattened_kids.reject { |child| child.type == LogicNodeType::True } + flat_children = non_literal_kids.flat_map do |child| + if child.type == LogicNodeType::And + child.node_children + else + child + end + end + + if flat_children.empty? + True + elsif flat_children.size == 1 + flat_children.fetch(0) + else + LogicNode.new(LogicNodeType::And, flat_children) + end + end + elsif node.type == LogicNodeType::Or + flattened_kids = node.node_children.map { |child| flatten_cnf(child) } + + if flattened_kids.any? { |child| child.type == LogicNodeType::True } + # whole disjunction can be reduced to true + True + else + non_literal_kids = flattened_kids.reject { |child| child.type == LogicNodeType::False } + flat_children = non_literal_kids.flat_map do |child| + if child.type == LogicNodeType::Or + child.node_children + else + child + end + end + + if flat_children.empty? + False + elsif flat_children.size == 1 + flat_children.fetch(0) + else + LogicNode.new(LogicNodeType::Or, flat_children) + end + end + else + node + end + end + private :flatten_cnf + + # reduce the equation by removing easy identities: + # + # (A || B || .. || true) => true + # (A || B || .. || Z || !Z) => true + # (A && B && .. && false) => false + # (A && B && .. && Z && !Z) => false + # NONE(A, B, ..., true) => false + # false -> A => true + # true -> A => A + sig { returns(LogicNode) } + def reduce + unless @memo.is_reduced.nil? + raise "?" unless @memo.is_reduced == true + return self + end + + reduced = + case @type + when LogicNodeType::And + reduced = LogicNode.new(LogicNodeType::And, node_children.map { |child| child.reduce }) + # see if there is a false term or a contradiction (a && !a) + # if so, reduce to false + must_be_false = reduced.node_children.any? do |child| + + # a false anywhere will make the conjunction false + child.type == LogicNodeType::False || + + # a contradiction (a && !a) will make the conjunction false + (child.type == LogicNodeType::Term && + reduced.node_children.any? do |other_child| + + other_child.type == LogicNodeType::Not && \ + other_child.node_children.fetch(0).type == LogicNodeType::Term && \ + child.children.fetch(0) == other_child.node_children.fetch(0).children.fetch(0) + end) + end + if must_be_false + False + else + + # eliminate True + true_reduced_children = reduced.node_children.reject { |c| c.type == LogicNodeType::True } + if true_reduced_children.size != reduced.children.size + reduced = + if true_reduced_children.size == 0 + True + elsif true_reduced_children.size == 1 + true_reduced_children.fetch(0) + else + LogicNode.new(LogicNodeType::And, true_reduced_children) + end + end + + reduced + end + when LogicNodeType::Or + reduced = LogicNode.new(LogicNodeType::Or, node_children.map { |child| child.reduce }) + # see if there is a true term or a tautology (a || !a) + # if so, reduce to true + must_be_true = reduced.node_children.any? do |child| + + # a true anywhere will make the disjunction true + child.type == LogicNodeType::True || + + # a tautology (a || !a) will make the disjunction true + (child.type == LogicNodeType::Term && + reduced.node_children.any? do |other_child| + + other_child.type == LogicNodeType::Not && \ + other_child.node_children.fetch(0).type == LogicNodeType::Term && \ + child.children.fetch(0) == other_child.node_children.fetch(0).children.fetch(0) + end) + end + if must_be_true + True + else + + # eliminate False + false_reduced_children = reduced.node_children.reject { |c| c.type == LogicNodeType::False } + if false_reduced_children.size != reduced.children.size + reduced = + if false_reduced_children.size == 0 + False + elsif false_reduced_children.size == 1 + false_reduced_children.fetch(0) + else + LogicNode.new(LogicNodeType::Or, false_reduced_children) + end + end + + reduced + end + when LogicNodeType::Xor + reduced = LogicNode.new(LogicNodeType::Xor, node_children.map { |child| child.reduce }) + xor_with_self = reduced.children.size == 2 && + reduced.node_children.fetch(0).type == LogicNodeType::Term && + reduced.node_children.fetch(1).type == LogicNodeType::Term && + reduced.node_children.fetch(0).children.fetch(0) == reduced.node_children.fetch(1).children.fetch(0) + if xor_with_self + # xor with self if always false + False + else + reduced + end + when LogicNodeType::If + reduced = LogicNode.new(LogicNodeType::If, node_children.map { |child| child.reduce }) + antecedent = reduced.node_children.fetch(0) + consequent = reduced.node_children.fetch(1) + if antecedent.type == LogicNodeType::True + consequent + elsif antecedent.type == LogicNodeType::False + return True + elsif consequent.type == LogicNodeType::True + return True + elsif consequent.type == LogicNodeType::False + return LogicNode.new(LogicNodeType::Not, [antecedent]) + else + reduced + end + when LogicNodeType::Not + reduced = LogicNode.new(LogicNodeType::Not, node_children.map { |child| child.reduce }) + child = reduced.node_children.fetch(0) + if child.type == LogicNodeType::Not + # !!a = a + reduced.node_children.fetch(0).node_children.fetch(0) + elsif child.type == LogicNodeType::False + # !false = true + return True + elsif child.type == LogicNodeType::True + # !true = false + return False + else + reduced + end + when LogicNodeType::None + if node_children.any? { |c| c.type == LogicNodeType::True } + True + else + self.dup + end + when LogicNodeType::True, LogicNodeType::False, LogicNodeType::Term + self + else + T.absurd(@type) + end + + if reduced.memo.is_reduced.nil? + reduced.memo.is_reduced = true + end + reduced + end + + # coverts self to an equivalent formula in Conjunctive Normal Form + # and returns it as a new formula (self is unmodified) + # + # iteratively uses Demorgan's Laws. May explode since the worst case + # is exponential in the number of clauses + sig { params(raise_on_explosion: T::Boolean).returns(LogicNode) } + def equiv_cnf(raise_on_explosion: true) + @memo.equiv_cnf ||= + begin + r = reduce + return r if r.type == LogicNodeType::True || r.type == LogicNodeType::False + + n = r.nnf + + candidate = n.reduce + candidate = n.group_by_2 + unflattened = do_equiv_cnf(candidate, raise_on_explosion:) + result = flatten_cnf(unflattened).reduce + if result.frozen? + raise "?" unless result.memo.is_cnf == true + else + result.memo.is_cnf = true + end + result + end + end + + # coverts self to an equisatisfiable formula in Conjunctive Normal Form + # and returns it as a new formula (self is unmodified) + sig { returns(LogicNode) } + def equisat_cnf + return @memo.equisat_cnf unless @memo.equisat_cnf.nil? + return self if @type == LogicNodeType::True + return self if @type == LogicNodeType::False + + # strategy: try conversion using Demorgan's laws first. If that appears to be getting too + # large (exponential in the worst case), fall back on the tseytin transformation + @memo.equisat_cnf = + if @memo.equiv_cnf.nil? + if terms.count > 4 || literals.count > 10 + tseytin + else + # try demorgan first, then fall back if it gets too big + begin + equiv_cnf + rescue SizeExplosion + tseytin + end + end + else + # we already calculated an equivalent cnf, which is also equisatisfiable + @mem.equiv_cnf + end + end + + # returns true iff tree is in Conjunctive Normal Form + sig { returns(T::Boolean) } + def cnf? + unless @memo.is_cnf.nil? + return @memo.is_cnf + end + + ret = + case @type + when LogicNodeType::Term, LogicNodeType::True, LogicNodeType::False + true + when LogicNodeType::Not + node_children.fetch(0).type == LogicNodeType::Term + when LogicNodeType::Or + node_children.all? do |child| + [ + child.type == LogicNodeType::True, + child.type == LogicNodeType::False, + child.type == LogicNodeType::Term, + child.type == LogicNodeType::Not && \ + child.node_children.fetch(0).type == LogicNodeType::Term + ].any? + end + when LogicNodeType::Xor, LogicNodeType::If, LogicNodeType::None + false + when LogicNodeType::And + node_children.all? { |child| child.cnf_conjunction_term? } + else + T.absurd(@type) + end + + @memo.is_cnf = ret + end + + # returns true iff tree is in Disjunctive Normal Form + sig { returns(T::Boolean) } + def dnf? + case @type + when LogicNodeType::Term, LogicNodeType::True, LogicNodeType::False + true + when LogicNodeType::Not + node_children.fetch(0).type == LogicNodeType::Term + when LogicNodeType::Or + node_children.all? { |child| child.dnf_disjunctive_term? } + when LogicNodeType::And + node_children.all? do |child| + [ + child.type == LogicNodeType::True, + child.type == LogicNodeType::False, + child.type == LogicNodeType::Term, + child.type == LogicNodeType::Not && \ + child.node_children.fetch(0).type == LogicNodeType::Term + ].any? + end + when LogicNodeType::Xor, LogicNodeType::If, LogicNodeType::None + false + else + T.absurd(@type) + end + end + + # @api private + # returns true iff tree is a valid term in a cnf conjunction + sig { returns(T::Boolean) } + def cnf_conjunction_term? + case @type + when LogicNodeType::Term, LogicNodeType::True, LogicNodeType::False + true + when LogicNodeType::Not + node_children.fetch(0).type == LogicNodeType::Term + when LogicNodeType::Or + # or is only valid if only contains literals + node_children.all? do |child| + [ + child.type == LogicNodeType::True, + child.type == LogicNodeType::False, + child.type == LogicNodeType::Term, + ((child.type == LogicNodeType::Not) && \ + child.node_children.fetch(0).type == LogicNodeType::Term) + ].any? + end + when LogicNodeType::And, LogicNodeType::Xor, LogicNodeType::If, LogicNodeType::None + false + else + T.absurd(@type) + end + end + + # @api private + # returns true iff tree is a valid term in a dnf disjunction + sig { returns(T::Boolean) } + def dnf_disjunctive_term? + case @type + when LogicNodeType::Term, LogicNodeType::True, LogicNodeType::False + true + when LogicNodeType::Not + node_children.fetch(0).type == LogicNodeType::Term + when LogicNodeType::And + # and is only valid if only contains literals + node_children.all? do |child| + [ + child.type == LogicNodeType::True, + child.type == LogicNodeType::False, + child.type == LogicNodeType::Term, + ((child.type == LogicNodeType::Not) && \ + child.node_children.fetch(0).type == LogicNodeType::Term) + ] + end + when LogicNodeType::Or, LogicNodeType::Xor, LogicNodeType::If, LogicNodeType::None + false + else + T.absurd(@type) + end + end + + # @api private + # returns true iff tree is a valid term in a nested cnf conjunction + sig { params(ancestor_or: T::Boolean).returns(T::Boolean) } + def nested_cnf_conjunction_term?(ancestor_or) + case @type + when LogicNodeType::Term, LogicNodeType::True, LogicNodeType::False + true + when LogicNodeType::Not + node_children.fetch(0).type == LogicNodeType::Term + when LogicNodeType::Or + node_children.all? do |child| + [ + child.type == LogicNodeType::True, + child.type == LogicNodeType::False, + child.type == LogicNodeType::Term, + ((child.type == LogicNodeType::Not) && \ + child.node_children.fetch(0).type == LogicNodeType::Term), + child.type == LogicNodeType::Or && child.nested_cnf_conjunction_term?(true) + ].any? + end + when LogicNodeType::And + return false if ancestor_or + + node_children.all? do |child| + [ + child.type == LogicNodeType::True, + child.type == LogicNodeType::False, + child.type == LogicNodeType::Term, + ((child.type == LogicNodeType::Not) && \ + child.node_children.fetch(0).type == LogicNodeType::Term), + (child.type == LogicNodeType::Or && \ + child.nested_cnf_conjunction_term?(true)), + (child.type == LogicNodeType::And && \ + child.nested_cnf_conjunction_term?(ancestor_or)) + ].any? + end + when LogicNodeType::Xor, LogicNodeType::If, LogicNodeType::None + false + else + T.absurd(@type) + end + end + + # returns true iff tree, if flattened, would be cnf + # allows nested ANDs as long as there is no ancestor OR + # allows nested ORs as long as there is no decendent AND + sig { returns(T::Boolean) } + def nested_cnf? + unless @memo.is_nested_cnf.nil? + return @memo.is_nested_cnf + end + + ret = + case @type + when LogicNodeType::Term, LogicNodeType::True, LogicNodeType::False + true + when LogicNodeType::Not + node_children.fetch(0).type == LogicNodeType::Term + when LogicNodeType::And + node_children.all? do |child| + child.nested_cnf_conjunction_term?(false) + end + when LogicNodeType::Or + # or is only valid if only it recursively contains only literals or disjunctions + node_children.all? do |child| + [ + child.type == LogicNodeType::True, + child.type == LogicNodeType::False, + child.type == LogicNodeType::Term, + ((child.type == LogicNodeType::Not) && \ + child.node_children.fetch(0).type == LogicNodeType::Term), + child.type == LogicNodeType::Or && \ + child.node_children.all? { |grandchild| grandchild.nested_cnf_conjunction_term?(true) } + ].any? + end + when LogicNodeType::Xor, LogicNodeType::If, LogicNodeType::None + false + else + T.absurd(@type) + end + @memo.is_nested_cnf = ret + end + + sig { params(solver: MiniSat::Solver, node: LogicNode, term_map: T::Hash[TermType, MiniSat::Variable], cur_or: T::nilable(T::Array[T.untyped])).void } + def build_solver(solver, node, term_map, cur_or) + if node.type == LogicNodeType::Term + v = term_map.fetch(T.cast(node.children.fetch(0), TermType)) + if cur_or.nil? + solver << v + else + cur_or << v + end + elsif node.type == LogicNodeType::Not + child = node.node_children.fetch(0) + term = T.cast(child.children.fetch(0), TermType) + v = -term_map.fetch(term) + if cur_or.nil? + solver << v + else + cur_or << v + end + elsif node.type == LogicNodeType::Or + node.node_children.each do |child| + build_solver(solver, child, term_map, cur_or) + end + elsif node.type == LogicNodeType::And + node.node_children.each do |child| + new_or = [] + build_solver(solver, child, term_map, new_or) + solver << new_or + end + else + raise "not in cnf" + end + end + private :build_solver + + sig { params(other: LogicNode).returns(T::Boolean) } + def always_implies?(other) + # can test that by seeing if the contradiction is satisfiable, i.e.: + # if self -> other , contradition would be self & not other + contradiction = LogicNode.new( + LogicNodeType::And, + [ + self, + LogicNode.new(LogicNodeType::Not, [other]) + ] + ) + !contradiction.satisfiable? + end + + # @return true iff self is satisfiable (possible to be true for some combination of term values) + sig { returns(T::Boolean) } + def satisfiable? + @memo.is_satisfiable ||= + begin + nterms = terms.size + + if nterms < 4 && literals.size <= 32 + # just brute force it + term_idx = T.let({}, T::Hash[TermType, Integer]) + terms.each_with_index do |term, idx| + term_idx[term] = idx + end + # define the callback outside the loop to avoid allocating a new block on every iteration + val_out_of_loop = 0 + cb = LogicNode.make_eval_cb do |term| + ((val_out_of_loop >> term_idx.fetch(term)) & 1).zero? ? SatisfiedResult::No : SatisfiedResult::Yes + end + + if nterms.zero? + return eval_cb(cb) == SatisfiedResult::Yes + else + (2**nterms).to_i.times do |i| + val_out_of_loop = i + if eval_cb(cb) == SatisfiedResult::Yes + return true + end + end + end + return false + + else + # use SAT solver + + + c = self.cnf? ? self : equisat_cnf + raise "cnf error" unless c.cnf? + + if c.type == LogicNodeType::True + return true + elsif c.type == LogicNodeType::False + return false + end + + t = c.terms + + solver = MiniSat::Solver.new + + term_map = T.let({}, T::Hash[TermType, MiniSat::Variable]) + t.each do |term| + unless term_map.key?(term) + term_map[term] = solver.new_var + end + end + raise "term mapping failed" unless t.uniq == term_map.keys + + build_solver(solver, flatten_cnf(c), term_map, nil) + + solver.solve + solver.satisfied? + end + end + end + + sig { params(other: LogicNode).returns(T::Boolean) } + def equisatisfiable?(other) + if satisfiable? + other.satisfiable? + else + !other.satisfiable? + end + end + + # @return true iff self and other are logically equivalent (identical truth tables) + sig { params(other: LogicNode).returns(T::Boolean) } + def equivalent?(other) + # equivalent (A <=> B) if the biconditional is true: + # (A -> B) && (B -> A) + # or, expressed without implication: + # (!A || B) && (!B || A) + + # equivalence is a tautology iff ~(A <=> B) is a contradiction, + # i.e., !(A <=> B) is UNSATISFIABLE + # !((!A || B) && (!B || A)) is UNSATISFIABLE + + r = self + other = other + contradiction = LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new(LogicNodeType::Not, [r]), + other + ] + ), + LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new(LogicNodeType::Not, [r]), + self + ] + ) + ] + ) + ] + ) + !contradiction.satisfiable? + end + + sig { + params( + tree: LogicNode, + term_map: T::Hash[TermType, String] + ) + .returns(String) + .checked(:never) + } + def do_to_eqntott(tree, term_map) + t = tree.type + case t + when LogicNodeType::True + "1" + when LogicNodeType::False + "0" + when LogicNodeType::And + "(#{tree.node_children.map { |child| do_to_eqntott(child, term_map) }.join(" & ")})" + when LogicNodeType::Or + "(#{tree.node_children.map { |child| do_to_eqntott(child, term_map) }.join(" | ")})" + when LogicNodeType::Xor + do_to_eqntott(tree.nnf, term_map) + when LogicNodeType::None + do_to_eqntott(LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Or, tree.children)]), term_map) + when LogicNodeType::Term + term_map.fetch(T.cast(tree.children.fetch(0), TermType)) + when LogicNodeType::Not + "!(#{do_to_eqntott(tree.node_children.fetch(0), term_map)})" + when LogicNodeType::If + do_to_eqntott(tree.nnf, term_map) + else + T.absurd(t) + end + end + + class EqntottResult < T::Struct + const :eqn, String + const :term_map, T::Hash[String, TermType] + end + + # return equation suitable for `eqntott` input + sig { returns(EqntottResult) } + def to_eqntott + next_term_name = "a" + term_map = T.let({}, T::Hash[TermType, String]) + t = terms + t.each do |term| + unless term_map.key?(term) + term_map[term] = next_term_name + next_term_name = next_term_name.next + end + end + + EqntottResult.new(eqn: "out = #{do_to_eqntott(self, term_map)}", term_map: term_map.invert) + end + + # @api private + sig { params(node: LogicNode).returns(LogicNode) } + def distribute_not_helper(node) + child = node.node_children.fetch(0) + child_type = child.type + case child_type + when LogicNodeType::And + LogicNode.new(LogicNodeType::Or, child.children.map { |c| LogicNode.new(LogicNodeType::Not, [c]).distribute_not }) + when LogicNodeType::Or + LogicNode.new(LogicNodeType::And, child.children.map { |c| LogicNode.new(LogicNodeType::Not, [c]).distribute_not }) + when LogicNodeType::Not + if child.node_children.fetch(0).type == LogicNodeType::Term + child.node_children.fetch(0) + else + distribute_not_helper(child) + end + when LogicNodeType::Term + self + when LogicNodeType::True + LogicNode.new(LogicNodeType::False, []) + when LogicNodeType::False + LogicNode.new(LogicNodeType::True, []) + when LogicNodeType::None, LogicNodeType::Xor, LogicNodeType::If + raise "Expecting format to start in CNF or DNF" + else + T.absurd(child_type) + end + end + private :distribute_not_helper + + # @api private + sig { returns(LogicNode) } + def distribute_not + # recursively apply demorgan until we get to terms + raise "Not a negation" unless @type == LogicNodeType::Not + + distribute_not_helper(self) + end + + # @api private + sig { + params(subformulae: T::Array[LogicNode]) + .void + .checked(:never) + } + def collect_tseytin(subformulae) + case @type + when LogicNodeType::And + # (¬A ∨ ¬B ∨ p) ∧ (A ∨ ¬p) ∧ (B ∨ ¬p) + a = node_children.fetch(0).tseytin_prop + b = node_children.fetch(1).tseytin_prop + subformulae << + LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Or, + [ + LogicNode.new(LogicNodeType::Not, [a]), + LogicNode.new(LogicNodeType::Not, [b]), + tseytin_prop + ] + ), + LogicNode.new(LogicNodeType::Or, + [ + a, + LogicNode.new(LogicNodeType::Not, [tseytin_prop]) + ] + ), + LogicNode.new(LogicNodeType::Or, + [ + b, + LogicNode.new(LogicNodeType::Not, [tseytin_prop]) + ] + ) + ] + ) + node_children.fetch(0).collect_tseytin(subformulae) + node_children.fetch(1).collect_tseytin(subformulae) + when LogicNodeType::Or + # (A ∨ B ∨ ¬p) ∧ (¬A ∨ p) ∧ (¬B ∨ p) + a = node_children.fetch(0).tseytin_prop + b = node_children.fetch(1).tseytin_prop + subformulae << + LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Or, [a, b, LogicNode.new(LogicNodeType::Not, [tseytin_prop])]), + LogicNode.new(LogicNodeType::Or, [LogicNode.new(LogicNodeType::Not, [a]), tseytin_prop]), + LogicNode.new(LogicNodeType::Or, [LogicNode.new(LogicNodeType::Not, [b]), tseytin_prop]) + ] + ) + node_children.fetch(0).collect_tseytin(subformulae) + node_children.fetch(1).collect_tseytin(subformulae) + when LogicNodeType::Not + # (A ∨ p) ∧ (¬A ∨ ¬p) + a = node_children.fetch(0).tseytin_prop + subformulae << + LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Or, [a, tseytin_prop]), + LogicNode.new(LogicNodeType::Or, [ + LogicNode.new(LogicNodeType::Not, [a]), + LogicNode.new(LogicNodeType::Not, [tseytin_prop]), + ]) + ] + ) + node_children.fetch(0).collect_tseytin(subformulae) + when LogicNodeType::True, LogicNodeType::False + # pass + when LogicNodeType::Term + # pass + else + raise "? #{@type}" + end + end + + # a free variable representing this formula + sig { returns(LogicNode) } + def tseytin_prop + case @type + when LogicNodeType::Term, LogicNodeType::True, LogicNodeType::False + self + else + @tseytin_prop ||= + LogicNode.new(LogicNodeType::Term, [FreeTerm.new]) + end + end + + # @api private + sig { returns(LogicNode) } + def tseytin + subformulae = [] + r = reduce + return r if [LogicNodeType::Term, LogicNodeType::True, LogicNodeType::False].any?(r.type) + + grouped = r.group_by_2 + grouped.collect_tseytin(subformulae) + + if subformulae.size == 0 + raise "? #{r}" + elsif subformulae.size == 1 + subformulae.fetch(0) + else + equisatisfiable_formula = LogicNode.new(LogicNodeType::And, subformulae + [grouped.tseytin_prop]) + flatten_cnf(equisatisfiable_formula).reduce + end + end + + sig { returns(String) } + def to_dimacs + if @type == LogicNodeType::Term + <<~DIMACS + p cnf 1 1 + 1 0 + DIMACS + elsif @type == LogicNodeType::Not + <<~DIMACS + p cnf 1 1 + -1 0 + DIMACS + elsif @type == LogicNodeType::True || @type == LogicNodeType::False + raise "Cannot represent true/false in DIMACS" + elsif @type == LogicNodeType::And + lines = ["p cnf #{terms.size} #{@children.size}"] + lines += node_children.map do |child| + if child.type == LogicNodeType::Or + term_line = child.node_children.map do |grandchild| + if grandchild.type == LogicNodeType::Not + (-(T.must(terms.index(grandchild.node_children.fetch(0).node_children.fetch(0))) + 1)).to_s + elsif grandchild.type == LogicNodeType::Term + (T.must(terms.index(grandchild.node_children.fetch(0))) + 1).to_s + end + end.join(" ") + "#{term_line} 0" + elsif child.type == LogicNodeType::Term + "#{T.must(terms.index(child.children.fetch(0))) + 1} 0" + elsif child.type == LogicNodeType::Not + "-#{T.must(terms.index(child.node_children.fetch(0).children.fetch(0))) + 1} 0" + else + raise "Not CNF" + end + end + + lines.join("\n") + else + raise "Not CNF" + end + end + + sig { params(dimacs: String).returns(LogicNode) } + def from_dimacs(dimacs) + nodes = dimacs.each_line.map do |line| + if line =~ /^(((-?\d+) )+)0/ + ts = T.let($1.strip.split(" "), T::Array[String]) + if ts.size == 1 + t = ts.fetch(0) + if t[0] == "-" + index = t[1..].to_i - 1 + LogicNode.new( + LogicNodeType::Not, + [LogicNode.new(LogicNodeType::Term, [terms.fetch(index)])] + ) + else + index = t.to_i - 1 + LogicNode.new(LogicNodeType::Term, [terms.fetch(index)]) + end + else + LogicNode.new(LogicNodeType::Or, + ts.map do |t| + if t[0] == "-" + i = t[1..].to_i - 1 + LogicNode.new( + LogicNodeType::Not, + [LogicNode.new(LogicNodeType::Term, [terms.fetch(i)])] + ) + else + i = t.to_i - 1 + LogicNode.new(LogicNodeType::Term, [terms.fetch(i)]) + end + end + ) + end + else + nil + end + end.compact + + if nodes.size == 1 + nodes.fetch(0) + else + LogicNode.new(LogicNodeType::And, nodes) + end + end + + # return minimally unsatisfiable subsets of the unstatisfiable formula + sig { returns(T::Array[LogicNode]) } + def minimal_unsat_subsets + r = reduce + c = r.equiv_cnf(raise_on_explosion: false) + Tempfile.create(%w/formula .cnf/) do |f| + f.write c.to_dimacs + f.flush + + Tempfile.create do |rf| + # run must, re-use the tempfile for the result + `must -o #{rf.path} #{f.path}` + unless $?.success? + raise "could not find minimal subsets" + end + + rf.rewind + result = rf.read + + mus_dimacs = T.let([], T::Array[String]) + cur_dimacs = T.let(nil, T.nilable(String)) + result.each_line do |line| + if line =~ /MUS #\d+/ + mus_dimacs << cur_dimacs unless cur_dimacs.nil? + cur_dimacs = "" + else + cur_dimacs = T.must(cur_dimacs) + line + end + end + mus_dimacs << T.must(cur_dimacs) + + return mus_dimacs.map { |d| c.from_dimacs(d) } + end + end + end + + + # minimize the function using espresso + sig { + params( + result_type: CanonicalizationType, + exact: T::Boolean + ) + .returns(LogicNode) + } + def espresso(result_type, exact) + nterms = terms.size + + pla = + if nterms > 4 || literals.size >= 32 + + eqn_result = + if result_type == CanonicalizationType::SumOfProducts + to_eqntott + elsif result_type == CanonicalizationType::ProductOfSums + LogicNode.new(LogicNodeType::Not, [self]).to_eqntott + else + T.absurd(result_type) + end + tt = T.let(nil, T.nilable(String)) + Tempfile.open do |f| + f.write <<~FILE + NAME=f; + #{eqn_result.eqn}; + FILE + f.flush + + tt = `eqntott -l #{f.path}` + unless $?.success? + raise "eqntott failure" + end + end + + if T.must(tt).lines.any? { |l| l =~ /^\.p 0/ } + if result_type == CanonicalizationType::SumOfProducts + # short circuit here, it's trivially false + return LogicNode.new(LogicNodeType::False, []) + else + # short circuit here, it's trivially true + return LogicNode.new(LogicNodeType::True, []) + end + end + tt + else + + term_idx = T.let({}, T::Hash[TermType, Integer]) + terms.each_with_index do |term, idx| + term_idx[term] = idx + end + + # define the callback outside the loop to avoid allocating a new block on every iteration + val_out_of_loop = 0 + cb = LogicNode.make_eval_cb do |term| + ((val_out_of_loop >> term_idx.fetch(term)) & 1).zero? ? SatisfiedResult::No : SatisfiedResult::Yes + end + + tt = T.let([], T::Array[T::Array[String]]) + (1 << nterms).times do |val| + val_out_of_loop = val + if result_type == CanonicalizationType::SumOfProducts + if eval_cb(cb) == SatisfiedResult::Yes + tt << [val.to_s(2).rjust(nterms, "0").reverse, "1"] + else + tt << [val.to_s(2).rjust(nterms, "0").reverse, "0"] + end + elsif result_type == CanonicalizationType::ProductOfSums + if eval_cb(cb) == SatisfiedResult::Yes + tt << [val.to_s(2).rjust(nterms, "0").reverse, "0"] + else + tt << [val.to_s(2).rjust(nterms, "0").reverse, "1"] + end + end + end + + <<~INFILE + .i #{nterms} + .o 1 + .na f + .ob out + .p #{tt.size} + #{tt.map { |t| t.join(" ") }.join("\n")} + INFILE + end + + Tempfile.open do |f| + f.write pla + f.flush + + cmd = + if exact + "espresso -Dsignature #{f.path}" + else + "espresso -efast #{f.path}" + end + result = `#{cmd} 2>&1` + unless $?.success? + raise "espresso failure\n#{result}" + end + + sop_terms = [] + always_true = T.let(false, T::Boolean) + result.lines.each_with_index do |line, idx| + next if line[0] == "." + next if line[0] == "#" + + if line =~ /^([01\-]{#{terms.size}}) 1/ + term = $1 + conjunction_kids = [] + terms.size.times do |i| + if term[i] == "1" + conjunction_kids << LogicNode.new(LogicNodeType::Term, [terms.fetch(i)]) + elsif term[i] == "0" + conjunction_kids << LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [terms.fetch(i)])]) + else + raise "unexpected" unless term[i] == "-" + end + end + if conjunction_kids.size == 1 + sop_terms << conjunction_kids.fetch(0) + elsif conjunction_kids.size > 0 + sop_terms << LogicNode.new(LogicNodeType::And, conjunction_kids) + else + # always true + always_true = true + end + end + end + + sop = + if sop_terms.size == 1 + sop_terms.fetch(0) + elsif sop_terms.size > 0 + LogicNode.new(LogicNodeType::Or, sop_terms) + else + always_true ? LogicNode.new(LogicNodeType::True, []) : LogicNode.new(LogicNodeType::False, []) + end + + if result_type == CanonicalizationType::SumOfProducts + sop + else + # result is actually !result, so negate it and then distribute + LogicNode.new(LogicNodeType::Not, [sop]).distribute_not + end + end + + end + + # @api private + sig { override.returns(Integer) } + def hash = to_h.hash + + sig { override.params(other: T.untyped).returns(T::Boolean) } + def eql?(other) + return false unless other.is_a?(LogicNode) + + to_h.eql?(other.to_h) + end + end +end diff --git a/tools/ruby-gems/udb/lib/udb/obj/certificate.rb b/tools/ruby-gems/udb/lib/udb/obj/certificate.rb index 712168b54a..f673fec499 100644 --- a/tools/ruby-gems/udb/lib/udb/obj/certificate.rb +++ b/tools/ruby-gems/udb/lib/udb/obj/certificate.rb @@ -1,3 +1,4 @@ +# typed: false # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear @@ -16,8 +17,8 @@ module Udb # Holds information from processor certificate class YAML file. # The inherited "data" member is the database of extensions, instructions, CSRs, etc. -class ProcCertClass < PortfolioClass -end + class ProcCertClass < PortfolioClass + end ####################### # ProcCertModel Class # @@ -25,278 +26,278 @@ class ProcCertClass < PortfolioClass # Holds information about a processor certificate model YAML file. # The inherited "data" member is the database of extensions, instructions, CSRs, etc. -class ProcCertModel < Portfolio - # @param obj_yaml [Hash] Contains contents of Certificate Model yaml file (put in @data) - # @param data_path [String] Path to yaml file - # @param arch [Architecture] Database of RISC-V standards - def initialize(obj_yaml, yaml_path, arch) - super # Calls parent class with the same args I got - end + class ProcCertModel < Portfolio + # @param obj_yaml [Hash] Contains contents of Certificate Model yaml file (put in @data) + # @param data_path [String] Path to yaml file + # @param arch [Architecture] Database of RISC-V standards + def initialize(obj_yaml, yaml_path, arch) + super # Calls parent class with the same args I got + end - def unpriv_isa_manual_revision = @data["unpriv_isa_manual_revision"] - def priv_isa_manual_revision = @data["priv_isa_manual_revision"] - def debug_manual_revision = @data["debug_manual_revision"] + def unpriv_isa_manual_revision = @data["unpriv_isa_manual_revision"] + def priv_isa_manual_revision = @data["priv_isa_manual_revision"] + def debug_manual_revision = @data["debug_manual_revision"] - def tsc_profile_release - return nil if @data["tsc_profile_release"].nil? + def tsc_profile_release + return nil if @data["tsc_profile_release"].nil? - profile_release = @arch.ref(@data["tsc_profile_release"]['$ref']) + profile_release = @arch.ref(@data["tsc_profile_release"]["$ref"]) - raise "No profile release called '#{@data["tsc_profile_release"]}' exists" if profile_release.nil? + raise "No profile release called '#{@data["tsc_profile_release"]}' exists" if profile_release.nil? - profile_release - end + profile_release + end - def in_scope_priv_modes = @data["in_scope_priv_modes"] + def in_scope_priv_modes = @data["in_scope_priv_modes"] - # @return [ProcCertClass] The certification class that this model belongs to. - def proc_cert_class - proc_cert_class = @arch.ref(@data["class"]['$ref']) - raise "No processor certificate class named '#{@data["class"]}'" if proc_cert_class.nil? + # @return [ProcCertClass] The certification class that this model belongs to. + def proc_cert_class + proc_cert_class = @arch.ref(@data["class"]["$ref"]) + raise "No processor certificate class named '#{@data["class"]}'" if proc_cert_class.nil? - proc_cert_class - end + proc_cert_class + end - ##################### - # Requirement Class # - ##################### + ##################### + # Requirement Class # + ##################### - # Holds extra requirements not associated with extensions or their parameters. - class Requirement - # @param data [Hash] Data from yaml - # @param arch [Architecture] Architecture standards - def initialize(data, arch) - raise ArgumentError, "Bad data" unless data.is_a?(Hash) - raise ArgumentError, "Need Architecture class but it's a #{arch.class}" unless arch.is_a?(Architecture) + # Holds extra requirements not associated with extensions or their parameters. + class Requirement + # @param data [Hash] Data from yaml + # @param arch [Architecture] Architecture standards + def initialize(data, arch) + raise ArgumentError, "Bad data" unless data.is_a?(Hash) + raise ArgumentError, "Need Architecture class but it's a #{arch.class}" unless arch.is_a?(Architecture) - @data = data - @arch = arch - end + @data = data + @arch = arch + end - def name = @data["name"] - def description = @data["description"] - def when = @data["when"] - - def when_pretty - @data["when"].keys.map do |key| - case key - when "xlen" - "XLEN == #{@data["when"]["xlen"]}" - when "param" - @data["when"]["param"].map do |param_name, param_value| - "Parameter #{param_name} == #{param_value}" + def name = @data["name"] + def description = @data["description"] + def when = @data["when"] + + def when_pretty + @data["when"].keys.map do |key| + case key + when "xlen" + "XLEN == #{@data["when"]["xlen"]}" + when "param" + @data["when"]["param"].map do |param_name, param_value| + "Parameter #{param_name} == #{param_value}" + end + else + raise "Type #{key} not implemented" end - else - raise "Type #{key} not implemented" - end - end.flatten.join(" and ") + end.flatten.join(" and ") + end end - end - ########################## - # RequirementGroup Class # - ########################## - - # Holds a group of Requirement objects to provide a one-level group. - # Can't nest RequirementGroup objects to make multi-level group. - class RequirementGroup - # @param data [Hash] Data from yaml - # @param arch [Architecture] Architecture standards - def initialize(data, arch) - raise ArgumentError, "data is a #{data.class} class containing '#{data}' but needs to be a Hash" unless data.is_a?(Hash) - raise ArgumentError, "arch is a #{arch.class} class but needs to be an Architecture class" unless arch.is_a?(Architecture) - - @data = data - @arch = arch - end + ########################## + # RequirementGroup Class # + ########################## + + # Holds a group of Requirement objects to provide a one-level group. + # Can't nest RequirementGroup objects to make multi-level group. + class RequirementGroup + # @param data [Hash] Data from yaml + # @param arch [Architecture] Architecture standards + def initialize(data, arch) + raise ArgumentError, "data is a #{data.class} class containing '#{data}' but needs to be a Hash" unless data.is_a?(Hash) + raise ArgumentError, "arch is a #{arch.class} class but needs to be an Architecture class" unless arch.is_a?(Architecture) + + @data = data + @arch = arch + end - def name = @data["name"] - def description = @data["description"] - def when = @data["when"] - - def when_pretty - @data["when"].keys.map do |key| - case key - when "xlen" - "XLEN == #{@data["when"]["xlen"]}" - when "param" - @data["when"]["param"].map do |param_name, param_value| - "Parameter #{param_name} == #{param_value}" + def name = @data["name"] + def description = @data["description"] + def when = @data["when"] + + def when_pretty + @data["when"].keys.map do |key| + case key + when "xlen" + "XLEN == #{@data["when"]["xlen"]}" + when "param" + @data["when"]["param"].map do |param_name, param_value| + "Parameter #{param_name} == #{param_value}" + end + else + raise "Type #{key} not implemented" end - else - raise "Type #{key} not implemented" - end - end.flatten.join(" and ") - end + end.flatten.join(" and ") + end - # @return [Array] The list of requirements in this group. - def requirements - return @requirements unless @requirements.nil? + # @return [Array] The list of requirements in this group. + def requirements + return @requirements unless @requirements.nil? - @requirements = [] - @data["requirements"].each do |req| - @requirements << Requirement.new(req, @arch) + @requirements = [] + @data["requirements"].each do |req| + @requirements << Requirement.new(req, @arch) + end + @requirements end - @requirements end - end - # @return [Array] The list of requirement groups - def requirement_groups - return @requirement_groups unless @requirement_groups.nil? + # @return [Array] The list of requirement groups + def requirement_groups + return @requirement_groups unless @requirement_groups.nil? - @requirement_groups = [] - @data["requirement_groups"]&.each do |req_key, req_group| - @requirement_groups << RequirementGroup.new(req_group, @arch) unless req_key == "$child_of" || req_key == "$parent_of" + @requirement_groups = [] + @data["requirement_groups"]&.each do |req_key, req_group| + @requirement_groups << RequirementGroup.new(req_group, @arch) unless req_key == "$child_of" || req_key == "$parent_of" + end + @requirement_groups end - @requirement_groups - end - ################################### - # Routines using InScopeParameter # - ################################### + ################################### + # Routines using InScopeParameter # + ################################### - # @return [Array] Sorted list of parameters specified by any extension in portfolio. - # These are always IN-SCOPE by definition (since they are listed in the portfolio). - # Can have multiple array entries with the same parameter name since multiple extensions may define - # the same parameter. - def all_in_scope_params - return @all_in_scope_params unless @all_in_scope_params.nil? + # @return [Array] Sorted list of parameters specified by any extension in portfolio. + # These are always IN-SCOPE by definition (since they are listed in the portfolio). + # Can have multiple array entries with the same parameter name since multiple extensions may define + # the same parameter. + def all_in_scope_params + return @all_in_scope_params unless @all_in_scope_params.nil? - @all_in_scope_params = [] + @all_in_scope_params = [] - @data["extensions"].each do |ext_name, ext_data| - next if ext_name[0] == "$" + @data["extensions"].each do |ext_name, ext_data| + next if ext_name[0] == "$" - # Find Extension object from database - ext = @arch.extension(ext_name) - if ext.nil? - raise "Cannot find extension named #{ext_name}" - end + # Find Extension object from database + ext = @arch.extension(ext_name) + if ext.nil? + raise "Cannot find extension named #{ext_name}" + end - ext_data["param_constraints"]&.each do |param_name, param_data| - param = ext.params.find { |p| p.name == param_name } - raise "There is no param '#{param_name}' in extension '#{ext_name}" if param.nil? + ext_data["param_constraints"]&.each do |param_name, param_data| + param = ext.params.find { |p| p.name == param_name } + raise "There is no param '#{param_name}' in extension '#{ext_name}" if param.nil? - next unless param.when.could_be_satisfied_by_ext_reqs?(in_scope_ext_reqs) + next unless param.defined_by_condition.satisfied_by_cfg_arch?(to_cfg_arch) == SatisfiedResult::Yes - @all_in_scope_params << InScopeParameter.new(param, param_data["schema"], param_data["note"]) + @all_in_scope_params << InScopeParameter.new(param, param_data["schema"], param_data["note"]) + end end + @all_in_scope_params.sort! end - @all_in_scope_params.sort! - end - # @param [ExtensionRequirement] - # @return [Array] Sorted list of extension parameters from portfolio for given extension. - # These are always IN SCOPE by definition (since they are listed in the portfolio). - def in_scope_params(ext_req) - raise ArgumentError, "Expecting ExtensionRequirement" unless ext_req.is_a?(ExtensionRequirement) + # @param [ExtensionRequirement] + # @return [Array] Sorted list of extension parameters from portfolio for given extension. + # These are always IN SCOPE by definition (since they are listed in the portfolio). + def in_scope_params(ext_req) + raise ArgumentError, "Expecting ExtensionRequirement" unless ext_req.is_a?(ExtensionRequirement) - params = [] # Local variable, no caching + params = [] # Local variable, no caching - # Get extension information from portfolio YAML for passed in extension requirement. - ext_data = @data["extensions"][ext_req.name] - raise "Cannot find extension named #{ext_req.name}" if ext_data.nil? + # Get extension information from portfolio YAML for passed in extension requirement. + ext_data = @data["extensions"][ext_req.name] + raise "Cannot find extension named #{ext_req.name}" if ext_data.nil? - # Find Extension object from database - ext = @arch.extension(ext_req.name) - raise "Cannot find extension named #{ext_req.name}" if ext.nil? + # Find Extension object from database + ext = @arch.extension(ext_req.name) + raise "Cannot find extension named #{ext_req.name}" if ext.nil? - # Loop through an extension's parameter constraints (hash) from the certificate model. - # Note that "&" is the Ruby safe navigation operator (i.e., skip do loop if nil). - ext_data["param_constraints"]&.each do |param_name, param_data| - # Find Parameter object from database - param = ext.params.find { |p| p.name == param_name } - raise "There is no param '#{param_name}' in extension '#{ext_req.name}" if param.nil? + # Loop through an extension's parameter constraints (hash) from the certificate model. + # Note that "&" is the Ruby safe navigation operator (i.e., skip do loop if nil). + ext_data["param_constraints"]&.each do |param_name, param_data| + # Find Parameter object from database + param = ext.params.find { |p| p.name == param_name } + raise "There is no param '#{param_name}' in extension '#{ext_req.name}" if param.nil? - next unless param.when.could_be_satisfied_by_ext_reqs?(in_scope_ext_reqs) + next unless param.satisfied_by_cfg_arch?(to_cfg_arch) - params << InScopeParameter.new(param, param_data["schema"], param_data["note"]) - end + params << InScopeParameter.new(param, param_data["schema"], param_data["note"]) + end - params.sort! - end + params.sort! + end - # @return [Array] Sorted list of parameters out of scope across all in scope extensions - # (those listed as mandatory or optional in the certificate model). - def all_out_of_scope_params - return @all_out_of_scope_params unless @all_out_of_scope_params.nil? + # @return [Array] Sorted list of parameters out of scope across all in scope extensions + # (those listed as mandatory or optional in the certificate model). + def all_out_of_scope_params + return @all_out_of_scope_params unless @all_out_of_scope_params.nil? - @all_out_of_scope_params = [] - in_scope_ext_reqs.each do |ext_req| - ext = @arch.extension(ext_req.name) - ext.params.each do |param| - next if all_in_scope_params.any? { |c| c.param.name == param.name } + @all_out_of_scope_params = [] + in_scope_ext_reqs.each do |ext_req| + ext = @arch.extension(ext_req.name) + ext.params.each do |param| + next if all_in_scope_params.any? { |c| c.param.name == param.name } - @all_out_of_scope_params << param + @all_out_of_scope_params << param + end end + @all_out_of_scope_params.sort! end - @all_out_of_scope_params.sort! - end - # @param ext_name [String] Extension name - # @return [Array] Sorted list of parameters that are out of scope for named extension. - def out_of_scope_params(ext_name) - all_out_of_scope_params.select{ |param| param.exts.any? { |ext| ext.name == ext_name } }.sort - end + # @param ext_name [String] Extension name + # @return [Array] Sorted list of parameters that are out of scope for named extension. + def out_of_scope_params(ext_name) + all_out_of_scope_params.select { |param| param.exts.any? { |ext| ext.name == ext_name } }.sort + end - # @param param [Parameter] - # @return [Array] Sorted list of all in-scope extensions that define this parameter - # in the database and the parameter is in-scope. - def all_in_scope_exts_with_param(param) - raise ArgumentError, "Expecting Parameter" unless param.is_a?(Parameter) + # @param param [Parameter] + # @return [Array] Sorted list of all in-scope extensions that define this parameter + # in the database and the parameter is in-scope. + def all_in_scope_exts_with_param(param) + raise ArgumentError, "Expecting Parameter" unless param.is_a?(Parameter) - exts = [] + exts = [] - # Iterate through all the extensions in the architecture database that define this parameter. - param.exts.each do |ext| - found = false + # Iterate through all the extensions in the architecture database that define this parameter. + param.exts.each do |ext| + found = false - in_scope_extensions.each do |potential_ext| - if ext.name == potential_ext.name - found = true - next + in_scope_extensions.each do |potential_ext| + if ext.name == potential_ext.name + found = true + next + end end - end - if found - # Only add extensions that exist in this certificate model. - exts << ext + if found + # Only add extensions that exist in this certificate model. + exts << ext + end end - end - # Return intersection of extension names - exts.sort_by!(&:name) - end + # Return intersection of extension names + exts.sort_by!(&:name) + end - # @param param [Parameter] - # @return [Array] List of all in-scope extensions that define this parameter in the - # database but the parameter is out-of-scope. - def all_in_scope_exts_without_param(param) - raise ArgumentError, "Expecting Parameter" unless param.is_a?(Parameter) + # @param param [Parameter] + # @return [Array] List of all in-scope extensions that define this parameter in the + # database but the parameter is out-of-scope. + def all_in_scope_exts_without_param(param) + raise ArgumentError, "Expecting Parameter" unless param.is_a?(Parameter) - exts = [] # Local variable, no caching + exts = [] # Local variable, no caching - # Iterate through all the extensions in the architecture database that define this parameter. - param.exts.each do |ext| - found = false + # Iterate through all the extensions in the architecture database that define this parameter. + param.exts.each do |ext| + found = false - in_scope_extensions.each do |potential_ext| - if ext.name == potential_ext.name - found = true - next + in_scope_extensions.each do |potential_ext| + if ext.name == potential_ext.name + found = true + next + end end - end - if found - # Only add extensions that are in-scope (i.e., exist in this certificate model). + if found + # Only add extensions that are in-scope (i.e., exist in this certificate model). exts << ext + end end - end - # Return intersection of extension names - exts.sort_by!(&:name) + # Return intersection of extension names + exts.sort_by!(&:name) + end end -end end diff --git a/tools/ruby-gems/udb/lib/udb/obj/csr.rb b/tools/ruby-gems/udb/lib/udb/obj/csr.rb index 5cbc672c28..4a3ab2cfdd 100644 --- a/tools/ruby-gems/udb/lib/udb/obj/csr.rb +++ b/tools/ruby-gems/udb/lib/udb/obj/csr.rb @@ -12,688 +12,665 @@ module Udb # CSR definition -class Csr < TopLevelDatabaseObject - # Add all methods in this module to this type of database object. - include CertifiableObject + class Csr < TopLevelDatabaseObject + # Add all methods in this module to this type of database object. + include CertifiableObject - include Idl::Csr + include Idl::Csr - sig { override.returns(String) } - attr_reader :name + sig { override.returns(String) } + attr_reader :name - def ==(other) - if other.is_a?(Csr) - name == other.name - else - raise ArgumentError, "Csr is not comparable to #{other.class.name}" + def ==(other) + if other.is_a?(Csr) + name == other.name + else + raise ArgumentError, "Csr is not comparable to #{other.class.name}" + end end - end - # @return [Integer] CSR address (the value passed as an immediate to csrrw, etc.) - # @return [nil] if the CSR is indirect-accesss-only - def address - @data["address"] - end - - # @return [Boolean] Whether or not the CSR can be accessed by indirect address - def indirect? - @data.key?("indirect_address") - end - - # @return [Integer] The indirect address - def indirect_address - @data["indirect_address"] - end + # @return [Integer] CSR address (the value passed as an immediate to csrrw, etc.) + # @return [nil] if the CSR is indirect-accesss-only + def address + @data["address"] + end - # @return [Integer] The indirect window slot - def indirect_slot - @data["indirect_slot"] - end + # @return [Boolean] Whether or not the CSR can be accessed by indirect address + def indirect? + @data.key?("indirect_address") + end - # @return [String] Least-privileged mode that can access this CSR. One of ['m', 's', 'u', 'vs', 'vu'] - def priv_mode - @data["priv_mode"] - end + # @return [Integer] The indirect address + def indirect_address + @data["indirect_address"] + end - def long_name - @data["long_name"] - end + # @return [Integer] The indirect window slot + def indirect_slot + @data["indirect_slot"] + end - # @return [Integer] CSR address in VS/VU mode, if different from other modes - # @return [nil] If the CSR is not accessible in VS/VU mode, or if it's address does not change in those modes - def virtual_address - @data["virtual_address"] - end + # @return [String] Least-privileged mode that can access this CSR. One of ['m', 's', 'u', 'vs', 'vu'] + def priv_mode + @data["priv_mode"] + end - sig { override.returns(T.nilable(Integer)) } - def value - return nil unless fields.all? { |f| f.type == "RO" } + def long_name + @data["long_name"] + end - fields.reduce(0) { |val, f| val | (f.reset_value << f.location.begin) } - end + # @return [Integer] CSR address in VS/VU mode, if different from other modes + # @return [nil] If the CSR is not accessible in VS/VU mode, or if it's address does not change in those modes + def virtual_address + @data["virtual_address"] + end - # can this CSR be implemented if +ext_name+ is not? - sig { override.params(ext_name: String).returns(T::Boolean) } - def implemented_without?(ext_name) - raise "#{ext_name} is not an extension" if @cfg_arch.extension(ext_name).nil? + sig { override.returns(T.nilable(Integer)) } + def value + return nil unless fields.all? { |f| f.type == "RO" } - defined_by_condition.satisfied_by? do |ext_req| - if ext_req.name == ext_name - false - else - @cfg_arch.possible_extension_versions.any? { |ext_ver| ext_req.satisfied_by?(ext_ver) } - end + fields.reduce(0) { |val, f| val | (T.cast(f.reset_value, Integer) << f.location.begin) } end - end - def writable - @data["writable"] - end + def writable + @data["writable"] + end - # @return [Integer] 32 or 64, the XLEN this CSR is exclusively defined in - # @return [nil] if this CSR is defined in all bases - def base = @data["base"] + # @return [Integer] 32 or 64, the XLEN this CSR is exclusively defined in + # @return [nil] if this CSR is defined in all bases + def base = @data["base"] - # @return [Boolean] true if this CSR is defined when XLEN is 32 - def defined_in_base32? = @data["base"].nil? || @data["base"] == 32 + # @return [Boolean] true if this CSR is defined when XLEN is 32 + def defined_in_base32? = @data["base"].nil? || @data["base"] == 32 - # @return [Boolean] true if this CSR is defined when XLEN is 64 - def defined_in_base64? = @data["base"].nil? || @data["base"] == 64 + # @return [Boolean] true if this CSR is defined when XLEN is 64 + def defined_in_base64? = @data["base"].nil? || @data["base"] == 64 - # @return [Boolean] true if this CSR is defined regardless of the effective XLEN - def defined_in_all_bases? = @data["base"].nil? + # @return [Boolean] true if this CSR is defined regardless of the effective XLEN + def defined_in_all_bases? = @data["base"].nil? - # @return [Boolean] true if this CSR is defined when XLEN is xlen - # @param xlen [32,64] base - def defined_in_base?(xlen) = @data["base"].nil? || @data["base"] == xlen + # @return [Boolean] true if this CSR is defined when XLEN is xlen + # @param xlen [32,64] base + def defined_in_base?(xlen) = @data["base"].nil? || @data["base"] == xlen - # @return [Boolean] Whether or not the format of this CSR changes when the effective XLEN changes in some mode - def format_changes_with_xlen? - dynamic_length? || \ - (defined_in_all_bases? && (possible_fields_for(32) != possible_fields_for(64))) || \ - possible_fields.any?(&:dynamic_location?) - end + # @return [Boolean] Whether or not the format of this CSR changes when the effective XLEN changes in some mode + def format_changes_with_xlen? + dynamic_length? || \ + (defined_in_all_bases? && (possible_fields_for(32) != possible_fields_for(64))) || \ + possible_fields.any?(&:dynamic_location?) + end - # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic - # @return [Array] List of functions reachable from this CSR's sw_read or a field's sw_write function - def reachable_functions(effective_xlen = nil) - raise ArgumentError, "effective_xlen is non-nil and is a #{effective_xlen.class} but must be an Integer" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) - return @reachable_functions unless @reachable_functions.nil? + # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic + # @return [Array] List of functions reachable from this CSR's sw_read or a field's sw_write function + def reachable_functions(effective_xlen = nil) + raise ArgumentError, "effective_xlen is non-nil and is a #{effective_xlen.class} but must be an Integer" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) + return @reachable_functions unless @reachable_functions.nil? - fns = [] + fns = [] - if has_custom_sw_read? - xlens = - if cfg_arch.multi_xlen? - defined_in_all_bases? ? [32, 64] : [base] - else - [cfg_arch.possible_xlens[0]] + if has_custom_sw_read? + xlens = + if cfg_arch.multi_xlen? + defined_in_all_bases? ? [32, 64] : [base] + else + [cfg_arch.possible_xlens[0]] + end + xlens.each do |xlen| + ast = pruned_sw_read_ast(xlen) + symtab = cfg_arch.symtab.deep_clone + symtab.push(ast) + fns.concat(ast.reachable_functions(symtab)) end - xlens.each do |xlen| - ast = pruned_sw_read_ast(xlen) - symtab = cfg_arch.symtab.deep_clone - symtab.push(ast) - fns.concat(ast.reachable_functions(symtab)) end - end - if cfg_arch.multi_xlen? - possible_fields_for(32).each do |field| - fns.concat(field.reachable_functions(32)) - end - possible_fields_for(64).each do |field| - fns.concat(field.reachable_functions(64)) - end - else - possible_fields_for(cfg_arch.mxlen).each do |field| - fns.concat(field.reachable_functions(cfg_arch.mxlen)) + if cfg_arch.multi_xlen? + possible_fields_for(32).each do |field| + fns.concat(field.reachable_functions(32)) + end + possible_fields_for(64).each do |field| + fns.concat(field.reachable_functions(64)) + end + else + possible_fields_for(cfg_arch.mxlen).each do |field| + fns.concat(field.reachable_functions(cfg_arch.mxlen)) + end end - end - - @reachable_functions = fns.uniq - end - # @return [Boolean] Whether or not the length of the CSR depends on a runtime value - # (e.g., mstatus.SXL) - def dynamic_length? - return false if @data["length"].is_a?(Integer) - - # when a CSR is only defined in one base, its length can't change - return false unless @data["base"].nil? - - case @data["length"] - when "MXLEN" - # mxlen can never change at runtime, so if we have it in the config, the length is not dynamic - # if we don't have it in the config, we don't know what the length is - cfg_arch.mxlen.nil? - when "SXLEN" - # dynamic if either we don't know SXLEN or SXLEN is explicitly mutable - [nil, 3264].include?(cfg_arch.param_values["SXLEN"]) - when "VSXLEN" - # dynamic if either we don't know VSXLEN or VSXLEN is explicitly mutable - [nil, 3264].include?(cfg_arch.param_values["VSXLEN"]) - when "XLEN" - # must always have M-mode - # SXLEN condition applies if S-mode is possible - # VSXLEN condition applies if VS-mode is possible - (cfg_arch.mxlen.nil?) || \ - (cfg_arch.possible_extensions.map(&:name).include?("S") && \ - [nil, 3264].include?(cfg_arch.param_values["SXLEN"])) || \ - (cfg_arch.possible_extensions.map(&:name).include?("H") && \ - [nil, 3264].include?(cfg_arch.param_values["VSXLEN"])) - else - raise "Unexpected length" + @reachable_functions = fns.uniq end - end - # @param cfg_arch [ConfiguredArchitecture] Architecture definition - # @return [Integer] Smallest length of the CSR in any mode - def min_length - case @data["length"] - when "MXLEN", "SXLEN", "VSXLEN", "XLEN" - @cfg_arch.possible_xlens.min - when Integer - @data["length"] - else - raise "Unexpected length" + # @return [Boolean] Whether or not the length of the CSR depends on a runtime value + # (e.g., mstatus.SXL) + def dynamic_length? + return false if @data["length"].is_a?(Integer) + + # when a CSR is only defined in one base, its length can't change + return false unless @data["base"].nil? + + case @data["length"] + when "MXLEN" + # mxlen can never change at runtime, so if we have it in the config, the length is not dynamic + # if we don't have it in the config, we don't know what the length is + cfg_arch.mxlen.nil? + when "SXLEN" + # dynamic if either we don't know SXLEN or SXLEN is explicitly mutable + cfg_arch.param_values["SXLEN"].nil? || cfg_arch.param_values["SXLEN"].size > 1 + when "VSXLEN" + # dynamic if either we don't know VSXLEN or VSXLEN is explicitly mutable + !cfg_arch.param_values.key?("VSXLEN") || cfg_arch.param_values["VSXLEN"].size > 1 + when "XLEN" + # must always have M-mode + # SXLEN condition applies if S-mode is possible + # VSXLEN condition applies if VS-mode is possible + (cfg_arch.mxlen.nil?) || \ + (cfg_arch.possible_extensions.map(&:name).include?("S") && \ + (cfg_arch.param_values["SXLEN"].nil? || cfg_arch.param_values["SXLEN"].size > 1)) && \ + (cfg_arch.possible_extensions.map(&:name).include?("H") && \ + (cfg_arch.param_values["VSXLEN"].nil? || cfg_arch.param_values["VSXLEN"].size > 1)) + else + raise "Unexpected length" + end end - end - - # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic - sig { override.params(effective_xlen: T.nilable(Integer)).returns(T.nilable(Integer)) } - def length(effective_xlen = nil) - case @data["length"] - when "MXLEN" - return T.must(cfg_arch.mxlen) unless cfg_arch.mxlen.nil? - if !@data["base"].nil? - @data["base"] + # @param cfg_arch [ConfiguredArchitecture] Architecture definition + # @return [Integer] Smallest length of the CSR in any mode + def min_length + case @data["length"] + when "MXLEN", "SXLEN", "VSXLEN", "XLEN" + @cfg_arch.possible_xlens.min + when Integer + @data["length"] else - # don't know MXLEN - effective_xlen + raise "Unexpected length" end - when "SXLEN" - if cfg_arch.param_values.key?("SXLEN") - if cfg_arch.param_values["SXLEN"] == 3264 - effective_xlen + end + + # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic + sig { override.params(effective_xlen: T.nilable(Integer)).returns(T.nilable(Integer)) } + def length(effective_xlen = nil) + case @data["length"] + when "MXLEN" + return T.must(cfg_arch.mxlen) unless cfg_arch.mxlen.nil? + + if !@data["base"].nil? + @data["base"] else - cfg_arch.param_values["SXLEN"] - end - elsif !@data["base"].nil? - # if this CSR is only available in one base, then we know its length - @data["base"] - else - # don't know SXLEN - effective_xlen - end - when "VSXLEN" - if cfg_arch.param_values.key?("VSXLEN") - if cfg_arch.param_values["VSXLEN"] == 3264 + # don't know MXLEN effective_xlen - else - cfg_arch.param_values["VSXLEN"] end - elsif !@data["base"].nil? - # if this CSR is only available in one base, then we know its length - @data["base"] - else - # don't know VSXLEN - effective_xlen - end - when "XLEN" - effective_xlen - when Integer - @data["length"] - else - raise "Unexpected length field for #{name}" - end - end - - # @return [Integer] The largest length of this CSR in any valid mode/xlen for the config - # sig { override.returns(Integer) } dhower: sorbet doesn't think this is an override?? - sig { override.returns(Integer) } - def max_length - return @data["base"] unless @data["base"].nil? - - case @data["length"] - when "MXLEN" - cfg_arch.mxlen || 64 - when "SXLEN" - if cfg_arch.param_values.key?("SXLEN") - if cfg_arch.param_values["SXLEN"] == 3264 - 64 + when "SXLEN" + if cfg_arch.param_values.key?("SXLEN") + if cfg_arch.param_values["SXLEN"].size > 1 + effective_xlen + else + cfg_arch.param_values["SXLEN"][0] + end + elsif !@data["base"].nil? + # if this CSR is only available in one base, then we know its length + @data["base"] else - cfg_arch.param_values["SXLEN"] + # don't know SXLEN + effective_xlen end - else - 64 - end - when "VSXLEN" - if cfg_arch.param_values.key?("VSXLEN") - if cfg_arch.param_values["VSXLEN"] == 3264 - 64 + when "VSXLEN" + if cfg_arch.param_values.key?("VSXLEN") + if cfg_arch.param_values["VSXLEN"].size > 1 + effective_xlen + else + cfg_arch.param_values["VSXLEN"][0] + end + elsif !@data["base"].nil? + # if this CSR is only available in one base, then we know its length + @data["base"] else - cfg_arch.param_values["VSXLEN"] + # don't know VSXLEN + effective_xlen end + when "XLEN" + effective_xlen + when Integer + @data["length"] else - 64 + raise "Unexpected length field for #{name}" end - when "XLEN" - if cfg_arch.possible_extensions.map(&:name).include?("M") + end + + # @return [Integer] The largest length of this CSR in any valid mode/xlen for the config + # sig { override.returns(Integer) } dhower: sorbet doesn't think this is an override?? + sig { override.returns(Integer) } + def max_length + return @data["base"] unless @data["base"].nil? + + case @data["length"] + when "MXLEN" cfg_arch.mxlen || 64 - elsif cfg_arch.possible_extensions.map(&:name).include?("S") + when "SXLEN" if cfg_arch.param_values.key?("SXLEN") - if cfg_arch.param_values["SXLEN"] == 3264 - 64 + if cfg_arch.param_values["SXLEN"].size > 1 + cfg_arch.param_values["SXLEN"].max else - cfg_arch.param_values["SXLEN"] + cfg_arch.param_values.fetch("SXLEN").fetch(0) end else - # SXLEN can never be greater than MXLEN - cfg_arch.mxlen || 64 + 64 end - elsif cfg_arch.possible_extensions.map(&:name).include?("H") + when "VSXLEN" if cfg_arch.param_values.key?("VSXLEN") - if cfg_arch.param_values["VSXLEN"] == 3264 - 64 + if cfg_arch.param_values["VSXLEN"].size > 1 + cfg_arch.param_values["VSXLEN"].max else - cfg_arch.param_values["VSXLEN"] + cfg_arch.param_values["VSXLEN"][0] end else - # VSXLEN can never be greater than MXLEN or SXLEN + 64 + end + when "XLEN" + if cfg_arch.possible_extensions.map(&:name).include?("M") + cfg_arch.mxlen || 64 + elsif cfg_arch.possible_extensions.map(&:name).include?("S") if cfg_arch.param_values.key?("SXLEN") - if cfg_arch.param_values["SXLEN"] == 3264 - 64 + if cfg_arch.param_values.fetch("SXLEN").size > 1 + cfg_arch.param_values.fetch("SXLEN").max else - cfg_arch.param_values["SXLEN"] + cfg_arch.param_values.fetch("SXLEN").fetch(0) end else + # SXLEN can never be greater than MXLEN cfg_arch.mxlen || 64 end + elsif cfg_arch.possible_extensions.map(&:name).include?("H") + if cfg_arch.param_values.key?("VSXLEN") + if cfg_arch.param_values["VSXLEN"].size > 1 + cfg_arch.param_values["VSXLEN"].max + else + cfg_arch.param_values["VSXLEN"][0] + end + else + # VSXLEN can never be greater than MXLEN or SXLEN + if cfg_arch.param_values.key?("SXLEN") + if cfg_arch.param_values.fetch("SXLEN").size > 1 + cfg_arch.param_values.fetch("SXLEN").max + else + cfg_arch.param_values.fetch("SXLEN").fetch(0) + end + else + cfg_arch.mxlen || 64 + end + end + else + raise "Unexpected" end + when Integer + @data["length"] else - raise "Unexpected" + raise "Unexpected length field for #{name}" end - when Integer - @data["length"] - else - raise "Unexpected length field for #{name}" end - end - # @return [String] IDL condition of when the effective xlen is 32 - def length_cond32 - case @data["length"] - when "MXLEN" - "CSR[misa].MXL == 0" - when "SXLEN" - "CSR[mstatus].SXL == 0" - when "VSXLEN" - "CSR[hstatus].VSXL == 0" - when "XLEN" - "(priv_mode() == PrivilegeMode::M && CSR[misa].MXL == 0) || (priv_mode() == PrivilegeMode::S && CSR[mstatus].SXL == 0) || (priv_mode() == PrivilegeMode::VS && CSR[hstatus].VSXL == 0)" - else - raise "Unexpected length #{@data['length']} for #{name}" + # @return [String] IDL condition of when the effective xlen is 32 + def length_cond32 + case @data["length"] + when "MXLEN" + "CSR[misa].MXL == 0" + when "SXLEN" + "CSR[mstatus].SXL == 0" + when "VSXLEN" + "CSR[hstatus].VSXL == 0" + when "XLEN" + "(priv_mode() == PrivilegeMode::M && CSR[misa].MXL == 0) || (priv_mode() == PrivilegeMode::S && CSR[mstatus].SXL == 0) || (priv_mode() == PrivilegeMode::VS && CSR[hstatus].VSXL == 0)" + else + raise "Unexpected length #{@data['length']} for #{name}" + end end - end - # @return [String] IDL condition of when the effective xlen is 64 - def length_cond64 - case @data["length"] - when "MXLEN" - "CSR[misa].MXL == 1" - when "SXLEN" - "CSR[mstatus].SXL == 1" - when "VSXLEN" - "CSR[hstatus].VSXL == 1" - when "XLEN" - "(priv_mode() == PrivilegeMode::M && CSR[misa].MXL == 1) || (priv_mode() == PrivilegeMode::S && CSR[mstatus].SXL == 1) || (priv_mode() == PrivilegeMode::VS && CSR[hstatus].VSXL == 1)" - else - raise "Unexpected length" + # @return [String] IDL condition of when the effective xlen is 64 + def length_cond64 + case @data["length"] + when "MXLEN" + "CSR[misa].MXL == 1" + when "SXLEN" + "CSR[mstatus].SXL == 1" + when "VSXLEN" + "CSR[hstatus].VSXL == 1" + when "XLEN" + "(priv_mode() == PrivilegeMode::M && CSR[misa].MXL == 1) || (priv_mode() == PrivilegeMode::S && CSR[mstatus].SXL == 1) || (priv_mode() == PrivilegeMode::VS && CSR[hstatus].VSXL == 1)" + else + raise "Unexpected length" + end end - end - # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic - # @return [String] Pretty-printed length string - def length_pretty(effective_xlen=nil) - raise ArgumentError, "effective_xlen is non-nil and is a #{effective_xlen.class} but must be an Integer" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) - if dynamic_length? - cond = - case @data["length"] - when "MXLEN" - "CSR[misa].MXL == %%" - when "SXLEN" - "CSR[mstatus].SXL == %%" - when "VSXLEN" - "CSR[hstatus].VSXL == %%" - when "XLEN" - "(priv_mode() == PrivilegeMode::M && CSR[misa].MXL == %%) || (priv_mode() == PrivilegeMode::S && CSR[mstatus].SXL == %%) || (priv_mode() == PrivilegeMode::VS && CSR[hstatus].VSXL == %%)" + # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic + # @return [String] Pretty-printed length string + def length_pretty(effective_xlen = nil) + raise ArgumentError, "effective_xlen is non-nil and is a #{effective_xlen.class} but must be an Integer" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) + if dynamic_length? + cond = + case @data["length"] + when "MXLEN" + "CSR[misa].MXL == %%" + when "SXLEN" + "CSR[mstatus].SXL == %%" + when "VSXLEN" + "CSR[hstatus].VSXL == %%" + when "XLEN" + "(priv_mode() == PrivilegeMode::M && CSR[misa].MXL == %%) || (priv_mode() == PrivilegeMode::S && CSR[mstatus].SXL == %%) || (priv_mode() == PrivilegeMode::VS && CSR[hstatus].VSXL == %%)" + else + raise "Unexpected length '#{@data['length']}'" + end + + if effective_xlen.nil? + [ + "* #{length(32)} when #{cond.sub('%%', '0')}", + "* #{length(64)} when #{cond.sub('%%', '1')}" + ].join("\n") else - raise "Unexpected length '#{@data['length']}'" + "#{length(effective_xlen)}-bit" end + else + "#{length}-bit" + end + end - if effective_xlen.nil? - [ - "* #{length(32)} when #{cond.sub('%%', '0')}", - "* #{length(64)} when #{cond.sub('%%', '1')}" - ].join("\n") + # list of modes that can potentially access the field + def modes_with_access + case @data["priv_mode"] + when "M" + ["M"] + when "S" + ["M", "S", "VS"] + when "U" + ["M", "S", "U", "VS", "VU"] + when "VS" + ["M", "S", "VS"] + when "D" + ["M", "D"] else - "#{length(effective_xlen)}-bit" + raise "unexpected priv mode" end - else - "#{length()}-bit" end - end - # list of modes that can potentially access the field - def modes_with_access - case @data["priv_mode"] - when "M" - ["M"] - when "S" - ["M", "S", "VS"] - when "U" - ["M", "S", "U", "VS", "VU"] - when "VS" - ["M", "S", "VS"] - when "D" - ["M", "D"] - else - raise "unexpected priv mode" + # parse description field with asciidoctor, and return the HTML result + # + # @return [String] Parsed description in HTML + def description_html + Asciidoctor.convert description end - end - # parse description field with asciidoctor, and return the HTML result - # - # @return [String] Parsed description in HTML - def description_html - Asciidoctor.convert description - end + # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic + # @return [Array] All implemented fields for this CSR at the given effective XLEN, sorted by location (smallest location first) + # Excluded any fields that are defined by unimplemented extensions or a base that is not effective_xlen + def possible_fields_for(effective_xlen) - # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic - # @return [Array] All implemented fields for this CSR at the given effective XLEN, sorted by location (smallest location first) - # Excluded any fields that are defined by unimplemented extensions or a base that is not effective_xlen - def possible_fields_for(effective_xlen) + raise ArgumentError, "effective_xlen is non-nil and is a #{effective_xlen.class} but must be an Integer" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) - raise ArgumentError, "effective_xlen is non-nil and is a #{effective_xlen.class} but must be an Integer" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) + @possible_fields_for ||= {} + @possible_fields_for[effective_xlen] ||= + possible_fields.select do |f| + f.base.nil? || f.base == effective_xlen + end + end - @possible_fields_for ||= {} - @possible_fields_for[effective_xlen] ||= - possible_fields.select do |f| - f.base.nil? || f.base == effective_xlen + # @return [Array] All implemented fields for this CSR + # Excluded any fields that are defined by unimplemented extensions + sig { returns(T::Array[CsrField]) } + def possible_fields + @possible_fields ||= fields.select do |f| + f.exists_in_cfg?(cfg_arch) end - end - - # @return [Array] All implemented fields for this CSR - # Excluded any fields that are defined by unimplemented extensions - sig {returns(T::Array[CsrField])} - def possible_fields - @possible_fields ||= fields.select do |f| - f.exists_in_cfg?(cfg_arch) end - end - # @return [Array] All known fields of this CSR - sig { override.returns(T::Array[CsrField]) } - def fields - return @fields unless @fields.nil? + # @return [Array] All known fields of this CSR + sig { override.returns(T::Array[CsrField]) } + def fields + return @fields unless @fields.nil? - @fields = @data["fields"].map { |field_name, field_data| CsrField.new(self, field_name, field_data) } - end - - # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic - # @return [Array] All known fields of this CSR when XLEN == +effective_xlen+ - # equivalent to {#fields} if +effective_xlen+ is nil - sig {params(effective_xlen: T.nilable(Integer)).returns(T::Array[CsrField])} - def fields_for(effective_xlen) - fields.select { |f| effective_xlen.nil? || f.base.nil? || f.base == effective_xlen } - end - - # @return [Hash] Hash of fields, indexed by field name - def field_hash - @field_hash unless @field_hash.nil? + @fields = @data["fields"].map { |field_name, field_data| CsrField.new(self, field_name, field_data) } + end - @field_hash = {} - fields.each do |field| - @field_hash[field.name] = field + # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic + # @return [Array] All known fields of this CSR when XLEN == +effective_xlen+ + # equivalent to {#fields} if +effective_xlen+ is nil + sig { params(effective_xlen: T.nilable(Integer)).returns(T::Array[CsrField]) } + def fields_for(effective_xlen) + fields.select { |f| effective_xlen.nil? || f.base.nil? || f.base == effective_xlen } end - @field_hash - end + # @return [Hash] Hash of fields, indexed by field name + def field_hash + @field_hash unless @field_hash.nil? - # @return [Boolean] true if a field named 'field_name' is defined in the csr, and false otherwise - def field?(field_name) - field_hash.key?(field_name.to_s) - end + @field_hash = {} + fields.each do |field| + @field_hash[field.name] = field + end - # returns [CsrField,nil] field named 'field_name' if it exists, and nil otherwise - def field(field_name) - field_hash[field_name.to_s] - end + @field_hash + end - # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic - # @return [Idl::BitfieldType] A bitfield type that can represent all fields of the CSR - def bitfield_type(cfg_arch, effective_xlen = nil) - Idl::BitfieldType.new( - "Csr#{name.capitalize}Bitfield", - length(effective_xlen), - fields_for(effective_xlen).map(&:name), - fields_for(effective_xlen).map { |f| f.location(effective_xlen) } - ) - end + # @return [Boolean] true if a field named 'field_name' is defined in the csr, and false otherwise + def field?(field_name) + field_hash.key?(field_name.to_s) + end - # @return [Boolean] true if the CSR has a custom sw_read function - def has_custom_sw_read? - @data.key?("sw_read()") && !@data["sw_read()"].empty? - end + # returns [CsrField,nil] field named 'field_name' if it exists, and nil otherwise + def field(field_name) + field_hash[field_name.to_s] + end - # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic - def type_checked_sw_read_ast(effective_xlen) - raise ArgumentError, "effective_xlen is non-nil and is a #{effective_xlen.class} but must be an Integer" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) - @type_checked_sw_read_asts ||= {} - ast = @type_checked_sw_read_asts[effective_xlen.nil? ? :none : effective_xlen] - return ast unless ast.nil? - - symtab = cfg_arch.symtab.global_clone - symtab.push(ast) - # all CSR instructions are 32-bit - unless effective_xlen.nil? - symtab.add( - "__effective_xlen", - Idl::Var.new("__effective_xlen", Idl::Type.new(:bits, width: 6), effective_xlen) + # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic + # @return [Idl::BitfieldType] A bitfield type that can represent all fields of the CSR + def bitfield_type(cfg_arch, effective_xlen = nil) + Idl::BitfieldType.new( + "Csr#{name.capitalize}Bitfield", + length(effective_xlen), + fields_for(effective_xlen).map(&:name), + fields_for(effective_xlen).map { |f| f.location(effective_xlen) } ) end - symtab.add( - "__instruction_encoding_size", - Idl::Var.new("__instruction_encoding_size", Idl::Type.new(:bits, width: 6), 32) - ) - symtab.add( - "__expected_return_type", - Idl::Type.new(:bits, width: 128) - ) - - ast = sw_read_ast(symtab) - @cfg_arch.idl_compiler.type_check( - ast, - symtab, - "CSR[#{name}].sw_read()" - ) - symtab.pop - symtab.release - @type_checked_sw_read_asts[effective_xlen.nil? ? :none : effective_xlen] = ast - end - # @return [FunctionBodyAst] The abstract syntax tree of the sw_read() function - # @param cfg_arch [ConfiguredArchitecture] A configuration - def sw_read_ast(symtab) - raise ArgumentError, "Argument should be a symtab" unless symtab.is_a?(Idl::SymbolTable) + # @return [Boolean] true if the CSR has a custom sw_read function + def has_custom_sw_read? + @data.key?("sw_read()") && !@data["sw_read()"].empty? + end - return @sw_read_ast unless @sw_read_ast.nil? - return nil if @data["sw_read()"].nil? + # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic + def type_checked_sw_read_ast(effective_xlen) + raise ArgumentError, "effective_xlen is non-nil and is a #{effective_xlen.class} but must be an Integer" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) + @type_checked_sw_read_asts ||= {} + ast = @type_checked_sw_read_asts[effective_xlen.nil? ? :none : effective_xlen] + return ast unless ast.nil? + + symtab = cfg_arch.symtab.global_clone + symtab.push(ast) + # all CSR instructions are 32-bit + unless effective_xlen.nil? + symtab.add( + "__effective_xlen", + Idl::Var.new("__effective_xlen", Idl::Type.new(:bits, width: 6), effective_xlen) + ) + end + symtab.add( + "__instruction_encoding_size", + Idl::Var.new("__instruction_encoding_size", Idl::Type.new(:bits, width: 6), 32) + ) + symtab.add( + "__expected_return_type", + Idl::Type.new(:bits, width: 128) + ) + + ast = sw_read_ast(symtab) + @cfg_arch.idl_compiler.type_check( + ast, + symtab, + "CSR[#{name}].sw_read()" + ) + symtab.pop + symtab.release + @type_checked_sw_read_asts[effective_xlen.nil? ? :none : effective_xlen] = ast + end - # now, parse the function - @sw_read_ast = @cfg_arch.idl_compiler.compile_func_body( - @data["sw_read()"], - return_type: Idl::Type.new(:bits, width: 128), # big int to hold special return values - name: "CSR[#{name}].sw_read()", - input_file: __source, - input_line: source_line(["sw_read()"]), - symtab:, - type_check: false - ) + # @return [FunctionBodyAst] The abstract syntax tree of the sw_read() function + # @param cfg_arch [ConfiguredArchitecture] A configuration + def sw_read_ast(symtab) + raise ArgumentError, "Argument should be a symtab" unless symtab.is_a?(Idl::SymbolTable) + + return @sw_read_ast unless @sw_read_ast.nil? + return nil if @data["sw_read()"].nil? + + # now, parse the function + @sw_read_ast = @cfg_arch.idl_compiler.compile_func_body( + @data["sw_read()"], + return_type: Idl::Type.new(:bits, width: 128), # big int to hold special return values + name: "CSR[#{name}].sw_read()", + input_file: __source, + input_line: source_line(["sw_read()"]), + symtab:, + type_check: false + ) - raise "unexpected #{@sw_read_ast.class}" unless @sw_read_ast.is_a?(Idl::FunctionBodyAst) + raise "unexpected #{@sw_read_ast.class}" unless @sw_read_ast.is_a?(Idl::FunctionBodyAst) - @sw_read_ast.set_input_file_unless_already_set(T.must(__source), source_line(["sw_read()"])) + @sw_read_ast.set_input_file_unless_already_set(T.must(__source), source_line(["sw_read()"])) - @sw_read_ast - end + @sw_read_ast + end - # @param ast [Idl::AstNode] An abstract syntax tree that will be evaluated with the returned symbol table - # @return [IdL::SymbolTable] A symbol table populated with globals and syms specific to this CSR - def fill_symtab(ast, effective_xlen) - symtab = @cfg_arch.symtab.global_clone - symtab.push(ast) - # all CSR instructions are 32-bit - symtab.add( - "__instruction_encoding_size", - Idl::Var.new("__instruction_encoding_size", Idl::Type.new(:bits, width: 6), 32) - ) - symtab.add( - "__expected_return_type", - Idl::Type.new(:bits, width: 128) - ) - if symtab.get("MXLEN").value.nil? + # @param ast [Idl::AstNode] An abstract syntax tree that will be evaluated with the returned symbol table + # @return [IdL::SymbolTable] A symbol table populated with globals and syms specific to this CSR + def fill_symtab(ast, effective_xlen) + symtab = @cfg_arch.symtab.global_clone + symtab.push(ast) + # all CSR instructions are 32-bit + symtab.add( + "__instruction_encoding_size", + Idl::Var.new("__instruction_encoding_size", Idl::Type.new(:bits, width: 6), 32) + ) symtab.add( - "MXLEN", - Idl::Var.new( + "__expected_return_type", + Idl::Type.new(:bits, width: 128) + ) + if symtab.get("MXLEN").value.nil? + symtab.add( "MXLEN", - Idl::Type.new(:bits, width: 6, qualifiers: [:const]), - effective_xlen, - param: true + Idl::Var.new( + "MXLEN", + Idl::Type.new(:bits, width: 6, qualifiers: [:const]), + effective_xlen, + param: true + ) ) - ) + end + symtab end - symtab - end - # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic - def pruned_sw_read_ast(effective_xlen) - raise ArgumentError, "effective_xlen is non-nil and is a #{effective_xlen.class} but must be an Integer" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) - @pruned_sw_read_ast ||= {} - return @pruned_sw_read_ast[effective_xlen] unless @pruned_sw_read_ast[effective_xlen].nil? + # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic + def pruned_sw_read_ast(effective_xlen) + raise ArgumentError, "effective_xlen is non-nil and is a #{effective_xlen.class} but must be an Integer" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) + @pruned_sw_read_ast ||= {} + return @pruned_sw_read_ast[effective_xlen] unless @pruned_sw_read_ast[effective_xlen].nil? - ast = type_checked_sw_read_ast(effective_xlen) + ast = type_checked_sw_read_ast(effective_xlen) - symtab = fill_symtab(ast, effective_xlen) + symtab = fill_symtab(ast, effective_xlen) - ast = ast.prune(symtab) - ast.freeze_tree(@cfg_arch.symtab) + ast = ast.prune(symtab) + ast.freeze_tree(@cfg_arch.symtab) - @cfg_arch.idl_compiler.type_check( - ast, - symtab, - "CSR[#{name}].sw_read()" - ) + @cfg_arch.idl_compiler.type_check( + ast, + symtab, + "CSR[#{name}].sw_read()" + ) - symtab.pop - symtab.release + symtab.pop + symtab.release - @pruned_sw_read_ast[effective_xlen] = ast - end + @pruned_sw_read_ast[effective_xlen] = ast + end - # @example Result for an I-type instruction - # {reg: [ - # {bits: 7, name: 'OP-IMM', attr: ['{op_major_name}'], type: 8}, - # {bits: 5, name: 'rd', attr: [''], type: 2}, - # {bits: 3, name: {funct3}, attr: ['{mnemonic}'], type: 8}, - # {bits: 5, name: 'rs1', attr: [''], type: 4}, - # {bits: 12, name: 'imm12', attr: [''], type: 6} - # ]} - # - # @param cfg_arch [ConfiguredArchitecture] A configuration - # @param effective_xlen [Integer,nil] Effective XLEN to use when CSR length is dynamic - # @param exclude_unimplemented [Boolean] If true, do not create include unimplemented fields in the figure - # @param optional_type [Integer] Wavedrom type (Fill color) for fields that are optional (not mandatory) in a partially-specified cfg_arch - # @return [Hash] A representation of the WaveDrom drawing for the CSR (should be turned into JSON for wavedrom) - def wavedrom_desc(cfg_arch, effective_xlen, exclude_unimplemented: false, optional_type: 2) - unless cfg_arch.is_a?(ConfiguredArchitecture) - raise ArgumentError, "cfg_arch is a class #{cfg_arch.class} but must be a ConfiguredArchitecture" - end - raise ArgumentError, "effective_xlen is non-nil and is a #{effective_xlen.class} but must be an Integer" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) - - desc = { - "reg" => [] - } - last_idx = -1 - - field_list = - if exclude_unimplemented - possible_fields_for(effective_xlen) - else - fields_for(effective_xlen) + # @example Result for an I-type instruction + # {reg: [ + # {bits: 7, name: 'OP-IMM', attr: ['{op_major_name}'], type: 8}, + # {bits: 5, name: 'rd', attr: [''], type: 2}, + # {bits: 3, name: {funct3}, attr: ['{mnemonic}'], type: 8}, + # {bits: 5, name: 'rs1', attr: [''], type: 4}, + # {bits: 12, name: 'imm12', attr: [''], type: 6} + # ]} + # + # @param cfg_arch [ConfiguredArchitecture] A configuration + # @param effective_xlen [Integer,nil] Effective XLEN to use when CSR length is dynamic + # @param exclude_unimplemented [Boolean] If true, do not create include unimplemented fields in the figure + # @param optional_type [Integer] Wavedrom type (Fill color) for fields that are optional (not mandatory) in a partially-specified cfg_arch + # @return [Hash] A representation of the WaveDrom drawing for the CSR (should be turned into JSON for wavedrom) + def wavedrom_desc(cfg_arch, effective_xlen, exclude_unimplemented: false, optional_type: 2) + unless cfg_arch.is_a?(ConfiguredArchitecture) + raise ArgumentError, "cfg_arch is a class #{cfg_arch.class} but must be a ConfiguredArchitecture" end + raise ArgumentError, "effective_xlen is non-nil and is a #{effective_xlen.class} but must be an Integer" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) + + desc = { + "reg" => [] + } + last_idx = -1 + + field_list = + if exclude_unimplemented + possible_fields_for(effective_xlen) + else + fields_for(effective_xlen) + end - field_list.sort! { |a, b| a.location(effective_xlen).min <=> b.location(effective_xlen).min } - field_list.each do |field| + field_list.sort! { |a, b| a.location(effective_xlen).min <=> b.location(effective_xlen).min } + field_list.each do |field| - if field.location(effective_xlen).min != last_idx + 1 - # have some reserved space - n = field.location(effective_xlen).min - last_idx - 1 - raise "negative reserved space? #{n} #{name} #{field.location(effective_xlen).min} #{last_idx + 1}" if n <= 0 + if field.location(effective_xlen).min != last_idx + 1 + # have some reserved space + n = field.location(effective_xlen).min - last_idx - 1 + raise "negative reserved space? #{n} #{name} #{field.location(effective_xlen).min} #{last_idx + 1}" if n <= 0 - desc["reg"] << { "bits" => n, type: 1 } + desc["reg"] << { "bits" => n, :type => 1 } + end + if cfg_arch.partially_configured? && field.optional_in_cfg?(cfg_arch) + desc["reg"] << { "bits" => field.location(effective_xlen).size, "name" => field.name, :type => optional_type } + else + desc["reg"] << { "bits" => field.location(effective_xlen).size, "name" => field.name, :type => 3 } + end + last_idx = T.cast(field.location(effective_xlen).max, Integer) end - if cfg_arch.partially_configured? && field.optional_in_cfg?(cfg_arch) - desc["reg"] << { "bits" => field.location(effective_xlen).size, "name" => field.name, type: optional_type } - else - desc["reg"] << { "bits" => field.location(effective_xlen).size, "name" => field.name, type: 3 } + if !field_list.empty? && (field_list.last.location(effective_xlen).max != (T.must(length(effective_xlen)) - 1)) + # reserved space at the end + desc["reg"] << { "bits" => (T.must(length(effective_xlen)) - 1 - last_idx), :type => 1 } + # desc['reg'] << { 'bits' => 1, type: 1 } end - last_idx = T.cast(field.location(effective_xlen).max, Integer) - end - if !field_list.empty? && (field_list.last.location(effective_xlen).max != (T.must(length(effective_xlen)) - 1)) - # reserved space at the end - desc["reg"] << { "bits" => (T.must(length(effective_xlen)) - 1 - last_idx), type: 1 } - # desc['reg'] << { 'bits' => 1, type: 1 } + desc["config"] = { "bits" => length(effective_xlen) } + desc["config"]["lanes"] = T.must(length(effective_xlen)) / 16 + desc end - desc["config"] = { "bits" => length(effective_xlen) } - desc["config"]["lanes"] = T.must(length(effective_xlen)) / 16 - desc - end - # @param cfg_arch [ConfiguredArchitecture] Architecture def - # @return [Boolean] whether or not the CSR is possibly implemented given the supplied config options - def exists_in_cfg?(cfg_arch) - raise ArgumentError, "cfg_arch is a class #{cfg_arch.class} but must be a ConfiguredArchitecture" unless cfg_arch.is_a?(ConfiguredArchitecture) + # @param cfg_arch [ConfiguredArchitecture] Architecture def + # @return [Boolean] whether or not the CSR is possibly implemented given the supplied config options + sig { params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) } + def exists_in_cfg?(cfg_arch) + @exists_in_cfg ||= defined_by_condition.could_be_satisfied_by_cfg_arch?(cfg_arch) + end - @exists_in_cfg ||= - cfg_arch.possible_csrs.include?(self) - end + # @param cfg_arch [ConfiguredArchitecture] Architecture def + # @return [Boolean] whether or not the CSR is optional in the config + sig { params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) } + def optional_in_cfg?(cfg_arch) + raise "optional_in_cfg? should only be used by a partially-specified arch def" unless cfg_arch.partially_configured? - # @param cfg_arch [ConfiguredArchitecture] Architecture def - # @return [Boolean] whether or not the CSR is optional in the config - def optional_in_cfg?(cfg_arch) - unless cfg_arch.is_a?(ConfiguredArchitecture) - raise ArgumentError, "cfg_arch is a class #{cfg_arch.class} but must be a ConfiguredArchitecture" - end - raise "optional_in_cfg? should only be used by a partially-specified arch def" unless cfg_arch.partially_configured? - - # exists in config and isn't satisfied by some combo of mandatory extensions - @optional_in_cfg ||= - exists_in_cfg?(cfg_arch) && - !defined_by_condition.satisfied_by? do |defining_ext_req| - cfg_arch.mandatory_extension_reqs.any? do |mand_ext_req| - mand_ext_req.satisfying_versions.any? do |mand_ext_ver| - defining_ext_req.satisfied_by?(mand_ext_ver) - end - end - end - end + # exists in config and isn't satisfied by some combo of mandatory extensions + @optional_in_cfg ||= + exists_in_cfg?(cfg_arch) && + (defined_by_condition.satisfied_by_cfg_arch?(cfg_arch) == SatisfiedResult::Maybe) + end - # @return [Boolean] Whether or not the presence of ext_ver affects this CSR definition - def affected_by?(ext_ver) - defined_by_condition.possibly_satisfied_by?(ext_ver) || fields.any? { |field| field.affected_by?(ext_ver) } + # @return [Boolean] Whether or not the presence of ext_ver affects this CSR definition + def affected_by?(ext_ver) + defined_by_condition.satisfiability_depends_on_ext_req?(ext_ver.to_ext_req) || \ + fields.any? { |field| field.affected_by?(ext_ver) } + end end -end end diff --git a/tools/ruby-gems/udb/lib/udb/obj/csr_field.rb b/tools/ruby-gems/udb/lib/udb/obj/csr_field.rb index 2e8d46a70f..af19344249 100644 --- a/tools/ruby-gems/udb/lib/udb/obj/csr_field.rb +++ b/tools/ruby-gems/udb/lib/udb/obj/csr_field.rb @@ -1,8 +1,8 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# frozen_string_literal: true # typed: true +# frozen_string_literal: true require "sorbet-runtime" require "idlc/passes/gen_option_adoc" @@ -13,811 +13,810 @@ module Udb # A CSR field object -class CsrField < DatabaseObject - extend T::Sig - - # Add all methods in this module to this type of database object. - include CertifiableObject - - include Idl::CsrField - - # @return [Csr] The Csr that defines this field - sig { returns(Csr) } - attr_reader :parent - - # @!attribute field - # @return [CsrField] The field being aliased - # @!attribute range - # @return [Range] Range of the aliased field that is being pointed to - Alias = Struct.new(:field, :range) - - # @return [Integer] The base XLEN required for this CsrField to exist. One of [32, 64] - # @return [nil] if the CsrField exists in any XLEN - sig { returns(T.nilable(Integer)) } - def base = @data["base"] - - # @param parent_csr [Csr] The Csr that defined this field - # @param field_data [Hash] Field data from the arch spec - sig { params(parent_csr: Csr, field_name: String, field_data: T::Hash[String, T.untyped]).void } - def initialize(parent_csr, field_name, field_data) - super(field_data, parent_csr.data_path, parent_csr.arch, DatabaseObject::Kind::CsrField, name: field_name) - @parent = parent_csr - end - - # CSR fields are defined in their parent CSR YAML file - def __source = @parent.__source - - # CSR field data starts at fields: NAME: with the YAML - sig { params(path: T::Array[String]).returns(Integer) } - def source_line(path) - super(["fields", name].concat(path)) - end - - # For a full config, whether or not the field is implemented - # For a partial config, whether or the it is possible for the field to be implemented - # - # @return [Boolean] True if this field might exist in a config - sig { params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) } - def exists_in_cfg?(cfg_arch) - if cfg_arch.fully_configured? - parent.exists_in_cfg?(cfg_arch) && - (@data["base"].nil? || cfg_arch.possible_xlens.include?(@data["base"])) && - (@data["definedBy"].nil? || cfg_arch.transitive_implemented_extension_versions.any? { |ext_ver| defined_by_condition.possibly_satisfied_by?(ext_ver) }) - elsif cfg_arch.partially_configured? - parent.exists_in_cfg?(cfg_arch) && - (@data["base"].nil? || cfg_arch.possible_xlens.include?(@data["base"])) && - (@data["definedBy"].nil? || cfg_arch.possible_extension_versions.any? { |ext_ver| defined_by_condition.possibly_satisfied_by?(ext_ver) } ) - else - true + class CsrField < DatabaseObject + extend T::Sig + + # Add all methods in this module to this type of database object. + include CertifiableObject + + include Idl::CsrField + + # @return [Csr] The Csr that defines this field + sig { returns(Csr) } + attr_reader :parent + + # @!attribute field + # @return [CsrField] The field being aliased + # @!attribute range + # @return [Range] Range of the aliased field that is being pointed to + Alias = Struct.new(:field, :range) + + # @return [Integer] The base XLEN required for this CsrField to exist. One of [32, 64] + # @return [nil] if the CsrField exists in any XLEN + sig { returns(T.nilable(Integer)) } + def base = @data["base"] + + # @param parent_csr [Csr] The Csr that defined this field + # @param field_data [Hash] Field data from the arch spec + sig { params(parent_csr: Csr, field_name: String, field_data: T::Hash[String, T.untyped]).void } + def initialize(parent_csr, field_name, field_data) + super(field_data, parent_csr.data_path, parent_csr.arch, DatabaseObject::Kind::CsrField, name: field_name) + @parent = parent_csr end - end - sig { override.returns(T::Boolean) } - def exists? = exists_in_cfg?(cfg_arch) + # CSR fields are defined in their parent CSR YAML file + def __source = @parent.__source - # @return [Boolean] For a partially configured cfg_arch, whether or not the field is optional (not mandatory or prohibited) - sig { params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) } - def optional_in_cfg?(cfg_arch) - raise "optional_in_cfg? should only be called on a partially configured cfg_arch" unless cfg_arch.partially_configured? - - exists_in_cfg?(cfg_arch) && - ( - if data["definedBy"].nil? - parent.optional_in_cfg?(cfg_arch) - else - cfg_arch.prohibited_extension_versions.none? do |ext_ver| - defined_by_condition.possibly_satisfied_by?(ext_ver) - end - end - ) - end - - # @return [Boolean] Whether or not the presence of ext_ver affects this CSR Field definition - # This does not take the parent CSR into account, i.e., a field can be unaffected - # by ext_ver even if the parent CSR is affected - sig { params(ext_ver: ExtensionVersion).returns(T::Boolean) } - def affected_by?(ext_ver) - @data["definedBy"].nil? ? false : defined_by_condition.possibly_satisfied_by?(ext_ver) - end + # CSR field data starts at fields: NAME: with the YAML + sig { params(path: T::Array[T.any(String, Integer)]).returns(Integer) } + def source_line(path) + super(["fields", name].concat(path)) + end - # @return [Idl::FunctionBodyAst] Abstract syntax tree of the type() function - # @return [nil] if the type property is not a function - sig { returns(T.nilable(Idl::FunctionBodyAst)) } - def type_ast - return @type_ast unless @type_ast.nil? - return nil if @data["type()"].nil? + # For a full config, whether or not the field is implemented + # For a partial config, whether or the it is possible for the field to be implemented + # + # @return [Boolean] True if this field might exist in a config + sig { params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) } + def exists_in_cfg?(cfg_arch) + if cfg_arch.fully_configured? + parent.exists_in_cfg?(cfg_arch) && + (@data["base"].nil? || cfg_arch.possible_xlens.include?(@data["base"])) && + (defined_by_condition.satisfied_by_cfg_arch?(cfg_arch) == SatisfiedResult::Yes) + elsif cfg_arch.partially_configured? + parent.exists_in_cfg?(cfg_arch) && + (@data["base"].nil? || cfg_arch.possible_xlens.include?(@data["base"])) && + defined_by_condition.could_be_satisfied_by_cfg_arch?(cfg_arch) + else + true + end + end - idl_code = T.must(@data["type()"]) + sig { override.returns(T::Boolean) } + def exists? = exists_in_cfg?(cfg_arch) - @type_ast = @cfg_arch.idl_compiler.compile_func_body( - idl_code, - name: "CSR[#{csr.name}].#{name}.type()", - input_file: csr.__source, - input_line: csr.source_line(["fields", name, "type()"]), - symtab: @cfg_arch.symtab, - type_check: false - ) + # @return [Boolean] For a partially configured cfg_arch, whether or not the field is optional (not mandatory or prohibited) + sig { params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) } + def optional_in_cfg?(cfg_arch) + raise "optional_in_cfg? should only be called on a partially configured cfg_arch" unless cfg_arch.partially_configured? - raise "ast is nil?" if @type_ast.nil? + exists_in_cfg?(cfg_arch) && + defined_by_condition.empty? \ + ? parent.optional_in_cfg?(cfg_arch) + : (defined_by_condition.satisfied_by_cfg_arch?(cfg_arch) == SatisfiedResult::Maybe) + end - raise "unexpected #{@type_ast.class}" unless @type_ast.is_a?(Idl::FunctionBodyAst) + # @return [Boolean] Whether or not the presence of ext_ver affects this CSR Field definition + # This does not take the parent CSR into account, i.e., a field can be unaffected + # by ext_ver even if the parent CSR is affected + sig { params(ext_ver: ExtensionVersion).returns(T::Boolean) } + def affected_by?(ext_ver) + defined_by_condition.empty? \ + ? false + : defined_by_condition.satisfiability_depends_on_ext_req?(ext_ver.to_ext_req) + end - @type_ast - end + # @return [Idl::FunctionBodyAst] Abstract syntax tree of the type() function + # @return [nil] if the type property is not a function + sig { returns(T.nilable(Idl::FunctionBodyAst)) } + def type_ast + return @type_ast unless @type_ast.nil? + return nil if @data["type()"].nil? + + idl_code = T.must(@data["type()"]) + + @type_ast = @cfg_arch.idl_compiler.compile_func_body( + idl_code, + name: "CSR[#{csr.name}].#{name}.type()", + input_file: csr.__source, + input_line: csr.source_line(["fields", name, "type()"]), + symtab: @cfg_arch.symtab, + type_check: false + ) - # @return [Idl::FunctionBodyAst] Abstract syntax tree of the type() function, after it has been type checked - # @return [nil] if the type property is not a function - # @param effective_xlen [32, 64] The effective xlen to evaluate for - sig { params(effective_xlen: T.nilable(Integer)).returns(T.nilable(Idl::FunctionBodyAst)) } - def type_checked_type_ast(effective_xlen) - @type_checked_type_ast ||= { 32 => nil, 64 => nil } - return @type_checked_type_ast[effective_xlen] unless @type_checked_type_ast[effective_xlen].nil? + raise "ast is nil?" if @type_ast.nil? - ast = type_ast + raise "unexpected #{@type_ast.class}" unless @type_ast.is_a?(Idl::FunctionBodyAst) - if ast.nil? - # there is no type() (it must be constant) - return nil + @type_ast end - symtab = fill_symtab_for_type(effective_xlen, ast) + # @return [Idl::FunctionBodyAst] Abstract syntax tree of the type() function, after it has been type checked + # @return [nil] if the type property is not a function + # @param effective_xlen [32, 64] The effective xlen to evaluate for + sig { params(effective_xlen: T.nilable(Integer)).returns(T.nilable(Idl::FunctionBodyAst)) } + def type_checked_type_ast(effective_xlen) + @type_checked_type_ast ||= { 32 => nil, 64 => nil } + return @type_checked_type_ast[effective_xlen] unless @type_checked_type_ast[effective_xlen].nil? - cfg_arch.idl_compiler.type_check( - ast, - symtab, - "CSR[#{name}].type()" - ) + ast = type_ast - symtab.pop - symtab.release + if ast.nil? + # there is no type() (it must be constant) + return nil + end - @type_checked_type_ast[effective_xlen] = ast - end + symtab = fill_symtab_for_type(effective_xlen, ast) - # @return [Idl::FunctionBodyAst] Abstract syntax tree of the type() function, after it has been type checked and pruned - # @return [nil] if the type property is not a function - # @param effective_xlen [32, 64] The effective xlen to evaluate for - sig { params(effective_xlen: T.nilable(Integer)).returns(T.nilable(Idl::FunctionBodyAst)) } - def pruned_type_ast(effective_xlen) - @pruned_type_ast ||= { 32 => nil, 64 => nil } - return @pruned_type_ast[effective_xlen] unless @pruned_type_ast[effective_xlen].nil? + cfg_arch.idl_compiler.type_check( + ast, + symtab, + "CSR[#{name}].type()" + ) - ast = type_checked_type_ast(effective_xlen) + symtab.pop + symtab.release - if ast.nil? - # there is no type() (it must be constant) - return nil + @type_checked_type_ast[effective_xlen] = ast end - symtab = fill_symtab_for_type(effective_xlen, ast) - ast = ast.prune(symtab) - symtab.release + # @return [Idl::FunctionBodyAst] Abstract syntax tree of the type() function, after it has been type checked and pruned + # @return [nil] if the type property is not a function + # @param effective_xlen [32, 64] The effective xlen to evaluate for + sig { params(effective_xlen: T.nilable(Integer)).returns(T.nilable(Idl::FunctionBodyAst)) } + def pruned_type_ast(effective_xlen) + @pruned_type_ast ||= { 32 => nil, 64 => nil } + return @pruned_type_ast[effective_xlen] unless @pruned_type_ast[effective_xlen].nil? - symtab = fill_symtab_for_type(effective_xlen, ast) - ast.freeze_tree(symtab) + ast = type_checked_type_ast(effective_xlen) - @cfg_arch.idl_compiler.type_check( - ast, - symtab, - "CSR[#{name}].type()" - ) + if ast.nil? + # there is no type() (it must be constant) + return nil + end - symtab.pop - symtab.release + symtab = fill_symtab_for_type(effective_xlen, ast) + ast = ast.prune(symtab) + symtab.release - @pruned_type_ast[effective_xlen] = ast - end + symtab = fill_symtab_for_type(effective_xlen, ast) + ast.freeze_tree(symtab) - # returns the definitive type for a configuration - # - # @param effective_xlen [32, 64] The effective xlen to evaluate for - # @return [String] - # The type of the field. One of: - # 'RO' => Read-only - # 'RO-H' => Read-only, with hardware update - # 'RW' => Read-write - # 'RW-R' => Read-write, with a restricted set of legal values - # 'RW-H' => Read-write, with a hardware update - # 'RW-RH' => Read-write, with a hardware update and a restricted set of legal values - # @return [nil] when the type isn't knowable - sig { params(effective_xlen: T.nilable(Integer)).returns(T.nilable(String)) } - def type(effective_xlen = nil) - @type ||= { 32 => nil, 64 => nil } - return @type[effective_xlen] unless @type[effective_xlen].nil? - - type = T.let(nil, T.untyped) - type = - if @data.key?("type") - @data["type"] - else - # the type is config-specific... - - ast = T.must(type_checked_type_ast(effective_xlen)) - begin - symtab = fill_symtab_for_type(effective_xlen, ast) - - value_result = ast.value_try do - type = case ast.return_value(symtab) - when 0 - "RO" - when 1 - "RO-H" - when 2 - "RW" - when 3 - "RW-R" - when 4 - "RW-H" - when 5 - "RW-RH" - else - raise "Unhandled CsrFieldType value" - end - end - ast.value_else(value_result) do - type = nil - end - ensure - symtab&.pop - symtab&.release - end - type - # end - # Idl::AstNode.value_else(value_result) do - # warn "In parsing #{csr.name}.#{name}::type()" - # raise " Return of type() function cannot be evaluated at compile time" - # Idl::AstNode.value_error "" - # end - end + @cfg_arch.idl_compiler.type_check( + ast, + symtab, + "CSR[#{name}].type()" + ) - @type[effective_xlen] = type - end + symtab.pop + symtab.release - # @return [String] A pretty-printed type string - # @param effective_xlen [32, 64] The effective xlen to evaluate for - sig { params(effective_xlen: T.nilable(Integer)).returns(String) } - def type_pretty(effective_xlen = nil) - str = type(effective_xlen) - if str.nil? - ast = T.must(type_ast) - str = ast.gen_option_adoc + @pruned_type_ast[effective_xlen] = ast end - T.must(str) - end - # @return [Alias,nil] The aliased field, or nil if there is no alias - sig { returns(T.nilable(Alias)) } - def alias - return @alias unless @alias.nil? - - if @data.key?("alias") - raise "Can't parse alias" unless data["alias"] =~ /^[a-z][a-z0-9]+\.[A-Z0-9]+(\[([0-9]+)(:[0-9]+)?\])?$/ - - csr_name = T.must(Regexp.last_match(1)) - csr_field = Regexp.last_match(2) - range = Regexp.last_match(3) - range_start = Regexp.last_match(4) - range_end = Regexp.last_match(5) - - csr_field = T.must(cfg_arch.csr(csr_name)).field(csr_field) - range = - if range.nil? - csr_field.location - elsif range_end.nil? - (range_start.to_i..range_start.to_i) + # returns the definitive type for a configuration + # + # @param effective_xlen [32, 64] The effective xlen to evaluate for + # @return [String] + # The type of the field. One of: + # 'RO' => Read-only + # 'RO-H' => Read-only, with hardware update + # 'RW' => Read-write + # 'RW-R' => Read-write, with a restricted set of legal values + # 'RW-H' => Read-write, with a hardware update + # 'RW-RH' => Read-write, with a hardware update and a restricted set of legal values + # @return [nil] when the type isn't knowable + sig { override.params(effective_xlen: T.nilable(Integer)).returns(T.nilable(String)) } + def type(effective_xlen = nil) + @type ||= { 32 => nil, 64 => nil } + return @type[effective_xlen] unless @type[effective_xlen].nil? + + type = T.let(nil, T.untyped) + type = + if @data.key?("type") + @data["type"] else - (range_start.to_i..range_end[1..].to_i) + # the type is config-specific... + + ast = T.must(type_checked_type_ast(effective_xlen)) + begin + symtab = fill_symtab_for_type(effective_xlen, ast) + + value_result = ast.value_try do + type = case ast.return_value(symtab) + when 0 + "RO" + when 1 + "RO-H" + when 2 + "RW" + when 3 + "RW-R" + when 4 + "RW-H" + when 5 + "RW-RH" + else + raise "Unhandled CsrFieldType value" + end + end + ast.value_else(value_result) do + type = nil + end + ensure + symtab&.pop + symtab&.release + end + type + # end + # Idl::AstNode.value_else(value_result) do + # warn "In parsing #{csr.name}.#{name}::type()" + # raise " Return of type() function cannot be evaluated at compile time" + # Idl::AstNode.value_error "" + # end end - @alias = Alias.new(csr_field, range) + + @type[effective_xlen] = type end - @alias - end - # @return [Array] List of functions called through this field - # @param cfg_arch [ConfiguredArchitecture] a configuration - # @Param effective_xlen [Integer] 32 or 64; needed because fields can change in different XLENs - sig { params(effective_xlen: T.nilable(Integer)).returns(T::Array[Idl::FunctionDefAst]) } - def reachable_functions(effective_xlen) - return @reachable_functions unless @reachable_functions.nil? - - fns = [] - if has_custom_sw_write? - ast = pruned_sw_write_ast(effective_xlen) - unless ast.nil? - sw_write_symtab = fill_symtab_for_sw_write(effective_xlen, ast) - fns.concat ast.reachable_functions(sw_write_symtab) - sw_write_symtab.release + # @return [String] A pretty-printed type string + # @param effective_xlen [32, 64] The effective xlen to evaluate for + sig { params(effective_xlen: T.nilable(Integer)).returns(String) } + def type_pretty(effective_xlen = nil) + str = type(effective_xlen) + if str.nil? + ast = T.must(type_ast) + str = ast.gen_option_adoc end + T.must(str) end - if @data.key?("type()") - ast = pruned_type_ast(effective_xlen) - unless ast.nil? - type_symtab = fill_symtab_for_type(effective_xlen, ast) - fns.concat ast.reachable_functions(type_symtab) - type_symtab.release + + # @return [Alias,nil] The aliased field, or nil if there is no alias + sig { returns(T.nilable(Alias)) } + def alias + return @alias unless @alias.nil? + + if @data.key?("alias") + raise "Can't parse alias" unless data["alias"] =~ /^[a-z][a-z0-9]+\.[A-Z0-9]+(\[([0-9]+)(:[0-9]+)?\])?$/ + + csr_name = T.must(Regexp.last_match(1)) + csr_field = Regexp.last_match(2) + range = Regexp.last_match(3) + range_start = Regexp.last_match(4) + range_end = Regexp.last_match(5) + + csr_field = T.must(cfg_arch.csr(csr_name)).field(csr_field) + range = + if range.nil? + csr_field.location + elsif range_end.nil? + (range_start.to_i..range_start.to_i) + else + (range_start.to_i..range_end[1..].to_i) + end + @alias = Alias.new(csr_field, range) end + @alias end - if @data.key?("reset_value()") - ast = pruned_reset_value_ast - unless ast.nil? - symtab = fill_symtab_for_reset(ast) - fns.concat ast.reachable_functions(symtab) - symtab.release + + # @return [Array] List of functions called through this field + # @param cfg_arch [ConfiguredArchitecture] a configuration + # @Param effective_xlen [Integer] 32 or 64; needed because fields can change in different XLENs + sig { params(effective_xlen: T.nilable(Integer)).returns(T::Array[Idl::FunctionDefAst]) } + def reachable_functions(effective_xlen) + return @reachable_functions unless @reachable_functions.nil? + + fns = [] + if has_custom_sw_write? + ast = pruned_sw_write_ast(effective_xlen) + unless ast.nil? + sw_write_symtab = fill_symtab_for_sw_write(effective_xlen, ast) + fns.concat ast.reachable_functions(sw_write_symtab) + sw_write_symtab.release + end + end + if @data.key?("type()") + ast = pruned_type_ast(effective_xlen) + unless ast.nil? + type_symtab = fill_symtab_for_type(effective_xlen, ast) + fns.concat ast.reachable_functions(type_symtab) + type_symtab.release + end + end + if @data.key?("reset_value()") + ast = pruned_reset_value_ast + unless ast.nil? + symtab = fill_symtab_for_reset(ast) + fns.concat ast.reachable_functions(symtab) + symtab.release + end end - end - @reachable_functions = fns.uniq - end + @reachable_functions = fns.uniq + end - # @return [Csr] Parent CSR for this field - alias csr parent + # @return [Csr] Parent CSR for this field + alias csr parent - # @return [Boolean] Whether or not the location of the field changes dynamically - # (e.g., based on mstatus.SXL) in the configuration - sig { returns(T::Boolean) } - def dynamic_location? - # if there is no location_rv32, the the field never changes - return false unless @data["location"].nil? + # @return [Boolean] Whether or not the location of the field changes dynamically + # (e.g., based on mstatus.SXL) in the configuration + sig { returns(T::Boolean) } + def dynamic_location? + # if there is no location_rv32, the the field never changes + return false unless @data["location"].nil? - # the field changes *if* some mode with access can change XLEN - csr.modes_with_access.any? { |mode| @cfg_arch.multi_xlen_in_mode?(mode) } - end + # the field changes *if* some mode with access can change XLEN + csr.modes_with_access.any? { |mode| @cfg_arch.multi_xlen_in_mode?(mode) } + end - # @return [Idl::FunctionBodyAst] Abstract syntax tree of the reset_value function - # @return [nil] If the reset_value is not a function - sig { returns(T.nilable(Idl::FunctionBodyAst)) } - def reset_value_ast - return @reset_value_ast unless @reset_value_ast.nil? - return nil unless @data.key?("reset_value()") - - @reset_value_ast = cfg_arch.idl_compiler.compile_func_body( - @data["reset_value()"], - return_type: Idl::Type.new(:bits, width: max_width), - name: "CSR[#{parent.name}].#{name}.reset_value()", - input_file: csr.__source, - input_line: csr.source_line(["fields", name, "reset_value()"]), - symtab: cfg_arch.symtab, - type_check: false - ) - end + # @return [Idl::FunctionBodyAst] Abstract syntax tree of the reset_value function + # @return [nil] If the reset_value is not a function + sig { returns(T.nilable(Idl::FunctionBodyAst)) } + def reset_value_ast + return @reset_value_ast unless @reset_value_ast.nil? + return nil unless @data.key?("reset_value()") + + @reset_value_ast = cfg_arch.idl_compiler.compile_func_body( + @data["reset_value()"], + return_type: Idl::Type.new(:bits, width: max_width), + name: "CSR[#{parent.name}].#{name}.reset_value()", + input_file: csr.__source, + input_line: csr.source_line(["fields", name, "reset_value()"]), + symtab: cfg_arch.symtab, + type_check: false + ) + end - # @return [Idl::FunctionBodyAst] Abstract syntax tree of the reset_value function, after being type checked - # @return [nil] If the reset_value is not a function - sig { returns(T.nilable(Idl::FunctionBodyAst)) } - def type_checked_reset_value_ast - return @type_checked_reset_value_ast unless @type_checked_reset_value_ast.nil? + # @return [Idl::FunctionBodyAst] Abstract syntax tree of the reset_value function, after being type checked + # @return [nil] If the reset_value is not a function + sig { returns(T.nilable(Idl::FunctionBodyAst)) } + def type_checked_reset_value_ast + return @type_checked_reset_value_ast unless @type_checked_reset_value_ast.nil? - return nil unless @data.key?("reset_value()") + return nil unless @data.key?("reset_value()") - ast = reset_value_ast + ast = reset_value_ast - symtab = fill_symtab_for_reset(ast) - cfg_arch.idl_compiler.type_check( - ast, - symtab, - "CSR[#{csr.name}].reset_value()" - ) - symtab.release + symtab = fill_symtab_for_reset(ast) + cfg_arch.idl_compiler.type_check( + ast, + symtab, + "CSR[#{csr.name}].reset_value()" + ) + symtab.release - @type_checked_reset_value_ast = ast - end + @type_checked_reset_value_ast = ast + end - # @return [Idl::FunctionBodyAst] Abstract syntax tree of the reset_value function, type checked and pruned - # @return [nil] If the reset_value is not a function - sig { returns(T.nilable(Idl::FunctionBodyAst)) } - def pruned_reset_value_ast - return @pruned_reset_value_ast unless @pruned_reset_value_ast.nil? + # @return [Idl::FunctionBodyAst] Abstract syntax tree of the reset_value function, type checked and pruned + # @return [nil] If the reset_value is not a function + sig { returns(T.nilable(Idl::FunctionBodyAst)) } + def pruned_reset_value_ast + return @pruned_reset_value_ast unless @pruned_reset_value_ast.nil? - return nil unless @data.key?("reset_value()") + return nil unless @data.key?("reset_value()") - ast = T.must(type_checked_reset_value_ast) + ast = T.must(type_checked_reset_value_ast) - symtab = fill_symtab_for_reset(ast) - ast = ast.prune(symtab) - symtab.pop - ast.freeze_tree(symtab) - symtab.release + symtab = fill_symtab_for_reset(ast) + ast = ast.prune(symtab) + symtab.pop + ast.freeze_tree(symtab) + symtab.release - @pruned_reset_value_ast = ast - end + @pruned_reset_value_ast = ast + end - # @return [Integer] The reset value of this field - # @return [String] The string 'UNDEFINED_LEGAL' if, for this config, there is no defined reset value - def reset_value - @reset_value ||= - if @data.key?("reset_value") - @data["reset_value"] - else - ast = T.must(pruned_reset_value_ast) - symtab = fill_symtab_for_reset(ast) - val = T.let(nil, T.untyped) - value_result = Idl::AstNode.value_try do - val = ast.return_value(symtab) - end - Idl::AstNode.value_else(value_result) do - val = "UNDEFINED_LEGAL" + # @return [Integer] The reset value of this field + # @return [String] The string 'UNDEFINED_LEGAL' if, for this config, there is no defined reset value + sig { override.returns(Idl::ValueRbType) } + def reset_value + @reset_value ||= + if @data.key?("reset_value") + @data["reset_value"] + else + ast = T.must(pruned_reset_value_ast) + symtab = fill_symtab_for_reset(ast) + val = T.let(nil, T.untyped) + value_result = Idl::AstNode.value_try do + val = ast.return_value(symtab) + end + Idl::AstNode.value_else(value_result) do + val = "UNDEFINED_LEGAL" + end + val = "UNDEFINED_LEGAL" if val == 0x1_0000_0000_0000_0000 + symtab.release + val end - val = "UNDEFINED_LEGAL" if val == 0x1_0000_0000_0000_0000 - symtab.release - val - end - end + end - sig { returns(T::Boolean) } - def dynamic_reset_value? - return false unless @data["reset_value"].nil? + sig { returns(T::Boolean) } + def dynamic_reset_value? + return false unless @data["reset_value"].nil? - Idl::AstNode.value_try do - reset_value - false - end || true - end + Idl::AstNode.value_try do + reset_value + false + end || true + end + + sig { returns(String) } + def reset_value_pretty + str = T.let(nil, T.nilable(Idl::ValueRbType)) + value_result = Idl::AstNode.value_try do + str = reset_value + end + Idl::AstNode.value_else(value_result) do + ast = T.must(reset_value_ast) + str = ast.gen_option_adoc + end + T.must(str).to_s + end - sig { returns(String) } - def reset_value_pretty - str = T.let(nil, T.nilable(String)) - value_result = Idl::AstNode.value_try do - str = reset_value + # @return [Boolean] true if the CSR field has a custom sw_write function + sig { returns(T::Boolean) } + def has_custom_sw_write? + @data.key?("sw_write(csr_value)") && !@data["sw_write(csr_value)"].empty? end - Idl::AstNode.value_else(value_result) do - ast = T.must(reset_value_ast) - str = ast.gen_option_adoc + + # @param effective_xlen [Integer] 32 or 64; the effective XLEN to evaluate this field in (relevant when fields move in different XLENs) + # @param symtab [Idl::SymbolTable] Symbol table with globals + # @return [FunctionBodyAst] The abstract syntax tree of the sw_write() function, after being type checked + sig { params(symtab: Idl::SymbolTable, effective_xlen: T.nilable(Integer)).returns(T.nilable(Idl::FunctionBodyAst)) } + def type_checked_sw_write_ast(symtab, effective_xlen) + @type_checked_sw_write_asts ||= {} + ast = @type_checked_sw_write_asts[symtab.hash] + return ast unless ast.nil? + + return nil unless @data.key?("sw_write(csr_value)") + + symtab_hash = symtab.hash + symtab = symtab.global_clone + symtab.push(ast) + # all CSR instructions are 32-bit + symtab.add( + "__instruction_encoding_size", + Idl::Var.new("__instruction_encoding_size", Idl::Type.new(:bits, width: 6), 32) + ) + symtab.add( + "__expected_return_type", + Idl::Type.new(:bits, width: 128) # to accommodate special return values (e.g., UNDEFIEND_LEGAL_DETERMINISITIC) + ) + symtab.add( + "csr_value", + Idl::Var.new("csr_value", csr.bitfield_type(@cfg_arch, effective_xlen)) + ) + + ast = T.must(sw_write_ast(symtab)) + @cfg_arch.idl_compiler.type_check( + ast, + symtab, + "CSR[#{csr.name}].#{name}.sw_write()" + ) + symtab.pop + symtab.release + @type_checked_sw_write_asts[symtab_hash] = ast end - T.must(str).to_s - end - # @return [Boolean] true if the CSR field has a custom sw_write function - sig { returns(T::Boolean) } - def has_custom_sw_write? - @data.key?("sw_write(csr_value)") && !@data["sw_write(csr_value)"].empty? - end + # @return [Idl::FunctionBodyAst] The abstract syntax tree of the sw_write() function + # @return [nil] If there is no sw_write() function + # @param symtab [Idl::SymbolTable] Symbols + sig { params(symtab: Idl::SymbolTable).returns(T.nilable(Idl::FunctionBodyAst)) } + def sw_write_ast(symtab) + return @sw_write_ast unless @sw_write_ast.nil? + return nil if @data["sw_write(csr_value)"].nil? + + # now, parse the function + @sw_write_ast = @cfg_arch.idl_compiler.compile_func_body( + @data["sw_write(csr_value)"], + return_type: Idl::Type.new(:bits, width: 128), # big int to hold special return values + name: "CSR[#{csr.name}].#{name}.sw_write(csr_value)", + input_file: csr.__source, + input_line: csr.source_line(["fields", name, "sw_write(csr_value)"]), + symtab:, + type_check: false + ) - # @param effective_xlen [Integer] 32 or 64; the effective XLEN to evaluate this field in (relevant when fields move in different XLENs) - # @param symtab [Idl::SymbolTable] Symbol table with globals - # @return [FunctionBodyAst] The abstract syntax tree of the sw_write() function, after being type checked - sig { params(symtab: Idl::SymbolTable, effective_xlen: T.nilable(Integer)).returns(T.nilable(Idl::FunctionBodyAst)) } - def type_checked_sw_write_ast(symtab, effective_xlen) - @type_checked_sw_write_asts ||= {} - ast = @type_checked_sw_write_asts[symtab.hash] - return ast unless ast.nil? - - return nil unless @data.key?("sw_write(csr_value)") - - symtab_hash = symtab.hash - symtab = symtab.global_clone - symtab.push(ast) - # all CSR instructions are 32-bit - symtab.add( - "__instruction_encoding_size", - Idl::Var.new("__instruction_encoding_size", Idl::Type.new(:bits, width: 6), 32) - ) - symtab.add( - "__expected_return_type", - Idl::Type.new(:bits, width: 128) # to accommodate special return values (e.g., UNDEFIEND_LEGAL_DETERMINISITIC) - ) - symtab.add( - "csr_value", - Idl::Var.new("csr_value", csr.bitfield_type(@cfg_arch, effective_xlen)) - ) - - ast = T.must(sw_write_ast(symtab)) - @cfg_arch.idl_compiler.type_check( - ast, - symtab, - "CSR[#{csr.name}].#{name}.sw_write()" - ) - symtab.pop - symtab.release - @type_checked_sw_write_asts[symtab_hash] = ast - end + raise "unexpected #{@sw_write_ast.class}" unless @sw_write_ast.is_a?(Idl::FunctionBodyAst) - # @return [Idl::FunctionBodyAst] The abstract syntax tree of the sw_write() function - # @return [nil] If there is no sw_write() function - # @param symtab [Idl::SymbolTable] Symbols - sig { params(symtab: Idl::SymbolTable).returns(T.nilable(Idl::FunctionBodyAst)) } - def sw_write_ast(symtab) - return @sw_write_ast unless @sw_write_ast.nil? - return nil if @data["sw_write(csr_value)"].nil? - - # now, parse the function - @sw_write_ast = @cfg_arch.idl_compiler.compile_func_body( - @data["sw_write(csr_value)"], - return_type: Idl::Type.new(:bits, width: 128), # big int to hold special return values - name: "CSR[#{csr.name}].#{name}.sw_write(csr_value)", - input_file: csr.__source, - input_line: csr.source_line(["fields", name, "sw_write(csr_value)"]), - symtab:, - type_check: false - ) - - raise "unexpected #{@sw_write_ast.class}" unless @sw_write_ast.is_a?(Idl::FunctionBodyAst) - - @sw_write_ast - end + @sw_write_ast + end - sig { params(effective_xlen: T.nilable(Integer), ast: Idl::AstNode).returns(Idl::SymbolTable) } - def fill_symtab_for_sw_write(effective_xlen, ast) - symtab = cfg_arch.symtab.global_clone - symtab.push(ast) - - # all CSR instructions are 32-bit - symtab.add( - "__instruction_encoding_size", - Idl::Var.new("__instruction_encoding_size", Idl::Type.new(:bits, width: 6), 32) - ) - symtab.add( - "__expected_return_type", - Idl::Type.new(:bits, width: 128) - ) - symtab.add( - "csr_value", - Idl::Var.new("csr_value", csr.bitfield_type(@cfg_arch, effective_xlen)) - ) - if symtab.get("MXLEN").value.nil? + sig { params(effective_xlen: T.nilable(Integer), ast: Idl::AstNode).returns(Idl::SymbolTable) } + def fill_symtab_for_sw_write(effective_xlen, ast) + symtab = cfg_arch.symtab.global_clone + symtab.push(ast) + + # all CSR instructions are 32-bit symtab.add( - "MXLEN", - Idl::Var.new( + "__instruction_encoding_size", + Idl::Var.new("__instruction_encoding_size", Idl::Type.new(:bits, width: 6), 32) + ) + symtab.add( + "__expected_return_type", + Idl::Type.new(:bits, width: 128) + ) + symtab.add( + "csr_value", + Idl::Var.new("csr_value", csr.bitfield_type(@cfg_arch, effective_xlen)) + ) + if symtab.get("MXLEN").value.nil? + symtab.add( "MXLEN", - Idl::Type.new(:bits, width: 6, qualifiers: [:const]), - effective_xlen, - param: true + Idl::Var.new( + "MXLEN", + Idl::Type.new(:bits, width: 6, qualifiers: [:const]), + effective_xlen, + param: true + ) ) - ) + end + symtab end - symtab - end - sig { params(effective_xlen: T.nilable(Integer), ast: Idl::AstNode).returns(Idl::SymbolTable) } - def fill_symtab_for_type(effective_xlen, ast) - symtab = cfg_arch.symtab.global_clone - symtab.push(ast) - - # all CSR instructions are 32-bit - symtab.add( - "__instruction_encoding_size", - Idl::Var.new("__instruction_encoding_size", Idl::Type.new(:bits, width: 6), 32) - ) - symtab.add( - "__expected_return_type", - Idl::Type.new(:enum_ref, enum_class: symtab.get("CsrFieldType")) - ) - if symtab.get("MXLEN").value.nil? + sig { params(effective_xlen: T.nilable(Integer), ast: Idl::AstNode).returns(Idl::SymbolTable) } + def fill_symtab_for_type(effective_xlen, ast) + symtab = cfg_arch.symtab.global_clone + symtab.push(ast) + + # all CSR instructions are 32-bit + symtab.add( + "__instruction_encoding_size", + Idl::Var.new("__instruction_encoding_size", Idl::Type.new(:bits, width: 6), 32) + ) symtab.add( - "MXLEN", - Idl::Var.new( + "__expected_return_type", + Idl::Type.new(:enum_ref, enum_class: symtab.get("CsrFieldType")) + ) + if symtab.get("MXLEN").value.nil? + symtab.add( "MXLEN", - Idl::Type.new(:bits, width: 6, qualifiers: [:const]), - effective_xlen, - param: true + Idl::Var.new( + "MXLEN", + Idl::Type.new(:bits, width: 6, qualifiers: [:const]), + effective_xlen, + param: true + ) ) - ) - end + end - symtab - end + symtab + end - def fill_symtab_for_reset(ast) - symtab = cfg_arch.symtab.global_clone - symtab.push(ast) + def fill_symtab_for_reset(ast) + symtab = cfg_arch.symtab.global_clone + symtab.push(ast) - symtab.add("__expected_return_type", Idl::Type.new(:bits, width: max_width)) + symtab.add("__expected_return_type", Idl::Type.new(:bits, width: max_width)) - # XLEN at reset is always mxlen - symtab.add( - "__effective_xlen", - Idl::Var.new("__effective_xlen", Idl::Type.new(:bits, width: 6), cfg_arch.mxlen) - ) + # XLEN at reset is always mxlen + symtab.add( + "__effective_xlen", + Idl::Var.new("__effective_xlen", Idl::Type.new(:bits, width: 6), cfg_arch.mxlen) + ) - symtab - end + symtab + end - # @return [Idl::FunctionBodyAst] The abstract syntax tree of the sw_write() function, type checked and pruned - # @return [nil] if there is no sw_write() function - # @param effective_xlen [Integer] effective xlen, needed because fields can change in different bases - sig { params(effective_xlen: T.nilable(Integer)).returns(T.nilable(Idl::AstNode)) } - def pruned_sw_write_ast(effective_xlen) - return @pruned_sw_write_ast unless @pruned_sw_write_ast.nil? + # @return [Idl::FunctionBodyAst] The abstract syntax tree of the sw_write() function, type checked and pruned + # @return [nil] if there is no sw_write() function + # @param effective_xlen [Integer] effective xlen, needed because fields can change in different bases + sig { params(effective_xlen: T.nilable(Integer)).returns(T.nilable(Idl::AstNode)) } + def pruned_sw_write_ast(effective_xlen) + return @pruned_sw_write_ast unless @pruned_sw_write_ast.nil? - return nil unless @data.key?("sw_write(csr_value)") + return nil unless @data.key?("sw_write(csr_value)") - ast = T.must(type_checked_sw_write_ast(cfg_arch.symtab, effective_xlen)) + ast = T.must(type_checked_sw_write_ast(cfg_arch.symtab, effective_xlen)) - return ast if cfg_arch.unconfigured? + return ast if cfg_arch.unconfigured? - symtab = fill_symtab_for_sw_write(effective_xlen, ast) + symtab = fill_symtab_for_sw_write(effective_xlen, ast) - ast = ast.prune(symtab) - raise "Symbol table didn't come back at global + 1" unless symtab.levels == 2 + ast = ast.prune(symtab) + raise "Symbol table didn't come back at global + 1" unless symtab.levels == 2 - ast.freeze_tree(cfg_arch.symtab) + ast.freeze_tree(cfg_arch.symtab) - cfg_arch.idl_compiler.type_check( - ast, - symtab, - "CSR[#{name}].sw_write(csr_value)" - ) + cfg_arch.idl_compiler.type_check( + ast, + symtab, + "CSR[#{name}].sw_write(csr_value)" + ) - symtab.pop - symtab.release + symtab.pop + symtab.release - @pruned_sw_write_ast = ast - end + @pruned_sw_write_ast = ast + end - # @param cfg_arch [ConfiguredArchitecture] A config. May be nil if the location is not configturation-dependent - # @param effective_xlen [Integer] The effective xlen, needed since some fields change location with XLEN. If the field location is not determined by XLEN, then this parameter can be nil - # @return [Range] the location within the CSR as a range (single bit fields will be a range of size 1) - sig { override.params(effective_xlen: T.nilable(Integer)).returns(T::Range[Integer]) } - def location(effective_xlen = nil) - key = - if @data.key?("location") - "location" - else - raise ArgumentError, "The location of #{csr.name}.#{name} changes with XLEN, so effective_xlen must be provided" unless [32, 64].include?(effective_xlen) + # @param cfg_arch [ConfiguredArchitecture] A config. May be nil if the location is not configturation-dependent + # @param effective_xlen [Integer] The effective xlen, needed since some fields change location with XLEN. If the field location is not determined by XLEN, then this parameter can be nil + # @return [Range] the location within the CSR as a range (single bit fields will be a range of size 1) + sig { override.params(effective_xlen: T.nilable(Integer)).returns(T::Range[Integer]) } + def location(effective_xlen = nil) + key = + if @data.key?("location") + "location" + else + raise ArgumentError, "The location of #{csr.name}.#{name} changes with XLEN, so effective_xlen must be provided" unless [32, 64].include?(effective_xlen) - "location_rv#{effective_xlen}" - end + "location_rv#{effective_xlen}" + end - raise "Missing location for #{csr.name}.#{name} (#{key})?" unless @data.key?(key) + raise "Missing location for #{csr.name}.#{name} (#{key})?" unless @data.key?(key) - if @data[key].is_a?(Integer) - csr_length = csr.length(effective_xlen || @data["base"]) - if csr_length.nil? - # we don't know the csr length for sure, so we can only check again max_length - if @data[key] > csr.max_length - raise "Location (#{key} = #{@data[key]}) is past the max csr length (#{csr.max_length}) in #{csr.name}.#{name}" + if @data[key].is_a?(Integer) + csr_length = csr.length(effective_xlen || @data["base"]) + if csr_length.nil? + # we don't know the csr length for sure, so we can only check again max_length + if @data[key] > csr.max_length + raise "Location (#{key} = #{@data[key]}) is past the max csr length (#{csr.max_length}) in #{csr.name}.#{name}" + end + elsif @data[key] > csr_length + raise "Location (#{key} = #{@data[key]}) is past the csr length (#{csr.length(effective_xlen)}) in #{csr.name}.#{name}" end - elsif @data[key] > csr_length - raise "Location (#{key} = #{@data[key]}) is past the csr length (#{csr.length(effective_xlen)}) in #{csr.name}.#{name}" - end - @data[key]..@data[key] - else - raise "Unexpected location field" unless @data[key].is_a?(String) + @data[key]..@data[key] + else + raise "Unexpected location field" unless @data[key].is_a?(String) - e, s = @data[key].split("-").map(&:to_i) - raise "Invalid location" if s > e + e, s = @data[key].split("-").map(&:to_i) + raise "Invalid location" if s > e + + csr_length = csr.length(effective_xlen || @data["base"]) + if csr_length.nil? + # we don't know the csr length for sure, so we can only check again max_length + if e > csr.max_length + Udb.logger.warn "Location (#{key} = #{@data[key]}) is past the max csr length (#{csr.max_length}) in #{csr.name}.#{name}" + end + elsif e > csr_length + Udb.logger.warn "Location (#{key} = #{@data[key]}) is past the csr length (#{csr_length}) in #{csr.name}.#{name}" - csr_length = csr.length(effective_xlen || @data["base"]) - if csr_length.nil? - # we don't know the csr length for sure, so we can only check again max_length - if e > csr.max_length - raise "Location (#{key} = #{@data[key]}) is past the max csr length (#{csr.max_length}) in #{csr.name}.#{name}" end - elsif e > csr_length - raise "Location (#{key} = #{@data[key]}) is past the csr length (#{csr_length}) in #{csr.name}.#{name}" + s..e end - - s..e end - end - # @return [Boolean] Whether or not this field only exists when XLEN == 64 - sig { override.returns(T::Boolean) } - def base64_only? = @data.key?("base") && @data["base"] == 64 + # @return [Boolean] Whether or not this field only exists when XLEN == 64 + sig { override.returns(T::Boolean) } + def base64_only? = @data.key?("base") && @data["base"] == 64 - # @return [Boolean] Whether or not this field only exists when XLEN == 32 - sig { override.returns(T::Boolean) } - def base32_only? = @data.key?("base") && @data["base"] == 32 + # @return [Boolean] Whether or not this field only exists when XLEN == 32 + sig { override.returns(T::Boolean) } + def base32_only? = @data.key?("base") && @data["base"] == 32 - sig { override.returns(T::Boolean) } - def defined_in_base32? = @data["base"].nil? || @data["base"] == 32 + sig { override.returns(T::Boolean) } + def defined_in_base32? = @data["base"].nil? || @data["base"] == 32 - sig { override.returns(T::Boolean) } - def defined_in_base64? = @data["base"].nil? || @data["base"] == 64 + sig { override.returns(T::Boolean) } + def defined_in_base64? = @data["base"].nil? || @data["base"] == 64 - sig { params(xlen: Integer).returns(T::Boolean) } - def defined_in_base?(xlen) = @data["base"].nil? || @data["base"] == xlen + sig { params(xlen: Integer).returns(T::Boolean) } + def defined_in_base?(xlen) = @data["base"].nil? || @data["base"] == xlen - # @return [Boolean] Whether or not this field exists for any XLEN - sig { override.returns(T::Boolean) } - def defined_in_all_bases? = @data["base"].nil? + # @return [Boolean] Whether or not this field exists for any XLEN + sig { override.returns(T::Boolean) } + def defined_in_all_bases? = @data["base"].nil? - # @param effective_xlen [Integer] The effective xlen, needed since some fields change location with XLEN. If the field location is not determined by XLEN, then this parameter can be nil - # @return [Integer] Number of bits in the field - sig { params(effective_xlen: T.nilable(Integer)).returns(Integer) } - def width(effective_xlen) - T.must(location(effective_xlen).size) - end + # @param effective_xlen [Integer] The effective xlen, needed since some fields change location with XLEN. If the field location is not determined by XLEN, then this parameter can be nil + # @return [Integer] Number of bits in the field + sig { override.params(effective_xlen: T.nilable(Integer)).returns(Integer) } + def width(effective_xlen) + T.must(location(effective_xlen).size) + end - sig { returns(Integer) } - def max_width - @max_width ||= - if base64_only? - cfg_arch.possible_xlens.include?(64) ? width(64) : 0 - elsif base32_only? - cfg_arch.possible_xlens.include?(32) ? width(32) : 0 + sig { returns(Integer) } + def max_width + @max_width ||= + if base64_only? + cfg_arch.possible_xlens.include?(64) ? width(64) : 0 + elsif base32_only? + cfg_arch.possible_xlens.include?(32) ? width(32) : 0 + else + @cfg_arch.possible_xlens.map do |xlen| + width(xlen) + end.max + end + end + + sig { returns(String) } + def location_cond32 + case csr.priv_mode + when "M" + "CSR[misa].MXL == 0" + when "S" + "CSR[mstatus].SXL == 0" + when "VS" + "CSR[hstatus].VSXL == 0" else - @cfg_arch.possible_xlens.map do |xlen| - width(xlen) - end.max + raise "Unexpected priv mode #{csr.priv_mode} for #{csr.name}" end - end - - sig { returns(String) } - def location_cond32 - case csr.priv_mode - when "M" - "CSR[misa].MXL == 0" - when "S" - "CSR[mstatus].SXL == 0" - when "VS" - "CSR[hstatus].VSXL == 0" - else - raise "Unexpected priv mode #{csr.priv_mode} for #{csr.name}" end - end - sig { returns(String) } - def location_cond64 - case csr.priv_mode - when "M" - "CSR[misa].MXL == 1" - when "S" - "CSR[mstatus].SXL == 1" - when "VS" - "CSR[hstatus].VSXL == 1" - else - raise "Unexpected priv mode #{csr.priv_mode} for #{csr.name}" + sig { returns(String) } + def location_cond64 + case csr.priv_mode + when "M" + "CSR[misa].MXL == 1" + when "S" + "CSR[mstatus].SXL == 1" + when "VS" + "CSR[hstatus].VSXL == 1" + else + raise "Unexpected priv mode #{csr.priv_mode} for #{csr.name}" + end end - end - # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic - # @return [String] Pretty-printed location string - sig { params(effective_xlen: T.nilable(Integer)).returns(String) } - def location_pretty(effective_xlen = nil) - derangeify = proc { |loc| - next loc.min.to_s if loc.size == 1 - - "#{loc.max}:#{loc.min}" - } - - if dynamic_location? - condition = - case csr.priv_mode - when "M" - "CSR[misa].MXL == %%" - when "S" - "CSR[mstatus].SXL == %%" - when "VS" - "CSR[hstatus].VSXL == %%" - else - raise "Unexpected priv mode #{csr.priv_mode} for #{csr.name}" - end + # @param effective_xlen [Integer or nil] 32 or 64 for fixed xlen, nil for dynamic + # @return [String] Pretty-printed location string + sig { params(effective_xlen: T.nilable(Integer)).returns(String) } + def location_pretty(effective_xlen = nil) + derangeify = proc { |loc| + next loc.min.to_s if loc.size == 1 + + "#{loc.max}:#{loc.min}" + } + + if dynamic_location? + condition = + case csr.priv_mode + when "M" + "CSR[misa].MXL == %%" + when "S" + "CSR[mstatus].SXL == %%" + when "VS" + "CSR[hstatus].VSXL == %%" + when "U" + "CSR[mstatus].UXL == %%" + else + raise "Unexpected priv mode #{csr.priv_mode} for #{csr.name}" + end - if effective_xlen.nil? - <<~LOC + if effective_xlen.nil? + <<~LOC * #{derangeify.call(location(32))} when #{condition.sub('%%', '0')} * #{derangeify.call(location(64))} when #{condition.sub('%%', '1')} LOC + else + derangeify.call(location(effective_xlen)) + end else - derangeify.call(location(effective_xlen)) + derangeify.call(location(cfg_arch.mxlen)) end - else - derangeify.call(location(cfg_arch.mxlen)) end - end - TYPE_DESC_MAP = { - "RO" => - <<~DESC, + TYPE_DESC_MAP = { + "RO" => + <<~DESC, *Read-Only* Field has a hardwired value that does not change. Writes to an RO field are ignored. DESC - "RO-H" => - <<~DESC, + "RO-H" => + <<~DESC, *Read-Only with Hardware update* Writes are ignored. Reads reflect a value dynamically generated by hardware. DESC - "RW" => - <<~DESC, + "RW" => + <<~DESC, *Read-Write* Field is writable by software. Any value that fits in the field is acceptable and shall be retained for subsequent reads. DESC - "RW-R" => - <<~DESC, + "RW-R" => + <<~DESC, *Read-Write Restricted* Field is writable by software. Only certain values are legal. Writing an illegal value into the field is ignored, and the field retains its prior state. DESC - "RW-H" => - <<~DESC, + "RW-H" => + <<~DESC, *Read-Write with Hardware update* Field is writable by software. Any value that fits in the field is acceptable. Hardware also updates the field without an explicit software write. DESC - "RW-RH" => - <<~DESC + "RW-RH" => + <<~DESC *Read-Write Restricted with Hardware update* Field is writable by software. @@ -825,13 +824,13 @@ def location_pretty(effective_xlen = nil) Writing an illegal value into the field is ignored, such that the field retains its prior state. Hardware also updates the field without an explicit software write.) DESC - }.freeze + }.freeze - # @return [String] Long description of the field type - sig { params(effective_xlen: T.nilable(Integer)).returns(String) } - def type_desc(effective_xlen=nil) - TYPE_DESC_MAP.fetch(type(effective_xlen), "") + # @return [String] Long description of the field type + sig { params(effective_xlen: T.nilable(Integer)).returns(String) } + def type_desc(effective_xlen = nil) + TYPE_DESC_MAP.fetch(type(effective_xlen), "") + end end -end end diff --git a/tools/ruby-gems/udb/lib/udb/obj/database_obj.rb b/tools/ruby-gems/udb/lib/udb/obj/database_obj.rb index 0ed0cea021..a07b26a413 100644 --- a/tools/ruby-gems/udb/lib/udb/obj/database_obj.rb +++ b/tools/ruby-gems/udb/lib/udb/obj/database_obj.rb @@ -13,286 +13,292 @@ module Udb # a bunch of useful methods for both proper top-level DatabaseObject and sub-objects like CsrField -class DatabaseObject - extend T::Sig - - # valid kinds. When this is a TopLevelDatabaseObejct, the lowercase name corresponds to the - # kind: field in the schema - class Kind < T::Enum - enums do - Instruction = new("instruction") - InstructionType = new("instruction type") - InstructionSubtype = new("instruction subtype") - Csr = new("csr") - CsrField = new("csr_field") - Extension = new("extension") - Manual = new("manual") - ManualVersion = new("manual version") - ProcessorCertificateClass = new("processor certificate class") - ProcessorCertificateModel = new("processor certificate model") - Profile = new("profile") - ProfileFamily = new("profile family") - ProfileRelease = new("profile release") - Prm = new("programmer reference manual") - NonIsaSpec = new("non-isa specification") + class DatabaseObject + extend T::Sig + + # valid kinds. When this is a TopLevelDatabaseObejct, the lowercase name corresponds to the + # kind: field in the schema + class Kind < T::Enum + enums do + Instruction = new("instruction") + InstructionType = new("instruction_type") + InstructionSubtype = new("instruction_subtype") + Csr = new("csr") + CsrField = new("csr_field") + Extension = new("extension") + Parameter = new("parameter") + ExceptionCode = new("exception_code") + InterruptCode = new("interrupt_code") + Manual = new("manual") + ManualVersion = new("manual version") + ProcessorCertificateClass = new("processor certificate class") + ProcessorCertificateModel = new("processor certificate model") + Profile = new("profile") + ProfileFamily = new("profile family") + ProfileRelease = new("profile release") + Prm = new("programmer reference manual") + NonIsaSpec = new("non-isa specification") + end end - end - - sig { returns(T::Hash[String, T.untyped]) } - attr_reader :data - sig { returns(Pathname) } - attr_reader :data_path + sig { returns(T::Hash[String, T.untyped]) } + attr_reader :data - sig { returns(String) } - attr_reader :name + sig { returns(Pathname) } + attr_reader :data_path - sig { returns(String) } - attr_reader :long_name + sig { returns(String) } + attr_reader :name - sig { returns(String) } - def kind = @kind.serialize + sig { returns(String) } + attr_reader :long_name - # @return [Architecture] If only a specification (no config) is known - # @return [ConfiguredArchitecture] If a specification and config is known - # @return [nil] If neither is known - sig { returns(ConfiguredArchitecture) } - attr_reader :arch # Use when Architecture class is sufficient + sig { returns(String) } + def kind = @kind.serialize - # @return [ConfiguredArchitecture] If a specification and config is known - # @return [nil] Otherwise - sig { returns(ConfiguredArchitecture) } - def cfg_arch - raise "no cfg_arch" if @cfg_arch.nil? + # @return [Architecture] If only a specification (no config) is known + # @return [ConfiguredArchitecture] If a specification and config is known + # @return [nil] If neither is known + sig { returns(ConfiguredArchitecture) } + attr_reader :arch # Use when Architecture class is sufficient - @cfg_arch - end + # @return [ConfiguredArchitecture] If a specification and config is known + # @return [nil] Otherwise + sig { returns(ConfiguredArchitecture) } + def cfg_arch + raise "no cfg_arch" if @cfg_arch.nil? - sig { returns(T::Boolean) } - def cfg_arch? = !@cfg_arch.nil? - - # @param data [Hash] Hash with fields to be added - # @param data_path [Pathname] Path to the data file - sig { - params( - data: T::Hash[String, T.untyped], - data_path: T.any(String, Pathname), - arch: ConfiguredArchitecture, - kind: Kind, - name: T.nilable(String) - ).void - } - def initialize(data, data_path, arch, kind, name: nil) - @data = data - @data_path = Pathname.new(data_path) - if arch.is_a?(ConfiguredArchitecture) - @cfg_arch = arch + @cfg_arch end - @arch = arch - raise "name must be given" if name.nil? && data["name"].nil? - raise "do not provide name when it exists in data" if !name.nil? && !data["name"].nil? - @name = name || data["name"] - @long_name = data["long_name"] - @kind = kind + sig { returns(T::Boolean) } + def cfg_arch? = !@cfg_arch.nil? + + # @param data [Hash] Hash with fields to be added + # @param data_path [Pathname] Path to the data file + sig { + params( + data: T::Hash[String, T.untyped], + data_path: T.any(String, Pathname), + arch: ConfiguredArchitecture, + kind: Kind, + name: T.nilable(String) + ).void + } + def initialize(data, data_path, arch, kind, name: nil) + @data = data + @data_path = Pathname.new(data_path) + if arch.is_a?(ConfiguredArchitecture) + @cfg_arch = arch + end + @arch = arch + raise "name must be given" if name.nil? && data["name"].nil? + raise "do not provide name when it exists in data" if !name.nil? && !data["name"].nil? - @sem = Concurrent::Semaphore.new(1) - @cache = Concurrent::Hash.new - end + @name = name || data["name"] + @long_name = data["long_name"] + @kind = kind - # clone this, and set the arch at the same time - # @return [DatabaseObject] The new object - sig { params(arch: T.nilable(Architecture)).returns(DatabaseObject) } - def clone(arch: nil) - obj = super() - obj.instance_variable_set(:@arch, arch) - obj - end + @sem = Concurrent::Semaphore.new(1) + @cache = Concurrent::Hash.new + end - sig { params(other: DatabaseObject).returns(T.nilable(Integer)) } - def <=>(other) - return nil unless other.is_a?(DatabaseObject) + # clone this, and set the arch at the same time + # @return [DatabaseObject] The new object + sig { params(arch: T.nilable(Architecture)).returns(DatabaseObject) } + def clone(arch: nil) + obj = super() + obj.instance_variable_set(:@arch, arch) + obj + end - name <=> other.name - end + sig { override.params(other: T.untyped).returns(T.nilable(Integer)) } + def <=>(other) + return nil unless other.is_a?(DatabaseObject) + return nil unless @Kind == other.kind - # @return [String] Source file that data for this object can be attributed to - # @return [nil] if the source isn't known - sig { returns(T.nilable(String)) } - def __source - @data["$source"] - end + @name <=> other.name + end - def inspect - "#{self.class.name}##{name}" - end + # @return [String] Source file that data for this object can be attributed to + # @return [nil] if the source isn't known + sig { returns(T.nilable(String)) } + def __source + @data["$source"] + end - # defer the calculation of 'blk' until later, then memoize the result - sig { params(fn_name: Symbol, _block: T.proc.void).returns(T.untyped) } - def defer(fn_name, &_block) - cache_value = @cache[fn_name] - return cache_value unless cache_value.nil? + def inspect + "#{self.class.name}##{name}" + end - @cache[fn_name] ||= yield - end + # defer the calculation of 'blk' until later, then memoize the result + sig { params(fn_name: Symbol, _block: T.proc.void).returns(T.untyped) } + def defer(fn_name, &_block) + cache_value = @cache[fn_name] + return cache_value unless cache_value.nil? - # @return [ExtensionRequirementExpression] Extension(s) that define the instruction. - sig { returns(ExtensionRequirementExpression) } - def defined_by_condition - @defined_by_condition ||= - begin - raise "ERROR: definedBy is nul for #{name}" if @data["definedBy"].nil? + @cache[fn_name] ||= yield + end - ExtensionRequirementExpression.new(@data["definedBy"], @cfg_arch) - end - end + # @return Condition for when the object exists + sig { returns(AbstractCondition) } + def defined_by_condition + @defined_by_condition ||= + begin + if @data.key?("definedBy") + Condition.new(@data["definedBy"], @cfg_arch) + else + AlwaysTrueCondition.new + end + end + end - # @param normative [Boolean] Include normative text? - # @param non_normative [Boolean] Include non-normative text? - # @param when_cb [Proc(AstNode, String)] Callback to generate text for the un-knowable ast - # @return [String] Description of the object, from YAML - sig { - params( - normative: T::Boolean, - non_normative: T::Boolean, - when_cb: T.proc.params(when_ast: Idl::AstNode, text: String).returns(T::Array[String]) - ) - .returns(String) - } - def description( - normative: true, # display normative text? - non_normative: true, # display non-normative text? - when_cb: proc { |when_ast, text| - ["When `#{when_ast.gen_adoc(0)}`", text] + # @param normative [Boolean] Include normative text? + # @param non_normative [Boolean] Include non-normative text? + # @param when_cb [Proc(AstNode, String)] Callback to generate text for the un-knowable ast + # @return [String] Description of the object, from YAML + sig { + params( + normative: T::Boolean, + non_normative: T::Boolean, + when_cb: T.proc.params(when_ast: Idl::AstNode, text: String).returns(T::Array[String]) + ) + .returns(String) } - ) - case @data['description'] - when String - @data['description'] - when Array - stmts = @data['description'] - desc_lines = [] - stmts.each_with_index do |stmt, idx| - if stmt.key?("when()") - # conditional - ast = @cfg_arch.idl_compiler.compile_func_body( - stmt["when()"], - return_type: Idl::Type.new(:boolean), - symtab: @cfg_arch.symtab, - name: "#{name}.description[#{idx}].when", - input_file: __source, - input_line: source_line(["description", idx, "when()"]) - ) - - symtab = @cfg_arch.symtab.global_clone - symtab.push(ast) - unless ast.return_type(symtab).kind == :boolean - ast.type_error "`when` must be a Boolean in description" - end + def description( + normative: true, # display normative text? + non_normative: true, # display non-normative text? + when_cb: proc { |when_ast, text| + ["When `#{when_ast.gen_adoc(0)}`", text] + } + ) + case @data["description"] + when String + @data["description"] + when Array + stmts = @data["description"] + desc_lines = [] + stmts.each_with_index do |stmt, idx| + if stmt.key?("when()") + # conditional + ast = @cfg_arch.idl_compiler.compile_func_body( + stmt["when()"], + return_type: Idl::Type.new(:boolean), + symtab: @cfg_arch.symtab, + name: "#{name}.description[#{idx}].when", + input_file: __source, + input_line: source_line(["description", idx, "when()"]) + ) + + symtab = @cfg_arch.symtab.global_clone + symtab.push(ast) + unless ast.return_type(symtab).kind == :boolean + ast.type_error "`when` must be a Boolean in description" + end - value_result = ast.value_try do - if ast.return_value(symtab) == true - # condition holds, add the test - if (stmt["normative"] == true) && normative - desc_lines << stmt["text"] - elsif (stmt["normative"] == false) && non_normative - desc_lines << stmt["text"] + value_result = ast.value_try do + if ast.return_value(symtab) == true + # condition holds, add the test + if (stmt["normative"] == true) && normative + desc_lines << stmt["text"] + elsif (stmt["normative"] == false) && non_normative + desc_lines << stmt["text"] + end end + # else, value is false; don't add it + end + ast.value_else(value_result) do + # value of 'when' isn't known. prune out what we do know + # and display it + pruned_ast = ast.prune(symtab) + pruned_ast.freeze_tree(symtab) + desc_lines.concat(when_cb.call(pruned_ast, stmt["text"])) + end + symtab.pop + symtab.release + else + if (stmt["normative"] == true) && normative + desc_lines << stmt["text"] + elsif (stmt["normative"] == false) && non_normative + desc_lines << stmt["text"] end - # else, value is false; don't add it - end - ast.value_else(value_result) do - # value of 'when' isn't known. prune out what we do know - # and display it - pruned_ast = ast.prune(symtab) - pruned_ast.freeze_tree(symtab) - desc_lines.concat(when_cb.call(pruned_ast, stmt["text"])) - end - symtab.pop - symtab.release - else - if (stmt["normative"] == true) && normative - desc_lines << stmt["text"] - elsif (stmt["normative"] == false) && non_normative - desc_lines << stmt["text"] end end + desc_lines.join("\n\n") end - desc_lines.join("\n\n") end - end - # @return [Integer] THe source line number of +path+ in the YAML file - # @param path [Array] Path to the scalar you want. - # @example - # 00: yaml = <<~YAML - # 01: misa: - # 02: sw_read(): ... - # 03: fields: - # 04: A: - # 05: type(): ... - # 06: YAML - # misa_csr.source_line("sw_read()") #=> 2 - # mis_csr.source_line("fields", "A", "type()") #=> 5 - sig { params(path: T::Array[String]).returns(Integer) } - def source_line(path) - - # find the line number of this operation() in the *original* file - yaml_filename = __source - raise "No $source for #{name}" if yaml_filename.nil? - line = T.let(nil, T.untyped) - path_idx = 0 - Psych.parse_stream(File.read(yaml_filename), filename: yaml_filename) do |doc| - mapping = doc.children[0] - data = T.let( - if mapping.children.size == 2 - mapping.children[1] - else - mapping - end, - Psych::Nodes::Node) - found = T.let(false, T::Boolean) - while path_idx < path.size - if data.is_a?(Psych::Nodes::Mapping) - idx = 0 - while idx < data.children.size - if data.children[idx].value == path[path_idx] - if path_idx == path.size - 1 - line = data.children[idx + 1].start_line - if data.children[idx + 1].style == Psych::Nodes::Scalar::LITERAL - line += 1 # the string actually begins on the next line + # @return [Integer] THe source line number of +path+ in the YAML file + # @param path [Array] Path to the scalar you want. + # @example + # 00: yaml = <<~YAML + # 01: misa: + # 02: sw_read(): ... + # 03: fields: + # 04: A: + # 05: type(): ... + # 06: YAML + # misa_csr.source_line("sw_read()") #=> 2 + # mis_csr.source_line("fields", "A", "type()") #=> 5 + sig { params(path: T::Array[T.any(String, Integer)]).returns(Integer) } + def source_line(path) + + # find the line number of this operation() in the *original* file + yaml_filename = __source + raise "No $source for #{name}" if yaml_filename.nil? + line = T.let(nil, T.untyped) + path_idx = 0 + Psych.parse_stream(File.read(yaml_filename), filename: yaml_filename) do |doc| + mapping = doc.children[0] + data = T.let( + if mapping.children.size == 2 + mapping.children[1] + else + mapping + end, + Psych::Nodes::Node) + found = T.let(false, T::Boolean) + while path_idx < path.size + if data.is_a?(Psych::Nodes::Mapping) + idx = 0 + while idx < data.children.size + if data.children[idx].value == path[path_idx] + if path_idx == path.size - 1 + line = data.children[idx + 1].start_line + if data.children[idx + 1].style == Psych::Nodes::Scalar::LITERAL + line += 1 # the string actually begins on the next line + end + return line + else + found = true + data = data.children[idx + 1] + path_idx += 1 + break end + end + idx += 2 + end + raise "path #{path[path_idx]} @ #{path_idx} not found for #{self.class.name}##{name}" unless found + elsif data.is_a?(Psych::Nodes::Sequence) + raise "Expecting Integer" unless path[path_idx].is_a?(Integer) + + if data.children.size > path[path_idx] + if path_idx == path.size - 1 + line = data.children[path[path_idx]].start_line return line else - found = true - data = data.children[idx + 1] + data = data.children[path[path_idx]] path_idx += 1 - break end - end - idx += 2 - end - raise "path #{path[path_idx]} @ #{path_idx} not found for #{self.class.name}##{name}" unless found - elsif data.is_a?(Psych::Nodes::Sequence) - raise "Expecting Integer" unless path[path_idx].is_a?(Integer) - - if data.children.size > path[path_idx] - if path_idx == path.size - 1 - line = data.children[path[path_idx]].start_line - return line else - data = data.children[path[path_idx]] - path_idx += 1 + raise "Index out of bounds" end - else - raise "Index out of bounds" end end end + raise "Didn't find path '#{path}' in #{__source}" end - raise "Didn't find path '#{path}' in #{__source}" end -end # base class for any object defined in its own YAML file # @@ -300,237 +306,230 @@ def source_line(path) # $schema: # kind: # name: -class TopLevelDatabaseObject < DatabaseObject - extend T::Sig + class TopLevelDatabaseObject < DatabaseObject + extend T::Sig - # Exception raised when there is a problem with a schema file - class SchemaError < ::StandardError - # result from JsonSchemer.validate - attr_reader :result + # Exception raised when there is a problem with a schema file + class SchemaError < ::StandardError + # result from JsonSchemer.validate + attr_reader :result - def initialize(result) - if result.is_a?(Enumerator) - super(result.to_a.map { |e| "At #{e['schema_pointer']}: #{e['type']}" }) - else - super(result["error"]) + def initialize(result) + if result.is_a?(Enumerator) + super(result.to_a.map { |e| "At #{e['schema_pointer']}: #{e['type']}" }) + else + super(result["error"]) + end + @result = result end - @result = result end - end - # exception raised when an object does not validate against its schema - class SchemaValidationError < ::StandardError - - # result from JsonSchemer.validate - attr_reader :result - - # create a new SchemaValidationError - # - # @param result [JsonSchemer::Result] JsonSchemer result - def initialize(path, result) - msg = "While validating #{path}:\n\n" - nerrors = result.count - msg << "#{nerrors} error(s) during validations\n\n" - result.to_a.each do |r| - msg << - if r["type"] == "required" && !r.dig("details", "missing_keys").nil? - " At '#{r['data_pointer']}': Missing required parameter(s) '#{r['details']['missing_keys']}'\n" - elsif r["type"] == "schema" - if r["schema_pointer"] == "/additionalProperties" - " At #{r['data_pointer']}, there is an unallowed additional key\n" + # exception raised when an object does not validate against its schema + class SchemaValidationError < ::StandardError + + # result from JsonSchemer.validate + attr_reader :result + + # create a new SchemaValidationError + # + # @param result [JsonSchemer::Result] JsonSchemer result + def initialize(path, result) + msg = "While validating #{path}:\n\n" + nerrors = result.count + msg << "#{nerrors} error(s) during validations\n\n" + result.to_a.each do |r| + msg << + if r["type"] == "required" && !r.dig("details", "missing_keys").nil? + " At '#{r['data_pointer']}': Missing required parameter(s) '#{r['details']['missing_keys']}'\n" + elsif r["type"] == "schema" + if r["schema_pointer"] == "/additionalProperties" + " At #{r['data_pointer']}, there is an unallowed additional key\n" + else + " At #{r['data_pointer']}, endpoint is an invalid key\n" + end + elsif r["type"] == "enum" + " At #{r['data_pointer']}, '#{r['data']}' is not a valid enum value (#{r['schema']['enum']})\n" + elsif r["type"] == "maxProperties" + " Maximum number of properties exceeded\n" + elsif r["type"] == "object" + " At #{r['data_pointer']}, Expecting object, got #{r['data']}\n" + elsif r["type"] == "pattern" + " At #{r['data_pointer']}, RegEx validation failed; '#{r['data']}' does not match '#{r['schema']['pattern']}'\n" + elsif r["type"] == "integer" + " At #{r['data_pointer']}, '#{r['data']}' is not a integer\n" + elsif r["type"] == "array" + " At #{r['data_pointer']}, '#{r['data']}' is not a array\n" + elsif r["type"] == "oneOf" + " At #{r['data_pointer']}, '#{r['data']}' matches more than one of #{r['schema']['oneOf']}\n" + elsif r["type"] == "const" + " At #{r['data_pointer']}, '#{r['data']}' does not match required value '#{r['schema']['const']}'\n" else - " At #{r['data_pointer']}, endpoint is an invalid key\n" + " #{r}\n\n" end - elsif r["type"] == "enum" - " At #{r['data_pointer']}, '#{r['data']}' is not a valid enum value (#{r['schema']['enum']})\n" - elsif r["type"] == "maxProperties" - " Maximum number of properties exceeded\n" - elsif r["type"] == "object" - " At #{r['data_pointer']}, Expecting object, got #{r['data']}\n" - elsif r["type"] == "pattern" - " At #{r['data_pointer']}, RegEx validation failed; '#{r['data']}' does not match '#{r['schema']['pattern']}'\n" - elsif r["type"] == "integer" - " At #{r['data_pointer']}, '#{r['data']}' is not a integer\n" - elsif r["type"] == "array" - " At #{r['data_pointer']}, '#{r['data']}' is not a array\n" - elsif r["type"] == "oneOf" - " At #{r['data_pointer']}, '#{r['data']}' matches more than one of #{r['schema']['oneOf']}\n" - elsif r["type"] == "const" - " At #{r['data_pointer']}, '#{r['data']}' does not match required value '#{r['schema']['const']}'\n" - else - " #{r}\n\n" - end + end + msg << "\n" + # msg << result.to_a.to_s + super(msg) + @result = result end - msg << "\n" - # msg << result.to_a.to_s - super(msg) - @result = result end - end - # exception raised when an object does not validate, from a check other than JSON Schema - class ValidationError < ::StandardError - end - - @@schemas ||= {} - sig { params(udb_resolver: Resolver).returns(T.proc.params(pattern: Regexp).returns(T.untyped)) } - def create_json_schemer_resolver(udb_resolver) - proc do |pattern| - if pattern.to_s =~ /^http/ - JSON.parse(Net::HTTP.get(pattern)) - else - JSON.load_file(udb_resolver.schemas_path / pattern.to_s) - end + # exception raised when an object does not validate, from a check other than JSON Schema + class ValidationError < ::StandardError end - end - # validate the data against it's schema - # @raise [SchemaError] if the data is invalid - sig { overridable.params(resolver: Resolver).void } - def validate(resolver) - @@schemas[resolver] ||= {} - schemas = @@schemas[resolver] - ref_resolver = create_json_schemer_resolver(resolver) - - if @data.key?("$schema") - schema_path = data["$schema"] - schema_file, obj_path = schema_path.split("#") - schema = - if schemas.key?(schema_file) - schemas[schema_file] + @@schemas ||= {} + sig { params(udb_resolver: Resolver).returns(T.proc.params(pattern: Regexp).returns(T.untyped)) } + def self.create_json_schemer_resolver(udb_resolver) + proc do |pattern| + if pattern.to_s =~ /^http/ + JSON.parse(T.must(Net::HTTP.get(pattern))) else - schemas[schema_file] = JSONSchemer.schema( - File.read("#{resolver.schemas_path}/#{schema_file}"), - regexp_resolver: "ecma", - ref_resolver:, - insert_property_defaults: true - ) - raise SchemaError, T.must(schemas[schema_file]).validate_schema unless T.must(schemas[schema_file]).valid_schema? - - schemas[schema_file] + JSON.load_file(udb_resolver.schemas_path / pattern.to_s) end + end + end - unless obj_path.nil? - obj_path_parts = obj_path.split("/")[1..] + # validate the data against it's schema + # @raise [SchemaError] if the data is invalid + sig { overridable.params(resolver: Resolver).void } + def validate(resolver) + @@schemas[resolver] ||= {} + schemas = @@schemas[resolver] + ref_resolver = TopLevelDatabaseObject.create_json_schemer_resolver(resolver) + + if @data.key?("$schema") + schema_path = data["$schema"] + schema_file, obj_path = schema_path.split("#") + schema = + if schemas.key?(schema_file) + schemas[schema_file] + else + schemas[schema_file] = JSONSchemer.schema( + File.read("#{resolver.schemas_path}/#{schema_file}"), + regexp_resolver: "ecma", + ref_resolver:, + insert_property_defaults: true + ) + raise SchemaError, T.must(schemas[schema_file]).validate_schema unless T.must(schemas[schema_file]).valid_schema? + + schemas[schema_file] + end + + unless obj_path.nil? + obj_path_parts = obj_path.split("/")[1..] - obj_path_parts.each do |k| - schema = schema.fetch(k) + obj_path_parts.each do |k| + schema = schema.fetch(k) + end end - end - # convert through JSON to handle anything supported in YAML but not JSON - # (e.g., integer object keys will be converted to strings) - jsonified_obj = JSON.parse(JSON.generate(@data)) + # convert through JSON to handle anything supported in YAML but not JSON + # (e.g., integer object keys will be converted to strings) + jsonified_obj = JSON.parse(JSON.generate(@data)) - raise "Nothing there?" if jsonified_obj.nil? + raise "Nothing there?" if jsonified_obj.nil? - raise SchemaValidationError.new(@data_path, schema.validate(jsonified_obj)) unless schema.valid?(jsonified_obj) - else - warn "No $schema for #{@data_path}" + raise SchemaValidationError.new(@data_path, schema.validate(jsonified_obj)) unless schema.valid?(jsonified_obj) + else + warn "No $schema for #{@data_path}" + end end - end - - # @param data [Hash] Hash with fields to be added - # @param data_path [Pathname] Path to the data file - sig { params(data: T::Hash[String, T.untyped], data_path: T.any(String, Pathname), arch: ConfiguredArchitecture).void } - def initialize(data, data_path, arch) - super(data, data_path, arch, DatabaseObject::Kind.deserialize(T.must_because(data["kind"]) { pp data })) - end - - # @return [Array] List of keys added by this DatabaseObject - sig { returns(T::Array[String]) } - def keys = @data.keys - # @param k (see Hash#key?) - # @return (see Hash#key?) - sig { params(k: String).returns(T::Boolean) } - def key?(k) = @data.key?(k) + # @param data [Hash] Hash with fields to be added + # @param data_path [Pathname] Path to the data file + sig { params(data: T::Hash[String, T.untyped], data_path: T.any(String, Pathname), arch: ConfiguredArchitecture).void } + def initialize(data, data_path, arch) + super(data, data_path, arch, DatabaseObject::Kind.deserialize(T.must_because(data["kind"]) { pp data })) + end + # @return [Array] List of keys added by this DatabaseObject + sig { returns(T::Array[String]) } + def keys = @data.keys - # @return [ExtensionRequirement] Name of an extension that "primarily" defines the object (i.e., is the first in a list) - sig { returns(ExtensionRequirement) } - def primary_defined_by - defined_by_condition.first_requirement + # @param k (see Hash#key?) + # @return (see Hash#key?) + sig { params(k: String).returns(T::Boolean) } + def key?(k) = @data.key?(k) end -end # A company description -class Company - extend T::Sig + class Company + extend T::Sig - sig { params(data: T::Hash[String, String]).void } - def initialize(data) - @data = data - end + sig { params(data: T::Hash[String, String]).void } + def initialize(data) + @data = data + end - # @return [String] Company name - sig { returns(String) } - def name = T.must(@data["name"]) + # @return [String] Company name + sig { returns(String) } + def name = T.must(@data["name"]) - # @return [String] Company website - sig { returns(String) } - def url = T.must(@data["url"]) -end + # @return [String] Company website + sig { returns(String) } + def url = T.must(@data["url"]) + end # License information -class License - extend T::Sig + class License + extend T::Sig - sig { params(data: T::Hash[String, T.nilable(String)]).void } - def initialize(data) - @data = data - end + sig { params(data: T::Hash[String, T.nilable(String)]).void } + def initialize(data) + @data = data + end + + # @return [String] License name + sig { returns(String) } + def name = T.must(@data["name"]) - # @return [String] License name - sig { returns(String) } - def name = T.must(@data["name"]) - - # @return [String] License website - # @return [nil] if there is no website for the license - sig { returns(String) } - def url = T.must(@data["url"]) - - # @return [String] Text of the license - sig { returns(String) } - def text - if !@data["text_url"].nil? - Net::HTTP.get(URI(T.must(@data["text_url"]))) - else - @data["text"] + # @return [String] License website + # @return [nil] if there is no website for the license + sig { returns(String) } + def url = T.must(@data["url"]) + + # @return [String] Text of the license + sig { returns(String) } + def text + if !@data["text_url"].nil? + T.must(Net::HTTP.get(URI(T.must(@data["text_url"])))) + else + T.cast(@data.fetch("text"), String) + end end end -end # Personal information about a contributor -class Person - extend T::Sig - include Comparable - - # @return [String] Person's name - sig { returns(String) } - def name = T.must(@data["name"]) - - # @return [String] Email address - # @return [nil] if email address is not known - sig { returns(T.nilable(String)) } - def email = @data["email"] - - # @return [String] Company the person works for - # @return [nil] if the company is not known, or if the person is an individual contributor - sig { returns(T.nilable(String)) } - def company = @data["company"] - - sig { params(data: T::Hash[String, T.nilable(String)]).void } - def initialize(data) - @data = data - end + class Person + extend T::Sig + include Comparable + + # @return [String] Person's name + sig { returns(String) } + def name = T.must(@data["name"]) + + # @return [String] Email address + # @return [nil] if email address is not known + sig { returns(T.nilable(String)) } + def email = @data["email"] + + # @return [String] Company the person works for + # @return [nil] if the company is not known, or if the person is an individual contributor + sig { returns(T.nilable(String)) } + def company = @data["company"] + + sig { params(data: T::Hash[String, T.nilable(String)]).void } + def initialize(data) + @data = data + end - sig { params(other: Person).returns(T.nilable(Integer)) } - def <=>(other) - return nil unless other.is_a?(Person) + sig { params(other: Person).returns(T.nilable(Integer)) } + def <=>(other) + return nil unless other.is_a?(Person) - name <=> other.name + name <=> other.name + end end -end end diff --git a/tools/ruby-gems/udb/lib/udb/obj/exception_code.rb b/tools/ruby-gems/udb/lib/udb/obj/exception_code.rb new file mode 100644 index 0000000000..e2ca5c9cd1 --- /dev/null +++ b/tools/ruby-gems/udb/lib/udb/obj/exception_code.rb @@ -0,0 +1,98 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: strict +# frozen_string_literal: true + +require "sorbet-runtime" + +require_relative "database_obj" + +module Udb + + module Code + extend T::Sig + + # @return [String] Long-form display name (can include special characters) + sig { returns(String) } + def display_name = T.unsafe(self).data.fetch("display_name") + + # @return [String] Field name for an IDL enum + sig { returns(String) } + def var = T.unsafe(self).name + + # @return [Integer] Code, written into *mcause + sig { returns(Integer) } + def num = T.unsafe(self).data.fetch("num") + end + + # a synchroncous exception code + class ExceptionCode < TopLevelDatabaseObject + extend T::Sig + include Code + include Comparable + + sig { override.params(resolver: Resolver).void } + def validate(resolver) + super(resolver) + + @arch.exception_codes.each do |code| + next if code == self + + if num == code.num + raise ValidationError, "Duplicate exception code #{num} for #{name}, #{code.name}" + end + end + end + + sig { override.params(other: BasicObject).returns(T.nilable(Integer)) } + def <=>(other) + return nil unless T.cast(other, Object).is_a?(ExceptionCode) + + num <=> T.cast(other, ExceptionCode).num + end + + sig { override.params(other: BasicObject).returns(T::Boolean) } + def eql?(other) + (self <=> other) == 0 + end + + sig { override.returns(Integer) } + def hash = [ExceptionCode, num].hash + end + + # an asynchroncous interrupt code + class InterruptCode < TopLevelDatabaseObject + extend T::Sig + include Code + include Comparable + + sig { override.params(resolver: Resolver).void } + def validate(resolver) + super(resolver) + + @arch.interrupt_codes.each do |code| + next if code == self + + if num == code.num + raise ValidationError, "Duplicate interrupt code #{num} for #{name}, #{code.name}" + end + end + end + + sig { override.params(other: BasicObject).returns(T.nilable(Integer)) } + def <=>(other) + return nil unless T.cast(other, Object).is_a?(ExceptionCode) + + num <=> T.cast(other, ExceptionCode).num + end + + sig { override.params(other: BasicObject).returns(T::Boolean) } + def eql?(other) + (self <=> other) == 0 + end + + sig { override.returns(Integer) } + def hash = [ExceptionCode, num].hash + end +end diff --git a/tools/ruby-gems/udb/lib/udb/obj/extension.rb b/tools/ruby-gems/udb/lib/udb/obj/extension.rb index f80b6c8c16..715d2f0d28 100644 --- a/tools/ruby-gems/udb/lib/udb/obj/extension.rb +++ b/tools/ruby-gems/udb/lib/udb/obj/extension.rb @@ -8,809 +8,1249 @@ require_relative "certifiable_obj" require_relative "parameter" require_relative "../schema" -require_relative "../req_expression" +require_relative "../condition" require_relative "../presence" require_relative "../version_spec" module Udb # Extension definition -class Extension < TopLevelDatabaseObject - # Add all methods in this module to this type of database object. - include CertifiableObject - - # @return [String] Long name of the extension - sig { returns(String) } - def long_name = @data["long_name"] - - # @return [String] Either unprivileged or privileged - def priv_type = @data["type"] - - # @return [String] Either unpriv or priv - def compact_priv_type - case priv_type - when "unprivileged" - "unpriv" - when "privileged" - "priv" - else - if priv_type.nil? || priv_type.empty? - raise ArgumentError, "Extension #{name} missing its type in database (must be privileged or unprivileged)" + class Extension < TopLevelDatabaseObject + # Add all methods in this module to this type of database object. + include CertifiableObject + include Comparable + + # @return [String] Long name of the extension + sig { returns(String) } + def long_name = @data["long_name"] + + # @return [String] Either unprivileged or privileged + def priv_type = @data["type"] + + # @return [String] Either unpriv or priv + def compact_priv_type + case priv_type + when "unprivileged" + "unpriv" + when "privileged" + "priv" else - raise ArgumentError, "Extension #{name} has illegal privileged/unprivileged type of #{priv_type}" + if priv_type.nil? || priv_type.empty? + raise ArgumentError, "Extension #{name} missing its type in database (must be privileged or unprivileged)" + else + raise ArgumentError, "Extension #{name} has illegal privileged/unprivileged type of #{priv_type}" + end end end - end - # @return [String] Company that developed the extension - # @return [nil] if the company isn't known - def company - @data["company"] - end + # @return [String] Company that developed the extension + # @return [nil] if the company isn't known + def company + @data["company"] + end - # @return [{ name: String, url: String}] The name and URL of a document license the doc falls under - # @return [nil] if the license isn't known - def doc_license - @data["doc_license"] - end + # @return [{ name: String, url: String}] The name and URL of a document license the doc falls under + # @return [nil] if the license isn't known + def doc_license + @data["doc_license"] + end - # @return [Array] versions hash from config, sorted by version number - def versions - return @versions unless @versions.nil? + # @return versions hash from config, sorted by version number + sig { returns(T::Array[ExtensionVersion]) } + def versions + return @versions unless @versions.nil? - @versions = @data["versions"].map do |v| - ExtensionVersion.new(name, v["version"], arch) + @versions = @data["versions"].map do |v| + ExtensionVersion.new(name, v["version"], cfg_arch) + end + @versions.sort! + @versions end - @versions.sort! - @versions - end - # @return [Array] Ratified versions hash from config - def ratified_versions - versions.select { |v| v.state == "ratified" } - end + # @return Ratified versions hash from config + sig { returns(T::Array[ExtensionVersion]) } + def ratified_versions + versions.select { |v| v.state == "ratified" } + end - # @return [Boolean] Any version ratified? - def ratified = ratified_versions.any? + # @return [Boolean] Any version ratified? + sig { returns(T::Boolean) } + def ratified = ratified_versions.any? - # @return [ExtensionVersion] Mimumum defined version of this extension - sig { returns(ExtensionVersion) } - def min_version - versions.min { |a, b| a.version_spec <=> b.version_spec } - end + # @return [ExtensionVersion] Mimumum defined version of this extension + sig { returns(ExtensionVersion) } + def min_version + T.must(versions.min { |a, b| T.must(a.version_spec <=> b.version_spec) }) + end - # @return [ExtensionVersion] Maximum defined version of this extension - def max_version - versions.max { |a, b| a.version_spec <=> b.version_spec } - end + # @return [ExtensionVersion] Maximum defined version of this extension + sig { returns(ExtensionVersion) } + def max_version + T.must(versions.max { |a, b| T.must(a.version_spec <=> b.version_spec) }) + end - # @return [ExtensionVersion] Mimumum defined ratified version of this extension - # @return [nil] if there is no ratified version - def min_ratified_version - return nil if ratified_versions.empty? + # @return [ExtensionVersion] Mimumum defined ratified version of this extension + # @return [nil] if there is no ratified version + sig { returns(T.nilable(ExtensionVersion)) } + def min_ratified_version + return nil if ratified_versions.empty? - ratified_versions.min { |a, b| a.version_spec <=> b.version_spec } - end + ratified_versions.min { |a, b| T.must(a.version_spec <=> b.version_spec) } + end - # @return [Array] List of parameters added by this extension - def params - return @params unless @params.nil? + # @return List of parameters added by this extension + sig { returns(T::Array[T.any(Parameter, ParameterWithValue)]) } + def params + return @params unless @params.nil? - @params = [] - if @data.key?("params") - @data["params"].each do |param_name, param_data| - @params << Parameter.new(self, param_name, param_data) + @params = [] + cfg_arch.params.each do |param| + if param.defined_by_condition.satisfiability_depends_on_ext_req?(to_ext_req) + @params << param + end end + + @params end - @params - end - # @param version_requirement [String] Version requirement - # @return [Array] Array of extensions implied by the largest version of this extension meeting version_requirement - def implies(version_requirement = nil) - if version_requirement.nil? - max_version.implications - else - mv = ExtensionRequirement.new(@name, version_requirement, arch: @cfg_arch).max_satisfying_ext_ver - mv.implications + # # @param version_requirement [String] Version requirement + # # @return [Array] Array of extensions implied by the largest version of this extension meeting version_requirement + # def implies(version_requirement = nil) + # if version_requirement.nil? + # max_version.implications + # else + # mv = ExtensionRequirement.new(@name, version_requirement, arch: @cfg_arch).max_satisfying_ext_ver + # mv.implications + # end + # end + + sig { returns(AbstractCondition) } + def requirements_condition + @requirements_condition ||= + @data.key?("requirements") \ + ? Condition.new(@data.fetch("requirements"), @cfg_arch, input_file: Pathname.new(__source), input_line: source_line(["requirements"])) + : AlwaysTrueCondition.new end - end - # @return [ExtensionRequirementExpression] Logic expression for conflicts - sig { returns(AbstractRequirement) } - def conflicts_condition - @conflicts_condition ||= - if @data["conflicts"].nil? - AlwaysFalseExtensionRequirementExpression.new - else - ExtensionRequirementExpression.new(@data["conflicts"], @cfg_arch) - end - end + # @return the list of instructions implemented by *any version* of this extension (may be empty) + sig { returns(T::Array[Instruction]) } + def instructions + @instructions ||= + cfg_arch.instructions.select do |i| + i.defined_by_condition.satisfiability_depends_on_ext_req?(to_ext_req) + end + end - # @return [Array] the list of instructions implemented by *any version* of this extension (may be empty) - def instructions - @instructions ||= cfg_arch.instructions.select { |i| versions.any? { |v| i.defined_by_condition.possibly_satisfied_by?(v) }} - end + # @return the list of CSRs implemented by *any version* of this extension (may be empty) + sig { returns(T::Array[Csr]) } + def csrs + @csrs ||= \ + cfg_arch.csrs.select do |csr| + csr.defined_by_condition.satisfiability_depends_on_ext_req?(to_ext_req) + end + end - # @return [Array] the list of CSRs implemented by *any version* of this extension (may be empty) - def csrs - @csrs ||= cfg_arch.csrs.select { |csr| versions.any? { |v| csr.defined_by_condition.possibly_satisfied_by?(v) } } - end + # return the set of reachable functions from any of this extensions's CSRs or instructions in the given evaluation context + # + # @return Array of IDL functions reachable from any instruction or CSR in the extension + sig { returns(T::Array[Idl::FunctionBodyAst]) } + def reachable_functions + return @reachable_functions unless @reachable_functions.nil? + + funcs = T.let([], T::Array[Idl::FunctionBodyAst]) - # return the set of reachable functions from any of this extensions's CSRs or instructions in the given evaluation context - # - # @return [Array] Array of IDL functions reachable from any instruction or CSR in the extension - sig { returns(T::Array[Idl::FunctionBodyAst]) } - def reachable_functions - return @reachable_functions unless @reachable_functions.nil? + Udb.logger.info "Finding all reachable functions from extension #{name}" - funcs = T.let([], T::Array[Idl::FunctionBodyAst]) + instructions.each do |inst| + funcs += inst.reachable_functions(32) if inst.defined_in_base?(32) + funcs += inst.reachable_functions(64) if inst.defined_in_base?(64) + end - puts "Finding all reachable functions from extension #{name}" + csrs.each do |csr| + funcs += csr.reachable_functions + end - instructions.each do |inst| - funcs += inst.reachable_functions(32) if inst.defined_in_base?(32) - funcs += inst.reachable_functions(64) if inst.defined_in_base?(64) + @reachable_functions = funcs.uniq end - # The one place in this file that needs a ConfiguredArchitecture object instead of just Architecture. - raise "In #{name}, need to provide ConfiguredArchitecture" if cfg_arch.nil? - csrs.each do |csr| - funcs += csr.reachable_functions + sig { override.params(other_ext: Object).returns(T.nilable(Integer)).checked(:never) } + def <=>(other_ext) + return nil unless other_ext.is_a?(Extension) + other_ext.name <=> name end - @reachable_functions = funcs.uniq - end + # returns list of exception codes that are defined by any version of this extension + sig { returns(T::Array[ExceptionCode]) } + def exception_codes + @cfg_arch.exception_codes.select do |ecode| + ecode.defined_by_condition.satisfiability_depends_on_ext_req?(to_ext_req) + end + end + + # returns list of interrupt codes that are defined by any version of this extension + sig { returns(T::Array[InterruptCode]) } + def interrupt_codes + @cfg_arch.interrupt_codes.select do |icode| + icode.defined_by_condition.satisfiability_depends_on_ext_req?(to_ext_req) + end + end - def <=>(other_ext) - raise ArgumentError, "Can only compare two Extensions" unless other_ext.is_a?(Extension) - other_ext.name <=> name + # returns an ext req that will be satisfied by any known version of this extension + sig { returns(ExtensionRequirement) } + def to_ext_req + ExtensionRequirement.new(name, ">= 0", arch: @cfg_arch) + end end - sig { returns(T::Array[ExceptionCode]) } - def exception_codes - @exception_codes ||= - if @data.key?("exception_codes") - ecodes = [] - - d = T.cast(@data["exception_codes"], T::Array[T::Hash[String, T.any(Integer, String)]]) - d.each do |edata| - raise "Duplicate exception code" if ecodes.any? { |e| e.num == edata["num"] || e.name == edata["name"] || e.var == edata["var"] } - - ecodes << ExceptionCode.new( - T.cast(edata.fetch("name"), String), - T.cast(edata.fetch("var"), String), - T.cast(edata.fetch("num"), Integer), - self - ) +# A specific version of an extension + class ExtensionVersion + extend T::Sig + include Comparable + + # @return [String] Name of the extension + sig { returns(String) } + attr_reader :name + + # @return [Extension] Extension + sig { returns(Extension) } + attr_reader :ext + + # @return [VersionSpec] + sig { returns(VersionSpec) } + attr_reader :version_spec + + # @return [String] + sig { returns(String) } + attr_reader :version_str + + sig { returns(ConfiguredArchitecture) } + attr_reader :arch + + # create an ExtensionVersion from YAML + sig { + params( + yaml: T::Hash[String, T.untyped], + cfg_arch: ConfiguredArchitecture + ).returns(ExtensionVersion) + } + def self.create(yaml, cfg_arch) + requirements = + if yaml.key?("version") + yaml.fetch("version") + else + raise "not an extension version" end - - ecodes - else - [] + if requirements.is_a?(Array) + if requirements.size != 1 + raise "not an extension version: #{requirements} (#{requirements.size})" + end + requirements = requirements.fetch(0) end - end + begin + ExtensionVersion.new(yaml.fetch("name"), RequirementSpec.new(requirements).version_spec.canonical, cfg_arch) + rescue + raise "not an extension version" + end + end - sig { returns(T::Array[InterruptCode]) } - def interrupt_codes - @exception_codes ||= - if @data.key?("interrupt_codes") - ecodes = [] - - d = T.cast(@data["interrupt_codes"], T::Array[T::Hash[String, T.any(Integer, String)]]) - d.each do |edata| - raise "Duplicate interrup code" if ecodes.any? { |e| e.num == edata["num"] || e.name == edata["name"] || e.var == edata["var"] } - - ecodes << InterruptCode.new( - T.cast(edata.fetch("name"), String), - T.cast(edata.fetch("var"), String), - T.cast(edata.fetch("num"), Integer), - self - ) - end + # @api private + class MemomizedState < T::Struct + prop :unconditional_expanded_ext_reqs, T.nilable(T::Array[ExtensionRequirement]) + prop :unconditional_unexpanded_ext_reqs, T.nilable(T::Array[ExtensionRequirement]) + prop :unconditional_expanded_ext_conflicts, T.nilable(T::Array[ExtensionRequirement]) + prop :unconditional_unexpanded_ext_conflicts, T.nilable(T::Array[ExtensionRequirement]) + prop :conditional_expanded_extension_requirements, T.nilable(T::Array[ConditionalExtensionRequirement]) + prop :conditional_unexpanded_extension_requirements, T.nilable(T::Array[ConditionalExtensionRequirement]) + prop :expanded_ext_requirements, T.nilable(T::Array[ConditionalExtensionRequirement]) + prop :unexpanded_ext_requirements, T.nilable(T::Array[ConditionalExtensionRequirement]) + prop :expanded_ext_conflicts, T.nilable(T::Array[ConditionalExtensionRequirement]) + prop :unexpanded_ext_conflicts, T.nilable(T::Array[ConditionalExtensionRequirement]) + end - ecodes - else - [] + # @param name [#to_s] The extension name + # @param version [String] The version specifier + # @param arch [Architecture] The architecture definition + sig { params(name: String, version_str: String, arch: ConfiguredArchitecture, fail_if_version_does_not_exist: T::Boolean).void } + def initialize(name, version_str, arch, fail_if_version_does_not_exist: false) + @name = name + @version_str = version_str + @version_spec = VersionSpec.new(version_str) + + @arch = arch + + @ext = @arch.extension(@name) + if fail_if_version_does_not_exist && @ext.nil? + raise "Extension #{name} not found in architecture" + elsif @ext.nil? + Udb.logger.warn "Extension #{name} not found in architecture" + return # can't go futher end - end -end -# A specific version of an extension -class ExtensionVersion - extend T::Sig + @data = @ext.data["versions"].find { |v| VersionSpec.new(v["version"]) == @version_spec } - # @return [String] Name of the extension - sig { returns(String) } - attr_reader :name + if fail_if_version_does_not_exist && @data.nil? + raise ArgumentError, "Version #{version_str} of #{@name} extension is not defined" + elsif @data.nil? + Udb.logger.warn "Version #{version_str} of #{@name} extension is not defined" + end - # @return [Extension] Extension - sig { returns(Extension) } - attr_reader :ext + @memo = MemomizedState.new + end - # @return [VersionSpec] - sig { returns(VersionSpec) } - attr_reader :version_spec + # @api private + def inspect + to_s + end - # @return [String] - sig { returns(String) } - attr_reader :version_str + # true if the extension {name, version} is defined in the database, regardless of config + # false otherwise + sig { returns(T::Boolean) } + def valid? = !@data.nil? + + # given a set of extension versions from the *same* extension, return the minimal set of + # extension requirements that would cover then all + sig { params(ext_vers: T::Array[ExtensionVersion]).returns(ExtensionRequirement) } + def self.to_ext_req(ext_vers) + raise "ext_vers cannot be empty" if ext_vers.empty? + raise "All ext_vers must be of the same extension" unless ext_vers.all? { |ev| ev.name == ext_vers.fetch(0).name } + + sorted = ext_vers.sort + unless T.must(sorted.min).compatible?(T.must(sorted.max)) + raise "Impossible to combine because the set contains incompatible versions" + end - sig { returns(ConfiguredArchitecture) } - attr_reader :arch + ExtensionRequirement.new(ext_vers.fetch(0).name, "~> #{T.must(sorted.min).version_str}", arch: ext_vers.fetch(0).arch) + end - # @param name [#to_s] The extension name - # @param version [String] The version specifier - # @param arch [Architecture] The architecture definition - sig { params(name: String, version_str: String, arch: ConfiguredArchitecture, fail_if_version_does_not_exist: T::Boolean).void } - def initialize(name, version_str, arch, fail_if_version_does_not_exist: false) - @name = name - @version_str = version_str - @version_spec = VersionSpec.new(version_str) + # @api private + sig { returns(ExtensionTerm) } + def to_term + @term ||= ExtensionTerm.new(@name, "=", @version_str) + end - @arch = arch + sig { returns(AbstractCondition) } + def to_condition + @condition ||= + Condition.new(condition_hash, @arch) + end - @ext = @arch.extension(@name) - raise "Extension #{name} not found in architecture" if @ext.nil? + sig { returns(T.any(T::Hash[String, T.untyped], FalseClass)) } + def condition_hash + { + "extension" => { + "name" => name, + "version" => "= #{version_str}" + } + } + end + + # @return List of known ExtensionVersions that are compatible with this ExtensionVersion (i.e., have larger version number and are not breaking) + # the list is inclsive (this version is present) + sig { returns(T::Array[ExtensionVersion]) } + def compatible_versions + return @compatible_versions unless @compatible_versions.nil? - @data = @ext.data["versions"].find { |v| VersionSpec.new(v["version"]) == @version_spec } + @compatible_versions = [] + @ext.versions.each do |v| + @compatible_versions << v if v.version_spec >= @version_spec + break if @compatible_versions.size.positive? && v.breaking? + end + raise "Didn't even find self?" if compatible_versions.empty? - if fail_if_version_does_not_exist && @data.nil? - raise ArgumentError, "Version #{version_str} of #{@name} extension is not defined" - elsif @data.nil? - warn "Version #{version_str} of #{@name} extension is not defined" + @compatible_versions end - end - # given a set of extension versions from the *same* extension, return the minimal set of - # extension requirements that would cover then all - sig { params(ext_vers: T::Array[ExtensionVersion]).returns(ExtensionRequirement) } - def self.to_ext_req(ext_vers) - raise "ext_vers cannot be empty" if ext_vers.empty? - raise "All ext_vers must be of the same extension" unless ext_vers.all? { |ev| ev.name == ext_vers.fetch(0).name } + # @param other [ExtensionVersion] + # @return [Boolean] Whether or not +other+ is compatible with self + sig { params(other: ExtensionVersion).returns(T::Boolean) } + def compatible?(other) = compatible_versions.include?(other) - sorted = ext_vers.sort - unless T.must(sorted.min).compatible?(sorted.max) - raise "Impossible to combine because the set contains incompatible versions" + # @return [Boolean] Whether or not this is a breaking version (i.e., incompatible with all prior versions) + sig { returns(T::Boolean) } + def breaking? + !@data["breaking"].nil? end - ExtensionRequirement.new(ext_vers.fetch(0).name, "~> #{T.must(sorted.min).version_str}", arch: ext_vers.fetch(0).arch) - end + # @return [String] Canonical version string + sig { returns(String) } + def canonical_version = @version_spec.canonical - # @return [Array] List of known ExtensionVersions that are compatible with this ExtensionVersion (i.e., have larger version number and are not breaking) - def compatible_versions - return @compatible_versions unless @compatible_versions.nil? + sig { override.params(other: T.untyped).returns(T::Boolean) } + def eql?(other) + if other.is_a?(ExtensionVersion) + self.==(other) + else + false + end + end - @compatible_versions = [] - @ext.versions.each do |v| - @compatible_versions << v if v.version_spec >= @version_spec - break if @compatible_versions.size.positive? && v.breaking? + sig { override.returns(Integer) } + def hash + [@name, @version_spec].hash end - raise "Didn't even find self?" if compatible_versions.empty? - @compatible_versions - end + # @return [String] The state of the extension version ('ratified', 'developemnt', etc) + sig { returns(String) } + def state = T.cast(@data.fetch("state"), String) - # @param other [ExtensionVersion] - # @return [Boolean] Whether or not +other+ is compatible with self - def compatible?(other) = compatible_versions.include?(other) + sig { returns(T.nilable(String)) } + def ratification_date = @data["ratification_date"] - # @return [Boolean] Whether or not this is a breaking version (i.e., incompatible with all prior versions) - def breaking? - !@data["breaking"].nil? - end + sig { returns(T.nilable(T::Array[String])) } + def changes = @data["changes"].nil? ? [] : T.cast(@data.fetch("changes"), T::Array[String]) - # @return [String] Canonical version string - def canonical_version = @version_spec.canonical + sig { returns(T.nilable(String)) } + def url = @data["url"] - # @param other [ExtensionVersion] An extension name and version - # @return [Boolean] whether or not this ExtensionVersion has the exact same name and version as other - def eql?(other) - raise "ExtensionVersion is not comparable to #{other.class}" unless other.is_a?(ExtensionVersion) + # @return [Array] List of contributors to this extension version + sig { returns(T::Array[Person]) } + def contributors + return @contributors unless @contributors.nil? - @ext.name == other.ext.name && @version_spec.eql?(other.version_spec) - end + @contributors = [] + @data["contributors"]&.each do |c| + @contributors << Person.new(c) + end + @contributors + end - # @param other [ExtensionVersion] An extension name and version - # @return [Boolean] whether or not this ExtensionVersion has the exact same name and version as other - def ==(other) - eql?(other) - end + # @return The list of parameters for this extension version + sig { returns(T::Array[T.any(Parameter, ParameterWithValue)]) } + def params + @ext.params.select do |p| + p.defined_by_condition.satisfiability_depends_on_ext_req?(to_ext_req) + end + end - # @return [String] The state of the extension version ('ratified', 'developemnt', etc) - def state = @data["state"] + # @return [String] formatted like the RVI manual + # + # @example + # ExtensionVersion.new("A", "2.2").to_rvi_s #=> "A2p2" + sig { returns(String) } + def to_rvi_s + "#{name}#{@version_spec.to_rvi_s}" + end - def ratification_date = @data["ratification_date"] + # @return [String] Ext@Version + sig { returns(String) } + def to_s + "#{name}@#{@version_spec.canonical}" + end - def changes = @data["changes"].nil? ? [] : @data["changes"] + # @return Condition that must be met for this version to be allowed. + sig { returns(AbstractCondition) } + def requirements_condition + @requirements_condition ||= + @data.key?("requirements") \ + ? Condition.new( + @data.fetch("requirements"), + @arch, + input_file: Pathname.new(ext.__source), + input_line: ext.source_line(["versions", ext.data.fetch("versions").index { |v| VersionSpec.new(v["version"]) == version_spec }]) + ) + : AlwaysTrueCondition.new + end - def url = @data["url"] + # the combination of this extension version requirement along with the overall extension requirements + sig { returns(AbstractCondition) } + def combined_requirements_condition + if @data.key?("requirements") && !ext.requirements_condition.empty? + Condition.new( + { + "allOf" => [ + @data.fetch("requirements"), + ext.data.fetch("requirements") + ] + }, + @arch + ) + elsif requirements_condition.empty? + ext.requirements_condition + else + requirements_condition + end + end - # @return [Array] List of contributors to this extension version - def contributors - return @contributors unless @contributors.nil? + sig { returns(T::Array[ConditionalExtensionRequirement]) } + def defining_extension_requirements + combined_requirements_condition.implied_extension_requirements + end - @contributors = [] - @data["contributors"]&.each do |c| - @contributors << Person.new(c) + # return all ExtensionRequirements that this ExtensionVersion unconditionally depends on + # When expand is false, just return the list of ExtensionRequirements directly mentioned by the extension + # When expand is true, also include ExtensionRequirements that are required by those directly mentioned by the extension + # (i.e., collect the list from the transitive closure of requirements) + sig { params(expand: T::Boolean).returns(T::Array[ExtensionRequirement]) } + def unconditional_extension_requirements(expand:) + if expand && !@memo.unconditional_expanded_ext_reqs.nil? + @memo.unconditional_expanded_ext_reqs + elsif !expand && !@memo.unconditional_unexpanded_ext_reqs.nil? + @memo.unconditional_unexpanded_ext_reqs + else + list = + begin + req = combined_requirements_condition.to_logic_tree(expand:) + expand_req = combined_requirements_condition.to_logic_tree(expand: true) + + # find all unconditional reqs -- that is, + # reqs that must always be satisfied for requirements to be met + unconditional_terms = + req.terms.select do |term| + next if term.is_a?(ParameterTerm) || term.is_a?(XlenTerm) + raise "?" if term.is_a?(FreeTerm) + + next if term.name == name + + # see if req is satisfiable when term is absent + cb = LogicNode.make_replace_cb do |node| + if node.type == LogicNodeType::Term && node.node_children.fetch(0).is_a?(ExtensionTerm) + node_term = T.cast(node.node_children.fetch(0), ExtensionTerm) + if node_term.name == name + LogicNode::True + elsif node_term.name == term.name + LogicNode::False + else + node + end + else + node + end + end + !expand_req.replace_terms(cb).satisfiable? + end + T.cast(unconditional_terms, T::Array[ExtensionTerm]).map { |t| t.to_ext_req(@arch) } + end + if expand + @memo.unconditional_expanded_ext_reqs = list + @memo.unconditional_expanded_ext_reqs.freeze + else + @memo.unconditional_unexpanded_ext_reqs = list + @memo.unconditional_unexpanded_ext_reqs.freeze + end + end end - @contributors - end - # @return [Array] The list of parameters for this extension version - sig { returns(T::Array[Parameter]) } - def params - @ext.params.select do |p| - p.when.satisfied_by? do |ext_req| - if ext_req.name == name - ext_req.satisfied_by?(self) + # return the exhaustive, transitive list of all known extension versions that unconditionally + # conflict with self + sig { returns(T::Array[ExtensionVersion]) } + def unconditional_extension_version_conflicts + @unconditional_extension_version_conflicts ||= + @arch.extension_versions.select do |ext_ver| + next if ext_ver.name == name + + !Condition.conjunction([to_condition, ext_ver.to_condition], @arch).satisfiable? + end + end + + # return all ExtensionRequirements that this ExtensionVersion unconditionally conflicts with + # When expand is false, just return the list of ExtensionRequirements directly mentioned by the extension + # When expand is true, also include ExtensionRequirements that are required by those directly mentioned by the extension + # (i.e., collect the list from the transitive closure of requirements) + sig { params(expand: T::Boolean).returns(T::Array[ExtensionRequirement]) } + def unconditional_extension_conflicts(expand:) + if expand && !@memo.unconditional_expanded_ext_conflicts.nil? + @memo.unconditional_expanded_ext_conflicts + elsif !expand && !@memo.unconditional_unexpanded_ext_conflicts.nil? + @memo.unconditional_unexpanded_ext_conflicts + else + list = + begin + req = combined_requirements_condition.to_logic_tree(expand:) + expand_req = combined_requirements_condition.to_logic_tree(expand: true) + + # find all unconditional reqs -- that is, + # reqs that must always be satisfied for requirements to be met + unconditional_terms = + req.terms.select do |term| + next if term.is_a?(ParameterTerm) || term.is_a?(XlenTerm) + raise "?" if term.is_a?(FreeTerm) + + next if term.name == name + + # see if req is unsatisfiable when term is present + cb = LogicNode.make_replace_cb do |node| + if node.type == LogicNodeType::Term && node.node_children.fetch(0).is_a?(ExtensionTerm) + node_term = T.cast(node.node_children.fetch(0), ExtensionTerm) + if node_term.name == name + LogicNode::True + elsif node_term.name == term.name + LogicNode::True + else + node + end + else + node + end + end + !expand_req.replace_terms(cb).satisfiable? + end + + T.cast(unconditional_terms, T::Array[ExtensionTerm]).map { |t| t.to_ext_req(@arch) } + end + if expand + @memo.unconditional_expanded_ext_conflicts = list + @memo.unconditional_expanded_ext_conflicts.freeze else - @arch.possible_extension_versions.any? { |poss_ext_ver| ext_req.satisfied_by?(poss_ext_ver) } + @memo.unconditional_unexpanded_ext_conflicts = list + @memo.unconditional_unexpanded_ext_conflicts.freeze end end end - end - # @return [String] formatted like the RVI manual - # - # @example - # ExtensionVersion.new("A", "2.2").to_rvi_s #=> "A2p2" - def to_rvi_s - "#{name}#{@version_spec.to_rvi_s}" - end + sig { params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) } + def conditional_extension_requirements(expand:) + if expand && !@memo.conditional_expanded_extension_requirements.nil? + @memo.conditional_expanded_extension_requirements + elsif !expand && !@memo.conditional_unexpanded_extension_requirements.nil? + @memo.conditional_unexpanded_extension_requirements + else + req = combined_requirements_condition.to_logic_tree(expand:) - # @return [String] Ext@Version - def to_s - "#{name}@#{@version_spec.canonical}" - end + cb = LogicNode.make_replace_cb do |node| + next node unless node.type == LogicNodeType::Term - # @return [ExtensionRequirementExpression] Condition that must be met for this version to be allowed. - def requirement_condition - @requirement_condition ||= - begin - r = case @data["requires"] - when nil - AlwaysTrueExtensionRequirementExpression.new - when Hash - ExtensionRequirementExpression.new(@data["requires"], @arch) - else - ExtensionRequirementExpression.new({ "oneOf" => [@data["requires"]] }, @arch) + rterm = node.children.fetch(0) + + next node unless rterm.is_a?(ExtensionTerm) + + # remove self + next LogicNode::True if rterm.to_ext_req(@arch).satisfied_by?(self) + + # remove terms unconditionally true or false + next LogicNode::True if unconditional_extension_requirements(expand: true).any? { |ext_req| ext_req.satisfied_by?(rterm.to_ext_req(@arch)) } + next LogicNode::False if unconditional_extension_conflicts(expand: true).any? { |ext_req| ext_req.satisfied_by?(rterm.to_ext_req(@arch)) } + + node + end + + remaining = + req.replace_terms(cb).minimize(LogicNode::CanonicalizationType::ProductOfSums) + + list = T.let([], T::Array[ConditionalExtensionRequirement]) + + # for the remaining terms, find out which ones + remaining.terms.each do |term| + next unless term.is_a?(ExtensionTerm) + + # find unconditional reqs of self && term + c = Condition.conjunction([term.to_condition(@arch), to_condition], @arch) + ctree = c.to_logic_tree(expand: true) + unconditional_terms = remaining.terms.select do |cterm| + next if cterm.is_a?(ParameterTerm) || cterm.is_a?(XlenTerm) + raise "?" if cterm.is_a?(FreeTerm) + + next if cterm.name == name + next if cterm.name == term.name + + cb = LogicNode.make_replace_cb do |node| + if node.type == LogicNodeType::Term && node.node_children.fetch(0).is_a?(ExtensionTerm) + node_term = T.cast(node.node_children.fetch(0), ExtensionTerm) + if node_term.name == name + LogicNode::True + elsif node_term.name == cterm.name + LogicNode::False + else + node + end + else + node + end end - r - end - end + !ctree.replace_terms(cb).satisfiable? + end - # @return [Array] List of extensions that conflict with this ExtensionVersion - # The list is *not* transitive; if conflict C1 implies C2, - # only C1 shows up in the list - sig { returns(AbstractRequirement) } - def conflicts_condition - ext.conflicts_condition - end + next if unconditional_terms.empty? + + if unconditional_terms.size == 1 + cond = T.cast(unconditional_terms.fetch(0), ExtensionTerm).to_ext_req(@arch).to_condition + contradiction = + Condition.conjunction( + [ + cond, + Condition.not(term.to_condition(@arch), @arch), + to_condition + ], + @arch + ) + is_needed = !contradiction.satisfiable? + if is_needed + if Condition.conjunction([cond, Condition.not(term.to_condition(@arch), @arch)], @arch).satisfiable? # skip reqs that are implied + list << ConditionalExtensionRequirement.new( + ext_req: term.to_ext_req(@arch), + cond: + ) + end + end + else + conj = Condition.conjunction(unconditional_terms.map { |t| T.cast(t, ExtensionTerm).to_condition(@arch) }, @arch) + conj_tree = conj.to_logic_tree(expand: false) + formula = LogicNode.new( + LogicNodeType::And, + conj_tree.node_children.map do |node| + covered = conj_tree.node_children.any? do |other_node| + next false if node.equal?(other_node) + + if Condition.conjunction([to_condition, Condition.new(other_node.to_h, @arch)], @arch).always_implies?(Condition.new(node.to_h, @arch)) + true + else + false + end + end + + if covered + LogicNode::True + else + node + end + end + ) + # is this needed? if self can still be satisfied when condition is false but term is true, + # this term isn't actually a requirement (it's most likely related to a conflict) + contradiction = + Condition.conjunction( + [ + conj, + Condition.not(term.to_condition(@arch), @arch), + to_condition + ], + @arch + ) + is_needed = !contradiction.satisfiable? + cond = Condition.new(formula.reduce.to_h, @arch) + if is_needed # && Condition.conjunction([cond, term.to_condition(@arch), to_condition], @arch).satisfiable? # make sure it's a requirement + if Condition.conjunction([cond, Condition.not(term.to_condition(@arch), @arch)], @arch).satisfiable? + list << ConditionalExtensionRequirement.new( + ext_req: term.to_ext_req(@arch), + cond: + ) + end + end + end + end - # Returns array of ExtensionVersions implied by this ExtensionVersion, along with a condition - # under which it is in the list (which may be an AlwaysTrueExtensionRequirementExpression) - # - # @example - # ext_ver.implications #=> { :ext_ver => ExtensionVersion.new(:A, "2.1.0"), :cond => ExtensionRequirementExpression.new(...) } - # - # @return [Array ExtensionVersion, ExtensionRequirementExpression}>] - # List of extension versions that this ExtensionVersion implies - # This list is *not* transitive; if an implication I1 implies another extension I2, - # only I1 shows up in the list - sig { returns(ConditionalExtensionVersionList) } - def implications - return ConditionalExtensionVersionList.new([], @arch) if @data["implies"].nil? - - ConditionalExtensionVersionList.new(@data["implies"], @arch) - end + if expand + list.each do |cond_ext_req| + ext_ver = T.must(cond_ext_req.ext_req.satisfying_versions.max) + ext_ver.ext_requirements(expand:).each do |nested_cond_ext_req| + already_in_cond_list = + list.any? { |c| c.ext_req.satisfied_by?(nested_cond_ext_req.ext_req) } \ + || list.any? { |c| c.cond.to_logic_tree(expand: false).terms.any? { |t| T.cast(t, ExtensionTerm).to_ext_req(@arch).satisfied_by?(nested_cond_ext_req.ext_req) } } + already_in_uncond_list = + unconditional_extension_requirements(expand:).any? { |ext_req| nested_cond_ext_req.ext_req.satisfied_by?(ext_req) } + next if already_in_uncond_list + + if already_in_cond_list + # keep the one with the more expansive condition + + else + if nested_cond_ext_req.cond.empty? + list << ConditionalExtensionRequirement.new( + ext_req: nested_cond_ext_req.ext_req, + cond: cond_ext_req.cond + ) + else + list << ConditionalExtensionRequirement.new( + ext_req: nested_cond_ext_req.ext_req, + cond: Condition.conjunction([cond_ext_req.cond, nested_cond_ext_req.cond], @arch) + ) + end + end + end + end + end - # @return [Array] List of extension versions that might imply this ExtensionVersion - # - # Note that the list returned could include extension versions that conditionally imply this extension version - # For example, Zcd.implied_by will return C, even though C only implies Zcd if D is also implemented - sig { returns(T::Array[ExtensionVersion]) } - def implied_by - return @implied_by unless @implied_by.nil? - - @implied_by = [] - @arch.extensions.each do |ext| - next if ext.name == name - - ext.versions.each do |ext_ver| - ext_ver.implications.each do |implication| - @implied_by << ext_ver if implication.ext_ver == self && implication.cond.could_be_true?(@arch) + if expand + @memo.conditional_expanded_extension_requirements = list + @memo.conditional_expanded_extension_requirements.freeze + else + @memo.conditional_unexpanded_extension_requirements = list + @memo.conditional_unexpanded_extension_requirements.freeze end end end - @implied_by - end - # @return [Array ExtensionVersion, ExtensionRequirementExpression>] - # List of extension versions that might imply this ExtensionVersion, along with the condition under which it applies - # - # @example - # zcd_ext_ver.implied_by_with_condition #=> [{ ext_ver: "C 1.0", cond: "D ~> 1.0"}] - # - # @example - # zba_ext_ver.implied_by_with_condition #=> [{ ext_ver: "B 1.0", cond: AlwaysTrueExtensionRequirementExpression}] - def implied_by_with_condition - return @implied_by_with_condition unless @implied_by_with_condition.nil? - - @implied_by_with_condition = [] - @arch.extensions.each do |ext| - next if ext.name == name - - ext.versions.each do |ext_ver| - raise "????" if ext_ver.arch.nil? - ext_ver.implications.each do |implication| - @implied_by_with_condition << { ext_ver: ext_ver, cond: implication.cond } if implication.ext_ver == self - end + sig { params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) } + def ext_requirements(expand:) + # make a condition for the version, expand it, and then report what comes out, minus self + if expand + @memo.expanded_ext_requirements ||= + unconditional_extension_requirements(expand:).map { |ext_req| ConditionalExtensionRequirement.new(ext_req:, cond: Condition::True) } \ + + conditional_extension_requirements(expand:) + else + @memo.unexpanded_ext_requirements ||= + unconditional_extension_requirements(expand:).map { |ext_req| ConditionalExtensionRequirement.new(ext_req:, cond: Condition::True) } \ + + conditional_extension_requirements(expand:) end end - @implied_by_with_condition - end - # sorts extension by name, then by version - def <=>(other) - unless other.is_a?(ExtensionVersion) - raise ArgumentError, "ExtensionVersions are only comparable to other extension versions" + sig { params(expand: T::Boolean).returns(T::Array[ConditionalExtensionRequirement]) } + def ext_conflicts(expand:) + # make a condition for the version, expand it, and then report what comes out, minus self + if expand + @memo.expanded_ext_conflicts ||= + unconditional_extension_conflicts(expand:).map { |ext_req| ConditionalExtensionRequirement.new(ext_req:, cond: Condition::True) } + else + @memo.unexpanded_ext_conflicts ||= + unconditional_extension_conflicts(expand:).map { |ext_req| ConditionalExtensionRequirement.new(ext_req:, cond: Condition::True) } + end end - if other.name != @name - @name <=> other.name - else - @version_spec <=> other.version_spec + # sorts extension by name, then by version + sig { override.params(other: T.untyped).returns(T.nilable(Integer)).checked(:never) } + def <=>(other) + return nil unless other.is_a?(ExtensionVersion) + + if other.name != @name + @name <=> other.name + else + @version_spec <=> other.version_spec + end end - end - def eql?(other) - unless other.is_a?(ExtensionVersion) - raise ArgumentError, "ExtensionVersions are only comparable to other extension versions" + # the list of exception codes that require this extension version (or a compatible version) + # in order to be defined + sig { returns(T::Array[ExceptionCode]) } + def exception_codes + @exception_codes ||= + @cfg_arch.exception_codes.select do |ecode| + # define every extension version except this one (and compatible), + # and test if the condition can be satisfied + ecode.defined_by_condition.satisfiability_depends_on_ext_req?(ExtensionRequirement.new(@name, "~> #{@version_spec}", arch: @cfg_arch)) + end end - @name == other.name && @version_spec == other.version_spec - end + # the list of interrupt codes that require this extension version (or a compatible version) + # in order to be defined + sig { returns(T::Array[InterruptCode]) } + def interrupt_codes + @interrupt_codes ||= + @cfg_arch.interrupt_codes.select do |ecode| + ecode.defined_by_condition.satisfiability_depends_on_ext_req?(ExtensionRequirement.new(@name, "~> #{@version_spec}", arch: @cfg_arch)) + end + end - # @return [Array] the list of CSRs implemented by this extension version (may be empty) - def implemented_csrs - return @implemented_csrs unless @implemented_csrs.nil? + # @param design [Design] The design + # @return [Array] List of CSRs in-scope for this design for this extension version (may be empty). + # Factors in effect of design's xlen in the appropriate mode for the CSR. + def in_scope_csrs(design) + raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) - raise "implemented_csrs needs an cfg_arch" if @cfg_arch.nil? + return @in_scope_csrs unless @in_scope_csrs.nil? - @implemented_csrs = @cfg_arch.csrs.select do |csr| - csr.defined_by_condition.possibly_satisfied_by?(self) + @in_scope_csrs = @arch.csrs.select do |csr| + csr.defined_by_condition.satisfiability_depends_on_ext_req?(to_ext_req) && + (csr.base.nil? || (design.possible_xlens.include?(csr.base))) + end end - end - # @return [Array] the list of insts implemented by this extension version (may be empty) - def implemented_instructions - return @implemented_instructions unless @implemented_instructions.nil? + # @param design [Design] The design + # @return [Array] List of instructions in-scope for this design for this extension version (may be empty). + # Factors in effect of design's xlen in the appropriate mode for the instruction. + def in_scope_instructions(design) + raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) + + return @in_scope_instructions unless @in_scope_instructions.nil? + + @in_scope_instructions = @arch.instructions.select do |inst| + inst.defined_by_condition.satisfiability_depends_on_ext_req?(to_ext_req) && + (inst.base.nil? || (design.possible_xlens.include?(inst.base))) + end + end - raise "implemented_instructions needs an cfg_arch" if @cfg_arch.nil? + sig { returns(ExtensionRequirement) } + def to_ext_req + ExtensionRequirement.new(name, "= #{version_str}", arch: @arch) + end - @implemented_instructions = @cfg_arch.instructions.select do |inst| - inst.defined_by_condition.possibly_satisfied_by?(self) + sig { returns(T::Hash[String, T.untyped]) } + def to_h + { + "name" => @name, + "version" => "= #{version_str}" + } end end - sig { returns(T::Array[ExceptionCode]) } - def exception_codes - @exception_codes ||= - if @data.key?("exception_codes") - ecodes = [] +# Represents an extension requirement, that is an extension name paired with version requirement(s) + class ExtensionRequirement + extend T::Sig - d = T.cast(@data["exception_codes"], T::Array[T::Hash[String, T.any(Integer, String)]]) - d.each do |edata| - if ecodes.any? { |e| e.num == edata["num"] || e.name == edata["name"] || e.var == edata["var"] } - raise "Duplicate exception code" - end + # @return [String] Extension name + attr_reader :name - cond = T.let(T.cast(edata["when"], T::Hash[String, String]), T.nilable(T::Hash[String, String])) - unless cond.nil? || cond["version"].nil? - # check version - next unless ExtensionRequirement.new(name, T.must(cond["version"]), arch: @cfg_arch).satisfied_by?(self) - end - ecodes << - ExceptionCode.new( - T.cast(edata["name"], String), - T.cast(edata["var"], String), - T.cast(edata["num"], Integer), - ext - ) - end + # @return [String,nil] Optional note + attr_reader :note - ecodes + # @return [String,nil] Optional Requirement ID. + attr_reader :req_id + + # @return [String,nil], Optional presence (e.g., mandatory, optional, etc.) + attr_reader :presence + + sig { returns(ExtensionTerm) } + def to_term + if @requirements.size == 1 + ExtensionTerm.new(name, @requirements.fetch(0).op, @requirements.fetch(0).version_spec) else - [] + raise "TODO" end - end + end - sig { returns(T::Array[InterruptCode]) } - def interrupt_codes - @interrupt_codes ||= - if @data.key?("interrupt_codes") - ecodes = [] + sig { returns(ConfiguredArchitecture) } + def cfg_arch = @arch - d = T.cast(@data["interrupt_codes"], T::Array[T::Hash[String, T.any(Integer, String)]]) - d.each do |edata| - if ecodes.any? { |e| e.num == edata["num"] || e.name == edata["name"] || e.var == edata["var"] } - raise "Duplicate interrupt code" - end + # returns true when the version requirement is ">= 0" + sig { returns(T::Boolean) } + def satified_by_any_version? + @requirements.size == 1 && \ + @requirements.fetch(0).op == ">=" && \ + @requirements.fetch(0).version_spec == "0" + end - cond = T.let(T.cast(edata["when"], T::Hash[String, String]), T.nilable(T::Hash[String, String])) - unless cond.nil? || cond["version"].nil? - # check version - next unless ExtensionRequirement.new(name, T.must(cond["version"]), arch: @cfg_arch).satisfied_by?(self) - end - ecodes << - InterruptCode.new( - T.cast(edata["name"], String), - T.cast(edata["var"], String), - T.cast(edata["num"], Integer), - ext - ) - end + # @return Set of requirement specifications + sig { returns(T::Array[RequirementSpec]) } + def requirement_specs = @requirements - ecodes + # pretty display of requirements, with special case that ">= 0" is "any" + def requirement_specs_to_s_pretty + if satified_by_any_version? + "any" else - [] + "#{@requirements.map(&:to_s).join(" and ")}" end - end - - # @param design [Design] The design - # @return [Array] List of CSRs in-scope for this design for this extension version (may be empty). - # Factors in effect of design's xlen in the appropriate mode for the CSR. - def in_scope_csrs(design) - raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) + end - return @in_scope_csrs unless @in_scope_csrs.nil? + sig { override.returns(String) } + def to_s + "#{name} " + requirement_specs_to_s_pretty + end - @in_scope_csrs = @arch.csrs.select do |csr| - csr.defined_by_condition.possibly_satisfied_by?(self) && - (csr.base.nil? || (design.possible_xlens.include?(csr.base))) + # like to_s, but omits the requirement if the requirement is ">= 0" + sig { returns(String) } + def to_s_pretty + if satified_by_any_version? + name + else + to_s + end end - end - # @param design [Design] The design - # @return [Array] List of instructions in-scope for this design for this extension version (may be empty). - # Factors in effect of design's xlen in the appropriate mode for the instruction. - def in_scope_instructions(design) - raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) + # @return [Extension] The extension that this requirement is for + sig { returns(Extension) } + def extension + @extension ||= T.must(@arch.extension(@name)) + end - return @in_scope_instructions unless @in_scope_instructions.nil? + # create an ExtensionRequirement from YAML + sig { + params( + yaml: T::Hash[String, T.untyped], + cfg_arch: ConfiguredArchitecture + ).returns(ExtensionRequirement) + } + def self.create(yaml, cfg_arch) + requirements = + if yaml.key?("version") + yaml.fetch("version") + else + ">= 0" + end + ExtensionRequirement.new(yaml.fetch("name"), requirements, arch: cfg_arch) + end - @in_scope_instructions = @arch.instructions.select do |inst| - inst.defined_by_condition.possibly_satisfied_by?(self) && - (inst.base.nil? || (design.possible_xlens.include?(inst.base))) + sig { returns(T::Boolean) } + def is_ext_ver? + @requirements.size == 1 && @requirements.fetch(0).op == "=" end - end - sig { returns(ExtensionRequirement) } - def to_ext_req - ExtensionRequirement.new(name, "= #{version_str}", arch: @arch) - end -end + sig { returns(ExtensionVersion) } + def to_ext_ver + unless is_ext_ver? + raise "ExtensionRequirement can only be converted to and ExtensionVersion when there is a single equality version requirement" + end -# Represents an extension requirement, that is an extension name paired with version requirement(s) -class ExtensionRequirement - extend T::Sig + ExtensionVersion.new(name, @requirements.fetch(0).version_spec.to_s, @arch) + end - # @return [String] Extension name - attr_reader :name + # @param name [#to_s] Extension name + # @param requirements [String] Single requirement + # @param requirements [Array] List of requirements, all of which must hold + # @param arch [Architecture] + # @param presence [String or Presence or nil] + sig { + params( + name: String, + requirements: T.any(String, T::Array[String]), + arch: ConfiguredArchitecture, + note: T.nilable(String), + req_id: T.nilable(String), + presence: T.nilable(Presence) + ).void + } + def initialize(name, requirements, arch:, note: nil, req_id: nil, presence: nil) + @name = name.to_s.freeze + @arch = arch + @ext = @arch.extension(@name) + Udb.logger.warn "Could not find extension named '#{@name}'" if @ext.nil? + + requirements_ary = + if @ext.nil? + [] + else + case requirements + when Array + if requirements.empty? + ["~> #{@ext.min_version.version_str}"] + else + requirements + end + when String + [requirements] + else + T.absurd(requirements) + end + end + @requirements = requirements_ary.map { |r| RequirementSpec.new(r) } + + @note = note.freeze + @req_id = req_id.freeze + @presence = presence.freeze + end - # @return [String,nil] Optional note - attr_reader :note + def invert! + @requirements.each(&:invert!) + end - # @return [String,nil] Optional Requirement ID. - attr_reader :req_id + # true if there is at least one matching extension version defined in the database + # false otherwise (meaning there is no definition) + sig { returns(T::Boolean) } + def valid? = !satisfying_versions.empty? - # @return [String,nil], Optional presence (e.g., mandatory, optional, etc.) - attr_reader :presence + # @return [Array] The list of extension versions that satisfy this extension requirement + sig { returns(T::Array[ExtensionVersion]) } + def satisfying_versions + return @satisfying_versions unless @satisfying_versions.nil? - # @return [Array] Set of requirement specifications - def requirement_specs = @requirements + ext = @arch.extension(@name) - def requirement_specs_to_s - "#{@requirements.map(&:to_s).join(', ')}" - end + @satisfying_versions = ext.nil? ? [] : ext.versions.select { |v| satisfied_by?(v) } + end - def to_s - "#{name} " + requirement_specs_to_s - end + # @return the disjunction of the requirements condition of all satisfying versions + sig { returns(AbstractCondition) } + def requirements_condition + @requirements_condition ||= + Condition.disjunction( + satisfying_versions.map { |ext_ver| ext_ver.combined_requirements_condition }, + @arch + ) + end - # @return [Extension] The extension that this requirement is for - def extension - @extension ||= @arch.extension(@name) - end + sig { returns(AbstractCondition) } + def to_condition + @condition ||= + Condition.new(condition_hash, @arch) + end - # @param name [#to_s] Extension name - # @param requirements [String] Single requirement - # @param requirements [Array] List of requirements, all of which must hold - # @param arch [Architecture] - # @param presence [String or Presence or nil] - sig { - params( - name: String, - requirements: T.any(String, T::Array[String]), - arch: ConfiguredArchitecture, - note: T.nilable(String), - req_id: T.nilable(String), - presence: T.nilable(Presence) - ).void - } - def initialize(name, requirements, arch:, note: nil, req_id: nil, presence: nil) - @name = name.to_s.freeze - @arch = arch - @ext = @arch.extension(@name) - raise ArgumentError, "Could not find extension named '#{@name}'" if @ext.nil? - - requirements_ary = - case requirements - when Array - if requirements.empty? - ["~> #{@ext.min_version.version_str}"] + sig { returns(T.any(T::Hash[String, T.untyped], FalseClass)) } + def condition_hash + if @requirements.size == 1 + { + "extension" => { + "name" => name, + "version" => @requirements.fetch(0).to_s + } + } + else + # conditions don't handle multi-reqs, so return the list of satisfying versions instead + if satisfying_versions.size == 0 + false + elsif satisfying_versions.size == 1 + { + "extension" => { + "name" => name, + "version" => "= #{satisfying_versions.fetch(0).version_str}" + } + } else - requirements + { + "anyOf" => satisfying_versions.map do |ext_ver| + { + "extension" => { + "name" => name, + "version" => "= #{ext_ver.version_str}" + } + } + end + } end - when String - [requirements] - else - T.absurd(requirements) end - @requirements = requirements_ary.map { |r| RequirementSpec.new(r) } - - @note = note.freeze - @req_id = req_id.freeze - @presence = presence.freeze - end - - def invert! - @requirements.each(&:invert!) - end - - # @return [Array] The list of extension versions that satisfy this extension requirement - def satisfying_versions - return @satisfying_versions unless @satisfying_versions.nil? - - ext = @arch.extension(@name) - - @satisfying_versions = ext.nil? ? [] : ext.versions.select { |v| satisfied_by?(v) } - end + end - def params - @params ||= satisfying_versions.map(&:params).flatten.uniq - end + sig { returns(T::Array[T.any(Parameter, ParameterWithValue)]) } + def params + @params ||= satisfying_versions.map(&:params).flatten.uniq + end - # @return [ExtensionVersion] The minimum extension version that satifies this extension requirement. - # If none, raises an error. - def min_satisfying_ext_ver - if satisfying_versions.empty? - warn "Extension requirement '#{self}' cannot be met by any available extension version. Available versions:" - if @ext.versions.empty? - warn " none" - else - @ext.versions.each do |ext_ver| - warn " #{ext_ver}" + # @return [ExtensionVersion] The minimum extension version that satifies this extension requirement. + # If none, raises an error. + sig { returns(ExtensionVersion) } + def min_satisfying_ext_ver + if satisfying_versions.empty? + warn "Extension requirement '#{self}' cannot be met by any available extension version. Available versions:" + if @ext.versions.empty? + warn " none" + else + @ext.versions.each do |ext_ver| + warn " #{ext_ver}" + end end + + raise "Cannot satisfy extension requirement '#{self}'" end - raise "Cannot satisfy extension requirement '#{self}'" + T.must(satisfying_versions.min) end - satisfying_versions.min - end - - # @return [ExtensionVersion] The minimum extension version that satifies this extension requirement. - # If none, raises an error. - sig { returns(ExtensionVersion) } - def max_satisfying_ext_ver - if satisfying_versions.empty? - warn "Extension requirement '#{self}' cannot be met by any available extension version. Available versions:" - if @ext.versions.empty? - warn " none" - else - @ext.versions.each do |ext_ver| - warn " #{ext_ver}" + # @return [ExtensionVersion] The minimum extension version that satifies this extension requirement. + # If none, raises an error. + sig { returns(ExtensionVersion) } + def max_satisfying_ext_ver + if satisfying_versions.empty? + warn "Extension requirement '#{self}' cannot be met by any available extension version. Available versions:" + if @ext.versions.empty? + warn " none" + else + @ext.versions.each do |ext_ver| + warn " #{ext_ver}" + end end + + raise "Cannot satisfy extension requirement '#{self}'" end - raise "Cannot satisfy extension requirement '#{self}'" + T.must(satisfying_versions.max) end - satisfying_versions.max - end - - # returns true if this extension requirement is a superset of other_ext_req - sig { params(other_ext_req: ExtensionRequirement).returns(T::Boolean) } - def superset?(other_ext_req) - return false if other_ext_req.name != name + # returns true if this extension requirement is a superset of other_ext_req + sig { params(other_ext_req: ExtensionRequirement).returns(T::Boolean) } + def superset?(other_ext_req) + return false if other_ext_req.name != name - other_ext_req.satisfying_versions.all? { |ext_ver| satisfied_by?(ext_ver) } - end + other_ext_req.satisfying_versions.all? { |ext_ver| satisfied_by?(ext_ver) } + end - # returns true if this extension requirement is a subset of other_ext_req - sig { params(other_ext_req: ExtensionRequirement).returns(T::Boolean) } - def subset?(other_ext_req) - return false if other_ext_req.name != name + # returns true if this extension requirement is a subset of other_ext_req + sig { params(other_ext_req: ExtensionRequirement).returns(T::Boolean) } + def subset?(other_ext_req) + return false if other_ext_req.name != name - satisfying_versions.all? { |ext_ver| other_ext_req.satisfied_by?(ext_ver) } - end + satisfying_versions.all? { |ext_ver| other_ext_req.satisfied_by?(ext_ver) } + end - # returns true if either this extension requirement is a superset of other_ext_req - # or other_ext_req is a superset of this extension requirement - sig { params(other_ext_req: ExtensionRequirement).returns(T::Boolean) } - def compatible?(other_ext_req) - superset?(other_ext_req) || subset?(other_ext_req) - end + # returns true if either this extension requirement is a superset of other_ext_req + # or other_ext_req is a superset of this extension requirement + sig { params(other_ext_req: ExtensionRequirement).returns(T::Boolean) } + def compatible?(other_ext_req) + superset?(other_ext_req) || subset?(other_ext_req) + end - # given a compatible other_ext_req, return a single extension requirement that - # covers both this and other_ext_req - sig { params(other_ext_req: ExtensionRequirement).returns(ExtensionRequirement) } - def merge(other_ext_req) - raise "Cannot merge incompatible ExtensionRequirements" unless compatible?(other_ext_req) + # given a compatible other_ext_req, return a single extension requirement that + # covers both this and other_ext_req + sig { params(other_ext_req: ExtensionRequirement).returns(ExtensionRequirement) } + def merge(other_ext_req) + raise "Cannot merge incompatible ExtensionRequirements" unless compatible?(other_ext_req) - if superset?(other_ext_req) - self - else - other_ext_req + if superset?(other_ext_req) + self + else + other_ext_req + end end - end - # @overload - # @param extension_version [ExtensionVersion] A specific extension version - # @return [Boolean] whether or not the extension_version meets this requirement - # @overload - # @param extension_requirement [ExtensionRequirement] A range of extension versions - # @return [Boolean] whether or not extension_requirement is satisfied by this requirement - # @overload - # @param extension_name [#to_s] An extension name - # @param extension_name [#to_s] An extension version - # @return [Boolean] whether or not the extension_version meets this requirement - def satisfied_by?(*args) - if args.size == 1 - if args[0].is_a?(ExtensionVersion) - return false if args[0].name != @name - - @requirements.all? { |r| r.satisfied_by?(args[0].version_spec, @ext) } - elsif args[0].is_a?(ExtensionRequirement) - return false if args[0].name != @name - - @requirements.all? do |r| - args[0].satisfying_versions.all? do |ext_ver| - r.satisfied_by?(ext_ver.version_spec, @ext) + # @overload + # @param extension_version [ExtensionVersion] A specific extension version + # @return [Boolean] whether or not the extension_version meets this requirement + # @overload + # @param extension_requirement [ExtensionRequirement] A range of extension versions + # @return [Boolean] whether or not extension_requirement is satisfied by this requirement + # @overload + # @param extension_name [#to_s] An extension name + # @param extension_name [#to_s] An extension version + # @return [Boolean] whether or not the extension_version meets this requirement + def satisfied_by?(*args) + if args.size == 1 + if args[0].is_a?(ExtensionVersion) + return false if args[0].name != @name + + @requirements.all? { |r| r.satisfied_by?(args[0].version_spec, @ext) } + elsif args[0].is_a?(ExtensionRequirement) + return false if args[0].name != @name + + @requirements.all? do |r| + args[0].satisfying_versions.all? do |ext_ver| + r.satisfied_by?(ext_ver.version_spec, @ext) + end end + else + raise ArgumentError, "Single argument must be an ExtensionVersion or ExtensionRequirement" end + elsif args.size == 2 + raise ArgumentError, "First parameter must be an extension name" unless args[0].respond_to?(:to_s) + raise ArgumentError, "First parameter must be an extension version" unless args[1].respond_to?(:to_s) + + return false if args[0] != @name + + @requirements.all? { |r| r.satisfied_by?(args[1], @ext) } else - raise ArgumentError, "Single argument must be an ExtensionVersion or ExtensionRequirement" + raise ArgumentError, "Wrong number of args (expecting 1 or 2)" end - elsif args.size == 2 - raise ArgumentError, "First parameter must be an extension name" unless args[0].respond_to?(:to_s) - raise ArgumentError, "First parameter must be an extension version" unless args[1].respond_to?(:to_s) + end + + # @return [Array] List of CSRs defined by any extension satisfying this requirement + sig { returns(T::Array[Csr]) } + def csrs + @csrs ||= @arch.csrs.select do |csr| + csr.defined_by_condition.satisfiability_depends_on_ext_req?(self) + end + end - return false if args[0] != @name + sig { params(other: Object).returns(T::Boolean) } + def ==(other) + return false unless other.is_a?(ExtensionRequirement) - @requirements.all? { |r| r.satisfied_by?(args[1], @ext) } - else - raise ArgumentError, "Wrong number of args (expecting 1 or 2)" + (satisfying_versions.size == other.satisfying_versions.size) && \ + satisfying_versions.all? { |version| other.satisfying_versions.include?(version) } end - end - # @return [Array] List of CSRs defined by any extension satisfying this requirement - def csrs - @csrs ||= @arch.csrs.select do |csr| - satisfying_versions.any? do |ext_ver| - csr.defined_by_condition.possibly_satisfied_by?(ext_ver) - end + # sorts by name + sig { override.params(other: T.untyped).returns(T.nilable(Integer)).checked(:never) } + def <=>(other) + return nil unless other.is_a?(ExtensionRequirement) + + @name <=> other.name end - end - # sorts by name - def <=>(other) - raise ArgumentError, "ExtensionRequirements are only comparable to other extension requirements" unless other.is_a?(ExtensionRequirement) + # hash equality + sig { override.params(other: BasicObject).returns(T::Boolean) } + def eql?(other) + return false unless T.cast(other, Object).is_a?(ExtensionRequirement) + + satisfying_versions == T.cast(other, ExtensionRequirement).satisfying_versions + end - @name <=> other.name + sig { override.returns(Integer) } + def hash + satisfying_versions.hash + end + + sig { returns(T::Hash[String, T.untyped]) } + def to_h + { + "name" => @name, + "version" => @requirements.empty? ? ">= 0" : @requirements.map(&:to_s) + } + end end -end end diff --git a/tools/ruby-gems/udb/lib/udb/obj/instruction.rb b/tools/ruby-gems/udb/lib/udb/obj/instruction.rb index 9c38f3e6b7..d82b24c5be 100644 --- a/tools/ruby-gems/udb/lib/udb/obj/instruction.rb +++ b/tools/ruby-gems/udb/lib/udb/obj/instruction.rb @@ -1,8 +1,8 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# frozen_string_literal: true # typed: true +# frozen_string_literal: true # require 'ruby-prof-flamegraph' @@ -13,178 +13,186 @@ require "awesome_print" module Udb -class InstructionType < DatabaseObject - sig { - params( - data: T::Hash[String, T.untyped], - data_path: T.any(String, Pathname), - arch: ConfiguredArchitecture, - name: T.nilable(String) - ).void - } - def initialize(data, data_path, arch, name: nil) - super(data, data_path, arch, DatabaseObject::Kind::InstructionType, name:) + class InstructionType < TopLevelDatabaseObject + sig { + params( + data: T::Hash[String, T.untyped], + data_path: T.any(String, Pathname), + arch: ConfiguredArchitecture + ).void + } + def initialize(data, data_path, arch) + super(data, data_path, arch) + end + + def length = @data["length"] + def size = length end - def length = @data["length"] - def size = length -end + class InstructionSubtype < TopLevelDatabaseObject + class Opcode + extend T::Sig -class InstructionSubtype < DatabaseObject - class Opcode - extend T::Sig + sig { returns(String) } + attr_reader :name - sig { returns(String) } - attr_reader :name + sig { returns(Range) } + attr_reader :range - sig { returns(Range) } - attr_reader :range + sig { params(name: String, range: Range).void } + def initialize(name, range) + @name = name + @range = range + end - sig { params(name: String, range: Range).void } - def initialize(name, range) - @name = name - @range = range + sig { params(other: T.any(Opcode, Instruction::DecodeVariable)).returns(T::Boolean) } + def overlaps?(other) + if other.is_a?(Opcode) + range.eql?(other.range) || range.cover?(other.range.first) || other.range.cover?(range.first) + else + other.location_bits.any? { |i| range.cover?(i) } + end + end end - sig { params(other: T.any(Opcode, Instruction::DecodeVariable)).returns(T::Boolean) } - def overlaps?(other) - if other.is_a?(Opcode) - range.eql?(other.range) || range.cover?(other.range.first) || other.range.cover?(range.first) - else - other.location_bits.any? { |i| range.cover?(i)} - end + sig { + params( + data: T::Hash[String, T.untyped], + data_path: T.any(String, Pathname), + arch: ConfiguredArchitecture + ).void + } + def initialize(data, data_path, arch) + super(data, data_path, arch) end - end - sig { - params( - data: T::Hash[String, T.untyped], - data_path: T.any(String, Pathname), - arch: ConfiguredArchitecture, - name: T.nilable(String) - ).void - } - def initialize(data, data_path, arch, name: nil) - super(data, data_path, arch, DatabaseObject::Kind::InstructionSubtype, name:) - end + sig { returns(InstructionType) } + def type + @type ||= @arch.ref(@data["data"]["type"]["$ref"]) + end - sig { returns(InstructionType) } - def type - @type ||= @arch.ref(@data["data"]["type"]["$ref"]) - end + sig { returns(T::Array[Instruction::DecodeVariable]) } + def variables + @variables ||= + if @data["data"].key?("variables") + @data["data"]["variables"].map { |var_name, var_data| Instruction::DecodeVariable.new(var_name, var_data) } + else + [] + end + end - sig { returns(T::Array[Instruction::DecodeVariable]) } - def variables - @variables ||= - if @data["data"].key?("variables") - @data["data"]["variables"].map { |var_name, var_data| Instruction::DecodeVariable.new(var_name, var_data) } - else - [] - end + sig { returns(T::Array[Instruction::Encoding::Field]) } + def opcodes + @opcodes ||= + @data["data"]["opcodes"].map do |opcode_name, opcode_data| + next if opcode_name[0] == "$" + + raise "unexpected: opcode field is not contiguous" if opcode_data["location"].include?("|") + + loc = opcode_data["location"] + range = + if loc =~ /^([0-9]+)$/ + bit = ::Regexp.last_match(1) + bit.to_i..bit.to_i + elsif loc =~ /^([0-9]+)-([0-9]+)$/ + msb = ::Regexp.last_match(1) + lsb = ::Regexp.last_match(2) + raise "range must be specified 'msb-lsb'" unless msb.to_i >= lsb.to_i + + lsb.to_i..msb.to_i + else + raise "location format error" + end + Instruction::Encoding::Field.new(opcode_name, range) + end.reject(&:nil?) + end end - sig { returns(T::Array[Instruction::Encoding::Field]) } - def opcodes - @opcodes ||= - @data["data"]["opcodes"].map do |opcode_name, opcode_data| - next if opcode_name[0] == "$" +# model of a specific instruction in a specific base (RV32/RV64) + class Instruction < TopLevelDatabaseObject + # Add all methods in this module to this type of database object. + include CertifiableObject + include Helpers::WavedromUtil - raise "unexpected: opcode field is not contiguous" if opcode_data["location"].include?("|") + class MemoizedState < T::Struct + prop :reachable_functions, T.nilable(T::Hash[Integer, Idl::FunctionBodyAst]) + end - loc = opcode_data["location"] - range = - if loc =~ /^([0-9]+)$/ - bit = ::Regexp.last_match(1) - bit.to_i..bit.to_i - elsif loc =~ /^([0-9]+)-([0-9]+)$/ - msb = ::Regexp.last_match(1) - lsb = ::Regexp.last_match(2) - raise "range must be specified 'msb-lsb'" unless msb.to_i >= lsb.to_i + sig { override.params(data: T::Hash[String, T.untyped], data_path: T.any(String, Pathname), arch: ConfiguredArchitecture).void } + def initialize(data, data_path, arch) + super(data, data_path, arch) + @memo = MemoizedState.new + end - lsb.to_i..msb.to_i + sig { returns(T::Boolean) } + def has_type? = @data.key?("format") + + sig { params(base: Integer).returns(InstructionType) } + def type(base) + @type ||= { + 32 => + if @data["format"].key?("RV32") + @arch.ref(@data["format"]["RV32"]["type"]["$ref"]) else - raise "location format error" + @arch.ref(@data["format"]["type"]["$ref"]) + end, + 64 => + if @data["format"].key?("RV64") + @arch.ref(@data["format"]["RV64"]["type"]["$ref"]) + else + @arch.ref(@data["format"]["type"]["$ref"]) end - Instruction::Encoding::Field.new(opcode_name, range) - end.reject(&:nil?) - end -end - -# model of a specific instruction in a specific base (RV32/RV64) -class Instruction < TopLevelDatabaseObject - # Add all methods in this module to this type of database object. - include CertifiableObject - include Helpers::WavedromUtil - - sig { returns(T::Boolean) } - def has_type? = @data.key?("format") - - sig { params(base: Integer).returns(InstructionType) } - def type(base) - @type ||= { - 32 => - if @data["format"].key?("RV32") - @arch.ref(@data["format"]["RV32"]["type"]["$ref"]) - else - @arch.ref(@data["format"]["type"]["$ref"]) - end, - 64 => - if @data["format"].key?("RV64") - @arch.ref(@data["format"]["RV64"]["type"]["$ref"]) - else - @arch.ref(@data["format"]["type"]["$ref"]) - end - } - @type[base] - end + } + @type[base] + end - sig { params(base: Integer).returns(InstructionSubtype) } - def subtype(base) - @subtype ||= { - 32 => - if @data["format"].key?("RV32") - @arch.ref(@data["format"]["RV32"]["subtype"]["$ref"]) - else - @arch.ref(@data["format"]["subtype"]["$ref"]) - end, - 64 => - if @data["format"].key?("RV64") - @arch.ref(@data["format"]["RV64"]["subtype"]["$ref"]) - else - @arch.ref(@data["format"]["subtype"]["$ref"]) - end - } - @subtype[base] - end + sig { params(base: Integer).returns(InstructionSubtype) } + def subtype(base) + @subtype ||= { + 32 => + if @data["format"].key?("RV32") + @arch.ref(@data["format"]["RV32"]["subtype"]["$ref"]) + else + @arch.ref(@data["format"]["subtype"]["$ref"]) + end, + 64 => + if @data["format"].key?("RV64") + @arch.ref(@data["format"]["RV64"]["subtype"]["$ref"]) + else + @arch.ref(@data["format"]["subtype"]["$ref"]) + end + } + @subtype[base] + end - class Opcode < InstructionSubtype::Opcode - extend T::Sig + class Opcode < InstructionSubtype::Opcode + extend T::Sig - sig { returns(Integer) } - attr_reader :value + sig { returns(Integer) } + attr_reader :value - sig { params(name: String, range: Range, value: Integer).void } - def initialize(name, range, value) - super(name, range) - @value = value - end + sig { params(name: String, range: Range, value: Integer).void } + def initialize(name, range, value) + super(name, range) + @value = value + end - sig { returns(T::Boolean) } - def opcode? = true + sig { returns(T::Boolean) } + def opcode? = true - sig { returns(String) } - def to_s = "#{name}[#{range}]" - end + sig { returns(String) } + def to_s = "#{name}[#{range}]" + end - sig { params(base: Integer).returns(T::Array[Opcode]) } - def opcodes(base) - raise "Instruction #{name} is not defined in base RV#{base}" unless defined_in_base?(base) + sig { params(base: Integer).returns(T::Array[Opcode]) } + def opcodes(base) + raise "Instruction #{name} is not defined in base RV#{base}" unless defined_in_base?(base) - @opcodes ||= {} + @opcodes ||= {} - return @opcodes[base] unless @opcodes[base].nil? + return @opcodes[base] unless @opcodes[base].nil? - @opcodes[base] = @data["format"]["opcodes"].map do |opcode_name, opcode_data| + @opcodes[base] = @data["format"]["opcodes"].map do |opcode_name, opcode_data| next if opcode_name[0] == "$" raise "unexpected: opcode field is not contiguous" if opcode_data["location"].include?("|") @@ -205,314 +213,325 @@ def opcodes(base) end Opcode.new(opcode_name, range, opcode_data["value"]) end.reject(&:nil?) - end - - # @return [String] format, as a string of 0,1 and -, - # @example Format of `sd` - # sd.format #=> '-----------------011-----0100011' - sig { params(base: Integer).returns(String) } - def encoding_format(base) - raise ArgumentError, "base must be 32 or 64" unless [32, 64].include?(base) + end - if has_type? - mask = "-" * type(base).length + # @return [String] format, as a string of 0,1 and -, + # @example Format of `sd` + # sd.format #=> '-----------------011-----0100011' + sig { params(base: Integer).returns(String) } + def encoding_format(base) + raise ArgumentError, "base must be 32 or 64" unless [32, 64].include?(base) - opcodes(base).each do |opcode| - mask[type(base).length - opcode.range.end - 1, opcode.range.size] = opcode.value.to_s(2).rjust(T.must(opcode.range.size), "0") - end + if has_type? + mask = "-" * type(base).length - mask - else - @encoding_format ||= - if @data["encoding"].key?("RV32") - { - 32 => @data["encoding"]["RV32"]["match"], - 64 => @data["encoding"]["RV64"]["match"] - } - else - { - 32 => @data["encoding"]["match"], - 64 => @data["encoding"]["match"] - } + opcodes(base).each do |opcode| + mask[type(base).length - opcode.range.end - 1, opcode.range.size] = opcode.value.to_s(2).rjust(T.must(opcode.range.size), "0") end - @encoding_format[base] - end - end - - def processed_wavedrom_desc(base) - data = wavedrom_desc(base) - processed_data = process_wavedrom(data) - fix_entities(json_dump_with_hex_literals(processed_data)) - end - def self.ary_from_location(location_str_or_int) - return [location_str_or_int] if location_str_or_int.is_a?(Integer) - - bits = [] - parts = location_str_or_int.split("|") - parts.each do |part| - if part.include?("-") - msb, lsb = part.split("-").map(&:to_i) - (lsb..msb).each { |i| bits << i } + mask else - bits << part.to_i + @encoding_format ||= + if @data["encoding"].key?("RV32") + { + 32 => @data["encoding"]["RV32"]["match"], + 64 => @data["encoding"]["RV64"]["match"] + } + else + { + 32 => @data["encoding"]["match"], + 64 => @data["encoding"]["match"] + } + end + @encoding_format[base] end end - bits - end - sig { params(inst: Instruction, base: Integer).void } - def self.validate_encoding(inst, base) - # make sure there is no overlap between variables/opcodes - (inst.opcodes(base) + inst.decode_variables(base)).combination(2) do |field1, field2| - raise "In instruction #{inst.name}, #{field1.name} and #{field2.name} overlap" if field1.overlaps?(field2) + def processed_wavedrom_desc(base) + data = wavedrom_desc(base) + processed_data = process_wavedrom(data) + fix_entities(json_dump_with_hex_literals(processed_data)) end - # makes sure every bit is accounted for - inst.type(base).length.times do |i| - covered = - inst.opcodes(base).any? { |opcode| opcode.range.cover?(i) } || \ - inst.decode_variables(base).any? { |var| var.location_bits.include?(i) } - raise "In instruction #{inst.name}, there is no opcode or variable at bit #{i}" unless covered + def self.ary_from_location(location_str_or_int) + return [location_str_or_int] if location_str_or_int.is_a?(Integer) + + bits = [] + parts = location_str_or_int.split("|") + parts.each do |part| + if part.include?("-") + msb, lsb = part.split("-").map(&:to_i) + (lsb..msb).each { |i| bits << i } + else + bits << part.to_i + end + end + bits end - # make sure opcode values fit - inst.opcodes(base).each do |opcode| - raise "In instruction #{inst.name}, opcode #{opcode.name}, value #{opcode.value} does not fit in #{opcode.range}" unless T.must(opcode.range.size) >= opcode.value.bit_length + sig { params(inst: Instruction, base: Integer).void } + def self.validate_encoding(inst, base) + # make sure there is no overlap between variables/opcodes + (inst.opcodes(base) + inst.decode_variables(base)).combination(2) do |field1, field2| + raise "In instruction #{inst.name}, #{field1.name} and #{field2.name} overlap" if field1.overlaps?(field2) + end + + # makes sure every bit is accounted for + inst.type(base).length.times do |i| + covered = + inst.opcodes(base).any? { |opcode| opcode.range.cover?(i) } || \ + inst.decode_variables(base).any? { |var| var.location_bits.include?(i) } + raise "In instruction #{inst.name}, there is no opcode or variable at bit #{i}" unless covered + end + + # make sure opcode values fit + inst.opcodes(base).each do |opcode| + raise "In instruction #{inst.name}, opcode #{opcode.name}, value #{opcode.value} does not fit in #{opcode.range}" unless T.must(opcode.range.size) >= opcode.value.bit_length + end end - end - def self.deprecated_validate_encoding(encoding, inst_name) - match = encoding["match"] - raise "No match for instruction #{inst_name}?" if match.nil? - - variables = encoding.key?("variables") ? encoding["variables"] : [] - match.size.times do |i| - if match[match.size - 1 - i] == "-" - # make sure exactly one variable covers this bit - vars_match = variables.count { |variable| ary_from_location(variable["location"]).include?(i) } - if vars_match.zero? - raise ValidationError, "In instruction #{inst_name}, no variable or encoding bit covers bit #{i}" - elsif vars_match != 1 - raise ValidationError, "In instruction, #{inst_name}, bit #{i} is covered by more than one variable" - end - else - # make sure no variable covers this bit - unless variables.nil? - unless variables.none? { |variable| ary_from_location(variable["location"]).include?(i) } - raise ValidationError, "In instruction, #{inst_name}, bit #{i} is covered by both a variable and the match string" + def self.deprecated_validate_encoding(encoding, inst_name) + match = encoding["match"] + raise "No match for instruction #{inst_name}?" if match.nil? + + variables = encoding.key?("variables") ? encoding["variables"] : [] + match.size.times do |i| + if match[match.size - 1 - i] == "-" + # make sure exactly one variable covers this bit + vars_match = variables.count { |variable| ary_from_location(variable["location"]).include?(i) } + if vars_match.zero? + raise ValidationError, "In instruction #{inst_name}, no variable or encoding bit covers bit #{i}" + elsif vars_match != 1 + raise ValidationError, "In instruction, #{inst_name}, bit #{i} is covered by more than one variable" + end + else + # make sure no variable covers this bit + unless variables.nil? + unless variables.none? { |variable| ary_from_location(variable["location"]).include?(i) } + raise ValidationError, "In instruction, #{inst_name}, bit #{i} is covered by both a variable and the match string" + end end end end end - end - sig { override.params(resolver: Resolver).void } - def validate(resolver) - super(resolver) + sig { override.params(resolver: Resolver).void } + def validate(resolver) + super(resolver) - if has_type? - if @data["format"]["RV32"].nil? - b = @data["base"].nil? ? 64 : T.cast(@data["base"], Integer) - Instruction.validate_encoding(self, b) - else - Instruction.validate_encoding(self, 32) - Instruction.validate_encoding(self, 64) - end - else - if @data["encoding"]["RV32"].nil? - Instruction.deprecated_validate_encoding(@data["encoding"], name) + if has_type? + if @data["format"]["RV32"].nil? + b = @data["base"].nil? ? 64 : T.cast(@data["base"], Integer) + Instruction.validate_encoding(self, b) + else + Instruction.validate_encoding(self, 32) + Instruction.validate_encoding(self, 64) + end else - Instruction.deprecated_validate_encoding(@data["encoding"]["RV32"], name) - Instruction.deprecated_validate_encoding(@data["encoding"]["RV64"], name) + if @data["encoding"]["RV32"].nil? + Instruction.deprecated_validate_encoding(@data["encoding"], name) + else + Instruction.deprecated_validate_encoding(@data["encoding"]["RV32"], name) + Instruction.deprecated_validate_encoding(@data["encoding"]["RV64"], name) + end end - end - # Validate hint references - if @data.key?("hints") - @data["hints"].each_with_index do |hint, index| - if hint.key?("$ref") - begin - # Try to dereference the hint to validate it exists - hint_inst = @cfg_arch.ref(hint["$ref"]) - if hint_inst.nil? - raise "Invalid hint reference in instruction '#{name}' at hints[#{index}]: '#{hint["$ref"]}' - reference not found" + # Validate hint references + if @data.key?("hints") + @data["hints"].each_with_index do |hint, index| + if hint.key?("$ref") + begin + # Try to dereference the hint to validate it exists + hint_inst = @cfg_arch.ref(hint["$ref"]) + if hint_inst.nil? + raise "Invalid hint reference in instruction '#{name}' at hints[#{index}]: '#{hint["$ref"]}' - reference not found" + end + rescue => e + raise "Invalid hint reference in instruction '#{name}' at hints[#{index}]: '#{hint["$ref"]}' - #{e.message}" end - rescue => e - raise "Invalid hint reference in instruction '#{name}' at hints[#{index}]: '#{hint["$ref"]}' - #{e.message}" end end end end - end - def ==(other) - if other.is_a?(Instruction) - name == other.name - else - raise ArgumentError, "Instruction is not comparable to a #{other.class.name}" + def ==(other) + if other.is_a?(Instruction) + name == other.name + else + raise ArgumentError, "Instruction is not comparable to a #{other.class.name}" + end end - end + alias eql? == - alias eql? == + def <=>(other) + if other.is_a?(Instruction) + name <=> other.name + else + raise ArgumentError, "Instruction is not comparable to a #{other.class.name}" + end + end - def <=>(other) - if other.is_a?(Instruction) - name <=> other.name - else - raise ArgumentError, "Instruction is not comparable to a #{other.class.name}" + # @return [Hash] Hash of access permissions for each mode. The key is the lowercase name of a privilege mode, and the value is one of ['never', 'sometimes', 'always'] + def access + @data["access"] end - end - # @return [Hash] Hash of access permissions for each mode. The key is the lowercase name of a privilege mode, and the value is one of ['never', 'sometimes', 'always'] - def access - @data["access"] - end + # @return [String] Details of the access restrictions + # @return [nil] if no details are available + def access_detail + @data["access_detail"] + end - # @return [String] Details of the access restrictions - # @return [nil] if no details are available - def access_detail - @data["access_detail"] - end + # @return [Integer] XLEN that must be effective for instruction to exist + # @return [nil] if instruction exists in all XLENs + def base + @data["base"] + end - # @return [Integer] XLEN that must be effective for instruction to exist - # @return [nil] if instruction exists in all XLENs - def base - @data["base"] - end + # @return [Boolean] Whether or not the instruction must have data-independent timing when Zkt is enabled. + def data_independent_timing? = @data["data_independent_timing"] - # @return [Boolean] Whether or not the instruction must have data-independent timing when Zkt is enabled. - def data_independent_timing? = @data["data_independent_timing"] + # @param xlen [Integer] 32 or 64, the target xlen + # @return [Boolean] whethen or not instruction is defined in base +xlen+ + def defined_in_base?(xlen) + base.nil? || (base == xlen) + end - # @param xlen [Integer] 32 or 64, the target xlen - # @return [Boolean] whethen or not instruction is defined in base +xlen+ - def defined_in_base?(xlen) - base.nil? || (base == xlen) - end + # @return [String] Assembly format + def assembly + @data["assembly"] + end - # @return [String] Assembly format - def assembly - @data["assembly"] - end + def fill_symtab(effective_xlen, ast) + symtab = cfg_arch.symtab.global_clone + symtab.push(ast) + symtab.add( + "__instruction_encoding_size", + Idl::Var.new("__instruction_encoding_size", Idl::Type.new(:bits, width: encoding_width.bit_length), encoding_width) + ) + symtab.add( + "__effective_xlen", + Idl::Var.new("__effective_xlen", Idl::Type.new(:bits, width: 7), effective_xlen) + ) + encoding(effective_xlen).decode_variables.each do |d| + qualifiers = [:const] + qualifiers << :signed if d.sext? + width = d.size - def fill_symtab(effective_xlen, ast) - symtab = cfg_arch.symtab.global_clone - symtab.push(ast) - symtab.add( - "__instruction_encoding_size", - Idl::Var.new("__instruction_encoding_size", Idl::Type.new(:bits, width: encoding_width.bit_length), encoding_width) - ) - symtab.add( - "__effective_xlen", - Idl::Var.new("__effective_xlen", Idl::Type.new(:bits, width: 7), effective_xlen) - ) - encoding(effective_xlen).decode_variables.each do |d| - qualifiers = [:const] - qualifiers << :signed if d.sext? - width = d.size - - var = Idl::Var.new(d.name, Idl::Type.new(:bits, qualifiers:, width:), decode_var: true) - symtab.add(d.name, var) - end + var = Idl::Var.new(d.name, Idl::Type.new(:bits, qualifiers:, width:), decode_var: true) + symtab.add(d.name, var) + end - symtab - end + symtab + end - # @param global_symtab [Idl::SymbolTable] Symbol table with global scope populated and a configuration loaded - # @return [Idl::FunctionBodyAst] A pruned abstract syntax tree - def pruned_operation_ast(effective_xlen) - defer :pruned_operation_ast do - return nil unless @data.key?("operation()") + # @param global_symtab [Idl::SymbolTable] Symbol table with global scope populated and a configuration loaded + # @return [Idl::FunctionBodyAst] A pruned abstract syntax tree + def pruned_operation_ast(effective_xlen) + defer :pruned_operation_ast do + return nil unless @data.key?("operation()") - type_checked_ast = type_checked_operation_ast(effective_xlen) - symtab = fill_symtab(effective_xlen, type_checked_ast) - pruned_ast = type_checked_ast.prune(symtab) - pruned_ast.freeze_tree(symtab) + type_checked_ast = type_checked_operation_ast(effective_xlen) + symtab = fill_symtab(effective_xlen, type_checked_ast) + pruned_ast = type_checked_ast.prune(symtab) + pruned_ast.freeze_tree(symtab) - symtab.release - pruned_ast + symtab.release + pruned_ast + end end - end - # @param symtab [Idl::SymbolTable] Symbol table with global scope populated - # @param effective_xlen [Integer] The effective XLEN to evaluate against - # @return [Array] List of all functions that can be reached from operation() - def reachable_functions(effective_xlen) - if @data["operation()"].nil? - [] - else - # RubyProf.start - ast = type_checked_operation_ast(effective_xlen) - symtab = fill_symtab(effective_xlen, ast) - fns = ast.reachable_functions(symtab) - # result = RubyProf.stop - # RubyProf::FlatPrinter.new(result).print($stdout) - # exit - symtab.release - fns + # @param symtab [Idl::SymbolTable] Symbol table with global scope populated + # @param effective_xlen [Integer] The effective XLEN to evaluate against + # @return [Array] List of all functions that can be reached from operation() + sig { params(effective_xlen: Integer).returns(T::Array[Idl::FunctionBodyAst]) } + def reachable_functions(effective_xlen) + if @data["operation()"].nil? + [] + else + @memo.reachable_functions ||= T.let({}, T::Hash[Integer, Idl::FunctionBodyAst]) + @memo.reachable_functions[effective_xlen] ||= + begin + ast = operation_ast + symtab = fill_symtab(effective_xlen, ast) + fns = ast.reachable_functions(symtab) + symtab.release + fns + end + end end - end - # @param symtab [Idl::SymbolTable] Symbol table with global scope populated - # @param effective_xlen [Integer] Effective XLEN to evaluate against - # @return [Integer] Mask of all exceptions that can be reached from operation() - def reachable_exceptions(effective_xlen) - if @data["operation()"].nil? - [] - else - # pruned_ast = pruned_operation_ast(symtab) - # type_checked_operation_ast() - type_checked_ast = type_checked_operation_ast( effective_xlen) - symtab = fill_symtab(effective_xlen, type_checked_ast) - type_checked_ast.reachable_exceptions(symtab) - symtab.release + # @param symtab [Idl::SymbolTable] Symbol table with global scope populated + # @param effective_xlen [Integer] Effective XLEN to evaluate against + # @return [Integer] Mask of all exceptions that can be reached from operation() + def reachable_exceptions(effective_xlen) + if @data["operation()"].nil? + [] + else + # pruned_ast = pruned_operation_ast(symtab) + # type_checked_operation_ast() + type_checked_ast = type_checked_operation_ast(effective_xlen) + symtab = fill_symtab(effective_xlen, type_checked_ast) + type_checked_ast.reachable_exceptions(symtab) + symtab.release + end end - end - def mask_to_array(int) - elems = [] - idx = 0 - while int != 0 - if (int & (1 << idx)) != 0 - elems << idx + def mask_to_array(int) + elems = [] + idx = 0 + while int != 0 + if (int & (1 << idx)) != 0 + elems << idx + end + int &= ~(1 << idx) + idx += 1 end - int &= ~(1 << idx) - idx += 1 + elems end - elems - end - # @param effective_xlen [Integer] Effective XLEN to evaluate against. If nil, evaluate against all valid XLENs - # @return [Array] List of all exceptions that can be reached from operation() - def reachable_exceptions_str(effective_xlen=nil) - raise ArgumentError, "effective_xlen is a #{effective_xlen.class} but must be an Integer or nil" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) - - if @data["operation()"].nil? - [] - else - symtab = cfg_arch.symtab - etype = symtab.get("ExceptionCode") - if effective_xlen.nil? - if cfg_arch.multi_xlen? - if base.nil? - ( - pruned_ast = pruned_operation_ast(32) - symtab = fill_symtab(32, pruned_ast) - e32 = mask_to_array(pruned_ast.reachable_exceptions(symtab)).map { |code| - etype.element_name(code) - } - symtab.release - pruned_ast = pruned_operation_ast(64) - symtab = fill_symtab(64, pruned_ast) - e64 = mask_to_array(pruned_ast.reachable_exceptions(symtab)).map { |code| + # @param effective_xlen [Integer] Effective XLEN to evaluate against. If nil, evaluate against all valid XLENs + # @return [Array] List of all exceptions that can be reached from operation() + def reachable_exceptions_str(effective_xlen = nil) + raise ArgumentError, "effective_xlen is a #{effective_xlen.class} but must be an Integer or nil" unless effective_xlen.nil? || effective_xlen.is_a?(Integer) + + if @data["operation()"].nil? + [] + else + symtab = cfg_arch.symtab + etype = symtab.get("ExceptionCode") + if effective_xlen.nil? + if cfg_arch.multi_xlen? + if base.nil? + ( + pruned_ast = pruned_operation_ast(32) + symtab = fill_symtab(32, pruned_ast) + e32 = mask_to_array(pruned_ast.reachable_exceptions(symtab)).map { |code| + etype.element_name(code) + } + symtab.release + pruned_ast = pruned_operation_ast(64) + symtab = fill_symtab(64, pruned_ast) + e64 = mask_to_array(pruned_ast.reachable_exceptions(symtab)).map { |code| + etype.element_name(code) + } + symtab.release + e32 + e64 + ).uniq + else + pruned_ast = pruned_operation_ast(base) + symtab = fill_symtab(base, pruned_ast) + e = mask_to_array(pruned_ast.reachable_exceptions(symtab)).map { |code| etype.element_name(code) } symtab.release - e32 + e64 - ).uniq + e + end else - pruned_ast = pruned_operation_ast(base) - symtab = fill_symtab(base, pruned_ast) + effective_xlen = cfg_arch.mxlen + pruned_ast = pruned_operation_ast(effective_xlen) + puts " #{name}..." + symtab = fill_symtab(effective_xlen, pruned_ast) e = mask_to_array(pruned_ast.reachable_exceptions(symtab)).map { |code| etype.element_name(code) } @@ -520,9 +539,8 @@ def reachable_exceptions_str(effective_xlen=nil) e end else - effective_xlen = cfg_arch.mxlen pruned_ast = pruned_operation_ast(effective_xlen) - puts " #{name}..." + symtab = fill_symtab(effective_xlen, pruned_ast) e = mask_to_array(pruned_ast.reachable_exceptions(symtab)).map { |code| etype.element_name(code) @@ -530,646 +548,665 @@ def reachable_exceptions_str(effective_xlen=nil) symtab.release e end - else - pruned_ast = pruned_operation_ast(effective_xlen) - - symtab = fill_symtab(effective_xlen, pruned_ast) - e = mask_to_array(pruned_ast.reachable_exceptions(symtab)).map { |code| - etype.element_name(code) - } - symtab.release - e end end - end - # represents a single contiguous instruction encoding field - # Multiple EncodingFields may make up a single DecodeField, e.g., when an immediate - # is split across multiple locations - class EncodingField - # name, which corresponds to a name used in riscv_opcodes - attr_reader :name + # represents a single contiguous instruction encoding field + # Multiple EncodingFields may make up a single DecodeField, e.g., when an immediate + # is split across multiple locations + class EncodingField + # name, which corresponds to a name used in riscv_opcodes + attr_reader :name - # range in the encoding - attr_reader :range + # range in the encoding + attr_reader :range - def initialize(name, range, pretty = nil) - @name = name - @range = range - @pretty = pretty - end + def initialize(name, range, pretty = nil) + @name = name + @range = range + @pretty = pretty + end - # is this encoding field a fixed opcode? - def opcode? - name.match?(/^[01]+$/) - end + # is this encoding field a fixed opcode? + def opcode? + name.match?(/^[01]+$/) + end - def eql?(other) - @name == other.name && @range == other.range - end + def eql?(other) + @name == other.name && @range == other.range + end - def hash - [@name, @range].hash - end + def hash + [@name, @range].hash + end - def pretty_to_s - return @pretty unless @pretty.nil? + def pretty_to_s + return @pretty unless @pretty.nil? - @name - end + @name + end - def size - @range.size + def size + @range.size + end end - end - - # decode field constructions from YAML file, rather than riscv-opcodes - # eventually, we will move so that all instructions use the YAML file, - class DecodeVariable - extend T::Sig - # the name of the field - attr_reader :name + # decode field constructions from YAML file, rather than riscv-opcodes + # eventually, we will move so that all instructions use the YAML file, + class DecodeVariable + extend T::Sig - # alias of this field, or nil if none - # - # used, e.g., when a field represents more than one variable (like rs1/rd for destructive instructions) - attr_reader :alias - - # amount the field is left shifted before use, or nil is there is no left shift - # - # For example, if the field is offset[5:3], left_shift is 3 - attr_reader :left_shift - - # @return [Array] Specific values that are prohibited for this variable - attr_reader :excludes + # the name of the field + attr_reader :name - attr_reader :encoding_fields + # alias of this field, or nil if none + # + # used, e.g., when a field represents more than one variable (like rs1/rd for destructive instructions) + attr_reader :alias - sig { returns(String) } - attr_reader :location + # amount the field is left shifted before use, or nil is there is no left shift + # + # For example, if the field is offset[5:3], left_shift is 3 + attr_reader :left_shift - # @return [Array] Any array containing every encoding index covered by this variable - sig { returns(T::Array[Integer]) } - def location_bits - Instruction.ary_from_location(@location) - end + # @return [Array] Specific values that are prohibited for this variable + attr_reader :excludes - # @return [String] Name, along with any != constraints, - # @example - # pretty_name #=> "rd != 0" - # pretty_name #=> "rd != {0,2}" - def pretty_name - if excludes.empty? - name - elsif excludes.size == 1 - "#{name} != #{excludes[0]}" - else - "#{name} != {#{excludes.join(',')}}" - end - end + attr_reader :encoding_fields - def extract_location(location) - @encoding_fields = [] + sig { returns(String) } + attr_reader :location - if location.is_a?(Integer) - @encoding_fields << EncodingField.new("", location..location) - return + # @return [Array] Any array containing every encoding index covered by this variable + sig { returns(T::Array[Integer]) } + def location_bits + Instruction.ary_from_location(@location) end - location_string = location - parts = location_string.split("|") - parts.each do |part| - if part =~ /^([0-9]+)$/ - bit = ::Regexp.last_match(1) - @encoding_fields << EncodingField.new("", bit.to_i..bit.to_i) - elsif part =~ /^([0-9]+)-([0-9]+)$/ - msb = ::Regexp.last_match(1) - lsb = ::Regexp.last_match(2) - raise "range must be specified 'msb-lsb'" unless msb.to_i >= lsb.to_i - - @encoding_fields << EncodingField.new("", lsb.to_i..msb.to_i) + # @return [String] Name, along with any != constraints, + # @example + # pretty_name #=> "rd != 0" + # pretty_name #=> "rd != {0,2}" + def pretty_name + if excludes.empty? + name + elsif excludes.size == 1 + "#{name} != #{excludes[0]}" else - raise "location format error" + "#{name} != {#{excludes.join(',')}}" end end - end - def inst_pos_to_var_pos - s = size - map = Array.new(32, nil) - @encoding_fields.each do |ef| - ef.range.to_a.reverse.each do |ef_i| - raise "unexpected" if s <= 0 + def extract_location(location) + @encoding_fields = [] - map[ef_i] = s - 1 - s -= 1 + if location.is_a?(Integer) + @encoding_fields << EncodingField.new("", location..location) + return end - end - map - end - # @param encoding [String] Encoding, as a string of 1, 0, and - with MSB at index 0 - # @param value [Integer] Value of the decode variable - # @return [String] encoding, with the decode variable replaced with value - def encoding_repl(encoding, value) - raise ArgumentError, "Expecting string" unless encoding.is_a?(String) - raise ArgumentError, "Expecting Integer" unless value.is_a?(Integer) - - new_encoding = encoding.dup - inst_pos_to_var_pos.each_with_index do |pos, idx| - next if pos.nil? - raise "Bad encoding" if idx >= encoding.size + location_string = location + parts = location_string.split("|") + parts.each do |part| + if part =~ /^([0-9]+)$/ + bit = ::Regexp.last_match(1) + @encoding_fields << EncodingField.new("", bit.to_i..bit.to_i) + elsif part =~ /^([0-9]+)-([0-9]+)$/ + msb = ::Regexp.last_match(1) + lsb = ::Regexp.last_match(2) + raise "range must be specified 'msb-lsb'" unless msb.to_i >= lsb.to_i - new_encoding[encoding.size - idx - 1] = ((value >> pos) & 1).to_s + @encoding_fields << EncodingField.new("", lsb.to_i..msb.to_i) + else + raise "location format error" + end + end end - new_encoding - end - # given a range of the instruction, return a string representing the bits of the field the range - # represents - def inst_range_to_var_range(r) - var_bits = inst_pos_to_var_pos - - raise "?" if var_bits[r.last].nil? - parts = [var_bits[r.last]..var_bits[r.last]] - r.to_a.reverse[1..].each do |i| - if var_bits[i] == (parts.last.min - 1) - raise "??" if parts.last.max.nil? - parts[-1] = var_bits[i]..parts.last.max - else - parts << Range.new(var_bits[i], var_bits[i]) + def inst_pos_to_var_pos + s = size + map = Array.new(32, nil) + @encoding_fields.each do |ef| + ef.range.to_a.reverse_each do |ef_i| + raise "unexpected" if s <= 0 + + map[ef_i] = s - 1 + s -= 1 + end end + map end - parts.map { |p| p.size == 1 ? p.first.to_s : "#{p.last}:#{p.first}"}.join("|") - end - private :inst_range_to_var_range - - # array of constituent encoding fields - def grouped_encoding_fields - sorted_encoding_fields = @encoding_fields.sort { |a, b| b.range.last <=> a.range.last } - # need to group encoding_fields if they are consecutive - grouped_fields = [sorted_encoding_fields[0].range] - sorted_encoding_fields[1..].each do |ef| - if (ef.range.last + 1) == grouped_fields.last.first - grouped_fields[-1] = (ef.range.first..grouped_fields.last.last) - else - grouped_fields << ef.range + # @param encoding [String] Encoding, as a string of 1, 0, and - with MSB at index 0 + # @param value [Integer] Value of the decode variable + # @return [String] encoding, with the decode variable replaced with value + def encoding_repl(encoding, value) + raise ArgumentError, "Expecting string" unless encoding.is_a?(String) + raise ArgumentError, "Expecting Integer" unless value.is_a?(Integer) + + new_encoding = encoding.dup + inst_pos_to_var_pos.each_with_index do |pos, idx| + next if pos.nil? + raise "Bad encoding" if idx >= encoding.size + + new_encoding[encoding.size - idx - 1] = ((value >> pos) & 1).to_s end + new_encoding end - if grouped_fields.size == 1 - if grouped_fields.last.size == size - [EncodingField.new(pretty_name, grouped_fields[0])] - else - [EncodingField.new("#{pretty_name}[#{inst_range_to_var_range(grouped_fields[0])}]", grouped_fields[0])] - end - else - grouped_fields.map do |f| - EncodingField.new("#{pretty_name}[#{inst_range_to_var_range(f)}]", f) + + # given a range of the instruction, return a string representing the bits of the field the range + # represents + def inst_range_to_var_range(r) + var_bits = inst_pos_to_var_pos + + raise "?" if var_bits[r.last].nil? + parts = [var_bits[r.last]..var_bits[r.last]] + r.to_a.reverse[1..].each do |i| + if var_bits[i] == (parts.last.min - 1) + raise "??" if parts.last.max.nil? + parts[-1] = var_bits[i]..parts.last.max + else + parts << Range.new(var_bits[i], var_bits[i]) + end end - end - end - def initialize(name, field_data) - @name = name - @left_shift = field_data["left_shift"].nil? ? 0 : field_data["left_shift"] - @sext = field_data["sign_extend"].nil? ? false : field_data["sign_extend"] - @alias = field_data["alias"].nil? ? nil : field_data["alias"] - @location = field_data["location"] - extract_location(field_data["location"]) - @excludes = - if field_data.key?("not") - if field_data["not"].is_a?(Array) - field_data["not"] + parts.map { |p| p.size == 1 ? p.first.to_s : "#{p.last}:#{p.first}" }.join("|") + end + private :inst_range_to_var_range + + # array of constituent encoding fields + def grouped_encoding_fields + sorted_encoding_fields = @encoding_fields.sort { |a, b| b.range.last <=> a.range.last } + # need to group encoding_fields if they are consecutive + grouped_fields = [sorted_encoding_fields[0].range] + sorted_encoding_fields[1..].each do |ef| + if (ef.range.last + 1) == grouped_fields.last.first + grouped_fields[-1] = (ef.range.first..grouped_fields.last.last) else - [field_data["not"]] + grouped_fields << ef.range end - else - [] end - @decode_variable = - if @alias.nil? - name + if grouped_fields.size == 1 + if grouped_fields.last.size == size + [EncodingField.new(pretty_name, grouped_fields[0])] + else + [EncodingField.new("#{pretty_name}[#{inst_range_to_var_range(grouped_fields[0])}]", grouped_fields[0])] + end else - @decode_variable = [name, @alias] + grouped_fields.map do |f| + EncodingField.new("#{pretty_name}[#{inst_range_to_var_range(f)}]", f) + end end - end + end - def eql?(other) - @name.eql?(other.name) - end + def initialize(name, field_data) + @name = name + @left_shift = field_data["left_shift"].nil? ? 0 : field_data["left_shift"] + @sext = field_data["sign_extend"].nil? ? false : field_data["sign_extend"] + @alias = field_data["alias"].nil? ? nil : field_data["alias"] + @location = field_data["location"] + extract_location(field_data["location"]) + @excludes = + if field_data.key?("not") + if field_data["not"].is_a?(Array) + field_data["not"] + else + [field_data["not"]] + end + else + [] + end + @decode_variable = + if @alias.nil? + name + else + @decode_variable = [name, @alias] + end + end - def hash - @name.hash - end + def eql?(other) + @name.eql?(other.name) + end - # returns true if the field is encoded across more than one groups of bits - def split? - @encoding_fields.size > 1 - end + def hash + @name.hash + end - # returns bits of the encoding that make up the field, as an array - # Each item of the array is either: - # - A number, to represent a single bit - # - A range, to represent a continugous range of bits - # - # The array is ordered from encoding MSB (at index 0) to LSB (at index n-1) - def bits - @encoding_fields.map do |ef| - ef.range.size == 1 ? ef.range.first : ef.range + # returns true if the field is encoded across more than one groups of bits + def split? + @encoding_fields.size > 1 end - end - # @return [Integer] the number of bits in the field, _including any implicit bits_ - def size - size_in_encoding + @left_shift - end + # returns bits of the encoding that make up the field, as an array + # Each item of the array is either: + # - A number, to represent a single bit + # - A range, to represent a continugous range of bits + # + # The array is ordered from encoding MSB (at index 0) to LSB (at index n-1) + def bits + @encoding_fields.map do |ef| + ef.range.size == 1 ? ef.range.first : ef.range + end + end - # the number of bits in the field, _not including any implicit zeros_ - def size_in_encoding - bits.reduce(0) { |sum, f| sum + (f.is_a?(Integer) ? 1 : f.size) } - end + # @return [Integer] the number of bits in the field, _including any implicit bits_ + def size + size_in_encoding + @left_shift + end - # true if the field should be sign extended - def sext? - @sext - end + # the number of bits in the field, _not including any implicit zeros_ + def size_in_encoding + bits.reduce(0) { |sum, f| sum + (f.is_a?(Integer) ? 1 : f.size) } + end - sig { params(other: T.any(Instruction::Opcode, DecodeVariable)).returns(T::Boolean) } - def overlaps?(other) - if other.is_a?(Instruction::Opcode) - location_bits.any? { |i| other.range.cover?(i) } - else - location_bits.intersect?(other.location_bits) + # true if the field should be sign extended + def sext? + @sext end - end - # return code to extract the field - def extract - ops = [] - so_far = 0 - bits.each do |b| - if b.is_a?(Integer) - op = "$encoding[#{b}]" - ops << op - so_far += 1 - elsif b.is_a?(Range) - op = "$encoding[#{b.end}:#{b.begin}]" - ops << op - so_far += T.must(b.size) + sig { params(other: T.any(Instruction::Opcode, DecodeVariable)).returns(T::Boolean) } + def overlaps?(other) + if other.is_a?(Instruction::Opcode) + location_bits.any? { |i| other.range.cover?(i) } + else + location_bits.intersect?(other.location_bits) end end - ops << "#{@left_shift}'d0" unless @left_shift.zero? - ops = - if ops.size > 1 - "{#{ops.join(', ')}}" - else - ops[0] + + # return code to extract the field + def extract + ops = [] + so_far = 0 + bits.each do |b| + if b.is_a?(Integer) + op = "$encoding[#{b}]" + ops << op + so_far += 1 + elsif b.is_a?(Range) + op = "$encoding[#{b.end}:#{b.begin}]" + ops << op + so_far += T.must(b.size) + end end - ops = "sext(#{ops})" if sext? - ops + ops << "#{@left_shift}'d0" unless @left_shift.zero? + ops = + if ops.size > 1 + "{#{ops.join(', ')}}" + else + ops[0] + end + ops = "sext(#{ops})" if sext? + ops + end end - end - # represents an instruction encoding - class Encoding - # @return [String] format, as a string of 0,1 and -, - # @example Format of `sd` - # sd.format #=> '-----------------011-----0100011' - attr_reader :format - - # @return [Array] List of fields containing opcodes - # @example opcode_fields of `sd` - # sd.opcode_fields #=> [Field('011', ...), Field('0100011', ...)] - attr_reader :opcode_fields - - # @return [Array] List of decode variables - attr_reader :decode_variables - - # represents an encoding field (contiguous set of bits that form an opcode or decode variable slot) - class Field - # @return [String] Either string of 0's and 1's or a bunch of dashes - # @example Field of a decode variable - # encoding.opcode_fields[0] #=> '-----' (for imm5) - # @example Field of an opcode - # encoding.opcode_fields[1] #=> '0010011' (for funct7) - attr_reader :name - - # @return [Range] Range of bits in the parent corresponding to this field - attr_reader :range + # represents an instruction encoding + class Encoding + # @return [String] format, as a string of 0,1 and -, + # @example Format of `sd` + # sd.format #=> '-----------------011-----0100011' + attr_reader :format + + # @return [Array] List of fields containing opcodes + # @example opcode_fields of `sd` + # sd.opcode_fields #=> [Field('011', ...), Field('0100011', ...)] + attr_reader :opcode_fields + + # @return [Array] List of decode variables + attr_reader :decode_variables + + # represents an encoding field (contiguous set of bits that form an opcode or decode variable slot) + class Field + # @return [String] Either string of 0's and 1's or a bunch of dashes + # @example Field of a decode variable + # encoding.opcode_fields[0] #=> '-----' (for imm5) + # @example Field of an opcode + # encoding.opcode_fields[1] #=> '0010011' (for funct7) + attr_reader :name + + # @return [Range] Range of bits in the parent corresponding to this field + attr_reader :range + + # @param name [#to_s] Either string of 0's and 1's or a bunch of dashes + # @param range [Range] Range of the field in the encoding + def initialize(name, range) + @name = name.to_s + @range = range + end - # @param name [#to_s] Either string of 0's and 1's or a bunch of dashes - # @param range [Range] Range of the field in the encoding - def initialize(name, range) - @name = name.to_s - @range = range - end + # @return [Boolean] whether or not the field represents part of the opcode (i.e., not a decode variable) + def opcode? + name.match?(/^[01]+$/) + end - # @return [Boolean] whether or not the field represents part of the opcode (i.e., not a decode variable) - def opcode? - name.match?(/^[01]+$/) + def to_s + "#{name}[#{range}]" + end end - def to_s - "#{name}[#{range}]" - end - end - - def self.overlapping_format?(format1, format2) - format1.size.times.all? do |i| - rev_idx = (format1.size - 1) - i - other_rev_idx = (format2.size - 1) - i - format1[rev_idx] == "-" \ - || (i >= format2.size) \ - || (format1[rev_idx] == format2[other_rev_idx]) + def self.overlapping_format?(format1, format2) + format1.size.times.all? do |i| + rev_idx = (format1.size - 1) - i + other_rev_idx = (format2.size - 1) - i + format1[rev_idx] == "-" \ + || (i >= format2.size) \ + || (format1[rev_idx] == format2[other_rev_idx]) + end end - end - # @return [Boolean] true if self and other_encoding cannot be distinguished, i.e., they share the same encoding - def indistinguishable?(other_encoding, check_other: true) - other_format = other_encoding.format - same = Encoding.overlapping_format?(format, other_format) - - if same - # the mask can't be distinguished; is there one or more exclusions that distinguishes them? - - # we have to check all combinations of dvs with exclusions, and their values - exclusion_dvs = @decode_variables.reject { |dv| dv.excludes.empty? } - exclusion_dv_values = [] - def expand(exclusion_dvs, exclusion_dv_values, base, idx) - other_dv = exclusion_dvs[idx] - other_dv.excludes.each do |other_exclusion_value| - exclusion_dv_values << base + [[other_dv, other_exclusion_value]] - if (idx + 1) < exclusion_dvs.size - expand(exclusion_dvs, exclusion_dv_values, exclusion_dv_values.last, idx + 1) + # @return [Boolean] true if self and other_encoding cannot be distinguished, i.e., they share the same encoding + def indistinguishable?(other_encoding, check_other: true) + other_format = other_encoding.format + same = Encoding.overlapping_format?(format, other_format) + + if same + # the mask can't be distinguished; is there one or more exclusions that distinguishes them? + + # we have to check all combinations of dvs with exclusions, and their values + exclusion_dvs = @decode_variables.reject { |dv| dv.excludes.empty? } + exclusion_dv_values = [] + def expand(exclusion_dvs, exclusion_dv_values, base, idx) + other_dv = exclusion_dvs[idx] + other_dv.excludes.each do |other_exclusion_value| + exclusion_dv_values << base + [[other_dv, other_exclusion_value]] + if (idx + 1) < exclusion_dvs.size + expand(exclusion_dvs, exclusion_dv_values, exclusion_dv_values.last, idx + 1) + end end end - end - exclusion_dvs.each_index do |idx| - expand(exclusion_dvs, exclusion_dv_values, [], idx) - end + exclusion_dvs.each_index do |idx| + expand(exclusion_dvs, exclusion_dv_values, [], idx) + end - exclusion_dv_values.each do |dv_values| - repl_format = format.dup - dv_values.each { |dv_and_value| repl_format = dv_and_value[0].encoding_repl(repl_format, dv_and_value[1]) } + exclusion_dv_values.each do |dv_values| + repl_format = format.dup + dv_values.each { |dv_and_value| repl_format = dv_and_value[0].encoding_repl(repl_format, dv_and_value[1]) } - if Encoding.overlapping_format?(repl_format, other_format) - same = false - break + if repl_format == other_format || !Encoding.overlapping_format?(repl_format, other_format) + same = false + break + end end end + + check_other ? same || other_encoding.indistinguishable?(self, check_other: false) : same end - check_other ? same || other_encoding.indistinguishable?(self, check_other: false) : same - end + # @param format [String] Format of the encoding, as 0's, 1's and -'s (for decode variables) + # @param decode_vars [Array>] List of decode variable definitions from the arch spec + def initialize(format, decode_vars, opcode_fields = nil) + @format = format - # @param format [String] Format of the encoding, as 0's, 1's and -'s (for decode variables) - # @param decode_vars [Array>] List of decode variable definitions from the arch spec - def initialize(format, decode_vars, opcode_fields = nil) - @format = format + @opcode_fields = opcode_fields.nil? ? [] : opcode_fields + field_chars = [] + @format.chars.each_with_index do |c, idx| + if c == "-" + next if field_chars.empty? - @opcode_fields = opcode_fields.nil? ? [] : opcode_fields - field_chars = [] - @format.chars.each_with_index do |c, idx| - if c == "-" - next if field_chars.empty? + field_text = field_chars.join("") + field_lsb = @format.size - idx + field_msb = @format.size - idx - 1 + field_text.size + @opcode_fields << Field.new(field_text, field_lsb..field_msb) if opcode_fields.nil? + field_chars.clear + next + else + field_chars << c + end + end + + # add the least significant field + unless field_chars.empty? field_text = field_chars.join("") - field_lsb = @format.size - idx - field_msb = @format.size - idx - 1 + field_text.size - @opcode_fields << Field.new(field_text, field_lsb..field_msb) if opcode_fields.nil? + @opcode_fields << Field.new(field_text, 0...field_text.size) if opcode_fields.nil? + end - field_chars.clear - next + if decode_vars&.last.is_a?(DecodeVariable) + @decode_variables = decode_vars else - field_chars << c + @decode_variables = [] + decode_vars&.each do |var| + @decode_variables << DecodeVariable.new(var["name"], var) + end end end - # add the least significant field - unless field_chars.empty? - field_text = field_chars.join("") - @opcode_fields << Field.new(field_text, 0...field_text.size) if opcode_fields.nil? + # @return [Integer] Size, in bits, of the encoding + def size + @format.size end + end - if decode_vars&.last.is_a?(DecodeVariable) - @decode_variables = decode_vars + def load_encoding + @encodings = {} + if has_type? + if @data.key?("base") + @encodings[@data["base"]] = Encoding.new(encoding_format(@data["base"]), subtype(@data["base"]).variables) + else + @encodings[32] = Encoding.new(encoding_format(32), subtype(32).variables) + @encodings[64] = Encoding.new(encoding_format(64), subtype(64).variables) + end else - @decode_variables = [] - decode_vars&.each do |var| - @decode_variables << DecodeVariable.new(var["name"], var) + if @data["encoding"].key?("RV32") + # there are different encodings for RV32/RV64 + @encodings[32] = Encoding.new(@data["encoding"]["RV32"]["match"], @data["encoding"]["RV32"]["variables"]) + @encodings[64] = Encoding.new(@data["encoding"]["RV64"]["match"], @data["encoding"]["RV64"]["variables"]) + elsif @data.key("base") + @encodings[@data["base"]] = Encoding.new(@data["encoding"]["match"], @data["encoding"]["variables"]) + else + @encodings[32] = Encoding.new(@data["encoding"]["match"], @data["encoding"]["variables"]) + @encodings[64] = Encoding.new(@data["encoding"]["match"], @data["encoding"]["variables"]) end end end + private :load_encoding - # @return [Integer] Size, in bits, of the encoding - def size - @format.size - end - end - - def load_encoding - @encodings = {} - if has_type? - if @data.key?("base") - @encodings[@data["base"]] = Encoding.new(encoding_format(@data["base"]), subtype(@data["base"]).variables) - else - @encodings[32] = Encoding.new(encoding_format(32), subtype(32).variables) - @encodings[64] = Encoding.new(encoding_format(64), subtype(64).variables) - end - else - if @data["encoding"].key?("RV32") - # there are different encodings for RV32/RV64 - @encodings[32] = Encoding.new(@data["encoding"]["RV32"]["match"], @data["encoding"]["RV32"]["variables"]) - @encodings[64] = Encoding.new(@data["encoding"]["RV64"]["match"], @data["encoding"]["RV64"]["variables"]) - elsif @data.key("base") - @encodings[@data["base"]] = Encoding.new(@data["encoding"]["match"], @data["encoding"]["variables"]) + # @return [Boolean] whether or not this instruction has different encodings depending on XLEN + def multi_encoding? + if has_type? + @data["format"].key?("RV32") else - @encodings[32] = Encoding.new(@data["encoding"]["match"], @data["encoding"]["variables"]) - @encodings[64] = Encoding.new(@data["encoding"]["match"], @data["encoding"]["variables"]) + @data.key?("encoding") && @data["encoding"].key?("RV32") end end - end - private :load_encoding - - # @return [Boolean] whether or not this instruction has different encodings depending on XLEN - def multi_encoding? - if has_type? - @data["format"].key?("RV32") - else - @data.key?("encoding") && @data["encoding"].key?("RV32") - end - end - # @return [Boolean] true if self and other_inst have indistinguishable encodings and can be simultaneously implemented in some design - def bad_encoding_conflict?(xlen, other_inst) - return false if !defined_in_base?(xlen) || !other_inst.defined_in_base?(xlen) - return false unless encoding(xlen).indistinguishable?(other_inst.encoding(xlen)) + # @return [Boolean] true if self and other_inst have indistinguishable encodings and can be simultaneously implemented in some design + def bad_encoding_conflict?(xlen, other_inst) + return false if !defined_in_base?(xlen) || !other_inst.defined_in_base?(xlen) + return false unless encoding(xlen).indistinguishable?(other_inst.encoding(xlen)) - # ok, so they have the same encoding. can they be present at the same time? - return false if !defined_by_condition.compatible?(other_inst.defined_by_condition) + puts "XXXXXXXXXXXXXXXXXXXXXX #{name} and #{other_inst.name} are indistinguishable" - # is this a hint? - !(hints.include?(other_inst) || other_inst.hints.include?(self)) - end + # ok, so they have the same encoding. can they be present at the same time? + return false if !defined_by_condition.compatible?(other_inst.defined_by_condition) - # @return [Array] List of instructions that reuse this instruction's encoding, - # but can't be present in the same system because their defining - # extensions conflict - def conflicting_instructions(xlen) - raise "Bad xlen (#{xlen}) for instruction #{name}" unless defined_in_base?(xlen) + # is this a hint? + !(hints.include?(other_inst) || other_inst.hints.include?(self)) + end - @conflicting_instructions ||= {} - return @conflicting_instructions[xlen] unless @conflicting_instructions[xlen].nil? + # @return [Array] List of instructions that reuse this instruction's encoding, + # but can't be present in the same system because their defining + # extensions conflict + def conflicting_instructions(xlen) + raise "Bad xlen (#{xlen}) for instruction #{name}" unless defined_in_base?(xlen) - @conflicting_instructions[xlen] = [] + @conflicting_instructions ||= {} + return @conflicting_instructions[xlen] unless @conflicting_instructions[xlen].nil? - @arch.instructions.each do |other_inst| - next unless other_inst.defined_in_base?(xlen) - next if other_inst == self + @conflicting_instructions[xlen] = [] - next unless encoding(xlen).indistinguishable?(other_inst.encoding(xlen)) + @arch.instructions.each do |other_inst| + next unless other_inst.defined_in_base?(xlen) + next if other_inst == self - # is this a hint? - next if hints.include?(other_inst) || other_inst.hints.include?(self) + next unless encoding(xlen).indistinguishable?(other_inst.encoding(xlen)) + + # is this a hint? + next if hints.include?(other_inst) || other_inst.hints.include?(self) - if defined_by_condition.compatible?(other_inst.defined_by_condition) - raise "bad encoding conflict found between #{name} and #{other_inst.name}" + if defined_by_condition.compatible?(other_inst.defined_by_condition) + raise "bad encoding conflict found between #{name} and #{other_inst.name}" + end + + @conflicting_instructions[xlen] << other_inst end + @conflicting_instructions[xlen] + end + + # @return [FunctionBodyAst] A type-checked abstract syntax tree of the operation + # @param effective_xlen [Integer] 32 or 64, the effective xlen to type check against + def type_checked_operation_ast(effective_xlen) + defer :type_checked_operation_ast do + return nil unless @data.key?("operation()") + + ast = operation_ast + + symtab = fill_symtab(effective_xlen, ast) + ast.freeze_tree(symtab) + cfg_arch.idl_compiler.type_check(ast, symtab, "#{name}.operation()") + symtab.release - @conflicting_instructions[xlen] << other_inst + ast + end end - @conflicting_instructions[xlen] - end - # @return [FunctionBodyAst] A type-checked abstract syntax tree of the operation - # @param effective_xlen [Integer] 32 or 64, the effective xlen to type check against - def type_checked_operation_ast(effective_xlen) - defer :type_checked_operation_ast do - return nil unless @data.key?("operation()") + # @return [FunctionBodyAst] The abstract syntax tree of the instruction operation + def operation_ast + defer :operation_ast do + return nil if @data["operation()"].nil? - ast = operation_ast + # now, parse the operation + ast = cfg_arch.idl_compiler.compile_inst_operation( + self, + symtab: cfg_arch.symtab, + input_file: @data["$source"], + input_line: source_line(["operation()"]) + ) - symtab = fill_symtab(effective_xlen, ast) - ast.freeze_tree(symtab) - cfg_arch.idl_compiler.type_check(ast, symtab, "#{name}.operation()") - symtab.release + raise "unexpected #{ast.class}" unless ast.is_a?(Idl::FunctionBodyAst) - ast + ast + end end - end - # @return [FunctionBodyAst] The abstract syntax tree of the instruction operation - def operation_ast - defer :operation_ast do - return nil if @data["operation()"].nil? - - # now, parse the operation - ast = cfg_arch.idl_compiler.compile_inst_operation( - self, - symtab: cfg_arch.symtab, - input_file: @data["$source"], - input_line: source_line(["operation()"]) - ) + # @param base [Integer] 32 or 64 + # @return [Encoding] the encoding + sig { params(base: Integer).returns(Encoding) } + def encoding(base) + raise "#{name} is not defined in #{base}" unless defined_in_base?(base) - raise "unexpected #{ast.class}" unless ast.is_a?(Idl::FunctionBodyAst) + load_encoding if @encodings.nil? - ast + @encodings[base] end - end - # @param base [Integer] 32 or 64 - # @return [Encoding] the encoding - sig { params(base: Integer).returns(Encoding) } - def encoding(base) - raise "#{name} is not defined in #{base}" unless defined_in_base?(base) + # @return [Integer] the width of the encoding + sig { returns(Integer) } + def encoding_width + if defined_in_base?(32) && defined_in_base?(64) + raise "unexpected: encodings are different sizes" unless encoding(32).size == encoding(64).size - load_encoding if @encodings.nil? + encoding(64).size + elsif defined_in_base?(32) + encoding(32).size + else + raise "unexpected" unless defined_in_base?(64) - @encodings[base] - end + encoding(64).size + end - # @return [Integer] the width of the encoding - sig { returns(Integer) } - def encoding_width - if defined_in_base?(32) && defined_in_base?(64) - raise "unexpected: encodings are different sizes" unless encoding(32).size == encoding(64).size + end - encoding(64).size - elsif defined_in_base?(32) - encoding(32).size - else - raise "unexpected" unless defined_in_base?(64) + # @return [Integer] the largest encoding width of the instruction, in any XLEN for which this instruction is valid + sig { returns(Integer) } + def max_encoding_width + [(rv32? ? encoding(32).size : 0), (rv64? ? encoding(64).size : 0)].max + end - encoding(64).size + # @return [Array] The decode variables + def decode_variables(base) + encoding(base).decode_variables end - end + # @return [Boolean] true if the instruction has an 'access_detail' field + def access_detail? + @data.key?("access_detail") + end - # @return [Integer] the largest encoding width of the instruction, in any XLEN for which this instruction is valid - sig { returns(Integer) } - def max_encoding_width - [(rv32? ? encoding(32).size : 0), (rv64? ? encoding(64).size : 0)].max - end + # Generates a wavedrom description of the instruction encoding + # + # @param base [Integer] The XLEN (32 or 64), needed if the instruction is {#multi_encoding?} + # @return [String] The wavedrom JSON description + def wavedrom_desc(base) + desc = { + "reg" => [] + } + display_fields = encoding(base).opcode_fields + display_fields += encoding(base).decode_variables.map(&:grouped_encoding_fields).flatten + + display_fields.sort { |a, b| b.range.last <=> a.range.last }.reverse_each do |e| + desc["reg"] << { "bits" => e.range.size, "name" => e.name, "type" => (e.opcode? ? 2 : 4) } + end - # @return [Array] The decode variables - def decode_variables(base) - encoding(base).decode_variables - end + desc + end - # @return [Boolean] true if the instruction has an 'access_detail' field - def access_detail? - @data.key?("access_detail") - end + # @return [Boolean] whether or not this instruction is defined for RV32 + def rv32? + !@data.key?("base") || base == 32 + end - # Generates a wavedrom description of the instruction encoding - # - # @param base [Integer] The XLEN (32 or 64), needed if the instruction is {#multi_encoding?} - # @return [String] The wavedrom JSON description - def wavedrom_desc(base) - desc = { - "reg" => [] - } - display_fields = encoding(base).opcode_fields - display_fields += encoding(base).decode_variables.map(&:grouped_encoding_fields).flatten + # @return [Boolean] whether or not this instruction is defined for RV64 + def rv64? + !@data.key?("base") || base == 64 + end - display_fields.sort { |a, b| b.range.last <=> a.range.last }.reverse.each do |e| - desc["reg"] << { "bits" => e.range.size, "name" => e.name, "type" => (e.opcode? ? 2 : 4) } + # @return [Array] List of HINTs based on this instruction encoding + def hints + @hints ||= @data.key?("hints") ? @data["hints"].map { |ref| @cfg_arch.ref(ref["$ref"]) } : [] end - desc - end + # @param cfg_arch [ConfiguredArchitecture] The architecture definition + # @return [Boolean] whether or not the instruction is implemented given the supplied config options + def exists_in_cfg?(cfg_arch) + if cfg_arch.fully_configured? + (@data["base"].nil? || (cfg_arch.possible_xlens.include? @data["base"])) && + (defined_by_condition.satisfied_by_cfg_arch?(cfg_arch) == SatisfiedResult::Yes) + else + raise "unexpected cfg_arch type" unless cfg_arch.partially_configured? - # @return [Boolean] whether or not this instruction is defined for RV32 - def rv32? - !@data.key?("base") || base == 32 - end + (@data["base"].nil? || (cfg_arch.possible_xlens.include? @data["base"])) && + (defined_by_condition.satisfied_by_cfg_arch?(cfg_arch) != SatisfiedResult::No) + end + end - # @return [Boolean] whether or not this instruction is defined for RV64 - def rv64? - !@data.key?("base") || base == 64 - end + sig { returns(T::Array[ConditionalExtensionRequirement]) } + def defining_extension_requirements + defined_by_condition.implied_extension_requirements + end - # @return [Array] List of HINTs based on this instruction encoding - def hints - @hints ||= @data.key?("hints") ? @data["hints"].map { |ref| @cfg_arch.ref(ref["$ref"]) } : [] - end + # return a list of profiles that mandate that this instruction be implemented + sig { returns(T::Array[Profile]) } + def profiles_mandating_inst + @profiles_mandating_inst ||= + cfg_arch.profiles.select do |profile| + profile.mandatory_ext_reqs.any? do |ext_req| + defined_by_condition.satisfiability_depends_on_ext_req?(ext_req) + end + end + end - # @param cfg_arch [ConfiguredArchitecture] The architecture definition - # @return [Boolean] whether or not the instruction is implemented given the supplied config options - def exists_in_cfg?(cfg_arch) - if cfg_arch.fully_configured? - (@data["base"].nil? || (cfg_arch.possible_xlens.include? @data["base"])) && - cfg_arch.implemented_extension_versions.any? { |ext_ver| defined_by_condition.possibly_satisfied_by?(ext_ver) } - else - raise "unexpected cfg_arch type" unless cfg_arch.partially_configured? - - (@data["base"].nil? || (cfg_arch.possible_xlens.include? @data["base"])) && - cfg_arch.prohibited_extension_versions.none? { |ext_ver| defined_by_condition.possibly_satisfied_by?(ext_ver) } + # return a list of profiles in which this instruction is explicitly optional + sig { returns(T::Array[Profile]) } + def profiles_optioning_inst + @profiles_optioning_inst ||= + cfg_arch.profiles.select do |profile| + profile.optional_ext_reqs.any? do |ext_req| + defined_by_condition.satisfiability_depends_on_ext_req?(ext_req) + end + end end end -end end diff --git a/tools/ruby-gems/udb/lib/udb/obj/parameter.rb b/tools/ruby-gems/udb/lib/udb/obj/parameter.rb index 41e5e43ff5..7be87a377f 100644 --- a/tools/ruby-gems/udb/lib/udb/obj/parameter.rb +++ b/tools/ruby-gems/udb/lib/udb/obj/parameter.rb @@ -1,215 +1,212 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear +# typed: true # frozen_string_literal: true -# typed: strict require "idlc/interfaces" +require_relative "../condition" require_relative "database_obj" require_relative "../schema" require_relative "../version" + module Udb + class Schema; end + # A parameter (AKA option, AKA implementation-defined value) supported by an extension + class Parameter < TopLevelDatabaseObject + extend T::Sig + include Idl::RuntimeParam -# A parameter (AKA option, AKA implementation-defined value) supported by an extension -class Parameter - extend T::Sig - include Idl::RuntimeParam - - raise "Huh" unless ::Idl::Type.new(:bits, width: 5).integral? - - # @return [Architecture] The defining architecture - sig { returns(ConfiguredArchitecture) } - attr_reader :cfg_arch - - # @return [String] Parameter name - sig { override.returns(String) } - def name = @name - - # @return [String] Asciidoc description - sig { override.returns(String) } - attr_reader :desc - - # @return [Schema] JSON Schema for this param - sig { override.returns(Schema) } - attr_reader :schema - - # @return [String] Ruby code to perform validation above and beyond JSON schema - # @return [nil] If there is no extra validation - sig { returns(T.nilable(String)) } - attr_reader :extra_validation - - # Some parameters are defined by multiple extensions (e.g., CACHE_BLOCK_SIZE by Zicbom and Zicboz). - # When defined in multiple places, the parameter *must* mean the exact same thing. - # - # @return [Array] The extension(s) that define this parameter - sig { returns(T::Array[Extension]) } - attr_reader :exts - - # @returns [Idl::Type] Type of the parameter - sig { override.returns(Idl::Type) } - attr_reader :idl_type - - # Pretty convert extension schema to a string. - sig { returns(String) } - def schema_type - @schema.to_pretty_s - end - # @returns [Object] default value, or nil if none - sig { returns(T.nilable(Object)) } - def default - if T.cast(@data["schema"], T::Hash[String, Object]).key?("default") - T.cast(@data["schema"], T::Hash[String, Object])["default"] - end - end + # @return The defining architecture + sig { returns(ConfiguredArchitecture) } + attr_reader :cfg_arch - sig { params(ext: Extension, name: String, data: T::Hash[String, T.untyped]).void } - def initialize(ext, name, data) - - @cfg_arch = T.let(ext.cfg_arch, ConfiguredArchitecture) - @data = T.let(data, T::Hash[String, T.untyped]) - @name = T.let(name, String) - @desc = T.let(T.cast(data["description"], String), String) - @schema = T.let(Schema.new(data["schema"]), Schema) - @extra_validation = T.let(data.key?("extra_validation") ? T.let(T.cast(data["extra_validation"], String), String) : nil, T.nilable(String)) - also_defined_in_array = [] - also_defined_in_data = data["also_defined_in"] - unless also_defined_in_data.nil? - other_ext = T.let(nil, T.nilable(Extension)) - if also_defined_in_data.is_a?(String) - other_ext_name = also_defined_in_data - other_ext = @cfg_arch.extension(other_ext_name) - raise "Definition error in #{ext.name}.#{name}: #{other_ext_name} is not a known extension" if other_ext.nil? - - also_defined_in_array << other_ext - else - unless also_defined_in_data.is_a?(Array) && also_defined_in_data.all? { |e| e.is_a?(String) } - raise "schema error: also_defined_in should be a string or array of strings" - end + # @return Parameter name + sig { override.returns(String) } + def name = @name - also_defined_in_data.each do |other_ext_name| - other_ext = @cfg_arch.extension(other_ext_name) - raise "Definition error in #{ext.name}.#{name}: #{also_defined_in_data} is not a known extension" if other_ext.nil? + # Pretty convert extension schema to a string. + sig { returns(String) } + def schema_type + @schema.to_pretty_s + end - also_defined_in_array << other_ext + sig { returns(AbstractCondition) } + def requirements_condition + @requirements_condition ||= + begin + if @data["requirements"].nil? + Condition::True + else + Condition.new( + @data.fetch("requirements"), + @cfg_arch, + input_file: Pathname.new(__source), + input_line: source_line(["requirements"]) + ) + end end + end + + # @returns default value, or nil if none + sig { returns(T.nilable(Object)) } + def default + if T.cast(@data["schema"], T::Hash[String, Object]).key?("default") + T.cast(@data["schema"], T::Hash[String, Object])["default"] end end - @exts = T.let([ext] + also_defined_in_array, T::Array[Extension]) - @idl_type = T.let(@schema.to_idl_type.make_const.freeze, ::Idl::Type) - @when = T.let(nil, T.nilable(ExtensionRequirementExpression)) - end - # @return [ExtensionRequirementExpression] Condition when the parameter exists - sig { returns(ExtensionRequirementExpression) } - def when - @when ||= - if @data["when"].nil? - # the parent extension is implictly required - cond = - if @exts.size > 1 - { "anyOf" => @exts.map { |ext| { "name" => ext.name, "version" => ">= #{ext.min_version.version_str}" } }} - else - { "name" => @exts.fetch(0).name, "version" => ">= #{@exts.fetch(0).min_version.version_str}"} - end - ExtensionRequirementExpression.new(cond, @cfg_arch) + class ConditionalSchema < T::Struct + const :cond, AbstractCondition + const :schema, Schema + end + + sig { + params( + yaml: T::Hash[String, T.untyped], + data_path: T.any(String, Pathname), + cfg_arch: ConfiguredArchitecture + ).void + } + def initialize(yaml, data_path, cfg_arch) + super(yaml, data_path, cfg_arch) + + @schemas = T.let([], T::Array[ConditionalSchema]) + if data.fetch("schema").key?("oneOf") + data.fetch("schema").fetch("oneOf").each do |cond_schema| + @schemas << ConditionalSchema.new(schema: Schema.new(cond_schema.fetch("schema")), cond: Condition.new(cond_schema.fetch("when"), @cfg_arch)) + end else - # the parent extension is implictly required - cond = - if @exts.size > 1 - { "allOf" => [{"anyOf" => @exts.map { |ext| { "name" => ext.name, "version" => ">= #{ext.min_version.version_str}" } } }, @data["when"]] } - else - { "allOf" => [ { "name" => @exts.fetch(0).name, "version" => ">= #{@exts.fetch(0).min_version.version_str}"}, @data["when"]] } - end - ExtensionRequirementExpression.new(cond, @cfg_arch) + @schemas << ConditionalSchema.new(schema: Schema.new(data["schema"]), cond: AlwaysTrueCondition.new) end - end + end + + sig { override.params(resolver: Resolver).void } + def validate(resolver) - # @param cfg_arch [ConfiguredArchitecture] - # @return [Boolean] if this parameter is defined in +cfg_arch+ - sig { params(cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) } - def defined_in_cfg?(cfg_arch) - if @exts.none? { |ext| cfg_arch.possible_extensions.any? { |e| e.name == ext.name } } - return SatisfiedResult::No end - if @when.nil? - return SatisfiedResult::Yes + # whether or not the schema is unambiguously known + # since schemas can change based on parameter values and/or extension presence, + # non-full configs may not be able to know which schema applies + sig { override.returns(T::Boolean) } + def schema_known? + @schema_known ||= begin + if @schemas.size == 1 + true + else + 1 == @schemas.count { |cond_schema| cond_schema.cond.could_be_satisfied_by_cfg_arch?(@cfg_arch) } + end + end end - @when.satisfied_by_cfg_arch?(cfg_arch) - end + # @return JSON Schema for this param + # @raises RuntimeError if schema_known? is false + sig { override.returns(Schema) } + def schema + unless schema_known? + raise "Schema is not known for parameter #{name} because more than one is possible given what we know about the configuration" + end - # @param exts [Array] List of all in-scope extensions that define this parameter. - # @return [String] Text to create a link to the parameter definition with the link text the parameter name. - # if only one extension defines the parameter, otherwise just the parameter name. - sig { params(in_scope_exts: T::Array[Extension]).returns(String) } - def name_potentially_with_link(in_scope_exts) - - helper = Class.new do include Udb::Helpers::TemplateHelpers end - if in_scope_exts.size == 1 - helper.new.link_to_udb_doc_ext_param(in_scope_exts.fetch(0).name, name, name) - else - name + @schema ||= T.must(@schemas.find { |cond_schema| cond_schema.cond.satisfied_by_cfg_arch?(@cfg_arch) == SatisfiedResult::Yes }).schema end - end - # sorts by name - sig { params(other: Parameter).returns(T.nilable(Integer)) } - def <=>(other) = @name <=> other.name + sig { returns(T::Array[ConditionalSchema]) } + attr_reader :schemas - sig { returns(String) } - def to_idl = "#{idl_type.to_idl} #{name}" + class NoMatchingSchemaError < RuntimeError; end - sig { override.returns(T::Boolean) } - def value_known? = false + # @return list of schemas that are possible for this config + sig { override.returns(T::Array[Schema]) } + def possible_schemas + @possible_schemas ||= + begin + list = @schemas.select { |s| s.cond.could_be_satisfied_by_cfg_arch?(@cfg_arch) }.map(&:schema) + if list.empty? + raise NoMatchingSchemaError, "Parameter #{name} has no matching schema for #{@cfg_arch.name}" + end + list + end + end - sig { override.returns(Idl::RuntimeParam::ValueType) } - def value = raise "Parameter value not known for #{name}" -end + sig { override.returns(T::Array[Schema]) } + def all_schemas + @schemas.map(&:schema) + end -class ParameterWithValue - extend T::Sig - include Idl::RuntimeParam + # @returns Type of the parameter + # @raises RuntimeError if schema_known? if false + sig { override.returns(Idl::Type) } + def idl_type + unless schema_known? + raise "Schema is not known for parameter #{name} because more than one is possible given what we know about the configuration" + end - # @return [Object] The parameter value - sig { override.returns(Idl::RuntimeParam::ValueType) } - attr_reader :value + @idl_type ||= schema.to_idl_type.make_const.freeze + end - # @return [String] Parameter name - sig { override.returns(String) } - def name = @param.name + # @return if this parameter is defined in +cfg_arch+ + sig { params(cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) } + def defined_in_cfg?(cfg_arch) + defined_by_condition.satisfied_by_cfg_arch?(cfg_arch) + end - # @return [String] Asciidoc description - sig { override.returns(String) } - def desc = @param.desc + # @param exts List of all in-scope extensions that define this parameter. + # @return Text to create a link to the parameter definition with the link text the parameter name. + # if only one extension defines the parameter, otherwise just the parameter name. + sig { params(in_scope_exts: T::Array[Extension]).returns(String) } + def name_potentially_with_link(in_scope_exts) - # @return [Hash] JSON Schema for the parameter value - sig { override.returns(Schema) } - def schema = @param.schema + helper = Class.new do include Udb::Helpers::TemplateHelpers end + if in_scope_exts.size == 1 + helper.new.link_to_udb_doc_ext_param(in_scope_exts.fetch(0).name, name, name) + else + name + end + end + + # sorts by name + sig { override.params(other: T.untyped).returns(T.nilable(Integer)) } + def <=>(other) + return nil unless other.is_a?(Idl::RuntimeParam) - # @return [String] Ruby code to perform validation above and beyond JSON schema - # @return [nil] If there is no extra validatino - sig { returns(T.nilable(String)) } - def extra_validation = @param.extra_validation + @name <=> other.name + end - sig { returns(T::Array[Extension]) } - def exts = @param.exts + sig { returns(String) } + def to_idl = "#{idl_type.to_idl} #{name}" - # @returns [Idl::Type] Type of the parameter - sig { override.returns(Idl::Type) } - def idl_type = @param.idl_type + sig { override.returns(T::Boolean) } + def value_known? = false - sig { params(param: Parameter, value: Idl::RuntimeParam::ValueType).void } - def initialize(param, value) - @param = param - @value = value + sig { override.returns(Idl::RuntimeParam::ValueType) } + def value = raise "Parameter value not known for #{name}" end - sig { override.returns(T::Boolean) } - def value_known? = true -end + class ParameterWithValue + extend T::Sig + extend Forwardable + include Idl::RuntimeParam + + def_delegators :@param, + :name, :description, :schema_known?, :schema, :schemas, :possible_schemas, :all_schemas, :idl_type, + :defined_by_condition, :requirements_condition + + # @return [Object] The parameter value + sig { override.returns(Idl::RuntimeParam::ValueType) } + attr_reader :value + + sig { params(param: Parameter, value: Idl::RuntimeParam::ValueType).void } + def initialize(param, value) + @param = param + @value = value + end + + sig { override.returns(T::Boolean) } + def value_known? = true + end end diff --git a/tools/ruby-gems/udb/lib/udb/obj/portfolio.rb b/tools/ruby-gems/udb/lib/udb/obj/portfolio.rb index ee6ceaaaf0..580efb87e7 100644 --- a/tools/ruby-gems/udb/lib/udb/obj/portfolio.rb +++ b/tools/ruby-gems/udb/lib/udb/obj/portfolio.rb @@ -1,8 +1,8 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# frozen_string_literal: true # typed: false +# frozen_string_literal: true # Classes for Portfolios which form a common base class for profiles and certificates. # A "Portfolio" is a named & versioned grouping of extensions (each with a name and version). @@ -26,27 +26,28 @@ module Udb # Holds information from Portfolio class YAML file (processor certificate class or profile family). # The inherited "data" member is the database of extensions, instructions, CSRs, etc. -class PortfolioClass < TopLevelDatabaseObject - # @return [String] What kind of processor portfolio is this? - def processor_kind = @data["processor_kind"] + class PortfolioClass < TopLevelDatabaseObject + # @return [String] What kind of processor portfolio is this? + def processor_kind = @data["processor_kind"] - # @return [String] Small enough (~1 paragraph) to be suitable immediately after a higher-level heading. - def introduction = @data["introduction"] + # @return [String] Small enough (~1 paragraph) to be suitable immediately after a higher-level heading. + def introduction = @data["introduction"] - # @return [String] Large enough to need its own heading (generally one level deeper than the "introduction"). - def description = @data["description"] + # @return [String] Large enough to need its own heading (generally one level deeper than the "introduction"). + def description = @data["description"] - # Returns true if other is the same class (not a derived class) and has the same name. - def eql?(other) - other.instance_of?(self.class) && other.name == name - end + # Returns true if other is the same class (not a derived class) and has the same name. + def eql?(other) + other.instance_of?(self.class) && other.name == name + end - # @return [Array (just call portfolio_grp.). - def_delegators :@portfolios, :each, :map, :select + # Calls to these methods on PortfolioGroup are handled by the Array class. + # Avoids having to call portfolio_grp.portfolios. (just call portfolio_grp.). + def_delegators :@portfolios, :each, :map, :select - # @param portfolios [Array] - def initialize(name, portfolios) - raise ArgumentError, "name is a class #{name.class} but must be a String" unless name.is_a?(String) - raise ArgumentError, "Need at least one portfolio" if portfolios.empty? + # @param portfolios [Array] + def initialize(name, portfolios) + raise ArgumentError, "name is a class #{name.class} but must be a String" unless name.is_a?(String) + raise ArgumentError, "Need at least one portfolio" if portfolios.empty? - @name = name - @portfolios = portfolios - end + @name = name + @portfolios = portfolios + end - # @return [Array] All portfolios in this portfolio group - def portfolios = @portfolios + # @return [Array] All portfolios in this portfolio group + def portfolios = @portfolios - # @return [Hash] Fully-constrained parameter values (those with just one possible value for this design). - def param_values - return @param_values unless @param_values.nil? + # @return [Hash] Fully-constrained parameter values (those with just one possible value for this design). + def param_values + return @param_values unless @param_values.nil? + + @param_values = {} + portfolios.each do |portfolio| + @param_values.merge!(portfolio.all_in_scope_params.select(&:single_value?).map { |p| [p.name, p.value] }.to_h) + end - @param_values = {} - portfolios.each do |portfolio| - @param_values.merge!(portfolio.all_in_scope_params.select(&:single_value?).map { |p| [p.name, p.value] }.to_h) + @param_values end - @param_values - end + # @return [Integer] Maximum base value (32 or 64) of all portfolios in group. + def max_base + base = portfolios.map(&:base).max - # @return [Integer] Maximum base value (32 or 64) of all portfolios in group. - def max_base - base = portfolios.map(&:base).max + raise "All portfolios in config have a nil base" if base.nil? + raise ArgumentError, "Calculated maximum base of #{base} across portfolios is not 32 or 64" unless base == 32 || base == 64 - raise "All portfolios in config have a nil base" if base.nil? - raise ArgumentError, "Calculated maximum base of #{base} across portfolios is not 32 or 64" unless base == 32 || base == 64 + return base + end - return base - end + # @return [Array] Sorted list of all extension requirements listed by the group. + def in_scope_ext_reqs + return @in_scope_ext_reqs unless @in_scope_ext_reqs.nil? - # @return [Array] Sorted list of all extension requirements listed by the group. - def in_scope_ext_reqs - return @in_scope_ext_reqs unless @in_scope_ext_reqs.nil? + @in_scope_ext_reqs = [] + portfolios.each do |portfolio| + @in_scope_ext_reqs += portfolio.in_scope_ext_reqs + end - @in_scope_ext_reqs = [] - portfolios.each do |portfolio| - @in_scope_ext_reqs += portfolio.in_scope_ext_reqs + @in_scope_ext_reqs = @in_scope_ext_reqs.uniq(&:name).sort_by(&:name) end - @in_scope_ext_reqs = @in_scope_ext_reqs.uniq(&:name).sort_by(&:name) - end + # @return [Array] Sorted list of all mandatory extension requirements listed by the group. + def mandatory_ext_reqs + return @mandatory_ext_reqs unless @mandatory_ext_reqs.nil? - # @return [Array] Sorted list of all mandatory extension requirements listed by the group. - def mandatory_ext_reqs - return @mandatory_ext_reqs unless @mandatory_ext_reqs.nil? + @mandatory_ext_reqs = [] + portfolios.each do |portfolio| + @mandatory_ext_reqs += portfolio.mandatory_ext_reqs + end - @mandatory_ext_reqs = [] - portfolios.each do |portfolio| - @mandatory_ext_reqs += portfolio.mandatory_ext_reqs + @mandatory_ext_reqs = @mandatory_ext_reqs.uniq(&:name).sort_by(&:name) end - @mandatory_ext_reqs = @mandatory_ext_reqs.uniq(&:name).sort_by(&:name) - end + # @return [Array] Sorted list of all optional extension requirements listed by the group. + def optional_ext_reqs + return @optional_ext_reqs unless @optional_ext_reqs.nil? - # @return [Array] Sorted list of all optional extension requirements listed by the group. - def optional_ext_reqs - return @optional_ext_reqs unless @optional_ext_reqs.nil? + @optional_ext_reqs = [] + portfolios.each do |portfolio| + @optional_ext_reqs += portfolio.optional_ext_reqs + end - @optional_ext_reqs = [] - portfolios.each do |portfolio| - @optional_ext_reqs += portfolio.optional_ext_reqs + @optional_ext_reqs = @optional_ext_reqs.uniq(&:name).sort_by(&:name) end - @optional_ext_reqs = @optional_ext_reqs.uniq(&:name).sort_by(&:name) - end + # @return [Array] Sorted list of all mandatory or optional extensions referenced by the group. + def in_scope_extensions + return @in_scope_extensions unless @in_scope_extensions.nil? - # @return [Array] Sorted list of all mandatory or optional extensions referenced by the group. - def in_scope_extensions - return @in_scope_extensions unless @in_scope_extensions.nil? + @in_scope_extensions = [] + portfolios.each do |portfolio| + @in_scope_extensions += portfolio.in_scope_extensions + end - @in_scope_extensions = [] - portfolios.each do |portfolio| - @in_scope_extensions += portfolio.in_scope_extensions - end + @in_scope_extensions = @in_scope_extensions.uniq(&:name).sort_by(&:name) - @in_scope_extensions = @in_scope_extensions.uniq(&:name).sort_by(&:name) + end - end + # @param design [Design] The design + # @return [Array] Sorted list of all instructions associated with extensions listed as + # mandatory or optional in portfolio. Uses instructions provided by the + # minimum version of the extension that meets the extension requirement. + def in_scope_instructions(design) + raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) - # @param design [Design] The design - # @return [Array] Sorted list of all instructions associated with extensions listed as - # mandatory or optional in portfolio. Uses instructions provided by the - # minimum version of the extension that meets the extension requirement. - def in_scope_instructions(design) - raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) + return @in_scope_instructions unless @in_scope_instructions.nil? - return @in_scope_instructions unless @in_scope_instructions.nil? + @in_scope_instructions = [] + portfolios.each do |portfolio| + @in_scope_instructions += portfolio.in_scope_instructions(design) + end - @in_scope_instructions = [] - portfolios.each do |portfolio| - @in_scope_instructions += portfolio.in_scope_instructions(design) + @in_scope_instructions = + @in_scope_instructions.uniq(&:name).sort_by(&:name) end - @in_scope_instructions = - @in_scope_instructions.uniq(&:name).sort_by(&:name) - end + # @param design [Design] The design + # @return [Array] Unsorted list of all CSRs associated with extensions listed as + # mandatory or optional in portfolio. Uses CSRs provided by the + # minimum version of the extension that meets the extension requirement. + def in_scope_csrs(design) + raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) - # @param design [Design] The design - # @return [Array] Unsorted list of all CSRs associated with extensions listed as - # mandatory or optional in portfolio. Uses CSRs provided by the - # minimum version of the extension that meets the extension requirement. - def in_scope_csrs(design) - raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) + return @in_scope_csrs unless @in_scope_csrs.nil? - return @in_scope_csrs unless @in_scope_csrs.nil? + @in_scope_csrs = [] + portfolios.each do |portfolio| + @in_scope_csrs += portfolio.in_scope_csrs(design) + end - @in_scope_csrs = [] - portfolios.each do |portfolio| - @in_scope_csrs += portfolio.in_scope_csrs(design) + @in_scope_csrs.uniq(&:name) end - @in_scope_csrs.uniq(&:name) - end + # @param design [Design] The design + # @return [Array] Unsorted list of all in-scope exception codes. + def in_scope_exception_codes(design) + raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) - # @param design [Design] The design - # @return [Array] Unsorted list of all in-scope exception codes. - def in_scope_exception_codes(design) - raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) + return @in_scope_exception_codes unless @in_scope_exception_codes.nil? - return @in_scope_exception_codes unless @in_scope_exception_codes.nil? + @in_scope_exception_codes = [] + portfolios.each do |portfolio| + @in_scope_exception_codes += portfolio.in_scope_exception_codes(design) + end - @in_scope_exception_codes = [] - portfolios.each do |portfolio| - @in_scope_exception_codes += portfolio.in_scope_exception_codes(design) + @in_scope_exception_codes.uniq(&:name) end - @in_scope_exception_codes.uniq(&:name) - end + # @param design [Design] The design + # @return [Array] Unsorted list of all in-scope interrupt codes. + def in_scope_interrupt_codes(design) + raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) - # @param design [Design] The design - # @return [Array] Unsorted list of all in-scope interrupt codes. - def in_scope_interrupt_codes(design) - raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) + return @in_scope_interrupt_codes unless @in_scope_interrupt_codes.nil? - return @in_scope_interrupt_codes unless @in_scope_interrupt_codes.nil? + @in_scope_interrupt_codes = [] + portfolios.each do |portfolio| + @in_scope_interrupt_codes += portfolio.in_scope_interrupt_codes(design) + end - @in_scope_interrupt_codes = [] - portfolios.each do |portfolio| - @in_scope_interrupt_codes += portfolio.in_scope_interrupt_codes(design) + @in_scope_interrupt_codes.uniq(&:name) end - @in_scope_interrupt_codes.uniq(&:name) - end - - # @return [String] Given an extension +ext_name+, return the presence as a string. - # Returns the greatest presence string across all profiles in the group. - # If the extension name isn't found in the release, return "-". - def extension_presence(ext_name) - greatest_presence = nil + # @return [String] Given an extension +ext_name+, return the presence as a string. + # Returns the greatest presence string across all profiles in the group. + # If the extension name isn't found in the release, return "-". + def extension_presence(ext_name) + greatest_presence = nil - portfolios.each do |portfolio| - presence = portfolio.extension_presence_obj(ext_name) + portfolios.each do |portfolio| + presence = portfolio.extension_presence_obj(ext_name) - unless presence.nil? - if greatest_presence.nil? - greatest_presence = presence - elsif presence > greatest_presence - greatest_presence = presence + unless presence.nil? + if greatest_presence.nil? + greatest_presence = presence + elsif presence > greatest_presence + greatest_presence = presence + end end end - end - greatest_presence.nil? ? "-" : greatest_presence.to_s_concise - end + greatest_presence.nil? ? "-" : greatest_presence.to_s_concise + end - # @return [String] Given an instruction +inst_name+, return the presence as a string. - # Returns the greatest presence string across all profiles in the group. - # If the instruction name isn't found in the release, return "-". - def instruction_presence(inst_name) - greatest_presence = nil + # @return [String] Given an instruction +inst_name+, return the presence as a string. + # Returns the greatest presence string across all profiles in the group. + # If the instruction name isn't found in the release, return "-". + def instruction_presence(inst_name) + greatest_presence = nil - portfolios.each do |portfolio| - presence = portfolio.instruction_presence_obj(inst_name) + portfolios.each do |portfolio| + presence = portfolio.instruction_presence_obj(inst_name) - unless presence.nil? - if greatest_presence.nil? - greatest_presence = presence - elsif presence > greatest_presence - greatest_presence = presence + unless presence.nil? + if greatest_presence.nil? + greatest_presence = presence + elsif presence > greatest_presence + greatest_presence = presence + end end end - end - greatest_presence.nil? ? "-" : greatest_presence.to_s_concise - end + greatest_presence.nil? ? "-" : greatest_presence.to_s_concise + end - # @return [String] Given an CSR +csr_name+, return the presence as a string. - # Returns the greatest presence string across all profiles in the group. - # If the CSR name isn't found in the release, return "-". - def csr_presence(csr_name) - greatest_presence = nil + # @return [String] Given an CSR +csr_name+, return the presence as a string. + # Returns the greatest presence string across all profiles in the group. + # If the CSR name isn't found in the release, return "-". + def csr_presence(csr_name) + greatest_presence = nil - portfolios.each do |portfolio| - presence = portfolio.csr_presence_obj(csr_name) + portfolios.each do |portfolio| + presence = portfolio.csr_presence_obj(csr_name) - unless presence.nil? - if greatest_presence.nil? - greatest_presence = presence - elsif presence > greatest_presence - greatest_presence = presence + unless presence.nil? + if greatest_presence.nil? + greatest_presence = presence + elsif presence > greatest_presence + greatest_presence = presence + end end end + + greatest_presence.nil? ? "-" : greatest_presence.to_s_concise end - greatest_presence.nil? ? "-" : greatest_presence.to_s_concise - end + # @return [Array] Sorted list of parameters specified by any extension in portfolio. + def all_in_scope_params + @ret = [] + portfolios.each do |portfolio| + @ret += portfolio.all_in_scope_params + end - # @return [Array] Sorted list of parameters specified by any extension in portfolio. - def all_in_scope_params - @ret = [] - portfolios.each do |portfolio| - @ret += portfolio.all_in_scope_params + @ret = @ret.uniq.sort end - @ret = @ret.uniq.sort - end + # @param [ExtensionRequirement] + # @return [Array] Sorted list of extension parameters from portfolio for given extension. + def in_scope_params(ext_req) + @ret = [] + portfolios.each do |portfolio| + @ret += portfolio.in_scope_params(ext_req) + end - # @param [ExtensionRequirement] - # @return [Array] Sorted list of extension parameters from portfolio for given extension. - def in_scope_params(ext_req) - @ret = [] - portfolios.each do |portfolio| - @ret += portfolio.in_scope_params(ext_req) + @ret = @ret.uniq.sort end - @ret = @ret.uniq.sort - end + # @return [Array] Sorted list of parameters out of scope across all in scope extensions. + def all_out_of_scope_params + @ret = [] + portfolios.each do |portfolio| + @ret += portfolio.all_out_of_scope_params + end - # @return [Array] Sorted list of parameters out of scope across all in scope extensions. - def all_out_of_scope_params - @ret = [] - portfolios.each do |portfolio| - @ret += portfolio.all_out_of_scope_params + @ret = @ret.uniq.sort end - @ret = @ret.uniq.sort - end + # @param ext_name [String] Extension name + # @return [Array] Sorted list of parameters that are out of scope for named extension. + def out_of_scope_params(ext_name) + @ret = [] + portfolios.each do |portfolio| + @ret += portfolio.out_of_scope_params(ext_name) + end - # @param ext_name [String] Extension name - # @return [Array] Sorted list of parameters that are out of scope for named extension. - def out_of_scope_params(ext_name) - @ret = [] - portfolios.each do |portfolio| - @ret += portfolio.out_of_scope_params(ext_name) + @ret = @ret.uniq.sort end - @ret = @ret.uniq.sort - end + # @param param [Parameter] + # @return [Array] Sorted list of all in-scope extensions that define this parameter + # in the database and the parameter is in-scope. + def all_in_scope_exts_with_param(param) + @ret = [] + portfolios.each do |portfolio| + @ret += portfolio.all_in_scope_exts_with_param(param) + end - # @param param [Parameter] - # @return [Array] Sorted list of all in-scope extensions that define this parameter - # in the database and the parameter is in-scope. - def all_in_scope_exts_with_param(param) - @ret = [] - portfolios.each do |portfolio| - @ret += portfolio.all_in_scope_exts_with_param(param) + @ret = @ret.uniq.sort end - @ret = @ret.uniq.sort - end + # @param param [Parameter] + # @return [Array] List of all in-scope extensions that define this parameter in the + # database but the parameter is out-of-scope. + def all_in_scope_exts_without_param(param) + @ret = [] + portfolios.each do |portfolio| + @ret += portfolio.all_in_scope_exts_without_param(param) + end - # @param param [Parameter] - # @return [Array] List of all in-scope extensions that define this parameter in the - # database but the parameter is out-of-scope. - def all_in_scope_exts_without_param(param) - @ret = [] - portfolios.each do |portfolio| - @ret += portfolio.all_in_scope_exts_without_param(param) + @ret = @ret.uniq.sort end - - @ret = @ret.uniq.sort end -end ############# # Portfolio # @@ -349,505 +350,598 @@ def all_in_scope_exts_without_param(param) # Holds information about a Portfolio (certificate or profile). # The inherited "data" member is YAML data from the architecture for this portfolio object. -class Portfolio < TopLevelDatabaseObject - # @param obj_yaml [Hash] Contains contents of Portfolio yaml file (put in @data) - # @param data_path [String] Path to yaml file - # @param arch [Architecture] Entire database of RISC-V architecture standards - sig { params(obj_yaml: T::Hash[String, Object], yaml_path: T.any(String, Pathname), arch: ConfiguredArchitecture).void } - def initialize(obj_yaml, yaml_path, arch) - super # Calls parent class with same args I got - end + class Portfolio < TopLevelDatabaseObject + # @param obj_yaml [Hash] Contains contents of Portfolio yaml file (put in @data) + # @param data_path [String] Path to yaml file + # @param arch [Architecture] Entire database of RISC-V architecture standards + sig { params(obj_yaml: T::Hash[String, Object], yaml_path: T.any(String, Pathname), arch: ConfiguredArchitecture).void } + def initialize(obj_yaml, yaml_path, arch) + super # Calls parent class with same args I got + end - # @return [String] Small enough (~1 paragraph) to be suitable immediately after a higher-level heading. - def introduction = @data["introduction"] + # @return [String] Small enough (~1 paragraph) to be suitable immediately after a higher-level heading. + def introduction = @data["introduction"] - # @return [String] Large enough to need its own heading (generally one level deeper than the "introduction"). - def description = @data["description"] + # @return [String] Large enough to need its own heading (generally one level deeper than the "introduction"). + def description = @data["description"] - # @return [Integer] 32 or 64 - def base = @data["base"] + # @return [Integer] 32 or 64 + def base = @data["base"] - # @return [Gem::Version] Semantic version of the Portfolio - def version = Gem::Version.new(@data["version"]) + # @return [Gem::Version] Semantic version of the Portfolio + def version = Gem::Version.new(@data["version"]) - # @return [Presence] Given an extension +ext_name+, return the presence. - # If the extension name isn't found in the portfolio, return nil. - def extension_presence_obj(ext_name) - # Get extension information from YAML for passed in extension name. - ext_data = @data["extensions"][ext_name] + # @return [Presence] Given an extension +ext_name+, return the presence. + # If the extension name isn't found in the portfolio, return nil. + def extension_presence_obj(ext_name) + # Get extension information from YAML for passed in extension name. + ext_data = @data["extensions"][ext_name] - ext_data.nil? ? nil : Presence.new(ext_data["presence"]) - end + ext_data.nil? ? nil : Presence.new(ext_data["presence"]) + end - # @return [String] Given an extension +ext_name+, return the presence as a string. - # If the extension name isn't found in the portfolio, return "-". - def extension_presence(ext_name) - presence_obj = extension_presence_obj(ext_name) + # @return [String] Given an extension +ext_name+, return the presence as a string. + # If the extension name isn't found in the portfolio, return "-". + def extension_presence(ext_name) + presence_obj = extension_presence_obj(ext_name) - presence_obj.nil? ? "-" : presence_obj.to_s - end + presence_obj.nil? ? "-" : presence_obj.to_s + end - # @return [Presence] Given an instruction +inst_name+, return the presence. - # If the instruction name isn't found in the portfolio, return nil. - def instruction_presence_obj(inst_name) - @instruction_presence_obj ||= {} + # @return [Presence] Given an instruction +inst_name+, return the presence. + # If the instruction name isn't found in the portfolio, return nil. + def instruction_presence_obj(inst_name) + @instruction_presence_obj ||= {} - return @instruction_presence_obj[inst_name] unless @instruction_presence_obj[inst_name].nil? + return @instruction_presence_obj[inst_name] unless @instruction_presence_obj[inst_name].nil? - inst = arch.instruction(inst_name) + inst = arch.instruction(inst_name) - raise "Can't find instruction object '#{inst_name}' in arch class" if inst.nil? + raise "Can't find instruction object '#{inst_name}' in arch class" if inst.nil? - is_mandatory = mandatory_ext_reqs.any? do |ext_req| - ext_versions = ext_req.satisfying_versions - ext_versions.any? { |ext_ver| inst.defined_by_condition.possibly_satisfied_by?(ext_ver) } - end + is_mandatory = mandatory_ext_reqs.any? do |ext_req| + inst.defined_by_condition.satisfied_by_cfg_arch?(to_cfg_arch) == SatisfiedResult::Yes + end - is_optional = optional_ext_reqs.any? do |ext_req| - ext_versions = ext_req.satisfying_versions - ext_versions.any? { |ext_ver| inst.defined_by_condition.possibly_satisfied_by?(ext_ver) } + is_optional = !is_mandatory && optional_ext_reqs.any? do |ext_req| + inst.defined_by_condition.satisfied_by_cfg_arch?(to_cfg_arch_for_optional) == SatisfiedResult::Yes + end + + @instruction_presence_obj[inst_name] = + if is_mandatory + Presence.new(Presence.mandatory) + elsif is_optional + Presence.new(Presence.optional) + else + nil + end end - @instruction_presence_obj[inst_name] = - if is_mandatory - Presence.new(Presence.mandatory) - elsif is_optional - Presence.new(Presence.optional) - else - nil + # returns a config arch that treats the Portfolio like a partial config + sig { returns(ConfiguredArchitecture) } + def to_cfg_arch + @cfg_arch ||= begin + config = PartialConfig.new( + { + "$schema" => "config_schema.json#", + "kind" => "architecture configuration", + "type" => "partially configured", + "name" => name, + "description" => description, + "params" => all_in_scope_params.map do |p| + if p.single_value? + [p.name, p.value] + else + nil + end + end.compact.to_h, + "mandatory_extensions" => mandatory_ext_reqs.map do |ext_req| + { + "name" => ext_req.name, + "version" => \ + if ext_req.requirement_specs.size == 1 + ext_req.requirement_specs.fetch(0).to_s + else + ext_req.requirement_specs.map(&:to_s) + end + } + end, + "non_mandatory_extensions" => optional_ext_reqs.map do |ext_req| + { + "name" => ext_req.name, + "version" => \ + if ext_req.requirement_specs.size == 1 + ext_req.requirement_specs.fetch(0).to_s + else + ext_req.requirement_specs.map(&:to_s) + end + } + end, + "additional_extensions" => true + } + ) + ConfiguredArchitecture.new(name, config, cfg_arch.arch_path) end - end + end - # @return [String] Given an instruction +inst_name+, return the presence as a string. - # If the instruction name isn't found in the portfolio, return "-". - def instruction_presence(inst_name) - @instruction_presence ||= {} + # returns a config arch that treats the *optional* extensions in Portfolio like a partial config + sig { returns(ConfiguredArchitecture) } + def to_cfg_arch_for_optional + @cfg_arch_for_optional ||= begin + config = PartialConfig.new( + { + "$schema" => "config_schema.json#", + "kind" => "architecture configuration", + "type" => "partially configured", + "name" => name, + "description" => description, + "params" => all_in_scope_params.map do |p| + if p.single_value? + [p.name, p.value] + else + nil + end + end.compact.to_h, + "mandatory_extensions" => optional_ext_reqs.map do |ext_req| + { + "name" => ext_req.name, + "version" => \ + if ext_req.requirement_specs.size == 1 + ext_req.requirement_specs.fetch(0).to_s + else + ext_req.requirement_specs.map(&:to_s) + end + } + end, + "additional_extensions" => true + } + ) + ConfiguredArchitecture.new(name, config, cfg_arch.arch_path) + end + end - return @instruction_presence[inst_name] unless @instruction_presence[inst_name].nil? + # @return [String] Given an instruction +inst_name+, return the presence as a string. + # If the instruction name isn't found in the portfolio, return "-". + def instruction_presence(inst_name) + @instruction_presence ||= {} - presence_obj = instruction_presence_obj(inst_name) + return @instruction_presence[inst_name] unless @instruction_presence[inst_name].nil? - @instruction_presence[inst_name] = presence_obj.nil? ? "-" : presence_obj.to_s - end + presence_obj = instruction_presence_obj(inst_name) - # @return [Presence] Given an CSR +csr_name+, return the presence. - # If the CSR name isn't found in the portfolio, return nil. - def csr_presence_obj(csr_name) - @csr_presence_obj ||= {} + @instruction_presence[inst_name] = presence_obj.nil? ? "-" : presence_obj.to_s + end - return @csr_presence_obj[csr_name] unless @csr_presence_obj[csr_name].nil? + # @return [Presence] Given an CSR +csr_name+, return the presence. + # If the CSR name isn't found in the portfolio, return nil. + def csr_presence_obj(csr_name) + @csr_presence_obj ||= {} - csr = arch.csr(csr_name) + return @csr_presence_obj[csr_name] unless @csr_presence_obj[csr_name].nil? - raise "Can't find CSR object '#{csr_name}' in arch class" if csr.nil? + csr = arch.csr(csr_name) - is_mandatory = mandatory_ext_reqs.any? do |ext_req| - ext_versions = ext_req.satisfying_versions - ext_versions.any? { |ext_ver| csr.defined_by_condition.possibly_satisfied_by?(ext_ver) } - end + raise "Can't find CSR object '#{csr_name}' in arch class" if csr.nil? - is_optional = optional_ext_reqs.any? do |ext_req| - ext_versions = ext_req.satisfying_versions - ext_versions.any? { |ext_ver| csr.defined_by_condition.possibly_satisfied_by?(ext_ver) } - end + is_mandatory = mandatory_ext_reqs.any? do |ext_req| + csr.defined_by_condition.satisfied_by_cfg_arch?(to_cfg_arch) == SatisfiedResult::Yes + end - @csr_presence_obj[csr_name] = - if is_mandatory - Presence.new(Presence.mandatory) - elsif is_optional - Presence.new(Presence.optional) - else - nil + is_optional = !is_mandatory && optional_ext_reqs.any? do |ext_req| + csr.defined_by_condition.satisfied_by_cfg_arch?(to_cfg_arch_for_optional) == SatisfiedResult::Yes end - end - # @return [String] Given an CSR +csr_name+, return the presence as a string. - # If the CSR name isn't found in the portfolio, return "-". - def csr_presence(csr_name) - @csr_presence ||= {} + @csr_presence_obj[csr_name] = + if is_mandatory + Presence.new(Presence.mandatory) + elsif is_optional + Presence.new(Presence.optional) + else + nil + end + end + + # @return [String] Given an CSR +csr_name+, return the presence as a string. + # If the CSR name isn't found in the portfolio, return "-". + def csr_presence(csr_name) + @csr_presence ||= {} - return @csr_presence[csr_name] unless @csr_presence[csr_name].nil? + return @csr_presence[csr_name] unless @csr_presence[csr_name].nil? - presence_obj = csr_presence_obj(csr_name) + presence_obj = csr_presence_obj(csr_name) - @csr_presence[csr_name] = presence_obj.nil? ? "-" : presence_obj.to_s - end + @csr_presence[csr_name] = presence_obj.nil? ? "-" : presence_obj.to_s + end - # Returns the greatest presence string for each of the specified versions. - # @param ext_name [String] - # @param ext_versions [Array] - # @return [Array] - def version_greatest_presence(ext_name, ext_versions) - presences = [] + # Returns the greatest presence string for each of the specified versions. + # @param ext_name [String] + # @param ext_versions [Array] + # @return [Array] + def version_greatest_presence(ext_name, ext_versions) + presences = [] - # See if any extension requirement in this profile lists this version as either mandatory or optional. - ext_versions.map do |v| - greatest_presence = nil + # See if any extension requirement in this profile lists this version as either mandatory or optional. + ext_versions.map do |v| + greatest_presence = nil - in_scope_ext_reqs.each do |ext_req| - if ext_req.satisfied_by?(v) - presence = extension_presence_obj(ext_name) + in_scope_ext_reqs.each do |ext_req| + if ext_req.satisfied_by?(v) + presence = extension_presence_obj(ext_name) - unless presence.nil? - if greatest_presence.nil? - greatest_presence = presence - elsif presence > greatest_presence - greatest_presence = presence + unless presence.nil? + if greatest_presence.nil? + greatest_presence = presence + elsif presence > greatest_presence + greatest_presence = presence + end end end end + + presences << (greatest_presence.nil? ? "-" : greatest_presence.to_s_concise) end - presences << (greatest_presence.nil? ? "-" : greatest_presence.to_s_concise) + presences end - presences - end + # @return [String] The note associated with extension +ext_name+ + # @return [nil] if there is no note for +ext_name+ + def extension_note(ext_name) + # Get extension information from YAML for passed in extension name. + ext_data = @data["extensions"][ext_name] + raise "Cannot find extension named #{ext_name}" if ext_data.nil? - # @return [String] The note associated with extension +ext_name+ - # @return [nil] if there is no note for +ext_name+ - def extension_note(ext_name) - # Get extension information from YAML for passed in extension name. - ext_data = @data["extensions"][ext_name] - raise "Cannot find extension named #{ext_name}" if ext_data.nil? + return ext_data["note"] unless ext_data.nil? + end - return ext_data["note"] unless ext_data.nil? - end + def mandatory_ext_reqs = in_scope_ext_reqs(Presence.mandatory) + def optional_ext_reqs = in_scope_ext_reqs(Presence.optional) + def optional_type_ext_reqs = in_scope_ext_reqs(Presence.optional) - def mandatory_ext_reqs = in_scope_ext_reqs(Presence.mandatory) - def optional_ext_reqs = in_scope_ext_reqs(Presence.optional) - def optional_type_ext_reqs = in_scope_ext_reqs(Presence.optional) - - # @param desired_presence [String, Hash, Presence] - # @return [Array] Sorted list of extensions with their portfolio information. - # If desired_presence is provided, only returns extensions with that presence. - # If desired_presence is a String, only the presence portion of an Presence is compared. - def in_scope_ext_reqs(desired_presence = nil) - in_scope_ext_reqs = [] - - # Convert desired_present argument to Presence object if not nil. - desired_presence_converted = - desired_presence.nil? ? nil : - desired_presence.is_a?(String) ? desired_presence : - desired_presence.is_a?(Presence) ? desired_presence : - Presence.new(desired_presence) - - missing_ext = false - - @data["extensions"]&.each do |ext_name, ext_data| - next if ext_name[0] == "$" - - # Does extension even exist? - # If not, don't raise an error right away so we can find all of the missing extensions and report them all. - ext = arch.extension(ext_name) - if ext.nil? - puts "Extension #{ext_name} for #{name} not found in database" - missing_ext = true - else - actual_presence = ext_data["presence"] # Could be a String or Hash - raise "Missing extension presence for extension #{ext_name}" if actual_presence.nil? - - # Convert presence String or Hash to object. - actual_presence_obj = Presence.new(actual_presence) - - match = - if desired_presence.nil? - true # Always match - else - actual_presence_obj == desired_presence_converted - end + # @param desired_presence [String, Hash, Presence] + # @return [Array] Sorted list of extensions with their portfolio information. + # If desired_presence is provided, only returns extensions with that presence. + # If desired_presence is a String, only the presence portion of an Presence is compared. + def in_scope_ext_reqs(desired_presence = nil) + in_scope_ext_reqs = [] + + # Convert desired_present argument to Presence object if not nil. + desired_presence_converted = + if desired_presence.nil? + nil +else + if desired_presence.is_a?(String) + desired_presence +else + desired_presence.is_a?(Presence) ? desired_presence : + Presence.new(desired_presence) +end +end + + missing_ext = false + + @data["extensions"]&.each do |ext_name, ext_data| + next if ext_name[0] == "$" - if match - in_scope_ext_reqs << - if ext_data.key?("version") - ExtensionRequirement.new( - ext_name, ext_data["version"], arch: @arch, - presence: actual_presence_obj, note: ext_data["note"], req_id: "REQ-EXT-#{ext_name}") + # Does extension even exist? + # If not, don't raise an error right away so we can find all of the missing extensions and report them all. + ext = arch.extension(ext_name) + if ext.nil? + puts "Extension #{ext_name} for #{name} not found in database" + missing_ext = true + else + actual_presence = ext_data["presence"] # Could be a String or Hash + raise "Missing extension presence for extension #{ext_name}" if actual_presence.nil? + + # Convert presence String or Hash to object. + actual_presence_obj = Presence.new(actual_presence) + + match = + if desired_presence.nil? + true # Always match else - ExtensionRequirement.new( - ext_name, [], arch: @arch, - presence: actual_presence_obj, note: ext_data["note"], req_id: "REQ-EXT-#{ext_name}") + actual_presence_obj == desired_presence_converted end + + if match + in_scope_ext_reqs << + if ext_data.key?("version") + ExtensionRequirement.new( + ext_name, ext_data["version"], arch: @arch, + presence: actual_presence_obj, note: ext_data["note"], req_id: "REQ-EXT-#{ext_name}") + else + ExtensionRequirement.new( + ext_name, [], arch: @arch, + presence: actual_presence_obj, note: ext_data["note"], req_id: "REQ-EXT-#{ext_name}") + end + end end end + + raise "One or more extensions referenced by #{name} missing in database" if missing_ext + + in_scope_ext_reqs.sort_by!(&:name) end - raise "One or more extensions referenced by #{name} missing in database" if missing_ext + # @return [Array] Sorted list of all mandatory or optional extensions in portfolio. + # Each extension can have multiple versions (contains ExtensionVersion array). + def in_scope_extensions + return @in_scope_extensions unless @in_scope_extensions.nil? - in_scope_ext_reqs.sort_by!(&:name) - end + @in_scope_extensions = in_scope_ext_reqs.map do |ext_req| + ext_req.extension + end.reject(&:nil?) # Filter out extensions that don't exist yet. - # @return [Array] Sorted list of all mandatory or optional extensions in portfolio. - # Each extension can have multiple versions (contains ExtensionVersion array). - def in_scope_extensions - return @in_scope_extensions unless @in_scope_extensions.nil? + @in_scope_extensions.sort_by!(&:name) + end - @in_scope_extensions = in_scope_ext_reqs.map do |ext_req| - ext_req.extension - end.reject(&:nil?) # Filter out extensions that don't exist yet. + # @return [ExtensionVersion] List of all mandatory or optional extensions listed in portfolio. + # The minimum version of each extension that satisfies the extension requirements is provided. + def in_scope_min_satisfying_extension_versions + return @in_scope_min_satisfying_extension_versions unless @in_scope_min_satisfying_extension_versions.nil? - @in_scope_extensions.sort_by!(&:name) - end + @in_scope_min_satisfying_extension_versions = in_scope_ext_reqs.map do |ext_req| + ext_req.satisfying_versions.min + end.reject(&:nil?) # Filter out extensions that don't exist yet. - # @return [ExtensionVersion] List of all mandatory or optional extensions listed in portfolio. - # The minimum version of each extension that satisfies the extension requirements is provided. - def in_scope_min_satisfying_extension_versions - return @in_scope_min_satisfying_extension_versions unless @in_scope_min_satisfying_extension_versions.nil? + @in_scope_min_satisfying_extension_versions + end - @in_scope_min_satisfying_extension_versions = in_scope_ext_reqs.map do |ext_req| - ext_req.satisfying_versions.min - end.reject(&:nil?) # Filter out extensions that don't exist yet. + # @param design [Design] The design + # @return [Array] Sorted list of all instructions associated with extensions listed as + # mandatory or optional in portfolio. Uses instructions provided by the + # minimum version of the extension that meets the extension requirement. + def in_scope_instructions(design) + raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) - @in_scope_min_satisfying_extension_versions - end + return @in_scope_instructions unless @in_scope_instructions.nil? - # @param design [Design] The design - # @return [Array] Sorted list of all instructions associated with extensions listed as - # mandatory or optional in portfolio. Uses instructions provided by the - # minimum version of the extension that meets the extension requirement. - def in_scope_instructions(design) - raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) + @in_scope_instructions = + in_scope_min_satisfying_extension_versions.map { |ext_ver| ext_ver.in_scope_instructions(design) }.flatten.uniq.sort + end - return @in_scope_instructions unless @in_scope_instructions.nil? + # @param design [Design] The design + # @return [Array] Unsorted list of all CSRs associated with extensions listed as + # mandatory or optional in portfolio. Uses CSRs provided by the + # minimum version of the extension that meets the extension requirement. + def in_scope_csrs(design) + raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) - @in_scope_instructions = - in_scope_min_satisfying_extension_versions.map {|ext_ver| ext_ver.in_scope_instructions(design) }.flatten.uniq.sort - end + return @in_scope_csrs unless @in_scope_csrs.nil? - # @param design [Design] The design - # @return [Array] Unsorted list of all CSRs associated with extensions listed as - # mandatory or optional in portfolio. Uses CSRs provided by the - # minimum version of the extension that meets the extension requirement. - def in_scope_csrs(design) - raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) + @in_scope_csrs = + in_scope_min_satisfying_extension_versions.map { |ext_ver| ext_ver.in_scope_csrs(design) }.flatten.uniq + end - return @in_scope_csrs unless @in_scope_csrs.nil? + # @param design [Design] The design + # @return [Array] Unsorted list of all in-scope exception codes. + # TODO: See https://github.com/riscv-software-src/riscv-unified-db/issues/291 + # TODO: Still needs work and haven't created in_scope_interrupt_codes yet. + # TODO: Extensions should provide conditional information ("when" statements?) + # that we evaluate here to determine if a particular exception code can + # actually be generated in a design. + # Also, probably shouldn't be calling "ext?" since that doesn't the in_scope lists of extensions. + def in_scope_exception_codes(design) + raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) - @in_scope_csrs = - in_scope_min_satisfying_extension_versions.map {|ext_ver| ext_ver.in_scope_csrs(design) }.flatten.uniq - end + return @in_scope_exception_codes unless @in_scope_exception_codes.nil? - # @param design [Design] The design - # @return [Array] Unsorted list of all in-scope exception codes. - # TODO: See https://github.com/riscv-software-src/riscv-unified-db/issues/291 - # TODO: Still needs work and haven't created in_scope_interrupt_codes yet. - # TODO: Extensions should provide conditional information ("when" statements?) - # that we evaluate here to determine if a particular exception code can - # actually be generated in a design. - # Also, probably shouldn't be calling "ext?" since that doesn't the in_scope lists of extensions. - def in_scope_exception_codes(design) - raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) - - return @in_scope_exception_codes unless @in_scope_exception_codes.nil? - - @in_scope_exception_codes = - in_scope_min_satisfying_extension_versions.reduce([]) do |list, ext_version| - ecodes = ext_version.ext.data["exception_codes"] - next list if ecodes.nil? - - ecodes.each do |ecode| - # Require all exception codes be unique in a given portfolio. - raise "Duplicate exception code" if list.any? { |e| e.num == ecode["num"] || e.name == ecode["name"] || e.var == ecode["var"] } - - unless ecode.dig("when", "version").nil? - # check version - next unless design.ext?(ext_version.name.to_sym, [ecode["when"]["version"]]) + @in_scope_exception_codes = + in_scope_min_satisfying_extension_versions.reduce([]) do |list, ext_version| + ecodes = ext_version.exception_codes + next list if ecodes.nil? + + ecodes.each do |ecode| + list << ecode end - list << ExceptionCode.new(ecode["name"], ecode["var"], ecode["num"], ext_version.ext) - end - list - end - end + list + end.uniq + end + + # @param design [Design] The design + # @return [Array] Unsorted list of all in-scope interrupt codes. + # TODO: Actually implement this to use Design. See in_scope_exception_codes() above. + def in_scope_interrupt_codes(design) + raise ArgumentError, "Require an PortfolioDesign object but got a #{design.class} object" unless design.is_a?(PortfolioDesign) + + return @in_scope_interrupt_codes unless @in_scope_interrupt_codes.nil? - # @param design [Design] The design - # @return [Array] Unsorted list of all in-scope interrupt codes. - # TODO: Actually implement this to use Design. See in_scope_exception_codes() above. - def in_scope_interrupt_codes(design) = arch.interrupt_codes + @in_scope_interrupt_codes = + in_scope_min_satisfying_extension_versions.reduce([]) do |list, ext_version| + icodes = ext_version.interrupt_codes + next list if icodes.nil? + + icodes.each do |icode| + list << icode + end + list + end.uniq + end - # @return [Boolean] Does the profile differentiate between different types of optional. - def uses_optional_types? - return @uses_optional_types unless @uses_optional_types.nil? + # @return [Boolean] Does the profile differentiate between different types of optional. + def uses_optional_types? + return @uses_optional_types unless @uses_optional_types.nil? - @uses_optional_types = false + @uses_optional_types = false - in_scope_ext_reqs(Presence.optional)&.each do |ext_req| - if ext_req.presence.uses_optional_types? - @uses_optional_types = true + in_scope_ext_reqs(Presence.optional)&.each do |ext_req| + if ext_req.presence.uses_optional_types? + @uses_optional_types = true + end end + + @uses_optional_types end - @uses_optional_types - end + ########################################################################### + # Portfolio types that supported the concept of in-scope and out-of-scope # + # parameter have to override the following methods. # + ########################################################################### - ########################################################################### - # Portfolio types that supported the concept of in-scope and out-of-scope # - # parameter have to override the following methods. # - ########################################################################### + # @return [Array] List of parameters specified by any extension in portfolio. + def all_in_scope_params = [] - # @return [Array] List of parameters specified by any extension in portfolio. - def all_in_scope_params = [] + # @param [ExtensionRequirement] + # @return [Array] Sorted list of extension parameters from portfolio for given extension. + def in_scope_params(ext_req) = [] - # @param [ExtensionRequirement] - # @return [Array] Sorted list of extension parameters from portfolio for given extension. - def in_scope_params(ext_req) = [] + # @return [Array] Sorted list of parameters out of scope across all in scope extensions. + def all_out_of_scope_params = [] - # @return [Array] Sorted list of parameters out of scope across all in scope extensions. - def all_out_of_scope_params = [] + # @param ext_name [String] Extension name + # @return [Array] Sorted list of parameters that are out of scope for named extension. + def out_of_scope_params(ext_name) = [] - # @param ext_name [String] Extension name - # @return [Array] Sorted list of parameters that are out of scope for named extension. - def out_of_scope_params(ext_name) = [] + # @param param [Parameter] + # @return [Array] Sorted list of all in-scope extensions that define this parameter + # in the database and the parameter is in-scope. + def all_in_scope_exts_with_param(param) = [] - # @param param [Parameter] - # @return [Array] Sorted list of all in-scope extensions that define this parameter - # in the database and the parameter is in-scope. - def all_in_scope_exts_with_param(param) = [] + # @param param [Parameter] + # @return [Array] List of all in-scope extensions that define this parameter in the + # database but the parameter is out-of-scope. + def all_in_scope_exts_without_param(param) = [] - # @param param [Parameter] - # @return [Array] List of all in-scope extensions that define this parameter in the - # database but the parameter is out-of-scope. - def all_in_scope_exts_without_param(param) = [] + ########################## + # InScopeParameter Class # + ########################## - ########################## - # InScopeParameter Class # - ########################## + class InScopeParameter + # @return [Parameter] Parameter object (from the architecture database) + attr_reader :param - class InScopeParameter - # @return [Parameter] Parameter object (from the architecture database) - attr_reader :param + # @return [String] Optional note associated with the parameter + attr_reader :note - # @return [String] Optional note associated with the parameter - attr_reader :note + def initialize(param, schema_hash, note) + raise ArgumentError, "Expecting Parameter" unless param.is_a?(Parameter) - def initialize(param, schema_hash, note) - raise ArgumentError, "Expecting Parameter" unless param.is_a?(Parameter) + if schema_hash.nil? + schema_hash = {} + else + raise ArgumentError, "Expecting schema_hash to be a hash" unless schema_hash.is_a?(Hash) + end - if schema_hash.nil? - schema_hash = {} - else - raise ArgumentError, "Expecting schema_hash to be a hash" unless schema_hash.is_a?(Hash) + @param = param + @schema_portfolio = Schema.new(schema_hash) + @note = note end - @param = param - @schema_portfolio = Schema.new(schema_hash) - @note = note - end + def name = @param.name + def idl_type = @param.type + def single_value? = @schema_portfolio.single_value? - def name = @param.name - def idl_type = @param.type - def single_value? = @schema_portfolio.single_value? + def value + raise "Parameter schema_portfolio for #{name} is not a single value" unless single_value? - def value - raise "Parameter schema_portfolio for #{name} is not a single value" unless single_value? + @schema_portfolio.value + end - @schema_portfolio.value - end + # @return [String] - # What parameter values are allowed by the portfolio. + def allowed_values + if (@schema_portfolio.empty?) + # Portfolio doesn't add any constraints on parameter's value. + return "Any" + end - # @return [String] - # What parameter values are allowed by the portfolio. - def allowed_values - if (@schema_portfolio.empty?) - # Portfolio doesn't add any constraints on parameter's value. - return "Any" - end + # Create a Schema object just using information in the parameter database. + schema_obj = @param.schema - # Create a Schema object just using information in the parameter database. - schema_obj = @param.schema + # Merge in constraints imposed by the portfolio on the parameter and then + # create string showing allowed values of parameter with portfolio constraints added. + schema_obj.merge(@schema_portfolio).to_pretty_s + end - # Merge in constraints imposed by the portfolio on the parameter and then - # create string showing allowed values of parameter with portfolio constraints added. - schema_obj.merge(@schema_portfolio).to_pretty_s - end + # sorts by name + def <=>(other) + raise ArgumentError, + "InScopeParameter are only comparable to other parameter constraints" unless other.is_a?(InScopeParameter) + @param.name <=> other.param.name + end + end # class InScopeParameter - # sorts by name - def <=>(other) - raise ArgumentError, - "InScopeParameter are only comparable to other parameter constraints" unless other.is_a?(InScopeParameter) - @param.name <=> other.param.name - end - end # class InScopeParameter + ############################ + # RevisionHistory Subclass # + ############################ - ############################ - # RevisionHistory Subclass # - ############################ + # Tracks history of portfolio document. This is separate from its version since + # a document may be revised several times before a new version is released. - # Tracks history of portfolio document. This is separate from its version since - # a document may be revised several times before a new version is released. + class RevisionHistory + def initialize(data) + @data = data + end - class RevisionHistory - def initialize(data) - @data = data + def revision = @data["revision"] + def date = @data["date"] + def changes = @data["changes"] end - def revision = @data["revision"] - def date = @data["date"] - def changes = @data["changes"] - end - - def revision_history - return @revision_history unless @revision_history.nil? + def revision_history + return @revision_history unless @revision_history.nil? - @revision_history = [] - @data["revision_history"].each do |rev| - @revision_history << RevisionHistory.new(rev) + @revision_history = [] + @data["revision_history"].each do |rev| + @revision_history << RevisionHistory.new(rev) + end + @revision_history end - @revision_history - end - ###################### - # ExtraNote Subclass # - ###################### + ###################### + # ExtraNote Subclass # + ###################### - class ExtraNote - def initialize(data) - @data = data + class ExtraNote + def initialize(data) + @data = data - @presence_obj = Presence.new(@data["presence"]) - end + @presence_obj = Presence.new(@data["presence"]) + end - def presence_obj = @presence_obj - def text = @data["text"] - end + def presence_obj = @presence_obj + def text = @data["text"] + end - def extra_notes - return @extra_notes unless @extra_notes.nil? + def extra_notes + return @extra_notes unless @extra_notes.nil? - @extra_notes = [] - @data["extra_notes"]&.each do |extra_note| - @extra_notes << ExtraNote.new(extra_note) + @extra_notes = [] + @data["extra_notes"]&.each do |extra_note| + @extra_notes << ExtraNote.new(extra_note) + end + @extra_notes end - @extra_notes - end - # @param desired_presence [Presence] - # @return [String] Note for desired_presence - # @return [nil] No note for desired_presence - def extra_notes_for_presence(desired_presence_obj) - raise ArgumentError, "Expecting Presence but got a #{desired_presence_obj.class}" unless desired_presence_obj.is_a?(Presence) + # @param desired_presence [Presence] + # @return [String] Note for desired_presence + # @return [nil] No note for desired_presence + def extra_notes_for_presence(desired_presence_obj) + raise ArgumentError, "Expecting Presence but got a #{desired_presence_obj.class}" unless desired_presence_obj.is_a?(Presence) - extra_notes.select {|extra_note| extra_note.presence_obj == desired_presence_obj} - end + extra_notes.select { |extra_note| extra_note.presence_obj == desired_presence_obj } + end - ########################### - # Recommendation Subclass # - ########################### + ########################### + # Recommendation Subclass # + ########################### - class Recommendation - def initialize(data) - @data = data - end + class Recommendation + def initialize(data) + @data = data + end - def text = @data["text"] - end + def text = @data["text"] + end - def recommendations - return @recommendations unless @recommendations.nil? + def recommendations + return @recommendations unless @recommendations.nil? - @recommendations = [] - @data["recommendations"]&.each do |recommendation| - @recommendations << Recommendation.new(recommendation) + @recommendations = [] + @data["recommendations"]&.each do |recommendation| + @recommendations << Recommendation.new(recommendation) + end + @recommendations end - @recommendations end -end end diff --git a/tools/ruby-gems/udb/lib/udb/obj/profile.rb b/tools/ruby-gems/udb/lib/udb/obj/profile.rb index a568ed4a31..d4db523d1a 100644 --- a/tools/ruby-gems/udb/lib/udb/obj/profile.rb +++ b/tools/ruby-gems/udb/lib/udb/obj/profile.rb @@ -1,3 +1,4 @@ +# typed: false # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear @@ -10,266 +11,266 @@ module Udb # For example, the RVA profile family has releases such as RVA20, RVA22, RVA23 # that each include an unprivileged profile (e.g., RVA20U64) and one more # privileged profiles (e.g., RVA20S64). -class ProfileFamily < PortfolioClass - # @return [String] Naming scheme for profile family - def naming_scheme = @data["naming_scheme"] + class ProfileFamily < PortfolioClass + # @return [String] Naming scheme for profile family + def naming_scheme = @data["naming_scheme"] - # @return [String] Name of the class - def marketing_name = @data["marketing_name"] + # @return [String] Name of the class + def marketing_name = @data["marketing_name"] - # @return [Company] Company that created the profile - def company = Company.new(@data["company"]) + # @return [Company] Company that created the profile + def company = Company.new(@data["company"]) - # @return [License] Documentation license - def doc_license - License.new(@data["doc_license"]) - end + # @return [License] Documentation license + def doc_license + License.new(@data["doc_license"]) + end - # @return [Array] Defined profile releases in this profile family - def profile_releases - return @profile_releases unless @profile_releases.nil? + # @return [Array] Defined profile releases in this profile family + def profile_releases + return @profile_releases unless @profile_releases.nil? - @profile_releases = @arch.profile_releases.select { |pr| pr.profile_family.name == name } + @profile_releases = @arch.profile_releases.select { |pr| pr.profile_family.name == name } - @profile_releases - end + @profile_releases + end - # @return [Array] Defined profile releases of this processor class - def profile_releases_matching_processor_kind - return @profile_releases_matching_processor_kind unless @profile_releases_matching_processor_kind.nil? + # @return [Array] Defined profile releases of this processor class + def profile_releases_matching_processor_kind + return @profile_releases_matching_processor_kind unless @profile_releases_matching_processor_kind.nil? - matching_classes = portfolio_classes_matching_portfolio_kind_and_processor_kind + matching_classes = portfolio_classes_matching_portfolio_kind_and_processor_kind - # Look for all profile releases that are from any of the matching classes. - @profile_releases_matching_processor_kind = @arch.profile_releases.select { |pr| - matching_classes.any? { |matching_class| matching_class.name == pr.profile_family.name } - } + # Look for all profile releases that are from any of the matching classes. + @profile_releases_matching_processor_kind = @arch.profile_releases.select { |pr| + matching_classes.any? { |matching_class| matching_class.name == pr.profile_family.name } + } - @profile_releases_matching_processor_kind - end + @profile_releases_matching_processor_kind + end - # @return [Array] All profiles in this profile family (for all releases). - def profiles - return @profiles unless @profiles.nil? + # @return [Array] All profiles in this profile family (for all releases). + def profiles + return @profiles unless @profiles.nil? - @profiles = @arch.profiles.select {|profile| profile.profile_family.name == name} - end + @profiles = @arch.profiles.select { |profile| profile.profile_family.name == name } + end - # @return [Array] All profiles in database matching my processor kind - def profiles_matching_processor_kind - return @profiles_matching_processor_kind unless @profiles_matching_processor_kind.nil? + # @return [Array] All profiles in database matching my processor kind + def profiles_matching_processor_kind + return @profiles_matching_processor_kind unless @profiles_matching_processor_kind.nil? - @profiles_matching_processor_kind = @arch.profiles.select {|profile| profile.profile_family.processor_kind == processor_kind} - end + @profiles_matching_processor_kind = @arch.profiles.select { |profile| profile.profile_family.processor_kind == processor_kind } + end + + # @return [Array] Sorted list of all mandatory or optional extensions across the profile releases belonging + # to the profile family + def in_scope_extensions + return @in_scope_extensions unless @in_scope_extensions.nil? - # @return [Array] Sorted list of all mandatory or optional extensions across the profile releases belonging - # to the profile family - def in_scope_extensions - return @in_scope_extensions unless @in_scope_extensions.nil? + @in_scope_extensions = [] + profiles.each do |profile| + @in_scope_extensions += profile.in_scope_extensions + end - @in_scope_extensions = [] - profiles.each do |profile| - @in_scope_extensions += profile.in_scope_extensions + @in_scope_extensions = @in_scope_extensions.uniq(&:name).sort_by(&:name) end - @in_scope_extensions = @in_scope_extensions.uniq(&:name).sort_by(&:name) - end + # @return [Array] Sorted list of all potential extensions with my processor kind + def in_scope_extensions_matching_processor_kind + return @in_scope_extensions_matching_processor_kind unless @in_scope_extensions_matching_processor_kind.nil? - # @return [Array] Sorted list of all potential extensions with my processor kind - def in_scope_extensions_matching_processor_kind - return @in_scope_extensions_matching_processor_kind unless @in_scope_extensions_matching_processor_kind.nil? + @in_scope_extensions_matching_processor_kind = [] + profiles_matching_processor_kind.each do |profile| + @in_scope_extensions_matching_processor_kind += profile.in_scope_extensions + end - @in_scope_extensions_matching_processor_kind = [] - profiles_matching_processor_kind.each do |profile| - @in_scope_extensions_matching_processor_kind += profile.in_scope_extensions + @in_scope_extensions_matching_processor_kind = + @in_scope_extensions_matching_processor_kind.uniq(&:name).sort_by(&:name) end - - @in_scope_extensions_matching_processor_kind = - @in_scope_extensions_matching_processor_kind.uniq(&:name).sort_by(&:name) end -end # A profile release consists of a number of releases each with one or more profiles. # For example, the RVA20 profile release has profiles RVA20U64 and RVA20S64. # Note there is no Portfolio base class for a ProfileRelease to inherit from since there is no # equivalent to a ProfileRelease in a Certificate so no potential for a shared base class. -class ProfileRelease < TopLevelDatabaseObject - def marketing_name = @data["marketing_name"] + class ProfileRelease < TopLevelDatabaseObject + def marketing_name = @data["marketing_name"] - # @return [String] Small enough (~1 paragraph) to be suitable immediately after a higher-level heading. - def introduction = @data["introduction"] + # @return [String] Small enough (~1 paragraph) to be suitable immediately after a higher-level heading. + def introduction = @data["introduction"] - def state = @data["state"] + def state = @data["state"] - # @return [Date] Ratification date - # @return [nil] if the profile is not ratified - def ratification_date - return nil if @data["ratification_date"].nil? + # @return [Date] Ratification date + # @return [nil] if the profile is not ratified + def ratification_date + return nil if @data["ratification_date"].nil? - Date.parse(@data["ratification_date"]) - end + Date.parse(@data["ratification_date"]) + end - # @return [Array] Contributors to the profile spec - def contributors - return nil if @data["contributors"].nil? + # @return [Array] Contributors to the profile spec + def contributors + return nil if @data["contributors"].nil? - @data["contributors"].map { |data| Person.new(data) } - end + @data["contributors"].map { |data| Person.new(data) } + end - # @return [ProfileFamily] Profile Family that this ProfileRelease belongs to - def profile_family - profile_family = @arch.ref(@data["family"]['$ref']) - raise "No profile family named '#{@data["family"]}'" if profile_family.nil? + # @return [ProfileFamily] Profile Family that this ProfileRelease belongs to + def profile_family + profile_family = @arch.ref(@data["family"]["$ref"]) + raise "No profile family named '#{@data["family"]}'" if profile_family.nil? - profile_family - end + profile_family + end - # @return [Array] All profiles in this profile release - def profiles - return @profiles unless @profiles.nil? + # @return [Array] All profiles in this profile release + def profiles + return @profiles unless @profiles.nil? - @profiles = [] - @data["profiles"].each do |profile_ref| - @profiles << @arch.ref(profile_ref["$ref"]) + @profiles = [] + @data["profiles"].each do |profile_ref| + @profiles << @arch.ref(profile_ref["$ref"]) + end + @profiles end - @profiles - end - # @return [PortfolioGroup] All portfolios in this profile release - def portfolio_grp - return @portfolio_grp unless @portfolio_grp.nil? + # @return [PortfolioGroup] All portfolios in this profile release + def portfolio_grp + return @portfolio_grp unless @portfolio_grp.nil? - @portfolio_grp = PortfolioGroup.new(marketing_name, profiles) - end + @portfolio_grp = PortfolioGroup.new(marketing_name, profiles) + end - ##################################### - # METHODS HANDLED BY PortfolioGroup # - ##################################### + ##################################### + # METHODS HANDLED BY PortfolioGroup # + ##################################### - # @return [Array] List of all mandatory or optional extensions referenced by this profile release. - def in_scope_extensions = portfolio_grp.in_scope_extensions + # @return [Array] List of all mandatory or optional extensions referenced by this profile release. + def in_scope_extensions = portfolio_grp.in_scope_extensions - # @return [String] Given an extension +ext_name+, return the presence as a string. - # Returns the greatest presence string across all profiles in the release. - # If the extension name isn't found in the release, return "-". - def extension_presence(ext_name) = portfolio_grp.extension_presence(ext_name) + # @return [String] Given an extension +ext_name+, return the presence as a string. + # Returns the greatest presence string across all profiles in the release. + # If the extension name isn't found in the release, return "-". + def extension_presence(ext_name) = portfolio_grp.extension_presence(ext_name) - # @return [String] Given an instruction +inst_name+, return the presence as a string. - # Returns the greatest presence string across all profiles in the release. - # If the instruction name isn't found in the release, return "-". - def instruction_presence(inst_name) = portfolio_grp.instruction_presence(inst_name) + # @return [String] Given an instruction +inst_name+, return the presence as a string. + # Returns the greatest presence string across all profiles in the release. + # If the instruction name isn't found in the release, return "-". + def instruction_presence(inst_name) = portfolio_grp.instruction_presence(inst_name) - # @return [String] Given a CSR +csr_name+, return the presence as a string. - # Returns the greatest presence string across all profiles in the release. - # If the CSR name isn't found in the release, return "-". - def csr_presence(csr_name) = portfolio_grp.csr_presence(csr_name) -end + # @return [String] Given a CSR +csr_name+, return the presence as a string. + # Returns the greatest presence string across all profiles in the release. + # If the CSR name isn't found in the release, return "-". + def csr_presence(csr_name) = portfolio_grp.csr_presence(csr_name) + end # Representation of a specific profile in a profile release. -class Profile < Portfolio - # @return [String] The marketing name of the Profile - def marketing_name = @data["marketing_name"] + class Profile < Portfolio + # @return [String] The marketing name of the Profile + def marketing_name = @data["marketing_name"] - # @return [ProfileRelease] The profile release this profile belongs to - def profile_release - profile_release = @arch.ref(@data["release"]["$ref"]) - raise "No profile release named '#{@data["release"]["$ref"]}'" if profile_release.nil? + # @return [ProfileRelease] The profile release this profile belongs to + def profile_release + profile_release = @arch.ref(@data["release"]["$ref"]) + raise "No profile release named '#{@data["release"]["$ref"]}'" if profile_release.nil? - profile_release - end + profile_release + end - # @return [ProfileFamily] The profile family this profile belongs to - def profile_family = profile_release.profile_family + # @return [ProfileFamily] The profile family this profile belongs to + def profile_family = profile_release.profile_family - # @return ["M", "S", "U", "VS", "VU"] Privilege mode for the profile - def mode - @data["mode"] - end + # @return ["M", "S", "U", "VS", "VU"] Privilege mode for the profile + def mode + @data["mode"] + end - # @return [32, 64] The base XLEN for the profile - def base - @data["base"] - end + # @return [32, 64] The base XLEN for the profile + def base + @data["base"] + end - # Too complicated to put in profile ERB template. - # @param presence_type [String] - # @param heading_level [Integer] - # @return [Array] Each array entry is a line - def extensions_to_adoc(presence_type, heading_level) - ret = [] - - presence_ext_reqs = in_scope_ext_reqs(presence_type) - plural = (presence_ext_reqs.size == 1) ? "" : "s" - ret << "The #{marketing_name} Profile has #{presence_ext_reqs.size} #{presence_type} extension#{plural}." - ret << "" - - unless presence_ext_reqs.empty? - if (presence_type == Presence.optional) && uses_optional_types? - # Iterate through each optional type. Use object version (not string) to get - # precise comparisons (i.e., presence string and optional type string). - Presence.optional_types_obj.each do |optional_type_obj| - optional_type_ext_reqs = in_scope_ext_reqs(optional_type_obj) - unless optional_type_ext_reqs.empty? - ret << "" - ret << ("=" * heading_level) + " #{optional_type_obj.optional_type.capitalize} Options" - optional_type_ext_reqs.each do |ext_req| - ret << ext_req_to_adoc(ext_req) - ret << ext_note_to_adoc(ext_req.name) - end # each ext_req - end # unless optional_type_ext_reqs empty - - # Add extra notes that just belong to just this optional type. - extra_notes_for_presence(optional_type_obj)&.each do |extra_note| - ret << "NOTE: #{extra_note.text}" - ret << "" - end # each extra_note - end # each optional_type_obj - else # don't bother with optional types - presence_ext_reqs.each do |ext_req| - ret << ext_req_to_adoc(ext_req) - ret << ext_note_to_adoc(ext_req.name) - end # each ext_req - end # checking for optional types - end # presence_ext_reqs isn't empty - - # Add extra notes that just belong to this presence. - # Use object version (not string) of presence to avoid adding extra notes - # already added for optional types if they are in use. - extra_notes_for_presence(Presence.new(presence_type))&.each do |extra_note| - ret << "NOTE: #{extra_note.text}" + # Too complicated to put in profile ERB template. + # @param presence_type [String] + # @param heading_level [Integer] + # @return [Array] Each array entry is a line + def extensions_to_adoc(presence_type, heading_level) + ret = [] + + presence_ext_reqs = in_scope_ext_reqs(presence_type) + plural = (presence_ext_reqs.size == 1) ? "" : "s" + ret << "The #{marketing_name} Profile has #{presence_ext_reqs.size} #{presence_type} extension#{plural}." ret << "" - end # each extra_note - ret - end + unless presence_ext_reqs.empty? + if (presence_type == Presence.optional) && uses_optional_types? + # Iterate through each optional type. Use object version (not string) to get + # precise comparisons (i.e., presence string and optional type string). + Presence.optional_types_obj.each do |optional_type_obj| + optional_type_ext_reqs = in_scope_ext_reqs(optional_type_obj) + unless optional_type_ext_reqs.empty? + ret << "" + ret << ("=" * heading_level) + " #{optional_type_obj.optional_type.capitalize} Options" + optional_type_ext_reqs.each do |ext_req| + ret << ext_req_to_adoc(ext_req) + ret << ext_note_to_adoc(ext_req.name) + end # each ext_req + end # unless optional_type_ext_reqs empty + + # Add extra notes that just belong to just this optional type. + extra_notes_for_presence(optional_type_obj)&.each do |extra_note| + ret << "NOTE: #{extra_note.text}" + ret << "" + end # each extra_note + end # each optional_type_obj + else # don't bother with optional types + presence_ext_reqs.each do |ext_req| + ret << ext_req_to_adoc(ext_req) + ret << ext_note_to_adoc(ext_req.name) + end # each ext_req + end # checking for optional types + end # presence_ext_reqs isn't empty + + # Add extra notes that just belong to this presence. + # Use object version (not string) of presence to avoid adding extra notes + # already added for optional types if they are in use. + extra_notes_for_presence(Presence.new(presence_type))&.each do |extra_note| + ret << "NOTE: #{extra_note.text}" + ret << "" + end # each extra_note + + ret + end - # @param ext_req [ExtensionRequirement] - # @return [Array] - def ext_req_to_adoc(ext_req) - ret = [] + # @param ext_req [ExtensionRequirement] + # @return [Array] + def ext_req_to_adoc(ext_req) + ret = [] - ext = arch.extension(ext_req.name) - ret << "* *#{ext_req.name}* " + (ext.nil? ? "" : ext.long_name) - ret << "+" - ret << "Version #{ext_req.requirement_specs_to_s}" + ext = arch.extension(ext_req.name) + ret << "* *#{ext_req.name}* " + (ext.nil? ? "" : ext.long_name) + ret << "+" + ret << "Version #{ext_req.requirement_specs_to_s_pretty}" - ret - end + ret + end - # @param ext_name [String] - # @return [Array] - def ext_note_to_adoc(ext_name) - ret = [] + # @param ext_name [String] + # @return [Array] + def ext_note_to_adoc(ext_name) + ret = [] - unless extension_note(ext_name).nil? - ret << "+" - ret << "[NOTE]" - ret << "--" - ret << extension_note(ext_name) - ret << "--" - end + unless extension_note(ext_name).nil? + ret << "+" + ret << "[NOTE]" + ret << "--" + ret << extension_note(ext_name) + ret << "--" + end - ret + ret + end end end -end diff --git a/tools/ruby-gems/udb/lib/udb/portfolio_design.rb b/tools/ruby-gems/udb/lib/udb/portfolio_design.rb index 14d838c9d4..2bee13bf2d 100644 --- a/tools/ruby-gems/udb/lib/udb/portfolio_design.rb +++ b/tools/ruby-gems/udb/lib/udb/portfolio_design.rb @@ -1,3 +1,4 @@ +# typed: false # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear @@ -11,7 +12,6 @@ # For example, a processor certificate model has one portfolio but a profile release has multiple portfolios # but they both have just one PortfolioDesign object. -require "ruby-prof" require "forwardable" require_relative "cfg_arch" @@ -22,235 +22,235 @@ module Udb -class PortfolioDesign - extend Forwardable - - # Calls to these methods on Design are handled by the ConfiguredArchitecture object. - # Avoids having to call design.cfg_arch. (just call design.). - def_delegators :@cfg_arch, - :ext?, - :multi_xlen?, - :multi_xlen_in_mode?, - :mxlen, - :params_without_value, - :possible_xlens, - :type_check, - :transitive_implemented_extension_versions, - :prohibited_ext?, - :implemented_exception_codes, - :implemented_interrupt_codes, - :functions, - :transitive_implemented_csrs, - :transitive_implemented_instructions, - :symtab, - :implemented_functions, - :convert_monospace_to_links - - # @return [String] Name of design - attr_reader :name - - # @return [PortfolioClass] Portfolio class for all the portfolios in this design - attr_reader :portfolio_class - - # @return [String] Kind of portfolio for all portfolios in this design - attr_reader :portfolio_kind - - # @return [String] Type of design suitable for human readers. - attr_reader :portfolio_design_type - - # @return [ConfiguredArchitecture] The RISC-V architecture - attr_reader :cfg_arch - - # Provided for backwards-compatibility - def arch = @cfg_arch - - # Class methods - def self.profile_release_type = "Profile Release" - def self.proc_crd_type = "Certification Requirements Document" - def self.proc_ctp_type = "Certification Test Plan" - def self.portfolio_design_types = [profile_release_type, proc_crd_type, proc_ctp_type] - - # @param name [#to_s] The name of the portfolio design (i.e., backend filename without a suffix) - # @param cfg_arch [ConfiguredArchitecture] The database of RISC-V standards for a particular configuration - # @param portfolio_design_type [String] Type of portfolio design associated with this design - # @param portfolios [Array] Portfolios being converted to adoc - # @param portfolio_class [PortfolioClass] PortfolioClass for all the Portfolios - def initialize(name, cfg_arch, portfolio_design_type, portfolios, portfolio_class) - raise ArgumentError, "cfg_arch must be an ConfiguredArchitecture but is a #{cfg_arch.class}" unless cfg_arch.is_a?(ConfiguredArchitecture) - raise ArgumentError, "portfolio_design_type of #{portfolio_design_type} unknown" unless PortfolioDesign.portfolio_design_types.include?(portfolio_design_type) - raise ArgumentError, "portfolios must be an Array but is a #{portfolios.class}" unless portfolios.is_a?(Array) - raise ArgumentError, "portfolio_class must be a PortfolioClass but is a #{portfolio_class.class}" unless portfolio_class.is_a?(PortfolioClass) - - @name = name.to_s.freeze - @name_sym = @name.to_sym.freeze - @cfg_arch = cfg_arch - @portfolio_design_type = portfolio_design_type - - # The PortfolioGroup has an Array inside it and forwards common Array methods to its internal Array. - # Can call @portfolio_grp.each or @portfolio_grp.map and they are handled by the normal Array methods. - @portfolio_grp = PortfolioGroup.new(name, portfolios) - - @portfolio_class = portfolio_class - @portfolio_kind = portfolios[0].kind - end + class PortfolioDesign + extend Forwardable + + # Calls to these methods on Design are handled by the ConfiguredArchitecture object. + # Avoids having to call design.cfg_arch. (just call design.). + def_delegators :@cfg_arch, + :ext?, + :multi_xlen?, + :multi_xlen_in_mode?, + :mxlen, + :params_without_value, + :possible_xlens, + :type_check, + :implemented_extension_versions, + :prohibited_ext?, + :implemented_exception_codes, + :implemented_interrupt_codes, + :functions, + :implemented_csrs, + :implemented_instructions, + :symtab, + :implemented_functions, + :convert_monospace_to_links + + # @return [String] Name of design + attr_reader :name + + # @return [PortfolioClass] Portfolio class for all the portfolios in this design + attr_reader :portfolio_class + + # @return [String] Kind of portfolio for all portfolios in this design + attr_reader :portfolio_kind + + # @return [String] Type of design suitable for human readers. + attr_reader :portfolio_design_type + + # @return [ConfiguredArchitecture] The RISC-V architecture + attr_reader :cfg_arch + + # Provided for backwards-compatibility + def arch = @cfg_arch + + # Class methods + def self.profile_release_type = "Profile Release" + def self.proc_crd_type = "Certification Requirements Document" + def self.proc_ctp_type = "Certification Test Plan" + def self.portfolio_design_types = [profile_release_type, proc_crd_type, proc_ctp_type] + + # @param name [#to_s] The name of the portfolio design (i.e., backend filename without a suffix) + # @param cfg_arch [ConfiguredArchitecture] The database of RISC-V standards for a particular configuration + # @param portfolio_design_type [String] Type of portfolio design associated with this design + # @param portfolios [Array] Portfolios being converted to adoc + # @param portfolio_class [PortfolioClass] PortfolioClass for all the Portfolios + def initialize(name, cfg_arch, portfolio_design_type, portfolios, portfolio_class) + raise ArgumentError, "cfg_arch must be an ConfiguredArchitecture but is a #{cfg_arch.class}" unless cfg_arch.is_a?(ConfiguredArchitecture) + raise ArgumentError, "portfolio_design_type of #{portfolio_design_type} unknown" unless PortfolioDesign.portfolio_design_types.include?(portfolio_design_type) + raise ArgumentError, "portfolios must be an Array but is a #{portfolios.class}" unless portfolios.is_a?(Array) + raise ArgumentError, "portfolio_class must be a PortfolioClass but is a #{portfolio_class.class}" unless portfolio_class.is_a?(PortfolioClass) + + @name = name.to_s.freeze + @name_sym = @name.to_sym.freeze + @cfg_arch = cfg_arch + @portfolio_design_type = portfolio_design_type + + # The PortfolioGroup has an Array inside it and forwards common Array methods to its internal Array. + # Can call @portfolio_grp.each or @portfolio_grp.map and they are handled by the normal Array methods. + @portfolio_grp = PortfolioGroup.new(name, portfolios) + + @portfolio_class = portfolio_class + @portfolio_kind = portfolios[0].kind + end - # Returns a string representation of the object, suitable for debugging. - # @return [String] A string representation of the object. - def inspect = "PortfolioDesign##{name}" + # Returns a string representation of the object, suitable for debugging. + # @return [String] A string representation of the object. + def inspect = "PortfolioDesign##{name}" - ################################## - # METHODS REQUIRED BY BASE CLASS # - ################################## + ################################## + # METHODS REQUIRED BY BASE CLASS # + ################################## - # @return [Array] List of all parameters fully-constrained to one specific value - def params_with_value - return @params_with_value unless @params_with_value.nil? + # @return [Array] List of all parameters fully-constrained to one specific value + def params_with_value + return @params_with_value unless @params_with_value.nil? - @params_with_value = [] + @params_with_value = [] - in_scope_ext_reqs.each do |ext_req| - ext_req.extension.params.each do |param| - next unless param_values.key?(param.name) + in_scope_ext_reqs.each do |ext_req| + ext_req.extension.params.each do |param| + next unless param_values.key?(param.name) - @params_with_value << ParameterWithValue.new(param, param_values[param.name]) + @params_with_value << ParameterWithValue.new(param, param_values[param.name]) + end end - end - @params_with_value - end + @params_with_value + end - def implemented_ext_vers - # Only supported by fully-configured configurations and a portfolio corresponds to a - # partially-configured configuration. See the AbstractConfig class for details. - raise "Not supported for portfolio #{name}" - end + def implemented_ext_vers + # Only supported by fully-configured configurations and a portfolio corresponds to a + # partially-configured configuration. See the AbstractConfig class for details. + raise "Not supported for portfolio #{name}" + end - # A Portfolio corresponds to a partially-configured design. - # See the AbstractConfig class for details. - # - # @return [Boolean] True if all parameters are fully-constrained in the design - def fully_configured? = false - - # @return [Boolean] True if some parameters aren't fully-constrained yet in the design - def partially_configured? = true - - # @return [Boolean] True if all parameters aren't constrained at all in the design - def unconfigured? = false - - ##################################### - # METHODS HANDLED BY PortfolioGroup # - ##################################### - - # @return [Array] List of all mandatory extension requirements - def mandatory_ext_reqs = @portfolio_grp.mandatory_ext_reqs - - # @return [Hash] Fully-constrained parameter values (those with just one possible value for this design). - def param_values = @portfolio_grp.param_values - - # @return [Array] List of all mandatory or optional extensions referenced by this design. - def in_scope_extensions = @portfolio_grp.in_scope_extensions - - # @return [Array] List of all mandatory or optional extension requirements referenced by this design. - def in_scope_ext_reqs = @portfolio_grp.in_scope_ext_reqs - - # @return [Array] Sorted list of all instructions associated with extensions listed as - # mandatory or optional in portfolio. Uses instructions provided by the - # minimum version of the extension that meets the extension requirement. - # Factors in things like XLEN in design. - def in_scope_instructions = @portfolio_grp.in_scope_instructions(self) - - # @return [Array] Unsorted list of all CSRs associated with extensions listed as - # mandatory or optional in portfolio. Uses CSRs provided by the - # minimum version of the extension that meets the extension requirement. - # Factors in things like XLEN in design. - def in_scope_csrs = @portfolio_grp.in_scope_csrs(self) - - # @return [Array] Unsorted list of all in-scope exception codes. - def in_scope_exception_codes = @portfolio_grp.in_scope_exception_codes(self) - - # @return [Array] Unsorted list of all in-scope interrupt codes. - def in_scope_interrupt_codes = @portfolio_grp.in_scope_interrupt_codes(self) - - # @return [String] Given an extension +ext_name+, return the presence as a string. - # Returns the greatest presence string across all portfolios in this design. - # If the extension name isn't found in this design, return "-". - def extension_presence(ext_name) = @portfolio_grp.extension_presence(ext_name) - - # @return [String] Given an instruction +ext_name+, return the presence as a string. - # Returns the greatest presence string across all portfolios in this design. - # If the instruction name isn't found in this design, return "-". - def instruction_presence(inst_name) = @portfolio_grp.instruction_presence(inst_name) - - # @return [String] Given an CSR +ext_name+, return the presence as a string. - # Returns the greatest presence string across all portfolios in this design. - # If the CSR name isn't found in this design, return "-". - def csr_presence(csr_name) = @portfolio_grp.csr_presence(csr_name) - - # @return [Array] Sorted list of parameters specified by any extension in portfolio. - def all_in_scope_params = @portfolio_grp.all_in_scope_params - - # @param [ExtensionRequirement] - # @return [Array] Sorted list of extension parameters from portfolio for given extension. - def in_scope_params(ext_req) = @portfolio_grp.in_scope_params(ext_req) - - # @return [Array] Sorted list of parameters out of scope across all in scope extensions. - def all_out_of_scope_params = @portfolio_grp.all_out_of_scope_params - - # @param ext_name [String] Extension name - # @return [Array] Sorted list of parameters that are out of scope for named extension. - def out_of_scope_params(ext_name) = @portfolio_grp.out_of_scope_params(ext_name) - - # @param param [Parameter] - # @return [Array] Sorted list of all in-scope extensions that define this parameter - # in the database and the parameter is in-scope. - def all_in_scope_exts_with_param(param) = @portfolio_grp.all_in_scope_exts_with_param(param) - - # @param param [Parameter] - # @return [Array] List of all in-scope extensions that define this parameter in the - # database but the parameter is out-of-scope. - def all_in_scope_exts_without_param(param) = @portfolio_grp.all_in_scope_exts_without_param(param) - - ################# - # EXTRA METHODS # - ################# - - # @param extra_inputs [Hash] Any extra inputs to be passed to ERB template. - # @return [Hash] Hash of objects available to ERB templates and - # ERB fragments included in the main ERB template. - # Put this in a method so it can be easily overridden by subclasses. - def erb_env(extra_inputs = {}) - raise ArgumentError, "extra_inputs must be an Hash but is a #{extra_inputs.class}" unless extra_inputs.is_a?(Hash) - - h = { - arch: cfg_arch, - design: self, - portfolio_design: self, - portfolio_design_type: @portfolio_design_type, - portfolio_class: @portfolio_class, - portfolio_kind: @portfolio_kind, - portfolios: @portfolio_grp.portfolios - } - - h.merge!(extra_inputs) - end + # A Portfolio corresponds to a partially-configured design. + # See the AbstractConfig class for details. + # + # @return [Boolean] True if all parameters are fully-constrained in the design + def fully_configured? = false + + # @return [Boolean] True if some parameters aren't fully-constrained yet in the design + def partially_configured? = true + + # @return [Boolean] True if all parameters aren't constrained at all in the design + def unconfigured? = false + + ##################################### + # METHODS HANDLED BY PortfolioGroup # + ##################################### + + # @return [Array] List of all mandatory extension requirements + def mandatory_ext_reqs = @portfolio_grp.mandatory_ext_reqs + + # @return [Hash] Fully-constrained parameter values (those with just one possible value for this design). + def param_values = @portfolio_grp.param_values + + # @return [Array] List of all mandatory or optional extensions referenced by this design. + def in_scope_extensions = @portfolio_grp.in_scope_extensions + + # @return [Array] List of all mandatory or optional extension requirements referenced by this design. + def in_scope_ext_reqs = @portfolio_grp.in_scope_ext_reqs + + # @return [Array] Sorted list of all instructions associated with extensions listed as + # mandatory or optional in portfolio. Uses instructions provided by the + # minimum version of the extension that meets the extension requirement. + # Factors in things like XLEN in design. + def in_scope_instructions = @portfolio_grp.in_scope_instructions(self) + + # @return [Array] Unsorted list of all CSRs associated with extensions listed as + # mandatory or optional in portfolio. Uses CSRs provided by the + # minimum version of the extension that meets the extension requirement. + # Factors in things like XLEN in design. + def in_scope_csrs = @portfolio_grp.in_scope_csrs(self) + + # @return [Array] Unsorted list of all in-scope exception codes. + def in_scope_exception_codes = @portfolio_grp.in_scope_exception_codes(self) + + # @return [Array] Unsorted list of all in-scope interrupt codes. + def in_scope_interrupt_codes = @portfolio_grp.in_scope_interrupt_codes(self) + + # @return [String] Given an extension +ext_name+, return the presence as a string. + # Returns the greatest presence string across all portfolios in this design. + # If the extension name isn't found in this design, return "-". + def extension_presence(ext_name) = @portfolio_grp.extension_presence(ext_name) + + # @return [String] Given an instruction +ext_name+, return the presence as a string. + # Returns the greatest presence string across all portfolios in this design. + # If the instruction name isn't found in this design, return "-". + def instruction_presence(inst_name) = @portfolio_grp.instruction_presence(inst_name) + + # @return [String] Given an CSR +ext_name+, return the presence as a string. + # Returns the greatest presence string across all portfolios in this design. + # If the CSR name isn't found in this design, return "-". + def csr_presence(csr_name) = @portfolio_grp.csr_presence(csr_name) + + # @return [Array] Sorted list of parameters specified by any extension in portfolio. + def all_in_scope_params = @portfolio_grp.all_in_scope_params + + # @param [ExtensionRequirement] + # @return [Array] Sorted list of extension parameters from portfolio for given extension. + def in_scope_params(ext_req) = @portfolio_grp.in_scope_params(ext_req) + + # @return [Array] Sorted list of parameters out of scope across all in scope extensions. + def all_out_of_scope_params = @portfolio_grp.all_out_of_scope_params + + # @param ext_name [String] Extension name + # @return [Array] Sorted list of parameters that are out of scope for named extension. + def out_of_scope_params(ext_name) = @portfolio_grp.out_of_scope_params(ext_name) + + # @param param [Parameter] + # @return [Array] Sorted list of all in-scope extensions that define this parameter + # in the database and the parameter is in-scope. + def all_in_scope_exts_with_param(param) = @portfolio_grp.all_in_scope_exts_with_param(param) + + # @param param [Parameter] + # @return [Array] List of all in-scope extensions that define this parameter in the + # database but the parameter is out-of-scope. + def all_in_scope_exts_without_param(param) = @portfolio_grp.all_in_scope_exts_without_param(param) + + ################# + # EXTRA METHODS # + ################# + + # @param extra_inputs [Hash] Any extra inputs to be passed to ERB template. + # @return [Hash] Hash of objects available to ERB templates and + # ERB fragments included in the main ERB template. + # Put this in a method so it can be easily overridden by subclasses. + def erb_env(extra_inputs = {}) + raise ArgumentError, "extra_inputs must be an Hash but is a #{extra_inputs.class}" unless extra_inputs.is_a?(Hash) + + h = { + arch: cfg_arch, + design: self, + portfolio_design: self, + portfolio_design_type: @portfolio_design_type, + portfolio_class: @portfolio_class, + portfolio_kind: @portfolio_kind, + portfolios: @portfolio_grp.portfolios + } + + h.merge!(extra_inputs) + end - # Called from tasks.rake file to add standard set of objects available to ERB templates. - def init_erb_binding(erb_binding) - raise ArgumentError, "Expected Binding object but got #{erb_binding.class}" unless erb_binding.is_a?(Binding) + # Called from tasks.rake file to add standard set of objects available to ERB templates. + def init_erb_binding(erb_binding) + raise ArgumentError, "Expected Binding object but got #{erb_binding.class}" unless erb_binding.is_a?(Binding) - erb_env.each do |key, obj| - erb_binding.local_variable_set(key, obj) + erb_env.each do |key, obj| + erb_binding.local_variable_set(key, obj) + end end - end - # Include a partial ERB template into a full ERB template. - # - # @param template_path [String] Name of template file located in backends/portfolio/templates - # @param extra_inputs [Hash] Any extra inputs to be passed to ERB template. - # @return [String] Result of ERB evaluation of the template file - def include_erb(template_name, extra_inputs = {}) - template_pname = "portfolio/templates/#{template_name}" - partial(template_pname, erb_env(extra_inputs)) + # Include a partial ERB template into a full ERB template. + # + # @param template_path [String] Name of template file located in backends/portfolio/templates + # @param extra_inputs [Hash] Any extra inputs to be passed to ERB template. + # @return [String] Result of ERB evaluation of the template file + def include_erb(template_name, extra_inputs = {}) + template_pname = "portfolio/templates/#{template_name}" + partial(template_pname, erb_env(extra_inputs)) + end end end -end diff --git a/tools/ruby-gems/udb/lib/udb/prm_generator.rb b/tools/ruby-gems/udb/lib/udb/prm_generator.rb index 59db754bcd..61d16935e8 100644 --- a/tools/ruby-gems/udb/lib/udb/prm_generator.rb +++ b/tools/ruby-gems/udb/lib/udb/prm_generator.rb @@ -4,21 +4,21 @@ # typed: true # frozen_string_literal: true -require 'erb' -require 'asciidoctor-pdf' -require 'rouge' -require 'asciidoctor-diagram' -require 'fileutils' -require 'pathname' -require 'yaml' -require 'cgi' -require 'set' -require 'open3' -require 'sorbet-runtime' -require_relative 'obj/prm' -require_relative '../../../udb_helpers/lib/udb_helpers/backend_helpers' -require_relative 'obj/non_isa_specification' -require_relative 'external_documentation_renderer' +require "erb" +require "asciidoctor-pdf" +require "rouge" +require "asciidoctor-diagram" +require "fileutils" +require "pathname" +require "yaml" +require "cgi" +require "set" +require "open3" +require "sorbet-runtime" +require_relative "obj/prm" +require_relative "../../../udb_helpers/lib/udb_helpers/backend_helpers" +require_relative "obj/non_isa_specification" +require_relative "external_documentation_renderer" module PrmGenerator # Utility to adjust heading levels in AsciiDoc content @@ -31,7 +31,7 @@ def self.adjust_heading_levels(content, level_offset) # Calculate new level but cap at 6 to avoid excessive nesting new_level_count = [equals.length + level_offset, 6].min new_level_count = [new_level_count, 1].max # Ensure at least level 1 - new_level = '=' * new_level_count + new_level = "=" * new_level_count "#{new_level}#{spaces}" end end @@ -266,14 +266,14 @@ def generate_config_overview end def load_template(path) - template = ERB.new(File.read(path, encoding: 'UTF-8'), trim_mode: "-") + template = ERB.new(File.read(path, encoding: "UTF-8"), trim_mode: "-") template.filename = path.to_s template end def get_csrs if @processor_config.fully_configured? - @processor_config.transitive_implemented_csrs + @processor_config.implemented_csrs else @processor_config.possible_csrs end @@ -281,7 +281,7 @@ def get_csrs def get_instructions if @processor_config.fully_configured? - @processor_config.transitive_implemented_instructions + @processor_config.implemented_instructions else @processor_config.possible_instructions end @@ -289,7 +289,7 @@ def get_instructions def get_extensions if @processor_config.fully_configured? - @processor_config.transitive_implemented_extension_versions + @processor_config.implemented_extension_versions elsif @processor_config.partially_configured? @processor_config.possible_extension_versions else @@ -315,28 +315,28 @@ def self.sanitize(content) return "" unless content.is_a?(String) # Fix HTML entities that cause AsciiDoctor parsing errors - content = content.gsub(/≠/, '≠') - content = content.gsub(/≥/, '≥') - content = content.gsub(/≤/, '≤') - content = content.gsub(/>/, '>') - content = content.gsub(/</, '<') - content = content.gsub(/&/, '&') - content = content.gsub(/±/, '±') - content = content.gsub(/×/, '×') - content = content.gsub(/÷/, '÷') + content = content.gsub(/≠/, "≠") + content = content.gsub(/≥/, "≥") + content = content.gsub(/≤/, "≤") + content = content.gsub(/>/, ">") + content = content.gsub(/</, "<") + content = content.gsub(/&/, "&") + content = content.gsub(/±/, "±") + content = content.gsub(/×/, "×") + content = content.gsub(/÷/, "÷") # Fix other common HTML entities - content = content.gsub(/ /, ' ') + content = content.gsub(/ /, " ") content = content.gsub(/"/, '"') - content = content.gsub(/&#([0-9]+);/) { [$1.to_i].pack('U*') } - content = content.gsub(/&#x([0-9a-fA-F]+);/) { [$1.to_i(16)].pack('U*') } + content = content.gsub(/&#([0-9]+);/) { [$1.to_i].pack("U*") } + content = content.gsub(/&#x([0-9a-fA-F]+);/) { [$1.to_i(16)].pack("U*") } # Clean up problematic AsciiDoc constructs content = content.gsub(/\n\n\n+/, "\n\n") # Remove excessive blank lines content = content.gsub(/\r\n/, "\n") # Normalize line endings # Ensure UTF-8 encoding - content.force_encoding('UTF-8') + content.force_encoding("UTF-8") content rescue StandardError => e @@ -373,11 +373,11 @@ def self.resolve(processor_config, content) private def self.create_asciidoc_link(type, name, link_text) - escaped_text = link_text.gsub(']', '\\]').gsub(',', '\\,') + escaped_text = link_text.gsub("]", '\\]').gsub(",", '\\,') case type when "csr_field" - base_csr_name, field_name = name.split('.', 2) + base_csr_name, field_name = name.split(".", 2) "<>" when "func" "<<#{name}-func-def,#{escaped_text}>>" @@ -415,7 +415,7 @@ def generate template_path = @template_dir / "templates" / "prm_main.adoc.erb" raise GenerationError, "Main template not found: #{template_path}" unless template_path.exist? - template = ERB.new(File.read(template_path, encoding: 'UTF-8'), trim_mode: "-") + template = ERB.new(File.read(template_path, encoding: "UTF-8"), trim_mode: "-") template.filename = template_path.to_s # Prepare template variables @@ -464,7 +464,7 @@ def prepare_template_variables def get_extensions_list if @processor_config.fully_configured? - @processor_config.transitive_implemented_extension_versions + @processor_config.implemented_extension_versions elsif @processor_config.partially_configured? @processor_config.possible_extension_versions else @@ -474,7 +474,7 @@ def get_extensions_list def get_all_instructions if @processor_config.fully_configured? - @processor_config.transitive_implemented_instructions + @processor_config.implemented_instructions else @processor_config.possible_instructions end @@ -482,7 +482,7 @@ def get_all_instructions def get_all_csrs if @processor_config.fully_configured? - @processor_config.transitive_implemented_csrs + @processor_config.implemented_csrs else @processor_config.possible_csrs end @@ -727,12 +727,12 @@ def self.include_file(file_path, heading_adjustment = 0, strip_title = false) return "_Documentation not available_" unless File.exist?(file_path) begin - content = File.read(file_path, encoding: 'UTF-8') + content = File.read(file_path, encoding: "UTF-8") content = ContentSanitizer.sanitize(content) # Strip the first heading if requested (for auto-generated content) if strip_title - content = content.gsub(/^=+\s+.*?\n/, '') + content = content.gsub(/^=+\s+.*?\n/, "") end # Resolve relative includes diff --git a/tools/ruby-gems/udb/lib/udb/req_expression.rb b/tools/ruby-gems/udb/lib/udb/req_expression.rb deleted file mode 100644 index 8c9b234f21..0000000000 --- a/tools/ruby-gems/udb/lib/udb/req_expression.rb +++ /dev/null @@ -1,852 +0,0 @@ -# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. -# SPDX-License-Identifier: BSD-3-Clause-Clear - -# typed: true -# frozen_string_literal: true - -require "sorbet-runtime" -require_relative "obj/extension" - -module Udb - - # sorbet needs a forward declration - class ExtensionVersion; end - - # return type for satisfied_by functions - class SatisfiedResult < T::Enum - enums do - Yes = new - No = new - Maybe = new - end - end - -module AbstractRequirement - extend T::Sig - extend T::Helpers - interface! - - sig { abstract.returns(String) } - def to_rb; end - - sig { abstract.returns(T::Boolean) } - def satisfied_by?; end - - sig { abstract.returns(T::Boolean) } - def empty?; end - - sig { abstract.params(_other: T.untyped).returns(T::Boolean) } - def compatible?(_other); end - - sig { abstract.returns(T.any(String, T::Hash[String, T.untyped])) } - def to_h; end - - sig { abstract.params(_hsh: T.any(String, T::Hash[String, T.untyped])).returns(T.any(String, T::Hash[String, T.untyped])) } - def minimize(_hsh); end - - sig { abstract.params(_cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) } - def satisfied_by_cfg_arch?(_cfg_arch); end - - sig { abstract.params(_cfg_arch: ConfiguredArchitecture).returns(T::Boolean) } - def could_be_true?(_cfg_arch); end -end - -# represents a JSON Schema composition of extension requirements, e.g.: -# -# anyOf: -# - oneOf: -# - A -# - B -# - C -# -class ExtensionRequirementExpression - extend T::Sig - include AbstractRequirement - - # @param composition_hash [Hash] A possibly recursive hash of "allOf", "anyOf", "oneOf", "not", "if" - sig { params(composition_hash: T.any(String, T::Hash[String, T.untyped]), cfg_arch: ConfiguredArchitecture).void } - def initialize(composition_hash, cfg_arch) - unless is_a_condition?(composition_hash) - raise ArgumentError, "Expecting a JSON schema comdition (got #{composition_hash})" - end - - @hsh = composition_hash - @arch = cfg_arch - @satisfied_by_cfg_arch = T.let({}, T::Hash[String, SatisfiedResult]) - end - - sig { override.returns(T.any(String, T::Hash[String, T.untyped])) } - def to_h = @hsh - - sig { override.returns(T::Boolean) } - def empty? = false - - sig { params(ver: T.untyped).returns(T::Boolean) } - def is_a_version_requirement(ver) - case ver - when String - !(ver =~ RequirementSpec::REQUIREMENT_REGEX).nil? - when Array - ver.all? { |v| v =~ RequirementSpec::REQUIREMENT_REGEX } - else - false - end - end - private :is_a_version_requirement - - # @return [Boolean] True if the condition is a join of N terms over the same operator - # - # A or B or C #=> true - # A and B #=> true - # A or B and C #=> false - sig { returns(T::Boolean) } - def flat? - case @hsh - when String - true - when Hash - @hsh.key?("name") || @hsh[T.must(@hsh.keys.first)].all? { |child| child.is_a?(String) || (child.is_a?(Hash) && child.key?("name")) } - end - end - - # @return [TYPES::Or, TYPES::And] The operator for a flat condition - # Only valid if #flat? is true - sig { returns(Symbol) } - def flat_op - case @hsh - when String - TYPES::Or - when Hash - @hsh.key?("name") ? TYPES::Or : { "allOf" => TYPES::And, "anyOf" => TYPES::Or }[T.must(@hsh.keys.first)] - end - end - - # @return [Array] The elements of the flat join - # Only valid if #flat? is true - sig { returns(T::Array[ExtensionRequirement]) } - def flat_versions - case @hsh - when String - [ExtensionRequirement.new(@hsh, [], arch: @arch)] - when Hash - if @hsh.key?("name") - if @hsh.key?("version").nil? - [ExtensionRequirement.new(@hsh["name"], [], arch: @arch)] - else - [ExtensionRequirement.new(@hsh["name"], @hsh["version"], arch: @arch)] - end - else - @hsh[T.must(@hsh.keys.first)].map do |r| - if r.is_a?(String) - ExtensionRequirement.new(r, [], arch: @arch) - else - if r.key?("version").nil? - ExtensionRequirement.new(r["name"], [], arch: @arch) - else - ExtensionRequirement.new(r["name"], r["version"], arch: @arch) - end - end - end - end - end - end - - sig { params(cond: T.any(String, T::Hash[String, T.untyped], T::Array[T.untyped])).returns(T::Boolean) } - def is_simple_single_extension?(cond) - case cond - when String - true - when Hash - # Single extension with name and optional version - cond.key?("name") && cond.size <= 2 && (cond.size == 1 || cond.key?("version")) - else - false - end - end - - sig { params(cond: T.any(String, T::Hash[String, T.untyped], T::Array[T.untyped])).returns(T::Boolean) } - def is_complex_condition_header?(cond) - # Check if this is a complex condition header (allOf, anyOf, oneOf, etc.) - cond.is_a?(Hash) && !cond.key?("name") - end - - sig { params(cond: T.any(String, T::Hash[String, T.untyped], T::Array[T.untyped]), indent: Integer, join: String).returns(String) } - def to_asciidoc(cond = @hsh, indent = 0, join: "\n") - # For simple single extension OR complex condition headers at root level (indent = 0), don't show bullets - use_bullets = !(indent == 0 && (is_simple_single_extension?(cond) || is_complex_condition_header?(cond))) - bullet_prefix = use_bullets ? "#{'*' * indent} " : "" - - case cond - when String - "#{bullet_prefix}#{cond}, version >= #{T.must(@arch.extension(cond)).min_version}" - when Hash - if cond.key?("name") - if cond.key?("version") - "#{bullet_prefix}#{cond['name']}, version #{cond['version']}#{join}" - else - "#{bullet_prefix}#{cond['name']}, version >= #{T.must(@arch.extension(cond['name'])).min_version}#{join}" - end - else - "#{bullet_prefix}#{cond.keys[0]}:#{join}" + to_asciidoc(cond[T.must(cond.keys[0])], indent + 1) - end - when Array - # Arrays represent multiple items, so they need bullets for clarity - # Use indent=1 at root level to ensure bullets are shown - array_indent = indent == 0 ? 1 : indent - cond.map { |e| to_asciidoc(e, array_indent) }.join(join) - else - T.absurd(cond) - end - end - - sig { params(hsh: T.any(String, T::Hash[String, T.untyped])).returns(T::Boolean) } - def is_a_condition?(hsh) - case hsh - when String - true - when Hash - if hsh.key?("name") - return false if hsh.size > 2 - - if hsh.size > 1 - return false unless hsh.key?("version") - - return false unless is_a_version_requirement(hsh["version"]) - end - - elsif hsh.key?("not") - return false unless hsh.size == 1 - - return is_a_condition?(hsh["not"]) - - else - return false unless hsh.size == 1 - - return false unless ["allOf", "anyOf", "oneOf", "if"].include?(hsh.keys[0]) - - hsh[T.must(hsh.keys[0])].each do |element| - return false unless is_a_condition?(element) - end - end - else - T.absurd(hsh) - end - - true - end - private :is_a_condition? - - # @return [ExtensionRequirement] First requirement found, without considering any boolean operators - sig { params(req: T.any(String, T::Hash[String, T.untyped], T::Array[T.untyped])).returns(ExtensionRequirement) } - def first_requirement(req = @hsh) - case req - when String - ExtensionRequirement.new(req, [], arch: @arch) - when Hash - if req.key?("name") - if req["version"].nil? - ExtensionRequirement.new(req["name"], [], arch: @arch) - else - ExtensionRequirement.new(req["name"], req["version"], arch: @arch) - end - else - first_requirement(req[T.must(req.keys[0])]) - end - when Array - first_requirement(req[0]) - else - T.absurd(req) - end - end - - # combine all conds into one using AND - sig { params(conds: T::Array[T.untyped], cfg_arch: ConfiguredArchitecture).void } - def self.all_of(*conds, cfg_arch:) - cond = ExtensionRequirementExpression.new({ - "allOf" => conds - }, cfg_arch) - - ExtensionRequirementExpression.new(cond.minimize, cfg_arch) - end - - # @return [Object] Schema for this expression, with basic logic minimization - sig { override.params(hsh: T.any(String, T::Hash[String, T.untyped])).returns(T.any(String, T::Hash[String, T.untyped])) } - def minimize(hsh = @hsh) - case hsh - when Hash - if hsh.key?("name") - hsh - else - min_ary = key = nil - if hsh.key?("allOf") - min_ary = hsh["allOf"].map { |element| minimize(element) } - key = "allOf" - elsif hsh.key?("anyOf") - min_ary = hsh["anyOf"].map { |element| minimize(element) } - key = "anyOf" - elsif hsh.key?("oneOf") - min_ary = hsh["oneOf"].map { |element| minimize(element) } - key = "oneOf" - elsif hsh.key?("not") - min_ary = hsh.dup - key = "not" - elsif hsh.key?("if") - return hsh - end - min_ary = min_ary.uniq - if min_ary.size == 1 - min_ary.first - else - { key => min_ary } - end - end - else - hsh - end - end - - sig { params(hsh: T.any(String, T::Hash[String, T.untyped])).returns(String) } - def to_rb_helper(hsh) - if hsh.is_a?(Hash) - if hsh.key?("name") - if hsh.key?("version") - if hsh["version"].is_a?(String) - "(yield ExtensionRequirement.new('#{hsh["name"]}', '#{hsh["version"]}', arch: @arch))" - elsif hsh["version"].is_a?(Array) - "(yield ExtensionRequirement.new('#{hsh["name"]}', #{hsh["version"].map { |v| "'#{v}'" }.join(', ')}, arch: @arch))" - else - raise "unexpected" - end - else - "(yield ExtensionRequirement.new('#{hsh["name"]}', [], arch: @arch))" - end - else - key = hsh.keys[0] - - case key - when "allOf" - rb_str = hsh["allOf"].map { |element| to_rb_helper(element) }.join(' && ') - "(#{rb_str})" - when "anyOf" - rb_str = hsh["anyOf"].map { |element| to_rb_helper(element) }.join(' || ') - "(#{rb_str})" - when "oneOf" - rb_str = hsh["oneOf"].map { |element| to_rb_helper(element) }.join(', ') - "([#{rb_str}].count(true) == 1)" - when "not" - rb_str = to_rb_helper(hsh["not"]) - "(!#{rb_str})" - when "if" - cond_rb_str = to_rb_helper(hsh["if"]) - body_rb_str = to_rb_helper(hsh["body"]) - "(#{body_rb_str}) if (#{cond_rb_str})" - else - raise "Unexpected" - # "(yield #{hsh})" - end - end - else - "(yield ExtensionRequirement.new('#{hsh}', [], arch: @arch))" - end - end - - # Given the name of a ruby array +ary_name+ containing the available objects to test, - # return a string that can be eval'd to determine if the objects in +ary_name+ - # meet the Condition - # - # @param ary_name [String] Name of a ruby string in the eval binding - # @return [Boolean] If the condition is met - sig { override.returns(String) } - def to_rb - to_rb_helper(@hsh) - end - - class TYPES < T::Enum - enums do - Term = new - Not = new - And = new - Or = new - If = new - end - end - - # Abstract syntax tree of the logic - class LogicNode - extend T::Sig - - sig { returns(TYPES) } - attr_accessor :type - - sig { params(type: TYPES, children: T::Array[T.any(LogicNode, ExtensionRequirement)], term_idx: T.nilable(Integer)).void } - def initialize(type, children, term_idx: nil) - raise ArgumentError, "Children must be singular" if [TYPES::Term, TYPES::Not].include?(type) && children.size != 1 - raise ArgumentError, "Children must have two elements" if [TYPES::And, TYPES::Or, TYPES::If].include?(type) && children.size != 2 - - if type == TYPES::Term - raise ArgumentError, "Term must be an ExtensionRequirement (found #{children[0]})" unless children[0].is_a?(ExtensionRequirement) - else - raise ArgumentError, "All Children must be LogicNodes" unless children.all? { |child| child.is_a?(LogicNode) } - end - - @type = type - @children = children - - raise ArgumentError, "Need term_idx" if term_idx.nil? && type == TYPES::Term - raise ArgumentError, "term_idx isn't an int" if !term_idx.is_a?(Integer) && type == TYPES::Term - - @term_idx = term_idx - end - - # @return [Array] The terms (leafs) of this tree - sig { returns(T::Array[ExtensionRequirement]) } - def terms - @terms ||= - if @type == TYPES::Term - [@children[0]] - else - @children.map { |child| T.cast(child, LogicNode).terms }.flatten.uniq - end - end - - sig { params(term_values: T::Array[ExtensionVersion]).returns(T::Boolean) } - def eval(term_values) - if @type == TYPES::Term - ext_req = T.cast(@children[0], ExtensionRequirement) - term_value = term_values.find { |tv| tv.name == ext_req.name } - return false if term_value.nil? - - ext_req.satisfied_by?(term_value) - elsif @type == TYPES::If - cond_ext_ret = T.cast(@children[0], LogicNode) - if cond_ext_ret.eval(term_values) - T.cast(@children[1], LogicNode).eval(term_values) - else - false - end - elsif @type == TYPES::Not - !T.cast(@children[0], LogicNode).eval(term_values) - elsif @type == TYPES::And - @children.all? { |child| T.cast(child, LogicNode).eval(term_values) } - elsif @type == TYPES::Or - @children.any? { |child| T.cast(child, LogicNode).eval(term_values) } - end - end - - sig { returns(String) } - def to_s - if @type == TYPES::Term - "(#{@children[0].to_s})" - elsif @type == TYPES::Not - "!#{@children[0]}" - elsif @type == TYPES::And - "(#{@children[0]} ^ #{@children[1]})" - elsif @type == TYPES::Or - "(#{@children[0]} v #{@children[1]})" - elsif @type == TYPES::If - "(#{@children[0]} -> #{@children[1]})" - else - T.absurd(@type) - end - end - end - - # given an extension requirement, convert it to a LogicNode term, and optionally expand it to - # exclude any conflicts and include any implications - # - # @param ext_req [ExtensionRequirement] An extension requirement - # @param expand [Boolean] Whether or not to expand the node to include conflicts / implications - # @return [LogicNode] Logic tree for ext_req - sig { params(ext_req: ExtensionRequirement, term_idx: T::Array[Integer], expand: T::Boolean).returns(LogicNode) } - def ext_req_to_logic_node(ext_req, term_idx, expand: true) - n = LogicNode.new(TYPES::Term, [ext_req], term_idx: term_idx[0]) - term_idx[0] = T.must(term_idx[0]) + 1 - if expand - c = ext_req.extension.conflicts_condition - unless c.empty? - c = LogicNode.new(TYPES::Not, [to_logic_tree(ext_req.extension.data["conflicts"], term_idx:)]) - n = LogicNode.new(TYPES::And, [c, n]) - end - - ext_req.satisfying_versions.each do |ext_ver| - ext_ver.implied_by_with_condition.each do |implied_by| - implying_ext_ver = implied_by[:ext_ver] - implying_cond = implied_by[:cond] - implying_ext_req = ExtensionRequirement.new(implying_ext_ver.name, "= #{implying_ext_ver.version_str}", arch: @arch) - if implying_cond.empty? - # convert to an ext_req - n = LogicNode.new(TYPES::Or, [n, ext_req_to_logic_node(implying_ext_req, term_idx)]) - else - # conditional - # convert to an ext_req - cond_node = implying_cond.to_logic_tree(term_idx:, expand:) - cond = LogicNode.new(TYPES::If, [cond_node, ext_req_to_logic_node(implying_ext_req, term_idx)]) - n = LogicNode.new(TYPES::Or, [n, cond]) - end - end - end - end - - n - end - - # convert the YAML representation of an Extension Requirement Expression into - # a tree of LogicNodes. - # Also expands any Extension Requirement to include its conflicts / implications - sig { params(hsh: T.any(String, T::Hash[String, T.untyped]), term_idx: T::Array[Integer], expand: T::Boolean).returns(LogicNode) } - def to_logic_tree(hsh = @hsh, term_idx: [0], expand: true) - root = T.let(nil, T.nilable(LogicNode)) - - if hsh.is_a?(Hash) - if hsh.key?("name") - if hsh.key?("version") - if hsh["version"].is_a?(String) - ext_req_to_logic_node(ExtensionRequirement.new(hsh["name"], hsh["version"], arch: @arch), term_idx, expand:) - elsif hsh["version"].is_a?(Array) - ext_req_to_logic_node(ExtensionRequirement.new(hsh["name"], hsh["version"].map { |v| "'#{v}'" }.join(', '), arch: @arch), term_idx, expand:) - else - raise "unexpected" - end - else - ext_req_to_logic_node(ExtensionRequirement.new(hsh["name"], [], arch: @arch), term_idx, expand:) - end - else - key = hsh.keys[0] - - case key - when "allOf" - raise "unexpected" unless hsh["allOf"].is_a?(Array) && hsh["allOf"].size > 1 - - root = LogicNode.new(TYPES::And, [to_logic_tree(hsh["allOf"][0], term_idx:, expand:), to_logic_tree(hsh["allOf"][1], term_idx:, expand:)]) - (2...hsh["allOf"].size).each do |i| - root = LogicNode.new(TYPES::And, [root, to_logic_tree(hsh["allOf"][i], term_idx:, expand:)]) - end - root - when "anyOf" - raise "unexpected: #{hsh}" unless hsh["anyOf"].is_a?(Array) && hsh["anyOf"].size > 1 - - root = LogicNode.new(TYPES::Or, [to_logic_tree(hsh["anyOf"][0], term_idx:, expand:), to_logic_tree(hsh["anyOf"][1], term_idx:, expand:)]) - (2...hsh["anyOf"].size).each do |i| - root = LogicNode.new(TYPES::Or, [root, to_logic_tree(hsh["anyOf"][i], term_idx:, expand:)]) - end - root - when "if" - raise "unexpected" unless hsh.keys.size == 2 && hsh.keys[1] == "then" - - cond = to_logic_tree(hsh["if"], term_idx:, expand:) - body = to_logic_tree(hsh["then"], term_idx:, expand:) - LogicNode.new(TYPES::If, [cond, body]) - when "oneOf" - # expand oneOf into AND - roots = T.let([], T::Array[LogicNode]) - - if hsh["oneOf"].size < 2 - to_logic_tree(hsh["oneOf"][0], term_idx:, expand:) - else - hsh["oneOf"].size.times do |k| - root = - if k.zero? - LogicNode.new(TYPES::And, [to_logic_tree(hsh["oneOf"][0], term_idx:, expand:), LogicNode.new(TYPES::Not, [to_logic_tree(hsh["oneOf"][1], term_idx:, expand:)])]) - elsif k == 1 - LogicNode.new(TYPES::And, [LogicNode.new(TYPES::Not, [to_logic_tree(hsh["oneOf"][0], term_idx:, expand:)]), to_logic_tree(hsh["oneOf"][1], term_idx:, expand:)]) - else - LogicNode.new(TYPES::And, [LogicNode.new(TYPES::Not, [to_logic_tree(hsh["oneOf"][0], term_idx:, expand:)]), LogicNode.new(TYPES::Not, [to_logic_tree(hsh["oneOf"][1], term_idx:, expand:)])]) - end - (2...hsh["oneOf"].size).each do |i| - root = - if k == i - LogicNode.new(TYPES::And, [root, to_logic_tree(hsh["oneOf"][i], term_idx:, expand:)]) - else - LogicNode.new(TYPES::And, [root, LogicNode.new(TYPES::Not, [to_logic_tree(hsh["oneOf"][i], term_idx:, expand:)])]) - end - end - roots << root - end - - root = LogicNode.new(TYPES::Or, [T.must(roots[0]), T.must(roots[1])]) - (2...roots.size).each do |i| - root = LogicNode.new(TYPES::Or, [root, T.must(roots[i])]) - end - root - end - when "not" - LogicNode.new(TYPES::Not, [to_logic_tree(hsh["not"], term_idx:, expand:)]) - else - raise "Unexpected" - end - end - else - ext_req_to_logic_node(ExtensionRequirement.new(hsh, [], arch: @arch), term_idx, expand:) - end - end - - sig { params(extension_versions: T::Array[T::Array[ExtensionVersion]]).returns(T::Array[T::Array[ExtensionVersion]])} - def combos_for(extension_versions) - ncombos = extension_versions.reduce(1) { |prod, vers| prod * (vers.size + 1) } - combos = T.let([], T::Array[T::Array[ExtensionVersion]]) - ncombos.times do |i| - combos << [] - extension_versions.size.times do |j| - m = (T.must(extension_versions[j]).size + 1) - d = j.zero? ? 1 : T.must(extension_versions[j..0]).reduce(1) { |prod, vers| prod * (vers.size + 1) } - - if (i / d) % m < T.must(extension_versions[j]).size - T.must(combos.last) << T.must(T.must(extension_versions[j])[(i / d) % m]) - end - end - end - # get rid of any combos that can't happen because of extension conflicts - combos.reject do |combo| - combo.any? { |ext_ver1| (combo - [ext_ver1]).any? { |ext_ver2| ext_ver1.conflicts_condition.satisfied_by? { |ext_req| ext_req.satisfied_by?(ext_ver2) } } } - end - end - - # @param other [ExtensionRequirementExpression] Another condition - # @return [Boolean] if it's possible for both to be simultaneously true - sig { override.params(other: ExtensionRequirementExpression).returns(T::Boolean) } - def compatible?(other) - tree1 = to_logic_tree(@hsh) - tree2 = to_logic_tree(other.to_h) - - extensions = (tree1.terms + tree2.terms).map(&:extension).uniq - - extension_versions = extensions.map(&:versions) - - combos = combos_for(extension_versions) - combos.each do |combo| - return true if tree1.eval(combo) && tree2.eval(combo) - end - - # there is no combination in which both self and other can be true - false - end - - # @example See if a string satisfies - # cond = { "anyOf" => ["A", "B", "C"] } - # string = "A" - # cond.satisfied_by? { |endpoint| endpoint == string } #=> true - # string = "D" - # cond.satisfied_by? { |endpoint| endpoint == string } #=> false - # - # @example See if an array satisfies - # cond = { "allOf" => ["A", "B", "C"] } - # ary = ["A", "B", "C", "D"] - # cond.satisfied_by? { |endpoint| ary.include?(endpoint) } #=> true - # ary = ["A", "B"] - # cond.satisfied_by? { |endpoint| ary.include?(endpoint) } #=> false - # - # @yieldparam obj [Object] An endpoint in the condition - # @yieldreturn [Boolean] Whether or not +obj+ is what you are looking for - # @return [Boolean] Whether or not the entire condition is satisfied - sig { override.params(block: T.proc.params(arg0: ExtensionRequirement).returns(T::Boolean)).returns(T::Boolean) } - def satisfied_by?(&block) - raise ArgumentError, "Expecting one argument to block" unless block.arity == 1 - - eval to_rb - end - - sig { override.params(cfg_arch: ConfiguredArchitecture).returns(T::Boolean) } - def could_be_true?(cfg_arch) - r = satisfied_by_cfg_arch?(cfg_arch) - r == SatisfiedResult::Yes || r == SatisfiedResult::Maybe - end - - sig { override.params(cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) } - def satisfied_by_cfg_arch?(cfg_arch) - @satisfied_by_cfg_arch[cfg_arch.name] ||= - if cfg_arch.fully_configured? - if satisfied_by? { |ext_req| cfg_arch.transitive_implemented_extension_versions.any? { |ev| ext_req.satisfied_by?(ev) } } - SatisfiedResult::Yes - else - SatisfiedResult::No - end - elsif cfg_arch.partially_configured? - if satisfied_by? { |cond_ext_req| cfg_arch.mandatory_extension_reqs.any? { |cfg_ext_req| cond_ext_req.satisfied_by?(cfg_ext_req) } } - SatisfiedResult::Yes - elsif satisfied_by? { |cond_ext_req| cfg_arch.possible_extension_versions.any? { |cfg_ext_ver| cond_ext_req.satisfied_by?(cfg_ext_ver) } } - SatisfiedResult::Maybe - else - SatisfiedResult::No - end - else - # unconfig. everything flies - SatisfiedResult::Yes - end - end - - # returns true if the list of extension requirements *can* satisfy the condition. - # - # note that it is possible that the condition might not be satisfied for all possible - # extension versions implied by ext_req_list. For example, this condition: - # - # { "name": "A", "version": ">= 1.2" } - # - # Will be "satisfied by": - # - # { "name": "A", "version": ">= 1.1" } - # - # because A version 1.2 fits both requirements - # - sig { params(ext_req_list: T::Array[ExtensionRequirement]).returns(T::Boolean) } - def could_be_satisfied_by_ext_reqs?(ext_req_list) - satisfied_by? do |cond_ext_req| - ext_req_list.any? do |ext_req| - ext_req.satisfying_versions.any? do |ext_ver| - cond_ext_req.satisfied_by?(ext_ver) - end - end - end - end - - # yes if: - # - ext_ver affects this condition - # - it is is possible for this condition to be true is ext_ver is implemented - sig { params(ext_ver: ExtensionVersion).returns(T::Boolean) } - def possibly_satisfied_by?(ext_ver) - logic_tree = to_logic_tree - - return false unless logic_tree.terms.any? { |ext_req| ext_req.satisfying_versions.include?(ext_ver) } - - # ok, so ext_ver affects this condition - # is it possible to be true with ext_ver implemented? - extensions = logic_tree.terms.map(&:extension).uniq - - extension_versions = extensions.map(&:versions) - - combos = combos_for(extension_versions) - combos.any? do |combo| - # replace ext_ver, since it doesn't change - logic_tree.eval(combo.map { |ev| ev.name == ext_ver.name ? ext_ver : ev }) - end - end -end - -class AlwaysTrueExtensionRequirementExpression - extend T::Sig - include AbstractRequirement - - sig { override.returns(String) } - def to_rb = "true" - - sig { override.returns(T::Boolean) } - def satisfied_by? = true - - sig { override.returns(T::Boolean) } - def empty? = true - - sig { override.params(_other: T.untyped).returns(T::Boolean) } - def compatible?(_other) = true - - sig { override.returns(T.any(String, T::Hash[String, T.untyped])) } - def to_h = {} - - sig { override.params(_hsh: T.any(String, T::Hash[String, T.untyped])).returns(T.any(String, T::Hash[String, T.untyped])) } - def minimize(_hsh) = {} - - sig { override.params(_cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) } - def satisfied_by_cfg_arch?(_cfg_arch) = SatisfiedResult::Yes - - sig { override.params(_cfg_arch: ConfiguredArchitecture).returns(T::Boolean) } - def could_be_true?(_cfg_arch) = true -end - -class AlwaysFalseExtensionRequirementExpression - extend T::Sig - include AbstractRequirement - - sig { override.returns(String) } - def to_rb = "false" - - sig { override.returns(T::Boolean) } - def satisfied_by? = false - - sig { override.returns(T::Boolean) } - def empty? = true - - sig { override.params(_other: T.untyped).returns(T::Boolean) } - def compatible?(_other) = false - - sig { override.returns(T.any(String, T::Hash[String, T.untyped])) } - def to_h = {} - - sig { override.params(_hsh: T.any(String, T::Hash[String, T.untyped])).returns(T.any(String, T::Hash[String, T.untyped])) } - def minimize(_hsh) = {} - - sig { override.params(_cfg_arch: ConfiguredArchitecture).returns(SatisfiedResult) } - def satisfied_by_cfg_arch?(_cfg_arch) = SatisfiedResult::No - - sig { override.params(_cfg_arch: ConfiguredArchitecture).returns(T::Boolean) } - def could_be_true?(_cfg_arch) = false -end - -# represents an `implies:` entry for an extension -# which is a list of extension versions, zero or more of which -# may be conditional (via an ExtensionRequirementExpression) -class ConditionalExtensionVersionList - extend T::Sig - - class ConditionalExtensionVersion < T::Struct - prop :ext_ver, ExtensionVersion - prop :cond, AbstractRequirement - end - - YamlExtensionWithVersion = T.type_alias { T::Hash[String, String] } - sig { params(data: T.any(NilClass, T::Array[YamlExtensionWithVersion], T::Hash[String, T.any(String, T::Hash[String, String])]), cfg_arch: ConfiguredArchitecture).void } - def initialize(data, cfg_arch) - @data = data - @cfg_arch = cfg_arch - end - - sig { returns(T::Boolean) } - def empty? = @data.nil? || @data.empty? - - sig { returns(Integer) } - def size = empty? ? 0 : eval.size - - sig { params(block: T.proc.params(arg0: ConditionalExtensionVersion).void).void } - def each(&block) - eval.each(&block) - end - - sig { params(block: T.proc.params(arg0: ConditionalExtensionVersion).returns(T.untyped)).returns(T::Array[T.untyped]) } - def map(&block) - eval.map(&block) - end - - # Returns array of ExtensionVersions, along with a condition under which it is in the list - # - # @example - # list.eval #=> [{ :ext_ver => ExtensionVersion.new(:A, "2.1.0"), :cond => ExtensionRequirementExpression.new(...) }] - # - # @return [Array ExtensionVersion, ExtensionRequirementExpression}>] - # The extension versions in the list after evaluation, and the condition under which it applies - sig { returns(T::Array[ConditionalExtensionVersion]) } - def eval - result = [] - data = T.let({}, T::Hash[String, String]) - if @data.is_a?(Hash) - data = T.cast(@data, T::Hash[String, String]) - result << ConditionalExtensionVersion.new(ext_ver: entry_to_ext_ver(data), cond: AlwaysTrueExtensionRequirementExpression.new) - else - T.must(@data).each do |elem| - if elem.keys[0] == "if" - cond_expr = ExtensionRequirementExpression.new(T.must(elem["if"]), @cfg_arch) - data = T.cast(elem["then"], T::Hash[String, String]) - result << ConditionalExtensionVersion.new(ext_ver: entry_to_ext_ver(data), cond: cond_expr) - else - result << ConditionalExtensionVersion.new(ext_ver: entry_to_ext_ver(elem), cond: AlwaysTrueExtensionRequirementExpression.new) - end - end - end - result - end - alias to_a eval - - sig { params(entry: T::Hash[String, String]).returns(ExtensionVersion) } - def entry_to_ext_ver(entry) - ExtensionVersion.new(T.must(entry["name"]), T.must(entry["version"]), @cfg_arch, fail_if_version_does_not_exist: true) - end - private :entry_to_ext_ver -end - -end diff --git a/tools/ruby-gems/udb/lib/udb/resolver.rb b/tools/ruby-gems/udb/lib/udb/resolver.rb index ea6596d2d6..180fa717ff 100644 --- a/tools/ruby-gems/udb/lib/udb/resolver.rb +++ b/tools/ruby-gems/udb/lib/udb/resolver.rb @@ -5,6 +5,7 @@ # frozen_string_literal: true require "bundler" +require "concurrent/hash" require "sorbet-runtime" require_relative "cfg_arch" @@ -68,14 +69,15 @@ class Resolver # return type of #cfg_info class ConfigInfo < T::Struct - const :name, String - const :path, Pathname + prop :name, String + prop :path, Pathname prop :overlay_path, T.nilable(Pathname) const :unresolved_yaml, T::Hash[String, T.untyped] prop :resolved_yaml, T.nilable(T::Hash[String, T.untyped]) const :spec_path, Pathname const :merged_spec_path, Pathname const :resolved_spec_path, Pathname + const :resolver, Resolver end # path to find database schema files @@ -130,7 +132,8 @@ def resolved_spec_path(cfg_path_or_name) gen_path_override: T.nilable(Pathname), std_path_override: T.nilable(Pathname), custom_path_override: T.nilable(Pathname), - python_path_override: T.nilable(Pathname) + python_path_override: T.nilable(Pathname), + quiet: T::Boolean ).void } def initialize( @@ -140,7 +143,8 @@ def initialize( gen_path_override: nil, std_path_override: nil, custom_path_override: nil, - python_path_override: nil + python_path_override: nil, + quiet: false ) @repo_root = repo_root @schemas_path = schemas_path_override || (@repo_root / "spec" / "schemas") @@ -149,9 +153,11 @@ def initialize( @std_path = std_path_override || (@repo_root / "spec" / "std" / "isa") @custom_path = custom_path_override || (@repo_root / "spec" / "custom" / "isa") @python_path = python_path_override || Pathname.new("/opt") / "venv" / "bin" / "python3" + @quiet = quiet + @mutex = Thread::Mutex.new # cache of config names - @cfg_info = T.let({}, T::Hash[T.any(String, Pathname), ConfigInfo]) + @cfg_info = T.let(Concurrent::Hash.new, T::Hash[T.any(String, Pathname), ConfigInfo]) FileUtils.mkdir_p @gen_path end @@ -169,82 +175,94 @@ def any_newer?(target, deps) # run command in the shell. raise if exit is not zero sig { params(cmd: T::Array[String]).void } def run(cmd) - puts cmd.join(" ") - T.unsafe(self).send(:system, *cmd) - raise unless $?.success? + puts cmd.join(" ") unless @quiet + if @quiet + T.unsafe(self).send(:system, *cmd, out: "/dev/null", err: "/dev/null") + else + T.unsafe(self).send(:system, *cmd) + end + raise "data resolution error while executing '#{cmd.join(' ')}'" unless $?.success? end # resolve config file and write it to gen_path # returns the config data sig { params(config_path: Pathname).returns(T::Hash[String, T.untyped]) } def resolve_config(config_path) - config_info = cfg_info(config_path) - return T.must(config_info.resolved_yaml) unless config_info.resolved_yaml.nil? + @mutex.synchronize do + config_info = cfg_info(config_path) + return T.must(config_info.resolved_yaml) unless config_info.resolved_yaml.nil? - resolved_config_yaml = T.let({}, T.nilable(T::Hash[String, T.untyped])) - # write the config with arch_overlay expanded - if any_newer?(gen_path / "cfgs" / "#{config_info.name}.yaml", [config_path]) - # is there anything to do here? validate? + resolved_config_yaml = T.let({}, T.nilable(T::Hash[String, T.untyped])) + # write the config with arch_overlay expanded + if any_newer?(gen_path / "cfgs" / "#{config_info.name}.yaml", [config_path]) + # is there anything to do here? validate? - resolved_config_yaml = config_info.unresolved_yaml.dup - resolved_config_yaml["$source"] = config_path.realpath.to_s + resolved_config_yaml = config_info.unresolved_yaml.dup + resolved_config_yaml["$source"] = config_path.realpath.to_s - FileUtils.mkdir_p gen_path / "cfgs" - File.write(gen_path / "cfgs" / "#{config_info.name}.yaml", YAML.dump(resolved_config_yaml)) - else - resolved_config_yaml = YAML.load_file(gen_path / "cfgs" / "#{config_info.name}.yaml") - end + FileUtils.mkdir_p gen_path / "cfgs" + File.write(gen_path / "cfgs" / "#{config_info.name}.yaml", YAML.dump(resolved_config_yaml)) + else + resolved_config_yaml = YAML.load_file(gen_path / "cfgs" / "#{config_info.name}.yaml") + end - config_info.resolved_yaml = resolved_config_yaml + config_info.resolved_yaml = resolved_config_yaml + end end sig { params(config_yaml: T::Hash[String, T.untyped]).void } def merge_arch(config_yaml) - config_name = config_yaml["name"] + @mutex.synchronize do + config_name = config_yaml["name"] - deps = Dir[std_path / "**" / "*.yaml"].map { |p| Pathname.new(p) } - deps += Dir[custom_path / config_yaml["arch_overlay"] / "**" / "*.yaml"].map { |p| Pathname.new(p) } unless config_yaml["arch_overlay"].nil? + deps = Dir[std_path / "**" / "*.yaml"].map { |p| Pathname.new(p) } + deps += Dir[custom_path / config_yaml["arch_overlay"] / "**" / "*.yaml"].map { |p| Pathname.new(p) } unless config_yaml["arch_overlay"].nil? - overlay_path = - if config_yaml["arch_overlay"].nil? - nil - else - if config_yaml.fetch("arch_overlay")[0] == "/" - Pathname.new(config_yaml.fetch("arch_overlay")) + overlay_path = + if config_yaml["arch_overlay"].nil? + nil else - custom_path / config_yaml.fetch("arch_overlay") + if config_yaml.fetch("arch_overlay")[0] == "/" + Pathname.new(config_yaml.fetch("arch_overlay")) + else + custom_path / config_yaml.fetch("arch_overlay") + end end + raise "custom directory '#{overlay_path}' does not exist" if !overlay_path.nil? && !overlay_path.directory? + + if any_newer?(merged_spec_path(config_name) / ".stamp", deps) + run [ + python_path.to_s, + "#{Udb.gem_path}/python/yaml_resolver.py", + "merge", + std_path.to_s, + overlay_path.nil? ? "/does/not/exist" : overlay_path.to_s, + merged_spec_path(config_name).to_s + ] + FileUtils.touch(merged_spec_path(config_name) / ".stamp") end - raise "custom directory '#{overlay_path}' does not exist" if !overlay_path.nil? && !overlay_path.directory? - - if any_newer?(merged_spec_path(config_name) / ".stamp", deps) - run [ - python_path.to_s, - "#{Udb.gem_path}/python/yaml_resolver.py", - "merge", - std_path.to_s, - overlay_path.nil? ? "/does/not/exist" : overlay_path.to_s, - merged_spec_path(config_name).to_s - ] - FileUtils.touch(merged_spec_path(config_name) / ".stamp") end end sig { params(config_yaml: T::Hash[String, T.untyped]).void } def resolve_arch(config_yaml) merge_arch(config_yaml) - config_name = config_yaml["name"] - - deps = Dir[merged_spec_path(config_name) / "**" / "*.yaml"].map { |p| Pathname.new(p) } - if any_newer?(resolved_spec_path(config_name) / ".stamp", deps) - run [ - python_path.to_s, - "#{Udb.gem_path}/python/yaml_resolver.py", - "resolve", - merged_spec_path(config_name).to_s, - resolved_spec_path(config_name).to_s - ] - FileUtils.touch(resolved_spec_path(config_name) / ".stamp") + @mutex.synchronize do + config_name = config_yaml["name"] + + deps = Dir[merged_spec_path(config_name) / "**" / "*.yaml"].map { |p| Pathname.new(p) } + if any_newer?(resolved_spec_path(config_name) / ".stamp", deps) + run [ + python_path.to_s, + "#{Udb.gem_path}/python/yaml_resolver.py", + "resolve", + merged_spec_path(config_name).to_s, + resolved_spec_path(config_name).to_s + ] + FileUtils.touch(resolved_spec_path(config_name) / ".stamp") + end + + FileUtils.cp_r(std_path / "isa", gen_path / "resolved_spec" / config_yaml["name"]) end end @@ -253,42 +271,52 @@ def cfg_info(config_path_or_name) return @cfg_info.fetch(config_path_or_name) if config_path_or_name.is_a?(String) && @cfg_info.key?(config_path_or_name) return @cfg_info.fetch(config_path_or_name.realpath) if config_path_or_name.is_a?(Pathname) && @cfg_info.key?(config_path_or_name.realpath) - config_path = - case config_path_or_name - when Pathname - raise "Path does not exist: #{config_path_or_name}" unless config_path_or_name.file? + @mutex.synchronize do + return @cfg_info.fetch(config_path_or_name) if config_path_or_name.is_a?(String) && @cfg_info.key?(config_path_or_name) + return @cfg_info.fetch(config_path_or_name.realpath) if config_path_or_name.is_a?(Pathname) && @cfg_info.key?(config_path_or_name.realpath) - config_path_or_name.realpath - when String - (@repo_root / "cfgs" / "#{config_path_or_name}.yaml").realpath - else - T.absurd(config_path_or_name) - end + config_path = + case config_path_or_name + when Pathname + raise "Path does not exist: #{config_path_or_name}" unless config_path_or_name.file? - config_yaml = YAML.safe_load_file(config_path) + config_path_or_name.realpath + when String + (@cfgs_path / "#{config_path_or_name}.yaml").realpath + else + T.absurd(config_path_or_name) + end - overlay_path = - if config_yaml["arch_overlay"].nil? - nil - elsif Pathname.new(config_yaml["arch_overlay"]).exist? - Pathname.new(config_yaml["arch_overlay"]) - elsif (@custom_path / config_yaml["arch_overlay"]).exist? - @custom_path / config_yaml["arch_overlay"] - else - raise "Cannot resolve path to overlay (#{config_yaml["arch_overlay"]})" + config_yaml = YAML.safe_load_file(config_path) + if config_yaml.nil? + puts File.read(config_path) + raise "Could not load config at #{config_path}" end - info = ConfigInfo.new( - name: config_yaml["name"], - path: config_path, - overlay_path:, - unresolved_yaml: config_yaml, - spec_path: std_path, - merged_spec_path: @gen_path / "spec" / config_yaml["name"], - resolved_spec_path: @gen_path / "resolved_spec" / config_yaml["name"] - ) - @cfg_info[config_path] = info - @cfg_info[info.name] = info + overlay_path = + if config_yaml["arch_overlay"].nil? + nil + elsif Pathname.new(config_yaml["arch_overlay"]).exist? + Pathname.new(config_yaml["arch_overlay"]) + elsif (@custom_path / config_yaml["arch_overlay"]).exist? + @custom_path / config_yaml["arch_overlay"] + else + raise "Cannot resolve path to overlay (#{config_yaml["arch_overlay"]})" + end + + info = ConfigInfo.new( + name: config_yaml["name"], + path: config_path, + overlay_path:, + unresolved_yaml: config_yaml, + spec_path: std_path, + merged_spec_path: @gen_path / "spec" / config_yaml["name"], + resolved_spec_path: @gen_path / "resolved_spec" / config_yaml["name"], + resolver: self + ) + @cfg_info[config_path] = info + @cfg_info[info.name] = info + end end # resolve the specification for a config, and return a ConfiguredArchitecture @@ -296,16 +324,20 @@ def cfg_info(config_path_or_name) def cfg_arch_for(config_path_or_name) config_info = cfg_info(config_path_or_name) - @cfg_archs ||= {} + @cfg_archs ||= Concurrent::Hash.new return @cfg_archs[config_info.path] if @cfg_archs.key?(config_info.path) resolve_config(config_info.path) resolve_arch(config_info.unresolved_yaml) - @cfg_archs[config_info.path] = Udb::ConfiguredArchitecture.new( - config_info.name, - Udb::AbstractConfig.create(gen_path / "cfgs" / "#{config_info.name}.yaml", config_info) - ) + @mutex.synchronize do + return @cfg_archs[config_info.path] if @cfg_archs.key?(config_info.path) + + @cfg_archs[config_info.path] = Udb::ConfiguredArchitecture.new( + config_info.name, + Udb::AbstractConfig.create(gen_path / "cfgs" / "#{config_info.name}.yaml", config_info) + ) + end end end end diff --git a/tools/ruby-gems/udb/lib/udb/schema.rb b/tools/ruby-gems/udb/lib/udb/schema.rb index fc5d6a2d5c..c5e30ddc3a 100644 --- a/tools/ruby-gems/udb/lib/udb/schema.rb +++ b/tools/ruby-gems/udb/lib/udb/schema.rb @@ -1,36 +1,48 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# typed: false +# typed: true # frozen_string_literal: true require "idlc/type" require "idlc/interfaces" +require_relative "resolver" + # represents a JSON Schema # # Used when an object in the database specifies a constraint using JSON schema # For example, extension parameters module Udb + class Resolver; end class Schema extend T::Sig include Idl::Schema - def initialize(schema_hash) - raise ArgumentError, "Expecting hash" unless schema_hash.is_a?(Hash) + @@ref_resolvers = T.let({}, T::Hash[Resolver, T.untyped]) - @schema_hash = schema_hash + sig { params(schema_hash: T::Hash[String, T.untyped]).void } + def initialize(schema_hash) + @schema_hash = schema_hash end - sig { params(rb_value: T.untyped).returns(T::Boolean) } - def validate(rb_value) - schemer = JSONSchemer.schema(@schema_hash) + sig { params(rb_value: T.untyped, udb_resolver: Resolver).returns(T::Boolean) } + def validate(rb_value, udb_resolver:) + @@ref_resolvers[udb_resolver] ||= TopLevelDatabaseObject.create_json_schemer_resolver(udb_resolver) + schemer = JSONSchemer.schema( + @schema_hash, + regexp_resolver: "ecma", + ref_resolver: @@ref_resolvers[udb_resolver], + insert_property_defaults: true + ) schemer.valid?(rb_value) end # @return [Hash] Hash representation of the JSON Schema + sig { returns(T::Hash[String, T.untyped]) } def to_h = @schema_hash + sig { params(rb_type: Object).returns(String) } def rb_obj_to_jsonschema_type(rb_type) case rb_type when String @@ -49,27 +61,66 @@ def rb_obj_to_jsonschema_type(rb_type) end private :rb_obj_to_jsonschema_type - # @return [String] Human-readable type of the schema (e.g., array, string, integer) - def type_pretty - if @schema_hash.key?("const") - rb_obj_to_jsonschema_type(@schema_hash["const"]) - elsif @schema_hash.key?("enum") && !@schema_hash["enum"].empty? && @schema_hash["enum"].all? { |elem| elem.class == @schema_hash["enum"][0].class } - rb_obj_to_jsonschema_type(@schema_hash["enum"][0]) + # @return Human-readable type of the schema (e.g., array, string, integer) + sig { params(hsh: T::Hash[String, T.untyped]).returns(String) } + def type_pretty_helper(hsh) + if hsh.key?("const") + rb_obj_to_jsonschema_type(hsh["const"]) + elsif hsh.key?("enum") && !hsh["enum"].empty? && hsh["enum"].all? { |elem| elem.class == hsh["enum"][0].class } + rb_obj_to_jsonschema_type(hsh["enum"][0]) + elsif hsh.key?("$ref") + if hsh["$ref"].split("/").last == "uint32" + "integer" + elsif hsh["$ref"].split("/").last == "uint64" + "integer" + else + raise "unhandled type ref: #{hsh["$ref"]}" + end + elsif hsh.key?("allOf") + type_pretty_helper(hsh["allOf"][0]) else - raise "Missing type information for '#{@schema_hash}'" unless @schema_hash.key?("type") - @schema_hash["type"] + raise "Missing type information for '#{hsh}'" unless hsh.key?("type") + hsh["type"] end end + private :type_pretty_helper + + sig { returns(String) } + def type_pretty + type_pretty_helper(@schema_hash) + end - # @return [String] A human-readable description of the schema + # @return A human-readable description of the schema + sig { params(schema_hash: T::Hash[String, T.untyped]).returns(String) } def to_pretty_s(schema_hash = @schema_hash) - raise ArgumentError, "Expecting hash" unless schema_hash.is_a?(Hash) raise ArgumentError, "Expecting non-empty hash" if schema_hash.empty? if schema_hash.key?("const") large2hex(schema_hash["const"]) elsif schema_hash.key?("enum") "[#{schema_hash["enum"].join(', ')}]" + elsif schema_hash.key?("$ref") + if schema_hash["$ref"].split("/").last == "uint32" + "32-bit integer" + elsif schema_hash["$ref"].split("/").last == "uint64" + "64-bit integer" + else + raise "unhandled type ref: #{hsh["$ref"]}" + end + elsif schema_hash.key?("not") + if schema_hash["not"].key?("const") + "≠ #{large2hex(schema_hash["not"]["const"])}" + elsif schema_hash["not"].key?("anyOf") + if schema_hash["not"]["anyOf"].all? { |h| h.key?("const") } + "≠ #{schema_hash["not"]["anyOf"].map { |h| large2hex(h["const"]) }.join(" or ")}" + else + raise "unhandled exclusion: #{schema_hash}" + end + else + raise "unhandled exclusion: #{schema_hash}" + end + elsif schema_hash.key?("allOf") + schema_hash["allOf"].map { |hsh| to_pretty_s(hsh) }.join(", ") elsif schema_hash.key?("type") case schema_hash["type"] when "integer" @@ -104,11 +155,11 @@ def to_pretty_s(schema_hash = @schema_hash) min_items = schema_hash["minItems"] max_items = schema_hash["maxItems"] size_str = if min_items && max_items - if min_items == max_items - "#{min_items}-element " - else - "#{min_items}-element to #{max_items}-element " - end + if min_items == max_items + "#{min_items}-element " + else + "#{min_items}-element to #{max_items}-element " + end elsif min_items "at least #{min_items}-element " elsif max_items @@ -118,13 +169,13 @@ def to_pretty_s(schema_hash = @schema_hash) end array_str = if items.nil? - size_str + "array" + size_str + "array" else if items.is_a?(Hash) "#{size_str}array of #{to_pretty_s(items)}" elsif items.is_a?(Array) str = size_str + "array where: +\n" - items.each_with_index do |item,index| + items.each_with_index do |item, index| str = str + "  [#{index}] is #{to_pretty_s(item)} +\n" end additional_items = schema_hash["additionalItems"] @@ -152,6 +203,7 @@ def to_pretty_s(schema_hash = @schema_hash) end # Convert large integers to hex str. + sig { params(value: T.nilable(T.any(Numeric, T::Boolean, String))).returns(String) } def large2hex(value) if value.nil? "" @@ -162,22 +214,24 @@ def large2hex(value) end end + sig { params(other_schema: T.any(Schema, T::Hash[String, T.untyped])).returns(Schema) } def merge(other_schema) - raise ArgumentError, "Expecting Schema" unless (other_schema.is_a?(Schema) || other_schema.is_a?(Hash)) - other_hash = other_schema.is_a?(Schema) ? other_schema.instance_variable_get(:@schema_hash) : other_schema Schema.new(@schema_hash.merge(other_hash)) end + sig { returns(T::Boolean) } def empty? @schema_hash.empty? end + sig { returns(T::Boolean) } def single_value? - @schema_hash.key?("const") + @schema_hash.key?("const") end + sig { returns(Object) } def value raise "Schema is not a single value" unless single_value? @@ -232,19 +286,20 @@ def min_val def is_power_of_two?(num) return false if num < 1 - return (num & (num-1)) == 0 + return (num & (num - 1)) == 0 end # If min to max range represents an unsigned number of bits, return the number of bits. # Otherwise return 0 def num_bits(min, max) - return 0 unless min == 0 - is_power_of_two?(max+1) ? max.bit_length : 0 + return 0 unless min == 0 + is_power_of_two?(max + 1) ? max.bit_length : 0 end # @return [Idl::Type] THe IDL-equivalent type for this schema object + sig { override.returns(Idl::Type) } def to_idl_type - Idl::Type.from_json_schema(@schema_hash) + T.must(Idl::Type.from_json_schema(@schema_hash)) end end end diff --git a/tools/ruby-gems/udb/lib/udb/version_spec.rb b/tools/ruby-gems/udb/lib/udb/version_spec.rb index 5c499cea55..c36ed37b61 100644 --- a/tools/ruby-gems/udb/lib/udb/version_spec.rb +++ b/tools/ruby-gems/udb/lib/udb/version_spec.rb @@ -32,107 +32,128 @@ module Udb # - 2.2 is *not* compatible with 2.0 # - 2.1 is compatible with 2.0 # -class VersionSpec - extend T::Sig - - include Comparable - - # MAJOR[.MINOR[.PATCH[-pre]]] - VERSION_REGEX = /([0-9]+)(?:\.([0-9]+)(?:\.([0-9]+)(?:-(pre))?)?)?/ - - # @return [Integer] Major version number - attr_reader :major - - # @return [Integer] Minor version number - attr_reader :minor - - # @return [Integer] Patch version number - attr_reader :patch - - # @return [Boolean] Whether or not this is a pre-release - attr_reader :pre - - sig { params(version_str: String).void } - def initialize(version_str) - if version_str =~ /^\s*#{VERSION_REGEX}\s*$/ - m = T.must(::Regexp.last_match) - @major = m[1].to_i - @minor_given = !m[2].nil? - @minor = @minor_given ? m[2].to_i : 0 - @patch_given = !m[3].nil? - @patch = @patch_given ? m[3].to_i : 0 - @pre = !m[4].nil? - else - raise ArgumentError, "#{version_str} is not a valid Version spec" + class VersionSpec + extend T::Sig + + include Comparable + + # MAJOR[.MINOR[.PATCH[-pre]]] + VERSION_REGEX = /([0-9]+)(?:\.([0-9]+)(?:\.([0-9]+)(?:-(pre))?)?)?/ + + # @return [Integer] Major version number + attr_reader :major + + # @return [Integer] Minor version number + attr_reader :minor + + # @return [Integer] Patch version number + attr_reader :patch + + # @return [Boolean] Whether or not this is a pre-release + attr_reader :pre + + sig { params(version_str: String).void } + def initialize(version_str) + if version_str =~ /^\s*#{VERSION_REGEX}\s*$/ + m = T.must(::Regexp.last_match) + @major = m[1].to_i + @minor_given = !m[2].nil? + @minor = @minor_given ? m[2].to_i : 0 + @patch_given = !m[3].nil? + @patch = @patch_given ? m[3].to_i : 0 + @pre = !m[4].nil? + else + raise ArgumentError, "#{version_str} is not a valid Version spec" + end + @version_str = version_str end - @version_str = version_str - end - sig { returns(String) } - def inspect - "VersionSpec[str: #{@version_str}; major: #{@major}, minor: #{@minor}, patch: #{@patch}, pre: #{@pre}]" - end + sig { returns(String) } + def inspect + "VersionSpec[str: #{@version_str}; major: #{@major}, minor: #{@minor}, patch: #{@patch}, pre: #{@pre}]" + end - # @return [String] The version, in canonical form - sig { returns(String) } - def canonical - "#{@major}.#{@minor}.#{@patch}#{@pre ? '-pre' : ''}" - end + # @return [String] The version, in canonical form + sig { returns(String) } + def canonical + "#{@major}.#{@minor}.#{@patch}#{@pre ? '-pre' : ''}" + end - # @return [String] The version formatted like RVI docs - # - # @example - # VersionSpec.new("2.2").to_rvi_s #=> "2p2" - sig { returns(String) } - def to_rvi_s - s = @major.to_s - s += "p#{@minor}" if @minor_given - s += "p#{@patch}" if @patch_given - s += "-pre" if @pre - s - end + # @return [String] The version formatted like RVI docs + # + # @example + # VersionSpec.new("2.2").to_rvi_s #=> "2p2" + sig { returns(String) } + def to_rvi_s + s = @major.to_s + s += "p#{@minor}" if @minor_given + s += "p#{@patch}" if @patch_given + s += "-pre" if @pre + s + end - # @return [String] The exact string used during construction - sig { returns(String) } - def to_s = @version_str - - sig { params(other: T.any(String, VersionSpec)).returns(T.nilable(Integer)) } - def <=>(other) - if other.is_a?(String) - VersionSpec.new(other) <=> self - elsif other.is_a?(VersionSpec) - if @major != other.major - @major <=> other.major - elsif @minor != other.minor - @minor <=> other.minor - elsif @patch != other.patch - @patch <=> other.patch - elsif @pre != other.pre - @pre ? 1 : -1 + # @return [String] The exact string used during construction + sig { returns(String) } + def to_s = @version_str + + sig { params(other: T.untyped).returns(T.nilable(Integer)) } + def <=>(other) + if other.is_a?(String) + VersionSpec.new(other) <=> self + elsif other.is_a?(VersionSpec) + if @major != other.major + @major <=> other.major + elsif @minor != other.minor + @minor <=> other.minor + elsif @patch != other.patch + @patch <=> other.patch + elsif @pre != other.pre + @pre ? 1 : -1 + else + 0 + end else - 0 + nil end - else - T.absurd(other) end - end - # @param other [VersionSpec] Comparison - # @return [Boolean] Whether or not +other+ is an VersionSpec with the same canonical version - sig { params(other: T.any(String, VersionSpec)).returns(T::Boolean) } - def eql?(other) - if other.is_a?(String) - eql?(VersionSpec.new(other)) - elsif other.is_a?(VersionSpec) - other.major == @major && \ - other.minor == @minor && \ - other.patch == @patch && \ - other.pre == @pre - else - T.absurd(other) + sig { override.params(other: T.untyped).returns(T::Boolean) } + def eql?(other) + if other.is_a?(VersionSpec) + self.==(VersionSpec) + else + false + end + end + + sig { override.returns(Integer) } + def hash + [@major, @minor, @patch, @pre].hash + end + + sig { returns(VersionSpec) } + def increment_patch + dup.instance_variable_set(:@patch, @patch + 1) + end + + sig { returns(VersionSpec) } + def decrement_patch + copy = dup + if @patch > 0 + copy.instance_variable_set(:@patch, @patch - 1) + elsif @minor > 0 + copy.instance_variable_set(:@minor, @minor - 1) + copy.instance_variable_set(:@patch, 9999) + elsif @major > 0 + copy.instance_variable_set(:@major, @major - 1) + copy.instance_variable_set(:@minor, 9999) + copy.instance_variable_set(:@patch, 9999) + else + raise "Cannot decrement version 0" + end + copy end end -end # Represents a version requirement # @@ -149,117 +170,126 @@ def eql?(other) # RequirementSpec.new("~> 1.11").satisfied_by?(VersionSpec.new("1.10"), s_ext) #=> true # RequirementSpec.new("~> 1.11").satisfied_by?(VersionSpec.new("1.11"), s_ext) #=> true # RequirementSpec.new("~> 1.11").satisfied_by?(VersionSpec.new("1.12"), s_ext) #=> false -class RequirementSpec - extend T::Sig - REQUIREMENT_OP_REGEX = /((?:>=)|(?:>)|(?:~>)|(?:<)|(?:<=)|(?:!=)|(?:=))/ - REQUIREMENT_REGEX = /#{REQUIREMENT_OP_REGEX}\s*(#{VersionSpec::VERSION_REGEX})/ - - # @param requirement [String] A requirement string - sig { params(requirement: String).void } - def initialize(requirement) - if requirement =~ /^\s*#{REQUIREMENT_REGEX}\s*$/ - m = T.must(::Regexp.last_match) - @op = T.must(m[1]) - @version_str = T.must(m[2]) - @version_spec = VersionSpec.new(@version_str) - else - raise ArgumentError, "Bad requirement string '#{requirement}' #{REQUIREMENT_REGEX}" - end - end + class RequirementSpec + extend T::Sig + REQUIREMENT_OP_REGEX = /((?:>=)|(?:>)|(?:~>)|(?:<)|(?:<=)|(?:!=)|(?:=))/ + REQUIREMENT_REGEX = /#{REQUIREMENT_OP_REGEX}\s*(#{VersionSpec::VERSION_REGEX})/ - sig { returns(String) } - def to_s - "#{@op} #{@version_str}" - end + sig { returns(String) } + attr_reader :op - # invert the requirement - sig { void } - def invert! - case @op - when ">=" - @op = "<" - when ">" - @op = "<=" - when "<=" - @op = ">" - when "<" - @op = ">=" - when "=" - @op = "!=" - when "!=" - @op = "=" - when "~>" - @op = "!~>" - end - self - end + sig { returns(VersionSpec) } + attr_reader :version_spec - # @param version [String] A version string - # @param version [VersionSpec] A version spec - # @param ext [Extension] An extension, needed to evaluate the compatible (~>) operator - # @param ext [Hash] Raw extension spec (from YAML) - # @return [Boolean] if the version satisfies the requirement - sig { params(version: T.any(String, VersionSpec), ext: T.any(Extension, T::Hash[String, T.untyped])).returns(T::Boolean) } - def satisfied_by?(version, ext) - v_spec = - case version - when String - VersionSpec.new(version) - when VersionSpec - version + # @param requirement [String] A requirement string + sig { params(requirement: String).void } + def initialize(requirement) + if requirement =~ /^\s*#{REQUIREMENT_REGEX}\s*$/ + m = T.must(::Regexp.last_match) + @op = T.must(m[1]) + @version_str = T.must(m[2]) + @version_spec = VersionSpec.new(@version_str) else - T.absurd(version) + raise ArgumentError, "Bad requirement string '#{requirement}' #{REQUIREMENT_REGEX}" end + end - case @op - when ">=" - v_spec >= @version_spec - when ">" - v_spec > @version_spec - when "<=" - v_spec <= @version_spec - when "<" - v_spec < @version_spec - when "=" - v_spec == @version_spec - when "!=" - v_spec != @version_spec - when "~>" - if ext.is_a?(Extension) - matching_ver = ext.versions.find { |v| v.version_spec == v_spec } - raise "Can't find version?" if matching_ver.nil? - - matching_ver.compatible?(ExtensionVersion.new(ext.name, v_spec.to_s, ext.arch)) - else - versions = ext.fetch("versions") - compatible_versions = [] - versions.each do |vinfo| - vspec = VersionSpec.new(vinfo.fetch("version")) - compatible_versions << vspec if vspec >= v_spec - break if compatible_versions.size.positive? && vinfo.key?("breaking") - end + sig { returns(String) } + def to_s + "#{@op} #{@version_str}" + end - compatible_versions.include?(v_spec) + # invert the requirement + sig { void } + def invert! + case @op + when ">=" + @op = "<" + when ">" + @op = "<=" + when "<=" + @op = ">" + when "<" + @op = ">=" + when "=" + @op = "!=" + when "!=" + @op = "=" + when "~>" + @op = "!~>" end - when "!~>" # not a legal spec, but used for inversion - if ext.is_a?(Extension) - matching_ver = ext.versions.find { |v| v.version_spec == v_spec } - raise "Can't find version?" if matching_ver.nil? + self + end - !matching_ver.compatible?(ExtensionVersion.new(ext.name, v_spec.to_s, ext.arch)) - else - versions = ext.fetch("versions") - compatible_versions = [] - versions.each do |vinfo| - vspec = VersionSpec.new(vinfo.fetch("version")) - compatible_versions << vspec if vspec >= v_spec - break if compatible_versions.size.positive? && vinfo.key?("breaking") + # @param version [String] A version string + # @param version [VersionSpec] A version spec + # @param ext [Extension] An extension, needed to evaluate the compatible (~>) operator + # @param ext [Hash] Raw extension spec (from YAML) + # @return [Boolean] if the version satisfies the requirement + sig { params(version: T.any(String, VersionSpec), ext: T.any(Extension, T::Hash[String, T.untyped])).returns(T::Boolean) } + def satisfied_by?(version, ext) + v_spec = + case version + when String + VersionSpec.new(version) + when VersionSpec + version + else + T.absurd(version) end - !compatible_versions.include?(v_spec) - end + result = + case @op + when ">=" + v_spec >= @version_spec + when ">" + v_spec > @version_spec + when "<=" + v_spec <= @version_spec + when "<" + v_spec < @version_spec + when "=" + v_spec == @version_spec + when "!=" + v_spec != @version_spec + when "~>" + if ext.is_a?(Extension) + matching_ver = ext.versions.find { |v| v.version_spec == v_spec } + raise "Can't find version?" if matching_ver.nil? + + matching_ver.compatible?(ExtensionVersion.new(ext.name, v_spec.to_s, ext.arch)) + else + versions = ext.fetch("versions") + compatible_versions = [] + versions.each do |vinfo| + vspec = VersionSpec.new(vinfo.fetch("version")) + compatible_versions << vspec if vspec >= v_spec + break if compatible_versions.size.positive? && vinfo.key?("breaking") + end + + compatible_versions.include?(v_spec) + end + when "!~>" # not a legal spec, but used for inversion + if ext.is_a?(Extension) + matching_ver = ext.versions.find { |v| v.version_spec == v_spec } + raise "Can't find version?" if matching_ver.nil? + + !matching_ver.compatible?(ExtensionVersion.new(ext.name, v_spec.to_s, ext.arch)) + else + versions = ext.fetch("versions") + compatible_versions = [] + versions.each do |vinfo| + vspec = VersionSpec.new(vinfo.fetch("version")) + compatible_versions << vspec if vspec >= v_spec + break if compatible_versions.size.positive? && vinfo.key?("breaking") + end + + !compatible_versions.include?(v_spec) + end + end + + T.must(result) end end -end end diff --git a/tools/ruby-gems/udb/schemas b/tools/ruby-gems/udb/schemas new file mode 120000 index 0000000000..c7e8465cf0 --- /dev/null +++ b/tools/ruby-gems/udb/schemas @@ -0,0 +1 @@ +../../../spec/schemas \ No newline at end of file diff --git a/tools/ruby-gems/udb/sorbet/rbi/annotations/activesupport.rbi b/tools/ruby-gems/udb/sorbet/rbi/annotations/activesupport.rbi index b7965de925..bde37b43de 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/annotations/activesupport.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/annotations/activesupport.rbi @@ -461,3 +461,8 @@ class ActiveSupport::ErrorReporter sig { params(error: T.any(Exception, String), severity: T.nilable(Symbol), context: T::Hash[Symbol, T.untyped], source: T.nilable(String)).void } def unexpected(error, severity: T.unsafe(nil), context: T.unsafe(nil), source: T.unsafe(nil)); end end + +module ActiveSupport::Testing::Assertions + sig { type_parameters(:Block).params(block: T.proc.returns(T.type_parameter(:Block))).returns(T.type_parameter(:Block)) } + def assert_nothing_raised(&block); end +end diff --git a/tools/ruby-gems/udb/sorbet/rbi/dsl/udb/architecture.rbi b/tools/ruby-gems/udb/sorbet/rbi/dsl/udb/architecture.rbi index 8b23e94d97..c40af8c762 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/dsl/udb/architecture.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/dsl/udb/architecture.rbi @@ -15,6 +15,15 @@ class Udb::Architecture sig { returns(T::Array[Udb::Csr]) } def csrs; end + sig { params(name: String).returns(T.nilable(Udb::ExceptionCode)) } + def exception_code(name); end + + sig { returns(T::Hash[String, Udb::ExceptionCode]) } + def exception_code_hash; end + + sig { returns(T::Array[Udb::ExceptionCode]) } + def exception_codes; end + sig { params(name: String).returns(T.nilable(Udb::Extension)) } def extension(name); end @@ -51,6 +60,15 @@ class Udb::Architecture sig { returns(T::Array[Udb::Instruction]) } def instructions; end + sig { params(name: String).returns(T.nilable(Udb::InterruptCode)) } + def interrupt_code(name); end + + sig { returns(T::Hash[String, Udb::InterruptCode]) } + def interrupt_code_hash; end + + sig { returns(T::Array[Udb::InterruptCode]) } + def interrupt_codes; end + sig { params(name: String).returns(T.nilable(Udb::Manual)) } def manual(name); end @@ -69,6 +87,24 @@ class Udb::Architecture sig { returns(T::Array[Udb::Manual]) } def manuals; end + sig { params(name: String).returns(T.nilable(Udb::Parameter)) } + def param(name); end + + sig { returns(T::Hash[String, Udb::Parameter]) } + def param_hash; end + + sig { returns(T::Array[Udb::Parameter]) } + def params; end + + sig { params(name: String).returns(T.nilable(Udb::Prm)) } + def prm(name); end + + sig { returns(T::Hash[String, Udb::Prm]) } + def prm_hash; end + + sig { returns(T::Array[Udb::Prm]) } + def prms; end + sig { params(name: String).returns(T.nilable(Udb::ProcCertClass)) } def proc_cert_class(name); end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/activesupport@8.0.2.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/activesupport@8.0.3.rbi similarity index 99% rename from tools/ruby-gems/udb/sorbet/rbi/gems/activesupport@8.0.2.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/activesupport@8.0.3.rbi index 574b10affc..c54bd7925c 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/activesupport@8.0.2.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/activesupport@8.0.3.rbi @@ -5,7 +5,7 @@ # Please instead update this file by running `bin/tapioca gem activesupport`. -# source://activesupport//lib/active_support/array_inquirer.rb#3 +# source://activesupport//lib/active_support/deep_mergeable.rb#3 module ActiveSupport extend ::ActiveSupport::LazyLoadHooks @@ -680,7 +680,7 @@ end # source://activesupport//lib/active_support/json/decoding.rb#11 module ActiveSupport::JSON class << self - # source://activesupport//lib/active_support/json/decoding.rb#22 + # source://activesupport//lib/active_support/json/decoding.rb#24 def decode(json); end # source://activesupport//lib/active_support/json/encoding.rb#40 @@ -689,15 +689,15 @@ module ActiveSupport::JSON # source://activesupport//lib/active_support/json/encoding.rb#40 def encode(value, options = T.unsafe(nil)); end - # source://activesupport//lib/active_support/json/decoding.rb#22 + # source://activesupport//lib/active_support/json/decoding.rb#24 def load(json); end - # source://activesupport//lib/active_support/json/decoding.rb#43 + # source://activesupport//lib/active_support/json/decoding.rb#45 def parse_error; end private - # source://activesupport//lib/active_support/json/decoding.rb#48 + # source://activesupport//lib/active_support/json/decoding.rb#50 def convert_dates_from(data); end end end @@ -1570,7 +1570,7 @@ module ActiveSupport::Tryable def try!(*args, **_arg1, &block); end end -# source://activesupport//lib/active_support/core_ext/object/to_query.rb#39 +# source://activesupport//lib/active_support/core_ext/object/to_query.rb#40 class Array include ::Enumerable @@ -1583,10 +1583,10 @@ class Array # source://activesupport//lib/active_support/core_ext/array/conversions.rb#94 def to_fs(format = T.unsafe(nil)); end - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#42 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#43 def to_param; end - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#50 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#51 def to_query(key); end # source://activesupport//lib/active_support/core_ext/array/conversions.rb#60 @@ -2041,7 +2041,7 @@ class DateTime < ::Date # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#164 def end_of_minute; end - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#51 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#53 def formatted_offset(colon = T.unsafe(nil), alternate_utc_string = T.unsafe(nil)); end # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#184 @@ -2059,7 +2059,7 @@ class DateTime < ::Date # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#116 def in(seconds); end - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#56 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#58 def inspect; end # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#170 @@ -2077,10 +2077,10 @@ class DateTime < ::Date # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#130 def noon; end - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#94 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#96 def nsec; end - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#56 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#58 def readable_inspect; end # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#20 @@ -2095,19 +2095,19 @@ class DateTime < ::Date # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#36 def subsec; end - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#79 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#81 def to_f; end - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#35 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#37 def to_formatted_s(format = T.unsafe(nil)); end - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#35 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#37 def to_fs(format = T.unsafe(nil)); end - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#84 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#86 def to_i; end - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#89 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#91 def usec; end # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#184 @@ -2121,14 +2121,14 @@ class DateTime < ::Date private - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#99 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#101 def offset_in_seconds; end - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#103 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#105 def seconds_since_unix_epoch; end class << self - # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#69 + # source://activesupport//lib/active_support/core_ext/date_time/conversions.rb#71 def civil_from_format(utc_or_local, year, month = T.unsafe(nil), day = T.unsafe(nil), hour = T.unsafe(nil), min = T.unsafe(nil), sec = T.unsafe(nil)); end # source://activesupport//lib/active_support/core_ext/date_time/calculations.rb#10 @@ -2230,12 +2230,12 @@ class Exception def as_json(options = T.unsafe(nil)); end end -# source://activesupport//lib/active_support/core_ext/object/to_query.rb#32 +# source://activesupport//lib/active_support/core_ext/object/to_query.rb#33 class FalseClass # source://activesupport//lib/active_support/core_ext/object/json.rb#87 def as_json(options = T.unsafe(nil)); end - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#34 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#35 def to_param; end end @@ -2245,7 +2245,7 @@ class Float < ::Numeric def as_json(options = T.unsafe(nil)); end end -# source://activesupport//lib/active_support/core_ext/hash/keys.rb#3 +# source://activesupport//lib/active_support/core_ext/hash/deep_merge.rb#5 class Hash include ::Enumerable include ::ActiveSupport::DeepMergeable @@ -2304,10 +2304,10 @@ class Hash # source://activesupport//lib/active_support/core_ext/hash/keys.rb#34 def to_options!; end - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#75 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#76 def to_param(namespace = T.unsafe(nil)); end - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#75 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#76 def to_query(namespace = T.unsafe(nil)); end private @@ -2436,7 +2436,6 @@ IO::EWOULDBLOCKWaitReadable = IO::EAGAINWaitReadable IO::EWOULDBLOCKWaitWritable = IO::EAGAINWaitWritable IO::PRIORITY = T.let(T.unsafe(nil), Integer) IO::READABLE = T.let(T.unsafe(nil), Integer) -class IO::TimeoutError < ::IOError; end IO::WRITABLE = T.let(T.unsafe(nil), Integer) # source://activesupport//lib/active_support/core_ext/object/json.rb#243 @@ -2501,21 +2500,21 @@ class NameError < ::StandardError include ::DidYouMean::Correctable end -# source://activesupport//lib/active_support/core_ext/object/to_query.rb#18 +# source://activesupport//lib/active_support/core_ext/object/to_query.rb#19 class NilClass include ::Treetop::Compiler::Metagrammar::LabeledExpressionSequenceBody0 # source://activesupport//lib/active_support/core_ext/object/json.rb#93 def as_json(options = T.unsafe(nil)); end - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#20 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#21 def to_param; end # source://activesupport//lib/active_support/core_ext/object/try.rb#148 - def try(*_arg0); end + def try(*_arg0, &_arg1); end # source://activesupport//lib/active_support/core_ext/object/try.rb#155 - def try!(*_arg0); end + def try!(*_arg0, &_arg1); end end # source://activesupport//lib/active_support/core_ext/string/output_safety.rb#12 @@ -2529,10 +2528,11 @@ class Numeric def html_safe?; end end -# source://activesupport//lib/active_support/core_ext/object/to_query.rb#5 +# source://activesupport//lib/active_support/core_ext/object/to_query.rb#6 class Object < ::BasicObject include ::Kernel include ::PP::ObjectMixin + include ::Udb::Helpers::WavedromUtil include ::ActiveSupport::Tryable include ::ActiveSupport::ToJsonWithActiveSupportEncoder @@ -2551,10 +2551,10 @@ class Object < ::BasicObject # source://activesupport//lib/active_support/core_ext/object/instance_variables.rb#29 def instance_variable_names; end - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#7 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#8 def to_param; end - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#13 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#14 def to_query(key); end end @@ -2739,12 +2739,12 @@ end # source://activesupport//lib/active_support/core_ext/time/conversions.rb#8 Time::DATE_FORMATS = T.let(T.unsafe(nil), Hash) -# source://activesupport//lib/active_support/core_ext/object/to_query.rb#25 +# source://activesupport//lib/active_support/core_ext/object/to_query.rb#26 class TrueClass # source://activesupport//lib/active_support/core_ext/object/json.rb#81 def as_json(options = T.unsafe(nil)); end - # source://activesupport//lib/active_support/core_ext/object/to_query.rb#27 + # source://activesupport//lib/active_support/core_ext/object/to_query.rb#28 def to_param; end end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/asciidoctor@2.0.23.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/asciidoctor@2.0.24.rbi similarity index 95% rename from tools/ruby-gems/udb/sorbet/rbi/gems/asciidoctor@2.0.23.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/asciidoctor@2.0.24.rbi index 693c35f6e2..e98ce7adce 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/asciidoctor@2.0.23.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/asciidoctor@2.0.24.rbi @@ -251,7 +251,7 @@ class Asciidoctor::AbstractNode # source://asciidoctor//lib/asciidoctor/abstract_node.rb#53 def inline?; end - # source://asciidoctor//lib/asciidoctor/abstract_node.rb#563 + # source://asciidoctor//lib/asciidoctor/abstract_node.rb#555 def is_uri?(str); end # source://asciidoctor//lib/asciidoctor/abstract_node.rb#349 @@ -260,13 +260,13 @@ class Asciidoctor::AbstractNode # source://asciidoctor//lib/asciidoctor/abstract_node.rb#23 def node_name; end - # source://asciidoctor//lib/asciidoctor/abstract_node.rb#429 + # source://asciidoctor//lib/asciidoctor/abstract_node.rb#421 def normalize_asset_path(asset_ref, asset_name = T.unsafe(nil), autocorrect = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/abstract_node.rb#458 + # source://asciidoctor//lib/asciidoctor/abstract_node.rb#450 def normalize_system_path(target, start = T.unsafe(nil), jail = T.unsafe(nil), opts = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/abstract_node.rb#481 + # source://asciidoctor//lib/asciidoctor/abstract_node.rb#473 def normalize_web_path(target, start = T.unsafe(nil), preserve_uri_target = T.unsafe(nil)); end # source://asciidoctor//lib/asciidoctor/abstract_node.rb#149 @@ -278,10 +278,10 @@ class Asciidoctor::AbstractNode # source://asciidoctor//lib/asciidoctor/abstract_node.rb#70 def parent=(parent); end - # source://asciidoctor//lib/asciidoctor/abstract_node.rb#502 + # source://asciidoctor//lib/asciidoctor/abstract_node.rb#494 def read_asset(path, opts = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/abstract_node.rb#531 + # source://asciidoctor//lib/asciidoctor/abstract_node.rb#523 def read_contents(target, opts = T.unsafe(nil)); end # source://asciidoctor//lib/asciidoctor/abstract_node.rb#264 @@ -1791,107 +1791,113 @@ Asciidoctor::HYBRID_LAYOUT_BREAK_CHARS = T.let(T.unsafe(nil), Hash) # source://asciidoctor//lib/asciidoctor/rx.rb#627 Asciidoctor::HardLineBreakRx = T.let(T.unsafe(nil), Regexp) -# source://asciidoctor//lib/asciidoctor/helpers.rb#4 +# source://asciidoctor//lib/asciidoctor/helpers.rb#5 module Asciidoctor::Helpers private - # source://asciidoctor//lib/asciidoctor/helpers.rb#200 + # source://asciidoctor//lib/asciidoctor/helpers.rb#220 def basename(filename, drop_ext = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#306 + # source://asciidoctor//lib/asciidoctor/helpers.rb#326 def class_for_name(qualified_name); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#163 + # source://asciidoctor//lib/asciidoctor/helpers.rb#183 def encode_spaces_in_uri(str); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#149 + # source://asciidoctor//lib/asciidoctor/helpers.rb#169 def encode_uri_component(str); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#235 + # source://asciidoctor//lib/asciidoctor/helpers.rb#255 def extname(path, fallback = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#213 + # source://asciidoctor//lib/asciidoctor/helpers.rb#233 def extname?(path); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#269 + # source://asciidoctor//lib/asciidoctor/helpers.rb#289 def int_to_roman(val); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#245 + # source://asciidoctor//lib/asciidoctor/helpers.rb#265 def mkdir_p(dir); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#283 + # source://asciidoctor//lib/asciidoctor/helpers.rb#303 def nextval(current); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#64 + # source://asciidoctor//lib/asciidoctor/helpers.rb#84 def prepare_source_array(data, trim_end = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#96 + # source://asciidoctor//lib/asciidoctor/helpers.rb#116 def prepare_source_string(data, trim_end = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#26 + # source://asciidoctor//lib/asciidoctor/helpers.rb#27 def require_library(name, gem_name = T.unsafe(nil), on_failure = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#299 + # source://asciidoctor//lib/asciidoctor/helpers.rb#59 + def require_open_uri(cache = T.unsafe(nil)); end + + # source://asciidoctor//lib/asciidoctor/helpers.rb#319 def resolve_class(object); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#177 + # source://asciidoctor//lib/asciidoctor/helpers.rb#197 def rootname(filename); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#128 + # source://asciidoctor//lib/asciidoctor/helpers.rb#148 def uriish?(str); end class << self - # source://asciidoctor//lib/asciidoctor/helpers.rb#200 + # source://asciidoctor//lib/asciidoctor/helpers.rb#220 def basename(filename, drop_ext = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#306 + # source://asciidoctor//lib/asciidoctor/helpers.rb#326 def class_for_name(qualified_name); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#163 + # source://asciidoctor//lib/asciidoctor/helpers.rb#183 def encode_spaces_in_uri(str); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#149 + # source://asciidoctor//lib/asciidoctor/helpers.rb#169 def encode_uri_component(str); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#235 + # source://asciidoctor//lib/asciidoctor/helpers.rb#255 def extname(path, fallback = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#213 + # source://asciidoctor//lib/asciidoctor/helpers.rb#233 def extname?(path); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#269 + # source://asciidoctor//lib/asciidoctor/helpers.rb#289 def int_to_roman(val); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#245 + # source://asciidoctor//lib/asciidoctor/helpers.rb#265 def mkdir_p(dir); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#283 + # source://asciidoctor//lib/asciidoctor/helpers.rb#303 def nextval(current); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#64 + # source://asciidoctor//lib/asciidoctor/helpers.rb#84 def prepare_source_array(data, trim_end = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#96 + # source://asciidoctor//lib/asciidoctor/helpers.rb#116 def prepare_source_string(data, trim_end = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#26 + # source://asciidoctor//lib/asciidoctor/helpers.rb#27 def require_library(name, gem_name = T.unsafe(nil), on_failure = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#299 + # source://asciidoctor//lib/asciidoctor/helpers.rb#59 + def require_open_uri(cache = T.unsafe(nil)); end + + # source://asciidoctor//lib/asciidoctor/helpers.rb#319 def resolve_class(object); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#177 + # source://asciidoctor//lib/asciidoctor/helpers.rb#197 def rootname(filename); end - # source://asciidoctor//lib/asciidoctor/helpers.rb#128 + # source://asciidoctor//lib/asciidoctor/helpers.rb#148 def uriish?(str); end end end -# source://asciidoctor//lib/asciidoctor/helpers.rb#148 +# source://asciidoctor//lib/asciidoctor/helpers.rb#168 Asciidoctor::Helpers::CGI = CGI -# source://asciidoctor//lib/asciidoctor/helpers.rb#258 +# source://asciidoctor//lib/asciidoctor/helpers.rb#278 Asciidoctor::Helpers::ROMAN_NUMERALS = T.let(T.unsafe(nil), Hash) # source://asciidoctor//lib/asciidoctor.rb#346 @@ -2095,67 +2101,67 @@ Asciidoctor::ListRxMap = T.let(T.unsafe(nil), Hash) # source://asciidoctor//lib/asciidoctor/rx.rb#209 Asciidoctor::LiteralParagraphRx = T.let(T.unsafe(nil), Regexp) -# source://asciidoctor//lib/asciidoctor/logging.rb#5 +# source://asciidoctor//lib/asciidoctor/logging.rb#10 class Asciidoctor::Logger < ::Logger - # source://asciidoctor//lib/asciidoctor/logging.rb#8 - def initialize(*args); end + # source://asciidoctor//lib/asciidoctor/logging.rb#13 + def initialize(*args, **opts); end - # source://asciidoctor//lib/asciidoctor/logging.rb#15 + # source://asciidoctor//lib/asciidoctor/logging.rb#26 def add(severity, message = T.unsafe(nil), progname = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/logging.rb#6 + # source://asciidoctor//lib/asciidoctor/logging.rb#11 def max_severity; end end -# source://asciidoctor//lib/asciidoctor/logging.rb#30 +# source://asciidoctor//lib/asciidoctor/logging.rb#41 module Asciidoctor::Logger::AutoFormattingMessage - # source://asciidoctor//lib/asciidoctor/logging.rb#31 + # source://asciidoctor//lib/asciidoctor/logging.rb#42 def inspect; end end -# source://asciidoctor//lib/asciidoctor/logging.rb#22 +# source://asciidoctor//lib/asciidoctor/logging.rb#33 class Asciidoctor::Logger::BasicFormatter < ::Logger::Formatter - # source://asciidoctor//lib/asciidoctor/logging.rb#25 + # source://asciidoctor//lib/asciidoctor/logging.rb#36 def call(severity, _, progname, msg); end end -# source://asciidoctor//lib/asciidoctor/logging.rb#23 +# source://asciidoctor//lib/asciidoctor/logging.rb#34 Asciidoctor::Logger::BasicFormatter::SEVERITY_LABEL_SUBSTITUTES = T.let(T.unsafe(nil), Hash) -# source://asciidoctor//lib/asciidoctor/logging.rb#83 +# source://asciidoctor//lib/asciidoctor/logging.rb#94 module Asciidoctor::LoggerManager class << self - # source://asciidoctor//lib/asciidoctor/logging.rb#89 + # source://asciidoctor//lib/asciidoctor/logging.rb#100 def logger(pipe = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/logging.rb#95 + # source://asciidoctor//lib/asciidoctor/logging.rb#106 def logger=(new_logger); end - # source://asciidoctor//lib/asciidoctor/logging.rb#86 + # source://asciidoctor//lib/asciidoctor/logging.rb#97 def logger_class; end - # source://asciidoctor//lib/asciidoctor/logging.rb#86 + # source://asciidoctor//lib/asciidoctor/logging.rb#97 def logger_class=(_arg0); end private - # source://asciidoctor//lib/asciidoctor/logging.rb#101 + # source://asciidoctor//lib/asciidoctor/logging.rb#112 def memoize_logger; end end end -# source://asciidoctor//lib/asciidoctor/logging.rb#110 +# source://asciidoctor//lib/asciidoctor/logging.rb#121 module Asciidoctor::Logging - # source://asciidoctor//lib/asciidoctor/logging.rb#121 + # source://asciidoctor//lib/asciidoctor/logging.rb#132 def logger; end - # source://asciidoctor//lib/asciidoctor/logging.rb#125 + # source://asciidoctor//lib/asciidoctor/logging.rb#136 def message_with_context(text, context = T.unsafe(nil)); end class << self private - # source://asciidoctor//lib/asciidoctor/logging.rb#116 + # source://asciidoctor//lib/asciidoctor/logging.rb#127 def included(into); end end end @@ -2181,28 +2187,28 @@ Asciidoctor::ManpageTitleVolnumRx = T.let(T.unsafe(nil), Regexp) # source://asciidoctor//lib/asciidoctor/rx.rb#638 Asciidoctor::MarkdownThematicBreakRx = T.let(T.unsafe(nil), Regexp) -# source://asciidoctor//lib/asciidoctor/logging.rb#37 +# source://asciidoctor//lib/asciidoctor/logging.rb#48 class Asciidoctor::MemoryLogger < ::Logger - # source://asciidoctor//lib/asciidoctor/logging.rb#42 + # source://asciidoctor//lib/asciidoctor/logging.rb#53 def initialize; end - # source://asciidoctor//lib/asciidoctor/logging.rb#48 + # source://asciidoctor//lib/asciidoctor/logging.rb#59 def add(severity, message = T.unsafe(nil), progname = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/logging.rb#54 + # source://asciidoctor//lib/asciidoctor/logging.rb#65 def clear; end - # source://asciidoctor//lib/asciidoctor/logging.rb#58 + # source://asciidoctor//lib/asciidoctor/logging.rb#69 def empty?; end - # source://asciidoctor//lib/asciidoctor/logging.rb#62 + # source://asciidoctor//lib/asciidoctor/logging.rb#73 def max_severity; end - # source://asciidoctor//lib/asciidoctor/logging.rb#40 + # source://asciidoctor//lib/asciidoctor/logging.rb#51 def messages; end end -# source://asciidoctor//lib/asciidoctor/logging.rb#38 +# source://asciidoctor//lib/asciidoctor/logging.rb#49 Asciidoctor::MemoryLogger::SEVERITY_SYMBOL_BY_VALUE = T.let(T.unsafe(nil), Hash) # source://asciidoctor//lib/asciidoctor.rb#315 @@ -2211,15 +2217,15 @@ Asciidoctor::NESTABLE_LIST_CONTEXTS = T.let(T.unsafe(nil), Array) # source://asciidoctor//lib/asciidoctor.rb#194 Asciidoctor::NULL = T.let(T.unsafe(nil), String) -# source://asciidoctor//lib/asciidoctor/logging.rb#67 +# source://asciidoctor//lib/asciidoctor/logging.rb#78 class Asciidoctor::NullLogger < ::Logger - # source://asciidoctor//lib/asciidoctor/logging.rb#70 + # source://asciidoctor//lib/asciidoctor/logging.rb#81 def initialize; end - # source://asciidoctor//lib/asciidoctor/logging.rb#75 + # source://asciidoctor//lib/asciidoctor/logging.rb#86 def add(severity, message = T.unsafe(nil), progname = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/logging.rb#68 + # source://asciidoctor//lib/asciidoctor/logging.rb#79 def max_severity; end end @@ -2532,7 +2538,7 @@ class Asciidoctor::PreprocessorReader < ::Asciidoctor::Reader # source://asciidoctor//lib/asciidoctor/reader.rb#621 def initialize(document, data = T.unsafe(nil), cursor = T.unsafe(nil), opts = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/reader.rb#784 + # source://asciidoctor//lib/asciidoctor/reader.rb#789 def create_include_cursor(file, path, lineno); end # source://asciidoctor//lib/asciidoctor/reader.rb#644 @@ -2541,19 +2547,19 @@ class Asciidoctor::PreprocessorReader < ::Asciidoctor::Reader # source://asciidoctor//lib/asciidoctor/reader.rb#644 def eof?; end - # source://asciidoctor//lib/asciidoctor/reader.rb#755 + # source://asciidoctor//lib/asciidoctor/reader.rb#760 def exceeded_max_depth?; end - # source://asciidoctor//lib/asciidoctor/reader.rb#755 + # source://asciidoctor//lib/asciidoctor/reader.rb#760 def exceeds_max_depth?; end # source://asciidoctor//lib/asciidoctor/reader.rb#639 def has_more_lines?; end - # source://asciidoctor//lib/asciidoctor/reader.rb#747 + # source://asciidoctor//lib/asciidoctor/reader.rb#752 def include_depth; end - # source://asciidoctor//lib/asciidoctor/reader.rb#772 + # source://asciidoctor//lib/asciidoctor/reader.rb#777 def include_processors?; end # source://asciidoctor//lib/asciidoctor/reader.rb#618 @@ -2562,42 +2568,42 @@ class Asciidoctor::PreprocessorReader < ::Asciidoctor::Reader # source://asciidoctor//lib/asciidoctor/reader.rb#656 def peek_line(direct = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/reader.rb#681 + # source://asciidoctor//lib/asciidoctor/reader.rb#686 def push_include(data, file = T.unsafe(nil), path = T.unsafe(nil), lineno = T.unsafe(nil), attributes = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/reader.rb#763 + # source://asciidoctor//lib/asciidoctor/reader.rb#768 def shift; end - # source://asciidoctor//lib/asciidoctor/reader.rb#796 + # source://asciidoctor//lib/asciidoctor/reader.rb#801 def to_s; end private - # source://asciidoctor//lib/asciidoctor/reader.rb#1279 + # source://asciidoctor//lib/asciidoctor/reader.rb#1287 def pop_include; end - # source://asciidoctor//lib/asciidoctor/reader.rb#802 + # source://asciidoctor//lib/asciidoctor/reader.rb#807 def prepare_lines(data, opts = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/reader.rb#904 - def preprocess_conditional_directive(keyword, target, delimiter, text); end + # source://asciidoctor//lib/asciidoctor/reader.rb#909 + def preprocess_conditional_directive(name, target, delimiter, text); end - # source://asciidoctor//lib/asciidoctor/reader.rb#1021 + # source://asciidoctor//lib/asciidoctor/reader.rb#1035 def preprocess_include_directive(target, attrlist); end - # source://asciidoctor//lib/asciidoctor/reader.rb#819 + # source://asciidoctor//lib/asciidoctor/reader.rb#824 def process_line(line); end - # source://asciidoctor//lib/asciidoctor/reader.rb#1346 + # source://asciidoctor//lib/asciidoctor/reader.rb#1354 def resolve_expr_val(val); end - # source://asciidoctor//lib/asciidoctor/reader.rb#1243 + # source://asciidoctor//lib/asciidoctor/reader.rb#1257 def resolve_include_path(target, attrlist, attributes); end - # source://asciidoctor//lib/asciidoctor/reader.rb#1296 + # source://asciidoctor//lib/asciidoctor/reader.rb#1304 def skip_front_matter!(data, increment_linenos = T.unsafe(nil)); end - # source://asciidoctor//lib/asciidoctor/reader.rb#1291 + # source://asciidoctor//lib/asciidoctor/reader.rb#1299 def split_delimited_value(val); end end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/awesome_print@1.9.2.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/awesome_print@1.9.2.rbi index a9e3941bd2..6119e44640 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/awesome_print@1.9.2.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/awesome_print@1.9.2.rbi @@ -63,6 +63,23 @@ module AwesomePrint end end +# source://awesome_print//lib/awesome_print/ext/active_support.rb#7 +module AwesomePrint::ActiveSupport + # source://awesome_print//lib/awesome_print/ext/active_support.rb#28 + def awesome_active_support_time(object); end + + # source://awesome_print//lib/awesome_print/ext/active_support.rb#34 + def awesome_hash_with_indifferent_access(object); end + + # source://awesome_print//lib/awesome_print/ext/active_support.rb#14 + def cast_with_active_support(object, type); end + + class << self + # source://awesome_print//lib/awesome_print/ext/active_support.rb#9 + def included(base); end + end +end + # source://awesome_print//lib/awesome_print/colorize.rb#4 module AwesomePrint::Colorize # source://awesome_print//lib/awesome_print/colorize.rb#8 @@ -72,6 +89,7 @@ end # source://awesome_print//lib/awesome_print/formatter.rb#9 class AwesomePrint::Formatter include ::AwesomePrint::Colorize + include ::AwesomePrint::ActiveSupport include ::AwesomePrint::OpenStruct # source://awesome_print//lib/awesome_print/formatter.rb#16 @@ -81,6 +99,9 @@ class AwesomePrint::Formatter def cast(object, type); end # source://awesome_print//lib/awesome_print/formatter.rb#36 + def cast_without_active_support(object, type); end + + # source://awesome_print//lib/awesome_print/ext/active_support.rb#14 def cast_without_ostruct(object, type); end # source://awesome_print//lib/awesome_print/formatter.rb#23 diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/bigdecimal@3.2.2.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/bigdecimal@3.2.2.rbi deleted file mode 100644 index 3c1f71630e..0000000000 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/bigdecimal@3.2.2.rbi +++ /dev/null @@ -1,31 +0,0 @@ -# typed: true - -# DO NOT EDIT MANUALLY -# This is an autogenerated file for types exported from the `bigdecimal` gem. -# Please instead update this file by running `bin/tapioca gem bigdecimal`. - - -# source://bigdecimal//lib/bigdecimal/util.rb#78 -class BigDecimal < ::Numeric - # source://bigdecimal//lib/bigdecimal/util.rb#110 - def to_d; end - - # source://bigdecimal//lib/bigdecimal/util.rb#90 - def to_digits; end -end - -BigDecimal::VERSION = T.let(T.unsafe(nil), String) - -# source://bigdecimal//lib/bigdecimal/util.rb#138 -class Complex < ::Numeric - # source://bigdecimal//lib/bigdecimal/util.rb#157 - def to_d(*args); end -end - -# source://bigdecimal//lib/bigdecimal/util.rb#171 -class NilClass - include ::Treetop::Compiler::Metagrammar::LabeledExpressionSequenceBody0 - - # source://bigdecimal//lib/bigdecimal/util.rb#182 - def to_d; end -end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/bigdecimal@3.3.1.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/bigdecimal@3.3.1.rbi new file mode 100644 index 0000000000..6ef002f554 --- /dev/null +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/bigdecimal@3.3.1.rbi @@ -0,0 +1,71 @@ +# typed: false + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `bigdecimal` gem. +# Please instead update this file by running `bin/tapioca gem bigdecimal`. + + +# source://bigdecimal//lib/bigdecimal.rb#13 +class BigDecimal < ::Numeric + # source://bigdecimal//lib/bigdecimal.rb#77 + def **(y); end + + # source://bigdecimal//lib/bigdecimal.rb#97 + def power(y, prec = T.unsafe(nil)); end + + # source://bigdecimal//lib/bigdecimal.rb#211 + def sqrt(prec); end + + # source://bigdecimal//lib/bigdecimal/util.rb#110 + def to_d; end + + # source://bigdecimal//lib/bigdecimal/util.rb#90 + def to_digits; end +end + +# source://bigdecimal//lib/bigdecimal.rb#14 +module BigDecimal::Internal + class << self + # source://bigdecimal//lib/bigdecimal.rb#18 + def coerce_to_bigdecimal(x, prec, method_name); end + + # source://bigdecimal//lib/bigdecimal.rb#30 + def coerce_validate_prec(prec, method_name, accept_zero: T.unsafe(nil)); end + + # source://bigdecimal//lib/bigdecimal.rb#50 + def infinity_computation_result; end + + # source://bigdecimal//lib/bigdecimal.rb#57 + def nan_computation_result; end + end +end + +BigDecimal::VERSION = T.let(T.unsafe(nil), String) + +# source://bigdecimal//lib/bigdecimal.rb#237 +module BigMath + class << self + # source://bigdecimal//lib/bigdecimal.rb#328 + def exp(x, prec); end + + # source://bigdecimal//lib/bigdecimal.rb#251 + def log(x, prec); end + + private + + # source://bigdecimal//lib/bigdecimal.rb#306 + def _exp_taylor(x, prec); end + end +end + +# source://bigdecimal//lib/bigdecimal/util.rb#141 +class Complex < ::Numeric + # source://bigdecimal//lib/bigdecimal/util.rb#164 + def to_d(precision = T.unsafe(nil)); end +end + +# source://bigdecimal//lib/bigdecimal/util.rb#116 +class Rational < ::Numeric + # source://bigdecimal//lib/bigdecimal/util.rb#135 + def to_d(precision = T.unsafe(nil)); end +end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/connection_pool@2.5.3.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/connection_pool@2.5.4.rbi similarity index 100% rename from tools/ruby-gems/udb/sorbet/rbi/gems/connection_pool@2.5.3.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/connection_pool@2.5.4.rbi diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/idlc@0.1.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/idlc@0.1.0.rbi index e8cb919c4f..599acef25a 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/idlc@0.1.0.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/idlc@0.1.0.rbi @@ -9,951 +9,1581 @@ module Idl include ::Treetop::Runtime + # source://idlc//lib/idlc/idl_parser.rb#6275 def _nt_ary_access; end + + # source://idlc//lib/idlc/idl_parser.rb#6173 def _nt_ary_eligible_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#11728 def _nt_ary_size_decl; end + + # source://idlc//lib/idlc/idl_parser.rb#10974 def _nt_assignment; end + + # source://idlc//lib/idlc/idl_parser.rb#889 def _nt_bitfield_definition; end + + # source://idlc//lib/idlc/idl_parser.rb#6576 def _nt_bits_cast; end + + # source://idlc//lib/idlc/idl_parser.rb#9484 def _nt_body_function_definition; end + + # source://idlc//lib/idlc/idl_parser.rb#10248 def _nt_builtin_function_definition; end + + # source://idlc//lib/idlc/idl_parser.rb#16220 def _nt_builtin_read_only_var; end + + # source://idlc//lib/idlc/idl_parser.rb#16244 def _nt_builtin_read_write_var; end + + # source://idlc//lib/idlc/idl_parser.rb#14581 def _nt_builtin_type_name; end + + # source://idlc//lib/idlc/idl_parser.rb#15830 def _nt_comment; end + + # source://idlc//lib/idlc/idl_parser.rb#5747 def _nt_concatenation_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#8484 + def _nt_constraint_body; end + + # source://idlc//lib/idlc/idl_parser.rb#5888 def _nt_csr_field_access_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#16326 def _nt_csr_field_name; end + + # source://idlc//lib/idlc/idl_parser.rb#16271 def _nt_csr_name; end + + # source://idlc//lib/idlc/idl_parser.rb#5962 def _nt_csr_register_access_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#12080 def _nt_declaration; end + + # source://idlc//lib/idlc/idl_parser.rb#12520 def _nt_dontcare_lvalue; end + + # source://idlc//lib/idlc/idl_parser.rb#12544 def _nt_dontcare_return; end + + # source://idlc//lib/idlc/idl_parser.rb#468 def _nt_enum_definition; end + + # source://idlc//lib/idlc/idl_parser.rb#780 def _nt_enum_ref; end + + # source://idlc//lib/idlc/idl_parser.rb#6699 + def _nt_enum_to_a; end + + # source://idlc//lib/idlc/idl_parser.rb#13629 def _nt_execute_if_block; end + + # source://idlc//lib/idlc/idl_parser.rb#8574 def _nt_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#10703 def _nt_fetch; end + + # source://idlc//lib/idlc/idl_parser.rb#6058 def _nt_field_access_eligible_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#6106 def _nt_field_access_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#15704 def _nt_field_name; end + + # source://idlc//lib/idlc/idl_parser.rb#14238 def _nt_for_loop; end + + # source://idlc//lib/idlc/idl_parser.rb#11948 + def _nt_for_loop_iteration_variable_declaration; end + + # source://idlc//lib/idlc/idl_parser.rb#9302 def _nt_function_arg_list; end + + # source://idlc//lib/idlc/idl_parser.rb#15978 def _nt_function_body; end + + # source://idlc//lib/idlc/idl_parser.rb#8787 def _nt_function_call; end + + # source://idlc//lib/idlc/idl_parser.rb#8654 def _nt_function_call_template_arguments; end + + # source://idlc//lib/idlc/idl_parser.rb#10799 def _nt_function_definition; end + + # source://idlc//lib/idlc/idl_parser.rb#12971 def _nt_function_if_block; end + + # source://idlc//lib/idlc/idl_parser.rb#9207 def _nt_function_name; end + + # source://idlc//lib/idlc/idl_parser.rb#15921 def _nt_function_statement; end + + # source://idlc//lib/idlc/idl_parser.rb#290 def _nt_global_definition; end + + # source://idlc//lib/idlc/idl_parser.rb#16156 def _nt_id; end + + # source://idlc//lib/idlc/idl_parser.rb#8020 + def _nt_implication_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#8118 + def _nt_implication_for_loop; end + + # source://idlc//lib/idlc/idl_parser.rb#8421 + def _nt_implication_statement; end + + # source://idlc//lib/idlc/idl_parser.rb#196 def _nt_include_statement; end + + # source://idlc//lib/idlc/idl_parser.rb#16062 def _nt_instruction_operation; end + + # source://idlc//lib/idlc/idl_parser.rb#1529 def _nt_int; end + + # source://idlc//lib/idlc/idl_parser.rb#26 def _nt_isa; end + + # source://idlc//lib/idlc/idl_parser.rb#14958 def _nt_keyword; end + + # source://idlc//lib/idlc/idl_parser.rb#3517 def _nt_p0_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#2897 def _nt_p0_binary_operator; end + + # source://idlc//lib/idlc/idl_parser.rb#3635 def _nt_p1_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#2965 def _nt_p1_binary_operator; end + + # source://idlc//lib/idlc/idl_parser.rb#3753 def _nt_p2_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#3033 def _nt_p2_binary_operator; end + + # source://idlc//lib/idlc/idl_parser.rb#3871 def _nt_p3_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#3101 def _nt_p3_binary_operator; end + + # source://idlc//lib/idlc/idl_parser.rb#3169 def _nt_p3_template_binary_operator; end + + # source://idlc//lib/idlc/idl_parser.rb#4107 def _nt_p4_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#3213 def _nt_p4_binary_operator; end + + # source://idlc//lib/idlc/idl_parser.rb#4343 def _nt_p5_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#3260 def _nt_p5_binary_operator; end + + # source://idlc//lib/idlc/idl_parser.rb#4579 def _nt_p6_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#3313 def _nt_p6_binary_operator; end + + # source://idlc//lib/idlc/idl_parser.rb#4815 def _nt_p7_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#3340 def _nt_p7_binary_operator; end + + # source://idlc//lib/idlc/idl_parser.rb#5051 def _nt_p8_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#3393 def _nt_p8_binary_operator; end + + # source://idlc//lib/idlc/idl_parser.rb#5287 def _nt_p9_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#3417 def _nt_p9_binary_operator; end + + # source://idlc//lib/idlc/idl_parser.rb#5510 def _nt_paren_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#6462 def _nt_post_dec; end + + # source://idlc//lib/idlc/idl_parser.rb#6519 def _nt_post_inc; end + + # source://idlc//lib/idlc/idl_parser.rb#5594 def _nt_replication_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#15788 def _nt_reserved; end + + # source://idlc//lib/idlc/idl_parser.rb#12596 def _nt_return_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#12778 def _nt_return_statement; end + + # source://idlc//lib/idlc/idl_parser.rb#10831 def _nt_rval; end + + # source://idlc//lib/idlc/idl_parser.rb#12252 def _nt_single_declaration; end + + # source://idlc//lib/idlc/idl_parser.rb#11819 def _nt_single_declaration_with_initialization; end + + # source://idlc//lib/idlc/idl_parser.rb#16596 def _nt_space; end + + # source://idlc//lib/idlc/idl_parser.rb#12350 def _nt_statement; end + + # source://idlc//lib/idlc/idl_parser.rb#16501 def _nt_string; end + + # source://idlc//lib/idlc/idl_parser.rb#1213 def _nt_struct_definition; end + + # source://idlc//lib/idlc/idl_parser.rb#8606 def _nt_template_safe_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#3989 def _nt_template_safe_p3_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#4225 def _nt_template_safe_p4_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#4461 def _nt_template_safe_p5_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#4697 def _nt_template_safe_p6_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#4933 def _nt_template_safe_p7_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#5169 def _nt_template_safe_p8_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#5405 def _nt_template_safe_p9_binary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#7903 def _nt_template_safe_ternary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#7782 def _nt_ternary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#15756 def _nt_type_name; end + + # source://idlc//lib/idlc/idl_parser.rb#6866 def _nt_unary_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#3441 def _nt_unary_operator; end + + # source://idlc//lib/idlc/idl_parser.rb#15637 def _nt_user_type_name; end + + # source://idlc//lib/idlc/idl_parser.rb#16385 def _nt_var_write; end + + # source://idlc//lib/idlc/idl_parser.rb#1397 def _nt_version_string; end + + # source://idlc//lib/idlc/idl_parser.rb#12 def root; end + + class << self + # source://idlc//lib/idlc/log.rb#15 + sig { returns(::Logger) } + def logger; end + + # source://idlc//lib/idlc/log.rb#20 + sig { params(logger: ::Logger).returns(::Logger) } + def set_logger(logger); end + end end -# source://idlc//lib/idlc/ast.rb#3935 +# source://idlc//lib/idlc/ast.rb#1125 +class Idl::ArrayIncludesAst < ::Idl::AstNode + include ::Idl::Rvalue + + # source://idlc//lib/idlc/ast.rb#1135 + sig do + params( + input: ::String, + interval: T::Range[::Integer], + ary: T.all(::Idl::AstNode, ::Idl::Rvalue), + value: T.all(::Idl::AstNode, ::Idl::Rvalue) + ).void + end + def initialize(input, interval, ary, value); end + + # source://idlc//lib/idlc/ast.rb#1129 + sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } + def ary; end + + # source://idlc//lib/idlc/ast.rb#1163 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } + def const_eval?(symtab); end + + # source://idlc//lib/idlc/ast.rb#1132 + sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } + def expr; end + + # source://idlc//lib/idlc/passes/gen_adoc.rb#304 + def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end + + # source://idlc//lib/idlc/ast.rb#1166 + sig { override.returns(::String) } + def to_idl; end + + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#142 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#1153 + sig { override.params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } + def type(symtab); end + + # source://idlc//lib/idlc/ast.rb#1140 + sig { override.params(symtab: ::Idl::SymbolTable).void } + def type_check(symtab); end + + # source://idlc//lib/idlc/ast.rb#1158 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } + def value(symtab); end +end + +# source://idlc//lib/idlc/ast.rb#1119 +class Idl::ArrayIncludesSyntaxNode < ::Idl::SyntaxNode + # source://idlc//lib/idlc/ast.rb#1120 + def to_ast; end +end + +# source://idlc//lib/idlc/ast.rb#4297 class Idl::ArrayLiteralAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#3939 + # source://idlc//lib/idlc/ast.rb#4301 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#3943 + # source://idlc//lib/idlc/ast.rb#4305 def element_nodes; end - # source://idlc//lib/idlc/ast.rb#3941 + # source://idlc//lib/idlc/ast.rb#4303 def entries; end - # source://idlc//lib/idlc/ast.rb#3967 + # source://idlc//lib/idlc/ast.rb#4329 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#3958 + # source://idlc//lib/idlc/ast.rb#4320 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#3948 + # source://idlc//lib/idlc/ast.rb#4310 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#3962 + # source://idlc//lib/idlc/ast.rb#4324 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#3929 +# source://idlc//lib/idlc/ast.rb#4291 class Idl::ArrayLiteralSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#3930 + # source://idlc//lib/idlc/ast.rb#4292 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#1055 +# source://idlc//lib/idlc/ast.rb#1175 class Idl::ArraySizeAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#1062 + include ::Idl::Rvalue + + # source://idlc//lib/idlc/ast.rb#1184 def initialize(input, interval, expression); end - # source://idlc//lib/idlc/ast.rb#1060 + # source://idlc//lib/idlc/ast.rb#1182 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#1057 + # source://idlc//lib/idlc/ast.rb#1179 def expression; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#287 + # source://idlc//lib/idlc/passes/gen_adoc.rb#298 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#1088 + # source://idlc//lib/idlc/ast.rb#1213 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1073 + # source://idlc//lib/idlc/ast.rb#1195 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#1066 + # source://idlc//lib/idlc/ast.rb#1188 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#1083 + # source://idlc//lib/idlc/ast.rb#1206 + sig { override.params(symtab: ::Idl::SymbolTable).returns(::Integer) } def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#1049 +# source://idlc//lib/idlc/ast.rb#1169 class Idl::ArraySizeSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#1050 + # source://idlc//lib/idlc/ast.rb#1170 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#1740 +# source://idlc//lib/idlc/idl_parser.rb#6247 +module Idl::AryAccess0 + # source://idlc//lib/idlc/idl_parser.rb#6248 + def expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#6254 +module Idl::AryAccess1 + # source://idlc//lib/idlc/idl_parser.rb#6259 + def lsb; end + + # source://idlc//lib/idlc/idl_parser.rb#6255 + def msb; end +end + +# source://idlc//lib/idlc/idl_parser.rb#6265 +module Idl::AryAccess2 + # source://idlc//lib/idlc/idl_parser.rb#6266 + def a; end + + # source://idlc//lib/idlc/idl_parser.rb#6270 + def brackets; end +end + +# source://idlc//lib/idlc/ast.rb#1867 class Idl::AryAccessSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#1744 + # source://idlc//lib/idlc/ast.rb#1871 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#1760 +# source://idlc//lib/idlc/ast.rb#1887 class Idl::AryElementAccessAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#1775 + # source://idlc//lib/idlc/ast.rb#1902 def initialize(input, interval, var, index); end - # source://idlc//lib/idlc/ast.rb#1764 + # source://idlc//lib/idlc/ast.rb#1891 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#218 + # source://idlc//lib/idlc/passes/gen_adoc.rb#229 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#1773 + # source://idlc//lib/idlc/ast.rb#1900 def index; end - # source://idlc//lib/idlc/ast.rb#1841 + # source://idlc//lib/idlc/ast.rb#1972 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1810 + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#113 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#1937 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#1780 + # source://idlc//lib/idlc/ast.rb#1907 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#1821 + # source://idlc//lib/idlc/ast.rb#1952 def value(symtab); end - # source://idlc//lib/idlc/ast.rb#1772 + # source://idlc//lib/idlc/ast.rb#1899 def var; end end -# source://idlc//lib/idlc/ast.rb#2059 +# source://idlc//lib/idlc/ast.rb#2204 class Idl::AryElementAssignmentAst < ::Idl::AstNode include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#2081 + # source://idlc//lib/idlc/ast.rb#2226 def initialize(input, interval, lhs, idx, rhs); end - # source://idlc//lib/idlc/ast.rb#2063 + # source://idlc//lib/idlc/ast.rb#2208 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#2120 + # source://idlc//lib/idlc/ast.rb#2265 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#2150 + # source://idlc//lib/idlc/ast.rb#2295 def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#242 + # source://idlc//lib/idlc/passes/gen_adoc.rb#253 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#2078 + # source://idlc//lib/idlc/ast.rb#2223 def idx; end - # source://idlc//lib/idlc/ast.rb#2077 + # source://idlc//lib/idlc/ast.rb#2222 def lhs; end - # source://idlc//lib/idlc/ast.rb#2079 + # source://idlc//lib/idlc/ast.rb#2224 def rhs; end - # source://idlc//lib/idlc/ast.rb#2185 + # source://idlc//lib/idlc/ast.rb#2330 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#2086 + # source://idlc//lib/idlc/ast.rb#2231 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#2049 +# source://idlc//lib/idlc/ast.rb#2194 class Idl::AryElementAssignmentSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#2050 + # source://idlc//lib/idlc/ast.rb#2195 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#1844 +# source://idlc//lib/idlc/ast.rb#1975 class Idl::AryRangeAccessAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#1860 + # source://idlc//lib/idlc/ast.rb#1993 def initialize(input, interval, var, msb, lsb); end - # source://idlc//lib/idlc/ast.rb#1848 + # source://idlc//lib/idlc/ast.rb#1979 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#157 + # source://idlc//lib/idlc/passes/gen_adoc.rb#168 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#1858 + # source://idlc//lib/idlc/ast.rb#1991 def lsb; end - # source://idlc//lib/idlc/ast.rb#1857 + # source://idlc//lib/idlc/ast.rb#1990 def msb; end - # source://idlc//lib/idlc/ast.rb#1909 + # source://idlc//lib/idlc/ast.rb#2046 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1890 + # source://idlc//lib/idlc/ast.rb#2023 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#1865 + # source://idlc//lib/idlc/ast.rb#1998 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#1902 + # source://idlc//lib/idlc/ast.rb#2039 def value(symtab); end - # source://idlc//lib/idlc/ast.rb#1856 + # source://idlc//lib/idlc/ast.rb#1989 + sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } def var; end end -# source://idlc//lib/idlc/ast.rb#2198 +# source://idlc//lib/idlc/ast.rb#2343 class Idl::AryRangeAssignmentAst < ::Idl::AstNode include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#2221 + # source://idlc//lib/idlc/ast.rb#2366 def initialize(input, interval, variable, msb, lsb, write_value); end - # source://idlc//lib/idlc/ast.rb#2202 + # source://idlc//lib/idlc/ast.rb#2347 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#2258 + # source://idlc//lib/idlc/ast.rb#2403 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#2286 + # source://idlc//lib/idlc/ast.rb#2431 def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#19 + # source://idlc//lib/idlc/passes/gen_adoc.rb#20 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#2218 + # source://idlc//lib/idlc/ast.rb#2363 def lsb; end - # source://idlc//lib/idlc/ast.rb#2217 + # source://idlc//lib/idlc/ast.rb#2362 def msb; end - # source://idlc//lib/idlc/ast.rb#2253 + # source://idlc//lib/idlc/ast.rb#2398 def rhs; end - # source://idlc//lib/idlc/ast.rb#2292 + # source://idlc//lib/idlc/ast.rb#2437 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#2226 + # source://idlc//lib/idlc/ast.rb#2371 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#2216 + # source://idlc//lib/idlc/ast.rb#2361 def variable; end - # source://idlc//lib/idlc/ast.rb#2219 + # source://idlc//lib/idlc/ast.rb#2364 def write_value; end end -# source://idlc//lib/idlc/ast.rb#2188 +# source://idlc//lib/idlc/ast.rb#2333 class Idl::AryRangeAssignmentSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#2189 + # source://idlc//lib/idlc/ast.rb#2334 def to_ast; end end +# source://idlc//lib/idlc/idl_parser.rb#11721 +module Idl::ArySizeDecl0 + # source://idlc//lib/idlc/idl_parser.rb#11722 + def expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#10881 +module Idl::Assignment0 + # source://idlc//lib/idlc/idl_parser.rb#10882 + def var; end +end + +# source://idlc//lib/idlc/idl_parser.rb#10888 +module Idl::Assignment1 + # source://idlc//lib/idlc/idl_parser.rb#10889 + def first; end + + # source://idlc//lib/idlc/idl_parser.rb#10897 + def function_call; end + + # source://idlc//lib/idlc/idl_parser.rb#10893 + def rest; end +end + +# source://idlc//lib/idlc/idl_parser.rb#10902 +module Idl::Assignment2 + # source://idlc//lib/idlc/idl_parser.rb#10903 + def rval; end +end + +# source://idlc//lib/idlc/idl_parser.rb#10908 +module Idl::Assignment3 + # source://idlc//lib/idlc/idl_parser.rb#10913 + def rval; end + + # source://idlc//lib/idlc/idl_parser.rb#10909 + def var; end +end + +# source://idlc//lib/idlc/idl_parser.rb#10918 +module Idl::Assignment4 + # source://idlc//lib/idlc/idl_parser.rb#10919 + def csr_field_access_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#10923 + def rval; end +end + +# source://idlc//lib/idlc/idl_parser.rb#10928 +module Idl::Assignment5 + # source://idlc//lib/idlc/idl_parser.rb#10933 + def field_name; end + + # source://idlc//lib/idlc/idl_parser.rb#10929 + def id; end + + # source://idlc//lib/idlc/idl_parser.rb#10937 + def rval; end +end + +# source://idlc//lib/idlc/idl_parser.rb#10942 +module Idl::Assignment6 + # source://idlc//lib/idlc/idl_parser.rb#10951 + def lsb; end + + # source://idlc//lib/idlc/idl_parser.rb#10947 + def msb; end + + # source://idlc//lib/idlc/idl_parser.rb#10955 + def rval; end + + # source://idlc//lib/idlc/idl_parser.rb#10943 + def var; end +end + +# source://idlc//lib/idlc/idl_parser.rb#10960 +module Idl::Assignment7 + # source://idlc//lib/idlc/idl_parser.rb#10965 + def idx; end + + # source://idlc//lib/idlc/idl_parser.rb#10969 + def rval; end + + # source://idlc//lib/idlc/idl_parser.rb#10961 + def var; end +end + # source://idlc//lib/idlc/type.rb#11 class Idl::AstNode abstract! - # source://idlc//lib/idlc/ast.rb#193 + # source://idlc//lib/idlc/ast.rb#205 sig { params(input: ::String, interval: T::Range[T.untyped], children: T::Array[::Idl::AstNode]).void } def initialize(input, interval, children); end - # source://idlc//lib/idlc/ast.rb#70 + # source://idlc//lib/idlc/ast.rb#81 sig { returns(T::Array[::Idl::AstNode]) } def children; end - # source://idlc//lib/idlc/ast.rb#187 + # source://idlc//lib/idlc/ast.rb#199 sig { abstract.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#245 + # source://idlc//lib/idlc/ast.rb#257 sig { params(klass: ::Class).returns(T.nilable(::Idl::AstNode)) } def find_ancestor(klass); end - # source://idlc//lib/idlc/ast.rb#422 + # source://idlc//lib/idlc/ast.rb#434 sig { params(global_symtab: ::Idl::SymbolTable).returns(::Idl::AstNode) } def freeze_tree(global_symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#9 + # source://idlc//lib/idlc/passes/gen_adoc.rb#10 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/gen_option_adoc.rb#15 + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#16 def gen_option_adoc; end - # source://idlc//lib/idlc/ast.rb#53 + # source://idlc//lib/idlc/ast.rb#64 sig { returns(::String) } def input; end - # source://idlc//lib/idlc/ast.rb#45 + # source://idlc//lib/idlc/ast.rb#56 sig { returns(::Pathname) } def input_file; end - # source://idlc//lib/idlc/ast.rb#469 + # source://idlc//lib/idlc/ast.rb#481 sig { returns(::String) } def inspect; end - # source://idlc//lib/idlc/ast.rb#356 + # source://idlc//lib/idlc/ast.rb#368 sig { params(reason: ::String).returns(T.noreturn) } def internal_error(reason); end - # source://idlc//lib/idlc/ast.rb#57 + # source://idlc//lib/idlc/ast.rb#68 sig { returns(T::Range[T.untyped]) } def interval; end - # source://idlc//lib/idlc/ast.rb#238 + # source://idlc//lib/idlc/ast.rb#250 sig { returns(::Integer) } def lineno; end - # source://idlc//lib/idlc/ast.rb#263 + # source://idlc//lib/idlc/ast.rb#275 sig { returns(::Idl::AstNode::LinesDescriptor) } def lines_around; end - # source://idlc//lib/idlc/passes/prune.rb#63 + # source://idlc//lib/idlc/passes/prune.rb#64 def nullify_assignments(symtab); end - # source://idlc//lib/idlc/ast.rb#66 + # source://idlc//lib/idlc/ast.rb#77 sig { returns(T.nilable(::Idl::AstNode)) } def parent; end # source://idlc//lib/idlc/passes/find_return_values.rb#11 def pass_find_return_values(values, current_conditions); end - # source://idlc//lib/idlc/ast.rb#431 + # source://idlc//lib/idlc/ast.rb#443 sig { returns(::String) } def path; end - # source://idlc//lib/idlc/ast.rb#405 + # source://idlc//lib/idlc/ast.rb#417 sig { params(indent: ::Integer, indent_size: ::Integer, io: ::IO).void } def print_ast(indent = T.unsafe(nil), indent_size: T.unsafe(nil), io: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/prune.rb#44 + # source://idlc//lib/idlc/passes/prune.rb#45 def prune(symtab); end # source://idlc//lib/idlc/passes/reachable_exceptions.rb#13 def reachable_exceptions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/reachable_functions.rb#11 + # source://idlc//lib/idlc/passes/reachable_functions.rb#12 def reachable_functions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#227 + # source://idlc//lib/idlc/ast.rb#239 sig { params(filename: T.any(::Pathname, ::String), starting_line: ::Integer).void } def set_input_file(filename, starting_line = T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#211 + # source://idlc//lib/idlc/ast.rb#223 sig { params(filename: T.any(::Pathname, ::String), starting_line: ::Integer).void } def set_input_file_unless_already_set(filename, starting_line = T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#49 + # source://idlc//lib/idlc/ast.rb#60 sig { returns(::Integer) } def starting_line; end - # source://idlc//lib/idlc/ast.rb#61 + # source://idlc//lib/idlc/ast.rb#72 sig { returns(::String) } def text_value; end - # source://idlc//lib/idlc/ast.rb#463 + # source://idlc//lib/idlc/ast.rb#475 sig { abstract.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#466 + # source://idlc//lib/idlc/ast.rb#478 sig { overridable.returns(::String) } def to_idl_verbose; end - # source://idlc//lib/idlc/ast.rb#291 + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#18 + sig { overridable.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#303 sig { params(reason: ::String).void } def truncation_warn(reason); end - # source://idlc//lib/idlc/ast.rb#453 + # source://idlc//lib/idlc/ast.rb#465 sig { abstract.params(symtab: ::Idl::SymbolTable).void } def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#307 + # source://idlc//lib/idlc/ast.rb#319 sig { params(reason: ::String).returns(T.noreturn) } def type_error(reason); end - # source://idlc//lib/idlc/ast.rb#395 + # source://idlc//lib/idlc/ast.rb#407 sig { params(s: ::String).returns(::String) } def unindent(s); end - # source://idlc//lib/idlc/ast.rb#181 + # source://idlc//lib/idlc/ast.rb#193 sig { params(value_result: T.untyped, block: T.proc.returns(T.untyped)).returns(T.untyped) } def value_else(value_result, &block); end - # source://idlc//lib/idlc/ast.rb#386 + # source://idlc//lib/idlc/ast.rb#398 sig { params(reason: ::String).returns(T.noreturn) } def value_error(reason); end - # source://idlc//lib/idlc/ast.rb#172 + # source://idlc//lib/idlc/ast.rb#183 sig { params(block: T.proc.params(arg0: ::Object).returns(T.untyped)).returns(T.untyped) } def value_try(&block); end class << self - # source://idlc//lib/idlc/ast.rb#175 + # source://idlc//lib/idlc/ast.rb#186 sig { params(value_result: T.untyped, _block: T.proc.returns(T.untyped)).returns(T.untyped) } def value_else(value_result, &_block); end - # source://idlc//lib/idlc/ast.rb#377 + # source://idlc//lib/idlc/ast.rb#389 sig { params(reason: ::String, ast: T.nilable(::Idl::AstNode)).returns(T.noreturn) } def value_error(reason, ast = T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#369 + # source://idlc//lib/idlc/ast.rb#381 def value_error_ast; end - # source://idlc//lib/idlc/ast.rb#369 + # source://idlc//lib/idlc/ast.rb#381 def value_error_ast=(_arg0); end - # source://idlc//lib/idlc/ast.rb#369 + # source://idlc//lib/idlc/ast.rb#381 def value_error_reason; end - # source://idlc//lib/idlc/ast.rb#369 + # source://idlc//lib/idlc/ast.rb#381 def value_error_reason=(_arg0); end - # source://idlc//lib/idlc/ast.rb#168 + # source://idlc//lib/idlc/ast.rb#179 sig { params(block: T.proc.params(arg0: ::Object).returns(T.untyped)).returns(T.untyped) } def value_try(&block); end end end -# source://idlc//lib/idlc/ast.rb#103 +# source://idlc//lib/idlc/ast.rb#43 +Idl::AstNode::Bits1Type = T.let(T.unsafe(nil), Idl::Type) + +# source://idlc//lib/idlc/ast.rb#45 +Idl::AstNode::Bits32Type = T.let(T.unsafe(nil), Idl::Type) + +# source://idlc//lib/idlc/ast.rb#47 +Idl::AstNode::Bits64Type = T.let(T.unsafe(nil), Idl::Type) + +# source://idlc//lib/idlc/ast.rb#50 +Idl::AstNode::BoolType = T.let(T.unsafe(nil), Idl::Type) + +# source://idlc//lib/idlc/ast.rb#49 +Idl::AstNode::ConstBoolType = T.let(T.unsafe(nil), Idl::Type) + +# source://idlc//lib/idlc/ast.rb#114 class Idl::AstNode::InternalError < ::StandardError - # source://idlc//lib/idlc/ast.rb#119 + # source://idlc//lib/idlc/ast.rb#130 sig { params(what: ::String).void } def initialize(what); end - # source://idlc//lib/idlc/ast.rb#116 + # source://idlc//lib/idlc/ast.rb#127 sig { returns(T::Array[::String]) } def bt; end - # source://idlc//lib/idlc/ast.rb#108 + # source://idlc//lib/idlc/ast.rb#119 sig { returns(::String) } def what; end end -# source://idlc//lib/idlc/ast.rb#255 +# source://idlc//lib/idlc/ast.rb#267 class Idl::AstNode::LinesDescriptor < ::T::Struct const :lines, ::String const :problem_interval, T::Range[T.untyped] const :lines_interval, T::Range[T.untyped] class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end -# source://idlc//lib/idlc/ast.rb#73 +# source://idlc//lib/idlc/ast.rb#44 +Idl::AstNode::PossiblyUnknownBits1Type = T.let(T.unsafe(nil), Idl::Type) + +# source://idlc//lib/idlc/ast.rb#46 +Idl::AstNode::PossiblyUnknownBits32Type = T.let(T.unsafe(nil), Idl::Type) + +# source://idlc//lib/idlc/ast.rb#48 +Idl::AstNode::PossiblyUnknownBits64Type = T.let(T.unsafe(nil), Idl::Type) + +# source://idlc//lib/idlc/ast.rb#52 +Idl::AstNode::StringType = T.let(T.unsafe(nil), Idl::Type) + +# source://idlc//lib/idlc/ast.rb#84 class Idl::AstNode::TypeError < ::StandardError - # source://idlc//lib/idlc/ast.rb#90 + # source://idlc//lib/idlc/ast.rb#101 sig { params(what: ::String).void } def initialize(what); end - # source://idlc//lib/idlc/ast.rb#86 + # source://idlc//lib/idlc/ast.rb#97 sig { returns(T::Array[::String]) } def bt; end - # source://idlc//lib/idlc/ast.rb#78 + # source://idlc//lib/idlc/ast.rb#89 sig { returns(::String) } def what; end end -# source://idlc//lib/idlc/ast.rb#133 +# source://idlc//lib/idlc/ast.rb#144 class Idl::AstNode::ValueError < ::StandardError - # source://idlc//lib/idlc/ast.rb#146 + # source://idlc//lib/idlc/ast.rb#157 sig { params(lineno: ::Integer, file: ::String, reason: ::String).void } def initialize(lineno, file, reason); end - # source://idlc//lib/idlc/ast.rb#140 + # source://idlc//lib/idlc/ast.rb#151 sig { returns(::String) } def file; end - # source://idlc//lib/idlc/ast.rb#137 + # source://idlc//lib/idlc/ast.rb#148 sig { returns(::Integer) } def lineno; end - # source://idlc//lib/idlc/ast.rb#157 + # source://idlc//lib/idlc/ast.rb#168 sig { returns(::String) } def message; end - # source://idlc//lib/idlc/ast.rb#143 + # source://idlc//lib/idlc/ast.rb#154 sig { returns(::String) } def reason; end - # source://idlc//lib/idlc/ast.rb#154 + # source://idlc//lib/idlc/ast.rb#165 sig { returns(::String) } def what; end end +# source://idlc//lib/idlc/ast.rb#51 +Idl::AstNode::VoidType = T.let(T.unsafe(nil), Idl::Type) + # source://idlc//lib/idlc/ast.rb#16 Idl::BasicValueRbType = T.type_alias { T.any(::Integer, ::String, T::Array[::Integer], T::Array[::String], T::Array[T::Boolean], T::Boolean) } -# source://idlc//lib/idlc/ast.rb#3167 +# source://idlc//lib/idlc/ast.rb#3472 class Idl::BinaryExpressionAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#3186 + # source://idlc//lib/idlc/ast.rb#3491 def initialize(input, interval, lhs, op, rhs); end - # source://idlc//lib/idlc/ast.rb#3376 + # source://idlc//lib/idlc/ast.rb#3738 def bits_needed(value, signed); end - # source://idlc//lib/idlc/ast.rb#3176 + # source://idlc//lib/idlc/ast.rb#3481 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#224 + # source://idlc//lib/idlc/passes/gen_adoc.rb#235 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#3193 + # source://idlc//lib/idlc/ast.rb#3498 def invert(symtab); end - # source://idlc//lib/idlc/ast.rb#3182 + # source://idlc//lib/idlc/ast.rb#3487 def lhs; end - # source://idlc//lib/idlc/ast.rb#3403 + # source://idlc//lib/idlc/ast.rb#3765 def max_value(symtab); end - # source://idlc//lib/idlc/ast.rb#3546 + # source://idlc//lib/idlc/ast.rb#3908 def min_value(symtab); end - # source://idlc//lib/idlc/ast.rb#3890 + # source://idlc//lib/idlc/ast.rb#4252 def op; end - # source://idlc//lib/idlc/passes/prune.rb#237 + # source://idlc//lib/idlc/passes/prune.rb#239 def prune(symtab); end - # source://idlc//lib/idlc/ast.rb#3183 + # source://idlc//lib/idlc/ast.rb#3488 def rhs; end - # source://idlc//lib/idlc/ast.rb#3224 + # source://idlc//lib/idlc/ast.rb#3529 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#3229 + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#201 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#3534 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#3297 + # source://idlc//lib/idlc/ast.rb#3634 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#3696 + # source://idlc//lib/idlc/ast.rb#4058 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#3172 +# source://idlc//lib/idlc/ast.rb#3477 Idl::BinaryExpressionAst::ARITH_OPS = T.let(T.unsafe(nil), Array) -# source://idlc//lib/idlc/ast.rb#3171 +# source://idlc//lib/idlc/ast.rb#3476 Idl::BinaryExpressionAst::BIT_OPS = T.let(T.unsafe(nil), Array) -# source://idlc//lib/idlc/ast.rb#3170 +# source://idlc//lib/idlc/ast.rb#3475 Idl::BinaryExpressionAst::LOGICAL_OPS = T.let(T.unsafe(nil), Array) -# source://idlc//lib/idlc/ast.rb#3173 +# source://idlc//lib/idlc/ast.rb#3478 Idl::BinaryExpressionAst::OPS = T.let(T.unsafe(nil), Array) -# source://idlc//lib/idlc/ast.rb#2970 +# source://idlc//lib/idlc/ast.rb#3134 class Idl::BinaryExpressionRightSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#2974 + # source://idlc//lib/idlc/ast.rb#3138 def to_ast; end - # source://idlc//lib/idlc/ast.rb#2991 + # source://idlc//lib/idlc/ast.rb#3155 def type_check(_symtab); end end -# source://idlc//lib/idlc/ast.rb#1522 +# source://idlc//lib/idlc/idl_parser.rb#847 +module Idl::BitfieldDefinition0 + # source://idlc//lib/idlc/idl_parser.rb#848 + def int; end +end + +# source://idlc//lib/idlc/idl_parser.rb#853 +module Idl::BitfieldDefinition1 + # source://idlc//lib/idlc/idl_parser.rb#854 + def int; end + + # source://idlc//lib/idlc/idl_parser.rb#858 + def lsb; end +end + +# source://idlc//lib/idlc/idl_parser.rb#863 +module Idl::BitfieldDefinition2 + # source://idlc//lib/idlc/idl_parser.rb#864 + def field_name; end + + # source://idlc//lib/idlc/idl_parser.rb#868 + def range; end +end + +# source://idlc//lib/idlc/idl_parser.rb#874 +module Idl::BitfieldDefinition3 + # source://idlc//lib/idlc/idl_parser.rb#883 + def e; end + + # source://idlc//lib/idlc/idl_parser.rb#875 + def int; end + + # source://idlc//lib/idlc/idl_parser.rb#879 + def user_type_name; end +end + +# source://idlc//lib/idlc/ast.rb#1649 class Idl::BitfieldDefinitionAst < ::Idl::AstNode include ::Idl::Declaration - # source://idlc//lib/idlc/ast.rb#1528 + # source://idlc//lib/idlc/ast.rb#1655 def initialize(input, interval, name, size, fields); end - # source://idlc//lib/idlc/ast.rb#1581 + # source://idlc//lib/idlc/ast.rb#1708 def add_symbol(symtab); end - # source://idlc//lib/idlc/ast.rb#1526 + # source://idlc//lib/idlc/ast.rb#1653 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#1553 + # source://idlc//lib/idlc/ast.rb#1680 def element_names; end - # source://idlc//lib/idlc/ast.rb#1561 + # source://idlc//lib/idlc/ast.rb#1688 def element_ranges(symtab); end - # source://idlc//lib/idlc/ast.rb#1537 + # source://idlc//lib/idlc/ast.rb#1664 def freeze_tree(global_symtab); end - # source://idlc//lib/idlc/ast.rb#1603 + # source://idlc//lib/idlc/ast.rb#1730 def name; end - # source://idlc//lib/idlc/ast.rb#1548 + # source://idlc//lib/idlc/ast.rb#1675 def size(symtab); end - # source://idlc//lib/idlc/ast.rb#1610 + # source://idlc//lib/idlc/ast.rb#1737 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1591 + # source://idlc//lib/idlc/ast.rb#1718 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#1568 + # source://idlc//lib/idlc/ast.rb#1695 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#1606 + # source://idlc//lib/idlc/ast.rb#1733 def value(_symtab); end end -# source://idlc//lib/idlc/ast.rb#1491 +# source://idlc//lib/idlc/ast.rb#1618 class Idl::BitfieldDefinitionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#1492 + # source://idlc//lib/idlc/ast.rb#1619 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#1431 +# source://idlc//lib/idlc/ast.rb#1558 class Idl::BitfieldFieldDefinitionAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#1438 + # source://idlc//lib/idlc/ast.rb#1565 def initialize(input, interval, name, msb, lsb); end - # source://idlc//lib/idlc/ast.rb#1436 + # source://idlc//lib/idlc/ast.rb#1563 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#1433 + # source://idlc//lib/idlc/ast.rb#1560 def name; end - # source://idlc//lib/idlc/ast.rb#1473 + # source://idlc//lib/idlc/ast.rb#1600 def range(symtab); end - # source://idlc//lib/idlc/ast.rb#1482 + # source://idlc//lib/idlc/ast.rb#1609 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1451 + # source://idlc//lib/idlc/ast.rb#1578 def type_check(symtab); end end -# source://idlc//lib/idlc/type.rb#617 +# source://idlc//lib/idlc/type.rb#696 class Idl::BitfieldType < ::Idl::Type - # source://idlc//lib/idlc/type.rb#618 + # source://idlc//lib/idlc/type.rb#697 def initialize(type_name, width, field_names, field_ranges); end - # source://idlc//lib/idlc/type.rb#638 + # source://idlc//lib/idlc/type.rb#717 def clone; end - # source://idlc//lib/idlc/type.rb#634 + # source://idlc//lib/idlc/type.rb#713 def field_names; end - # source://idlc//lib/idlc/type.rb#627 + # source://idlc//lib/idlc/type.rb#706 def range(field_name); end end -# source://idlc//lib/idlc/type.rb#902 +# source://idlc//lib/idlc/type.rb#981 Idl::Bits1Type = T.let(T.unsafe(nil), Idl::Type) -# source://idlc//lib/idlc/type.rb#903 +# source://idlc//lib/idlc/type.rb#982 Idl::Bits32Type = T.let(T.unsafe(nil), Idl::Type) -# source://idlc//lib/idlc/type.rb#904 +# source://idlc//lib/idlc/type.rb#983 Idl::Bits64Type = T.let(T.unsafe(nil), Idl::Type) -# source://idlc//lib/idlc/ast.rb#3098 +# source://idlc//lib/idlc/idl_parser.rb#6569 +module Idl::BitsCast0 + # source://idlc//lib/idlc/idl_parser.rb#6570 + def expr; end +end + +# source://idlc//lib/idlc/ast.rb#3403 class Idl::BitsCastAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#3109 + # source://idlc//lib/idlc/ast.rb#3414 def initialize(input, interval, exp); end - # source://idlc//lib/idlc/ast.rb#3102 + # source://idlc//lib/idlc/ast.rb#3407 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#3107 + # source://idlc//lib/idlc/ast.rb#3412 def expr; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#101 + # source://idlc//lib/idlc/passes/gen_adoc.rb#102 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#3164 + # source://idlc//lib/idlc/ast.rb#3469 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#3121 + # source://idlc//lib/idlc/ast.rb#3426 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#3112 + # source://idlc//lib/idlc/ast.rb#3417 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#3141 + # source://idlc//lib/idlc/ast.rb#3446 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#3087 +# source://idlc//lib/idlc/ast.rb#3392 class Idl::BitsCastSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#3088 + # source://idlc//lib/idlc/ast.rb#3393 def to_ast; end end -# source://idlc//lib/idlc/type.rb#905 +# source://idlc//lib/idlc/type.rb#984 Idl::BitsUnknownType = T.let(T.unsafe(nil), Idl::Type) -# source://idlc//lib/idlc/type.rb#908 +# source://idlc//lib/idlc/idl_parser.rb#9392 +module Idl::BodyFunctionDefinition0; end + +# source://idlc//lib/idlc/idl_parser.rb#9395 +module Idl::BodyFunctionDefinition1 + # source://idlc//lib/idlc/idl_parser.rb#9396 + def single_declaration; end +end + +# source://idlc//lib/idlc/idl_parser.rb#9401 +module Idl::BodyFunctionDefinition2 + # source://idlc//lib/idlc/idl_parser.rb#9402 + def first; end + + # source://idlc//lib/idlc/idl_parser.rb#9406 + def rest; end +end + +# source://idlc//lib/idlc/idl_parser.rb#9412 +module Idl::BodyFunctionDefinition3 + # source://idlc//lib/idlc/idl_parser.rb#9413 + def type_name; end +end + +# source://idlc//lib/idlc/idl_parser.rb#9418 +module Idl::BodyFunctionDefinition4 + # source://idlc//lib/idlc/idl_parser.rb#9419 + def first; end + + # source://idlc//lib/idlc/idl_parser.rb#9423 + def rest; end +end + +# source://idlc//lib/idlc/idl_parser.rb#9429 +module Idl::BodyFunctionDefinition5 + # source://idlc//lib/idlc/idl_parser.rb#9430 + def single_declaration; end +end + +# source://idlc//lib/idlc/idl_parser.rb#9435 +module Idl::BodyFunctionDefinition6 + # source://idlc//lib/idlc/idl_parser.rb#9436 + def first; end + + # source://idlc//lib/idlc/idl_parser.rb#9440 + def rest; end +end + +# source://idlc//lib/idlc/idl_parser.rb#9446 +module Idl::BodyFunctionDefinition7 + # source://idlc//lib/idlc/idl_parser.rb#9447 + def function_body; end +end + +# source://idlc//lib/idlc/idl_parser.rb#9453 +module Idl::BodyFunctionDefinition8 + # source://idlc//lib/idlc/idl_parser.rb#9470 + def args; end + + # source://idlc//lib/idlc/idl_parser.rb#9478 + def body_block; end + + # source://idlc//lib/idlc/idl_parser.rb#9474 + def desc; end + + # source://idlc//lib/idlc/idl_parser.rb#9458 + def function_name; end + + # source://idlc//lib/idlc/idl_parser.rb#9466 + def ret; end + + # source://idlc//lib/idlc/idl_parser.rb#9462 + def targs; end + + # source://idlc//lib/idlc/idl_parser.rb#9454 + def type; end +end + +# source://idlc//lib/idlc/type.rb#987 Idl::BoolType = T.let(T.unsafe(nil), Idl::Type) -# source://idlc//lib/idlc/ast.rb#1386 +# source://idlc//lib/idlc/ast.rb#1513 class Idl::BuiltinEnumDefinitionAst < ::Idl::AstNode include ::Idl::Declaration - # source://idlc//lib/idlc/ast.rb#1392 + # source://idlc//lib/idlc/ast.rb#1519 def initialize(input, interval, user_type); end - # source://idlc//lib/idlc/ast.rb#1419 + # source://idlc//lib/idlc/ast.rb#1546 def add_symbol(symtab); end - # source://idlc//lib/idlc/ast.rb#1390 + # source://idlc//lib/idlc/ast.rb#1517 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#1405 + # source://idlc//lib/idlc/ast.rb#1532 def element_names(symtab); end - # source://idlc//lib/idlc/ast.rb#1409 + # source://idlc//lib/idlc/ast.rb#1536 def element_values(symtab); end - # source://idlc//lib/idlc/ast.rb#1424 + # source://idlc//lib/idlc/ast.rb#1551 def name; end - # source://idlc//lib/idlc/ast.rb#1428 + # source://idlc//lib/idlc/ast.rb#1555 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1414 + # source://idlc//lib/idlc/ast.rb#1541 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#1398 + # source://idlc//lib/idlc/ast.rb#1525 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#1375 +# source://idlc//lib/idlc/ast.rb#1502 class Idl::BuiltinEnumDefinitionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#1376 + # source://idlc//lib/idlc/ast.rb#1503 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#5132 +# source://idlc//lib/idlc/idl_parser.rb#10201 +module Idl::BuiltinFunctionDefinition0 + # source://idlc//lib/idlc/idl_parser.rb#10202 + def first; end +end + +# source://idlc//lib/idlc/idl_parser.rb#10208 +module Idl::BuiltinFunctionDefinition1 + # source://idlc//lib/idlc/idl_parser.rb#10209 + def single_declaration; end +end + +# source://idlc//lib/idlc/idl_parser.rb#10214 +module Idl::BuiltinFunctionDefinition2 + # source://idlc//lib/idlc/idl_parser.rb#10215 + def first; end + + # source://idlc//lib/idlc/idl_parser.rb#10219 + def rest; end +end + +# source://idlc//lib/idlc/idl_parser.rb#10225 +module Idl::BuiltinFunctionDefinition3 + # source://idlc//lib/idlc/idl_parser.rb#10238 + def args; end + + # source://idlc//lib/idlc/idl_parser.rb#10242 + def desc; end + + # source://idlc//lib/idlc/idl_parser.rb#10230 + def function_name; end + + # source://idlc//lib/idlc/idl_parser.rb#10234 + def ret; end + + # source://idlc//lib/idlc/idl_parser.rb#10226 + def type; end +end + +# source://idlc//lib/idlc/idl_parser.rb#14559 +module Idl::BuiltinTypeName0; end + +# source://idlc//lib/idlc/idl_parser.rb#14562 +module Idl::BuiltinTypeName1 + # source://idlc//lib/idlc/idl_parser.rb#14563 + def i; end +end + +# source://idlc//lib/idlc/idl_parser.rb#14569 +module Idl::BuiltinTypeName2; end + +# source://idlc//lib/idlc/idl_parser.rb#14572 +module Idl::BuiltinTypeName3; end + +# source://idlc//lib/idlc/idl_parser.rb#14575 +module Idl::BuiltinTypeName4; end + +# source://idlc//lib/idlc/idl_parser.rb#14578 +module Idl::BuiltinTypeName5; end + +# source://idlc//lib/idlc/ast.rb#5533 class Idl::BuiltinTypeNameAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#5139 + # source://idlc//lib/idlc/ast.rb#5540 def initialize(input, interval, type_name, bits_expression); end - # source://idlc//lib/idlc/ast.rb#5137 + # source://idlc//lib/idlc/ast.rb#5538 def bits_expression; end - # source://idlc//lib/idlc/ast.rb#5135 + # source://idlc//lib/idlc/ast.rb#5536 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#5164 + # source://idlc//lib/idlc/ast.rb#5565 def freeze_tree(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#181 + # source://idlc//lib/idlc/passes/gen_adoc.rb#192 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#5215 + # source://idlc//lib/idlc/ast.rb#5618 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#5183 + # source://idlc//lib/idlc/ast.rb#5584 sig { params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } def type(symtab); end - # source://idlc//lib/idlc/ast.rb#5149 + # source://idlc//lib/idlc/ast.rb#5550 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#5111 +# source://idlc//lib/idlc/ast.rb#5512 class Idl::BuiltinTypeNameSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#5112 + # source://idlc//lib/idlc/ast.rb#5513 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#4152 +# source://idlc//lib/idlc/ast.rb#4541 class Idl::BuiltinVariableAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#4168 + # source://idlc//lib/idlc/ast.rb#4557 def initialize(input, interval); end - # source://idlc//lib/idlc/ast.rb#4155 + # source://idlc//lib/idlc/ast.rb#4544 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#202 + # source://idlc//lib/idlc/passes/gen_adoc.rb#213 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#4166 + # source://idlc//lib/idlc/ast.rb#4555 def name; end - # source://idlc//lib/idlc/ast.rb#4196 + # source://idlc//lib/idlc/ast.rb#4585 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4176 + # source://idlc//lib/idlc/ast.rb#4565 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#4172 + # source://idlc//lib/idlc/ast.rb#4561 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#4191 + # source://idlc//lib/idlc/ast.rb#4580 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#4146 +# source://idlc//lib/idlc/ast.rb#4535 class Idl::BuiltinVariableSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4147 + # source://idlc//lib/idlc/ast.rb#4536 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#5090 +# source://idlc//lib/idlc/idl_parser.rb#15820 +module Idl::Comment0; end + +# source://idlc//lib/idlc/idl_parser.rb#15823 +module Idl::Comment1 + # source://idlc//lib/idlc/idl_parser.rb#15824 + def content; end +end + +# source://idlc//lib/idlc/ast.rb#5491 class Idl::CommentAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#5094 + # source://idlc//lib/idlc/ast.rb#5495 def initialize(input, interval); end - # source://idlc//lib/idlc/ast.rb#5092 + # source://idlc//lib/idlc/ast.rb#5493 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#5104 + # source://idlc//lib/idlc/ast.rb#5505 def content; end - # source://idlc//lib/idlc/ast.rb#5107 + # source://idlc//lib/idlc/ast.rb#5508 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#5099 + # source://idlc//lib/idlc/ast.rb#5500 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#5085 +# source://idlc//lib/idlc/ast.rb#5486 class Idl::CommentSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#5086 + # source://idlc//lib/idlc/ast.rb#5487 def to_ast; end end -# source://idlc//lib/idlc.rb#46 +# source://idlc//lib/idlc.rb#57 class Idl::Compiler - # source://idlc//lib/idlc.rb#49 + # source://idlc//lib/idlc.rb#62 def initialize; end - # source://idlc//lib/idlc.rb#244 + # source://idlc//lib/idlc.rb#353 + sig { params(body: ::String, symtab: ::Idl::SymbolTable, pass_error: T::Boolean).returns(::Idl::ConstraintBodyAst) } + def compile_constraint(body, symtab, pass_error: T.unsafe(nil)); end + + # source://idlc//lib/idlc.rb#309 def compile_expression(expression, symtab, pass_error: T.unsafe(nil)); end - # source://idlc//lib/idlc.rb#53 + # source://idlc//lib/idlc.rb#66 def compile_file(path); end - # source://idlc//lib/idlc.rb#124 + # source://idlc//lib/idlc.rb#128 + sig { params(loop: ::String, symtab: ::Idl::SymbolTable, pass_error: T::Boolean).returns(::Idl::ForLoopAst) } + def compile_for_loop(loop, symtab, pass_error: T.unsafe(nil)); end + + # source://idlc//lib/idlc.rb#181 def compile_func_body(body, return_type: T.unsafe(nil), symtab: T.unsafe(nil), name: T.unsafe(nil), input_file: T.unsafe(nil), input_line: T.unsafe(nil), no_rescue: T.unsafe(nil), extra_syms: T.unsafe(nil), type_check: T.unsafe(nil)); end - # source://idlc//lib/idlc.rb#205 + # source://idlc//lib/idlc.rb#270 def compile_inst_operation(inst, symtab:, input_file: T.unsafe(nil), input_line: T.unsafe(nil)); end - # source://idlc//lib/idlc.rb#178 + # source://idlc//lib/idlc.rb#243 def compile_inst_scope(idl, symtab:, input_file:, input_line: T.unsafe(nil)); end - # source://idlc//lib/idlc.rb#47 + # source://idlc//lib/idlc.rb#60 def parser; end - # source://idlc//lib/idlc.rb#216 + # source://idlc//lib/idlc.rb#281 def type_check(ast, symtab, what); end class << self @@ -962,883 +1592,1087 @@ class Idl::Compiler end end -# source://idlc//lib/idlc/ast.rb#3980 +# source://idlc//lib/idlc/idl_parser.rb#5730 +module Idl::ConcatenationExpression0 + # source://idlc//lib/idlc/idl_parser.rb#5731 + def expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#5736 +module Idl::ConcatenationExpression1 + # source://idlc//lib/idlc/idl_parser.rb#5737 + def first; end + + # source://idlc//lib/idlc/idl_parser.rb#5741 + def rest; end +end + +# source://idlc//lib/idlc/ast.rb#4342 class Idl::ConcatenationExpressionAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#3984 + # source://idlc//lib/idlc/ast.rb#4346 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#3986 + # source://idlc//lib/idlc/ast.rb#4348 def expressions; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#96 + # source://idlc//lib/idlc/passes/gen_adoc.rb#97 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#4026 + # source://idlc//lib/idlc/ast.rb#4411 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4002 + # source://idlc//lib/idlc/ast.rb#4364 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#3989 + # source://idlc//lib/idlc/ast.rb#4351 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#4014 + # source://idlc//lib/idlc/ast.rb#4399 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#3970 +# source://idlc//lib/idlc/ast.rb#4332 class Idl::ConcatenationExpressionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#3971 + # source://idlc//lib/idlc/ast.rb#4333 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#5026 +# source://idlc//lib/idlc/ast.rb#5427 class Idl::ConditionalReturnStatementAst < ::Idl::AstNode include ::Idl::Returns - # source://idlc//lib/idlc/ast.rb#5035 + # source://idlc//lib/idlc/ast.rb#5436 def initialize(input, interval, return_expression, condition); end - # source://idlc//lib/idlc/ast.rb#5033 + # source://idlc//lib/idlc/ast.rb#5434 def condition; end - # source://idlc//lib/idlc/ast.rb#5030 + # source://idlc//lib/idlc/ast.rb#5431 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#24 + # source://idlc//lib/idlc/passes/gen_adoc.rb#25 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/prune.rb#411 + # source://idlc//lib/idlc/passes/prune.rb#413 def prune(symtab); end # source://idlc//lib/idlc/passes/reachable_exceptions.rb#150 def reachable_exceptions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/reachable_functions.rb#130 + # source://idlc//lib/idlc/passes/reachable_functions.rb#137 def reachable_functions(symtab, cache); end - # source://idlc//lib/idlc/ast.rb#5032 + # source://idlc//lib/idlc/ast.rb#5433 def return_expression; end - # source://idlc//lib/idlc/ast.rb#5047 + # source://idlc//lib/idlc/ast.rb#5448 def return_type(symtab); end - # source://idlc//lib/idlc/ast.rb#5052 + # source://idlc//lib/idlc/ast.rb#5453 def return_types(symtab); end - # source://idlc//lib/idlc/ast.rb#5058 + # source://idlc//lib/idlc/ast.rb#5459 def return_value(symtab); end - # source://idlc//lib/idlc/ast.rb#5067 + # source://idlc//lib/idlc/ast.rb#5468 def return_values(symtab); end - # source://idlc//lib/idlc/ast.rb#5081 + # source://idlc//lib/idlc/ast.rb#5482 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#5040 + # source://idlc//lib/idlc/ast.rb#5441 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#5020 +# source://idlc//lib/idlc/ast.rb#5421 class Idl::ConditionalReturnStatementSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#5021 + # source://idlc//lib/idlc/ast.rb#5422 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#4728 +# source://idlc//lib/idlc/ast.rb#5129 class Idl::ConditionalStatementAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#4735 + # source://idlc//lib/idlc/ast.rb#5136 def initialize(input, interval, action, condition); end - # source://idlc//lib/idlc/ast.rb#4729 + # source://idlc//lib/idlc/ast.rb#5130 def action; end - # source://idlc//lib/idlc/ast.rb#4730 + # source://idlc//lib/idlc/ast.rb#5131 def condition; end - # source://idlc//lib/idlc/ast.rb#4733 + # source://idlc//lib/idlc/ast.rb#5134 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#4749 + # source://idlc//lib/idlc/ast.rb#5150 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#4765 + # source://idlc//lib/idlc/ast.rb#5166 def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#272 + # source://idlc//lib/idlc/passes/gen_adoc.rb#283 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/prune.rb#426 + # source://idlc//lib/idlc/passes/prune.rb#428 def prune(symtab); end # source://idlc//lib/idlc/passes/reachable_exceptions.rb#166 def reachable_exceptions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/reachable_functions.rb#147 + # source://idlc//lib/idlc/passes/reachable_functions.rb#154 def reachable_functions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#4771 + # source://idlc//lib/idlc/ast.rb#5172 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4740 + # source://idlc//lib/idlc/ast.rb#5141 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#4718 +# source://idlc//lib/idlc/ast.rb#5119 class Idl::ConditionalStatementSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4719 + # source://idlc//lib/idlc/ast.rb#5120 def to_ast; end end -# source://idlc//lib/idlc/type.rb#906 +# source://idlc//lib/idlc/type.rb#985 Idl::ConstBitsUnknownType = T.let(T.unsafe(nil), Idl::Type) -# source://idlc//lib/idlc/type.rb#907 +# source://idlc//lib/idlc/type.rb#986 Idl::ConstBoolType = T.let(T.unsafe(nil), Idl::Type) -# source://idlc//lib/idlc/interfaces.rb#96 +# source://idlc//lib/idlc/idl_parser.rb#8471 +module Idl::ConstraintBody0 + # source://idlc//lib/idlc/idl_parser.rb#8472 + def i; end +end + +# source://idlc//lib/idlc/idl_parser.rb#8478 +module Idl::ConstraintBody1 + # source://idlc//lib/idlc/idl_parser.rb#8479 + def b; end +end + +# source://idlc//lib/idlc/ast.rb#3263 +class Idl::ConstraintBodyAst < ::Idl::AstNode + # source://idlc//lib/idlc/ast.rb#3271 + sig do + params( + input: ::String, + interval: T::Range[::Integer], + stmts: T::Array[T.any(::Idl::ForLoopAst, ::Idl::ImplicationStatementAst)] + ).void + end + def initialize(input, interval, stmts); end + + # source://idlc//lib/idlc/ast.rb#3276 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } + def const_eval?(symtab); end + + # source://idlc//lib/idlc/ast.rb#3289 + sig { params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } + def satisfied?(symtab); end + + # source://idlc//lib/idlc/ast.rb#3279 + sig { returns(T::Array[T.any(::Idl::ForLoopAst, ::Idl::ImplicationStatementAst)]) } + def stmts; end + + # source://idlc//lib/idlc/ast.rb#3296 + sig { override.returns(::String) } + def to_idl; end + + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#53 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#3282 + sig { override.params(symtab: ::Idl::SymbolTable).void } + def type_check(symtab); end +end + +# source://idlc//lib/idlc/ast.rb#3252 +class Idl::ConstraintBodySyntaxNode < ::Idl::SyntaxNode + # source://idlc//lib/idlc/ast.rb#3254 + sig { override.returns(::Idl::ConstraintBodyAst) } + def to_ast; end +end + +# source://idlc//lib/idlc/interfaces.rb#119 module Idl::Csr interface! - # source://idlc//lib/idlc/interfaces.rb#111 + # source://idlc//lib/idlc/interfaces.rb#134 sig { abstract.returns(T::Boolean) } def dynamic_length?; end - # source://idlc//lib/idlc/interfaces.rb#114 + # source://idlc//lib/idlc/interfaces.rb#137 sig { abstract.returns(T::Array[::Idl::CsrField]) } def fields; end - # source://idlc//lib/idlc/interfaces.rb#123 - sig { abstract.params(ext_name: ::String).returns(T::Boolean) } - def implemented_without?(ext_name); end - - # source://idlc//lib/idlc/interfaces.rb#105 + # source://idlc//lib/idlc/interfaces.rb#128 sig { abstract.params(base: T.nilable(::Integer)).returns(T.nilable(::Integer)) } def length(base); end - # source://idlc//lib/idlc/interfaces.rb#108 + # source://idlc//lib/idlc/interfaces.rb#131 sig { abstract.returns(::Integer) } def max_length; end - # source://idlc//lib/idlc/interfaces.rb#102 + # source://idlc//lib/idlc/interfaces.rb#125 sig { abstract.returns(::String) } def name; end - # source://idlc//lib/idlc/interfaces.rb#119 + # source://idlc//lib/idlc/interfaces.rb#142 sig { abstract.returns(T.nilable(::Integer)) } def value; end end -# source://idlc//lib/idlc/interfaces.rb#59 +# source://idlc//lib/idlc/interfaces.rb#73 module Idl::CsrField interface! - # source://idlc//lib/idlc/interfaces.rb#83 + # source://idlc//lib/idlc/interfaces.rb#97 sig { abstract.returns(T::Boolean) } def base32_only?; end - # source://idlc//lib/idlc/interfaces.rb#79 + # source://idlc//lib/idlc/interfaces.rb#93 sig { abstract.returns(T::Boolean) } def base64_only?; end - # source://idlc//lib/idlc/interfaces.rb#69 + # source://idlc//lib/idlc/interfaces.rb#83 sig { abstract.returns(T::Boolean) } def defined_in_all_bases?; end - # source://idlc//lib/idlc/interfaces.rb#72 + # source://idlc//lib/idlc/interfaces.rb#86 sig { abstract.returns(T::Boolean) } def defined_in_base32?; end - # source://idlc//lib/idlc/interfaces.rb#75 + # source://idlc//lib/idlc/interfaces.rb#89 sig { abstract.returns(T::Boolean) } def defined_in_base64?; end - # source://idlc//lib/idlc/interfaces.rb#93 + # source://idlc//lib/idlc/interfaces.rb#113 sig { abstract.returns(T::Boolean) } def exists?; end - # source://idlc//lib/idlc/interfaces.rb#88 + # source://idlc//lib/idlc/interfaces.rb#102 sig { abstract.params(base: T.nilable(::Integer)).returns(T::Range[::Integer]) } def location(base); end - # source://idlc//lib/idlc/interfaces.rb#65 + # source://idlc//lib/idlc/interfaces.rb#79 sig { abstract.returns(::String) } def name; end + + # source://idlc//lib/idlc/interfaces.rb#116 + sig do + abstract + .returns(T.any(::Integer, ::String, T::Array[::Integer], T::Array[::String], T::Array[T::Boolean], T::Boolean, T::Hash[::String, T.any(::Integer, ::String, T::Array[::Integer], T::Array[::String], T::Array[T::Boolean], T::Boolean)])) + end + def reset_value; end + + # source://idlc//lib/idlc/interfaces.rb#108 + sig { abstract.params(base: T.nilable(::Integer)).returns(T.nilable(::String)) } + def type(base); end + + # source://idlc//lib/idlc/interfaces.rb#105 + sig { abstract.params(base: T.nilable(::Integer)).returns(::Integer) } + def width(base); end end -# source://idlc//lib/idlc/ast.rb#2419 +# source://idlc//lib/idlc/idl_parser.rb#5878 +module Idl::CsrFieldAccessExpression0 + # source://idlc//lib/idlc/idl_parser.rb#5879 + def csr; end + + # source://idlc//lib/idlc/idl_parser.rb#5883 + def csr_field_name; end +end + +# source://idlc//lib/idlc/ast.rb#2564 class Idl::CsrFieldAssignmentAst < ::Idl::AstNode include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#2428 + # source://idlc//lib/idlc/ast.rb#2573 def initialize(input, interval, csr_field, write_value); end - # source://idlc//lib/idlc/ast.rb#2423 + # source://idlc//lib/idlc/ast.rb#2568 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#2425 + # source://idlc//lib/idlc/ast.rb#2570 def csr_field; end - # source://idlc//lib/idlc/ast.rb#2460 + # source://idlc//lib/idlc/ast.rb#2605 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#2465 + # source://idlc//lib/idlc/ast.rb#2610 def execute_unknown(symtab); end - # source://idlc//lib/idlc/ast.rb#2448 + # source://idlc//lib/idlc/ast.rb#2593 def field(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#111 + # source://idlc//lib/idlc/passes/gen_adoc.rb#112 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#2468 + # source://idlc//lib/idlc/ast.rb#2613 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#2432 + # source://idlc//lib/idlc/ast.rb#2577 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#2452 + # source://idlc//lib/idlc/ast.rb#2597 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#2426 + # source://idlc//lib/idlc/ast.rb#2571 def write_value; end end -# source://idlc//lib/idlc/ast.rb#2413 +# source://idlc//lib/idlc/ast.rb#2558 class Idl::CsrFieldAssignmentSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#2414 + # source://idlc//lib/idlc/ast.rb#2559 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#7038 +# source://idlc//lib/idlc/idl_parser.rb#16323 +module Idl::CsrFieldName0; end + +# source://idlc//lib/idlc/ast.rb#7511 class Idl::CsrFieldReadExpressionAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#7044 + # source://idlc//lib/idlc/ast.rb#7525 + sig do + params( + input: ::String, + interval: T::Range[::Integer], + csr: ::Idl::CsrReadExpressionAst, + field_name: ::String + ).void + end def initialize(input, interval, csr, field_name); end - # source://idlc//lib/idlc/ast.rb#7105 + # source://idlc//lib/idlc/ast.rb#7585 + sig { params(symtab: ::Idl::SymbolTable).returns(T.nilable(::Idl::Type)) } def calc_type(symtab); end - # source://idlc//lib/idlc/ast.rb#7133 + # source://idlc//lib/idlc/ast.rb#7629 + sig { params(symtab: ::Idl::SymbolTable).void } def calc_value(symtab); end - # source://idlc//lib/idlc/ast.rb#7042 + # source://idlc//lib/idlc/ast.rb#7522 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#7080 + # source://idlc//lib/idlc/ast.rb#7554 + sig { params(symtab: ::Idl::SymbolTable).returns(::Idl::Csr) } def csr_def(symtab); end - # source://idlc//lib/idlc/ast.rb#7084 + # source://idlc//lib/idlc/ast.rb#7559 + sig { returns(::String) } def csr_name; end - # source://idlc//lib/idlc/ast.rb#7086 + # source://idlc//lib/idlc/ast.rb#7534 + sig { params(symtab: ::Idl::SymbolTable).returns(::Idl::Csr) } + def csr_obj(symtab); end + + # source://idlc//lib/idlc/ast.rb#7562 + sig { params(symtab: ::Idl::SymbolTable).returns(::Idl::CsrField) } def field_def(symtab); end - # source://idlc//lib/idlc/ast.rb#7090 + # source://idlc//lib/idlc/ast.rb#7567 + sig { params(symtab: ::Idl::SymbolTable).returns(::String) } def field_name(symtab); end - # source://idlc//lib/idlc/ast.rb#7051 - def freeze_tree(symtab); end - - # source://idlc//lib/idlc/passes/gen_adoc.rb#299 + # source://idlc//lib/idlc/passes/gen_adoc.rb#316 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#7096 + # source://idlc//lib/idlc/ast.rb#7573 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#7101 + # source://idlc//lib/idlc/ast.rb#7579 + sig { override.params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } def type(symtab); end - # source://idlc//lib/idlc/ast.rb#7072 + # source://idlc//lib/idlc/ast.rb#7546 + sig { override.params(symtab: ::Idl::SymbolTable).void } def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#7125 + # source://idlc//lib/idlc/ast.rb#7617 + sig do + override + .params( + symtab: ::Idl::SymbolTable + ).returns(T.any(::Integer, ::String, T::Array[::Integer], T::Array[::String], T::Array[T::Boolean], T::Boolean, T::Hash[::String, T.any(::Integer, ::String, T::Array[::Integer], T::Array[::String], T::Array[T::Boolean], T::Boolean)])) + end def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#7154 +# source://idlc//lib/idlc/ast.rb#7514 +class Idl::CsrFieldReadExpressionAst::MemoizedState < ::T::Struct + prop :csr, T.nilable(::Idl::Csr) + prop :type, T.nilable(::Idl::Type) + prop :value_calculated, T::Boolean + prop :value, T.nilable(::Integer) + + class << self + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 + def inherited(s); end + end +end + +# source://idlc//lib/idlc/ast.rb#7650 class Idl::CsrFieldReadExpressionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#7155 + # source://idlc//lib/idlc/ast.rb#7651 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#7283 +# source://idlc//lib/idlc/ast.rb#7779 class Idl::CsrFunctionCallAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#7301 + # source://idlc//lib/idlc/ast.rb#7797 def initialize(input, interval, function_name, csr, args); end - # source://idlc//lib/idlc/ast.rb#7299 + # source://idlc//lib/idlc/ast.rb#7795 def args; end - # source://idlc//lib/idlc/ast.rb#7287 + # source://idlc//lib/idlc/ast.rb#7783 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#7298 + # source://idlc//lib/idlc/ast.rb#7794 def csr; end - # source://idlc//lib/idlc/ast.rb#7344 + # source://idlc//lib/idlc/ast.rb#7835 def csr_def(symtab); end - # source://idlc//lib/idlc/ast.rb#7338 + # source://idlc//lib/idlc/ast.rb#7829 def csr_known?(symtab); end - # source://idlc//lib/idlc/ast.rb#7342 + # source://idlc//lib/idlc/ast.rb#7833 def csr_name; end - # source://idlc//lib/idlc/ast.rb#7296 + # source://idlc//lib/idlc/ast.rb#7792 def function_name; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#75 + # source://idlc//lib/idlc/passes/gen_adoc.rb#76 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#7377 + # source://idlc//lib/idlc/ast.rb#7859 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#7319 + # source://idlc//lib/idlc/ast.rb#7812 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#7306 + # source://idlc//lib/idlc/ast.rb#7802 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#7349 + # source://idlc//lib/idlc/ast.rb#7840 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#7268 +# source://idlc//lib/idlc/ast.rb#7764 class Idl::CsrFunctionCallSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#7269 + # source://idlc//lib/idlc/ast.rb#7765 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#7160 +# source://idlc//lib/idlc/idl_parser.rb#16268 +module Idl::CsrName0; end + +# source://idlc//lib/idlc/ast.rb#7656 class Idl::CsrReadExpressionAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#7168 + # source://idlc//lib/idlc/ast.rb#7664 def initialize(input, interval, csr_name); end - # source://idlc//lib/idlc/ast.rb#7164 + # source://idlc//lib/idlc/ast.rb#7660 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#7194 + # source://idlc//lib/idlc/ast.rb#7690 def csr_def(symtab); end - # source://idlc//lib/idlc/ast.rb#7198 + # source://idlc//lib/idlc/ast.rb#7694 def csr_known?(symtab); end - # source://idlc//lib/idlc/ast.rb#7166 + # source://idlc//lib/idlc/ast.rb#7662 def csr_name; end - # source://idlc//lib/idlc/ast.rb#7174 + # source://idlc//lib/idlc/ast.rb#7670 def freeze_tree(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#305 + # source://idlc//lib/idlc/passes/gen_adoc.rb#322 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#7213 + # source://idlc//lib/idlc/ast.rb#7709 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#7187 + # source://idlc//lib/idlc/ast.rb#7683 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#7190 + # source://idlc//lib/idlc/ast.rb#7686 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#7203 + # source://idlc//lib/idlc/ast.rb#7699 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#7148 +# source://idlc//lib/idlc/ast.rb#7644 class Idl::CsrReadExpressionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#7149 + # source://idlc//lib/idlc/ast.rb#7645 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#7222 +# source://idlc//lib/idlc/idl_parser.rb#5955 +module Idl::CsrRegisterAccessExpression0 + # source://idlc//lib/idlc/idl_parser.rb#5956 + def csr_name; end +end + +# source://idlc//lib/idlc/ast.rb#7718 class Idl::CsrSoftwareWriteAst < ::Idl::AstNode include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#7231 + # source://idlc//lib/idlc/ast.rb#7727 def initialize(input, interval, csr, expression); end - # source://idlc//lib/idlc/ast.rb#7226 + # source://idlc//lib/idlc/ast.rb#7722 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#7228 + # source://idlc//lib/idlc/ast.rb#7724 def csr; end - # source://idlc//lib/idlc/ast.rb#7245 + # source://idlc//lib/idlc/ast.rb#7741 def csr_known?(symtab); end - # source://idlc//lib/idlc/ast.rb#7249 + # source://idlc//lib/idlc/ast.rb#7745 def csr_name; end - # source://idlc//lib/idlc/ast.rb#7257 + # source://idlc//lib/idlc/ast.rb#7753 def execute(_symtab); end - # source://idlc//lib/idlc/ast.rb#7260 + # source://idlc//lib/idlc/ast.rb#7756 def execute_unknown(_symtab); end - # source://idlc//lib/idlc/ast.rb#7229 + # source://idlc//lib/idlc/ast.rb#7725 def expression; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#81 + # source://idlc//lib/idlc/passes/gen_adoc.rb#82 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#7264 + # source://idlc//lib/idlc/ast.rb#7760 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#7235 + # source://idlc//lib/idlc/ast.rb#7731 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#7252 + # source://idlc//lib/idlc/ast.rb#7748 def value(_symtab); end end -# source://idlc//lib/idlc/ast.rb#7216 +# source://idlc//lib/idlc/ast.rb#7712 class Idl::CsrSoftwareWriteSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#7217 + # source://idlc//lib/idlc/ast.rb#7713 def to_ast; end end -# source://idlc//lib/idlc/type.rb#650 +# source://idlc//lib/idlc/type.rb#729 class Idl::CsrType < ::Idl::Type - # source://idlc//lib/idlc/type.rb#657 + # source://idlc//lib/idlc/type.rb#736 sig { params(csr: ::Idl::Csr, qualifiers: T::Array[::Symbol]).void } def initialize(csr, qualifiers: T.unsafe(nil)); end - # source://idlc//lib/idlc/type.rb#654 + # source://idlc//lib/idlc/type.rb#733 sig { returns(::Idl::Csr) } def csr; end - # source://idlc//lib/idlc/type.rb#662 + # source://idlc//lib/idlc/type.rb#741 sig { returns(T::Array[::Idl::CsrField]) } def fields; end end -# source://idlc//lib/idlc/ast.rb#7386 +# source://idlc//lib/idlc/ast.rb#7868 class Idl::CsrWriteAst < ::Idl::AstNode include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#7394 + # source://idlc//lib/idlc/ast.rb#7876 def initialize(input, interval, idx); end - # source://idlc//lib/idlc/ast.rb#7390 + # source://idlc//lib/idlc/ast.rb#7872 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#7410 + # source://idlc//lib/idlc/ast.rb#7892 def csr_def(symtab); end - # source://idlc//lib/idlc/ast.rb#7429 + # source://idlc//lib/idlc/ast.rb#7911 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#7434 + # source://idlc//lib/idlc/ast.rb#7916 def execute_unknown(symtab); end - # source://idlc//lib/idlc/ast.rb#7392 + # source://idlc//lib/idlc/ast.rb#7874 def idx; end - # source://idlc//lib/idlc/ast.rb#7424 + # source://idlc//lib/idlc/ast.rb#7906 def name(symtab); end - # source://idlc//lib/idlc/ast.rb#7438 + # source://idlc//lib/idlc/ast.rb#7920 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#7420 + # source://idlc//lib/idlc/ast.rb#7902 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#7399 + # source://idlc//lib/idlc/ast.rb#7881 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#7382 +# source://idlc//lib/idlc/ast.rb#7864 class Idl::CsrWriteSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#7383 + # source://idlc//lib/idlc/ast.rb#7865 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#700 +# source://idlc//lib/idlc/ast.rb#714 module Idl::Declaration interface! - # source://idlc//lib/idlc/ast.rb#710 + # source://idlc//lib/idlc/ast.rb#724 sig { abstract.params(symtab: ::Idl::SymbolTable).void } def add_symbol(symtab); end end -# source://idlc//lib/idlc/ast.rb#4832 +# source://idlc//lib/idlc/idl_parser.rb#12059 +module Idl::Declaration0 + # source://idlc//lib/idlc/idl_parser.rb#12060 + def id; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12065 +module Idl::Declaration1 + # source://idlc//lib/idlc/idl_parser.rb#12070 + def first; end + + # source://idlc//lib/idlc/idl_parser.rb#12074 + def rest; end + + # source://idlc//lib/idlc/idl_parser.rb#12066 + def type_name; end +end + +# source://idlc//lib/idlc/ast.rb#5233 class Idl::DontCareLvalueAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#4838 + # source://idlc//lib/idlc/ast.rb#5239 def initialize(input, interval); end - # source://idlc//lib/idlc/ast.rb#4836 + # source://idlc//lib/idlc/ast.rb#5237 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#4854 + # source://idlc//lib/idlc/ast.rb#5255 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4846 + # source://idlc//lib/idlc/ast.rb#5247 def type(_symtab); end - # source://idlc//lib/idlc/ast.rb#4841 + # source://idlc//lib/idlc/ast.rb#5242 def type_check(_symtab); end - # source://idlc//lib/idlc/ast.rb#4851 + # source://idlc//lib/idlc/ast.rb#5252 def value(_symtab); end end -# source://idlc//lib/idlc/ast.rb#4828 +# source://idlc//lib/idlc/ast.rb#5229 class Idl::DontCareLvalueSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4829 + # source://idlc//lib/idlc/ast.rb#5230 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#4786 +# source://idlc//lib/idlc/ast.rb#5187 class Idl::DontCareReturnAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#4792 + # source://idlc//lib/idlc/ast.rb#5193 def initialize(input, interval); end - # source://idlc//lib/idlc/ast.rb#4790 + # source://idlc//lib/idlc/ast.rb#5191 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#60 + # source://idlc//lib/idlc/passes/gen_adoc.rb#61 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#4820 + # source://idlc//lib/idlc/ast.rb#5221 def set_expected_type(t); end - # source://idlc//lib/idlc/ast.rb#4825 + # source://idlc//lib/idlc/ast.rb#5226 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4802 + # source://idlc//lib/idlc/ast.rb#5203 def type(_symtab); end - # source://idlc//lib/idlc/ast.rb#4797 + # source://idlc//lib/idlc/ast.rb#5198 def type_check(_symtab); end - # source://idlc//lib/idlc/ast.rb#4807 + # source://idlc//lib/idlc/ast.rb#5208 def value(_symtab); end end -# source://idlc//lib/idlc/ast.rb#4776 +# source://idlc//lib/idlc/ast.rb#5177 class Idl::DontCareReturnSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4777 + # source://idlc//lib/idlc/ast.rb#5178 def to_ast; end end # source://idlc//lib/idlc/ast.rb#34 Idl::EMPTY_ARRAY = T.let(T.unsafe(nil), Array) -# source://idlc//lib/idlc/ast.rb#6674 +# source://idlc//lib/idlc/ast.rb#7147 class Idl::ElseIfAst < ::Idl::AstNode include ::Idl::Returns - # source://idlc//lib/idlc/ast.rb#6688 + # source://idlc//lib/idlc/ast.rb#7161 def initialize(input, interval, body_interval, cond, body_stmts); end - # source://idlc//lib/idlc/ast.rb#6686 + # source://idlc//lib/idlc/ast.rb#7159 sig { returns(::Idl::IfBodyAst) } def body; end - # source://idlc//lib/idlc/ast.rb#6683 + # source://idlc//lib/idlc/ast.rb#7156 sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } def cond; end - # source://idlc//lib/idlc/ast.rb#6678 + # source://idlc//lib/idlc/ast.rb#7151 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/prune.rb#341 + # source://idlc//lib/idlc/passes/prune.rb#343 def prune(symtab); end - # source://idlc//lib/idlc/ast.rb#6709 + # source://idlc//lib/idlc/ast.rb#7182 sig { override.params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } def return_type(symtab); end - # source://idlc//lib/idlc/ast.rb#6714 + # source://idlc//lib/idlc/ast.rb#7187 def return_value(symtab); end - # source://idlc//lib/idlc/ast.rb#6725 + # source://idlc//lib/idlc/ast.rb#7198 def return_values(symtab); end - # source://idlc//lib/idlc/ast.rb#6737 + # source://idlc//lib/idlc/ast.rb#7210 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#6693 + # source://idlc//lib/idlc/ast.rb#7166 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#1226 +# source://idlc//lib/idlc/ast.rb#1351 class Idl::EnumArrayCastAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#1232 + include ::Idl::Rvalue + + # source://idlc//lib/idlc/ast.rb#1359 def initialize(input, interval, enum_class_name); end - # source://idlc//lib/idlc/ast.rb#1230 + # source://idlc//lib/idlc/ast.rb#1357 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#1227 + # source://idlc//lib/idlc/ast.rb#1354 def enum_class; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#131 + # source://idlc//lib/idlc/passes/gen_adoc.rb#132 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#1254 + # source://idlc//lib/idlc/ast.rb#1381 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1240 + # source://idlc//lib/idlc/ast.rb#1367 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#1236 + # source://idlc//lib/idlc/ast.rb#1363 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#1249 + # source://idlc//lib/idlc/ast.rb#1376 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#1217 +# source://idlc//lib/idlc/ast.rb#1342 class Idl::EnumArrayCastSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#1218 + # source://idlc//lib/idlc/ast.rb#1343 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#1172 +# source://idlc//lib/idlc/ast.rb#1297 class Idl::EnumCastAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#1184 + # source://idlc//lib/idlc/ast.rb#1309 def initialize(input, interval, user_type_name, expression); end - # source://idlc//lib/idlc/ast.rb#1176 + # source://idlc//lib/idlc/ast.rb#1301 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#1179 + # source://idlc//lib/idlc/ast.rb#1304 def enum_name; end - # source://idlc//lib/idlc/ast.rb#1182 + # source://idlc//lib/idlc/ast.rb#1307 def expression; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#106 + # source://idlc//lib/idlc/passes/gen_adoc.rb#107 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#1214 + # source://idlc//lib/idlc/ast.rb#1339 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1206 + # source://idlc//lib/idlc/ast.rb#1331 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#1188 + # source://idlc//lib/idlc/ast.rb#1313 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#1211 + # source://idlc//lib/idlc/ast.rb#1336 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#1166 +# source://idlc//lib/idlc/ast.rb#1291 class Idl::EnumCastSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#1167 + # source://idlc//lib/idlc/ast.rb#1292 def to_ast; end end +# source://idlc//lib/idlc/idl_parser.rb#433 +module Idl::EnumDefinition0 + # source://idlc//lib/idlc/idl_parser.rb#434 + def user_type_name; end +end + +# source://idlc//lib/idlc/idl_parser.rb#440 +module Idl::EnumDefinition1 + # source://idlc//lib/idlc/idl_parser.rb#441 + def int; end +end + +# source://idlc//lib/idlc/idl_parser.rb#447 +module Idl::EnumDefinition2 + # source://idlc//lib/idlc/idl_parser.rb#452 + def i; end + + # source://idlc//lib/idlc/idl_parser.rb#448 + def user_type_name; end +end + +# source://idlc//lib/idlc/idl_parser.rb#457 +module Idl::EnumDefinition3 + # source://idlc//lib/idlc/idl_parser.rb#462 + def e; end + + # source://idlc//lib/idlc/idl_parser.rb#458 + def user_type_name; end +end + # source://idlc//lib/idlc/type.rb#12 class Idl::EnumDefinitionAst < ::Idl::AstNode include ::Idl::Declaration - # source://idlc//lib/idlc/ast.rb#1296 + # source://idlc//lib/idlc/ast.rb#1423 def initialize(input, interval, user_type, element_names, element_values); end - # source://idlc//lib/idlc/ast.rb#1345 + # source://idlc//lib/idlc/ast.rb#1472 def add_symbol(symtab); end - # source://idlc//lib/idlc/ast.rb#1294 + # source://idlc//lib/idlc/ast.rb#1421 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#1320 + # source://idlc//lib/idlc/ast.rb#1447 sig { returns(T::Array[::String]) } def element_names; end - # source://idlc//lib/idlc/ast.rb#1330 + # source://idlc//lib/idlc/ast.rb#1457 sig { returns(T::Array[::Integer]) } def element_values; end - # source://idlc//lib/idlc/ast.rb#1361 + # source://idlc//lib/idlc/ast.rb#1488 def name; end - # source://idlc//lib/idlc/ast.rb#1365 + # source://idlc//lib/idlc/ast.rb#1492 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1353 + # source://idlc//lib/idlc/ast.rb#1480 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#1333 + # source://idlc//lib/idlc/ast.rb#1460 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#1358 + # source://idlc//lib/idlc/ast.rb#1485 def value(_symtab); end end -# source://idlc//lib/idlc/ast.rb#1257 +# source://idlc//lib/idlc/ast.rb#1384 class Idl::EnumDefinitionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#1258 + # source://idlc//lib/idlc/ast.rb#1385 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#1140 +# source://idlc//lib/idlc/ast.rb#1265 class Idl::EnumElementSizeAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#1146 + # source://idlc//lib/idlc/ast.rb#1271 def initialize(input, interval, enum_class_name); end - # source://idlc//lib/idlc/ast.rb#1144 + # source://idlc//lib/idlc/ast.rb#1269 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#1141 + # source://idlc//lib/idlc/ast.rb#1266 def enum_class; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#126 + # source://idlc//lib/idlc/passes/gen_adoc.rb#127 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#1163 + # source://idlc//lib/idlc/ast.rb#1288 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1154 + # source://idlc//lib/idlc/ast.rb#1279 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#1150 + # source://idlc//lib/idlc/ast.rb#1275 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#1158 + # source://idlc//lib/idlc/ast.rb#1283 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#1131 +# source://idlc//lib/idlc/ast.rb#1256 class Idl::EnumElementSizeSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#1132 + # source://idlc//lib/idlc/ast.rb#1257 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#4347 +# source://idlc//lib/idlc/idl_parser.rb#770 +module Idl::EnumRef0 + # source://idlc//lib/idlc/idl_parser.rb#771 + def enum_class; end + + # source://idlc//lib/idlc/idl_parser.rb#775 + def member; end +end + +# source://idlc//lib/idlc/ast.rb#4739 class Idl::EnumRefAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#4356 + # source://idlc//lib/idlc/ast.rb#4748 def initialize(input, interval, class_name, member_name); end - # source://idlc//lib/idlc/ast.rb#4353 + # source://idlc//lib/idlc/ast.rb#4745 def class_name; end - # source://idlc//lib/idlc/ast.rb#4351 + # source://idlc//lib/idlc/ast.rb#4743 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#4365 + # source://idlc//lib/idlc/ast.rb#4757 def freeze_tree(global_symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#116 + # source://idlc//lib/idlc/passes/gen_adoc.rb#117 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/gen_option_adoc.rb#139 + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#148 def gen_option_adoc; end - # source://idlc//lib/idlc/ast.rb#4354 + # source://idlc//lib/idlc/ast.rb#4746 def member_name; end - # source://idlc//lib/idlc/ast.rb#4412 + # source://idlc//lib/idlc/ast.rb#4804 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4388 + # source://idlc//lib/idlc/ast.rb#4780 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#4378 + # source://idlc//lib/idlc/ast.rb#4770 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#4396 + # source://idlc//lib/idlc/ast.rb#4788 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#4336 +# source://idlc//lib/idlc/ast.rb#4728 class Idl::EnumRefSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4337 + # source://idlc//lib/idlc/ast.rb#4729 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#1101 +# source://idlc//lib/idlc/ast.rb#1226 class Idl::EnumSizeAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#1107 + # source://idlc//lib/idlc/ast.rb#1232 def initialize(input, interval, enum_class_name); end - # source://idlc//lib/idlc/ast.rb#1105 + # source://idlc//lib/idlc/ast.rb#1230 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#1102 + # source://idlc//lib/idlc/ast.rb#1227 def enum_class; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#121 + # source://idlc//lib/idlc/passes/gen_adoc.rb#122 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#1128 + # source://idlc//lib/idlc/ast.rb#1253 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1115 + # source://idlc//lib/idlc/ast.rb#1240 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#1111 + # source://idlc//lib/idlc/ast.rb#1236 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#1123 + # source://idlc//lib/idlc/ast.rb#1248 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#1092 +# source://idlc//lib/idlc/ast.rb#1217 class Idl::EnumSizeSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#1093 + # source://idlc//lib/idlc/ast.rb#1218 def to_ast; end end -# source://idlc//lib/idlc/type.rb#547 +# source://idlc//lib/idlc/idl_parser.rb#6692 +module Idl::EnumToA0 + # source://idlc//lib/idlc/idl_parser.rb#6693 + def user_type_name; end +end + +# source://idlc//lib/idlc/type.rb#626 class Idl::EnumerationType < ::Idl::Type - # source://idlc//lib/idlc/type.rb#577 + # source://idlc//lib/idlc/type.rb#656 sig do params( type_name: ::String, @@ -1849,127 +2683,238 @@ class Idl::EnumerationType < ::Idl::Type end def initialize(type_name, element_names, element_values, builtin: T.unsafe(nil)); end - # source://idlc//lib/idlc/type.rb#592 + # source://idlc//lib/idlc/type.rb#671 sig { returns(T::Boolean) } def builtin?; end - # source://idlc//lib/idlc/type.rb#595 + # source://idlc//lib/idlc/type.rb#674 sig { returns(::Idl::EnumerationType) } def clone; end - # source://idlc//lib/idlc/type.rb#608 + # source://idlc//lib/idlc/type.rb#687 sig { params(element_value: ::Integer).returns(T.nilable(::String)) } def element_name(element_value); end - # source://idlc//lib/idlc/type.rb#556 + # source://idlc//lib/idlc/type.rb#635 sig { returns(T::Array[::String]) } def element_names; end - # source://idlc//lib/idlc/type.rb#560 + # source://idlc//lib/idlc/type.rb#639 sig { returns(T::Array[::Integer]) } def element_values; end - # source://idlc//lib/idlc/type.rb#564 + # source://idlc//lib/idlc/type.rb#643 sig { returns(::Idl::Type) } def ref_type; end - # source://idlc//lib/idlc/type.rb#600 + # source://idlc//lib/idlc/type.rb#679 sig { params(element_name: ::String).returns(T.nilable(::Integer)) } def value(element_name); end - # source://idlc//lib/idlc/type.rb#552 + # source://idlc//lib/idlc/type.rb#631 sig { returns(::Integer) } def width; end end -# source://idlc//lib/idlc/ast.rb#473 +# source://idlc//lib/idlc/ast.rb#485 module Idl::Executable interface! - # source://idlc//lib/idlc/ast.rb#495 + # source://idlc//lib/idlc/ast.rb#507 sig { abstract.params(symtab: ::Idl::SymbolTable).void } def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#499 + # source://idlc//lib/idlc/ast.rb#511 sig { abstract.params(symtab: ::Idl::SymbolTable).void } def execute_unknown(symtab); end end -# source://idlc//lib/idlc/ast.rb#5940 +# source://idlc//lib/idlc/ast.rb#514 +Idl::ExecutableAst = T.type_alias { T.all(::Idl::AstNode, ::Idl::Executable) } + +# source://idlc//lib/idlc/idl_parser.rb#13572 +module Idl::ExecuteIfBlock0 + # source://idlc//lib/idlc/idl_parser.rb#13573 + def e; end +end + +# source://idlc//lib/idlc/idl_parser.rb#13579 +module Idl::ExecuteIfBlock1 + # source://idlc//lib/idlc/idl_parser.rb#13580 + def e; end +end + +# source://idlc//lib/idlc/idl_parser.rb#13586 +module Idl::ExecuteIfBlock2 + # source://idlc//lib/idlc/idl_parser.rb#13591 + def body; end + + # source://idlc//lib/idlc/idl_parser.rb#13587 + def expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#13597 +module Idl::ExecuteIfBlock3 + # source://idlc//lib/idlc/idl_parser.rb#13598 + def e; end +end + +# source://idlc//lib/idlc/idl_parser.rb#13604 +module Idl::ExecuteIfBlock4 + # source://idlc//lib/idlc/idl_parser.rb#13605 + def body; end +end + +# source://idlc//lib/idlc/idl_parser.rb#13611 +module Idl::ExecuteIfBlock5 + # source://idlc//lib/idlc/idl_parser.rb#13620 + def elseifs; end + + # source://idlc//lib/idlc/idl_parser.rb#13624 + def final_else; end + + # source://idlc//lib/idlc/idl_parser.rb#13616 + def if_body; end + + # source://idlc//lib/idlc/idl_parser.rb#13612 + def if_cond; end +end + +# source://idlc//lib/idlc/ast.rb#787 +class Idl::FalseExpressionAst < ::Idl::AstNode + include ::Idl::Rvalue + + # source://idlc//lib/idlc/ast.rb#791 + sig { params(input: ::String, interval: T::Range[::Integer]).void } + def initialize(input, interval); end + + # source://idlc//lib/idlc/ast.rb#796 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } + def const_eval?(symtab); end + + # source://idlc//lib/idlc/passes/gen_adoc.rb#153 + def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end + + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#93 + def gen_option_adoc; end + + # source://idlc//lib/idlc/ast.rb#808 + sig { override.returns(::String) } + def to_idl; end + + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#71 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#802 + sig { override.params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } + def type(symtab); end + + # source://idlc//lib/idlc/ast.rb#799 + sig { override.params(symtab: ::Idl::SymbolTable).void } + def type_check(symtab); end + + # source://idlc//lib/idlc/ast.rb#805 + sig { override.params(symtab: ::Idl::SymbolTable).returns(::FalseClass) } + def value(symtab); end +end + +# source://idlc//lib/idlc/ast.rb#783 +class Idl::FalseExpressionSyntaxNode < ::Idl::SyntaxNode + # source://idlc//lib/idlc/ast.rb#784 + def to_ast; end +end + +# source://idlc//lib/idlc/idl_parser.rb#10696 +module Idl::Fetch0 + # source://idlc//lib/idlc/idl_parser.rb#10697 + def function_body; end +end + +# source://idlc//lib/idlc/ast.rb#6376 class Idl::FetchAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#5946 + # source://idlc//lib/idlc/ast.rb#6382 def initialize(input, interval, body); end - # source://idlc//lib/idlc/ast.rb#5944 + # source://idlc//lib/idlc/ast.rb#6380 def body; end - # source://idlc//lib/idlc/ast.rb#5942 + # source://idlc//lib/idlc/ast.rb#6378 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#5954 + # source://idlc//lib/idlc/ast.rb#6390 def return_type(symtab); end - # source://idlc//lib/idlc/ast.rb#5959 + # source://idlc//lib/idlc/ast.rb#6395 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#5950 + # source://idlc//lib/idlc/ast.rb#6386 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#5934 +# source://idlc//lib/idlc/ast.rb#6370 class Idl::FetchSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#5935 + # source://idlc//lib/idlc/ast.rb#6371 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#4270 +# source://idlc//lib/idlc/idl_parser.rb#6096 +module Idl::FieldAccessExpression0 + # source://idlc//lib/idlc/idl_parser.rb#6097 + def field_access_eligible_expression; end + + # source://idlc//lib/idlc/idl_parser.rb#6101 + def field_name; end +end + +# source://idlc//lib/idlc/ast.rb#4662 class Idl::FieldAccessExpressionAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#4279 + # source://idlc//lib/idlc/ast.rb#4671 def initialize(input, interval, bitfield, field_name); end - # source://idlc//lib/idlc/ast.rb#4274 + # source://idlc//lib/idlc/ast.rb#4666 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#86 + # source://idlc//lib/idlc/passes/gen_adoc.rb#87 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#4285 + # source://idlc//lib/idlc/ast.rb#4677 def kind(symtab); end - # source://idlc//lib/idlc/ast.rb#4277 + # source://idlc//lib/idlc/ast.rb#4669 sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } def obj; end - # source://idlc//lib/idlc/ast.rb#4333 + # source://idlc//lib/idlc/ast.rb#4725 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4290 + # source://idlc//lib/idlc/ast.rb#4682 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#4302 + # source://idlc//lib/idlc/ast.rb#4694 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#4320 + # source://idlc//lib/idlc/ast.rb#4712 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#4260 +# source://idlc//lib/idlc/ast.rb#4652 class Idl::FieldAccessExpressionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4261 + # source://idlc//lib/idlc/ast.rb#4653 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#2307 +# source://idlc//lib/idlc/ast.rb#2452 class Idl::FieldAssignmentAst < ::Idl::AstNode include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#2335 + # source://idlc//lib/idlc/ast.rb#2480 sig do params( input: ::String, @@ -1981,361 +2926,562 @@ class Idl::FieldAssignmentAst < ::Idl::AstNode end def initialize(input, interval, id, field_name, rhs); end - # source://idlc//lib/idlc/ast.rb#2320 + # source://idlc//lib/idlc/ast.rb#2465 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#2380 + # source://idlc//lib/idlc/ast.rb#2525 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#2403 + # source://idlc//lib/idlc/ast.rb#2548 def execute_unknown(symtab); end - # source://idlc//lib/idlc/ast.rb#2317 + # source://idlc//lib/idlc/ast.rb#2462 sig { returns(::String) } def field_name; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#91 + # source://idlc//lib/idlc/passes/gen_adoc.rb#92 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#2311 + # source://idlc//lib/idlc/ast.rb#2456 sig { returns(::Idl::IdAst) } def id; end - # source://idlc//lib/idlc/ast.rb#2314 + # source://idlc//lib/idlc/ast.rb#2459 sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } def rhs; end - # source://idlc//lib/idlc/ast.rb#2410 + # source://idlc//lib/idlc/ast.rb#2555 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#2341 + # source://idlc//lib/idlc/ast.rb#2486 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#2355 + # source://idlc//lib/idlc/ast.rb#2500 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#2295 +# source://idlc//lib/idlc/ast.rb#2440 class Idl::FieldAssignmentSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#2296 + # source://idlc//lib/idlc/ast.rb#2441 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#6399 +# source://idlc//lib/idlc/idl_parser.rb#15701 +module Idl::FieldName0; end + +# source://idlc//lib/idlc/idl_parser.rb#14212 +module Idl::ForLoop0 + # source://idlc//lib/idlc/idl_parser.rb#14213 + def s; end +end + +# source://idlc//lib/idlc/idl_parser.rb#14219 +module Idl::ForLoop1 + # source://idlc//lib/idlc/idl_parser.rb#14228 + def action; end + + # source://idlc//lib/idlc/idl_parser.rb#14224 + def condition; end + + # source://idlc//lib/idlc/idl_parser.rb#14220 + def for_loop_iteration_variable_declaration; end + + # source://idlc//lib/idlc/idl_parser.rb#14232 + def stmts; end +end + +# source://idlc//lib/idlc/ast.rb#6841 class Idl::ForLoopAst < ::Idl::AstNode include ::Idl::Executable include ::Idl::Returns - # source://idlc//lib/idlc/ast.rb#6416 + # source://idlc//lib/idlc/ast.rb#6866 def initialize(input, interval, init, condition, update, stmts); end - # source://idlc//lib/idlc/ast.rb#6412 + # source://idlc//lib/idlc/ast.rb#6857 + sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } def condition; end - # source://idlc//lib/idlc/ast.rb#6404 + # source://idlc//lib/idlc/ast.rb#6846 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#6433 + # source://idlc//lib/idlc/ast.rb#6984 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#6516 + # source://idlc//lib/idlc/ast.rb#6987 sig { override.params(symtab: ::Idl::SymbolTable).void } def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#191 + # source://idlc//lib/idlc/passes/gen_adoc.rb#202 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#6411 + # source://idlc//lib/idlc/ast.rb#6854 + sig { returns(::Idl::VariableDeclarationWithInitializationAst) } def init; end - # source://idlc//lib/idlc/passes/prune.rb#116 + # source://idlc//lib/idlc/passes/prune.rb#118 def prune(symtab); end # source://idlc//lib/idlc/passes/reachable_exceptions.rb#197 def reachable_exceptions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/reachable_functions.rb#167 + # source://idlc//lib/idlc/passes/reachable_functions.rb#174 def reachable_functions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#6464 + # source://idlc//lib/idlc/ast.rb#6933 sig { override.params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } def return_type(symtab); end - # source://idlc//lib/idlc/ast.rb#6433 + # source://idlc//lib/idlc/ast.rb#6900 def return_value(symtab); end - # source://idlc//lib/idlc/ast.rb#6470 + # source://idlc//lib/idlc/ast.rb#6939 def return_values(symtab); end - # source://idlc//lib/idlc/ast.rb#6414 + # source://idlc//lib/idlc/ast.rb#6883 + sig { params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } + def satisfied?(symtab); end + + # source://idlc//lib/idlc/ast.rb#6864 + sig do + returns(T::Array[T.any(::Idl::ForLoopAst, ::Idl::IfAst, ::Idl::ImplicationStatementAst, ::Idl::ReturnStatementAst, ::Idl::StatementAst)]) + end def stmts; end - # source://idlc//lib/idlc/ast.rb#6536 + # source://idlc//lib/idlc/ast.rb#7009 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#6421 + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#88 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#6871 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#6413 + # source://idlc//lib/idlc/ast.rb#6860 + sig { returns(T.all(::Idl::AstNode, ::Idl::Executable)) } def update; end end -# source://idlc//lib/idlc/ast.rb#6387 +# source://idlc//lib/idlc/ast.rb#6862 +Idl::ForLoopAst::StmtType = T.type_alias { T.any(::Idl::ForLoopAst, ::Idl::IfAst, ::Idl::ImplicationStatementAst, ::Idl::ReturnStatementAst, ::Idl::StatementAst) } + +# source://idlc//lib/idlc/idl_parser.rb#11930 +module Idl::ForLoopIterationVariableDeclaration0 + # source://idlc//lib/idlc/idl_parser.rb#11939 + def ary_size; end + + # source://idlc//lib/idlc/idl_parser.rb#11935 + def id; end + + # source://idlc//lib/idlc/idl_parser.rb#11943 + def rval; end + + # source://idlc//lib/idlc/idl_parser.rb#11931 + def type_name; end +end + +# source://idlc//lib/idlc/ast.rb#2941 +class Idl::ForLoopIterationVariableDeclarationSyntaxNode < ::Idl::SyntaxNode + # source://idlc//lib/idlc/ast.rb#2942 + def to_ast; end +end + +# source://idlc//lib/idlc/ast.rb#6829 class Idl::ForLoopSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#6388 + # source://idlc//lib/idlc/ast.rb#6830 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#5816 +# source://idlc//lib/idlc/idl_parser.rb#9286 +module Idl::FunctionArgList0 + # source://idlc//lib/idlc/idl_parser.rb#9287 + def expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#9292 +module Idl::FunctionArgList1 + # source://idlc//lib/idlc/idl_parser.rb#9293 + def first; end + + # source://idlc//lib/idlc/idl_parser.rb#9297 + def rest; end +end + +# source://idlc//lib/idlc/idl_parser.rb#15965 +module Idl::FunctionBody0 + # source://idlc//lib/idlc/idl_parser.rb#15966 + def choice; end +end + +# source://idlc//lib/idlc/idl_parser.rb#15972 +module Idl::FunctionBody1 + # source://idlc//lib/idlc/idl_parser.rb#15973 + def func_stmt_list; end +end + +# source://idlc//lib/idlc/ast.rb#6251 class Idl::FunctionBodyAst < ::Idl::AstNode include ::Idl::Executable include ::Idl::Returns - # source://idlc//lib/idlc/ast.rb#5827 + # source://idlc//lib/idlc/ast.rb#6262 def initialize(input, interval, stmts); end - # source://idlc//lib/idlc/ast.rb#5821 + # source://idlc//lib/idlc/ast.rb#6256 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#5874 + # source://idlc//lib/idlc/ast.rb#6325 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#5892 + # source://idlc//lib/idlc/ast.rb#6328 sig { override.params(symtab: ::Idl::SymbolTable).void } def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#293 + # source://idlc//lib/idlc/passes/gen_adoc.rb#310 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/gen_option_adoc.rb#21 + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#22 def gen_option_adoc; end # source://idlc//lib/idlc/passes/find_return_values.rb#67 def pass_find_return_values(symtab); end - # source://idlc//lib/idlc/passes/prune.rb#159 + # source://idlc//lib/idlc/passes/prune.rb#161 def prune(symtab, args_already_applied: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#5859 + # source://idlc//lib/idlc/ast.rb#6294 def return_type(symtab); end - # source://idlc//lib/idlc/ast.rb#5874 + # source://idlc//lib/idlc/ast.rb#6309 def return_value(symtab); end - # source://idlc//lib/idlc/ast.rb#5899 + # source://idlc//lib/idlc/ast.rb#6335 def return_values(symtab); end - # source://idlc//lib/idlc/ast.rb#5831 + # source://idlc//lib/idlc/ast.rb#6266 def statements; end - # source://idlc//lib/idlc/ast.rb#5833 + # source://idlc//lib/idlc/ast.rb#6268 def stmts; end - # source://idlc//lib/idlc/ast.rb#5929 + # source://idlc//lib/idlc/ast.rb#6365 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#5836 + # source://idlc//lib/idlc/ast.rb#6271 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#5809 +# source://idlc//lib/idlc/ast.rb#6244 class Idl::FunctionBodySyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#5811 + # source://idlc//lib/idlc/ast.rb#6246 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#5531 +# source://idlc//lib/idlc/idl_parser.rb#8739 +module Idl::FunctionCall0 + # source://idlc//lib/idlc/idl_parser.rb#8740 + def csr; end + + # source://idlc//lib/idlc/idl_parser.rb#8744 + def expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#8750 +module Idl::FunctionCall1 + # source://idlc//lib/idlc/idl_parser.rb#8751 + def csr; end + + # source://idlc//lib/idlc/idl_parser.rb#8759 + def function_arg_list; end + + # source://idlc//lib/idlc/idl_parser.rb#8755 + def function_name; end +end + +# source://idlc//lib/idlc/idl_parser.rb#8765 +module Idl::FunctionCall2 + # source://idlc//lib/idlc/idl_parser.rb#8766 + def targs; end +end + +# source://idlc//lib/idlc/idl_parser.rb#8772 +module Idl::FunctionCall3 + # source://idlc//lib/idlc/idl_parser.rb#8781 + def function_arg_list; end + + # source://idlc//lib/idlc/idl_parser.rb#8773 + def function_name; end + + # source://idlc//lib/idlc/idl_parser.rb#8777 + def t; end +end + +# source://idlc//lib/idlc/ast.rb#5965 class Idl::FunctionCallExpressionAst < ::Idl::AstNode include ::Idl::Rvalue include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#5546 + # source://idlc//lib/idlc/ast.rb#5980 def initialize(input, interval, function_name, targs, args); end - # source://idlc//lib/idlc/ast.rb#5588 + # source://idlc//lib/idlc/ast.rb#6022 def arg_nodes; end - # source://idlc//lib/idlc/ast.rb#5544 + # source://idlc//lib/idlc/ast.rb#5978 def args; end - # source://idlc//lib/idlc/ast.rb#5537 + # source://idlc//lib/idlc/ast.rb#5971 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#5667 + # source://idlc//lib/idlc/ast.rb#6178 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#5751 + # source://idlc//lib/idlc/ast.rb#6186 def execute_unknown(symtab); end - # source://idlc//lib/idlc/ast.rb#5592 + # source://idlc//lib/idlc/ast.rb#6026 def func_type(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#278 + # source://idlc//lib/idlc/passes/gen_adoc.rb#289 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/gen_option_adoc.rb#27 + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#28 def gen_option_adoc; end - # source://idlc//lib/idlc/ast.rb#5745 + # source://idlc//lib/idlc/ast.rb#6180 def name; end - # source://idlc//lib/idlc/passes/prune.rb#81 + # source://idlc//lib/idlc/passes/prune.rb#82 def prune(symtab); end # source://idlc//lib/idlc/passes/reachable_exceptions.rb#25 def reachable_exceptions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/reachable_functions.rb#20 + # source://idlc//lib/idlc/passes/reachable_functions.rb#21 def reachable_functions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#5543 + # source://idlc//lib/idlc/ast.rb#5977 def targs; end - # source://idlc//lib/idlc/ast.rb#5559 + # source://idlc//lib/idlc/ast.rb#5993 def template?; end - # source://idlc//lib/idlc/ast.rb#5564 + # source://idlc//lib/idlc/ast.rb#5998 def template_arg_nodes; end - # source://idlc//lib/idlc/ast.rb#5568 + # source://idlc//lib/idlc/ast.rb#6002 def template_values(symtab, unknown_ok: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#5755 + # source://idlc//lib/idlc/ast.rb#6190 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#5658 + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#163 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#6092 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#5607 + # source://idlc//lib/idlc/ast.rb#6041 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#5667 + # source://idlc//lib/idlc/ast.rb#6101 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#5521 +# source://idlc//lib/idlc/ast.rb#5955 class Idl::FunctionCallExpressionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#5522 + # source://idlc//lib/idlc/ast.rb#5956 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#5984 +# source://idlc//lib/idlc/idl_parser.rb#8638 +module Idl::FunctionCallTemplateArguments0 + # source://idlc//lib/idlc/idl_parser.rb#8639 + def arg; end +end + +# source://idlc//lib/idlc/idl_parser.rb#8644 +module Idl::FunctionCallTemplateArguments1 + # source://idlc//lib/idlc/idl_parser.rb#8645 + def first; end + + # source://idlc//lib/idlc/idl_parser.rb#8649 + def rest; end +end + +# source://idlc//lib/idlc/ast.rb#6424 class Idl::FunctionDefAst < ::Idl::AstNode include ::Idl::Declaration - # source://idlc//lib/idlc/ast.rb#5998 + # source://idlc//lib/idlc/ast.rb#6438 def initialize(input, interval, name, targs, return_types, arguments, desc, type, body); end - # source://idlc//lib/idlc/ast.rb#6264 + # source://idlc//lib/idlc/ast.rb#6706 def add_symbol(symtab); end - # source://idlc//lib/idlc/ast.rb#6226 + # source://idlc//lib/idlc/ast.rb#6668 def apply_template_and_arg_syms(symtab); end - # source://idlc//lib/idlc/ast.rb#6049 + # source://idlc//lib/idlc/ast.rb#6459 + def argument_nodes; end + + # source://idlc//lib/idlc/ast.rb#6489 def arguments(symtab); end - # source://idlc//lib/idlc/ast.rb#6080 + # source://idlc//lib/idlc/ast.rb#6520 def arguments_list_str; end - # source://idlc//lib/idlc/ast.rb#6316 + # source://idlc//lib/idlc/ast.rb#6758 def body; end - # source://idlc//lib/idlc/ast.rb#6322 + # source://idlc//lib/idlc/ast.rb#6764 def builtin?; end - # source://idlc//lib/idlc/ast.rb#6160 + # source://idlc//lib/idlc/ast.rb#6600 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#6034 + # source://idlc//lib/idlc/ast.rb#6474 def description; end - # source://idlc//lib/idlc/ast.rb#6330 + # source://idlc//lib/idlc/ast.rb#6772 def external?; end - # source://idlc//lib/idlc/ast.rb#6022 + # source://idlc//lib/idlc/ast.rb#6462 def freeze_tree(global_symtab); end - # source://idlc//lib/idlc/ast.rb#6326 + # source://idlc//lib/idlc/ast.rb#6768 def generated?; end - # source://idlc//lib/idlc/ast.rb#6187 + # source://idlc//lib/idlc/ast.rb#6629 def name; end - # source://idlc//lib/idlc/ast.rb#6044 + # source://idlc//lib/idlc/ast.rb#6484 def num_args; end - # source://idlc//lib/idlc/passes/prune.rb#139 + # source://idlc//lib/idlc/passes/prune.rb#141 def prune(symtab); end - # source://idlc//lib/idlc/ast.rb#6019 + # source://idlc//lib/idlc/ast.rb#6459 def reachable_functions_cache; end - # source://idlc//lib/idlc/ast.rb#6085 + # source://idlc//lib/idlc/ast.rb#6525 def return_type(symtab); end - # source://idlc//lib/idlc/ast.rb#6148 + # source://idlc//lib/idlc/ast.rb#6588 def return_type_list_str; end - # source://idlc//lib/idlc/ast.rb#5987 + # source://idlc//lib/idlc/ast.rb#6427 def return_type_nodes; end - # source://idlc//lib/idlc/ast.rb#6278 + # source://idlc//lib/idlc/ast.rb#6720 def template_names; end - # source://idlc//lib/idlc/ast.rb#6284 + # source://idlc//lib/idlc/ast.rb#6726 def template_types(symtab); end - # source://idlc//lib/idlc/ast.rb#6039 + # source://idlc//lib/idlc/ast.rb#6479 def templated?; end - # source://idlc//lib/idlc/ast.rb#6335 + # source://idlc//lib/idlc/ast.rb#6777 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#6237 + # source://idlc//lib/idlc/ast.rb#6679 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#6306 + # source://idlc//lib/idlc/ast.rb#6748 def type_check_args(symtab); end - # source://idlc//lib/idlc/ast.rb#6310 + # source://idlc//lib/idlc/ast.rb#6752 def type_check_body(symtab); end - # source://idlc//lib/idlc/ast.rb#6210 + # source://idlc//lib/idlc/ast.rb#6652 def type_check_from_call(symtab); end - # source://idlc//lib/idlc/ast.rb#6302 + # source://idlc//lib/idlc/ast.rb#6744 def type_check_return(symtab); end - # source://idlc//lib/idlc/ast.rb#6297 + # source://idlc//lib/idlc/ast.rb#6739 def type_check_targs(symtab); end - # source://idlc//lib/idlc/ast.rb#6192 + # source://idlc//lib/idlc/ast.rb#6634 def type_check_template_instance(symtab); end end -# source://idlc//lib/idlc/ast.rb#5968 +# source://idlc//lib/idlc/ast.rb#6404 class Idl::FunctionDefSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#5969 + # source://idlc//lib/idlc/ast.rb#6405 def to_ast; end end -# source://idlc//lib/idlc/type.rb#669 +# source://idlc//lib/idlc/idl_parser.rb#12914 +module Idl::FunctionIfBlock0 + # source://idlc//lib/idlc/idl_parser.rb#12915 + def e; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12921 +module Idl::FunctionIfBlock1 + # source://idlc//lib/idlc/idl_parser.rb#12922 + def e; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12928 +module Idl::FunctionIfBlock2 + # source://idlc//lib/idlc/idl_parser.rb#12933 + def body; end + + # source://idlc//lib/idlc/idl_parser.rb#12929 + def expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12939 +module Idl::FunctionIfBlock3 + # source://idlc//lib/idlc/idl_parser.rb#12940 + def e; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12946 +module Idl::FunctionIfBlock4 + # source://idlc//lib/idlc/idl_parser.rb#12947 + def body; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12953 +module Idl::FunctionIfBlock5 + # source://idlc//lib/idlc/idl_parser.rb#12962 + def elseifs; end + + # source://idlc//lib/idlc/idl_parser.rb#12966 + def final_else; end + + # source://idlc//lib/idlc/idl_parser.rb#12958 + def if_body; end + + # source://idlc//lib/idlc/idl_parser.rb#12954 + def if_cond; end +end + +# source://idlc//lib/idlc/idl_parser.rb#9204 +module Idl::FunctionName0; end + +# source://idlc//lib/idlc/type.rb#748 class Idl::FunctionType < ::Idl::Type - # source://idlc//lib/idlc/type.rb#672 + # source://idlc//lib/idlc/type.rb#751 def initialize(func_name, func_def_ast, symtab); end - # source://idlc//lib/idlc/type.rb#751 + # source://idlc//lib/idlc/type.rb#830 sig do params( symtab: ::Idl::SymbolTable, @@ -2346,40 +3492,40 @@ class Idl::FunctionType < ::Idl::Type end def apply_arguments(symtab, argument_nodes, call_site_symtab, func_call_ast); end - # source://idlc//lib/idlc/type.rb#722 + # source://idlc//lib/idlc/type.rb#801 def apply_template_values(template_values, func_call_ast); end - # source://idlc//lib/idlc/type.rb#855 + # source://idlc//lib/idlc/type.rb#934 def argument_name(index, template_values = T.unsafe(nil), func_call_ast); end - # source://idlc//lib/idlc/type.rb#840 + # source://idlc//lib/idlc/type.rb#919 def argument_type(index, template_values, argument_nodes, call_site_symtab, func_call_ast); end - # source://idlc//lib/idlc/type.rb#772 + # source://idlc//lib/idlc/type.rb#851 def argument_values(symtab, argument_nodes, call_site_symtab, func_call_ast); end - # source://idlc//lib/idlc/type.rb#870 + # source://idlc//lib/idlc/type.rb#949 def body; end - # source://idlc//lib/idlc/type.rb#684 + # source://idlc//lib/idlc/type.rb#763 def builtin?; end - # source://idlc//lib/idlc/type.rb#680 + # source://idlc//lib/idlc/type.rb#759 def clone; end - # source://idlc//lib/idlc/type.rb#688 + # source://idlc//lib/idlc/type.rb#767 def external?; end - # source://idlc//lib/idlc/type.rb#670 + # source://idlc//lib/idlc/type.rb#749 def func_def_ast; end - # source://idlc//lib/idlc/type.rb#686 + # source://idlc//lib/idlc/type.rb#765 def generated?; end - # source://idlc//lib/idlc/type.rb#690 + # source://idlc//lib/idlc/type.rb#769 def num_args; end - # source://idlc//lib/idlc/type.rb#798 + # source://idlc//lib/idlc/type.rb#877 sig do params( template_values: T::Array[::Integer], @@ -2389,881 +3535,1421 @@ class Idl::FunctionType < ::Idl::Type end def return_type(template_values, argument_nodes, func_call_ast); end - # source://idlc//lib/idlc/type.rb#827 + # source://idlc//lib/idlc/type.rb#906 def return_types(template_values, argument_nodes, call_site_symtab, func_call_ast); end - # source://idlc//lib/idlc/type.rb#811 + # source://idlc//lib/idlc/type.rb#890 def return_value(template_values, argument_nodes, call_site_symtab, func_call_ast); end - # source://idlc//lib/idlc/type.rb#716 + # source://idlc//lib/idlc/type.rb#795 def template_names; end - # source://idlc//lib/idlc/type.rb#718 + # source://idlc//lib/idlc/type.rb#797 def template_types(symtab); end - # source://idlc//lib/idlc/type.rb#720 + # source://idlc//lib/idlc/type.rb#799 def templated?; end - # source://idlc//lib/idlc/type.rb#692 + # source://idlc//lib/idlc/type.rb#771 def type_check_call(template_values, argument_nodes, call_site_symtab, func_call_ast); end end -# source://idlc//lib/idlc/ast.rb#922 +# source://idlc//lib/idlc/ast.rb#992 class Idl::GlobalAst < ::Idl::AstNode include ::Idl::Declaration - # source://idlc//lib/idlc/ast.rb#937 + # source://idlc//lib/idlc/ast.rb#1007 def initialize(input, interval, declaration); end - # source://idlc//lib/idlc/ast.rb#950 + # source://idlc//lib/idlc/ast.rb#1020 def add_symbol(symtab); end - # source://idlc//lib/idlc/ast.rb#926 + # source://idlc//lib/idlc/ast.rb#996 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#933 + # source://idlc//lib/idlc/ast.rb#1003 def declaration; end - # source://idlc//lib/idlc/ast.rb#928 + # source://idlc//lib/idlc/ast.rb#998 def id; end - # source://idlc//lib/idlc/ast.rb#957 + # source://idlc//lib/idlc/ast.rb#1027 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#946 + # source://idlc//lib/idlc/ast.rb#1016 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#942 + # source://idlc//lib/idlc/ast.rb#1012 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#916 +# source://idlc//lib/idlc/idl_parser.rb#269 +module Idl::GlobalDefinition0; end + +# source://idlc//lib/idlc/idl_parser.rb#272 +module Idl::GlobalDefinition1 + # source://idlc//lib/idlc/idl_parser.rb#273 + def const; end + + # source://idlc//lib/idlc/idl_parser.rb#277 + def single_declaration_with_initialization; end +end + +# source://idlc//lib/idlc/idl_parser.rb#283 +module Idl::GlobalDefinition2 + # source://idlc//lib/idlc/idl_parser.rb#284 + def declaration; end +end + +# source://idlc//lib/idlc/ast.rb#986 class Idl::GlobalSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#917 + # source://idlc//lib/idlc/ast.rb#987 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#860 +# source://idlc//lib/idlc/ast.rb#930 class Idl::GlobalWithInitializationAst < ::Idl::AstNode include ::Idl::Executable include ::Idl::Declaration - # source://idlc//lib/idlc/ast.rb#875 + # source://idlc//lib/idlc/ast.rb#945 def initialize(input, interval, var_decl_with_init); end - # source://idlc//lib/idlc/ast.rb#902 + # source://idlc//lib/idlc/ast.rb#972 sig { override.params(symtab: ::Idl::SymbolTable).void } def add_symbol(symtab); end - # source://idlc//lib/idlc/ast.rb#868 + # source://idlc//lib/idlc/ast.rb#938 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#896 + # source://idlc//lib/idlc/ast.rb#966 sig { override.params(symtab: ::Idl::SymbolTable).void } def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#899 + # source://idlc//lib/idlc/ast.rb#969 sig { override.params(symtab: ::Idl::SymbolTable).void } def execute_unknown(symtab); end - # source://idlc//lib/idlc/ast.rb#864 + # source://idlc//lib/idlc/ast.rb#934 def id; end - # source://idlc//lib/idlc/ast.rb#865 + # source://idlc//lib/idlc/ast.rb#935 def rhs; end - # source://idlc//lib/idlc/ast.rb#911 + # source://idlc//lib/idlc/ast.rb#981 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#886 + # source://idlc//lib/idlc/ast.rb#956 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#881 + # source://idlc//lib/idlc/ast.rb#951 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#891 + # source://idlc//lib/idlc/ast.rb#961 def value(symtab); end - # source://idlc//lib/idlc/ast.rb#871 + # source://idlc//lib/idlc/ast.rb#941 def var_decl_with_init; end end -# source://idlc//lib/idlc/ast.rb#845 +# source://idlc//lib/idlc/ast.rb#915 class Idl::GlobalWithInitializationSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#846 + # source://idlc//lib/idlc/ast.rb#916 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#748 +# source://idlc//lib/idlc/idl_parser.rb#16153 +module Idl::Id0; end + +# source://idlc//lib/idlc/ast.rb#818 class Idl::IdAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#759 + # source://idlc//lib/idlc/ast.rb#829 sig { params(input: ::String, interval: T::Range[::Integer]).void } def initialize(input, interval); end - # source://idlc//lib/idlc/ast.rb#789 + # source://idlc//lib/idlc/ast.rb#859 sig { returns(T::Boolean) } def const?; end - # source://idlc//lib/idlc/ast.rb#752 + # source://idlc//lib/idlc/ast.rb#822 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#147 + # source://idlc//lib/idlc/passes/gen_adoc.rb#158 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/gen_option_adoc.rb#88 + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#97 def gen_option_adoc; end - # source://idlc//lib/idlc/ast.rb#805 + # source://idlc//lib/idlc/ast.rb#875 sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(::Integer, ::Symbol)) } def max_value(symtab); end - # source://idlc//lib/idlc/ast.rb#823 + # source://idlc//lib/idlc/ast.rb#893 sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(::Integer, ::Symbol)) } def min_value(symtab); end - # source://idlc//lib/idlc/ast.rb#756 + # source://idlc//lib/idlc/ast.rb#826 sig { returns(::String) } def name; end - # source://idlc//lib/idlc/ast.rb#842 + # source://idlc//lib/idlc/ast.rb#912 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#771 + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#76 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#841 sig { override.params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } def type(symtab); end - # source://idlc//lib/idlc/ast.rb#765 + # source://idlc//lib/idlc/ast.rb#835 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#792 + # source://idlc//lib/idlc/ast.rb#862 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#741 +# source://idlc//lib/idlc/ast.rb#811 class Idl::IdSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#742 + # source://idlc//lib/idlc/ast.rb#812 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#6776 +# source://idlc//lib/idlc/ast.rb#7249 class Idl::IfAst < ::Idl::AstNode include ::Idl::Executable include ::Idl::Returns - # source://idlc//lib/idlc/ast.rb#6800 + # source://idlc//lib/idlc/ast.rb#7273 def initialize(input, interval, if_cond, if_body, elseifs, final_else_body); end - # source://idlc//lib/idlc/ast.rb#6781 + # source://idlc//lib/idlc/ast.rb#7254 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#6795 + # source://idlc//lib/idlc/ast.rb#7268 sig { returns(T::Array[::Idl::ElseIfAst]) } def elseifs; end - # source://idlc//lib/idlc/ast.rb#6969 + # source://idlc//lib/idlc/ast.rb#7442 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#7015 + # source://idlc//lib/idlc/ast.rb#7488 def execute_unknown(symtab); end - # source://idlc//lib/idlc/ast.rb#6798 + # source://idlc//lib/idlc/ast.rb#7271 sig { returns(::Idl::IfBodyAst) } def final_else_body; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#311 + # source://idlc//lib/idlc/passes/gen_adoc.rb#328 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/gen_option_adoc.rb#33 + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#34 def gen_option_adoc; end - # source://idlc//lib/idlc/ast.rb#6792 + # source://idlc//lib/idlc/ast.rb#7265 sig { returns(::Idl::IfBodyAst) } def if_body; end - # source://idlc//lib/idlc/ast.rb#6789 + # source://idlc//lib/idlc/ast.rb#7262 sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } def if_cond; end # source://idlc//lib/idlc/passes/find_return_values.rb#35 def pass_find_return_values(values, current_conditions, symtab); end - # source://idlc//lib/idlc/passes/prune.rb#353 + # source://idlc//lib/idlc/passes/prune.rb#355 def prune(symtab); end # source://idlc//lib/idlc/passes/reachable_exceptions.rb#101 def reachable_exceptions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/reachable_functions.rb#77 + # source://idlc//lib/idlc/passes/reachable_functions.rb#84 def reachable_functions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#6862 + # source://idlc//lib/idlc/ast.rb#7335 sig { override.params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } def return_type(symtab); end - # source://idlc//lib/idlc/ast.rb#6871 + # source://idlc//lib/idlc/ast.rb#7344 def return_value(symtab); end - # source://idlc//lib/idlc/ast.rb#6912 + # source://idlc//lib/idlc/ast.rb#7385 def return_values(symtab); end - # source://idlc//lib/idlc/ast.rb#6849 + # source://idlc//lib/idlc/ast.rb#7322 def taken_body(symtab); end - # source://idlc//lib/idlc/ast.rb#7022 + # source://idlc//lib/idlc/ast.rb#7495 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#6811 + # source://idlc//lib/idlc/ast.rb#7284 def type_check(symtab); end private - # source://idlc//lib/idlc/ast.rb#6930 + # source://idlc//lib/idlc/ast.rb#7403 def execute_after_if(symtab); end - # source://idlc//lib/idlc/ast.rb#7006 + # source://idlc//lib/idlc/ast.rb#7479 def execute_unknown_after_if(symtab); end - # source://idlc//lib/idlc/ast.rb#6880 + # source://idlc//lib/idlc/ast.rb#7353 def return_values_after_if(symtab); end end -# source://idlc//lib/idlc/ast.rb#6546 +# source://idlc//lib/idlc/ast.rb#7019 class Idl::IfBodyAst < ::Idl::AstNode include ::Idl::Executable include ::Idl::Returns - # source://idlc//lib/idlc/ast.rb#6557 + # source://idlc//lib/idlc/ast.rb#7030 def initialize(input, interval, body_stmts); end - # source://idlc//lib/idlc/ast.rb#6551 + # source://idlc//lib/idlc/ast.rb#7024 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#6634 + # source://idlc//lib/idlc/ast.rb#7107 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#6660 + # source://idlc//lib/idlc/ast.rb#7133 def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#34 + # source://idlc//lib/idlc/passes/gen_adoc.rb#35 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/gen_option_adoc.rb#70 + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#71 def gen_option_adoc; end - # source://idlc//lib/idlc/passes/prune.rb#329 + # source://idlc//lib/idlc/passes/prune.rb#331 def prune(symtab); end - # source://idlc//lib/idlc/ast.rb#6579 + # source://idlc//lib/idlc/ast.rb#7052 sig { override.params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } def return_type(symtab); end - # source://idlc//lib/idlc/ast.rb#6585 + # source://idlc//lib/idlc/ast.rb#7058 def return_value(symtab); end - # source://idlc//lib/idlc/ast.rb#6606 + # source://idlc//lib/idlc/ast.rb#7079 def return_values(symtab); end - # source://idlc//lib/idlc/ast.rb#6555 + # source://idlc//lib/idlc/ast.rb#7028 def stmts; end - # source://idlc//lib/idlc/ast.rb#6668 + # source://idlc//lib/idlc/ast.rb#7141 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#6566 + # source://idlc//lib/idlc/ast.rb#7039 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#6742 +# source://idlc//lib/idlc/ast.rb#7215 class Idl::IfSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#6743 + # source://idlc//lib/idlc/ast.rb#7216 + def to_ast; end +end + +# source://idlc//lib/idlc/idl_parser.rb#8010 +module Idl::ImplicationExpression0 + # source://idlc//lib/idlc/idl_parser.rb#8011 + def antecedent; end + + # source://idlc//lib/idlc/idl_parser.rb#8015 + def consequent; end +end + +# source://idlc//lib/idlc/ast.rb#3171 +class Idl::ImplicationExpressionAst < ::Idl::AstNode + # source://idlc//lib/idlc/ast.rb#3180 + sig do + params( + input: ::String, + interval: T::Range[::Integer], + antecedent: T.all(::Idl::AstNode, ::Idl::Rvalue), + consequent: T.all(::Idl::AstNode, ::Idl::Rvalue) + ).void + end + def initialize(input, interval, antecedent, consequent); end + + # source://idlc//lib/idlc/ast.rb#3191 + sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } + def antecedent; end + + # source://idlc//lib/idlc/ast.rb#3194 + sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } + def consequent; end + + # source://idlc//lib/idlc/ast.rb#3186 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } + def const_eval?(symtab); end + + # source://idlc//lib/idlc/ast.rb#3203 + sig { params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } + def satisfied?(symtab); end + + # source://idlc//lib/idlc/ast.rb#3209 + sig { override.returns(::String) } + def to_idl; end + + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#25 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#3197 + sig { override.params(symtab: ::Idl::SymbolTable).void } + def type_check(symtab); end +end + +# source://idlc//lib/idlc/ast.rb#3160 +class Idl::ImplicationExpressionSyntaxNode < ::Idl::SyntaxNode + # source://idlc//lib/idlc/ast.rb#3162 + sig { override.returns(::Idl::ImplicationExpressionAst) } + def to_ast; end +end + +# source://idlc//lib/idlc/idl_parser.rb#8092 +module Idl::ImplicationForLoop0 + # source://idlc//lib/idlc/idl_parser.rb#8093 + def s; end +end + +# source://idlc//lib/idlc/idl_parser.rb#8099 +module Idl::ImplicationForLoop1 + # source://idlc//lib/idlc/idl_parser.rb#8108 + def action; end + + # source://idlc//lib/idlc/idl_parser.rb#8104 + def condition; end + + # source://idlc//lib/idlc/idl_parser.rb#8100 + def for_loop_iteration_variable_declaration; end + + # source://idlc//lib/idlc/idl_parser.rb#8112 + def stmts; end +end + +# source://idlc//lib/idlc/idl_parser.rb#8414 +module Idl::ImplicationStatement0 + # source://idlc//lib/idlc/idl_parser.rb#8415 + def implication_expression; end +end + +# source://idlc//lib/idlc/ast.rb#3220 +class Idl::ImplicationStatementAst < ::Idl::AstNode + # source://idlc//lib/idlc/ast.rb#3228 + sig do + params( + input: ::String, + interval: T::Range[::Integer], + implication_expression: ::Idl::ImplicationExpressionAst + ).void + end + def initialize(input, interval, implication_expression); end + + # source://idlc//lib/idlc/ast.rb#3233 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } + def const_eval?(symtab); end + + # source://idlc//lib/idlc/ast.rb#3236 + sig { returns(::Idl::ImplicationExpressionAst) } + def expression; end + + # source://idlc//lib/idlc/ast.rb#3244 + sig { params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } + def satisfied?(symtab); end + + # source://idlc//lib/idlc/ast.rb#3249 + sig { override.returns(::String) } + def to_idl; end + + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#46 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#3239 + sig { override.params(symtab: ::Idl::SymbolTable).void } + def type_check(symtab); end +end + +# source://idlc//lib/idlc/ast.rb#3213 +class Idl::ImplicationStatementSyntaxNode < ::Idl::SyntaxNode + # source://idlc//lib/idlc/ast.rb#3215 + sig { override.returns(::Idl::ImplicationStatementAst) } def to_ast; end end -# source://idlc//lib/idlc/ast.rb#721 +# source://idlc//lib/idlc/idl_parser.rb#189 +module Idl::IncludeStatement0 + # source://idlc//lib/idlc/idl_parser.rb#190 + def string; end +end + +# source://idlc//lib/idlc/ast.rb#735 class Idl::IncludeStatementAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#730 + # source://idlc//lib/idlc/ast.rb#744 sig { params(input: ::String, interval: T::Range[T.untyped], filename: ::Idl::AstNode).void } def initialize(input, interval, filename); end - # source://idlc//lib/idlc/ast.rb#723 + # source://idlc//lib/idlc/ast.rb#737 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#727 + # source://idlc//lib/idlc/ast.rb#741 sig { returns(::String) } def filename; end - # source://idlc//lib/idlc/ast.rb#735 + # source://idlc//lib/idlc/ast.rb#749 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#738 + # source://idlc//lib/idlc/ast.rb#752 sig { override.params(symtab: ::Idl::SymbolTable).void } def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#713 +# source://idlc//lib/idlc/ast.rb#727 class Idl::IncludeStatementSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#715 + # source://idlc//lib/idlc/ast.rb#729 sig { override.returns(::Idl::IncludeStatementAst) } def to_ast; end end -# source://idlc//lib/idlc/ast.rb#5803 +# source://idlc//lib/idlc/idl_parser.rb#16049 +module Idl::InstructionOperation0 + # source://idlc//lib/idlc/idl_parser.rb#16050 + def choice; end +end + +# source://idlc//lib/idlc/idl_parser.rb#16056 +module Idl::InstructionOperation1 + # source://idlc//lib/idlc/idl_parser.rb#16057 + def op_stmt_list; end +end + +# source://idlc//lib/idlc/ast.rb#6238 class Idl::InstructionOperationSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#5804 + # source://idlc//lib/idlc/ast.rb#6239 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#5278 +# source://idlc//lib/idlc/idl_parser.rb#1478 +module Idl::Int0; end + +# source://idlc//lib/idlc/idl_parser.rb#1481 +module Idl::Int1; end + +# source://idlc//lib/idlc/idl_parser.rb#1508 +module Idl::Int10; end + +# source://idlc//lib/idlc/idl_parser.rb#1511 +module Idl::Int11; end + +# source://idlc//lib/idlc/idl_parser.rb#1514 +module Idl::Int12; end + +# source://idlc//lib/idlc/idl_parser.rb#1517 +module Idl::Int13; end + +# source://idlc//lib/idlc/idl_parser.rb#1520 +module Idl::Int14; end + +# source://idlc//lib/idlc/idl_parser.rb#1523 +module Idl::Int15; end + +# source://idlc//lib/idlc/idl_parser.rb#1526 +module Idl::Int16; end + +# source://idlc//lib/idlc/idl_parser.rb#1484 +module Idl::Int2; end + +# source://idlc//lib/idlc/idl_parser.rb#1487 +module Idl::Int3; end + +# source://idlc//lib/idlc/idl_parser.rb#1490 +module Idl::Int4; end + +# source://idlc//lib/idlc/idl_parser.rb#1493 +module Idl::Int5; end + +# source://idlc//lib/idlc/idl_parser.rb#1496 +module Idl::Int6; end + +# source://idlc//lib/idlc/idl_parser.rb#1499 +module Idl::Int7; end + +# source://idlc//lib/idlc/idl_parser.rb#1502 +module Idl::Int8; end + +# source://idlc//lib/idlc/idl_parser.rb#1505 +module Idl::Int9; end + +# source://idlc//lib/idlc/ast.rb#5709 class Idl::IntLiteralAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#5284 + # source://idlc//lib/idlc/ast.rb#5715 def initialize(input, interval); end - # source://idlc//lib/idlc/ast.rb#5282 + # source://idlc//lib/idlc/ast.rb#5713 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#5288 + # source://idlc//lib/idlc/ast.rb#5719 def freeze_tree(global_symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#141 + # source://idlc//lib/idlc/passes/gen_adoc.rb#142 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/gen_option_adoc.rb#94 + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#103 def gen_option_adoc; end - # source://idlc//lib/idlc/ast.rb#5509 + # source://idlc//lib/idlc/ast.rb#5943 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#5512 + # source://idlc//lib/idlc/ast.rb#5946 sig { override.returns(::String) } def to_idl_verbose; end - # source://idlc//lib/idlc/ast.rb#5314 + # source://idlc//lib/idlc/ast.rb#5745 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#5298 + # source://idlc//lib/idlc/ast.rb#5729 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#5428 + # source://idlc//lib/idlc/ast.rb#5862 def unsigned_value; end - # source://idlc//lib/idlc/ast.rb#5381 + # source://idlc//lib/idlc/ast.rb#5815 def value(symtab); end - # source://idlc//lib/idlc/ast.rb#5346 + # source://idlc//lib/idlc/ast.rb#5780 def width(symtab); end end -# source://idlc//lib/idlc/ast.rb#5263 +# source://idlc//lib/idlc/ast.rb#5666 module Idl::IntLiteralSyntaxNode - # source://idlc//lib/idlc/ast.rb#5264 + # source://idlc//lib/idlc/ast.rb#5667 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#974 +# source://idlc//lib/idlc/idl_parser.rb#16 +module Idl::Isa0 + # source://idlc//lib/idlc/idl_parser.rb#21 + def definitions; end + + # source://idlc//lib/idlc/idl_parser.rb#17 + def version_string; end +end + +# source://idlc//lib/idlc/ast.rb#1044 class Idl::IsaAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#1001 + # source://idlc//lib/idlc/ast.rb#1071 def add_global_symbols(symtab); end - # source://idlc//lib/idlc/ast.rb#987 + # source://idlc//lib/idlc/ast.rb#1057 def bitfields; end - # source://idlc//lib/idlc/ast.rb#978 + # source://idlc//lib/idlc/ast.rb#1048 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#975 + # source://idlc//lib/idlc/ast.rb#1045 def definitions; end - # source://idlc//lib/idlc/ast.rb#984 + # source://idlc//lib/idlc/ast.rb#1054 def enums; end - # source://idlc//lib/idlc/ast.rb#996 + # source://idlc//lib/idlc/ast.rb#1066 def fetch; end - # source://idlc//lib/idlc/ast.rb#993 + # source://idlc//lib/idlc/ast.rb#1063 def functions; end - # source://idlc//lib/idlc/ast.rb#981 + # source://idlc//lib/idlc/ast.rb#1051 def globals; end - # source://idlc//lib/idlc/ast.rb#1016 + # source://idlc//lib/idlc/ast.rb#1086 def replace_include!(include_ast, isa_ast); end - # source://idlc//lib/idlc/ast.rb#990 + # source://idlc//lib/idlc/ast.rb#1060 def structs; end - # source://idlc//lib/idlc/ast.rb#1035 + # source://idlc//lib/idlc/ast.rb#1105 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1026 + # source://idlc//lib/idlc/ast.rb#1096 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#961 +# source://idlc//lib/idlc/ast.rb#1031 class Idl::IsaSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#962 + # source://idlc//lib/idlc/ast.rb#1032 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#2481 +# source://idlc//lib/idlc/idl_parser.rb#14910 +module Idl::Keyword0; end + +# source://idlc//lib/idlc/idl_parser.rb#14913 +module Idl::Keyword1; end + +# source://idlc//lib/idlc/idl_parser.rb#14940 +module Idl::Keyword10; end + +# source://idlc//lib/idlc/idl_parser.rb#14943 +module Idl::Keyword11; end + +# source://idlc//lib/idlc/idl_parser.rb#14946 +module Idl::Keyword12; end + +# source://idlc//lib/idlc/idl_parser.rb#14949 +module Idl::Keyword13; end + +# source://idlc//lib/idlc/idl_parser.rb#14952 +module Idl::Keyword14; end + +# source://idlc//lib/idlc/idl_parser.rb#14955 +module Idl::Keyword15; end + +# source://idlc//lib/idlc/idl_parser.rb#14916 +module Idl::Keyword2; end + +# source://idlc//lib/idlc/idl_parser.rb#14919 +module Idl::Keyword3; end + +# source://idlc//lib/idlc/idl_parser.rb#14922 +module Idl::Keyword4; end + +# source://idlc//lib/idlc/idl_parser.rb#14925 +module Idl::Keyword5; end + +# source://idlc//lib/idlc/idl_parser.rb#14928 +module Idl::Keyword6; end + +# source://idlc//lib/idlc/idl_parser.rb#14931 +module Idl::Keyword7; end + +# source://idlc//lib/idlc/idl_parser.rb#14934 +module Idl::Keyword8; end + +# source://idlc//lib/idlc/idl_parser.rb#14937 +module Idl::Keyword9; end + +# source://idlc//lib/idlc/ast.rb#2626 class Idl::MultiVariableAssignmentAst < ::Idl::AstNode include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#2503 + # source://idlc//lib/idlc/ast.rb#2648 def initialize(input, interval, variables, function_call); end - # source://idlc//lib/idlc/ast.rb#2485 + # source://idlc//lib/idlc/ast.rb#2630 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#2548 + # source://idlc//lib/idlc/ast.rb#2693 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#2572 + # source://idlc//lib/idlc/ast.rb#2717 def execute_unknown(symtab); end - # source://idlc//lib/idlc/ast.rb#2501 + # source://idlc//lib/idlc/ast.rb#2646 def function_call; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#70 + # source://idlc//lib/idlc/passes/gen_adoc.rb#71 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#2512 + # source://idlc//lib/idlc/ast.rb#2657 def rhs; end - # source://idlc//lib/idlc/ast.rb#2580 + # source://idlc//lib/idlc/ast.rb#2725 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#2517 + # source://idlc//lib/idlc/ast.rb#2662 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#2500 + # source://idlc//lib/idlc/ast.rb#2645 def variables; end - # source://idlc//lib/idlc/ast.rb#2508 + # source://idlc//lib/idlc/ast.rb#2653 def vars; end end -# source://idlc//lib/idlc/ast.rb#2471 +# source://idlc//lib/idlc/ast.rb#2616 class Idl::MultiVariableAssignmentSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#2472 + # source://idlc//lib/idlc/ast.rb#2617 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#2594 +# source://idlc//lib/idlc/ast.rb#2739 class Idl::MultiVariableDeclarationAst < ::Idl::AstNode include ::Idl::Declaration - # source://idlc//lib/idlc/ast.rb#2609 + # source://idlc//lib/idlc/ast.rb#2754 def initialize(input, interval, type_name, var_names); end - # source://idlc//lib/idlc/ast.rb#2642 + # source://idlc//lib/idlc/ast.rb#2787 def add_symbol(symtab); end - # source://idlc//lib/idlc/ast.rb#2598 + # source://idlc//lib/idlc/ast.rb#2743 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#169 + # source://idlc//lib/idlc/passes/gen_adoc.rb#180 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#2616 + # source://idlc//lib/idlc/ast.rb#2761 def make_global; end - # source://idlc//lib/idlc/ast.rb#2650 + # source://idlc//lib/idlc/ast.rb#2795 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#2633 + # source://idlc//lib/idlc/ast.rb#2778 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#2626 + # source://idlc//lib/idlc/ast.rb#2771 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#2604 + # source://idlc//lib/idlc/ast.rb#2749 def type_name; end - # source://idlc//lib/idlc/ast.rb#2607 + # source://idlc//lib/idlc/ast.rb#2752 def var_name_nodes; end - # source://idlc//lib/idlc/ast.rb#2621 + # source://idlc//lib/idlc/ast.rb#2766 def var_names; end end -# source://idlc//lib/idlc/ast.rb#2583 +# source://idlc//lib/idlc/ast.rb#2728 class Idl::MultiVariableDeclarationSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#2584 + # source://idlc//lib/idlc/ast.rb#2729 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#4648 +# source://idlc//lib/idlc/ast.rb#5049 class Idl::NoopAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#4652 + # source://idlc//lib/idlc/ast.rb#5053 def initialize; end - # source://idlc//lib/idlc/ast.rb#4650 + # source://idlc//lib/idlc/ast.rb#5051 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#4660 + # source://idlc//lib/idlc/ast.rb#5061 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#4663 + # source://idlc//lib/idlc/ast.rb#5064 def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#16 + # source://idlc//lib/idlc/passes/gen_adoc.rb#17 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#4667 + # source://idlc//lib/idlc/ast.rb#5068 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4657 + # source://idlc//lib/idlc/ast.rb#5058 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#3903 +# source://idlc//lib/idlc/idl_parser.rb#3497 +module Idl::P0BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#3498 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#3502 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#3507 +module Idl::P0BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#3508 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#3512 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#3615 +module Idl::P1BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#3616 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#3620 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#3625 +module Idl::P1BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#3626 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#3630 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#3733 +module Idl::P2BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#3734 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#3738 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#3743 +module Idl::P2BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#3744 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#3748 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#3851 +module Idl::P3BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#3852 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#3856 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#3861 +module Idl::P3BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#3862 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#3866 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4087 +module Idl::P4BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#4088 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#4092 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4097 +module Idl::P4BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#4098 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#4102 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4323 +module Idl::P5BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#4324 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#4328 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4333 +module Idl::P5BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#4334 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#4338 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#3257 +module Idl::P5BinaryOperator0; end + +# source://idlc//lib/idlc/idl_parser.rb#4559 +module Idl::P6BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#4560 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#4564 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4569 +module Idl::P6BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#4570 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#4574 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4795 +module Idl::P7BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#4796 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#4800 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4805 +module Idl::P7BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#4806 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#4810 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#3337 +module Idl::P7BinaryOperator0; end + +# source://idlc//lib/idlc/idl_parser.rb#5031 +module Idl::P8BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#5032 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#5036 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#5041 +module Idl::P8BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#5042 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#5046 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#5267 +module Idl::P9BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#5268 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#5272 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#5277 +module Idl::P9BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#5278 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#5282 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#5503 +module Idl::ParenExpression0 + # source://idlc//lib/idlc/idl_parser.rb#5504 + def e; end +end + +# source://idlc//lib/idlc/ast.rb#4265 class Idl::ParenExpressionAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#3909 + # source://idlc//lib/idlc/ast.rb#4271 def initialize(input, interval, exp); end - # source://idlc//lib/idlc/ast.rb#3907 + # source://idlc//lib/idlc/ast.rb#4269 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#3911 + # source://idlc//lib/idlc/ast.rb#4273 def expression; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#136 + # source://idlc//lib/idlc/passes/gen_adoc.rb#137 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#3913 + # source://idlc//lib/idlc/ast.rb#4275 def invert(symtab); end - # source://idlc//lib/idlc/ast.rb#3926 + # source://idlc//lib/idlc/ast.rb#4288 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#3919 + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#39 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#4281 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#3916 + # source://idlc//lib/idlc/ast.rb#4278 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#3922 + # source://idlc//lib/idlc/ast.rb#4284 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#3893 +# source://idlc//lib/idlc/ast.rb#4255 class Idl::ParenExpressionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#3894 + # source://idlc//lib/idlc/ast.rb#4256 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#1919 +# source://idlc//lib/idlc/ast.rb#2056 class Idl::PcAssignmentAst < ::Idl::AstNode include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#1930 + # source://idlc//lib/idlc/ast.rb#2067 sig { params(input: ::String, interval: T::Range[::Integer], rval: T.all(::Idl::AstNode, ::Idl::Rvalue)).void } def initialize(input, interval, rval); end - # source://idlc//lib/idlc/ast.rb#1923 + # source://idlc//lib/idlc/ast.rb#2060 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#1936 + # source://idlc//lib/idlc/ast.rb#2073 sig { override.params(symtab: ::Idl::SymbolTable).void } def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#1940 + # source://idlc//lib/idlc/ast.rb#2077 sig { override.params(symtab: ::Idl::SymbolTable).void } def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#236 + # source://idlc//lib/idlc/passes/gen_adoc.rb#247 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#1927 + # source://idlc//lib/idlc/ast.rb#2064 sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } def rhs; end - # source://idlc//lib/idlc/ast.rb#1950 + # source://idlc//lib/idlc/ast.rb#2087 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1944 + # source://idlc//lib/idlc/ast.rb#2081 sig { override.params(symtab: ::Idl::SymbolTable).void } def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#1913 +# source://idlc//lib/idlc/ast.rb#2050 class Idl::PcAssignmentSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#1914 + # source://idlc//lib/idlc/ast.rb#2051 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#4100 +# source://idlc//lib/idlc/idl_parser.rb#6455 +module Idl::PostDec0 + # source://idlc//lib/idlc/idl_parser.rb#6456 + def rval; end +end + +# source://idlc//lib/idlc/ast.rb#4485 class Idl::PostDecrementExpressionAst < ::Idl::AstNode include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#4108 + # source://idlc//lib/idlc/ast.rb#4494 def initialize(input, interval, rval); end - # source://idlc//lib/idlc/ast.rb#4104 + # source://idlc//lib/idlc/ast.rb#4489 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#4122 + # source://idlc//lib/idlc/ast.rb#4511 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#4138 + # source://idlc//lib/idlc/ast.rb#4527 def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#49 + # source://idlc//lib/idlc/passes/gen_adoc.rb#50 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#4106 + # source://idlc//lib/idlc/ast.rb#4492 + sig { returns(T.any(::Idl::BuiltinVariableAst, ::Idl::IdAst, ::Idl::IntLiteralAst, ::Idl::StringLiteralAst)) } def rval; end - # source://idlc//lib/idlc/ast.rb#4143 + # source://idlc//lib/idlc/ast.rb#4532 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4117 + # source://idlc//lib/idlc/ast.rb#4506 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#4112 + # source://idlc//lib/idlc/ast.rb#4498 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#4090 +# source://idlc//lib/idlc/ast.rb#4475 class Idl::PostDecrementExpressionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4091 + # source://idlc//lib/idlc/ast.rb#4476 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#4209 +# source://idlc//lib/idlc/idl_parser.rb#6512 +module Idl::PostInc0 + # source://idlc//lib/idlc/idl_parser.rb#6513 + def rval; end +end + +# source://idlc//lib/idlc/ast.rb#4598 class Idl::PostIncrementExpressionAst < ::Idl::AstNode include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#4217 + # source://idlc//lib/idlc/ast.rb#4606 def initialize(input, interval, rval); end - # source://idlc//lib/idlc/ast.rb#4213 + # source://idlc//lib/idlc/ast.rb#4602 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#4234 + # source://idlc//lib/idlc/ast.rb#4626 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#4251 + # source://idlc//lib/idlc/ast.rb#4643 def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#44 + # source://idlc//lib/idlc/passes/gen_adoc.rb#45 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#4215 + # source://idlc//lib/idlc/ast.rb#4604 def rval; end - # source://idlc//lib/idlc/ast.rb#4257 + # source://idlc//lib/idlc/ast.rb#4649 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4229 + # source://idlc//lib/idlc/ast.rb#4621 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#4222 + # source://idlc//lib/idlc/ast.rb#4611 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#4199 +# source://idlc//lib/idlc/ast.rb#4588 class Idl::PostIncrementExpressionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4200 + # source://idlc//lib/idlc/ast.rb#4589 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#4039 +# source://idlc//lib/idlc/idl_parser.rb#5583 +module Idl::ReplicationExpression0 + # source://idlc//lib/idlc/idl_parser.rb#5584 + def n; end + + # source://idlc//lib/idlc/idl_parser.rb#5588 + def v; end +end + +# source://idlc//lib/idlc/ast.rb#4424 class Idl::ReplicationExpressionAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#4049 + # source://idlc//lib/idlc/ast.rb#4434 def initialize(input, interval, n, v); end - # source://idlc//lib/idlc/ast.rb#4043 + # source://idlc//lib/idlc/ast.rb#4428 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#266 + # source://idlc//lib/idlc/passes/gen_adoc.rb#277 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#4046 + # source://idlc//lib/idlc/ast.rb#4431 def n; end - # source://idlc//lib/idlc/ast.rb#4087 + # source://idlc//lib/idlc/ast.rb#4472 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4075 + # source://idlc//lib/idlc/ast.rb#4460 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#4054 + # source://idlc//lib/idlc/ast.rb#4439 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#4047 - def v; end + # source://idlc//lib/idlc/ast.rb#4432 + def v; end + + # source://idlc//lib/idlc/ast.rb#4451 + def value(symtab); end +end + +# source://idlc//lib/idlc/ast.rb#4414 +class Idl::ReplicationExpressionSyntaxNode < ::Idl::SyntaxNode + # source://idlc//lib/idlc/ast.rb#4415 + def to_ast; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12568 +module Idl::ReturnExpression0 + # source://idlc//lib/idlc/idl_parser.rb#12569 + def e; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12574 +module Idl::ReturnExpression1 + # source://idlc//lib/idlc/idl_parser.rb#12575 + def e; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12580 +module Idl::ReturnExpression2 + # source://idlc//lib/idlc/idl_parser.rb#12581 + def first; end - # source://idlc//lib/idlc/ast.rb#4066 - def value(symtab); end + # source://idlc//lib/idlc/idl_parser.rb#12585 + def rest; end end -# source://idlc//lib/idlc/ast.rb#4029 -class Idl::ReplicationExpressionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4030 - def to_ast; end +# source://idlc//lib/idlc/idl_parser.rb#12590 +module Idl::ReturnExpression3 + # source://idlc//lib/idlc/idl_parser.rb#12591 + def vals; end end -# source://idlc//lib/idlc/ast.rb#4938 +# source://idlc//lib/idlc/ast.rb#5339 class Idl::ReturnExpressionAst < ::Idl::AstNode include ::Idl::Returns - # source://idlc//lib/idlc/ast.rb#4946 + # source://idlc//lib/idlc/ast.rb#5347 def initialize(input, interval, return_nodes); end - # source://idlc//lib/idlc/ast.rb#4942 + # source://idlc//lib/idlc/ast.rb#5343 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#4990 + # source://idlc//lib/idlc/ast.rb#5391 def enclosing_function; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#29 + # source://idlc//lib/idlc/passes/gen_adoc.rb#30 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/gen_option_adoc.rb#106 + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#115 def gen_option_adoc; end - # source://idlc//lib/idlc/ast.rb#4963 + # source://idlc//lib/idlc/ast.rb#5364 def return_type(symtab); end - # source://idlc//lib/idlc/ast.rb#4952 + # source://idlc//lib/idlc/ast.rb#5353 def return_types(symtab); end - # source://idlc//lib/idlc/ast.rb#4995 + # source://idlc//lib/idlc/ast.rb#5396 def return_value(symtab); end - # source://idlc//lib/idlc/ast.rb#4944 + # source://idlc//lib/idlc/ast.rb#5345 def return_value_nodes; end - # source://idlc//lib/idlc/ast.rb#5006 + # source://idlc//lib/idlc/ast.rb#5407 def return_values(symtab); end - # source://idlc//lib/idlc/ast.rb#5017 + # source://idlc//lib/idlc/ast.rb#5418 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4975 + # source://idlc//lib/idlc/ast.rb#5376 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#4925 +# source://idlc//lib/idlc/ast.rb#5326 class Idl::ReturnExpressionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4926 + # source://idlc//lib/idlc/ast.rb#5327 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#4868 +# source://idlc//lib/idlc/idl_parser.rb#12760 +module Idl::ReturnStatement0 + # source://idlc//lib/idlc/idl_parser.rb#12765 + def expression; end + + # source://idlc//lib/idlc/idl_parser.rb#12761 + def return_expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12771 +module Idl::ReturnStatement1 + # source://idlc//lib/idlc/idl_parser.rb#12772 + def return_expression; end +end + +# source://idlc//lib/idlc/ast.rb#5269 class Idl::ReturnStatementAst < ::Idl::AstNode include ::Idl::Returns - # source://idlc//lib/idlc/ast.rb#4878 + # source://idlc//lib/idlc/ast.rb#5279 def initialize(input, interval, return_expression); end - # source://idlc//lib/idlc/ast.rb#4872 + # source://idlc//lib/idlc/ast.rb#5273 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#4907 + # source://idlc//lib/idlc/ast.rb#5308 def enclosing_function; end - # source://idlc//lib/idlc/ast.rb#4893 + # source://idlc//lib/idlc/ast.rb#5294 def expected_return_type(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#260 + # source://idlc//lib/idlc/passes/gen_adoc.rb#271 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/gen_option_adoc.rb#76 + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#77 def gen_option_adoc; end # source://idlc//lib/idlc/passes/find_return_values.rb#19 def pass_find_return_values(values, current_conditions, symtab); end - # source://idlc//lib/idlc/ast.rb#4874 + # source://idlc//lib/idlc/ast.rb#5275 def return_expression; end - # source://idlc//lib/idlc/ast.rb#4888 + # source://idlc//lib/idlc/ast.rb#5289 def return_type(symtab); end - # source://idlc//lib/idlc/ast.rb#4883 + # source://idlc//lib/idlc/ast.rb#5284 def return_types(symtab); end - # source://idlc//lib/idlc/ast.rb#4912 + # source://idlc//lib/idlc/ast.rb#5313 def return_value(symtab); end - # source://idlc//lib/idlc/ast.rb#4903 + # source://idlc//lib/idlc/ast.rb#5304 def return_value_nodes; end - # source://idlc//lib/idlc/ast.rb#4917 + # source://idlc//lib/idlc/ast.rb#5318 def return_values(symtab); end - # source://idlc//lib/idlc/ast.rb#4922 + # source://idlc//lib/idlc/ast.rb#5323 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4898 + # source://idlc//lib/idlc/ast.rb#5299 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#4857 +# source://idlc//lib/idlc/ast.rb#5258 class Idl::ReturnStatementSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4858 + # source://idlc//lib/idlc/ast.rb#5259 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#503 +# source://idlc//lib/idlc/ast.rb#517 module Idl::Returns abstract! - # source://idlc//lib/idlc/ast.rb#544 + # source://idlc//lib/idlc/ast.rb#558 sig { params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } def expected_return_type(symtab); end - # source://idlc//lib/idlc/ast.rb#521 + # source://idlc//lib/idlc/ast.rb#535 sig { abstract.params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } def return_type(symtab); end - # source://idlc//lib/idlc/ast.rb#526 + # source://idlc//lib/idlc/ast.rb#540 sig do abstract .params( @@ -3272,7 +4958,7 @@ module Idl::Returns end def return_value(symtab); end - # source://idlc//lib/idlc/ast.rb#540 + # source://idlc//lib/idlc/ast.rb#554 sig do abstract .params( @@ -3284,57 +4970,74 @@ end # source://idlc//lib/idlc/interfaces.rb#13 module Idl::RuntimeParam + include ::Kernel + interface! - # source://idlc//lib/idlc/interfaces.rb#25 + # source://idlc//lib/idlc/interfaces.rb#39 + sig { abstract.returns(T::Array[::Idl::Schema]) } + def all_schemas; end + + # source://idlc//lib/idlc/interfaces.rb#27 sig { abstract.returns(::String) } - def desc; end + def description; end - # source://idlc//lib/idlc/interfaces.rb#37 + # source://idlc//lib/idlc/interfaces.rb#48 sig { abstract.returns(::Idl::Type) } def idl_type; end - # source://idlc//lib/idlc/interfaces.rb#22 + # source://idlc//lib/idlc/interfaces.rb#24 sig { abstract.returns(::String) } def name; end - # source://idlc//lib/idlc/interfaces.rb#28 + # source://idlc//lib/idlc/interfaces.rb#36 + sig { abstract.returns(T::Array[::Idl::Schema]) } + def possible_schemas; end + + # source://idlc//lib/idlc/interfaces.rb#33 sig { abstract.returns(::Idl::Schema) } def schema; end - # source://idlc//lib/idlc/interfaces.rb#34 - sig { abstract.returns(T.any(::Integer, ::String, T::Array[::Integer], T::Array[T::Boolean], T::Boolean)) } + # source://idlc//lib/idlc/interfaces.rb#30 + sig { abstract.returns(T::Boolean) } + def schema_known?; end + + # source://idlc//lib/idlc/interfaces.rb#45 + sig do + abstract + .returns(T.any(::Integer, ::String, T::Array[::Integer], T::Array[::String], T::Array[T::Boolean], T::Boolean)) + end def value; end - # source://idlc//lib/idlc/interfaces.rb#31 + # source://idlc//lib/idlc/interfaces.rb#42 sig { abstract.returns(T::Boolean) } def value_known?; end end -# source://idlc//lib/idlc/interfaces.rb#18 -Idl::RuntimeParam::ValueType = T.type_alias { T.any(::Integer, ::String, T::Array[::Integer], T::Array[T::Boolean], T::Boolean) } +# source://idlc//lib/idlc/interfaces.rb#20 +Idl::RuntimeParam::ValueType = T.type_alias { T.any(::Integer, ::String, T::Array[::Integer], T::Array[::String], T::Array[T::Boolean], T::Boolean) } -# source://idlc//lib/idlc/ast.rb#595 +# source://idlc//lib/idlc/ast.rb#609 module Idl::Rvalue abstract! - # source://idlc//lib/idlc/ast.rb#645 + # source://idlc//lib/idlc/ast.rb#659 sig { params(symtab: ::Idl::SymbolTable).returns(T.any(::Integer, ::Symbol)) } def max_value(symtab); end - # source://idlc//lib/idlc/ast.rb#655 + # source://idlc//lib/idlc/ast.rb#669 sig { params(symtab: ::Idl::SymbolTable).returns(T.any(::Integer, ::Symbol)) } def min_value(symtab); end - # source://idlc//lib/idlc/ast.rb#680 + # source://idlc//lib/idlc/ast.rb#694 sig { params(value: ::Integer, width: ::Integer, signed: T::Boolean).returns(::Integer) } def truncate(value, width, signed); end - # source://idlc//lib/idlc/ast.rb#618 + # source://idlc//lib/idlc/ast.rb#632 sig { abstract.params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } def type(symtab); end - # source://idlc//lib/idlc/ast.rb#642 + # source://idlc//lib/idlc/ast.rb#656 sig do abstract .params( @@ -3343,7 +5046,7 @@ module Idl::Rvalue end def value(symtab); end - # source://idlc//lib/idlc/ast.rb#677 + # source://idlc//lib/idlc/ast.rb#691 sig do params( symtab: ::Idl::SymbolTable @@ -3352,353 +5055,443 @@ module Idl::Rvalue def values(symtab); end end -# source://idlc//lib/idlc/ast.rb#697 +# source://idlc//lib/idlc/ast.rb#711 Idl::RvalueAst = T.type_alias { T.all(::Idl::AstNode, ::Idl::Rvalue) } -# source://idlc//lib/idlc/interfaces.rb#41 +# source://idlc//lib/idlc/interfaces.rb#52 module Idl::Schema interface! - # source://idlc//lib/idlc/interfaces.rb#50 + # source://idlc//lib/idlc/interfaces.rb#61 sig { abstract.returns(::Integer) } def max_val; end - # source://idlc//lib/idlc/interfaces.rb#47 + # source://idlc//lib/idlc/interfaces.rb#58 sig { abstract.returns(T::Boolean) } def max_val_known?; end - # source://idlc//lib/idlc/interfaces.rb#56 + # source://idlc//lib/idlc/interfaces.rb#67 sig { abstract.returns(::Integer) } def min_val; end - # source://idlc//lib/idlc/interfaces.rb#53 + # source://idlc//lib/idlc/interfaces.rb#64 sig { abstract.returns(T::Boolean) } def min_val_known?; end + + # source://idlc//lib/idlc/interfaces.rb#70 + sig { abstract.returns(::Idl::Type) } + def to_idl_type; end end -# source://idlc//lib/idlc/ast.rb#3050 +# source://idlc//lib/idlc/ast.rb#3355 class Idl::SignCastAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#3058 + # source://idlc//lib/idlc/ast.rb#3363 def initialize(input, interval, exp); end - # source://idlc//lib/idlc/ast.rb#3054 + # source://idlc//lib/idlc/ast.rb#3359 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#3056 + # source://idlc//lib/idlc/ast.rb#3361 def expression; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#152 + # source://idlc//lib/idlc/passes/gen_adoc.rb#163 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#3084 + # source://idlc//lib/idlc/ast.rb#3389 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#3066 + # source://idlc//lib/idlc/ast.rb#3371 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#3061 + # source://idlc//lib/idlc/ast.rb#3366 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#3069 + # source://idlc//lib/idlc/ast.rb#3374 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#3044 +# source://idlc//lib/idlc/ast.rb#3349 class Idl::SignCastSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#3045 + # source://idlc//lib/idlc/ast.rb#3350 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#4676 +# source://idlc//lib/idlc/idl_parser.rb#12232 +module Idl::SingleDeclaration0 + # source://idlc//lib/idlc/idl_parser.rb#12233 + def ary_size_decl; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12238 +module Idl::SingleDeclaration1 + # source://idlc//lib/idlc/idl_parser.rb#12247 + def ary_size; end + + # source://idlc//lib/idlc/idl_parser.rb#12243 + def id; end + + # source://idlc//lib/idlc/idl_parser.rb#12239 + def type_name; end +end + +# source://idlc//lib/idlc/idl_parser.rb#11801 +module Idl::SingleDeclarationWithInitialization0 + # source://idlc//lib/idlc/idl_parser.rb#11810 + def ary_size; end + + # source://idlc//lib/idlc/idl_parser.rb#11806 + def id; end + + # source://idlc//lib/idlc/idl_parser.rb#11814 + def rval; end + + # source://idlc//lib/idlc/idl_parser.rb#11802 + def type_name; end +end + +# source://idlc//lib/idlc/idl_parser.rb#16592 +module Idl::Space0 + # source://idlc//lib/idlc/idl_parser.rb#16593 + def space?; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12332 +module Idl::Statement0 + # source://idlc//lib/idlc/idl_parser.rb#12333 + def a; end + + # source://idlc//lib/idlc/idl_parser.rb#12337 + def expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#12343 +module Idl::Statement1 + # source://idlc//lib/idlc/idl_parser.rb#12344 + def a; end +end + +# source://idlc//lib/idlc/ast.rb#5077 class Idl::StatementAst < ::Idl::AstNode include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#4684 + # source://idlc//lib/idlc/ast.rb#5085 def initialize(input, interval, action); end - # source://idlc//lib/idlc/ast.rb#4682 + # source://idlc//lib/idlc/ast.rb#5083 def action; end - # source://idlc//lib/idlc/ast.rb#4680 + # source://idlc//lib/idlc/ast.rb#5081 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#4694 + # source://idlc//lib/idlc/ast.rb#5095 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#4704 + # source://idlc//lib/idlc/ast.rb#5105 def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#248 + # source://idlc//lib/idlc/passes/gen_adoc.rb#259 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/gen_option_adoc.rb#82 + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#83 def gen_option_adoc; end - # source://idlc//lib/idlc/passes/prune.rb#220 + # source://idlc//lib/idlc/passes/prune.rb#222 def prune(symtab); end # source://idlc//lib/idlc/passes/reachable_exceptions.rb#82 def reachable_exceptions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/reachable_functions.rb#62 + # source://idlc//lib/idlc/passes/reachable_functions.rb#69 def reachable_functions(symtab, cache = T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#4715 + # source://idlc//lib/idlc/ast.rb#5116 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4689 + # source://idlc//lib/idlc/ast.rb#5090 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#4642 +# source://idlc//lib/idlc/ast.rb#5043 class Idl::StatementSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4643 + # source://idlc//lib/idlc/ast.rb#5044 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#5236 +# source://idlc//lib/idlc/idl_parser.rb#16495 +module Idl::String0; end + +# source://idlc//lib/idlc/idl_parser.rb#16498 +module Idl::String1; end + +# source://idlc//lib/idlc/ast.rb#5639 class Idl::StringLiteralAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#5242 + # source://idlc//lib/idlc/ast.rb#5645 def initialize(input, interval); end - # source://idlc//lib/idlc/ast.rb#5240 + # source://idlc//lib/idlc/ast.rb#5643 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#54 + # source://idlc//lib/idlc/passes/gen_adoc.rb#55 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#5260 + # source://idlc//lib/idlc/ast.rb#5663 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#5250 + # source://idlc//lib/idlc/ast.rb#5653 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#5248 + # source://idlc//lib/idlc/ast.rb#5651 def type_check(_symtab); end - # source://idlc//lib/idlc/ast.rb#5255 + # source://idlc//lib/idlc/ast.rb#5658 def value(_symtab); end end -# source://idlc//lib/idlc/ast.rb#5224 +# source://idlc//lib/idlc/ast.rb#5627 module Idl::StringLiteralSyntaxNode - # source://idlc//lib/idlc/ast.rb#5225 + # source://idlc//lib/idlc/ast.rb#5628 def to_ast; end end -# source://idlc//lib/idlc/type.rb#910 +# source://idlc//lib/idlc/type.rb#989 Idl::StringType = T.let(T.unsafe(nil), Idl::Type) -# source://idlc//lib/idlc/ast.rb#1641 +# source://idlc//lib/idlc/idl_parser.rb#1191 +module Idl::StructDefinition0 + # source://idlc//lib/idlc/idl_parser.rb#1196 + def id; end + + # source://idlc//lib/idlc/idl_parser.rb#1192 + def type_name; end +end + +# source://idlc//lib/idlc/idl_parser.rb#1202 +module Idl::StructDefinition1 + # source://idlc//lib/idlc/idl_parser.rb#1207 + def member; end + + # source://idlc//lib/idlc/idl_parser.rb#1203 + def user_type_name; end +end + +# source://idlc//lib/idlc/ast.rb#1768 class Idl::StructDefinitionAst < ::Idl::AstNode include ::Idl::Declaration - # source://idlc//lib/idlc/ast.rb#1656 + # source://idlc//lib/idlc/ast.rb#1783 def initialize(input, interval, name, member_types, member_names); end - # source://idlc//lib/idlc/ast.rb#1684 + # source://idlc//lib/idlc/ast.rb#1811 def add_symbol(symtab); end - # source://idlc//lib/idlc/ast.rb#1654 + # source://idlc//lib/idlc/ast.rb#1781 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#1651 + # source://idlc//lib/idlc/ast.rb#1778 def member_names; end - # source://idlc//lib/idlc/ast.rb#1695 + # source://idlc//lib/idlc/ast.rb#1822 def member_type(name, symtab); end - # source://idlc//lib/idlc/ast.rb#1648 + # source://idlc//lib/idlc/ast.rb#1775 def member_types; end - # source://idlc//lib/idlc/ast.rb#1645 + # source://idlc//lib/idlc/ast.rb#1772 def name; end - # source://idlc//lib/idlc/ast.rb#1702 + # source://idlc//lib/idlc/ast.rb#1829 def num_members; end - # source://idlc//lib/idlc/ast.rb#1705 + # source://idlc//lib/idlc/ast.rb#1832 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1673 + # source://idlc//lib/idlc/ast.rb#1800 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#1665 + # source://idlc//lib/idlc/ast.rb#1792 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#1620 +# source://idlc//lib/idlc/ast.rb#1747 class Idl::StructDefinitionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#1621 + # source://idlc//lib/idlc/ast.rb#1748 def to_ast; end end -# source://idlc//lib/idlc/type.rb#510 +# source://idlc//lib/idlc/type.rb#584 class Idl::StructType < ::Idl::Type - # source://idlc//lib/idlc/type.rb#515 + # source://idlc//lib/idlc/type.rb#589 sig { params(type_name: ::String, member_types: T::Array[::Idl::Type], member_names: T::Array[::String]).void } def initialize(type_name, member_types, member_names); end - # source://idlc//lib/idlc/type.rb#525 + # source://idlc//lib/idlc/type.rb#599 def clone; end - # source://idlc//lib/idlc/type.rb#529 + # source://idlc//lib/idlc/type.rb#603 def default; end - # source://idlc//lib/idlc/type.rb#537 + # source://idlc//lib/idlc/type.rb#611 def member?(name); end - # source://idlc//lib/idlc/type.rb#539 + # source://idlc//lib/idlc/type.rb#613 def member_type(member_name); end - # source://idlc//lib/idlc/type.rb#523 + # source://idlc//lib/idlc/type.rb#597 sig { returns(::String) } def name; end - # source://idlc//lib/idlc/type.rb#512 + # source://idlc//lib/idlc/type.rb#621 + def runtime?; end + + # source://idlc//lib/idlc/type.rb#586 sig { returns(::String) } def type_name; end end -# source://idlc//lib/idlc/symbol_table.rb#114 +# source://idlc//lib/idlc/symbol_table.rb#121 class Idl::SymbolTable - # source://idlc//lib/idlc/symbol_table.rb#207 + # source://idlc//lib/idlc/symbol_table.rb#235 sig do params( mxlen: T.nilable(::Integer), - possible_xlens: T::Array[::Integer], - params: T::Array[::Idl::RuntimeParam], + possible_xlens_cb: T.nilable(T.proc.returns(T::Array[::Integer])), + builtin_global_vars: T::Array[::Idl::Var], builtin_enums: T::Array[::Idl::SymbolTable::EnumDef], builtin_funcs: T.nilable(::Idl::SymbolTable::BuiltinFunctionCallbacks), csrs: T::Array[::Idl::Csr], + params: T::Array[::Idl::RuntimeParam], name: ::String ).void end - def initialize(mxlen: T.unsafe(nil), possible_xlens: T.unsafe(nil), params: T.unsafe(nil), builtin_enums: T.unsafe(nil), builtin_funcs: T.unsafe(nil), csrs: T.unsafe(nil), name: T.unsafe(nil)); end + def initialize(mxlen: T.unsafe(nil), possible_xlens_cb: T.unsafe(nil), builtin_global_vars: T.unsafe(nil), builtin_enums: T.unsafe(nil), builtin_funcs: T.unsafe(nil), csrs: T.unsafe(nil), params: T.unsafe(nil), name: T.unsafe(nil)); end - # source://idlc//lib/idlc/symbol_table.rb#381 + # source://idlc//lib/idlc/symbol_table.rb#407 def add(name, var); end - # source://idlc//lib/idlc/symbol_table.rb#390 + # source://idlc//lib/idlc/symbol_table.rb#416 def add!(name, var); end - # source://idlc//lib/idlc/symbol_table.rb#407 + # source://idlc//lib/idlc/symbol_table.rb#433 def add_above!(name, var); end - # source://idlc//lib/idlc/symbol_table.rb#416 + # source://idlc//lib/idlc/symbol_table.rb#442 def add_at!(level, name, var); end - # source://idlc//lib/idlc/symbol_table.rb#439 + # source://idlc//lib/idlc/symbol_table.rb#466 def at_global_scope?; end - # source://idlc//lib/idlc/symbol_table.rb#315 + # source://idlc//lib/idlc/symbol_table.rb#204 + def builtin_funcs; end + + # source://idlc//lib/idlc/symbol_table.rb#341 def callstack; end - # source://idlc//lib/idlc/symbol_table.rb#188 + # source://idlc//lib/idlc/symbol_table.rb#213 sig { params(csr_name: ::String).returns(T.nilable(::Idl::Csr)) } def csr(csr_name); end - # source://idlc//lib/idlc/symbol_table.rb#182 + # source://idlc//lib/idlc/symbol_table.rb#207 sig { params(csr_name: ::String).returns(T::Boolean) } def csr?(csr_name); end - # source://idlc//lib/idlc/symbol_table.rb#185 + # source://idlc//lib/idlc/symbol_table.rb#210 sig { returns(T::Hash[::String, ::Idl::Csr]) } def csr_hash; end - # source://idlc//lib/idlc/symbol_table.rb#488 + # source://idlc//lib/idlc/symbol_table.rb#516 def deep_clone(clone_values: T.unsafe(nil), freeze_global: T.unsafe(nil)); end - # source://idlc//lib/idlc/symbol_table.rb#257 + # source://idlc//lib/idlc/symbol_table.rb#285 def deep_freeze; end - # source://idlc//lib/idlc/symbol_table.rb#400 + # source://idlc//lib/idlc/symbol_table.rb#426 def del(name); end - # source://idlc//lib/idlc/symbol_table.rb#361 + # source://idlc//lib/idlc/symbol_table.rb#387 def find_all(single_scope: T.unsafe(nil), &block); end - # source://idlc//lib/idlc/symbol_table.rb#331 + # source://idlc//lib/idlc/symbol_table.rb#357 def get(name); end - # source://idlc//lib/idlc/symbol_table.rb#339 + # source://idlc//lib/idlc/symbol_table.rb#365 def get_from(name, level); end - # source://idlc//lib/idlc/symbol_table.rb#351 + # source://idlc//lib/idlc/symbol_table.rb#377 def get_global(name); end - # source://idlc//lib/idlc/symbol_table.rb#444 + # source://idlc//lib/idlc/symbol_table.rb#471 def global_clone; end - # source://idlc//lib/idlc/symbol_table.rb#128 + # source://idlc//lib/idlc/symbol_table.rb#135 def hash; end - # source://idlc//lib/idlc/symbol_table.rb#485 + # source://idlc//lib/idlc/symbol_table.rb#513 def in_use?; end - # source://idlc//lib/idlc/symbol_table.rb#252 + # source://idlc//lib/idlc/symbol_table.rb#280 sig { returns(::String) } def inspect; end - # source://idlc//lib/idlc/symbol_table.rb#320 + # source://idlc//lib/idlc/symbol_table.rb#346 def key?(name); end - # source://idlc//lib/idlc/symbol_table.rb#324 + # source://idlc//lib/idlc/symbol_table.rb#350 def keys_pretty; end - # source://idlc//lib/idlc/symbol_table.rb#425 + # source://idlc//lib/idlc/symbol_table.rb#451 def levels; end - # source://idlc//lib/idlc/symbol_table.rb#149 + # source://idlc//lib/idlc/symbol_table.rb#158 sig { returns(T::Boolean) } def multi_xlen?; end - # source://idlc//lib/idlc/symbol_table.rb#120 + # source://idlc//lib/idlc/symbol_table.rb#127 sig { returns(T.nilable(::Integer)) } def mxlen; end - # source://idlc//lib/idlc/symbol_table.rb#123 + # source://idlc//lib/idlc/symbol_table.rb#130 sig { returns(::String) } def name; end - # source://idlc//lib/idlc/symbol_table.rb#191 + # source://idlc//lib/idlc/symbol_table.rb#216 sig { params(param_name: ::String).returns(T.nilable(::Idl::RuntimeParam)) } def param(param_name); end - # source://idlc//lib/idlc/symbol_table.rb#194 + # source://idlc//lib/idlc/symbol_table.rb#219 sig { returns(T::Hash[::String, ::Idl::RuntimeParam]) } def params_hash; end - # source://idlc//lib/idlc/symbol_table.rb#305 + # source://idlc//lib/idlc/symbol_table.rb#331 def pop; end - # source://idlc//lib/idlc/symbol_table.rb#152 + # source://idlc//lib/idlc/symbol_table.rb#165 sig { returns(T::Array[::Integer]) } def possible_xlens; end - # source://idlc//lib/idlc/symbol_table.rb#430 + # source://idlc//lib/idlc/symbol_table.rb#457 + sig { void } def print; end - # source://idlc//lib/idlc/symbol_table.rb#293 + # source://idlc//lib/idlc/symbol_table.rb#319 def push(ast); end - # source://idlc//lib/idlc/symbol_table.rb#474 + # source://idlc//lib/idlc/symbol_table.rb#502 def release; end class << self - # source://idlc//lib/idlc/symbol_table.rb#159 + # source://idlc//lib/idlc/symbol_table.rb#182 sig do params( blk: T.proc.params(arg0: ::String).returns(T.nilable(T::Boolean)) @@ -3706,7 +5499,7 @@ class Idl::SymbolTable end def make_implemented_callback(&blk); end - # source://idlc//lib/idlc/symbol_table.rb#173 + # source://idlc//lib/idlc/symbol_table.rb#196 sig do params( blk: T.proc.params(arg0: ::Integer).returns(T.nilable(T::Boolean)) @@ -3714,7 +5507,7 @@ class Idl::SymbolTable end def make_implemented_csr_callback(&blk); end - # source://idlc//lib/idlc/symbol_table.rb#166 + # source://idlc//lib/idlc/symbol_table.rb#189 sig do params( blk: T.proc.params(arg0: ::String, arg1: ::String).returns(T.nilable(T::Boolean)) @@ -3724,46 +5517,59 @@ class Idl::SymbolTable end end -# source://idlc//lib/idlc/symbol_table.rb#175 +# source://idlc//lib/idlc/symbol_table.rb#198 class Idl::SymbolTable::BuiltinFunctionCallbacks < ::T::Struct prop :implemented, T.proc.params(arg0: ::String).returns(T.nilable(T::Boolean)) prop :implemented_version, T.proc.params(arg0: ::String, arg1: ::String).returns(T.nilable(T::Boolean)) prop :implemented_csr, T.proc.params(arg0: ::Integer).returns(T.nilable(T::Boolean)) class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end -# source://idlc//lib/idlc/symbol_table.rb#125 +# source://idlc//lib/idlc/symbol_table.rb#132 class Idl::SymbolTable::DuplicateSymError < ::StandardError; end -# source://idlc//lib/idlc/symbol_table.rb#134 +# source://idlc//lib/idlc/symbol_table.rb#141 class Idl::SymbolTable::EnumDef < ::T::Struct prop :name, ::String prop :element_values, T::Array[::Integer] prop :element_names, T::Array[::String] - # source://idlc//lib/idlc/symbol_table.rb#142 + # source://idlc//lib/idlc/symbol_table.rb#149 sig { params(name: ::String, element_values: T::Array[::Integer], element_names: T::Array[::String]).void } def initialize(name:, element_values:, element_names:); end class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end -# source://idlc//lib/idlc/symbol_table.rb#154 +# source://idlc//lib/idlc/symbol_table.rb#177 Idl::SymbolTable::ImplementedCallbackType = T.type_alias { T.proc.params(arg0: ::String).returns(T.nilable(T::Boolean)) } -# source://idlc//lib/idlc/symbol_table.rb#168 +# source://idlc//lib/idlc/symbol_table.rb#191 Idl::SymbolTable::ImplementedCsrCallbackType = T.type_alias { T.proc.params(arg0: ::Integer).returns(T.nilable(T::Boolean)) } -# source://idlc//lib/idlc/symbol_table.rb#161 +# source://idlc//lib/idlc/symbol_table.rb#184 Idl::SymbolTable::ImplementedVersionCallbackType = T.type_alias { T.proc.params(arg0: ::String, arg1: ::String).returns(T.nilable(T::Boolean)) } +# source://idlc//lib/idlc/symbol_table.rb#160 +class Idl::SymbolTable::MemoizedState < ::T::Struct + prop :possible_xlens, T.nilable(T::Array[::Integer]) + + class << self + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 + def inherited(s); end + end +end + +# source://idlc//lib/idlc/symbol_table.rb#155 +Idl::SymbolTable::PossibleXlensCallbackType = T.type_alias { T.proc.returns(T::Array[::Integer]) } + # source://idlc//lib/idlc/syntax_node.rb#49 class Idl::SyntaxNode < ::Treetop::Runtime::SyntaxNode # source://idlc//lib/idlc/syntax_node.rb#54 @@ -3771,170 +5577,381 @@ class Idl::SyntaxNode < ::Treetop::Runtime::SyntaxNode def to_ast; end end -# source://idlc//lib/idlc/ast.rb#4549 +# source://idlc//lib/idlc/idl_parser.rb#3969 +module Idl::TemplateSafeP3BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#3970 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#3974 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#3979 +module Idl::TemplateSafeP3BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#3980 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#3984 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4205 +module Idl::TemplateSafeP4BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#4206 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#4210 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4215 +module Idl::TemplateSafeP4BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#4216 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#4220 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4441 +module Idl::TemplateSafeP5BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#4442 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#4446 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4451 +module Idl::TemplateSafeP5BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#4452 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#4456 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4677 +module Idl::TemplateSafeP6BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#4678 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#4682 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4687 +module Idl::TemplateSafeP6BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#4688 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#4692 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4913 +module Idl::TemplateSafeP7BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#4914 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#4918 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#4923 +module Idl::TemplateSafeP7BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#4924 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#4928 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#5149 +module Idl::TemplateSafeP8BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#5150 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#5154 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#5159 +module Idl::TemplateSafeP8BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#5160 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#5164 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#5385 +module Idl::TemplateSafeP9BinaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#5386 + def op; end + + # source://idlc//lib/idlc/idl_parser.rb#5390 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#5395 +module Idl::TemplateSafeP9BinaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#5396 + def l; end + + # source://idlc//lib/idlc/idl_parser.rb#5400 + def r; end +end + +# source://idlc//lib/idlc/idl_parser.rb#7889 +module Idl::TemplateSafeTernaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#7890 + def e; end + + # source://idlc//lib/idlc/idl_parser.rb#7898 + def f; end + + # source://idlc//lib/idlc/idl_parser.rb#7894 + def t; end +end + +# source://idlc//lib/idlc/idl_parser.rb#7768 +module Idl::TernaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#7769 + def e; end + + # source://idlc//lib/idlc/idl_parser.rb#7777 + def f; end + + # source://idlc//lib/idlc/idl_parser.rb#7773 + def t; end +end + +# source://idlc//lib/idlc/ast.rb#4941 class Idl::TernaryOperatorExpressionAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#4559 + # source://idlc//lib/idlc/ast.rb#4951 def initialize(input, interval, condition, true_expression, false_expression); end - # source://idlc//lib/idlc/ast.rb#4555 + # source://idlc//lib/idlc/ast.rb#4947 def condition; end - # source://idlc//lib/idlc/ast.rb#4553 + # source://idlc//lib/idlc/ast.rb#4945 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#4557 + # source://idlc//lib/idlc/ast.rb#4949 def false_expression; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#175 + # source://idlc//lib/idlc/passes/gen_adoc.rb#186 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/passes/gen_option_adoc.rb#114 + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#123 def gen_option_adoc; end - # source://idlc//lib/idlc/passes/prune.rb#454 + # source://idlc//lib/idlc/passes/prune.rb#456 def prune(symtab); end - # source://idlc//lib/idlc/ast.rb#4639 + # source://idlc//lib/idlc/ast.rb#5040 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4556 + # source://idlc//lib/idlc/ast.rb#4948 def true_expression; end - # source://idlc//lib/idlc/ast.rb#4591 + # source://idlc//lib/idlc/ast.rb#4983 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#4564 + # source://idlc//lib/idlc/ast.rb#4956 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#4623 + # source://idlc//lib/idlc/ast.rb#5024 def value(symtab); end - # source://idlc//lib/idlc/ast.rb#4628 + # source://idlc//lib/idlc/ast.rb#5029 def values(symtab); end end -# source://idlc//lib/idlc/ast.rb#4538 +# source://idlc//lib/idlc/ast.rb#4930 class Idl::TernaryOperatorExpressionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4539 + # source://idlc//lib/idlc/ast.rb#4931 + def to_ast; end +end + +# source://idlc//lib/idlc/ast.rb#759 +class Idl::TrueExpressionAst < ::Idl::AstNode + include ::Idl::Rvalue + + # source://idlc//lib/idlc/ast.rb#763 + sig { params(input: ::String, interval: T::Range[::Integer]).void } + def initialize(input, interval); end + + # source://idlc//lib/idlc/ast.rb#768 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } + def const_eval?(symtab); end + + # source://idlc//lib/idlc/passes/gen_adoc.rb#148 + def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end + + # source://idlc//lib/idlc/passes/gen_option_adoc.rb#89 + def gen_option_adoc; end + + # source://idlc//lib/idlc/ast.rb#780 + sig { override.returns(::String) } + def to_idl; end + + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#66 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#774 + sig { override.params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } + def type(symtab); end + + # source://idlc//lib/idlc/ast.rb#771 + sig { override.params(symtab: ::Idl::SymbolTable).void } + def type_check(symtab); end + + # source://idlc//lib/idlc/ast.rb#777 + sig { override.params(symtab: ::Idl::SymbolTable).returns(::TrueClass) } + def value(symtab); end +end + +# source://idlc//lib/idlc/ast.rb#755 +class Idl::TrueExpressionSyntaxNode < ::Idl::SyntaxNode + # source://idlc//lib/idlc/ast.rb#756 def to_ast; end end # source://idlc//lib/idlc/type.rb#15 class Idl::Type - # source://idlc//lib/idlc/type.rb#107 - def initialize(kind, qualifiers: T.unsafe(nil), width: T.unsafe(nil), sub_type: T.unsafe(nil), name: T.unsafe(nil), tuple_types: T.unsafe(nil), enum_class: T.unsafe(nil), csr: T.unsafe(nil)); end + # source://idlc//lib/idlc/type.rb#119 + def initialize(kind, qualifiers: T.unsafe(nil), width: T.unsafe(nil), width_ast: T.unsafe(nil), max_width: T.unsafe(nil), sub_type: T.unsafe(nil), name: T.unsafe(nil), tuple_types: T.unsafe(nil), return_type: T.unsafe(nil), arguments: T.unsafe(nil), enum_class: T.unsafe(nil), csr: T.unsafe(nil)); end - # source://idlc//lib/idlc/type.rb#368 + # source://idlc//lib/idlc/type.rb#382 def ary?; end - # source://idlc//lib/idlc/type.rb#221 + # source://idlc//lib/idlc/type.rb#235 def ary_type(ary); end - # source://idlc//lib/idlc/type.rb#146 + # source://idlc//lib/idlc/type.rb#160 def clone; end - # source://idlc//lib/idlc/type.rb#161 + # source://idlc//lib/idlc/type.rb#175 def comparable_to?(type); end - # source://idlc//lib/idlc/type.rb#372 + # source://idlc//lib/idlc/type.rb#386 def const?; end - # source://idlc//lib/idlc/type.rb#231 + # source://idlc//lib/idlc/type.rb#245 def convertable_to?(type); end - # source://idlc//lib/idlc/type.rb#47 + # source://idlc//lib/idlc/type.rb#56 def default; end - # source://idlc//lib/idlc/type.rb#86 + # source://idlc//lib/idlc/type.rb#98 sig { returns(::Idl::EnumerationType) } def enum_class; end - # source://idlc//lib/idlc/type.rb#193 + # source://idlc//lib/idlc/type.rb#207 def equal_to?(type); end - # source://idlc//lib/idlc/type.rb#320 + # source://idlc//lib/idlc/type.rb#334 def fully_qualified_name; end - # source://idlc//lib/idlc/type.rb#384 + # source://idlc//lib/idlc/type.rb#398 def global?; end - # source://idlc//lib/idlc/type.rb#43 + # source://idlc//lib/idlc/type.rb#44 sig { returns(T::Boolean) } def integral?; end - # source://idlc//lib/idlc/type.rb#71 + # source://idlc//lib/idlc/type.rb#80 sig { returns(::Symbol) } def kind; end # source://idlc//lib/idlc/type.rb#406 + def known?; end + + # source://idlc//lib/idlc/type.rb#424 sig { returns(::Idl::Type) } def make_const; end - # source://idlc//lib/idlc/type.rb#399 + # source://idlc//lib/idlc/type.rb#417 sig { returns(::Idl::Type) } def make_const!; end - # source://idlc//lib/idlc/type.rb#411 + # source://idlc//lib/idlc/type.rb#429 def make_global; end - # source://idlc//lib/idlc/type.rb#392 + # source://idlc//lib/idlc/type.rb#434 + def make_known; end + + # source://idlc//lib/idlc/type.rb#410 def make_signed; end - # source://idlc//lib/idlc/type.rb#376 + # source://idlc//lib/idlc/type.rb#390 def mutable?; end - # source://idlc//lib/idlc/type.rb#350 + # source://idlc//lib/idlc/type.rb#364 def name; end - # source://idlc//lib/idlc/type.rb#74 + # source://idlc//lib/idlc/type.rb#83 sig { returns(T::Array[::Symbol]) } def qualifiers; end - # source://idlc//lib/idlc/type.rb#88 + # source://idlc//lib/idlc/type.rb#100 def qualify(qualifier); end - # source://idlc//lib/idlc/type.rb#380 + # source://idlc//lib/idlc/type.rb#48 + def runtime?; end + + # source://idlc//lib/idlc/type.rb#394 def signed?; end - # source://idlc//lib/idlc/type.rb#80 + # source://idlc//lib/idlc/type.rb#92 sig { returns(::Idl::Type) } def sub_type; end - # source://idlc//lib/idlc/type.rb#388 + # source://idlc//lib/idlc/type.rb#402 def template_var?; end - # source://idlc//lib/idlc/type.rb#300 + # source://idlc//lib/idlc/type.rb#314 sig { returns(::String) } def to_idl; end - # source://idlc//lib/idlc/type.rb#320 + # source://idlc//lib/idlc/type.rb#334 def to_s; end - # source://idlc//lib/idlc/type.rb#83 + # source://idlc//lib/idlc/type.rb#95 sig { returns(T::Array[::Idl::Type]) } def tuple_types; end - # source://idlc//lib/idlc/type.rb#77 + # source://idlc//lib/idlc/type.rb#86 sig { returns(T.any(::Integer, ::Symbol)) } def width; end + # source://idlc//lib/idlc/type.rb#89 + sig { returns(T.nilable(::Idl::AstNode)) } + def width_ast; end + class << self - # source://idlc//lib/idlc/type.rb#499 + # source://idlc//lib/idlc/type.rb#567 + sig { params(schema: T::Hash[::String, T.untyped]).returns(T.nilable(::Idl::Type)) } def from_json_schema(schema); end - # source://idlc//lib/idlc/type.rb#94 + # source://idlc//lib/idlc/type.rb#106 def from_typename(type_name, cfg_arch); end private - # source://idlc//lib/idlc/type.rb#459 + # source://idlc//lib/idlc/type.rb#529 + sig { params(schema: T::Hash[::String, T.untyped]).returns(::Idl::Type) } def from_json_schema_array_type(schema); end - # source://idlc//lib/idlc/type.rb#418 + # source://idlc//lib/idlc/type.rb#442 + sig { params(schema: T::Hash[::String, T.untyped]).returns(T.nilable(::Idl::Type)) } def from_json_schema_scalar_type(schema); end end end @@ -3945,210 +5962,307 @@ Idl::Type::KINDS = T.let(T.unsafe(nil), Array) # source://idlc//lib/idlc/type.rb#34 Idl::Type::QUALIFIERS = T.let(T.unsafe(nil), Array) -# source://idlc//lib/idlc/type.rb#144 +# source://idlc//lib/idlc/type.rb#158 Idl::Type::TYPE_FROM_KIND = T.let(T.unsafe(nil), Hash) -# source://idlc//lib/idlc/ast.rb#5801 +# source://idlc//lib/idlc/ast.rb#6236 Idl::TypeNameAst = T.type_alias { T.any(::Idl::BuiltinTypeNameAst, ::Idl::UserTypeNameAst) } -# source://idlc//lib/idlc/ast.rb#4427 +# source://idlc//lib/idlc/idl_parser.rb#6782 +module Idl::UnaryExpression0 + # source://idlc//lib/idlc/idl_parser.rb#6783 + def expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#6788 +module Idl::UnaryExpression1 + # source://idlc//lib/idlc/idl_parser.rb#6789 + def first; end + + # source://idlc//lib/idlc/idl_parser.rb#6793 + def rest; end +end + +# source://idlc//lib/idlc/idl_parser.rb#6799 +module Idl::UnaryExpression2 + # source://idlc//lib/idlc/idl_parser.rb#6800 + def expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#6806 +module Idl::UnaryExpression3 + # source://idlc//lib/idlc/idl_parser.rb#6807 + def expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#6813 +module Idl::UnaryExpression4 + # source://idlc//lib/idlc/idl_parser.rb#6814 + def user_type_name; end +end + +# source://idlc//lib/idlc/idl_parser.rb#6820 +module Idl::UnaryExpression5 + # source://idlc//lib/idlc/idl_parser.rb#6821 + def user_type_name; end +end + +# source://idlc//lib/idlc/idl_parser.rb#6827 +module Idl::UnaryExpression6 + # source://idlc//lib/idlc/idl_parser.rb#6832 + def expression; end + + # source://idlc//lib/idlc/idl_parser.rb#6828 + def user_type_name; end +end + +# source://idlc//lib/idlc/idl_parser.rb#6838 +module Idl::UnaryExpression7 + # source://idlc//lib/idlc/idl_parser.rb#6839 + def expression; end +end + +# source://idlc//lib/idlc/idl_parser.rb#6845 +module Idl::UnaryExpression8 + # source://idlc//lib/idlc/idl_parser.rb#6846 + def ary; end + + # source://idlc//lib/idlc/idl_parser.rb#6850 + def value; end +end + +# source://idlc//lib/idlc/idl_parser.rb#6856 +module Idl::UnaryExpression9 + # source://idlc//lib/idlc/idl_parser.rb#6861 + def e; end + + # source://idlc//lib/idlc/idl_parser.rb#6857 + def o; end +end + +# source://idlc//lib/idlc/ast.rb#4819 class Idl::UnaryOperatorExpressionAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#4435 + # source://idlc//lib/idlc/ast.rb#4827 def initialize(input, interval, op, expression); end - # source://idlc//lib/idlc/ast.rb#4431 + # source://idlc//lib/idlc/ast.rb#4823 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#4524 + # source://idlc//lib/idlc/ast.rb#4916 def exp; end - # source://idlc//lib/idlc/ast.rb#4433 + # source://idlc//lib/idlc/ast.rb#4825 def expression; end - # source://idlc//lib/idlc/passes/gen_adoc.rb#254 + # source://idlc//lib/idlc/passes/gen_adoc.rb#265 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#4441 + # source://idlc//lib/idlc/ast.rb#4833 def invert(symtab); end - # source://idlc//lib/idlc/ast.rb#4529 + # source://idlc//lib/idlc/ast.rb#4921 def op; end - # source://idlc//lib/idlc/ast.rb#4535 + # source://idlc//lib/idlc/ast.rb#4927 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#4452 + # source://udb/0.1.0/lib/udb/idl/condition_to_udb.rb#126 + sig { override.params(symtab: ::Idl::SymbolTable).returns(T.any(T::Boolean, T::Hash[::String, T.untyped])) } + def to_udb_h(symtab); end + + # source://idlc//lib/idlc/ast.rb#4844 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#4468 + # source://idlc//lib/idlc/ast.rb#4860 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#4496 + # source://idlc//lib/idlc/ast.rb#4888 def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#4415 +# source://idlc//lib/idlc/ast.rb#4807 class Idl::UnaryOperatorExpressionSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#4416 + # source://idlc//lib/idlc/ast.rb#4808 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#5270 +# source://idlc//lib/idlc/ast.rb#5673 class Idl::UnknownLiteral - # source://idlc//lib/idlc/ast.rb#5271 + # source://idlc//lib/idlc/ast.rb#5674 def initialize(known_value, unknown_mask); end + + # source://idlc//lib/idlc/ast.rb#5678 + def bit_length; end + + # source://idlc//lib/idlc/ast.rb#5681 + def to_s; end end -# source://idlc//lib/idlc/ast.rb#5771 +# source://idlc//lib/idlc/idl_parser.rb#15634 +module Idl::UserTypeName0; end + +# source://idlc//lib/idlc/ast.rb#6206 class Idl::UserTypeNameAst < ::Idl::AstNode - # source://idlc//lib/idlc/ast.rb#5775 + # source://idlc//lib/idlc/ast.rb#6210 def initialize(input, interval); end - # source://idlc//lib/idlc/ast.rb#5773 + # source://idlc//lib/idlc/ast.rb#6208 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#65 + # source://idlc//lib/idlc/passes/gen_adoc.rb#66 def gen_adoc(indent, indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#5798 + # source://idlc//lib/idlc/ast.rb#6233 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#5789 + # source://idlc//lib/idlc/ast.rb#6224 sig { params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } def type(symtab); end - # source://idlc//lib/idlc/ast.rb#5781 + # source://idlc//lib/idlc/ast.rb#6216 def type_check(symtab); end end -# source://idlc//lib/idlc/ast.rb#5765 +# source://idlc//lib/idlc/ast.rb#6200 class Idl::UserTypeNameSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#5766 + # source://idlc//lib/idlc/ast.rb#6201 def to_ast; end end # source://idlc//lib/idlc/ast.rb#27 Idl::ValueRbType = T.type_alias { T.any(::Integer, ::String, T::Array[::Integer], T::Array[::String], T::Array[T::Boolean], T::Boolean, T::Hash[::String, T.any(::Integer, ::String, T::Array[::Integer], T::Array[::String], T::Array[T::Boolean], T::Boolean)]) } -# source://idlc//lib/idlc/symbol_table.rb#15 +# source://idlc//lib/idlc/symbol_table.rb#16 class Idl::Var - # source://idlc//lib/idlc/symbol_table.rb#20 - def initialize(name, type, value = T.unsafe(nil), decode_var: T.unsafe(nil), template_index: T.unsafe(nil), function_name: T.unsafe(nil), param: T.unsafe(nil)); end + # source://idlc//lib/idlc/symbol_table.rb#21 + def initialize(name, type, value = T.unsafe(nil), decode_var: T.unsafe(nil), template_index: T.unsafe(nil), function_name: T.unsafe(nil), param: T.unsafe(nil), for_loop_iter: T.unsafe(nil)); end - # source://idlc//lib/idlc/symbol_table.rb#60 + # source://idlc//lib/idlc/symbol_table.rb#67 def clone; end - # source://idlc//lib/idlc/symbol_table.rb#72 + # source://idlc//lib/idlc/symbol_table.rb#79 def const?; end - # source://idlc//lib/idlc/symbol_table.rb#44 + # source://idlc//lib/idlc/symbol_table.rb#46 sig { returns(T::Boolean) } def const_eval?; end - # source://idlc//lib/idlc/symbol_table.rb#39 + # source://idlc//lib/idlc/symbol_table.rb#41 sig { void } def const_incompatible!; end - # source://idlc//lib/idlc/symbol_table.rb#76 + # source://idlc//lib/idlc/symbol_table.rb#83 def decode_var?; end - # source://idlc//lib/idlc/symbol_table.rb#52 + # source://idlc//lib/idlc/symbol_table.rb#55 + sig { returns(T::Boolean) } + def for_loop_iter?; end + + # source://idlc//lib/idlc/symbol_table.rb#59 def hash; end - # source://idlc//lib/idlc/symbol_table.rb#18 + # source://idlc//lib/idlc/symbol_table.rb#19 def name; end - # source://idlc//lib/idlc/symbol_table.rb#80 + # source://idlc//lib/idlc/symbol_table.rb#87 def param?; end - # source://idlc//lib/idlc/symbol_table.rb#94 + # source://idlc//lib/idlc/symbol_table.rb#101 def template_index; end - # source://idlc//lib/idlc/symbol_table.rb#100 + # source://idlc//lib/idlc/symbol_table.rb#107 def template_val?; end - # source://idlc//lib/idlc/symbol_table.rb#90 + # source://idlc//lib/idlc/symbol_table.rb#97 def template_value?; end - # source://idlc//lib/idlc/symbol_table.rb#86 + # source://idlc//lib/idlc/symbol_table.rb#93 def template_value_for?(function_name); end - # source://idlc//lib/idlc/symbol_table.rb#104 + # source://idlc//lib/idlc/symbol_table.rb#111 def to_cxx; end - # source://idlc//lib/idlc/symbol_table.rb#56 + # source://idlc//lib/idlc/symbol_table.rb#63 def to_s; end - # source://idlc//lib/idlc/symbol_table.rb#18 + # source://idlc//lib/idlc/symbol_table.rb#19 def type; end - # source://idlc//lib/idlc/symbol_table.rb#18 + # source://idlc//lib/idlc/symbol_table.rb#19 def value; end - # source://idlc//lib/idlc/symbol_table.rb#108 + # source://idlc//lib/idlc/symbol_table.rb#115 def value=(new_value); end end -# source://idlc//lib/idlc/ast.rb#1964 +# source://idlc//lib/idlc/idl_parser.rb#16378 +module Idl::VarWrite0 + # source://idlc//lib/idlc/idl_parser.rb#16379 + def csr_name; end +end + +# source://idlc//lib/idlc/ast.rb#2101 class Idl::VariableAssignmentAst < ::Idl::AstNode include ::Idl::Executable - # source://idlc//lib/idlc/ast.rb#1985 + # source://idlc//lib/idlc/ast.rb#2125 def initialize(input, interval, lhs_ast, rhs_ast); end - # source://idlc//lib/idlc/ast.rb#1968 + # source://idlc//lib/idlc/ast.rb#2105 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#2011 + # source://idlc//lib/idlc/ast.rb#2156 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#2032 + # source://idlc//lib/idlc/ast.rb#2177 def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#230 + # source://idlc//lib/idlc/passes/gen_adoc.rb#241 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#1982 + # source://idlc//lib/idlc/ast.rb#2120 + sig { returns(::Idl::IdAst) } def lhs; end - # source://idlc//lib/idlc/passes/prune.rb#73 + # source://idlc//lib/idlc/passes/prune.rb#74 def nullify_assignments(symtab); end - # source://idlc//lib/idlc/passes/prune.rb#68 + # source://idlc//lib/idlc/passes/prune.rb#69 def prune(symtab); end - # source://idlc//lib/idlc/ast.rb#1983 + # source://idlc//lib/idlc/ast.rb#2123 + sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } def rhs; end - # source://idlc//lib/idlc/ast.rb#2046 + # source://idlc//lib/idlc/ast.rb#2191 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#1991 + # source://idlc//lib/idlc/ast.rb#2131 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#2001 + # source://idlc//lib/idlc/ast.rb#2146 def var(symtab); end end -# source://idlc//lib/idlc/ast.rb#1953 +# source://idlc//lib/idlc/ast.rb#2090 class Idl::VariableAssignmentSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#1954 + # source://idlc//lib/idlc/ast.rb#2091 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#2664 +# source://idlc//lib/idlc/ast.rb#2809 class Idl::VariableDeclarationAst < ::Idl::AstNode include ::Idl::Declaration - # source://idlc//lib/idlc/ast.rb#2694 + # source://idlc//lib/idlc/ast.rb#2839 sig do params( input: ::String, @@ -4160,64 +6274,64 @@ class Idl::VariableDeclarationAst < ::Idl::AstNode end def initialize(input, interval, type_name, id, ary_size); end - # source://idlc//lib/idlc/ast.rb#2764 + # source://idlc//lib/idlc/ast.rb#2909 sig { override.params(symtab: ::Idl::SymbolTable).void } def add_symbol(symtab); end - # source://idlc//lib/idlc/ast.rb#2680 + # source://idlc//lib/idlc/ast.rb#2825 sig { returns(T.nilable(T.all(::Idl::AstNode, ::Idl::Rvalue))) } def ary_size; end - # source://idlc//lib/idlc/ast.rb#2668 + # source://idlc//lib/idlc/ast.rb#2813 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#2710 + # source://idlc//lib/idlc/ast.rb#2855 sig { params(symtab: ::Idl::SymbolTable).returns(T.nilable(::Idl::Type)) } def decl_type(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#163 + # source://idlc//lib/idlc/passes/gen_adoc.rb#174 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#2677 + # source://idlc//lib/idlc/ast.rb#2822 sig { returns(::Idl::IdAst) } def id; end - # source://idlc//lib/idlc/ast.rb#2705 + # source://idlc//lib/idlc/ast.rb#2850 sig { void } def make_global; end - # source://idlc//lib/idlc/ast.rb#2683 + # source://idlc//lib/idlc/ast.rb#2828 sig { returns(::String) } def name; end - # source://idlc//lib/idlc/ast.rb#2776 + # source://idlc//lib/idlc/ast.rb#2921 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#2735 + # source://idlc//lib/idlc/ast.rb#2880 def type(symtab); end - # source://idlc//lib/idlc/ast.rb#2738 + # source://idlc//lib/idlc/ast.rb#2883 def type_check(symtab, add_sym = T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#2674 + # source://idlc//lib/idlc/ast.rb#2819 sig { returns(T.any(::Idl::BuiltinTypeNameAst, ::Idl::UserTypeNameAst)) } def type_name; end end -# source://idlc//lib/idlc/ast.rb#2653 +# source://idlc//lib/idlc/ast.rb#2798 class Idl::VariableDeclarationSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#2654 + # source://idlc//lib/idlc/ast.rb#2799 def to_ast; end end -# source://idlc//lib/idlc/ast.rb#2800 +# source://idlc//lib/idlc/ast.rb#2957 class Idl::VariableDeclarationWithInitializationAst < ::Idl::AstNode include ::Idl::Executable include ::Idl::Declaration - # source://idlc//lib/idlc/ast.rb#2841 + # source://idlc//lib/idlc/ast.rb#2999 sig do params( input: ::String, @@ -4225,125 +6339,129 @@ class Idl::VariableDeclarationWithInitializationAst < ::Idl::AstNode type_name_ast: T.any(::Idl::BuiltinTypeNameAst, ::Idl::UserTypeNameAst), var_write_ast: ::Idl::IdAst, ary_size: T.nilable(T.all(::Idl::AstNode, ::Idl::Rvalue)), - rval_ast: T.all(::Idl::AstNode, ::Idl::Rvalue) + rval_ast: T.all(::Idl::AstNode, ::Idl::Rvalue), + is_for_loop_iteration_var: T::Boolean ).void end - def initialize(input, interval, type_name_ast, var_write_ast, ary_size, rval_ast); end + def initialize(input, interval, type_name_ast, var_write_ast, ary_size, rval_ast, is_for_loop_iteration_var); end - # source://idlc//lib/idlc/ast.rb#2914 + # source://idlc//lib/idlc/ast.rb#3073 def add_symbol(symtab); end - # source://idlc//lib/idlc/ast.rb#2823 + # source://idlc//lib/idlc/ast.rb#2980 sig { returns(T.nilable(T.all(::Idl::AstNode, ::Idl::Rvalue))) } def ary_size; end - # source://idlc//lib/idlc/ast.rb#2805 + # source://idlc//lib/idlc/ast.rb#2962 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#2939 + # source://idlc//lib/idlc/ast.rb#3103 def execute(symtab); end - # source://idlc//lib/idlc/ast.rb#2955 + # source://idlc//lib/idlc/ast.rb#3119 def execute_unknown(symtab); end - # source://idlc//lib/idlc/passes/gen_adoc.rb#208 + # source://idlc//lib/idlc/passes/gen_adoc.rb#219 def gen_adoc(indent = T.unsafe(nil), indent_spaces: T.unsafe(nil)); end - # source://idlc//lib/idlc/ast.rb#2829 + # source://idlc//lib/idlc/ast.rb#2986 sig { returns(::String) } def id; end - # source://idlc//lib/idlc/ast.rb#2820 + # source://idlc//lib/idlc/ast.rb#2977 sig { returns(::Idl::IdAst) } def lhs; end - # source://idlc//lib/idlc/ast.rb#2854 + # source://idlc//lib/idlc/ast.rb#3013 def lhs_type(symtab); end - # source://idlc//lib/idlc/ast.rb#2850 + # source://idlc//lib/idlc/ast.rb#3009 def make_global; end - # source://idlc//lib/idlc/passes/prune.rb#92 + # source://idlc//lib/idlc/passes/prune.rb#93 def prune(symtab); end - # source://idlc//lib/idlc/ast.rb#2826 + # source://idlc//lib/idlc/ast.rb#2983 sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } def rhs; end - # source://idlc//lib/idlc/ast.rb#2961 + # source://idlc//lib/idlc/ast.rb#3125 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#2881 + # source://idlc//lib/idlc/ast.rb#3040 def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#2817 + # source://idlc//lib/idlc/ast.rb#2974 sig { returns(T.any(::Idl::BuiltinTypeNameAst, ::Idl::UserTypeNameAst)) } def type_name; end end -# source://idlc//lib/idlc/ast.rb#2785 +# source://idlc//lib/idlc/ast.rb#2930 class Idl::VariableDeclarationWithInitializationSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#2786 + # source://idlc//lib/idlc/ast.rb#2931 def to_ast; end end -# source://idlc//lib/idlc/type.rb#909 +# source://idlc//lib/idlc/idl_parser.rb#1394 +module Idl::VersionString0; end + +# source://idlc//lib/idlc/type.rb#988 Idl::VoidType = T.let(T.unsafe(nil), Idl::Type) -# source://idlc//lib/idlc/ast.rb#3002 +# source://idlc//lib/idlc/ast.rb#3307 class Idl::WidthRevealAst < ::Idl::AstNode include ::Idl::Rvalue - # source://idlc//lib/idlc/ast.rb#3012 + # source://idlc//lib/idlc/ast.rb#3317 sig { params(input: ::String, interval: T::Range[::Integer], e: ::Idl::AstNode).void } def initialize(input, interval, e); end - # source://idlc//lib/idlc/ast.rb#3006 + # source://idlc//lib/idlc/ast.rb#3311 sig { override.params(symtab: ::Idl::SymbolTable).returns(T::Boolean) } def const_eval?(symtab); end - # source://idlc//lib/idlc/ast.rb#3009 + # source://idlc//lib/idlc/ast.rb#3314 sig { returns(T.all(::Idl::AstNode, ::Idl::Rvalue)) } def expression; end - # source://idlc//lib/idlc/ast.rb#3041 + # source://idlc//lib/idlc/ast.rb#3346 sig { override.returns(::String) } def to_idl; end - # source://idlc//lib/idlc/ast.rb#3025 + # source://idlc//lib/idlc/ast.rb#3330 sig { override.params(symtab: ::Idl::SymbolTable).returns(::Idl::Type) } def type(symtab); end - # source://idlc//lib/idlc/ast.rb#3017 + # source://idlc//lib/idlc/ast.rb#3322 sig { override.params(symtab: ::Idl::SymbolTable).void } def type_check(symtab); end - # source://idlc//lib/idlc/ast.rb#3034 + # source://idlc//lib/idlc/ast.rb#3339 sig { override.params(symtab: ::Idl::SymbolTable).returns(::Integer) } def value(symtab); end end -# source://idlc//lib/idlc/ast.rb#2996 +# source://idlc//lib/idlc/ast.rb#3301 class Idl::WidthRevealSyntaxNode < ::Idl::SyntaxNode - # source://idlc//lib/idlc/ast.rb#2997 + # source://idlc//lib/idlc/ast.rb#3302 def to_ast; end end -# source://idlc//lib/idlc/type.rb#887 +# source://idlc//lib/idlc/type.rb#966 class Idl::XregType < ::Idl::Type - # source://idlc//lib/idlc/type.rb#888 + # source://idlc//lib/idlc/type.rb#967 def initialize(xlen); end - # source://idlc//lib/idlc/type.rb#896 + # source://idlc//lib/idlc/type.rb#975 def to_cxx; end - # source://idlc//lib/idlc/type.rb#892 + # source://idlc//lib/idlc/type.rb#971 def to_s; end end -# source://idlc//lib/idlc.rb#41 +# source://idlc//lib/idlc/idl_parser.rb#16640 class IdlParser < ::Treetop::Runtime::CompiledParser include ::Idl end @@ -4351,16 +6469,17 @@ end class Object < ::BasicObject include ::Kernel include ::PP::ObjectMixin + include ::Udb::Helpers::WavedromUtil private - # source://idlc//lib/idlc/passes/prune.rb#18 + # source://idlc//lib/idlc/passes/prune.rb#19 def create_bool_literal(value); end - # source://idlc//lib/idlc/passes/prune.rb#13 + # source://idlc//lib/idlc/passes/prune.rb#14 def create_int_literal(value); end - # source://idlc//lib/idlc/passes/prune.rb#26 + # source://idlc//lib/idlc/passes/prune.rb#27 def create_literal(symtab, value, type); end end @@ -4378,7 +6497,7 @@ end # source://idlc//lib/idlc/syntax_node.rb#12 module Treetop::Runtime; end -# source://idlc//lib/idlc.rb#16 +# source://idlc//lib/idlc.rb#17 class Treetop::Runtime::CompiledParser # source://treetop/1.6.12/lib/treetop/runtime/compiled_parser.rb#11 def initialize; end @@ -4410,10 +6529,10 @@ class Treetop::Runtime::CompiledParser # source://treetop/1.6.12/lib/treetop/runtime/compiled_parser.rb#6 def input; end - # source://idlc//lib/idlc.rb#17 + # source://idlc//lib/idlc.rb#18 def input_file; end - # source://idlc//lib/idlc.rb#28 + # source://idlc//lib/idlc.rb#29 def instantiate_node(node_type, *args); end # source://treetop/1.6.12/lib/treetop/runtime/compiled_parser.rb#6 @@ -4425,7 +6544,7 @@ class Treetop::Runtime::CompiledParser # source://treetop/1.6.12/lib/treetop/runtime/compiled_parser.rb#7 def root=(_arg0); end - # source://idlc//lib/idlc.rb#19 + # source://idlc//lib/idlc.rb#20 def set_input_file(filename, starting_line = T.unsafe(nil)); end # source://treetop/1.6.12/lib/treetop/runtime/compiled_parser.rb#54 diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/json@2.12.2.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/json@2.15.1.rbi similarity index 64% rename from tools/ruby-gems/udb/sorbet/rbi/gems/json@2.12.2.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/json@2.15.1.rbi index 4c658c660c..011fa5a1d2 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/json@2.12.2.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/json@2.15.1.rbi @@ -31,177 +31,179 @@ end module JSON private - # source://json//lib/json/common.rb#892 + # source://json//lib/json/common.rb#918 def dump(obj, anIO = T.unsafe(nil), limit = T.unsafe(nil), kwargs = T.unsafe(nil)); end - # source://json//lib/json/common.rb#445 + # source://json//lib/json/common.rb#465 def fast_generate(obj, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#937 + # source://json//lib/json/common.rb#963 def fast_unparse(*_arg0, **_arg1, &_arg2); end - # source://json//lib/json/common.rb#424 + # source://json//lib/json/common.rb#444 def generate(obj, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#826 + # source://json//lib/json/common.rb#852 def load(source, proc = T.unsafe(nil), options = T.unsafe(nil)); end - # source://json//lib/json/common.rb#373 + # source://json//lib/json/common.rb#393 def load_file(filespec, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#384 + # source://json//lib/json/common.rb#404 def load_file!(filespec, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#336 + # source://json//lib/json/common.rb#356 def parse(source, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#358 + # source://json//lib/json/common.rb#378 def parse!(source, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#492 + # source://json//lib/json/common.rb#512 def pretty_generate(obj, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#947 + # source://json//lib/json/common.rb#973 def pretty_unparse(*_arg0, **_arg1, &_arg2); end - # source://json//lib/json/common.rb#957 + # source://json//lib/json/common.rb#983 def restore(*_arg0, **_arg1, &_arg2); end - # source://json//lib/json/common.rb#927 + # source://json//lib/json/common.rb#953 def unparse(*_arg0, **_arg1, &_arg2); end - # source://json//lib/json/common.rb#666 + # source://json//lib/json/common.rb#687 def unsafe_load(source, proc = T.unsafe(nil), options = T.unsafe(nil)); end class << self - # source://json//lib/json/common.rb#126 + # source://json//lib/json/common.rb#127 def [](object, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#219 + # source://json//lib/json/common.rb#239 def create_id; end - # source://json//lib/json/common.rb#213 + # source://json//lib/json/common.rb#233 def create_id=(new_value); end - # source://json//lib/json/common.rb#153 + # source://json//lib/json/common.rb#154 def deep_const_get(path); end - # source://json//lib/json/common.rb#892 + # source://json//lib/json/common.rb#99 + def deprecation_warning(message, uplevel = T.unsafe(nil)); end + + # source://json//lib/json/common.rb#918 def dump(obj, anIO = T.unsafe(nil), limit = T.unsafe(nil), kwargs = T.unsafe(nil)); end - # source://json//lib/json/common.rb#445 + # source://json//lib/json/common.rb#465 def fast_generate(obj, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#937 + # source://json//lib/json/common.rb#963 def fast_unparse(*_arg0, **_arg1, &_arg2); end - # source://json//lib/json/common.rb#424 + # source://json//lib/json/common.rb#444 def generate(obj, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#181 + # source://json//lib/json/common.rb#182 def generator; end - # source://json//lib/json/common.rb#160 + # source://json//lib/json/common.rb#161 def generator=(generator); end - # source://json//lib/json/common.rb#826 + # source://json//lib/json/common.rb#852 def load(source, proc = T.unsafe(nil), options = T.unsafe(nil)); end - # source://json//lib/json/common.rb#373 + # source://json//lib/json/common.rb#393 def load_file(filespec, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#384 + # source://json//lib/json/common.rb#404 def load_file!(filespec, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#336 + # source://json//lib/json/common.rb#356 def parse(source, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#358 + # source://json//lib/json/common.rb#378 def parse!(source, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#140 + # source://json//lib/json/common.rb#141 def parser; end - # source://json//lib/json/common.rb#143 + # source://json//lib/json/common.rb#144 def parser=(parser); end - # source://json//lib/json/common.rb#492 + # source://json//lib/json/common.rb#512 def pretty_generate(obj, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#947 + # source://json//lib/json/common.rb#973 def pretty_unparse(*_arg0, **_arg1, &_arg2); end - # source://json//lib/json/common.rb#957 + # source://json//lib/json/common.rb#983 def restore(*_arg0, **_arg1, &_arg2); end - # source://json//lib/json/common.rb#184 + # source://json//lib/json/common.rb#185 def state; end - # source://json//lib/json/common.rb#184 + # source://json//lib/json/common.rb#185 def state=(_arg0); end - # source://json//lib/json/common.rb#927 + # source://json//lib/json/common.rb#953 def unparse(*_arg0, **_arg1, &_arg2); end - # source://json//lib/json/common.rb#666 + # source://json//lib/json/common.rb#687 def unsafe_load(source, proc = T.unsafe(nil), options = T.unsafe(nil)); end private - # source://json//lib/json/common.rb#970 + # source://json//lib/json/common.rb#996 def const_missing(const_name); end - # source://json//lib/json/common.rb#188 + # source://json//lib/json/common.rb#208 def deprecated_singleton_attr_accessor(*attrs); end + + # source://json//lib/json/common.rb#190 + def on_mixed_keys_hash(hash, do_raise); end end end -# source://json//lib/json/common.rb#996 +# source://json//lib/json/common.rb#1022 class JSON::Coder - # source://json//lib/json/common.rb#1020 + # source://json//lib/json/common.rb#1046 def initialize(options = T.unsafe(nil), &as_json); end - # source://json//lib/json/common.rb#1038 + # source://json//lib/json/common.rb#1064 def dump(object, io = T.unsafe(nil)); end - # source://json//lib/json/common.rb#1038 + # source://json//lib/json/common.rb#1064 def generate(object, io = T.unsafe(nil)); end - # source://json//lib/json/common.rb#1047 + # source://json//lib/json/common.rb#1073 def load(source); end - # source://json//lib/json/common.rb#1056 + # source://json//lib/json/common.rb#1082 def load_file(path); end - # source://json//lib/json/common.rb#1047 + # source://json//lib/json/common.rb#1073 def parse(source); end end -module JSON::Ext::Generator::GeneratorMethods::String - mixes_in_class_methods ::JSON::Ext::Generator::GeneratorMethods::String::Extend -end - # source://json//lib/json/ext/generator/state.rb#6 class JSON::Ext::Generator::State - # source://json//lib/json/ext/generator/state.rb#25 + # source://json//lib/json/ext/generator/state.rb#13 def initialize(opts = T.unsafe(nil)); end - # source://json//lib/json/ext/generator/state.rb#84 + # source://json//lib/json/ext/generator/state.rb#77 def [](name); end - # source://json//lib/json/ext/generator/state.rb#96 + # source://json//lib/json/ext/generator/state.rb#89 def []=(name, value); end - # source://json//lib/json/ext/generator/state.rb#35 + # source://json//lib/json/ext/generator/state.rb#23 def configure(opts); end - # source://json//lib/json/ext/generator/state.rb#35 + # source://json//lib/json/ext/generator/state.rb#23 def merge(opts); end - # source://json//lib/json/ext/generator/state.rb#54 + # source://json//lib/json/ext/generator/state.rb#42 def to_h; end - # source://json//lib/json/ext/generator/state.rb#54 + # source://json//lib/json/ext/generator/state.rb#42 def to_hash; end end @@ -220,15 +222,15 @@ end # source://json//lib/json/ext.rb#32 JSON::Ext::Parser::Config = JSON::Ext::ParserConfig -# source://json//lib/json/common.rb#272 +# source://json//lib/json/common.rb#292 class JSON::Fragment < ::Struct - # source://json//lib/json/common.rb#273 + # source://json//lib/json/common.rb#293 def initialize(json); end def json; end def json=(_); end - # source://json//lib/json/common.rb#281 + # source://json//lib/json/common.rb#301 def to_json(state = T.unsafe(nil), *_arg1); end class << self @@ -240,30 +242,30 @@ class JSON::Fragment < ::Struct end end -# source://json//lib/json/common.rb#242 +# source://json//lib/json/common.rb#262 class JSON::GeneratorError < ::JSON::JSONError - # source://json//lib/json/common.rb#245 + # source://json//lib/json/common.rb#265 def initialize(message, invalid_object = T.unsafe(nil)); end - # source://json//lib/json/common.rb#250 + # source://json//lib/json/common.rb#270 def detailed_message(*_arg0, **_arg1, &_arg2); end - # source://json//lib/json/common.rb#243 + # source://json//lib/json/common.rb#263 def invalid_object; end end # source://json//lib/json/generic_object.rb#9 class JSON::GenericObject < ::OpenStruct - # source://json//lib/json/generic_object.rb#67 + # source://json//lib/json/generic_object.rb#59 def as_json(*_arg0); end # source://json//lib/json/generic_object.rb#51 def to_hash; end - # source://json//lib/json/generic_object.rb#71 + # source://json//lib/json/generic_object.rb#63 def to_json(*a); end - # source://json//lib/json/generic_object.rb#63 + # source://json//lib/json/generic_object.rb#55 def |(other); end class << self @@ -287,21 +289,21 @@ class JSON::GenericObject < ::OpenStruct end end -# source://json//lib/json/common.rb#341 +# source://json//lib/json/common.rb#361 JSON::PARSE_L_OPTIONS = T.let(T.unsafe(nil), Hash) -# source://json//lib/json/common.rb#454 +# source://json//lib/json/common.rb#474 JSON::PRETTY_GENERATE_OPTIONS = T.let(T.unsafe(nil), Hash) -# source://json//lib/json/common.rb#146 +# source://json//lib/json/common.rb#147 JSON::Parser = JSON::Ext::Parser -# source://json//lib/json/common.rb#233 +# source://json//lib/json/common.rb#253 class JSON::ParserError < ::JSON::JSONError - # source://json//lib/json/common.rb#234 + # source://json//lib/json/common.rb#254 def column; end - # source://json//lib/json/common.rb#234 + # source://json//lib/json/common.rb#254 def line; end end @@ -319,7 +321,7 @@ module JSON::ParserOptions # source://json//lib/json/common.rb#52 def create_additions_proc(opts); end - # source://json//lib/json/common.rb#91 + # source://json//lib/json/common.rb#90 def create_additions_warning; end # source://json//lib/json/common.rb#29 @@ -327,20 +329,20 @@ module JSON::ParserOptions end end -# source://json//lib/json/common.rb#175 +# source://json//lib/json/common.rb#176 JSON::State = JSON::Ext::Generator::State -# source://json//lib/json/common.rb#1062 +# source://json//lib/json/common.rb#1088 module Kernel private - # source://json//lib/json/common.rb#1101 + # source://json//lib/json/common.rb#1127 def JSON(object, opts = T.unsafe(nil)); end - # source://json//lib/json/common.rb#1067 + # source://json//lib/json/common.rb#1093 def j(*objs); end - # source://json//lib/json/common.rb#1082 + # source://json//lib/json/common.rb#1108 def jj(*objs); end end @@ -353,12 +355,12 @@ class Object < ::BasicObject include ::Kernel include ::PP::ObjectMixin include ::JSON::Ext::Generator::GeneratorMethods::Object + include ::Udb::Helpers::WavedromUtil end class String include ::Comparable include ::JSON::Ext::Generator::GeneratorMethods::String - extend ::JSON::Ext::Generator::GeneratorMethods::String::Extend end class TrueClass diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/minitest@5.25.5.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/minitest@5.26.0.rbi similarity index 64% rename from tools/ruby-gems/udb/sorbet/rbi/gems/minitest@5.25.5.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/minitest@5.26.0.rbi index b95b35ca8f..bd7ba635b0 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/minitest@5.25.5.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/minitest@5.26.0.rbi @@ -8,7 +8,7 @@ # source://minitest//lib/minitest/parallel.rb#1 module Minitest class << self - # source://minitest//lib/minitest.rb#323 + # source://minitest//lib/minitest.rb#325 def __run(reporter, options); end # source://minitest//lib/minitest.rb#97 @@ -32,10 +32,10 @@ module Minitest # source://minitest//lib/minitest.rb#19 def cattr_accessor(name); end - # source://minitest//lib/minitest.rb#1216 + # source://minitest//lib/minitest.rb#1218 def clock_time; end - # source://minitest//lib/minitest.rb#303 + # source://minitest//lib/minitest.rb#305 def empty_run!(options); end # source://minitest//lib/minitest.rb#20 @@ -44,7 +44,7 @@ module Minitest # source://minitest//lib/minitest.rb#20 def extensions=(_arg0); end - # source://minitest//lib/minitest.rb#336 + # source://minitest//lib/minitest.rb#338 def filter_backtrace(bt); end # source://minitest//lib/minitest.rb#20 @@ -77,10 +77,10 @@ module Minitest # source://minitest//lib/minitest.rb#20 def reporter=(_arg0); end - # source://minitest//lib/minitest.rb#269 + # source://minitest//lib/minitest.rb#270 def run(args = T.unsafe(nil)); end - # source://minitest//lib/minitest.rb#1207 + # source://minitest//lib/minitest.rb#1209 def run_one_method(klass, method_name); end # source://minitest//lib/minitest.rb#20 @@ -91,46 +91,46 @@ module Minitest end end -# source://minitest//lib/minitest.rb#687 +# source://minitest//lib/minitest.rb#689 class Minitest::AbstractReporter - # source://minitest//lib/minitest.rb#689 + # source://minitest//lib/minitest.rb#691 def initialize; end - # source://minitest//lib/minitest.rb#724 + # source://minitest//lib/minitest.rb#726 def passed?; end - # source://minitest//lib/minitest.rb#703 + # source://minitest//lib/minitest.rb#705 def prerecord(klass, name); end - # source://minitest//lib/minitest.rb#712 + # source://minitest//lib/minitest.rb#714 def record(result); end - # source://minitest//lib/minitest.rb#718 + # source://minitest//lib/minitest.rb#720 def report; end - # source://minitest//lib/minitest.rb#696 + # source://minitest//lib/minitest.rb#698 def start; end - # source://minitest//lib/minitest.rb#728 + # source://minitest//lib/minitest.rb#730 def synchronize(&block); end end -# source://minitest//lib/minitest.rb#1020 +# source://minitest//lib/minitest.rb#1022 class Minitest::Assertion < ::Exception - # source://minitest//lib/minitest.rb#1023 + # source://minitest//lib/minitest.rb#1025 def error; end - # source://minitest//lib/minitest.rb#1030 + # source://minitest//lib/minitest.rb#1032 def location; end - # source://minitest//lib/minitest.rb#1038 + # source://minitest//lib/minitest.rb#1040 def result_code; end - # source://minitest//lib/minitest.rb#1042 + # source://minitest//lib/minitest.rb#1044 def result_label; end end -# source://minitest//lib/minitest.rb#1021 +# source://minitest//lib/minitest.rb#1023 Minitest::Assertion::RE = T.let(T.unsafe(nil), Regexp) # source://minitest//lib/minitest/assertions.rb#16 @@ -204,25 +204,25 @@ module Minitest::Assertions # source://minitest//lib/minitest/assertions.rb#497 def assert_throws(sym, msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#538 + # source://minitest//lib/minitest/assertions.rb#533 def capture_io; end - # source://minitest//lib/minitest/assertions.rb#571 + # source://minitest//lib/minitest/assertions.rb#566 def capture_subprocess_io; end # source://minitest//lib/minitest/assertions.rb#57 def diff(exp, act); end - # source://minitest//lib/minitest/assertions.rb#603 + # source://minitest//lib/minitest/assertions.rb#598 def exception_details(e, msg); end - # source://minitest//lib/minitest/assertions.rb#619 + # source://minitest//lib/minitest/assertions.rb#614 def fail_after(y, m, d, msg); end - # source://minitest//lib/minitest/assertions.rb#626 + # source://minitest//lib/minitest/assertions.rb#621 def flunk(msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#634 + # source://minitest//lib/minitest/assertions.rb#629 def message(msg = T.unsafe(nil), ending = T.unsafe(nil), &default); end # source://minitest//lib/minitest/assertions.rb#127 @@ -231,64 +231,64 @@ module Minitest::Assertions # source://minitest//lib/minitest/assertions.rb#145 def mu_pp_for_diff(obj); end - # source://minitest//lib/minitest/assertions.rb#645 + # source://minitest//lib/minitest/assertions.rb#640 def pass(_msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#652 + # source://minitest//lib/minitest/assertions.rb#647 def refute(test, msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#660 + # source://minitest//lib/minitest/assertions.rb#655 def refute_empty(obj, msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#671 + # source://minitest//lib/minitest/assertions.rb#666 def refute_equal(exp, act, msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#683 + # source://minitest//lib/minitest/assertions.rb#678 def refute_in_delta(exp, act, delta = T.unsafe(nil), msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#695 + # source://minitest//lib/minitest/assertions.rb#690 def refute_in_epsilon(a, b, epsilon = T.unsafe(nil), msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#702 + # source://minitest//lib/minitest/assertions.rb#697 def refute_includes(collection, obj, msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#713 + # source://minitest//lib/minitest/assertions.rb#708 def refute_instance_of(cls, obj, msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#723 + # source://minitest//lib/minitest/assertions.rb#718 def refute_kind_of(cls, obj, msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#731 + # source://minitest//lib/minitest/assertions.rb#726 def refute_match(matcher, obj, msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#741 + # source://minitest//lib/minitest/assertions.rb#736 def refute_nil(obj, msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#776 + # source://minitest//lib/minitest/assertions.rb#771 def refute_operator(o1, op, o2 = T.unsafe(nil), msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#785 + # source://minitest//lib/minitest/assertions.rb#780 def refute_path_exists(path, msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#758 + # source://minitest//lib/minitest/assertions.rb#753 def refute_pattern; end - # source://minitest//lib/minitest/assertions.rb#799 + # source://minitest//lib/minitest/assertions.rb#794 def refute_predicate(o1, op, msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#808 + # source://minitest//lib/minitest/assertions.rb#803 def refute_respond_to(obj, meth, msg = T.unsafe(nil), include_all: T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#817 + # source://minitest//lib/minitest/assertions.rb#812 def refute_same(exp, act, msg = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#830 + # source://minitest//lib/minitest/assertions.rb#825 def skip(msg = T.unsafe(nil), _ignored = T.unsafe(nil)); end - # source://minitest//lib/minitest/assertions.rb#842 + # source://minitest//lib/minitest/assertions.rb#837 def skip_until(y, m, d, msg); end - # source://minitest//lib/minitest/assertions.rb#851 + # source://minitest//lib/minitest/assertions.rb#846 def skipped?; end # source://minitest//lib/minitest/assertions.rb#102 @@ -309,54 +309,54 @@ Minitest::Assertions::E = T.let(T.unsafe(nil), String) # source://minitest//lib/minitest/assertions.rb#17 Minitest::Assertions::UNDEFINED = T.let(T.unsafe(nil), Object) -# source://minitest//lib/minitest.rb#1175 +# source://minitest//lib/minitest.rb#1177 class Minitest::BacktraceFilter - # source://minitest//lib/minitest.rb#1184 + # source://minitest//lib/minitest.rb#1186 def initialize(regexp = T.unsafe(nil)); end - # source://minitest//lib/minitest.rb#1192 + # source://minitest//lib/minitest.rb#1194 def filter(bt); end - # source://minitest//lib/minitest.rb#1182 + # source://minitest//lib/minitest.rb#1184 def regexp; end - # source://minitest//lib/minitest.rb#1182 + # source://minitest//lib/minitest.rb#1184 def regexp=(_arg0); end end -# source://minitest//lib/minitest.rb#1177 +# source://minitest//lib/minitest.rb#1179 Minitest::BacktraceFilter::MT_RE = T.let(T.unsafe(nil), Regexp) -# source://minitest//lib/minitest.rb#969 +# source://minitest//lib/minitest.rb#971 class Minitest::CompositeReporter < ::Minitest::AbstractReporter - # source://minitest//lib/minitest.rb#975 + # source://minitest//lib/minitest.rb#977 def initialize(*reporters); end - # source://minitest//lib/minitest.rb#987 + # source://minitest//lib/minitest.rb#989 def <<(reporter); end - # source://minitest//lib/minitest.rb#980 + # source://minitest//lib/minitest.rb#982 def io; end - # source://minitest//lib/minitest.rb#991 + # source://minitest//lib/minitest.rb#993 def passed?; end - # source://minitest//lib/minitest.rb#999 + # source://minitest//lib/minitest.rb#1001 def prerecord(klass, name); end - # source://minitest//lib/minitest.rb#1006 + # source://minitest//lib/minitest.rb#1008 def record(result); end - # source://minitest//lib/minitest.rb#1012 + # source://minitest//lib/minitest.rb#1014 def report; end - # source://minitest//lib/minitest.rb#973 + # source://minitest//lib/minitest.rb#975 def reporters; end - # source://minitest//lib/minitest.rb#973 + # source://minitest//lib/minitest.rb#975 def reporters=(_arg0); end - # source://minitest//lib/minitest.rb#995 + # source://minitest//lib/minitest.rb#997 def start; end end @@ -366,24 +366,24 @@ module Minitest::Compress def compress(orig); end end -# source://minitest//lib/minitest.rb#1119 +# source://minitest//lib/minitest.rb#1121 module Minitest::Guard - # source://minitest//lib/minitest.rb#1124 + # source://minitest//lib/minitest.rb#1126 def jruby?(platform = T.unsafe(nil)); end - # source://minitest//lib/minitest.rb#1131 + # source://minitest//lib/minitest.rb#1133 def maglev?(platform = T.unsafe(nil)); end - # source://minitest//lib/minitest.rb#1141 + # source://minitest//lib/minitest.rb#1143 def mri?(platform = T.unsafe(nil)); end - # source://minitest//lib/minitest.rb#1148 + # source://minitest//lib/minitest.rb#1150 def osx?(platform = T.unsafe(nil)); end - # source://minitest//lib/minitest.rb#1155 + # source://minitest//lib/minitest.rb#1157 def rubinius?(platform = T.unsafe(nil)); end - # source://minitest//lib/minitest.rb#1165 + # source://minitest//lib/minitest.rb#1167 def windows?(platform = T.unsafe(nil)); end end @@ -423,291 +423,291 @@ module Minitest::Parallel::Test::ClassMethods def test_order; end end -# source://minitest//lib/minitest.rb#759 +# source://minitest//lib/minitest.rb#761 class Minitest::ProgressReporter < ::Minitest::Reporter - # source://minitest//lib/minitest.rb#760 + # source://minitest//lib/minitest.rb#762 def prerecord(klass, name); end - # source://minitest//lib/minitest.rb#767 + # source://minitest//lib/minitest.rb#769 def record(result); end end -# source://minitest//lib/minitest.rb#581 +# source://minitest//lib/minitest.rb#583 module Minitest::Reportable - # source://minitest//lib/minitest.rb#603 + # source://minitest//lib/minitest.rb#605 def class_name; end - # source://minitest//lib/minitest.rb#624 + # source://minitest//lib/minitest.rb#626 def error?; end - # source://minitest//lib/minitest.rb#598 + # source://minitest//lib/minitest.rb#600 def location; end - # source://minitest//lib/minitest.rb#588 + # source://minitest//lib/minitest.rb#590 def passed?; end - # source://minitest//lib/minitest.rb#610 + # source://minitest//lib/minitest.rb#612 def result_code; end - # source://minitest//lib/minitest.rb#617 + # source://minitest//lib/minitest.rb#619 def skipped?; end end -# source://minitest//lib/minitest.rb#592 +# source://minitest//lib/minitest.rb#594 Minitest::Reportable::BASE_DIR = T.let(T.unsafe(nil), String) -# source://minitest//lib/minitest.rb#735 +# source://minitest//lib/minitest.rb#737 class Minitest::Reporter < ::Minitest::AbstractReporter - # source://minitest//lib/minitest.rb#744 + # source://minitest//lib/minitest.rb#746 def initialize(io = T.unsafe(nil), options = T.unsafe(nil)); end - # source://minitest//lib/minitest.rb#737 + # source://minitest//lib/minitest.rb#739 def io; end - # source://minitest//lib/minitest.rb#737 + # source://minitest//lib/minitest.rb#739 def io=(_arg0); end - # source://minitest//lib/minitest.rb#742 + # source://minitest//lib/minitest.rb#744 def options; end - # source://minitest//lib/minitest.rb#742 + # source://minitest//lib/minitest.rb#744 def options=(_arg0); end end -# source://minitest//lib/minitest.rb#636 +# source://minitest//lib/minitest.rb#638 class Minitest::Result < ::Minitest::Runnable include ::Minitest::Reportable - # source://minitest//lib/minitest.rb#670 + # source://minitest//lib/minitest.rb#672 def class_name; end - # source://minitest//lib/minitest.rb#645 + # source://minitest//lib/minitest.rb#647 def klass; end - # source://minitest//lib/minitest.rb#645 + # source://minitest//lib/minitest.rb#647 def klass=(_arg0); end - # source://minitest//lib/minitest.rb#650 + # source://minitest//lib/minitest.rb#652 def source_location; end - # source://minitest//lib/minitest.rb#650 + # source://minitest//lib/minitest.rb#652 def source_location=(_arg0); end - # source://minitest//lib/minitest.rb#674 + # source://minitest//lib/minitest.rb#676 def to_s; end class << self - # source://minitest//lib/minitest.rb#655 + # source://minitest//lib/minitest.rb#657 def from(runnable); end end end -# source://minitest//lib/minitest.rb#349 +# source://minitest//lib/minitest.rb#351 class Minitest::Runnable - # source://minitest//lib/minitest.rb#512 + # source://minitest//lib/minitest.rb#514 def initialize(name); end - # source://minitest//lib/minitest.rb#353 + # source://minitest//lib/minitest.rb#355 def assertions; end - # source://minitest//lib/minitest.rb#353 + # source://minitest//lib/minitest.rb#355 def assertions=(_arg0); end - # source://minitest//lib/minitest.rb#508 + # source://minitest//lib/minitest.rb#510 def failure; end - # source://minitest//lib/minitest.rb#358 + # source://minitest//lib/minitest.rb#360 def failures; end - # source://minitest//lib/minitest.rb#358 + # source://minitest//lib/minitest.rb#360 def failures=(_arg0); end - # source://minitest//lib/minitest.rb#494 + # source://minitest//lib/minitest.rb#496 def marshal_dump; end - # source://minitest//lib/minitest.rb#504 + # source://minitest//lib/minitest.rb#506 def marshal_load(ary); end - # source://minitest//lib/minitest.rb#527 + # source://minitest//lib/minitest.rb#529 def metadata; end - # source://minitest//lib/minitest.rb#534 + # source://minitest//lib/minitest.rb#536 def metadata=(_arg0); end - # source://minitest//lib/minitest.rb#539 + # source://minitest//lib/minitest.rb#541 def metadata?; end - # source://minitest//lib/minitest.rb#376 + # source://minitest//lib/minitest.rb#378 def name; end - # source://minitest//lib/minitest.rb#383 + # source://minitest//lib/minitest.rb#385 def name=(o); end - # source://minitest//lib/minitest.rb#556 + # source://minitest//lib/minitest.rb#558 def passed?; end - # source://minitest//lib/minitest.rb#565 + # source://minitest//lib/minitest.rb#567 def result_code; end - # source://minitest//lib/minitest.rb#546 + # source://minitest//lib/minitest.rb#548 def run; end - # source://minitest//lib/minitest.rb#572 + # source://minitest//lib/minitest.rb#574 def skipped?; end - # source://minitest//lib/minitest.rb#363 + # source://minitest//lib/minitest.rb#365 def time; end - # source://minitest//lib/minitest.rb#363 + # source://minitest//lib/minitest.rb#365 def time=(_arg0); end - # source://minitest//lib/minitest.rb#365 + # source://minitest//lib/minitest.rb#367 def time_it; end class << self - # source://minitest//lib/minitest.rb#1226 + # source://minitest//lib/minitest.rb#1228 def inherited(klass); end - # source://minitest//lib/minitest.rb#390 + # source://minitest//lib/minitest.rb#392 def methods_matching(re); end - # source://minitest//lib/minitest.rb#464 + # source://minitest//lib/minitest.rb#466 def on_signal(name, action); end - # source://minitest//lib/minitest.rb#394 + # source://minitest//lib/minitest.rb#396 def reset; end - # source://minitest//lib/minitest.rb#405 + # source://minitest//lib/minitest.rb#407 def run(reporter, options = T.unsafe(nil)); end - # source://minitest//lib/minitest.rb#445 + # source://minitest//lib/minitest.rb#447 def run_one_method(klass, method_name, reporter); end - # source://minitest//lib/minitest.rb#481 + # source://minitest//lib/minitest.rb#483 def runnable_methods; end - # source://minitest//lib/minitest.rb#488 + # source://minitest//lib/minitest.rb#490 def runnables; end - # source://minitest//lib/minitest.rb#454 + # source://minitest//lib/minitest.rb#456 def test_order; end - # source://minitest//lib/minitest.rb#458 + # source://minitest//lib/minitest.rb#460 def with_info_handler(reporter, &block); end end end -# source://minitest//lib/minitest.rb#462 +# source://minitest//lib/minitest.rb#464 Minitest::Runnable::SIGNALS = T.let(T.unsafe(nil), Hash) -# source://minitest//lib/minitest.rb#1050 +# source://minitest//lib/minitest.rb#1052 class Minitest::Skip < ::Minitest::Assertion - # source://minitest//lib/minitest.rb#1051 + # source://minitest//lib/minitest.rb#1053 def result_label; end end -# source://minitest//lib/minitest.rb#795 +# source://minitest//lib/minitest.rb#797 class Minitest::StatisticsReporter < ::Minitest::Reporter - # source://minitest//lib/minitest.rb#844 + # source://minitest//lib/minitest.rb#846 def initialize(io = T.unsafe(nil), options = T.unsafe(nil)); end - # source://minitest//lib/minitest.rb#799 + # source://minitest//lib/minitest.rb#801 def assertions; end - # source://minitest//lib/minitest.rb#799 + # source://minitest//lib/minitest.rb#801 def assertions=(_arg0); end - # source://minitest//lib/minitest.rb#804 + # source://minitest//lib/minitest.rb#806 def count; end - # source://minitest//lib/minitest.rb#804 + # source://minitest//lib/minitest.rb#806 def count=(_arg0); end - # source://minitest//lib/minitest.rb#832 + # source://minitest//lib/minitest.rb#834 def errors; end - # source://minitest//lib/minitest.rb#832 + # source://minitest//lib/minitest.rb#834 def errors=(_arg0); end - # source://minitest//lib/minitest.rb#827 + # source://minitest//lib/minitest.rb#829 def failures; end - # source://minitest//lib/minitest.rb#827 + # source://minitest//lib/minitest.rb#829 def failures=(_arg0); end - # source://minitest//lib/minitest.rb#858 + # source://minitest//lib/minitest.rb#860 def passed?; end - # source://minitest//lib/minitest.rb#866 + # source://minitest//lib/minitest.rb#868 def record(result); end - # source://minitest//lib/minitest.rb#876 + # source://minitest//lib/minitest.rb#878 def report; end - # source://minitest//lib/minitest.rb#809 + # source://minitest//lib/minitest.rb#811 def results; end - # source://minitest//lib/minitest.rb#809 + # source://minitest//lib/minitest.rb#811 def results=(_arg0); end - # source://minitest//lib/minitest.rb#842 + # source://minitest//lib/minitest.rb#844 def skips; end - # source://minitest//lib/minitest.rb#842 + # source://minitest//lib/minitest.rb#844 def skips=(_arg0); end - # source://minitest//lib/minitest.rb#862 + # source://minitest//lib/minitest.rb#864 def start; end - # source://minitest//lib/minitest.rb#816 + # source://minitest//lib/minitest.rb#818 def start_time; end - # source://minitest//lib/minitest.rb#816 + # source://minitest//lib/minitest.rb#818 def start_time=(_arg0); end - # source://minitest//lib/minitest.rb#822 + # source://minitest//lib/minitest.rb#824 def total_time; end - # source://minitest//lib/minitest.rb#822 + # source://minitest//lib/minitest.rb#824 def total_time=(_arg0); end - # source://minitest//lib/minitest.rb#837 + # source://minitest//lib/minitest.rb#839 def warnings; end - # source://minitest//lib/minitest.rb#837 + # source://minitest//lib/minitest.rb#839 def warnings=(_arg0); end end -# source://minitest//lib/minitest.rb#897 +# source://minitest//lib/minitest.rb#899 class Minitest::SummaryReporter < ::Minitest::StatisticsReporter - # source://minitest//lib/minitest.rb#930 + # source://minitest//lib/minitest.rb#932 def aggregated_results(io); end - # source://minitest//lib/minitest.rb#899 + # source://minitest//lib/minitest.rb#901 def old_sync; end - # source://minitest//lib/minitest.rb#899 + # source://minitest//lib/minitest.rb#901 def old_sync=(_arg0); end - # source://minitest//lib/minitest.rb#913 + # source://minitest//lib/minitest.rb#915 def report; end - # source://minitest//lib/minitest.rb#901 + # source://minitest//lib/minitest.rb#903 def start; end - # source://minitest//lib/minitest.rb#925 + # source://minitest//lib/minitest.rb#927 def statistics; end - # source://minitest//lib/minitest.rb#950 + # source://minitest//lib/minitest.rb#952 def summary; end - # source://minitest//lib/minitest.rb#898 + # source://minitest//lib/minitest.rb#900 def sync; end - # source://minitest//lib/minitest.rb#898 + # source://minitest//lib/minitest.rb#900 def sync=(_arg0); end - # source://minitest//lib/minitest.rb#946 + # source://minitest//lib/minitest.rb#948 def to_s; end end @@ -719,22 +719,22 @@ class Minitest::Test < ::Minitest::Runnable include ::Minitest::Guard extend ::Minitest::Guard - # source://minitest//lib/minitest/test.rb#189 + # source://minitest//lib/minitest/test.rb#190 def capture_exceptions; end # source://minitest//lib/minitest/test.rb#15 def class_name; end - # source://minitest//lib/minitest/test.rb#206 + # source://minitest//lib/minitest/test.rb#207 def neuter_exception(e); end - # source://minitest//lib/minitest/test.rb#217 + # source://minitest//lib/minitest/test.rb#218 def new_exception(klass, msg, bt, kill = T.unsafe(nil)); end - # source://minitest//lib/minitest/test.rb#87 + # source://minitest//lib/minitest/test.rb#88 def run; end - # source://minitest//lib/minitest/test.rb#199 + # source://minitest//lib/minitest/test.rb#200 def sanitize_exception(e); end class << self @@ -753,29 +753,29 @@ class Minitest::Test < ::Minitest::Runnable # source://minitest//lib/minitest/test.rb#60 def parallelize_me!; end - # source://minitest//lib/minitest/test.rb#70 + # source://minitest//lib/minitest/test.rb#71 def runnable_methods; end end end -# source://minitest//lib/minitest/test.rb#112 +# source://minitest//lib/minitest/test.rb#113 module Minitest::Test::LifecycleHooks - # source://minitest//lib/minitest/test.rb#162 + # source://minitest//lib/minitest/test.rb#163 def after_setup; end - # source://minitest//lib/minitest/test.rb#186 + # source://minitest//lib/minitest/test.rb#187 def after_teardown; end - # source://minitest//lib/minitest/test.rb#147 + # source://minitest//lib/minitest/test.rb#148 def before_setup; end - # source://minitest//lib/minitest/test.rb#171 + # source://minitest//lib/minitest/test.rb#172 def before_teardown; end - # source://minitest//lib/minitest/test.rb#153 + # source://minitest//lib/minitest/test.rb#154 def setup; end - # source://minitest//lib/minitest/test.rb#177 + # source://minitest//lib/minitest/test.rb#178 def teardown; end end @@ -788,35 +788,35 @@ Minitest::Test::SETUP_METHODS = T.let(T.unsafe(nil), Array) # source://minitest//lib/minitest/test.rb#23 Minitest::Test::TEARDOWN_METHODS = T.let(T.unsafe(nil), Array) -# source://minitest//lib/minitest.rb#1059 +# source://minitest//lib/minitest.rb#1061 class Minitest::UnexpectedError < ::Minitest::Assertion include ::Minitest::Compress - # source://minitest//lib/minitest.rb#1065 + # source://minitest//lib/minitest.rb#1067 def initialize(error); end - # source://minitest//lib/minitest.rb#1078 + # source://minitest//lib/minitest.rb#1080 def backtrace; end - # source://minitest//lib/minitest.rb#1063 + # source://minitest//lib/minitest.rb#1065 def error; end - # source://minitest//lib/minitest.rb#1063 + # source://minitest//lib/minitest.rb#1065 def error=(_arg0); end - # source://minitest//lib/minitest.rb#1084 + # source://minitest//lib/minitest.rb#1086 def message; end - # source://minitest//lib/minitest.rb#1090 + # source://minitest//lib/minitest.rb#1092 def result_label; end end -# source://minitest//lib/minitest.rb#1082 +# source://minitest//lib/minitest.rb#1084 Minitest::UnexpectedError::BASE_RE = T.let(T.unsafe(nil), Regexp) -# source://minitest//lib/minitest.rb#1098 +# source://minitest//lib/minitest.rb#1100 class Minitest::UnexpectedWarning < ::Minitest::Assertion - # source://minitest//lib/minitest.rb#1099 + # source://minitest//lib/minitest.rb#1101 def result_label; end end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/numbers_and_words@1.0.2.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/numbers_and_words@1.0.2.rbi new file mode 100644 index 0000000000..f096773661 --- /dev/null +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/numbers_and_words@1.0.2.rbi @@ -0,0 +1,2463 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `numbers_and_words` gem. +# Please instead update this file by running `bin/tapioca gem numbers_and_words`. + + +# source://numbers_and_words//lib/numbers_and_words/core_ext/array.rb#3 +class Array + include ::Enumerable + + # source://numbers_and_words//lib/numbers_and_words/core_ext/array.rb#8 + def to_figures; end + + # source://numbers_and_words//lib/numbers_and_words/core_ext/array.rb#4 + def to_words(options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/core_ext/float.rb#3 +class Float < ::Numeric + # source://numbers_and_words//lib/numbers_and_words/core_ext/float.rb#4 + def to_words(options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/core_ext/integer.rb#3 +class Integer < ::Numeric + # source://numbers_and_words//lib/numbers_and_words/core_ext/integer.rb#4 + def to_words(options = T.unsafe(nil)); end +end + +Integer::GMP_VERSION = T.let(T.unsafe(nil), String) + +# source://numbers_and_words//lib/numbers_and_words/translations/base.rb#3 +module NumbersAndWords; end + +# source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#4 +module NumbersAndWords::ArrayExtensions; end + +# source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#5 +module NumbersAndWords::ArrayExtensions::Helpers + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#15 + def capacity_count; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#11 + def capacity_length; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#20 + def figures_array_in_capacity(capacity); end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#37 + def figures_array_under_capacity(capacity); end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#73 + def fraction_capacity; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#77 + def fraction_capacity_count; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#81 + def fraction_sub_capacity; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#61 + def hundreds; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#24 + def number_in_capacity(capacity); end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#28 + def number_under_capacity(capacity); end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#41 + def ones; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#45 + def only_ones; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#32 + def opaque?(capacity); end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#89 + def ordinal_capacity; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#85 + def ordinal_index; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#65 + def round_hundred?; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#69 + def sub_capacity; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#49 + def teens; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#53 + def tens; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#57 + def tens_with_ones; end +end + +# source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#7 +NumbersAndWords::ArrayExtensions::Helpers::FIGURES_IN_CAPACITY = T.let(T.unsafe(nil), Integer) + +# source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#6 +NumbersAndWords::ArrayExtensions::Helpers::MICRO_CAPACITY_SHIFT = T.let(T.unsafe(nil), Integer) + +# source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#9 +NumbersAndWords::ArrayExtensions::Helpers::ONES_SHIFT = T.let(T.unsafe(nil), Integer) + +# source://numbers_and_words//lib/numbers_and_words/helper_classes/array_extensions/helpers.rb#8 +NumbersAndWords::ArrayExtensions::Helpers::THOUSAND_CAPACITY = T.let(T.unsafe(nil), Integer) + +# source://numbers_and_words//lib/numbers_and_words/helper_classes/figures_array.rb#6 +class NumbersAndWords::FiguresArray < ::Array + include ::NumbersAndWords::ArrayExtensions::Helpers + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/figures_array.rb#17 + def figures_array_in_capacity(capacity); end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/figures_array.rb#21 + def local_language(&_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/figures_array.rb#13 + def reverse; end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/figures_array.rb#9 + def to_words(options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/i18n/plurals/cs.rb#4 +module NumbersAndWords::I18n + private + + # source://numbers_and_words//lib/numbers_and_words/i18n.rb#31 + def files(directory, ext); end + + # source://numbers_and_words//lib/numbers_and_words/i18n.rb#23 + def language_class_name; end + + # source://numbers_and_words//lib/numbers_and_words/i18n.rb#10 + def languages; end + + # source://numbers_and_words//lib/numbers_and_words/i18n.rb#14 + def local_language(locale = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/i18n.rb#27 + def locale_files; end + + class << self + # source://numbers_and_words//lib/numbers_and_words/i18n.rb#31 + def files(directory, ext); end + + # source://numbers_and_words//lib/numbers_and_words/i18n.rb#23 + def language_class_name; end + + # source://numbers_and_words//lib/numbers_and_words/i18n.rb#10 + def languages; end + + # source://numbers_and_words//lib/numbers_and_words/i18n.rb#14 + def local_language(locale = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/i18n.rb#27 + def locale_files; end + end +end + +# source://numbers_and_words//lib/numbers_and_words/i18n/initialization.rb#5 +module NumbersAndWords::I18n::Initialization + private + + # source://numbers_and_words//lib/numbers_and_words/i18n/initialization.rb#8 + def init; end + + class << self + # source://numbers_and_words//lib/numbers_and_words/i18n/initialization.rb#8 + def init; end + end +end + +# source://numbers_and_words//lib/numbers_and_words/i18n/pluralization.rb#11 +module NumbersAndWords::I18n::Pluralization + private + + # source://numbers_and_words//lib/numbers_and_words/i18n/pluralization.rb#23 + def config_file; end + + # source://numbers_and_words//lib/numbers_and_words/i18n/pluralization.rb#19 + def files; end + + # source://numbers_and_words//lib/numbers_and_words/i18n/pluralization.rb#14 + def init; end + + # source://numbers_and_words//lib/numbers_and_words/i18n/pluralization.rb#31 + def languages; end + + # source://numbers_and_words//lib/numbers_and_words/i18n/pluralization.rb#27 + def plurals_files; end + + class << self + # source://numbers_and_words//lib/numbers_and_words/i18n/pluralization.rb#23 + def config_file; end + + # source://numbers_and_words//lib/numbers_and_words/i18n/pluralization.rb#19 + def files; end + + # source://numbers_and_words//lib/numbers_and_words/i18n/pluralization.rb#14 + def init; end + + # source://numbers_and_words//lib/numbers_and_words/i18n/pluralization.rb#31 + def languages; end + + # source://numbers_and_words//lib/numbers_and_words/i18n/pluralization.rb#27 + def plurals_files; end + end +end + +# source://numbers_and_words//lib/numbers_and_words/i18n/plurals/cs.rb#5 +module NumbersAndWords::I18n::Plurals; end + +# source://numbers_and_words//lib/numbers_and_words/i18n/plurals/cs.rb#6 +module NumbersAndWords::I18n::Plurals::Cs + private + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/cs.rb#25 + def few_conditions(number); end + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/cs.rb#30 + def many_conditions(number); end + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/cs.rb#21 + def one_conditions(number); end + + class << self + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/cs.rb#25 + def few_conditions(number); end + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/cs.rb#30 + def many_conditions(number); end + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/cs.rb#21 + def one_conditions(number); end + end +end + +# source://numbers_and_words//lib/numbers_and_words/i18n/plurals/cs.rb#9 +NumbersAndWords::I18n::Plurals::Cs::RULE = T.let(T.unsafe(nil), Proc) + +# source://numbers_and_words//lib/numbers_and_words/i18n/plurals/lt.rb#6 +module NumbersAndWords::I18n::Plurals::Lt + private + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/lt.rb#19 + def one_conditions(number); end + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/lt.rb#23 + def ones_conditions(number); end + + class << self + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/lt.rb#19 + def one_conditions(number); end + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/lt.rb#23 + def ones_conditions(number); end + end +end + +# source://numbers_and_words//lib/numbers_and_words/i18n/plurals/lt.rb#9 +NumbersAndWords::I18n::Plurals::Lt::RULE = T.let(T.unsafe(nil), Proc) + +# source://numbers_and_words//lib/numbers_and_words/i18n/plurals/lv.rb#6 +module NumbersAndWords::I18n::Plurals::Lv + private + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/lv.rb#11 + def one_conditions(number); end + + class << self + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/lv.rb#11 + def one_conditions(number); end + end +end + +# source://numbers_and_words//lib/numbers_and_words/i18n/plurals/lv.rb#9 +NumbersAndWords::I18n::Plurals::Lv::RULE = T.let(T.unsafe(nil), Proc) + +# source://numbers_and_words//lib/numbers_and_words/i18n/plurals/ru.rb#6 +module NumbersAndWords::I18n::Plurals::Ru + private + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/ru.rb#25 + def few_conditions(number); end + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/ru.rb#30 + def many_conditions(number); end + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/ru.rb#21 + def one_conditions(number); end + + class << self + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/ru.rb#25 + def few_conditions(number); end + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/ru.rb#30 + def many_conditions(number); end + + # source://numbers_and_words//lib/numbers_and_words/i18n/plurals/ru.rb#21 + def one_conditions(number); end + end +end + +# source://numbers_and_words//lib/numbers_and_words/i18n/plurals/ru.rb#9 +NumbersAndWords::I18n::Plurals::Ru::RULE = T.let(T.unsafe(nil), Proc) + +# source://numbers_and_words//lib/numbers_and_words/i18n/plurals/ua.rb#6 +module NumbersAndWords::I18n::Plurals::Ua; end + +# source://numbers_and_words//lib/numbers_and_words/i18n/plurals/ua.rb#7 +NumbersAndWords::I18n::Plurals::Ua::RULE = T.let(T.unsafe(nil), Proc) + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#4 +module NumbersAndWords::Strategies + class << self + # source://numbers_and_words//lib/numbers_and_words/strategies.rb#13 + def array_joiner; end + + # source://numbers_and_words//lib/numbers_and_words/strategies.rb#9 + def figures_converter; end + end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/families/base.rb#5 +module NumbersAndWords::Strategies::ArrayJoiner; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner.rb#8 +class NumbersAndWords::Strategies::ArrayJoiner::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner.rb#11 + def initialize(elements, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner.rb#9 + def elements; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner.rb#9 + def elements=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner.rb#9 + def language; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner.rb#9 + def language=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner.rb#9 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner.rb#9 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner.rb#18 + def run; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner.rb#9 + def translations; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner.rb#9 + def translations=(_arg0); end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/families/base.rb#6 +module NumbersAndWords::Strategies::ArrayJoiner::Languages + class << self + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages.rb#24 + def factory(strategy); end + end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#7 +class NumbersAndWords::Strategies::ArrayJoiner::Languages::Base + include ::NumbersAndWords::Strategies::ArrayJoiner::Languages::Families::Base + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#12 + def initialize(strategy); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#10 + def elements; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#10 + def elements=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#19 + def join; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#10 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#10 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#10 + def strategy; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#10 + def strategy=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#10 + def strings; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#10 + def strings=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#10 + def translations; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/base.rb#10 + def translations=(_arg0); end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/cs.rb#7 +class NumbersAndWords::Strategies::ArrayJoiner::Languages::Cs < ::NumbersAndWords::Strategies::ArrayJoiner::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/en.rb#7 +class NumbersAndWords::Strategies::ArrayJoiner::Languages::En < ::NumbersAndWords::Strategies::ArrayJoiner::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/en-GB.rb#7 +class NumbersAndWords::Strategies::ArrayJoiner::Languages::EnGb < ::NumbersAndWords::Strategies::ArrayJoiner::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/en-GB.rb#8 + def elements_logic; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/en-GB.rb#12 + def union_element; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/es.rb#7 +class NumbersAndWords::Strategies::ArrayJoiner::Languages::Es < ::NumbersAndWords::Strategies::ArrayJoiner::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/families/base.rb#7 +module NumbersAndWords::Strategies::ArrayJoiner::Languages::Families; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/families/base.rb#8 +module NumbersAndWords::Strategies::ArrayJoiner::Languages::Families::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/families/base.rb#9 + def elements_logic; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/families/base.rb#17 + def micro_separator; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/families/base.rb#13 + def union_element; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/fr.rb#7 +class NumbersAndWords::Strategies::ArrayJoiner::Languages::Fr < ::NumbersAndWords::Strategies::ArrayJoiner::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/hu.rb#7 +class NumbersAndWords::Strategies::ArrayJoiner::Languages::Hu < ::NumbersAndWords::Strategies::ArrayJoiner::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/nl.rb#7 +class NumbersAndWords::Strategies::ArrayJoiner::Languages::Nl < ::NumbersAndWords::Strategies::ArrayJoiner::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/pt-BR.rb#7 +class NumbersAndWords::Strategies::ArrayJoiner::Languages::PtBr < ::NumbersAndWords::Strategies::ArrayJoiner::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/ru.rb#7 +class NumbersAndWords::Strategies::ArrayJoiner::Languages::Ru < ::NumbersAndWords::Strategies::ArrayJoiner::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/ua.rb#7 +class NumbersAndWords::Strategies::ArrayJoiner::Languages::Ua < ::NumbersAndWords::Strategies::ArrayJoiner::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/array_joiner/languages/vi.rb#7 +class NumbersAndWords::Strategies::ArrayJoiner::Languages::Vi < ::NumbersAndWords::Strategies::ArrayJoiner::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#5 +module NumbersAndWords::Strategies::FiguresConverter; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#10 +class NumbersAndWords::Strategies::FiguresConverter::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#13 + def initialize(figures, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#11 + def decorator; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#11 + def decorator=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#11 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#11 + def figures=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#11 + def language; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#11 + def language=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#11 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#11 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#22 + def run; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#11 + def translations; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#11 + def translations=(_arg0); end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter.rb#28 + def around(&_arg0); end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/base.rb#6 +module NumbersAndWords::Strategies::FiguresConverter::Decorators + class << self + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators.rb#23 + def factory(strategy, options); end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators.rb#33 + def decorator_class(method_name); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators.rb#37 + def decorator_class_name(method_name); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators.rb#29 + def enabled_decorator(options); end + end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/base.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/base.rb#8 + def initialize(strategy, options); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/base.rb#13 + def run; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/base.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Decorators::Cs; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/base.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Cs::Base < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/fractional.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Cs::Fractional < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Cs::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/fractional.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/fractional.rb#24 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/fractional.rb#32 + def fraction_length; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/fractional.rb#16 + def fraction_significance; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/fractional.rb#20 + def full_fraction; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/fractional.rb#28 + def zero_length; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/integral.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Cs::Integral < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Cs::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/integral.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/integral.rb#23 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/cs/integral.rb#16 + def integral_significance; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en/base.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Decorators::En; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en/base.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::En::Base < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en/fractional.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::En::Fractional < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::En::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en/fractional.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en/fractional.rb#23 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en/fractional.rb#31 + def fraction_length; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en/fractional.rb#15 + def fraction_significance; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en/fractional.rb#19 + def full_fraction; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en/fractional.rb#27 + def zero_length; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en/integral.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::En::Integral < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::En::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en-GB/base.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Decorators::EnGb; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en-GB/base.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::EnGb::Base < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::En::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en-GB/fractional.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::EnGb::Fractional < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::En::Fractional + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en-GB/fractional.rb#11 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en-GB/fractional.rb#17 + def fraction_to_digits; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en-GB/fractional.rb#21 + def zero_length; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en-GB/fractional.rb#9 +NumbersAndWords::Strategies::FiguresConverter::Decorators::EnGb::Fractional::SHIFT_ZERO_LENGTH = T.let(T.unsafe(nil), Integer) + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/en-GB/integral.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::EnGb::Integral < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::En::Integral; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/es/base.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Decorators::Es; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/es/base.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Es::Base < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/es/fractional.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Es::Fractional < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Es::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/es/fractional.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/es/fractional.rb#24 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/es/fractional.rb#32 + def fraction_length; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/es/fractional.rb#16 + def fraction_significance; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/es/fractional.rb#20 + def full_fraction; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/es/fractional.rb#28 + def zero_length; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/es/integral.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Es::Integral < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Es::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/fr/base.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Decorators::Fr; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/fr/base.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Fr::Base < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/fr/fractional.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Fr::Fractional < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Fr::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/fr/fractional.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/fr/fractional.rb#23 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/fr/fractional.rb#31 + def fraction_length; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/fr/fractional.rb#15 + def fraction_significance; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/fr/fractional.rb#19 + def full_fraction; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/fr/fractional.rb#27 + def zero_length; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/fr/integral.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Fr::Integral < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Fr::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/hu/base.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Decorators::Hu; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/hu/base.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Hu::Base < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/hu/fractional.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Hu::Fractional < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Hu::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/hu/fractional.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/hu/fractional.rb#23 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/hu/fractional.rb#31 + def fraction_length; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/hu/fractional.rb#15 + def fraction_significance; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/hu/fractional.rb#19 + def full_fraction; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/hu/fractional.rb#27 + def zero_length; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/hu/integral.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Hu::Integral < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Hu::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/nl/base.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Decorators::Nl; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/nl/base.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Nl::Base < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/nl/fractional.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Nl::Fractional < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Nl::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/nl/fractional.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/nl/fractional.rb#24 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/nl/fractional.rb#32 + def fraction_length; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/nl/fractional.rb#16 + def fraction_significance; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/nl/fractional.rb#20 + def full_fraction; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/nl/fractional.rb#28 + def zero_length; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/nl/integral.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Nl::Integral < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Nl::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/nl/integral.rb#9 + def run; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/base.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Decorators::PtBr; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/base.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::PtBr::Base < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/fractional.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::PtBr::Fractional < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::PtBr::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/fractional.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/fractional.rb#23 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/fractional.rb#31 + def fraction_length; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/fractional.rb#15 + def fraction_significance; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/fractional.rb#19 + def full_fraction; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/fractional.rb#27 + def zero_length; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/integral.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::PtBr::Integral < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::PtBr::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/integral.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/integral.rb#23 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/integral.rb#15 + def integral_significance; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/pt-BR/integral.rb#19 + def quantity; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/base.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Decorators::Ru; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/base.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Ru::Base < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/fractional.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Ru::Fractional < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Ru::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/fractional.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/fractional.rb#24 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/fractional.rb#32 + def fraction_length; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/fractional.rb#16 + def fraction_significance; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/fractional.rb#20 + def full_fraction; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/fractional.rb#28 + def zero_length; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/integral.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Ru::Integral < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Ru::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/integral.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/integral.rb#20 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ru/integral.rb#16 + def integral_significance; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/base.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Decorators::Ua; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/base.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Ua::Base < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/fractional.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Ua::Fractional < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Ua::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/fractional.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/fractional.rb#24 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/fractional.rb#32 + def fraction_length; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/fractional.rb#16 + def fraction_significance; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/fractional.rb#20 + def full_fraction; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/fractional.rb#28 + def zero_length; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/integral.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Ua::Integral < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Ua::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/integral.rb#9 + def run; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/integral.rb#20 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/ua/integral.rb#16 + def integral_significance; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/vi/base.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Decorators::Vi; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/vi/base.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Vi::Base < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/vi/fractional.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Vi::Fractional < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Vi::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/decorators/vi/integral.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Decorators::Vi::Integral < ::NumbersAndWords::Strategies::FiguresConverter::Decorators::Vi::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#6 +module NumbersAndWords::Strategies::FiguresConverter::Languages + class << self + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages.rb#38 + def factory(strategy); end + end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Base + include ::NumbersAndWords::Strategies::FiguresConverter::Languages::Families::Helpers + include ::NumbersAndWords::Strategies::FiguresConverter::Languages::Families::Base + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#12 + def initialize(strategy); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#10 + def figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#10 + def figures=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#10 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#10 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#24 + def print_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#10 + def strategy; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#10 + def strategy=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#10 + def strings; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#10 + def strings=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#10 + def translations; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#10 + def translations=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/base.rb#19 + def words; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/cs.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Cs < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/cs.rb#23 + def gender; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/cs.rb#10 + def hundreds; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/cs.rb#19 + def megs(*args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/cs.rb#10 + def ones; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/cs.rb#10 + def teens; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/cs.rb#10 + def tens; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/cs.rb#10 + def tens_with_ones; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/cs.rb#15 + def zero; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/cs.rb#38 + def internal_options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/cs.rb#46 + def maybe_ordinal; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/cs.rb#42 + def maybe_remove_zero; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/da.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Da < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/da.rb#16 + def hundreds; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/da.rb#20 + def megs; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/da.rb#12 + def ones; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/da.rb#8 + def print_words; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/da.rb#30 + def complex_part; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/da.rb#42 + def gender; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/da.rb#34 + def hundred?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/da.rb#38 + def one_hundred?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/da.rb#26 + def simple_part; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/de.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::De < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/de.rb#16 + def complex_number_to_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/de.rb#35 + def megs; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/de.rb#23 + def ones; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/de.rb#27 + def postfix; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/de.rb#12 + def print_megs_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/de.rb#8 + def print_words; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/de.rb#59 + def complex_part; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/de.rb#41 + def print_megs; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/de.rb#47 + def print_other; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/de.rb#51 + def print_thousands; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/de.rb#55 + def simple_part; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::En < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#14 + def hundreds; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#37 + def maybe_hyphen_separator; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#41 + def maybe_ordinal(type); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#49 + def maybe_remove_zero; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#45 + def maybe_union_after_hundreds(translations); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#9 + def megs; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#9 + def ones; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#29 + def strings_logic; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#9 + def teens; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#9 + def tens; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#22 + def tens_with_ones; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en.rb#18 + def zero; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/en-GB.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::EnGb < ::NumbersAndWords::Strategies::FiguresConverter::Languages::En; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Es < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#8 + def capacity_iteration; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#29 + def hundreds; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#34 + def megs; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#16 + def ones; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#22 + def tens_with_ones; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#12 + def zero; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#63 + def gender; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#59 + def hundred_apocopated?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#49 + def long_scale_thousand?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#71 + def maybe_remove_zero; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#54 + def one_apocopated?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/es.rb#42 + def one_thousand?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/et.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Et < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/et.rb#8 + def megs; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Languages::Families; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#8 +module NumbersAndWords::Strategies::FiguresConverter::Languages::Families::Base + include ::NumbersAndWords::Strategies::FiguresConverter::Languages::Families::Helpers + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#32 + def capacity_iteration; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#25 + def complex_number_to_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#52 + def complex_tens; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#11 + def current_capacity; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#11 + def current_capacity=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#48 + def hundreds_number_to_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#39 + def number_without_capacity_to_words(capacity = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#11 + def parent_figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#11 + def parent_figures=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#68 + def save_parent_figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#56 + def simple_number_to_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#13 + def strings_logic; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/base.rb#39 + def words_in_capacity(capacity = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/cyrillic.rb#8 +module NumbersAndWords::Strategies::FiguresConverter::Languages::Families::Cyrillic + include ::NumbersAndWords::Strategies::FiguresConverter::Languages::Families::Helpers + include ::NumbersAndWords::Strategies::FiguresConverter::Languages::Families::Base + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/cyrillic.rb#11 + def gender; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/cyrillic.rb#30 + def megs(*args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/cyrillic.rb#25 + def ones(*args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/cyrillic.rb#25 + def tens_with_ones(*args); end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#8 +module NumbersAndWords::Strategies::FiguresConverter::Languages::Families::Helpers + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#15 + def hundreds(*args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#21 + def megs(*args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#15 + def ones(*args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#15 + def teens(*args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#15 + def tens(*args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#15 + def tens_with_ones(*args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#26 + def translate(method_name, *args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/families/helpers.rb#9 + def zero(*args); end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/fr.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Fr < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/fr.rb#8 + def capacity_iteration; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/fr.rb#16 + def hundreds; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/fr.rb#24 + def megs; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/fr.rb#20 + def tens; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/fr.rb#30 + def one?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/fr.rb#34 + def thousand?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Hu < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#32 + def complex_number_to_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#16 + def greater_than_2000?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#51 + def hundreds; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#12 + def inner_reverse_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#56 + def maybe_ordinal(type); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#51 + def megs; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#51 + def ones; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#8 + def print_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#40 + def simple_number_to_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#20 + def strings_logic; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#51 + def teens; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#51 + def tens; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#51 + def tens_with_ones; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hu.rb#51 + def zero; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/hy.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Hy < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/it.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::It < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/ka.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Ka < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/ka.rb#8 + def capacity_iteration; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/ka.rb#16 + def hundreds; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/ka.rb#20 + def megs; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/ka.rb#28 + def one?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/ka.rb#32 + def thousand?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/kz.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Kz < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/lt.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Lt < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/lt.rb#8 + def capacity_iteration; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/lt.rb#16 + def megs; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/lt.rb#22 + def one?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/lt.rb#26 + def thousand?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/lv.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Lv < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/lv.rb#12 + def megs; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/lv.rb#8 + def tens_with_ones; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/nl.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Nl < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/nl.rb#12 + def capacity_iteration; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/nl.rb#8 + def hundreds_number_to_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/nl.rb#21 + def ones(*args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/nl.rb#29 + def simple_number_to_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/nl.rb#25 + def tens_with_ones(*args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/nl.rb#37 + def zero; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/nl.rb#59 + def apply_tens_of_hundreds?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/nl.rb#45 + def maybe_remove_zero; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/nl.rb#49 + def number_without_capacity_to_words; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Pt < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt.rb#8 + def hundreds; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt.rb#12 + def megs; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt.rb#18 + def hundred?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt.rb#22 + def one_hundred?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::PtBr < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#26 + def capacity_iteration; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#22 + def complex_number_to_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#37 + def hundreds; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#41 + def megs; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#33 + def ones; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#9 + def teens; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#9 + def tens; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#9 + def tens_with_ones; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#18 + def words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#14 + def zero; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#58 + def gender; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#68 + def hundred?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#50 + def internal_options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#54 + def maybe_ordinal; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#111 + def maybe_remove_zero; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#72 + def one_hundred?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#80 + def one_thousand?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#76 + def opaque?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#97 + def with_comma?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/pt-BR.rb#87 + def without_connector?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/ru.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Ru < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + include ::NumbersAndWords::Strategies::FiguresConverter::Languages::Families::Cyrillic +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/se.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Se < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/tr.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Tr < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/tr.rb#8 + def capacity_iteration; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/tr.rb#18 + def one?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/tr.rb#22 + def thousand?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/ua.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Ua < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + include ::NumbersAndWords::Strategies::FiguresConverter::Languages::Families::Cyrillic +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#7 +class NumbersAndWords::Strategies::FiguresConverter::Languages::Vi < ::NumbersAndWords::Strategies::FiguresConverter::Languages::Base + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#93 + def billion_unit; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#72 + def fraction_length; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#78 + def fraction_number_zeros_leading; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#68 + def fractional?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#26 + def fractional_with_zero_leading_string_logic; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#48 + def hundreds(options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#43 + def hundreds?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#31 + def integral_string_logic; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#56 + def ones(options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#64 + def ones_union(options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#8 + def print_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#82 + def remove_billion_noise(value); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/languages/vi.rb#13 + def strings_logic; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/gender.rb#6 +module NumbersAndWords::Strategies::FiguresConverter::Options; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/gender.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Options::Base; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/gender.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Base::Gender + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/gender.rb#11 + def initialize(proxy, *_args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/gender.rb#9 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/gender.rb#9 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/gender.rb#16 + def result; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/gender.rb#9 + def strategy; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/gender.rb#9 + def strategy=(_arg0); end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/gender.rb#22 + def active?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/ordinal.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Base::Ordinal + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/ordinal.rb#9 + def initialize(proxy, *_args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/ordinal.rb#14 + def result; end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/ordinal.rb#20 + def active?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/remove_zero.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Base::RemoveZero + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/remove_zero.rb#11 + def initialize(proxy, *_args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/remove_zero.rb#9 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/remove_zero.rb#9 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/remove_zero.rb#16 + def result; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/remove_zero.rb#9 + def strategy; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/remove_zero.rb#9 + def strategy=(_arg0); end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/base/remove_zero.rb#22 + def active?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/cs/gender.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Options::Cs; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/cs/gender.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Cs::Gender < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::Gender + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/cs/gender.rb#9 + def result; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/cs/ordinal.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Cs::Ordinal < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::Ordinal; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/cs/remove_zero.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Cs::RemoveZero < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::RemoveZero; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/da/gender.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Options::Da; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/da/gender.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Da::Gender < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::Gender; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Options::En; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::En::HundredsWithUnion + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb#11 + def initialize(proxy, *_args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb#16 + def modify_or_leave(hundreds); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb#9 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb#9 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb#9 + def strategy; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb#9 + def strategy=(_arg0); end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb#23 + def active?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb#27 + def round_hundred?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/hundreds_with_union.rb#31 + def translations; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::En::Ordinal < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::Ordinal + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb#13 + def result(type); end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb#24 + def check_megs_numbers; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb#20 + def check_simple_numbers; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb#42 + def current_capacity; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb#46 + def language_figures; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb#34 + def megs_numbers_condition; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb#38 + def simple_number_to_words; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb#28 + def simple_numbers_condition; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb#10 +NumbersAndWords::Strategies::FiguresConverter::Options::En::Ordinal::HUNDRED_TYPE = T.let(T.unsafe(nil), Symbol) + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb#11 +NumbersAndWords::Strategies::FiguresConverter::Options::En::Ordinal::MEGS_TYPE = T.let(T.unsafe(nil), Symbol) + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/ordinal.rb#9 +NumbersAndWords::Strategies::FiguresConverter::Options::En::Ordinal::ZERO_TYPE = T.let(T.unsafe(nil), Symbol) + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/pronounced.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::En::Pronounced + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/pronounced.rb#11 + def initialize(proxy, *_args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/pronounced.rb#16 + def active?; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/pronounced.rb#42 + def handle_hundreds(language, figures); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/pronounced.rb#32 + def handle_thousands(language, figures); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/pronounced.rb#9 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/pronounced.rb#9 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/pronounced.rb#20 + def process(language, figures); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/pronounced.rb#9 + def strategy; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/pronounced.rb#9 + def strategy=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/pronounced.rb#48 + def tens_with_oh(language, figures); end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/remove_hyphen.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::En::RemoveHyphen + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/remove_hyphen.rb#11 + def initialize(proxy, *_args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/remove_hyphen.rb#9 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/remove_hyphen.rb#9 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/remove_hyphen.rb#16 + def result; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/remove_hyphen.rb#9 + def strategy; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/remove_hyphen.rb#9 + def strategy=(_arg0); end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/remove_hyphen.rb#22 + def active?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en/remove_zero.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::En::RemoveZero < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::RemoveZero; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en-GB/hundreds_with_union.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Options::EnGb; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en-GB/hundreds_with_union.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::EnGb::HundredsWithUnion < ::NumbersAndWords::Strategies::FiguresConverter::Options::En::HundredsWithUnion; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en-GB/ordinal.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::EnGb::Ordinal < ::NumbersAndWords::Strategies::FiguresConverter::Options::En::Ordinal; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en-GB/pronounced.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::EnGb::Pronounced < ::NumbersAndWords::Strategies::FiguresConverter::Options::En::Pronounced; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en-GB/remove_hyphen.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::EnGb::RemoveHyphen < ::NumbersAndWords::Strategies::FiguresConverter::Options::En::RemoveHyphen; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/en-GB/remove_zero.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::EnGb::RemoveZero < ::NumbersAndWords::Strategies::FiguresConverter::Options::En::RemoveZero; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/es/apocopated.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Options::Es; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/es/apocopated.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Es::Apocopated + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/es/apocopated.rb#11 + def initialize(proxy, *_args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/es/apocopated.rb#9 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/es/apocopated.rb#9 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/es/apocopated.rb#16 + def result; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/es/apocopated.rb#9 + def strategy; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/es/apocopated.rb#9 + def strategy=(_arg0); end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/es/apocopated.rb#22 + def active?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/es/gender.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Es::Gender < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::Gender; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/es/remove_zero.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Es::RemoveZero < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::RemoveZero; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/hu/ordinal.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Options::Hu; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/hu/ordinal.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Hu::Ordinal < ::NumbersAndWords::Strategies::FiguresConverter::Options::En::Ordinal; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/nl/tens_of_hundreds.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Options::Nl; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/nl/tens_of_hundreds.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Nl::TensOfHundreds + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/nl/tens_of_hundreds.rb#11 + def initialize(proxy, *_args); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/nl/tens_of_hundreds.rb#9 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/nl/tens_of_hundreds.rb#9 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/nl/tens_of_hundreds.rb#16 + def result; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/nl/tens_of_hundreds.rb#9 + def strategy; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/nl/tens_of_hundreds.rb#9 + def strategy=(_arg0); end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/nl/tens_of_hundreds.rb#22 + def active?; end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options.rb#19 +class NumbersAndWords::Strategies::FiguresConverter::Options::Proxy + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options.rb#22 + def initialize(strategy, options); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options.rb#27 + def method_missing(method_name, *args, &block); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options.rb#20 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options.rb#20 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options.rb#20 + def strategy; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options.rb#20 + def strategy=(_arg0); end + + private + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options.rb#49 + def module_name; end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options.rb#45 + def proxy_class_name(method_name); end + + # source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options.rb#39 + def respond_to_missing?(method_name, include_private: T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/pt-BR/gender.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Options::PtBr; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/pt-BR/gender.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::PtBr::Gender < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::Gender; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/pt-BR/ordinal.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::PtBr::Ordinal < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::Ordinal; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/pt-BR/remove_zero.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::PtBr::RemoveZero < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::RemoveZero; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/ru/gender.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Options::Ru; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/ru/gender.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Ru::Gender < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::Gender; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/ua/gender.rb#7 +module NumbersAndWords::Strategies::FiguresConverter::Options::Ua; end + +# source://numbers_and_words//lib/numbers_and_words/strategies/figures_converter/options/ua/gender.rb#8 +class NumbersAndWords::Strategies::FiguresConverter::Options::Ua::Gender < ::NumbersAndWords::Strategies::FiguresConverter::Options::Base::Gender; end + +# source://numbers_and_words//lib/numbers_and_words/translations/base.rb#4 +module NumbersAndWords::Translations + class << self + # source://numbers_and_words//lib/numbers_and_words/translations.rb#35 + def factory; end + end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/base.rb#5 +class NumbersAndWords::Translations::Base + # source://numbers_and_words//lib/numbers_and_words/translations/base.rb#8 + def t(attribute, options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/base.rb#6 +NumbersAndWords::Translations::Base::I18N_NAMESPACE = T.let(T.unsafe(nil), Symbol) + +# source://numbers_and_words//lib/numbers_and_words/translations/cs.rb#5 +class NumbersAndWords::Translations::Cs < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Extensions::FractionSignificance + + # source://numbers_and_words//lib/numbers_and_words/translations/cs.rb#29 + def hundreds(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/cs.rb#33 + def integral(number, _options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/cs.rb#13 + def ones(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/cs.rb#21 + def teens(numbers, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/cs.rb#17 + def tens(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/cs.rb#25 + def tens_with_ones(numbers, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/cs.rb#9 + def zero(options = T.unsafe(nil)); end + + private + + # source://numbers_and_words//lib/numbers_and_words/translations/cs.rb#43 + def gender_to_use(options); end + + # source://numbers_and_words//lib/numbers_and_words/translations/cs.rb#39 + def ordinal?(options); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/da.rb#5 +class NumbersAndWords::Translations::Da < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + + # source://numbers_and_words//lib/numbers_and_words/translations/da.rb#25 + def hundreds(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/da.rb#10 + def ones(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/da.rb#17 + def tens(number, _options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/da.rb#21 + def tens_with_ones(numbers, _options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/da.rb#32 + def zero(_options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/da.rb#8 +NumbersAndWords::Translations::Da::DEFAULT_POSTFIX = T.let(T.unsafe(nil), T.untyped) + +# source://numbers_and_words//lib/numbers_and_words/translations/de.rb#5 +class NumbersAndWords::Translations::De < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + + # source://numbers_and_words//lib/numbers_and_words/translations/de.rb#17 + def hundreds(number, _options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/de.rb#9 + def ones(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/de.rb#13 + def tens_with_ones(numbers, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/de.rb#21 + def zero(_options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/de.rb#7 +NumbersAndWords::Translations::De::DEFAULT_POSTFIX = T.let(T.unsafe(nil), Symbol) + +# source://numbers_and_words//lib/numbers_and_words/translations/en.rb#5 +class NumbersAndWords::Translations::En < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + include ::NumbersAndWords::Translations::Extensions::FractionSignificance +end + +# source://numbers_and_words//lib/numbers_and_words/translations/en-GB.rb#5 +class NumbersAndWords::Translations::EnGb < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + include ::NumbersAndWords::Translations::Extensions::FractionSignificance +end + +# source://numbers_and_words//lib/numbers_and_words/translations/es.rb#5 +class NumbersAndWords::Translations::Es < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Extensions::FractionSignificance + + # source://numbers_and_words//lib/numbers_and_words/translations/es.rb#31 + def hundreds(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/es.rb#13 + def ones(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/es.rb#21 + def tens_with_ones(numbers, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/es.rb#25 + def twenties_with_ones(numbers, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/es.rb#9 + def zero(_options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/et.rb#5 +class NumbersAndWords::Translations::Et < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + + # source://numbers_and_words//lib/numbers_and_words/translations/et.rb#8 + def hundreds(number, _options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/extensions/fraction_significance.rb#5 +module NumbersAndWords::Translations::Extensions; end + +# source://numbers_and_words//lib/numbers_and_words/translations/extensions/fraction_significance.rb#6 +module NumbersAndWords::Translations::Extensions::FractionSignificance + # source://numbers_and_words//lib/numbers_and_words/translations/extensions/fraction_significance.rb#13 + def micro(capacity); end + + # source://numbers_and_words//lib/numbers_and_words/translations/extensions/fraction_significance.rb#17 + def micro_prefix(capacity); end + + # source://numbers_and_words//lib/numbers_and_words/translations/extensions/fraction_significance.rb#7 + def micros(capacity, number = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/families/base.rb#5 +module NumbersAndWords::Translations::Families; end + +# source://numbers_and_words//lib/numbers_and_words/translations/families/base.rb#6 +module NumbersAndWords::Translations::Families::Base + # source://numbers_and_words//lib/numbers_and_words/translations/families/base.rb#25 + def mega(capacity); end + + # source://numbers_and_words//lib/numbers_and_words/translations/families/base.rb#19 + def megs(capacity, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/families/base.rb#33 + def micro_separator; end + + # source://numbers_and_words//lib/numbers_and_words/translations/families/base.rb#7 + def teens(numbers, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/families/base.rb#11 + def tens(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/families/base.rb#15 + def tens_with_ones(numbers, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/families/base.rb#29 + def union; end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/families/cyrillic.rb#6 +module NumbersAndWords::Translations::Families::Cyrillic + include ::NumbersAndWords::Translations::Families::Base + + # source://numbers_and_words//lib/numbers_and_words/translations/families/cyrillic.rb#17 + def hundreds(number, _options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/families/cyrillic.rb#21 + def integral(number, _options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/families/cyrillic.rb#13 + def ones(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/families/cyrillic.rb#9 + def zero(_options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/families/latin.rb#6 +module NumbersAndWords::Translations::Families::Latin + include ::NumbersAndWords::Translations::Families::Base + + # source://numbers_and_words//lib/numbers_and_words/translations/families/latin.rb#17 + def hundreds(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/families/latin.rb#13 + def ones(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/families/latin.rb#9 + def zero(options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/fr.rb#5 +class NumbersAndWords::Translations::Fr < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + include ::NumbersAndWords::Translations::Extensions::FractionSignificance + + # source://numbers_and_words//lib/numbers_and_words/translations/fr.rb#35 + def hundreds(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/fr.rb#11 + def tens(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/fr.rb#23 + def tens_with_ones(numbers, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/fr.rb#17 + def tens_with_teens(numbers); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/fr.rb#9 +NumbersAndWords::Translations::Fr::SPECIAL_TENS_CASE = T.let(T.unsafe(nil), Integer) + +# source://numbers_and_words//lib/numbers_and_words/translations/hu.rb#5 +class NumbersAndWords::Translations::Hu < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + include ::NumbersAndWords::Translations::Extensions::FractionSignificance + + # source://numbers_and_words//lib/numbers_and_words/translations/hu.rb#14 + def hundreds(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/hu.rb#9 + def tens_with_ones(numbers, options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/hy.rb#5 +class NumbersAndWords::Translations::Hy < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + + # source://numbers_and_words//lib/numbers_and_words/translations/hy.rb#13 + def hundreds(number, _options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/hy.rb#8 + def tens_with_ones(numbers, options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/it.rb#5 +class NumbersAndWords::Translations::It < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + + # source://numbers_and_words//lib/numbers_and_words/translations/it.rb#12 + def hundreds(number, _options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/it.rb#8 + def tens_with_ones(numbers, _options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/ka.rb#5 +class NumbersAndWords::Translations::Ka < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + + # source://numbers_and_words//lib/numbers_and_words/translations/ka.rb#54 + def hundreds(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/ka.rb#42 + def tens_with_ones(numbers, _options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/ka.rb#30 + def vigesimal_range(number); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/ka.rb#7 +NumbersAndWords::Translations::Ka::TENS_VIGESIMAL_RANGES = T.let(T.unsafe(nil), Array) + +# source://numbers_and_words//lib/numbers_and_words/translations/kz.rb#5 +class NumbersAndWords::Translations::Kz < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin +end + +# source://numbers_and_words//lib/numbers_and_words/translations/lt.rb#5 +class NumbersAndWords::Translations::Lt < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + + # source://numbers_and_words//lib/numbers_and_words/translations/lt.rb#8 + def hundreds(number, _options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/lv.rb#5 +class NumbersAndWords::Translations::Lv < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + + # source://numbers_and_words//lib/numbers_and_words/translations/lv.rb#8 + def hundreds(number, _options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/nl.rb#5 +class NumbersAndWords::Translations::Nl < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + include ::NumbersAndWords::Translations::Extensions::FractionSignificance + + # source://numbers_and_words//lib/numbers_and_words/translations/nl.rb#22 + def hundreds(number, _options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/nl.rb#9 + def ones(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/nl.rb#18 + def tens_with_ones(numbers, options = T.unsafe(nil)); end + + private + + # source://numbers_and_words//lib/numbers_and_words/translations/nl.rb#30 + def union(units); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/pt.rb#5 +class NumbersAndWords::Translations::Pt < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + + # source://numbers_and_words//lib/numbers_and_words/translations/pt.rb#12 + def hundreds(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/pt.rb#8 + def tens_with_ones(numbers, _options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/pt-BR.rb#5 +class NumbersAndWords::Translations::PtBr < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Extensions::FractionSignificance + + # source://numbers_and_words//lib/numbers_and_words/translations/pt-BR.rb#40 + def hundreds(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/pt-BR.rb#9 + def integral(number, _options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/pt-BR.rb#49 + def megs(capacity, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/pt-BR.rb#63 + def micro_prefix(capacity, number); end + + # source://numbers_and_words//lib/numbers_and_words/translations/pt-BR.rb#57 + def micros(capacity, number = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/pt-BR.rb#17 + def ones(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/pt-BR.rb#29 + def teens(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/pt-BR.rb#23 + def tens(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/pt-BR.rb#35 + def tens_with_ones(numbers, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/pt-BR.rb#13 + def zero(options = T.unsafe(nil)); end + + private + + # source://numbers_and_words//lib/numbers_and_words/translations/pt-BR.rb#72 + def ordinal?(options); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/ru.rb#5 +class NumbersAndWords::Translations::Ru < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Cyrillic + include ::NumbersAndWords::Translations::Extensions::FractionSignificance +end + +# source://numbers_and_words//lib/numbers_and_words/translations/se.rb#5 +class NumbersAndWords::Translations::Se < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + + # source://numbers_and_words//lib/numbers_and_words/translations/se.rb#8 + def tens_with_ones(numbers, _options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/tr.rb#5 +class NumbersAndWords::Translations::Tr < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + + # source://numbers_and_words//lib/numbers_and_words/translations/tr.rb#8 + def hundreds(number, options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/translations/ua.rb#5 +class NumbersAndWords::Translations::Ua < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Cyrillic + include ::NumbersAndWords::Translations::Extensions::FractionSignificance +end + +# source://numbers_and_words//lib/numbers_and_words/translations/vi.rb#5 +class NumbersAndWords::Translations::Vi < ::NumbersAndWords::Translations::Base + include ::NumbersAndWords::Translations::Families::Base + include ::NumbersAndWords::Translations::Families::Latin + include ::NumbersAndWords::Translations::Extensions::FractionSignificance + + # source://numbers_and_words//lib/numbers_and_words/translations/vi.rb#8 + def ones_of_tens(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/vi.rb#19 + def ones_union(number, options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/translations/vi.rb#15 + def tens_with_ones(numbers, options = T.unsafe(nil)); end +end + +# source://numbers_and_words//lib/numbers_and_words/version.rb#4 +NumbersAndWords::VERSION = T.let(T.unsafe(nil), String) + +# source://numbers_and_words//lib/numbers_and_words/helper_classes/words_array.rb#6 +class NumbersAndWords::WordsArray < ::Array + # source://numbers_and_words//lib/numbers_and_words/helper_classes/words_array.rb#7 + def join(options = T.unsafe(nil)); end + + # source://numbers_and_words//lib/numbers_and_words/helper_classes/words_array.rb#11 + def local_language(&_arg0); end +end + +# source://numbers_and_words//lib/numbers_and_words/wrappers/integer.rb#4 +module NumbersAndWords::Wrappers; end + +# source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#5 +class NumbersAndWords::Wrappers::Float + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#10 + def initialize(number); end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#8 + def number; end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#8 + def number=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#14 + def to_words(options = T.unsafe(nil)); end + + private + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#52 + def fractional_options; end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#34 + def fractional_part; end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#57 + def fractional_part_is_nil?; end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#44 + def fractional_part_with(options); end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#48 + def integral_options; end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#30 + def integral_part; end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#40 + def integral_part_with(options); end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#24 + def options; end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#24 + def options=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#26 + def parts; end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#61 + def precision; end +end + +# source://numbers_and_words//lib/numbers_and_words/wrappers/float.rb#6 +NumbersAndWords::Wrappers::Float::ZERO_SYMBOL = T.let(T.unsafe(nil), String) + +# source://numbers_and_words//lib/numbers_and_words/wrappers/integer.rb#5 +class NumbersAndWords::Wrappers::Integer + # source://numbers_and_words//lib/numbers_and_words/wrappers/integer.rb#8 + def initialize(number); end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/integer.rb#6 + def number; end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/integer.rb#6 + def number=(_arg0); end + + # source://numbers_and_words//lib/numbers_and_words/wrappers/integer.rb#12 + def to_words(options = T.unsafe(nil)); end + + private + + # source://numbers_and_words//lib/numbers_and_words/wrappers/integer.rb#18 + def to_figures_array; end +end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/parser@3.3.8.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/parser@3.3.9.0.rbi similarity index 100% rename from tools/ruby-gems/udb/sorbet/rbi/gems/parser@3.3.8.0.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/parser@3.3.9.0.rbi diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/pastel@0.8.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/pastel@0.8.0.rbi new file mode 100644 index 0000000000..be3efcb820 --- /dev/null +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/pastel@0.8.0.rbi @@ -0,0 +1,337 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `pastel` gem. +# Please instead update this file by running `bin/tapioca gem pastel`. + + +# source://pastel//lib/pastel/alias_importer.rb#3 +module Pastel + private + + # source://pastel//lib/pastel.rb#31 + def new(enabled: T.unsafe(nil), eachline: T.unsafe(nil)); end + + class << self + # source://pastel//lib/pastel.rb#31 + def new(enabled: T.unsafe(nil), eachline: T.unsafe(nil)); end + end +end + +# source://pastel//lib/pastel/ansi.rb#5 +module Pastel::ANSI + private + + # source://pastel//lib/pastel/ansi.rb#62 + def background?(code); end + + # source://pastel//lib/pastel/ansi.rb#58 + def foreground?(code); end + + # source://pastel//lib/pastel/ansi.rb#66 + def style?(code); end + + class << self + # source://pastel//lib/pastel/ansi.rb#62 + def background?(code); end + + # source://pastel//lib/pastel/ansi.rb#58 + def foreground?(code); end + + # source://pastel//lib/pastel/ansi.rb#66 + def style?(code); end + end +end + +# source://pastel//lib/pastel/ansi.rb#6 +Pastel::ANSI::ATTRIBUTES = T.let(T.unsafe(nil), Hash) + +# source://pastel//lib/pastel/alias_importer.rb#5 +class Pastel::AliasImporter + # source://pastel//lib/pastel/alias_importer.rb#12 + def initialize(color, env, output = T.unsafe(nil)); end + + # source://pastel//lib/pastel/alias_importer.rb#27 + def import; end + + protected + + # source://pastel//lib/pastel/alias_importer.rb#44 + def color; end + + # source://pastel//lib/pastel/alias_importer.rb#44 + def env; end + + # source://pastel//lib/pastel/alias_importer.rb#44 + def output; end +end + +# source://pastel//lib/pastel/color.rb#7 +class Pastel::Color + include ::Pastel::ANSI + + # source://pastel//lib/pastel/color.rb#24 + def initialize(enabled: T.unsafe(nil), eachline: T.unsafe(nil)); end + + # source://pastel//lib/pastel/color.rb#235 + def ==(other); end + + # source://pastel//lib/pastel/color.rb#206 + def alias_color(alias_name, *colors); end + + # source://pastel//lib/pastel/color.rb#78 + def apply_codes(string, ansi_colors); end + + # source://pastel//lib/pastel/color.rb#85 + def clear; end + + # source://pastel//lib/pastel/color.rb#148 + def code(*colors); end + + # source://pastel//lib/pastel/color.rb#117 + def colored?(string); end + + # source://pastel//lib/pastel/color.rb#54 + def decorate(string, *colors); end + + # source://pastel//lib/pastel/color.rb#33 + def disable!; end + + # source://pastel//lib/pastel/color.rb#19 + def eachline; end + + # source://pastel//lib/pastel/color.rb#16 + def enabled; end + + # source://pastel//lib/pastel/color.rb#16 + def enabled?; end + + # source://pastel//lib/pastel/color.rb#225 + def eql?(other); end + + # source://pastel//lib/pastel/color.rb#254 + def hash; end + + # source://pastel//lib/pastel/color.rb#245 + def inspect; end + + # source://pastel//lib/pastel/color.rb#136 + def lookup(*colors); end + + # source://pastel//lib/pastel/color.rb#103 + def strip(*strings); end + + # source://pastel//lib/pastel/color.rb#175 + def style_names; end + + # source://pastel//lib/pastel/color.rb#166 + def styles; end + + # source://pastel//lib/pastel/color.rb#191 + def valid?(*colors); end + + private + + # source://pastel//lib/pastel/color.rb#265 + def blank?(value); end + + # source://pastel//lib/pastel/color.rb#270 + def validate(*colors); end +end + +# source://pastel//lib/pastel/color.rb#11 +Pastel::Color::ALIASES = T.let(T.unsafe(nil), Hash) + +# source://pastel//lib/pastel/color.rb#14 +Pastel::Color::ANSI_COLOR_REGEXP = T.let(T.unsafe(nil), Regexp) + +# source://pastel//lib/pastel/color_parser.rb#13 +class Pastel::ColorParser + include ::Pastel::ANSI + + class << self + # source://pastel//lib/pastel/color_parser.rb#104 + def attribute_name(ansi); end + + # source://pastel//lib/pastel/color_parser.rb#119 + def color_name(ansi_code); end + + # source://pastel//lib/pastel/color_parser.rb#33 + def parse(text); end + + # source://pastel//lib/pastel/color_parser.rb#90 + def unpack_ansi(ansi_stack); end + end +end + +# source://pastel//lib/pastel/color_parser.rb#17 +Pastel::ColorParser::CSI = T.let(T.unsafe(nil), String) + +# source://pastel//lib/pastel/color_parser.rb#16 +Pastel::ColorParser::ESC = T.let(T.unsafe(nil), String) + +# source://pastel//lib/pastel/color_resolver.rb#11 +class Pastel::ColorResolver + # source://pastel//lib/pastel/color_resolver.rb#21 + def initialize(color); end + + # source://pastel//lib/pastel/color_resolver.rb#14 + def color; end + + # source://pastel//lib/pastel/color_resolver.rb#28 + def resolve(base, unprocessed_string); end +end + +# source://pastel//lib/pastel/decorator_chain.rb#7 +class Pastel::DecoratorChain + include ::Enumerable + + # source://pastel//lib/pastel/decorator_chain.rb#22 + def initialize(decorators = T.unsafe(nil)); end + + # source://pastel//lib/pastel/decorator_chain.rb#60 + def ==(other); end + + # source://pastel//lib/pastel/decorator_chain.rb#31 + def add(decorator); end + + # source://pastel//lib/pastel/decorator_chain.rb#42 + def each(&block); end + + # source://pastel//lib/pastel/decorator_chain.rb#51 + def eql?(other); end + + # source://pastel//lib/pastel/decorator_chain.rb#78 + def hash; end + + # source://pastel//lib/pastel/decorator_chain.rb#69 + def inspect; end + + protected + + # source://pastel//lib/pastel/decorator_chain.rb#84 + def decorators; end + + class << self + # source://pastel//lib/pastel/decorator_chain.rb#15 + def empty; end + end +end + +# source://pastel//lib/pastel/delegator.rb#13 +class Pastel::Delegator + extend ::Forwardable + + # source://pastel//lib/pastel/delegator.rb#38 + def initialize(resolver, chain); end + + # source://pastel//lib/pastel/delegator.rb#57 + def ==(other); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def alias_color(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def colored?(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def decorate(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def enabled?(*args, **_arg1, &block); end + + # source://pastel//lib/pastel/delegator.rb#48 + def eql?(other); end + + # source://pastel//lib/pastel/delegator.rb#76 + def hash; end + + # source://pastel//lib/pastel/delegator.rb#66 + def inspect; end + + # source://forwardable/1.3.3/forwardable.rb#231 + def lookup(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def parse(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def strip(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def styles(*args, **_arg1, &block); end + + # source://pastel//lib/pastel/delegator.rb#66 + def to_s; end + + # source://forwardable/1.3.3/forwardable.rb#231 + def undecorate(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def valid?(*args, **_arg1, &block); end + + protected + + # source://pastel//lib/pastel/delegator.rb#82 + def chain; end + + # source://pastel//lib/pastel/delegator.rb#112 + def evaluate_block(&block); end + + # source://pastel//lib/pastel/delegator.rb#89 + def method_missing(method_name, *args, &block); end + + # source://pastel//lib/pastel/delegator.rb#84 + def resolver; end + + private + + # source://pastel//lib/pastel/delegator.rb#104 + def respond_to_missing?(name, include_all = T.unsafe(nil)); end + + class << self + # source://pastel//lib/pastel/delegator.rb#25 + def wrap(resolver, chain = T.unsafe(nil)); end + end +end + +# source://pastel//lib/pastel/detached.rb#5 +class Pastel::Detached + # source://pastel//lib/pastel/detached.rb#14 + def initialize(color, *styles); end + + # source://pastel//lib/pastel/detached.rb#57 + def ==(other); end + + # source://pastel//lib/pastel/detached.rb#32 + def [](*args); end + + # source://pastel//lib/pastel/detached.rb#32 + def call(*args); end + + # source://pastel//lib/pastel/detached.rb#48 + def eql?(other); end + + # source://pastel//lib/pastel/detached.rb#75 + def hash; end + + # source://pastel//lib/pastel/detached.rb#66 + def inspect; end + + # source://pastel//lib/pastel/detached.rb#39 + def to_proc; end + + protected + + # source://pastel//lib/pastel/detached.rb#82 + def styles; end +end + +# source://pastel//lib/pastel.rb#16 +class Pastel::InvalidAliasNameError < ::ArgumentError; end + +# source://pastel//lib/pastel.rb#13 +class Pastel::InvalidAttributeNameError < ::ArgumentError; end + +# source://pastel//lib/pastel/version.rb#4 +Pastel::VERSION = T.let(T.unsafe(nil), String) diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/prism@1.4.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/prism@1.5.2.rbi similarity index 69% rename from tools/ruby-gems/udb/sorbet/rbi/gems/prism@1.4.0.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/prism@1.5.2.rbi index 902bae1c86..b54b7a2406 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/prism@1.4.0.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/prism@1.5.2.rbi @@ -29,24 +29,24 @@ module Parser; end class Parser::Base; end -# source://prism//lib/prism.rb#8 +# source://prism//lib/prism.rb#9 module Prism class << self def dump(*_arg0); end def dump_file(*_arg0); end def lex(*_arg0); end - # source://prism//lib/prism.rb#47 + # source://prism//lib/prism.rb#48 sig { params(source: String, options: T::Hash[Symbol, T.untyped]).returns(Prism::LexCompat::Result) } def lex_compat(source, **options); end def lex_file(*_arg0); end - # source://prism//lib/prism.rb#57 + # source://prism//lib/prism.rb#58 sig { params(source: String).returns(T::Array[T.untyped]) } def lex_ripper(source); end - # source://prism//lib/prism.rb#65 + # source://prism//lib/prism.rb#66 sig { params(source: String, serialized: String, freeze: T.nilable(T::Boolean)).returns(Prism::ParseResult) } def load(source, serialized, freeze = T.unsafe(nil)); end @@ -64,23 +64,23 @@ module Prism def profile(*_arg0); end def profile_file(*_arg0); end - # source://prism//lib/prism/parse_result.rb#907 + # source://prism//lib/prism/parse_result.rb#908 sig { params(locals: T::Array[Symbol], forwarding: T::Array[Symbol]).returns(Prism::Scope) } def scope(locals: T.unsafe(nil), forwarding: T.unsafe(nil)); end end end -# source://prism//lib/prism/parse_result.rb#253 +# source://prism//lib/prism/parse_result.rb#254 class Prism::ASCIISource < ::Prism::Source - # source://prism//lib/prism/parse_result.rb#260 + # source://prism//lib/prism/parse_result.rb#261 sig { params(byte_offset: Integer).returns(Integer) } def character_column(byte_offset); end - # source://prism//lib/prism/parse_result.rb#255 + # source://prism//lib/prism/parse_result.rb#256 sig { params(byte_offset: Integer).returns(Integer) } def character_offset(byte_offset); end - # source://prism//lib/prism/parse_result.rb#277 + # source://prism//lib/prism/parse_result.rb#278 sig do params( encoding: Encoding @@ -88,18 +88,18 @@ class Prism::ASCIISource < ::Prism::Source end def code_units_cache(encoding); end - # source://prism//lib/prism/parse_result.rb#284 + # source://prism//lib/prism/parse_result.rb#285 sig { params(byte_offset: Integer, encoding: Encoding).returns(Integer) } def code_units_column(byte_offset, encoding); end - # source://prism//lib/prism/parse_result.rb#270 + # source://prism//lib/prism/parse_result.rb#271 sig { params(byte_offset: Integer, encoding: Encoding).returns(Integer) } def code_units_offset(byte_offset, encoding); end end -# source://prism//lib/prism/node.rb#316 +# source://prism//lib/prism/node.rb#319 class Prism::AliasGlobalVariableNode < ::Prism::Node - # source://prism//lib/prism/node.rb#318 + # source://prism//lib/prism/node.rb#321 sig do params( source: Prism::Source, @@ -113,26 +113,26 @@ class Prism::AliasGlobalVariableNode < ::Prism::Node end def initialize(source, node_id, location, flags, new_name, old_name, keyword_loc); end - # source://prism//lib/prism/node.rb#411 + # source://prism//lib/prism/node.rb#414 def ===(other); end - # source://prism//lib/prism/node.rb#329 + # source://prism//lib/prism/node.rb#332 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#334 + # source://prism//lib/prism/node.rb#337 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#344 + # source://prism//lib/prism/node.rb#347 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#339 + # source://prism//lib/prism/node.rb#342 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#349 + # source://prism//lib/prism/node.rb#352 sig do params( node_id: Integer, @@ -145,55 +145,55 @@ class Prism::AliasGlobalVariableNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), new_name: T.unsafe(nil), old_name: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#334 + # source://prism//lib/prism/node.rb#337 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#357 + # source://prism//lib/prism/node.rb#360 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#395 + # source://prism//lib/prism/node.rb#398 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#390 + # source://prism//lib/prism/node.rb#393 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#377 + # source://prism//lib/prism/node.rb#380 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#365 + # source://prism//lib/prism/node.rb#368 sig { returns(T.any(Prism::GlobalVariableReadNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode)) } def new_name; end - # source://prism//lib/prism/node.rb#371 + # source://prism//lib/prism/node.rb#374 sig do returns(T.any(Prism::GlobalVariableReadNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::SymbolNode, Prism::MissingNode)) end def old_name; end - # source://prism//lib/prism/node.rb#385 + # source://prism//lib/prism/node.rb#388 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#400 + # source://prism//lib/prism/node.rb#403 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#405 + # source://prism//lib/prism/node.rb#408 def type; end end end -# source://prism//lib/prism/node.rb#423 +# source://prism//lib/prism/node.rb#426 class Prism::AliasMethodNode < ::Prism::Node - # source://prism//lib/prism/node.rb#425 + # source://prism//lib/prism/node.rb#428 sig do params( source: Prism::Source, @@ -207,26 +207,26 @@ class Prism::AliasMethodNode < ::Prism::Node end def initialize(source, node_id, location, flags, new_name, old_name, keyword_loc); end - # source://prism//lib/prism/node.rb#530 + # source://prism//lib/prism/node.rb#533 def ===(other); end - # source://prism//lib/prism/node.rb#436 + # source://prism//lib/prism/node.rb#439 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#441 + # source://prism//lib/prism/node.rb#444 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#451 + # source://prism//lib/prism/node.rb#454 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#446 + # source://prism//lib/prism/node.rb#449 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#456 + # source://prism//lib/prism/node.rb#459 sig do params( node_id: Integer, @@ -239,55 +239,55 @@ class Prism::AliasMethodNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), new_name: T.unsafe(nil), old_name: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#441 + # source://prism//lib/prism/node.rb#444 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#464 + # source://prism//lib/prism/node.rb#467 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#514 + # source://prism//lib/prism/node.rb#517 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#509 + # source://prism//lib/prism/node.rb#512 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#496 + # source://prism//lib/prism/node.rb#499 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#478 + # source://prism//lib/prism/node.rb#481 sig { returns(T.any(Prism::SymbolNode, Prism::InterpolatedSymbolNode)) } def new_name; end - # source://prism//lib/prism/node.rb#490 + # source://prism//lib/prism/node.rb#493 sig do returns(T.any(Prism::SymbolNode, Prism::InterpolatedSymbolNode, Prism::GlobalVariableReadNode, Prism::MissingNode)) end def old_name; end - # source://prism//lib/prism/node.rb#504 + # source://prism//lib/prism/node.rb#507 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#519 + # source://prism//lib/prism/node.rb#522 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#524 + # source://prism//lib/prism/node.rb#527 def type; end end end -# source://prism//lib/prism/node.rb#542 +# source://prism//lib/prism/node.rb#545 class Prism::AlternationPatternNode < ::Prism::Node - # source://prism//lib/prism/node.rb#544 + # source://prism//lib/prism/node.rb#547 sig do params( source: Prism::Source, @@ -301,26 +301,26 @@ class Prism::AlternationPatternNode < ::Prism::Node end def initialize(source, node_id, location, flags, left, right, operator_loc); end - # source://prism//lib/prism/node.rb#637 + # source://prism//lib/prism/node.rb#640 def ===(other); end - # source://prism//lib/prism/node.rb#555 + # source://prism//lib/prism/node.rb#558 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#560 + # source://prism//lib/prism/node.rb#563 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#570 + # source://prism//lib/prism/node.rb#573 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#565 + # source://prism//lib/prism/node.rb#568 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#575 + # source://prism//lib/prism/node.rb#578 sig do params( node_id: Integer, @@ -333,53 +333,53 @@ class Prism::AlternationPatternNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#560 + # source://prism//lib/prism/node.rb#563 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#583 + # source://prism//lib/prism/node.rb#586 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#621 + # source://prism//lib/prism/node.rb#624 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#591 + # source://prism//lib/prism/node.rb#594 sig { returns(Prism::Node) } def left; end - # source://prism//lib/prism/node.rb#616 + # source://prism//lib/prism/node.rb#619 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#603 + # source://prism//lib/prism/node.rb#606 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#597 + # source://prism//lib/prism/node.rb#600 sig { returns(Prism::Node) } def right; end - # source://prism//lib/prism/node.rb#611 + # source://prism//lib/prism/node.rb#614 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#626 + # source://prism//lib/prism/node.rb#629 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#631 + # source://prism//lib/prism/node.rb#634 def type; end end end -# source://prism//lib/prism/node.rb#649 +# source://prism//lib/prism/node.rb#652 class Prism::AndNode < ::Prism::Node - # source://prism//lib/prism/node.rb#651 + # source://prism//lib/prism/node.rb#654 sig do params( source: Prism::Source, @@ -393,26 +393,26 @@ class Prism::AndNode < ::Prism::Node end def initialize(source, node_id, location, flags, left, right, operator_loc); end - # source://prism//lib/prism/node.rb#750 + # source://prism//lib/prism/node.rb#753 def ===(other); end - # source://prism//lib/prism/node.rb#662 + # source://prism//lib/prism/node.rb#665 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#667 + # source://prism//lib/prism/node.rb#670 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#677 + # source://prism//lib/prism/node.rb#680 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#672 + # source://prism//lib/prism/node.rb#675 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#682 + # source://prism//lib/prism/node.rb#685 sig do params( node_id: Integer, @@ -425,53 +425,53 @@ class Prism::AndNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#667 + # source://prism//lib/prism/node.rb#670 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#690 + # source://prism//lib/prism/node.rb#693 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#734 + # source://prism//lib/prism/node.rb#737 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#701 + # source://prism//lib/prism/node.rb#704 sig { returns(Prism::Node) } def left; end - # source://prism//lib/prism/node.rb#729 + # source://prism//lib/prism/node.rb#732 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#716 + # source://prism//lib/prism/node.rb#719 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#710 + # source://prism//lib/prism/node.rb#713 sig { returns(Prism::Node) } def right; end - # source://prism//lib/prism/node.rb#724 + # source://prism//lib/prism/node.rb#727 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#739 + # source://prism//lib/prism/node.rb#742 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#744 + # source://prism//lib/prism/node.rb#747 def type; end end end -# source://prism//lib/prism/node.rb#762 +# source://prism//lib/prism/node.rb#765 class Prism::ArgumentsNode < ::Prism::Node - # source://prism//lib/prism/node.rb#764 + # source://prism//lib/prism/node.rb#767 sig do params( source: Prism::Source, @@ -483,50 +483,50 @@ class Prism::ArgumentsNode < ::Prism::Node end def initialize(source, node_id, location, flags, arguments); end - # source://prism//lib/prism/node.rb#853 + # source://prism//lib/prism/node.rb#856 def ===(other); end - # source://prism//lib/prism/node.rb#773 + # source://prism//lib/prism/node.rb#776 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#834 + # source://prism//lib/prism/node.rb#837 sig { returns(T::Array[Prism::Node]) } def arguments; end - # source://prism//lib/prism/node.rb#778 + # source://prism//lib/prism/node.rb#781 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#788 + # source://prism//lib/prism/node.rb#791 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#783 + # source://prism//lib/prism/node.rb#786 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#806 + # source://prism//lib/prism/node.rb#809 sig { returns(T::Boolean) } def contains_forwarding?; end - # source://prism//lib/prism/node.rb#816 + # source://prism//lib/prism/node.rb#819 sig { returns(T::Boolean) } def contains_keyword_splat?; end - # source://prism//lib/prism/node.rb#811 + # source://prism//lib/prism/node.rb#814 sig { returns(T::Boolean) } def contains_keywords?; end - # source://prism//lib/prism/node.rb#826 + # source://prism//lib/prism/node.rb#829 sig { returns(T::Boolean) } def contains_multiple_splats?; end - # source://prism//lib/prism/node.rb#821 + # source://prism//lib/prism/node.rb#824 sig { returns(T::Boolean) } def contains_splat?; end - # source://prism//lib/prism/node.rb#793 + # source://prism//lib/prism/node.rb#796 sig do params( node_id: Integer, @@ -537,53 +537,53 @@ class Prism::ArgumentsNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), arguments: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#778 + # source://prism//lib/prism/node.rb#781 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#801 + # source://prism//lib/prism/node.rb#804 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#837 + # source://prism//lib/prism/node.rb#840 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#842 + # source://prism//lib/prism/node.rb#845 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#847 + # source://prism//lib/prism/node.rb#850 def type; end end end -# source://prism//lib/prism/node.rb#18459 +# source://prism//lib/prism/node.rb#18630 # Flags for arguments nodes. module Prism::ArgumentsNodeFlags; end -# source://prism//lib/prism/node.rb#18461 +# source://prism//lib/prism/node.rb#18632 Prism::ArgumentsNodeFlags::CONTAINS_FORWARDING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18464 +# source://prism//lib/prism/node.rb#18635 Prism::ArgumentsNodeFlags::CONTAINS_KEYWORDS = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18467 +# source://prism//lib/prism/node.rb#18638 Prism::ArgumentsNodeFlags::CONTAINS_KEYWORD_SPLAT = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18473 +# source://prism//lib/prism/node.rb#18644 Prism::ArgumentsNodeFlags::CONTAINS_MULTIPLE_SPLATS = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18470 +# source://prism//lib/prism/node.rb#18641 Prism::ArgumentsNodeFlags::CONTAINS_SPLAT = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#865 +# source://prism//lib/prism/node.rb#868 class Prism::ArrayNode < ::Prism::Node - # source://prism//lib/prism/node.rb#867 + # source://prism//lib/prism/node.rb#870 sig do params( source: Prism::Source, @@ -597,38 +597,38 @@ class Prism::ArrayNode < ::Prism::Node end def initialize(source, node_id, location, flags, elements, opening_loc, closing_loc); end - # source://prism//lib/prism/node.rb#993 + # source://prism//lib/prism/node.rb#996 def ===(other); end - # source://prism//lib/prism/node.rb#878 + # source://prism//lib/prism/node.rb#881 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#883 + # source://prism//lib/prism/node.rb#886 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#972 + # source://prism//lib/prism/node.rb#975 sig { returns(T.nilable(String)) } def closing; end - # source://prism//lib/prism/node.rb#948 + # source://prism//lib/prism/node.rb#951 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end - # source://prism//lib/prism/node.rb#893 + # source://prism//lib/prism/node.rb#896 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#888 + # source://prism//lib/prism/node.rb#891 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#911 + # source://prism//lib/prism/node.rb#914 sig { returns(T::Boolean) } def contains_splat?; end - # source://prism//lib/prism/node.rb#898 + # source://prism//lib/prism/node.rb#901 sig do params( node_id: Integer, @@ -641,66 +641,66 @@ class Prism::ArrayNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), elements: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#883 + # source://prism//lib/prism/node.rb#886 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#906 + # source://prism//lib/prism/node.rb#909 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#916 + # source://prism//lib/prism/node.rb#919 sig { returns(T::Array[Prism::Node]) } def elements; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#977 + # source://prism//lib/prism/node.rb#980 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#967 + # source://prism//lib/prism/node.rb#970 sig { returns(T.nilable(String)) } def opening; end - # source://prism//lib/prism/node.rb#924 + # source://prism//lib/prism/node.rb#927 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end - # source://prism//lib/prism/node.rb#962 + # source://prism//lib/prism/node.rb#965 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#938 + # source://prism//lib/prism/node.rb#941 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#982 + # source://prism//lib/prism/node.rb#985 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#987 + # source://prism//lib/prism/node.rb#990 def type; end end end -# source://prism//lib/prism/node.rb#18477 +# source://prism//lib/prism/node.rb#18648 # Flags for array nodes. module Prism::ArrayNodeFlags; end -# source://prism//lib/prism/node.rb#18479 +# source://prism//lib/prism/node.rb#18650 Prism::ArrayNodeFlags::CONTAINS_SPLAT = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#1019 +# source://prism//lib/prism/node.rb#1022 class Prism::ArrayPatternNode < ::Prism::Node - # source://prism//lib/prism/node.rb#1021 + # source://prism//lib/prism/node.rb#1024 sig do params( source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), requireds: T::Array[Prism::Node], rest: T.nilable(Prism::Node), posts: T::Array[Prism::Node], @@ -710,44 +710,44 @@ class Prism::ArrayPatternNode < ::Prism::Node end def initialize(source, node_id, location, flags, constant, requireds, rest, posts, opening_loc, closing_loc); end - # source://prism//lib/prism/node.rb#1164 + # source://prism//lib/prism/node.rb#1176 def ===(other); end - # source://prism//lib/prism/node.rb#1035 + # source://prism//lib/prism/node.rb#1038 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#1040 + # source://prism//lib/prism/node.rb#1043 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#1143 + # source://prism//lib/prism/node.rb#1155 sig { returns(T.nilable(String)) } def closing; end - # source://prism//lib/prism/node.rb#1119 + # source://prism//lib/prism/node.rb#1131 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end - # source://prism//lib/prism/node.rb#1055 + # source://prism//lib/prism/node.rb#1058 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#1045 + # source://prism//lib/prism/node.rb#1048 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#1073 - sig { returns(T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode))) } + # source://prism//lib/prism/node.rb#1085 + sig { returns(T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode))) } def constant; end - # source://prism//lib/prism/node.rb#1060 + # source://prism//lib/prism/node.rb#1063 sig do params( node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), requireds: T::Array[Prism::Node], rest: T.nilable(Prism::Node), posts: T::Array[Prism::Node], @@ -757,60 +757,60 @@ class Prism::ArrayPatternNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), constant: T.unsafe(nil), requireds: T.unsafe(nil), rest: T.unsafe(nil), posts: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#1040 + # source://prism//lib/prism/node.rb#1043 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#1068 + # source://prism//lib/prism/node.rb#1071 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#1148 + # source://prism//lib/prism/node.rb#1160 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#1138 + # source://prism//lib/prism/node.rb#1150 sig { returns(T.nilable(String)) } def opening; end - # source://prism//lib/prism/node.rb#1097 + # source://prism//lib/prism/node.rb#1109 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end - # source://prism//lib/prism/node.rb#1091 + # source://prism//lib/prism/node.rb#1103 sig { returns(T::Array[Prism::Node]) } def posts; end - # source://prism//lib/prism/node.rb#1079 + # source://prism//lib/prism/node.rb#1091 sig { returns(T::Array[Prism::Node]) } def requireds; end - # source://prism//lib/prism/node.rb#1085 + # source://prism//lib/prism/node.rb#1097 sig { returns(T.nilable(Prism::Node)) } def rest; end - # source://prism//lib/prism/node.rb#1133 + # source://prism//lib/prism/node.rb#1145 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#1111 + # source://prism//lib/prism/node.rb#1123 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#1153 + # source://prism//lib/prism/node.rb#1165 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#1158 + # source://prism//lib/prism/node.rb#1170 def type; end end end -# source://prism//lib/prism/node.rb#1181 +# source://prism//lib/prism/node.rb#1193 class Prism::AssocNode < ::Prism::Node - # source://prism//lib/prism/node.rb#1183 + # source://prism//lib/prism/node.rb#1195 sig do params( source: Prism::Source, @@ -824,26 +824,26 @@ class Prism::AssocNode < ::Prism::Node end def initialize(source, node_id, location, flags, key, value, operator_loc); end - # source://prism//lib/prism/node.rb#1291 + # source://prism//lib/prism/node.rb#1303 def ===(other); end - # source://prism//lib/prism/node.rb#1194 + # source://prism//lib/prism/node.rb#1206 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#1199 + # source://prism//lib/prism/node.rb#1211 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#1209 + # source://prism//lib/prism/node.rb#1221 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#1204 + # source://prism//lib/prism/node.rb#1216 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#1214 + # source://prism//lib/prism/node.rb#1226 sig do params( node_id: Integer, @@ -856,53 +856,53 @@ class Prism::AssocNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), key: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#1199 + # source://prism//lib/prism/node.rb#1211 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#1222 + # source://prism//lib/prism/node.rb#1234 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#1275 + # source://prism//lib/prism/node.rb#1287 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#1236 + # source://prism//lib/prism/node.rb#1248 sig { returns(Prism::Node) } def key; end - # source://prism//lib/prism/node.rb#1270 + # source://prism//lib/prism/node.rb#1282 sig { returns(T.nilable(String)) } def operator; end - # source://prism//lib/prism/node.rb#1251 + # source://prism//lib/prism/node.rb#1263 sig { returns(T.nilable(Prism::Location)) } def operator_loc; end - # source://prism//lib/prism/node.rb#1265 + # source://prism//lib/prism/node.rb#1277 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#1280 + # source://prism//lib/prism/node.rb#1292 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#1245 + # source://prism//lib/prism/node.rb#1257 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#1285 + # source://prism//lib/prism/node.rb#1297 def type; end end end -# source://prism//lib/prism/node.rb#1303 +# source://prism//lib/prism/node.rb#1315 class Prism::AssocSplatNode < ::Prism::Node - # source://prism//lib/prism/node.rb#1305 + # source://prism//lib/prism/node.rb#1317 sig do params( source: Prism::Source, @@ -915,26 +915,26 @@ class Prism::AssocSplatNode < ::Prism::Node end def initialize(source, node_id, location, flags, value, operator_loc); end - # source://prism//lib/prism/node.rb#1393 + # source://prism//lib/prism/node.rb#1405 def ===(other); end - # source://prism//lib/prism/node.rb#1315 + # source://prism//lib/prism/node.rb#1327 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#1320 + # source://prism//lib/prism/node.rb#1332 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#1332 + # source://prism//lib/prism/node.rb#1344 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#1325 + # source://prism//lib/prism/node.rb#1337 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#1337 + # source://prism//lib/prism/node.rb#1349 sig do params( node_id: Integer, @@ -946,75 +946,75 @@ class Prism::AssocSplatNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#1320 + # source://prism//lib/prism/node.rb#1332 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#1345 + # source://prism//lib/prism/node.rb#1357 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#1377 + # source://prism//lib/prism/node.rb#1389 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#1372 + # source://prism//lib/prism/node.rb#1384 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#1359 + # source://prism//lib/prism/node.rb#1371 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#1367 + # source://prism//lib/prism/node.rb#1379 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#1382 + # source://prism//lib/prism/node.rb#1394 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#1353 + # source://prism//lib/prism/node.rb#1365 sig { returns(T.nilable(Prism::Node)) } def value; end class << self - # source://prism//lib/prism/node.rb#1387 + # source://prism//lib/prism/node.rb#1399 def type; end end end -# source://prism//lib/prism.rb#81 +# source://prism//lib/prism.rb#83 Prism::BACKEND = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/node.rb#1404 +# source://prism//lib/prism/node.rb#1416 class Prism::BackReferenceReadNode < ::Prism::Node - # source://prism//lib/prism/node.rb#1406 + # source://prism//lib/prism/node.rb#1418 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end - # source://prism//lib/prism/node.rb#1471 + # source://prism//lib/prism/node.rb#1483 def ===(other); end - # source://prism//lib/prism/node.rb#1415 + # source://prism//lib/prism/node.rb#1427 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#1420 + # source://prism//lib/prism/node.rb#1432 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#1430 + # source://prism//lib/prism/node.rb#1442 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#1425 + # source://prism//lib/prism/node.rb#1437 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#1435 + # source://prism//lib/prism/node.rb#1447 sig do params( node_id: Integer, @@ -1025,53 +1025,53 @@ class Prism::BackReferenceReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#1420 + # source://prism//lib/prism/node.rb#1432 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#1443 + # source://prism//lib/prism/node.rb#1455 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#1455 + # source://prism//lib/prism/node.rb#1467 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#1452 + # source://prism//lib/prism/node.rb#1464 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#1460 + # source://prism//lib/prism/node.rb#1472 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#1465 + # source://prism//lib/prism/node.rb#1477 def type; end end end -# source://prism//lib/prism/visitor.rb#14 +# source://prism//lib/prism/visitor.rb#17 class Prism::BasicVisitor - # source://prism//lib/prism/visitor.rb#17 + # source://prism//lib/prism/visitor.rb#20 sig { params(node: T.nilable(Prism::Node)).void } def visit(node); end - # source://prism//lib/prism/visitor.rb#23 + # source://prism//lib/prism/visitor.rb#26 sig { params(nodes: T::Array[T.nilable(Prism::Node)]).void } def visit_all(nodes); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#32 sig { params(node: Prism::Node).void } def visit_child_nodes(node); end end -# source://prism//lib/prism/node.rb#1483 +# source://prism//lib/prism/node.rb#1495 class Prism::BeginNode < ::Prism::Node - # source://prism//lib/prism/node.rb#1485 + # source://prism//lib/prism/node.rb#1497 sig do params( source: Prism::Source, @@ -1088,34 +1088,34 @@ class Prism::BeginNode < ::Prism::Node end def initialize(source, node_id, location, flags, begin_keyword_loc, statements, rescue_clause, else_clause, ensure_clause, end_keyword_loc); end - # source://prism//lib/prism/node.rb#1631 + # source://prism//lib/prism/node.rb#1643 def ===(other); end - # source://prism//lib/prism/node.rb#1499 + # source://prism//lib/prism/node.rb#1511 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#1605 + # source://prism//lib/prism/node.rb#1617 sig { returns(T.nilable(String)) } def begin_keyword; end - # source://prism//lib/prism/node.rb#1540 + # source://prism//lib/prism/node.rb#1552 sig { returns(T.nilable(Prism::Location)) } def begin_keyword_loc; end - # source://prism//lib/prism/node.rb#1504 + # source://prism//lib/prism/node.rb#1516 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#1519 + # source://prism//lib/prism/node.rb#1531 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#1509 + # source://prism//lib/prism/node.rb#1521 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#1524 + # source://prism//lib/prism/node.rb#1536 sig do params( node_id: Integer, @@ -1131,67 +1131,67 @@ class Prism::BeginNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), begin_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), rescue_clause: T.unsafe(nil), else_clause: T.unsafe(nil), ensure_clause: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#1504 + # source://prism//lib/prism/node.rb#1516 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#1532 + # source://prism//lib/prism/node.rb#1544 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#1574 + # source://prism//lib/prism/node.rb#1586 sig { returns(T.nilable(Prism::ElseNode)) } def else_clause; end - # source://prism//lib/prism/node.rb#1610 + # source://prism//lib/prism/node.rb#1622 sig { returns(T.nilable(String)) } def end_keyword; end - # source://prism//lib/prism/node.rb#1586 + # source://prism//lib/prism/node.rb#1598 sig { returns(T.nilable(Prism::Location)) } def end_keyword_loc; end - # source://prism//lib/prism/node.rb#1580 + # source://prism//lib/prism/node.rb#1592 sig { returns(T.nilable(Prism::EnsureNode)) } def ensure_clause; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#1615 + # source://prism//lib/prism/node.rb#1627 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/parse_result/newlines.rb#79 + # source://prism//lib/prism/parse_result/newlines.rb#80 def newline_flag!(lines); end - # source://prism//lib/prism/node.rb#1568 + # source://prism//lib/prism/node.rb#1580 sig { returns(T.nilable(Prism::RescueNode)) } def rescue_clause; end - # source://prism//lib/prism/node.rb#1554 + # source://prism//lib/prism/node.rb#1566 def save_begin_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#1600 + # source://prism//lib/prism/node.rb#1612 def save_end_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#1562 + # source://prism//lib/prism/node.rb#1574 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#1620 + # source://prism//lib/prism/node.rb#1632 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#1625 + # source://prism//lib/prism/node.rb#1637 def type; end end end -# source://prism//lib/prism/node.rb#1646 +# source://prism//lib/prism/node.rb#1658 class Prism::BlockArgumentNode < ::Prism::Node - # source://prism//lib/prism/node.rb#1648 + # source://prism//lib/prism/node.rb#1660 sig do params( source: Prism::Source, @@ -1204,26 +1204,26 @@ class Prism::BlockArgumentNode < ::Prism::Node end def initialize(source, node_id, location, flags, expression, operator_loc); end - # source://prism//lib/prism/node.rb#1736 + # source://prism//lib/prism/node.rb#1748 def ===(other); end - # source://prism//lib/prism/node.rb#1658 + # source://prism//lib/prism/node.rb#1670 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#1663 + # source://prism//lib/prism/node.rb#1675 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#1675 + # source://prism//lib/prism/node.rb#1687 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#1668 + # source://prism//lib/prism/node.rb#1680 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#1680 + # source://prism//lib/prism/node.rb#1692 sig do params( node_id: Integer, @@ -1235,72 +1235,72 @@ class Prism::BlockArgumentNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), expression: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#1663 + # source://prism//lib/prism/node.rb#1675 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#1688 + # source://prism//lib/prism/node.rb#1700 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#1696 + # source://prism//lib/prism/node.rb#1708 sig { returns(T.nilable(Prism::Node)) } def expression; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#1720 + # source://prism//lib/prism/node.rb#1732 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#1715 + # source://prism//lib/prism/node.rb#1727 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#1702 + # source://prism//lib/prism/node.rb#1714 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#1710 + # source://prism//lib/prism/node.rb#1722 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#1725 + # source://prism//lib/prism/node.rb#1737 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#1730 + # source://prism//lib/prism/node.rb#1742 def type; end end end -# source://prism//lib/prism/node.rb#1747 +# source://prism//lib/prism/node.rb#1759 class Prism::BlockLocalVariableNode < ::Prism::Node - # source://prism//lib/prism/node.rb#1749 + # source://prism//lib/prism/node.rb#1761 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end - # source://prism//lib/prism/node.rb#1818 + # source://prism//lib/prism/node.rb#1830 def ===(other); end - # source://prism//lib/prism/node.rb#1758 + # source://prism//lib/prism/node.rb#1770 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#1763 + # source://prism//lib/prism/node.rb#1775 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#1773 + # source://prism//lib/prism/node.rb#1785 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#1768 + # source://prism//lib/prism/node.rb#1780 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#1778 + # source://prism//lib/prism/node.rb#1790 sig do params( node_id: Integer, @@ -1311,42 +1311,42 @@ class Prism::BlockLocalVariableNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#1763 + # source://prism//lib/prism/node.rb#1775 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#1786 + # source://prism//lib/prism/node.rb#1798 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#1802 + # source://prism//lib/prism/node.rb#1814 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#1799 + # source://prism//lib/prism/node.rb#1811 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#1791 + # source://prism//lib/prism/node.rb#1803 sig { returns(T::Boolean) } def repeated_parameter?; end - # source://prism//lib/prism/node.rb#1807 + # source://prism//lib/prism/node.rb#1819 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#1812 + # source://prism//lib/prism/node.rb#1824 def type; end end end -# source://prism//lib/prism/node.rb#1829 +# source://prism//lib/prism/node.rb#1841 class Prism::BlockNode < ::Prism::Node - # source://prism//lib/prism/node.rb#1831 + # source://prism//lib/prism/node.rb#1843 sig do params( source: Prism::Source, @@ -1362,38 +1362,38 @@ class Prism::BlockNode < ::Prism::Node end def initialize(source, node_id, location, flags, locals, parameters, body, opening_loc, closing_loc); end - # source://prism//lib/prism/node.rb#1960 + # source://prism//lib/prism/node.rb#1972 def ===(other); end - # source://prism//lib/prism/node.rb#1844 + # source://prism//lib/prism/node.rb#1856 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#1899 + # source://prism//lib/prism/node.rb#1911 sig { returns(T.nilable(T.any(Prism::StatementsNode, Prism::BeginNode))) } def body; end - # source://prism//lib/prism/node.rb#1849 + # source://prism//lib/prism/node.rb#1861 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#1939 + # source://prism//lib/prism/node.rb#1951 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#1921 + # source://prism//lib/prism/node.rb#1933 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#1862 + # source://prism//lib/prism/node.rb#1874 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#1854 + # source://prism//lib/prism/node.rb#1866 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#1867 + # source://prism//lib/prism/node.rb#1879 sig do params( node_id: Integer, @@ -1408,56 +1408,56 @@ class Prism::BlockNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), parameters: T.unsafe(nil), body: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#1849 + # source://prism//lib/prism/node.rb#1861 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#1875 + # source://prism//lib/prism/node.rb#1887 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#1944 + # source://prism//lib/prism/node.rb#1956 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#1883 + # source://prism//lib/prism/node.rb#1895 sig { returns(T::Array[Symbol]) } def locals; end - # source://prism//lib/prism/node.rb#1934 + # source://prism//lib/prism/node.rb#1946 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#1905 + # source://prism//lib/prism/node.rb#1917 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node.rb#1893 + # source://prism//lib/prism/node.rb#1905 sig { returns(T.nilable(T.any(Prism::BlockParametersNode, Prism::NumberedParametersNode, Prism::ItParametersNode))) } def parameters; end - # source://prism//lib/prism/node.rb#1929 + # source://prism//lib/prism/node.rb#1941 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#1913 + # source://prism//lib/prism/node.rb#1925 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#1949 + # source://prism//lib/prism/node.rb#1961 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#1954 + # source://prism//lib/prism/node.rb#1966 def type; end end end -# source://prism//lib/prism/node.rb#1976 +# source://prism//lib/prism/node.rb#1988 class Prism::BlockParameterNode < ::Prism::Node - # source://prism//lib/prism/node.rb#1978 + # source://prism//lib/prism/node.rb#1990 sig do params( source: Prism::Source, @@ -1471,26 +1471,26 @@ class Prism::BlockParameterNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, operator_loc); end - # source://prism//lib/prism/node.rb#2094 + # source://prism//lib/prism/node.rb#2106 def ===(other); end - # source://prism//lib/prism/node.rb#1989 + # source://prism//lib/prism/node.rb#2001 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#1994 + # source://prism//lib/prism/node.rb#2006 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#2004 + # source://prism//lib/prism/node.rb#2016 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#1999 + # source://prism//lib/prism/node.rb#2011 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#2009 + # source://prism//lib/prism/node.rb#2021 sig do params( node_id: Integer, @@ -1503,60 +1503,60 @@ class Prism::BlockParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#1994 + # source://prism//lib/prism/node.rb#2006 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#2017 + # source://prism//lib/prism/node.rb#2029 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#2078 + # source://prism//lib/prism/node.rb#2090 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#2031 + # source://prism//lib/prism/node.rb#2043 sig { returns(T.nilable(Symbol)) } def name; end - # source://prism//lib/prism/node.rb#2037 + # source://prism//lib/prism/node.rb#2049 sig { returns(T.nilable(Prism::Location)) } def name_loc; end - # source://prism//lib/prism/node.rb#2073 + # source://prism//lib/prism/node.rb#2085 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#2060 + # source://prism//lib/prism/node.rb#2072 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#2022 + # source://prism//lib/prism/node.rb#2034 sig { returns(T::Boolean) } def repeated_parameter?; end - # source://prism//lib/prism/node.rb#2051 + # source://prism//lib/prism/node.rb#2063 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#2068 + # source://prism//lib/prism/node.rb#2080 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#2083 + # source://prism//lib/prism/node.rb#2095 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#2088 + # source://prism//lib/prism/node.rb#2100 def type; end end end -# source://prism//lib/prism/node.rb#2111 +# source://prism//lib/prism/node.rb#2123 class Prism::BlockParametersNode < ::Prism::Node - # source://prism//lib/prism/node.rb#2113 + # source://prism//lib/prism/node.rb#2125 sig do params( source: Prism::Source, @@ -1571,34 +1571,34 @@ class Prism::BlockParametersNode < ::Prism::Node end def initialize(source, node_id, location, flags, parameters, locals, opening_loc, closing_loc); end - # source://prism//lib/prism/node.rb#2259 + # source://prism//lib/prism/node.rb#2271 def ===(other); end - # source://prism//lib/prism/node.rb#2125 + # source://prism//lib/prism/node.rb#2137 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#2130 + # source://prism//lib/prism/node.rb#2142 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#2238 + # source://prism//lib/prism/node.rb#2250 sig { returns(T.nilable(String)) } def closing; end - # source://prism//lib/prism/node.rb#2214 + # source://prism//lib/prism/node.rb#2226 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end - # source://prism//lib/prism/node.rb#2143 + # source://prism//lib/prism/node.rb#2155 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#2135 + # source://prism//lib/prism/node.rb#2147 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#2148 + # source://prism//lib/prism/node.rb#2160 sig do params( node_id: Integer, @@ -1612,56 +1612,56 @@ class Prism::BlockParametersNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), parameters: T.unsafe(nil), locals: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#2130 + # source://prism//lib/prism/node.rb#2142 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#2156 + # source://prism//lib/prism/node.rb#2168 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#2243 + # source://prism//lib/prism/node.rb#2255 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#2178 + # source://prism//lib/prism/node.rb#2190 sig { returns(T::Array[Prism::BlockLocalVariableNode]) } def locals; end - # source://prism//lib/prism/node.rb#2233 + # source://prism//lib/prism/node.rb#2245 sig { returns(T.nilable(String)) } def opening; end - # source://prism//lib/prism/node.rb#2188 + # source://prism//lib/prism/node.rb#2200 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end - # source://prism//lib/prism/node.rb#2168 + # source://prism//lib/prism/node.rb#2180 sig { returns(T.nilable(Prism::ParametersNode)) } def parameters; end - # source://prism//lib/prism/node.rb#2228 + # source://prism//lib/prism/node.rb#2240 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#2202 + # source://prism//lib/prism/node.rb#2214 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#2248 + # source://prism//lib/prism/node.rb#2260 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#2253 + # source://prism//lib/prism/node.rb#2265 def type; end end end -# source://prism//lib/prism/node.rb#2273 +# source://prism//lib/prism/node.rb#2285 class Prism::BreakNode < ::Prism::Node - # source://prism//lib/prism/node.rb#2275 + # source://prism//lib/prism/node.rb#2287 sig do params( source: Prism::Source, @@ -1674,30 +1674,30 @@ class Prism::BreakNode < ::Prism::Node end def initialize(source, node_id, location, flags, arguments, keyword_loc); end - # source://prism//lib/prism/node.rb#2363 + # source://prism//lib/prism/node.rb#2375 def ===(other); end - # source://prism//lib/prism/node.rb#2285 + # source://prism//lib/prism/node.rb#2297 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#2323 + # source://prism//lib/prism/node.rb#2335 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # source://prism//lib/prism/node.rb#2290 + # source://prism//lib/prism/node.rb#2302 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#2302 + # source://prism//lib/prism/node.rb#2314 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#2295 + # source://prism//lib/prism/node.rb#2307 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#2307 + # source://prism//lib/prism/node.rb#2319 sig do params( node_id: Integer, @@ -1709,45 +1709,45 @@ class Prism::BreakNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), arguments: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#2290 + # source://prism//lib/prism/node.rb#2302 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#2315 + # source://prism//lib/prism/node.rb#2327 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#2347 + # source://prism//lib/prism/node.rb#2359 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#2342 + # source://prism//lib/prism/node.rb#2354 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#2329 + # source://prism//lib/prism/node.rb#2341 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#2337 + # source://prism//lib/prism/node.rb#2349 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#2352 + # source://prism//lib/prism/node.rb#2364 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#2357 + # source://prism//lib/prism/node.rb#2369 def type; end end end -# source://prism//lib/prism/node.rb#2374 +# source://prism//lib/prism/node.rb#2386 class Prism::CallAndWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#2376 + # source://prism//lib/prism/node.rb#2388 sig do params( source: Prism::Source, @@ -1765,38 +1765,38 @@ class Prism::CallAndWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, receiver, call_operator_loc, message_loc, read_name, write_name, operator_loc, value); end - # source://prism//lib/prism/node.rb#2562 + # source://prism//lib/prism/node.rb#2574 def ===(other); end - # source://prism//lib/prism/node.rb#2391 + # source://prism//lib/prism/node.rb#2403 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#2437 + # source://prism//lib/prism/node.rb#2449 sig { returns(T::Boolean) } def attribute_write?; end - # source://prism//lib/prism/node.rb#2531 + # source://prism//lib/prism/node.rb#2543 sig { returns(T.nilable(String)) } def call_operator; end - # source://prism//lib/prism/node.rb#2456 + # source://prism//lib/prism/node.rb#2468 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # source://prism//lib/prism/node.rb#2396 + # source://prism//lib/prism/node.rb#2408 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#2409 + # source://prism//lib/prism/node.rb#2421 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#2401 + # source://prism//lib/prism/node.rb#2413 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#2414 + # source://prism//lib/prism/node.rb#2426 sig do params( node_id: Integer, @@ -1813,87 +1813,87 @@ class Prism::CallAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), message_loc: T.unsafe(nil), read_name: T.unsafe(nil), write_name: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#2396 + # source://prism//lib/prism/node.rb#2408 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#2422 + # source://prism//lib/prism/node.rb#2434 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#2442 + # source://prism//lib/prism/node.rb#2454 sig { returns(T::Boolean) } def ignore_visibility?; end - # source://prism//lib/prism/node.rb#2546 + # source://prism//lib/prism/node.rb#2558 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#2536 + # source://prism//lib/prism/node.rb#2548 sig { returns(T.nilable(String)) } def message; end - # source://prism//lib/prism/node.rb#2478 + # source://prism//lib/prism/node.rb#2490 sig { returns(T.nilable(Prism::Location)) } def message_loc; end - # source://prism//lib/prism/node.rb#2541 + # source://prism//lib/prism/node.rb#2553 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#2512 + # source://prism//lib/prism/node.rb#2524 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#2500 + # source://prism//lib/prism/node.rb#2512 sig { returns(Symbol) } def read_name; end - # source://prism//lib/prism/node.rb#2450 + # source://prism//lib/prism/node.rb#2462 sig { returns(T.nilable(Prism::Node)) } def receiver; end - # source://prism//lib/prism/node.rb#2427 + # source://prism//lib/prism/node.rb#2439 sig { returns(T::Boolean) } def safe_navigation?; end - # source://prism//lib/prism/node.rb#2470 + # source://prism//lib/prism/node.rb#2482 def save_call_operator_loc(repository); end - # source://prism//lib/prism/node.rb#2492 + # source://prism//lib/prism/node.rb#2504 def save_message_loc(repository); end - # source://prism//lib/prism/node.rb#2520 + # source://prism//lib/prism/node.rb#2532 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#2551 + # source://prism//lib/prism/node.rb#2563 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#2528 + # source://prism//lib/prism/node.rb#2540 sig { returns(Prism::Node) } def value; end - # source://prism//lib/prism/node.rb#2432 + # source://prism//lib/prism/node.rb#2444 sig { returns(T::Boolean) } def variable_call?; end - # source://prism//lib/prism/node.rb#2506 + # source://prism//lib/prism/node.rb#2518 sig { returns(Symbol) } def write_name; end class << self - # source://prism//lib/prism/node.rb#2556 + # source://prism//lib/prism/node.rb#2568 def type; end end end -# source://prism//lib/prism/node.rb#2594 +# source://prism//lib/prism/node.rb#2606 class Prism::CallNode < ::Prism::Node - # source://prism//lib/prism/node.rb#2596 + # source://prism//lib/prism/node.rb#2608 sig do params( source: Prism::Source, @@ -1912,54 +1912,54 @@ class Prism::CallNode < ::Prism::Node end def initialize(source, node_id, location, flags, receiver, call_operator_loc, name, message_loc, opening_loc, arguments, closing_loc, block); end - # source://prism//lib/prism/node.rb#2825 + # source://prism//lib/prism/node.rb#2837 def ===(other); end - # source://prism//lib/prism/node.rb#2612 + # source://prism//lib/prism/node.rb#2624 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#2758 + # source://prism//lib/prism/node.rb#2770 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # source://prism//lib/prism/node.rb#2659 + # source://prism//lib/prism/node.rb#2671 sig { returns(T::Boolean) } def attribute_write?; end - # source://prism//lib/prism/node.rb#2786 + # source://prism//lib/prism/node.rb#2798 sig { returns(T.nilable(T.any(Prism::BlockNode, Prism::BlockArgumentNode))) } def block; end - # source://prism//lib/prism/node.rb#2789 + # source://prism//lib/prism/node.rb#2801 sig { returns(T.nilable(String)) } def call_operator; end - # source://prism//lib/prism/node.rb#2687 + # source://prism//lib/prism/node.rb#2699 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # source://prism//lib/prism/node.rb#2617 + # source://prism//lib/prism/node.rb#2629 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#2804 + # source://prism//lib/prism/node.rb#2816 sig { returns(T.nilable(String)) } def closing; end - # source://prism//lib/prism/node.rb#2764 + # source://prism//lib/prism/node.rb#2776 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end - # source://prism//lib/prism/node.rb#2631 + # source://prism//lib/prism/node.rb#2643 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#2622 + # source://prism//lib/prism/node.rb#2634 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#2636 + # source://prism//lib/prism/node.rb#2648 sig do params( node_id: Integer, @@ -1977,102 +1977,102 @@ class Prism::CallNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), name: T.unsafe(nil), message_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#2617 + # source://prism//lib/prism/node.rb#2629 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#2644 + # source://prism//lib/prism/node.rb#2656 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node_ext.rb#331 + # source://prism//lib/prism/node_ext.rb#334 sig { returns(T.nilable(Prism::Location)) } def full_message_loc; end - # source://prism//lib/prism/node.rb#2664 + # source://prism//lib/prism/node.rb#2676 sig { returns(T::Boolean) } def ignore_visibility?; end - # source://prism//lib/prism/node.rb#2809 + # source://prism//lib/prism/node.rb#2821 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#2794 + # source://prism//lib/prism/node.rb#2806 sig { returns(T.nilable(String)) } def message; end - # source://prism//lib/prism/node.rb#2715 + # source://prism//lib/prism/node.rb#2727 sig { returns(T.nilable(Prism::Location)) } def message_loc; end - # source://prism//lib/prism/node.rb#2709 + # source://prism//lib/prism/node.rb#2721 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#2799 + # source://prism//lib/prism/node.rb#2811 sig { returns(T.nilable(String)) } def opening; end - # source://prism//lib/prism/node.rb#2736 + # source://prism//lib/prism/node.rb#2748 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end - # source://prism//lib/prism/node.rb#2678 + # source://prism//lib/prism/node.rb#2690 sig { returns(T.nilable(Prism::Node)) } def receiver; end - # source://prism//lib/prism/node.rb#2649 + # source://prism//lib/prism/node.rb#2661 sig { returns(T::Boolean) } def safe_navigation?; end - # source://prism//lib/prism/node.rb#2701 + # source://prism//lib/prism/node.rb#2713 def save_call_operator_loc(repository); end - # source://prism//lib/prism/node.rb#2778 + # source://prism//lib/prism/node.rb#2790 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#2729 + # source://prism//lib/prism/node.rb#2741 def save_message_loc(repository); end - # source://prism//lib/prism/node.rb#2750 + # source://prism//lib/prism/node.rb#2762 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#2814 + # source://prism//lib/prism/node.rb#2826 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#2654 + # source://prism//lib/prism/node.rb#2666 sig { returns(T::Boolean) } def variable_call?; end class << self - # source://prism//lib/prism/node.rb#2819 + # source://prism//lib/prism/node.rb#2831 def type; end end end -# source://prism//lib/prism/node.rb#18483 +# source://prism//lib/prism/node.rb#18654 # Flags for call nodes. module Prism::CallNodeFlags; end -# source://prism//lib/prism/node.rb#18491 +# source://prism//lib/prism/node.rb#18662 Prism::CallNodeFlags::ATTRIBUTE_WRITE = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18494 +# source://prism//lib/prism/node.rb#18665 Prism::CallNodeFlags::IGNORE_VISIBILITY = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18485 +# source://prism//lib/prism/node.rb#18656 Prism::CallNodeFlags::SAFE_NAVIGATION = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18488 +# source://prism//lib/prism/node.rb#18659 Prism::CallNodeFlags::VARIABLE_CALL = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#2843 +# source://prism//lib/prism/node.rb#2855 class Prism::CallOperatorWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#2845 + # source://prism//lib/prism/node.rb#2857 sig do params( source: Prism::Source, @@ -2091,46 +2091,46 @@ class Prism::CallOperatorWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, receiver, call_operator_loc, message_loc, read_name, write_name, binary_operator, binary_operator_loc, value); end - # source://prism//lib/prism/node.rb#3033 + # source://prism//lib/prism/node.rb#3045 def ===(other); end - # source://prism//lib/prism/node.rb#2861 + # source://prism//lib/prism/node.rb#2873 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#2907 + # source://prism//lib/prism/node.rb#2919 sig { returns(T::Boolean) } def attribute_write?; end - # source://prism//lib/prism/node.rb#2982 + # source://prism//lib/prism/node.rb#2994 sig { returns(Symbol) } def binary_operator; end - # source://prism//lib/prism/node.rb#2988 + # source://prism//lib/prism/node.rb#3000 sig { returns(Prism::Location) } def binary_operator_loc; end - # source://prism//lib/prism/node.rb#3007 + # source://prism//lib/prism/node.rb#3019 sig { returns(T.nilable(String)) } def call_operator; end - # source://prism//lib/prism/node.rb#2926 + # source://prism//lib/prism/node.rb#2938 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # source://prism//lib/prism/node.rb#2866 + # source://prism//lib/prism/node.rb#2878 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#2879 + # source://prism//lib/prism/node.rb#2891 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#2871 + # source://prism//lib/prism/node.rb#2883 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#2884 + # source://prism//lib/prism/node.rb#2896 sig do params( node_id: Integer, @@ -2148,85 +2148,85 @@ class Prism::CallOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), message_loc: T.unsafe(nil), read_name: T.unsafe(nil), write_name: T.unsafe(nil), binary_operator: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#2866 + # source://prism//lib/prism/node.rb#2878 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#2892 + # source://prism//lib/prism/node.rb#2904 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#2912 + # source://prism//lib/prism/node.rb#2924 sig { returns(T::Boolean) } def ignore_visibility?; end - # source://prism//lib/prism/node.rb#3017 + # source://prism//lib/prism/node.rb#3029 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#3012 + # source://prism//lib/prism/node.rb#3024 sig { returns(T.nilable(String)) } def message; end - # source://prism//lib/prism/node.rb#2948 + # source://prism//lib/prism/node.rb#2960 sig { returns(T.nilable(Prism::Location)) } def message_loc; end - # source://prism//lib/prism/node_ext.rb#339 + # source://prism//lib/prism/node_ext.rb#342 def operator; end - # source://prism//lib/prism/node_ext.rb#346 + # source://prism//lib/prism/node_ext.rb#349 def operator_loc; end - # source://prism//lib/prism/node.rb#2970 + # source://prism//lib/prism/node.rb#2982 sig { returns(Symbol) } def read_name; end - # source://prism//lib/prism/node.rb#2920 + # source://prism//lib/prism/node.rb#2932 sig { returns(T.nilable(Prism::Node)) } def receiver; end - # source://prism//lib/prism/node.rb#2897 + # source://prism//lib/prism/node.rb#2909 sig { returns(T::Boolean) } def safe_navigation?; end - # source://prism//lib/prism/node.rb#2996 + # source://prism//lib/prism/node.rb#3008 def save_binary_operator_loc(repository); end - # source://prism//lib/prism/node.rb#2940 + # source://prism//lib/prism/node.rb#2952 def save_call_operator_loc(repository); end - # source://prism//lib/prism/node.rb#2962 + # source://prism//lib/prism/node.rb#2974 def save_message_loc(repository); end - # source://prism//lib/prism/node.rb#3022 + # source://prism//lib/prism/node.rb#3034 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#3004 + # source://prism//lib/prism/node.rb#3016 sig { returns(Prism::Node) } def value; end - # source://prism//lib/prism/node.rb#2902 + # source://prism//lib/prism/node.rb#2914 sig { returns(T::Boolean) } def variable_call?; end - # source://prism//lib/prism/node.rb#2976 + # source://prism//lib/prism/node.rb#2988 sig { returns(Symbol) } def write_name; end class << self - # source://prism//lib/prism/node.rb#3027 + # source://prism//lib/prism/node.rb#3039 def type; end end end -# source://prism//lib/prism/node.rb#3051 +# source://prism//lib/prism/node.rb#3063 class Prism::CallOrWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#3053 + # source://prism//lib/prism/node.rb#3065 sig do params( source: Prism::Source, @@ -2244,38 +2244,38 @@ class Prism::CallOrWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, receiver, call_operator_loc, message_loc, read_name, write_name, operator_loc, value); end - # source://prism//lib/prism/node.rb#3239 + # source://prism//lib/prism/node.rb#3251 def ===(other); end - # source://prism//lib/prism/node.rb#3068 + # source://prism//lib/prism/node.rb#3080 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#3114 + # source://prism//lib/prism/node.rb#3126 sig { returns(T::Boolean) } def attribute_write?; end - # source://prism//lib/prism/node.rb#3208 + # source://prism//lib/prism/node.rb#3220 sig { returns(T.nilable(String)) } def call_operator; end - # source://prism//lib/prism/node.rb#3133 + # source://prism//lib/prism/node.rb#3145 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # source://prism//lib/prism/node.rb#3073 + # source://prism//lib/prism/node.rb#3085 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#3086 + # source://prism//lib/prism/node.rb#3098 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#3078 + # source://prism//lib/prism/node.rb#3090 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#3091 + # source://prism//lib/prism/node.rb#3103 sig do params( node_id: Integer, @@ -2292,87 +2292,87 @@ class Prism::CallOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), message_loc: T.unsafe(nil), read_name: T.unsafe(nil), write_name: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#3073 + # source://prism//lib/prism/node.rb#3085 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#3099 + # source://prism//lib/prism/node.rb#3111 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#3119 + # source://prism//lib/prism/node.rb#3131 sig { returns(T::Boolean) } def ignore_visibility?; end - # source://prism//lib/prism/node.rb#3223 + # source://prism//lib/prism/node.rb#3235 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#3213 + # source://prism//lib/prism/node.rb#3225 sig { returns(T.nilable(String)) } def message; end - # source://prism//lib/prism/node.rb#3155 + # source://prism//lib/prism/node.rb#3167 sig { returns(T.nilable(Prism::Location)) } def message_loc; end - # source://prism//lib/prism/node.rb#3218 + # source://prism//lib/prism/node.rb#3230 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#3189 + # source://prism//lib/prism/node.rb#3201 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#3177 + # source://prism//lib/prism/node.rb#3189 sig { returns(Symbol) } def read_name; end - # source://prism//lib/prism/node.rb#3127 + # source://prism//lib/prism/node.rb#3139 sig { returns(T.nilable(Prism::Node)) } def receiver; end - # source://prism//lib/prism/node.rb#3104 + # source://prism//lib/prism/node.rb#3116 sig { returns(T::Boolean) } def safe_navigation?; end - # source://prism//lib/prism/node.rb#3147 + # source://prism//lib/prism/node.rb#3159 def save_call_operator_loc(repository); end - # source://prism//lib/prism/node.rb#3169 + # source://prism//lib/prism/node.rb#3181 def save_message_loc(repository); end - # source://prism//lib/prism/node.rb#3197 + # source://prism//lib/prism/node.rb#3209 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#3228 + # source://prism//lib/prism/node.rb#3240 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#3205 + # source://prism//lib/prism/node.rb#3217 sig { returns(Prism::Node) } def value; end - # source://prism//lib/prism/node.rb#3109 + # source://prism//lib/prism/node.rb#3121 sig { returns(T::Boolean) } def variable_call?; end - # source://prism//lib/prism/node.rb#3183 + # source://prism//lib/prism/node.rb#3195 sig { returns(Symbol) } def write_name; end class << self - # source://prism//lib/prism/node.rb#3233 + # source://prism//lib/prism/node.rb#3245 def type; end end end -# source://prism//lib/prism/node.rb#3264 +# source://prism//lib/prism/node.rb#3276 class Prism::CallTargetNode < ::Prism::Node - # source://prism//lib/prism/node.rb#3266 + # source://prism//lib/prism/node.rb#3278 sig do params( source: Prism::Source, @@ -2387,38 +2387,38 @@ class Prism::CallTargetNode < ::Prism::Node end def initialize(source, node_id, location, flags, receiver, call_operator_loc, name, message_loc); end - # source://prism//lib/prism/node.rb#3401 + # source://prism//lib/prism/node.rb#3413 def ===(other); end - # source://prism//lib/prism/node.rb#3278 + # source://prism//lib/prism/node.rb#3290 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#3321 + # source://prism//lib/prism/node.rb#3333 sig { returns(T::Boolean) } def attribute_write?; end - # source://prism//lib/prism/node.rb#3375 + # source://prism//lib/prism/node.rb#3387 sig { returns(String) } def call_operator; end - # source://prism//lib/prism/node.rb#3340 + # source://prism//lib/prism/node.rb#3352 sig { returns(Prism::Location) } def call_operator_loc; end - # source://prism//lib/prism/node.rb#3283 + # source://prism//lib/prism/node.rb#3295 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#3293 + # source://prism//lib/prism/node.rb#3305 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#3288 + # source://prism//lib/prism/node.rb#3300 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#3298 + # source://prism//lib/prism/node.rb#3310 sig do params( node_id: Integer, @@ -2432,68 +2432,68 @@ class Prism::CallTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), name: T.unsafe(nil), message_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#3283 + # source://prism//lib/prism/node.rb#3295 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#3306 + # source://prism//lib/prism/node.rb#3318 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#3326 + # source://prism//lib/prism/node.rb#3338 sig { returns(T::Boolean) } def ignore_visibility?; end - # source://prism//lib/prism/node.rb#3385 + # source://prism//lib/prism/node.rb#3397 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#3380 + # source://prism//lib/prism/node.rb#3392 sig { returns(String) } def message; end - # source://prism//lib/prism/node.rb#3362 + # source://prism//lib/prism/node.rb#3374 sig { returns(Prism::Location) } def message_loc; end - # source://prism//lib/prism/node.rb#3356 + # source://prism//lib/prism/node.rb#3368 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#3334 + # source://prism//lib/prism/node.rb#3346 sig { returns(Prism::Node) } def receiver; end - # source://prism//lib/prism/node.rb#3311 + # source://prism//lib/prism/node.rb#3323 sig { returns(T::Boolean) } def safe_navigation?; end - # source://prism//lib/prism/node.rb#3348 + # source://prism//lib/prism/node.rb#3360 def save_call_operator_loc(repository); end - # source://prism//lib/prism/node.rb#3370 + # source://prism//lib/prism/node.rb#3382 def save_message_loc(repository); end - # source://prism//lib/prism/node.rb#3390 + # source://prism//lib/prism/node.rb#3402 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#3316 + # source://prism//lib/prism/node.rb#3328 sig { returns(T::Boolean) } def variable_call?; end class << self - # source://prism//lib/prism/node.rb#3395 + # source://prism//lib/prism/node.rb#3407 def type; end end end -# source://prism//lib/prism/node.rb#3415 +# source://prism//lib/prism/node.rb#3427 class Prism::CapturePatternNode < ::Prism::Node - # source://prism//lib/prism/node.rb#3417 + # source://prism//lib/prism/node.rb#3429 sig do params( source: Prism::Source, @@ -2507,26 +2507,26 @@ class Prism::CapturePatternNode < ::Prism::Node end def initialize(source, node_id, location, flags, value, target, operator_loc); end - # source://prism//lib/prism/node.rb#3510 + # source://prism//lib/prism/node.rb#3522 def ===(other); end - # source://prism//lib/prism/node.rb#3428 + # source://prism//lib/prism/node.rb#3440 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#3433 + # source://prism//lib/prism/node.rb#3445 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#3443 + # source://prism//lib/prism/node.rb#3455 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#3438 + # source://prism//lib/prism/node.rb#3450 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#3448 + # source://prism//lib/prism/node.rb#3460 sig do params( node_id: Integer, @@ -2539,53 +2539,53 @@ class Prism::CapturePatternNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil), target: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#3433 + # source://prism//lib/prism/node.rb#3445 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#3456 + # source://prism//lib/prism/node.rb#3468 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#3494 + # source://prism//lib/prism/node.rb#3506 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#3489 + # source://prism//lib/prism/node.rb#3501 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#3476 + # source://prism//lib/prism/node.rb#3488 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#3484 + # source://prism//lib/prism/node.rb#3496 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#3470 + # source://prism//lib/prism/node.rb#3482 sig { returns(Prism::LocalVariableTargetNode) } def target; end - # source://prism//lib/prism/node.rb#3499 + # source://prism//lib/prism/node.rb#3511 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#3464 + # source://prism//lib/prism/node.rb#3476 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#3504 + # source://prism//lib/prism/node.rb#3516 def type; end end end -# source://prism//lib/prism/node.rb#3524 +# source://prism//lib/prism/node.rb#3536 class Prism::CaseMatchNode < ::Prism::Node - # source://prism//lib/prism/node.rb#3526 + # source://prism//lib/prism/node.rb#3538 sig do params( source: Prism::Source, @@ -2601,41 +2601,41 @@ class Prism::CaseMatchNode < ::Prism::Node end def initialize(source, node_id, location, flags, predicate, conditions, else_clause, case_keyword_loc, end_keyword_loc); end - # source://prism//lib/prism/node.rb#3652 + # source://prism//lib/prism/node.rb#3664 def ===(other); end - # source://prism//lib/prism/node.rb#3539 + # source://prism//lib/prism/node.rb#3551 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#3626 + # source://prism//lib/prism/node.rb#3638 sig { returns(String) } def case_keyword; end - # source://prism//lib/prism/node.rb#3597 + # source://prism//lib/prism/node.rb#3609 sig { returns(Prism::Location) } def case_keyword_loc; end - # source://prism//lib/prism/node.rb#3544 + # source://prism//lib/prism/node.rb#3556 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#3558 + # source://prism//lib/prism/node.rb#3570 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#3549 + # source://prism//lib/prism/node.rb#3561 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#3585 + # source://prism//lib/prism/node.rb#3597 sig { returns(T::Array[Prism::InNode]) } def conditions; end - # source://prism//lib/prism/node_ext.rb#467 + # source://prism//lib/prism/node_ext.rb#470 def consequent; end - # source://prism//lib/prism/node.rb#3563 + # source://prism//lib/prism/node.rb#3575 sig do params( node_id: Integer, @@ -2650,56 +2650,56 @@ class Prism::CaseMatchNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), predicate: T.unsafe(nil), conditions: T.unsafe(nil), else_clause: T.unsafe(nil), case_keyword_loc: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#3544 + # source://prism//lib/prism/node.rb#3556 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#3571 + # source://prism//lib/prism/node.rb#3583 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#3591 + # source://prism//lib/prism/node.rb#3603 sig { returns(T.nilable(Prism::ElseNode)) } def else_clause; end - # source://prism//lib/prism/node.rb#3631 + # source://prism//lib/prism/node.rb#3643 sig { returns(String) } def end_keyword; end - # source://prism//lib/prism/node.rb#3613 + # source://prism//lib/prism/node.rb#3625 sig { returns(Prism::Location) } def end_keyword_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#3636 + # source://prism//lib/prism/node.rb#3648 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#3579 + # source://prism//lib/prism/node.rb#3591 sig { returns(T.nilable(Prism::Node)) } def predicate; end - # source://prism//lib/prism/node.rb#3605 + # source://prism//lib/prism/node.rb#3617 def save_case_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#3621 + # source://prism//lib/prism/node.rb#3633 def save_end_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#3641 + # source://prism//lib/prism/node.rb#3653 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#3646 + # source://prism//lib/prism/node.rb#3658 def type; end end end -# source://prism//lib/prism/node.rb#3669 +# source://prism//lib/prism/node.rb#3681 class Prism::CaseNode < ::Prism::Node - # source://prism//lib/prism/node.rb#3671 + # source://prism//lib/prism/node.rb#3683 sig do params( source: Prism::Source, @@ -2715,41 +2715,41 @@ class Prism::CaseNode < ::Prism::Node end def initialize(source, node_id, location, flags, predicate, conditions, else_clause, case_keyword_loc, end_keyword_loc); end - # source://prism//lib/prism/node.rb#3797 + # source://prism//lib/prism/node.rb#3809 def ===(other); end - # source://prism//lib/prism/node.rb#3684 + # source://prism//lib/prism/node.rb#3696 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#3771 + # source://prism//lib/prism/node.rb#3783 sig { returns(String) } def case_keyword; end - # source://prism//lib/prism/node.rb#3742 + # source://prism//lib/prism/node.rb#3754 sig { returns(Prism::Location) } def case_keyword_loc; end - # source://prism//lib/prism/node.rb#3689 + # source://prism//lib/prism/node.rb#3701 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#3703 + # source://prism//lib/prism/node.rb#3715 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#3694 + # source://prism//lib/prism/node.rb#3706 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#3730 + # source://prism//lib/prism/node.rb#3742 sig { returns(T::Array[Prism::WhenNode]) } def conditions; end - # source://prism//lib/prism/node_ext.rb#476 + # source://prism//lib/prism/node_ext.rb#479 def consequent; end - # source://prism//lib/prism/node.rb#3708 + # source://prism//lib/prism/node.rb#3720 sig do params( node_id: Integer, @@ -2764,56 +2764,56 @@ class Prism::CaseNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), predicate: T.unsafe(nil), conditions: T.unsafe(nil), else_clause: T.unsafe(nil), case_keyword_loc: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#3689 + # source://prism//lib/prism/node.rb#3701 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#3716 + # source://prism//lib/prism/node.rb#3728 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#3736 + # source://prism//lib/prism/node.rb#3748 sig { returns(T.nilable(Prism::ElseNode)) } def else_clause; end - # source://prism//lib/prism/node.rb#3776 + # source://prism//lib/prism/node.rb#3788 sig { returns(String) } def end_keyword; end - # source://prism//lib/prism/node.rb#3758 + # source://prism//lib/prism/node.rb#3770 sig { returns(Prism::Location) } def end_keyword_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#3781 + # source://prism//lib/prism/node.rb#3793 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#3724 + # source://prism//lib/prism/node.rb#3736 sig { returns(T.nilable(Prism::Node)) } def predicate; end - # source://prism//lib/prism/node.rb#3750 + # source://prism//lib/prism/node.rb#3762 def save_case_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#3766 + # source://prism//lib/prism/node.rb#3778 def save_end_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#3786 + # source://prism//lib/prism/node.rb#3798 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#3791 + # source://prism//lib/prism/node.rb#3803 def type; end end end -# source://prism//lib/prism/node.rb#3812 +# source://prism//lib/prism/node.rb#3824 class Prism::ClassNode < ::Prism::Node - # source://prism//lib/prism/node.rb#3814 + # source://prism//lib/prism/node.rb#3826 sig do params( source: Prism::Source, @@ -2832,42 +2832,42 @@ class Prism::ClassNode < ::Prism::Node end def initialize(source, node_id, location, flags, locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, body, end_keyword_loc, name); end - # source://prism//lib/prism/node.rb#3958 + # source://prism//lib/prism/node.rb#3988 def ===(other); end - # source://prism//lib/prism/node.rb#3830 + # source://prism//lib/prism/node.rb#3842 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#3908 + # source://prism//lib/prism/node.rb#3933 sig { returns(T.nilable(T.any(Prism::StatementsNode, Prism::BeginNode))) } def body; end - # source://prism//lib/prism/node.rb#3835 + # source://prism//lib/prism/node.rb#3847 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#3927 + # source://prism//lib/prism/node.rb#3957 sig { returns(String) } def class_keyword; end - # source://prism//lib/prism/node.rb#3870 + # source://prism//lib/prism/node.rb#3885 sig { returns(Prism::Location) } def class_keyword_loc; end - # source://prism//lib/prism/node.rb#3849 + # source://prism//lib/prism/node.rb#3861 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#3840 + # source://prism//lib/prism/node.rb#3852 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#3883 + # source://prism//lib/prism/node.rb#3898 sig { returns(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode, Prism::CallNode)) } def constant_path; end - # source://prism//lib/prism/node.rb#3854 + # source://prism//lib/prism/node.rb#3866 sig do params( node_id: Integer, @@ -2885,71 +2885,71 @@ class Prism::ClassNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), class_keyword_loc: T.unsafe(nil), constant_path: T.unsafe(nil), inheritance_operator_loc: T.unsafe(nil), superclass: T.unsafe(nil), body: T.unsafe(nil), end_keyword_loc: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#3835 + # source://prism//lib/prism/node.rb#3847 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#3862 + # source://prism//lib/prism/node.rb#3874 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#3937 + # source://prism//lib/prism/node.rb#3967 sig { returns(String) } def end_keyword; end - # source://prism//lib/prism/node.rb#3911 + # source://prism//lib/prism/node.rb#3939 sig { returns(Prism::Location) } def end_keyword_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#3932 + # source://prism//lib/prism/node.rb#3962 sig { returns(T.nilable(String)) } def inheritance_operator; end - # source://prism//lib/prism/node.rb#3886 + # source://prism//lib/prism/node.rb#3904 sig { returns(T.nilable(Prism::Location)) } def inheritance_operator_loc; end - # source://prism//lib/prism/node.rb#3942 + # source://prism//lib/prism/node.rb#3972 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#3867 + # source://prism//lib/prism/node.rb#3879 sig { returns(T::Array[Symbol]) } def locals; end - # source://prism//lib/prism/node.rb#3924 + # source://prism//lib/prism/node.rb#3954 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#3878 + # source://prism//lib/prism/node.rb#3893 def save_class_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#3919 + # source://prism//lib/prism/node.rb#3947 def save_end_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#3900 + # source://prism//lib/prism/node.rb#3918 def save_inheritance_operator_loc(repository); end - # source://prism//lib/prism/node.rb#3905 + # source://prism//lib/prism/node.rb#3926 sig { returns(T.nilable(Prism::Node)) } def superclass; end - # source://prism//lib/prism/node.rb#3947 + # source://prism//lib/prism/node.rb#3977 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#3952 + # source://prism//lib/prism/node.rb#3982 def type; end end end -# source://prism//lib/prism/node.rb#3976 +# source://prism//lib/prism/node.rb#4006 class Prism::ClassVariableAndWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#3978 + # source://prism//lib/prism/node.rb#4008 sig do params( source: Prism::Source, @@ -2964,26 +2964,26 @@ class Prism::ClassVariableAndWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, operator_loc, value); end - # source://prism//lib/prism/node.rb#4088 + # source://prism//lib/prism/node.rb#4118 def ===(other); end - # source://prism//lib/prism/node.rb#3990 + # source://prism//lib/prism/node.rb#4020 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#3995 + # source://prism//lib/prism/node.rb#4025 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#4005 + # source://prism//lib/prism/node.rb#4035 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#4000 + # source://prism//lib/prism/node.rb#4030 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#4010 + # source://prism//lib/prism/node.rb#4040 sig do params( node_id: Integer, @@ -2997,63 +2997,63 @@ class Prism::ClassVariableAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#3995 + # source://prism//lib/prism/node.rb#4025 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#4018 + # source://prism//lib/prism/node.rb#4048 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#164 + # source://prism//lib/prism/desugar_compiler.rb#165 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#4072 + # source://prism//lib/prism/node.rb#4102 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#4026 + # source://prism//lib/prism/node.rb#4056 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#4032 + # source://prism//lib/prism/node.rb#4062 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#4067 + # source://prism//lib/prism/node.rb#4097 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#4048 + # source://prism//lib/prism/node.rb#4078 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#4040 + # source://prism//lib/prism/node.rb#4070 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#4056 + # source://prism//lib/prism/node.rb#4086 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#4077 + # source://prism//lib/prism/node.rb#4107 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#4064 + # source://prism//lib/prism/node.rb#4094 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#4082 + # source://prism//lib/prism/node.rb#4112 def type; end end end -# source://prism//lib/prism/node.rb#4101 +# source://prism//lib/prism/node.rb#4131 class Prism::ClassVariableOperatorWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#4103 + # source://prism//lib/prism/node.rb#4133 sig do params( source: Prism::Source, @@ -3069,34 +3069,34 @@ class Prism::ClassVariableOperatorWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, binary_operator_loc, value, binary_operator); end - # source://prism//lib/prism/node.rb#4200 + # source://prism//lib/prism/node.rb#4230 def ===(other); end - # source://prism//lib/prism/node.rb#4116 + # source://prism//lib/prism/node.rb#4146 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#4181 + # source://prism//lib/prism/node.rb#4211 sig { returns(Symbol) } def binary_operator; end - # source://prism//lib/prism/node.rb#4165 + # source://prism//lib/prism/node.rb#4195 sig { returns(Prism::Location) } def binary_operator_loc; end - # source://prism//lib/prism/node.rb#4121 + # source://prism//lib/prism/node.rb#4151 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#4131 + # source://prism//lib/prism/node.rb#4161 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#4126 + # source://prism//lib/prism/node.rb#4156 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#4136 + # source://prism//lib/prism/node.rb#4166 sig do params( node_id: Integer, @@ -3111,61 +3111,61 @@ class Prism::ClassVariableOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#4121 + # source://prism//lib/prism/node.rb#4151 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#4144 + # source://prism//lib/prism/node.rb#4174 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#176 + # source://prism//lib/prism/desugar_compiler.rb#177 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#4184 + # source://prism//lib/prism/node.rb#4214 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#4149 + # source://prism//lib/prism/node.rb#4179 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#4152 + # source://prism//lib/prism/node.rb#4182 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node_ext.rb#355 + # source://prism//lib/prism/node_ext.rb#358 def operator; end - # source://prism//lib/prism/node_ext.rb#362 + # source://prism//lib/prism/node_ext.rb#365 def operator_loc; end - # source://prism//lib/prism/node.rb#4173 + # source://prism//lib/prism/node.rb#4203 def save_binary_operator_loc(repository); end - # source://prism//lib/prism/node.rb#4160 + # source://prism//lib/prism/node.rb#4190 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#4189 + # source://prism//lib/prism/node.rb#4219 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#4178 + # source://prism//lib/prism/node.rb#4208 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#4194 + # source://prism//lib/prism/node.rb#4224 def type; end end end -# source://prism//lib/prism/node.rb#4214 +# source://prism//lib/prism/node.rb#4244 class Prism::ClassVariableOrWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#4216 + # source://prism//lib/prism/node.rb#4246 sig do params( source: Prism::Source, @@ -3180,26 +3180,26 @@ class Prism::ClassVariableOrWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, operator_loc, value); end - # source://prism//lib/prism/node.rb#4314 + # source://prism//lib/prism/node.rb#4344 def ===(other); end - # source://prism//lib/prism/node.rb#4228 + # source://prism//lib/prism/node.rb#4258 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#4233 + # source://prism//lib/prism/node.rb#4263 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#4243 + # source://prism//lib/prism/node.rb#4273 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#4238 + # source://prism//lib/prism/node.rb#4268 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#4248 + # source://prism//lib/prism/node.rb#4278 sig do params( node_id: Integer, @@ -3213,86 +3213,86 @@ class Prism::ClassVariableOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#4233 + # source://prism//lib/prism/node.rb#4263 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#4256 + # source://prism//lib/prism/node.rb#4286 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#170 + # source://prism//lib/prism/desugar_compiler.rb#171 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#4298 + # source://prism//lib/prism/node.rb#4328 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#4261 + # source://prism//lib/prism/node.rb#4291 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#4264 + # source://prism//lib/prism/node.rb#4294 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#4293 + # source://prism//lib/prism/node.rb#4323 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#4277 + # source://prism//lib/prism/node.rb#4307 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#4272 + # source://prism//lib/prism/node.rb#4302 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#4285 + # source://prism//lib/prism/node.rb#4315 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#4303 + # source://prism//lib/prism/node.rb#4333 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#4290 + # source://prism//lib/prism/node.rb#4320 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#4308 + # source://prism//lib/prism/node.rb#4338 def type; end end end -# source://prism//lib/prism/node.rb#4327 +# source://prism//lib/prism/node.rb#4357 class Prism::ClassVariableReadNode < ::Prism::Node - # source://prism//lib/prism/node.rb#4329 + # source://prism//lib/prism/node.rb#4359 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end - # source://prism//lib/prism/node.rb#4394 + # source://prism//lib/prism/node.rb#4424 def ===(other); end - # source://prism//lib/prism/node.rb#4338 + # source://prism//lib/prism/node.rb#4368 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#4343 + # source://prism//lib/prism/node.rb#4373 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#4353 + # source://prism//lib/prism/node.rb#4383 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#4348 + # source://prism//lib/prism/node.rb#4378 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#4358 + # source://prism//lib/prism/node.rb#4388 sig do params( node_id: Integer, @@ -3303,61 +3303,61 @@ class Prism::ClassVariableReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#4343 + # source://prism//lib/prism/node.rb#4373 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#4366 + # source://prism//lib/prism/node.rb#4396 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#4378 + # source://prism//lib/prism/node.rb#4408 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#4375 + # source://prism//lib/prism/node.rb#4405 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#4383 + # source://prism//lib/prism/node.rb#4413 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#4388 + # source://prism//lib/prism/node.rb#4418 def type; end end end -# source://prism//lib/prism/node.rb#4404 +# source://prism//lib/prism/node.rb#4434 class Prism::ClassVariableTargetNode < ::Prism::Node - # source://prism//lib/prism/node.rb#4406 + # source://prism//lib/prism/node.rb#4436 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end - # source://prism//lib/prism/node.rb#4467 + # source://prism//lib/prism/node.rb#4497 def ===(other); end - # source://prism//lib/prism/node.rb#4415 + # source://prism//lib/prism/node.rb#4445 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#4420 + # source://prism//lib/prism/node.rb#4450 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#4430 + # source://prism//lib/prism/node.rb#4460 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#4425 + # source://prism//lib/prism/node.rb#4455 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#4435 + # source://prism//lib/prism/node.rb#4465 sig do params( node_id: Integer, @@ -3368,38 +3368,38 @@ class Prism::ClassVariableTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#4420 + # source://prism//lib/prism/node.rb#4450 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#4443 + # source://prism//lib/prism/node.rb#4473 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#4451 + # source://prism//lib/prism/node.rb#4481 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#4448 + # source://prism//lib/prism/node.rb#4478 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#4456 + # source://prism//lib/prism/node.rb#4486 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#4461 + # source://prism//lib/prism/node.rb#4491 def type; end end end -# source://prism//lib/prism/node.rb#4477 +# source://prism//lib/prism/node.rb#4507 class Prism::ClassVariableWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#4479 + # source://prism//lib/prism/node.rb#4509 sig do params( source: Prism::Source, @@ -3414,26 +3414,26 @@ class Prism::ClassVariableWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, value, operator_loc); end - # source://prism//lib/prism/node.rb#4593 + # source://prism//lib/prism/node.rb#4623 def ===(other); end - # source://prism//lib/prism/node.rb#4491 + # source://prism//lib/prism/node.rb#4521 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#4496 + # source://prism//lib/prism/node.rb#4526 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#4506 + # source://prism//lib/prism/node.rb#4536 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#4501 + # source://prism//lib/prism/node.rb#4531 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#4511 + # source://prism//lib/prism/node.rb#4541 sig do params( node_id: Integer, @@ -3447,103 +3447,103 @@ class Prism::ClassVariableWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#4496 + # source://prism//lib/prism/node.rb#4526 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#4519 + # source://prism//lib/prism/node.rb#4549 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#4577 + # source://prism//lib/prism/node.rb#4607 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#4528 + # source://prism//lib/prism/node.rb#4558 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#4534 + # source://prism//lib/prism/node.rb#4564 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#4572 + # source://prism//lib/prism/node.rb#4602 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#4559 + # source://prism//lib/prism/node.rb#4589 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#4542 + # source://prism//lib/prism/node.rb#4572 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#4567 + # source://prism//lib/prism/node.rb#4597 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#4582 + # source://prism//lib/prism/node.rb#4612 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#4553 + # source://prism//lib/prism/node.rb#4583 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#4587 + # source://prism//lib/prism/node.rb#4617 def type; end end end -# source://prism//lib/prism/parse_result.rb#189 +# source://prism//lib/prism/parse_result.rb#190 class Prism::CodeUnitsCache - # source://prism//lib/prism/parse_result.rb#215 + # source://prism//lib/prism/parse_result.rb#216 sig { params(source: String, encoding: Encoding).void } def initialize(source, encoding); end - # source://prism//lib/prism/parse_result.rb#229 + # source://prism//lib/prism/parse_result.rb#230 sig { params(byte_offset: Integer).returns(Integer) } def [](byte_offset); end end -# source://prism//lib/prism/parse_result.rb#201 +# source://prism//lib/prism/parse_result.rb#202 class Prism::CodeUnitsCache::LengthCounter - # source://prism//lib/prism/parse_result.rb#202 + # source://prism//lib/prism/parse_result.rb#203 def initialize(source, encoding); end - # source://prism//lib/prism/parse_result.rb#207 + # source://prism//lib/prism/parse_result.rb#208 def count(byte_offset, byte_length); end end -# source://prism//lib/prism/parse_result.rb#190 +# source://prism//lib/prism/parse_result.rb#191 class Prism::CodeUnitsCache::UTF16Counter - # source://prism//lib/prism/parse_result.rb#191 + # source://prism//lib/prism/parse_result.rb#192 def initialize(source, encoding); end - # source://prism//lib/prism/parse_result.rb#196 + # source://prism//lib/prism/parse_result.rb#197 def count(byte_offset, byte_length); end end -# source://prism//lib/prism/parse_result.rb#524 +# source://prism//lib/prism/parse_result.rb#525 class Prism::Comment abstract! - # source://prism//lib/prism/parse_result.rb#529 + # source://prism//lib/prism/parse_result.rb#530 sig { params(location: Prism::Location).void } def initialize(location); end - # source://prism//lib/prism/parse_result.rb#534 + # source://prism//lib/prism/parse_result.rb#535 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/parse_result.rb#526 + # source://prism//lib/prism/parse_result.rb#527 sig { returns(Prism::Location) } def location; end - # source://prism//lib/prism/parse_result.rb#539 + # source://prism//lib/prism/parse_result.rb#540 sig { returns(String) } def slice; end @@ -3551,477 +3551,477 @@ class Prism::Comment def trailing?; end end -# source://prism//lib/prism/compiler.rb#27 +# source://prism//lib/prism/compiler.rb#30 class Prism::Compiler < ::Prism::Visitor - # source://prism//lib/prism/compiler.rb#29 + # source://prism//lib/prism/compiler.rb#32 sig { params(node: T.nilable(Prism::Node)).returns(T.untyped) } def visit(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#47 def visit_alias_global_variable_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#52 def visit_alias_method_node(node); end - # source://prism//lib/prism/compiler.rb#34 + # source://prism//lib/prism/compiler.rb#37 sig { params(nodes: T::Array[T.nilable(Prism::Node)]).returns(T::Array[T.untyped]) } def visit_all(nodes); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#57 def visit_alternation_pattern_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#62 def visit_and_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#67 def visit_arguments_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#72 def visit_array_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#77 def visit_array_pattern_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#82 def visit_assoc_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#87 def visit_assoc_splat_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#92 def visit_back_reference_read_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#97 def visit_begin_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#102 def visit_block_argument_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#107 def visit_block_local_variable_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#112 def visit_block_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#117 def visit_block_parameter_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#122 def visit_block_parameters_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#127 def visit_break_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#132 def visit_call_and_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#137 def visit_call_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#142 def visit_call_operator_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#147 def visit_call_or_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#152 def visit_call_target_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#157 def visit_capture_pattern_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#162 def visit_case_match_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#167 def visit_case_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#42 sig { params(node: Prism::Node).returns(T::Array[T.untyped]) } def visit_child_nodes(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#172 def visit_class_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#177 def visit_class_variable_and_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#182 def visit_class_variable_operator_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#187 def visit_class_variable_or_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#192 def visit_class_variable_read_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#197 def visit_class_variable_target_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#202 def visit_class_variable_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#207 def visit_constant_and_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#212 def visit_constant_operator_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#217 def visit_constant_or_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#222 def visit_constant_path_and_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#227 def visit_constant_path_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#232 def visit_constant_path_operator_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#237 def visit_constant_path_or_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#242 def visit_constant_path_target_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#247 def visit_constant_path_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#252 def visit_constant_read_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#257 def visit_constant_target_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#262 def visit_constant_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#267 def visit_def_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#272 def visit_defined_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#277 def visit_else_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#282 def visit_embedded_statements_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#287 def visit_embedded_variable_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#292 def visit_ensure_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#297 def visit_false_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#302 def visit_find_pattern_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#307 def visit_flip_flop_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#312 def visit_float_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#317 def visit_for_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#322 def visit_forwarding_arguments_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#327 def visit_forwarding_parameter_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#332 def visit_forwarding_super_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#337 def visit_global_variable_and_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#342 def visit_global_variable_operator_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#347 def visit_global_variable_or_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#352 def visit_global_variable_read_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#357 def visit_global_variable_target_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#362 def visit_global_variable_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#367 def visit_hash_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#372 def visit_hash_pattern_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#377 def visit_if_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#382 def visit_imaginary_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#387 def visit_implicit_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#392 def visit_implicit_rest_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#397 def visit_in_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#402 def visit_index_and_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#407 def visit_index_operator_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#412 def visit_index_or_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#417 def visit_index_target_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#422 def visit_instance_variable_and_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#427 def visit_instance_variable_operator_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#432 def visit_instance_variable_or_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#437 def visit_instance_variable_read_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#442 def visit_instance_variable_target_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#447 def visit_instance_variable_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#452 def visit_integer_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#457 def visit_interpolated_match_last_line_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#462 def visit_interpolated_regular_expression_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#467 def visit_interpolated_string_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#472 def visit_interpolated_symbol_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#477 def visit_interpolated_x_string_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#482 def visit_it_local_variable_read_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#487 def visit_it_parameters_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#492 def visit_keyword_hash_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#497 def visit_keyword_rest_parameter_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#502 def visit_lambda_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#507 def visit_local_variable_and_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#512 def visit_local_variable_operator_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#517 def visit_local_variable_or_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#522 def visit_local_variable_read_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#527 def visit_local_variable_target_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#532 def visit_local_variable_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#537 def visit_match_last_line_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#542 def visit_match_predicate_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#547 def visit_match_required_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#552 def visit_match_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#557 def visit_missing_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#562 def visit_module_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#567 def visit_multi_target_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#572 def visit_multi_write_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#577 def visit_next_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#582 def visit_nil_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#587 def visit_no_keywords_parameter_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#592 def visit_numbered_parameters_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#597 def visit_numbered_reference_read_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#602 def visit_optional_keyword_parameter_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#607 def visit_optional_parameter_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#612 def visit_or_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#617 def visit_parameters_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#622 def visit_parentheses_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#627 def visit_pinned_expression_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#632 def visit_pinned_variable_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#637 def visit_post_execution_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#642 def visit_pre_execution_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#647 def visit_program_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#652 def visit_range_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#657 def visit_rational_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#662 def visit_redo_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#667 def visit_regular_expression_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#672 def visit_required_keyword_parameter_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#677 def visit_required_parameter_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#682 def visit_rescue_modifier_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#687 def visit_rescue_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#692 def visit_rest_parameter_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#697 def visit_retry_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#702 def visit_return_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#707 def visit_self_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#712 def visit_shareable_constant_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#717 def visit_singleton_class_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#722 def visit_source_encoding_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#727 def visit_source_file_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#732 def visit_source_line_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#737 def visit_splat_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#742 def visit_statements_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#747 def visit_string_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#752 def visit_super_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#757 def visit_symbol_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#762 def visit_true_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#767 def visit_undef_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#772 def visit_unless_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#777 def visit_until_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#782 def visit_when_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#787 def visit_while_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#792 def visit_x_string_node(node); end - # source://prism//lib/prism/compiler.rb#39 + # source://prism//lib/prism/compiler.rb#797 def visit_yield_node(node); end end -# source://prism//lib/prism/node.rb#4606 +# source://prism//lib/prism/node.rb#4636 class Prism::ConstantAndWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#4608 + # source://prism//lib/prism/node.rb#4638 sig do params( source: Prism::Source, @@ -4036,26 +4036,26 @@ class Prism::ConstantAndWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, operator_loc, value); end - # source://prism//lib/prism/node.rb#4706 + # source://prism//lib/prism/node.rb#4736 def ===(other); end - # source://prism//lib/prism/node.rb#4620 + # source://prism//lib/prism/node.rb#4650 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#4625 + # source://prism//lib/prism/node.rb#4655 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#4635 + # source://prism//lib/prism/node.rb#4665 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#4630 + # source://prism//lib/prism/node.rb#4660 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#4640 + # source://prism//lib/prism/node.rb#4670 sig do params( node_id: Integer, @@ -4069,63 +4069,63 @@ class Prism::ConstantAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#4625 + # source://prism//lib/prism/node.rb#4655 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#4648 + # source://prism//lib/prism/node.rb#4678 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#182 + # source://prism//lib/prism/desugar_compiler.rb#183 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#4690 + # source://prism//lib/prism/node.rb#4720 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#4653 + # source://prism//lib/prism/node.rb#4683 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#4656 + # source://prism//lib/prism/node.rb#4686 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#4685 + # source://prism//lib/prism/node.rb#4715 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#4669 + # source://prism//lib/prism/node.rb#4699 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#4664 + # source://prism//lib/prism/node.rb#4694 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#4677 + # source://prism//lib/prism/node.rb#4707 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#4695 + # source://prism//lib/prism/node.rb#4725 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#4682 + # source://prism//lib/prism/node.rb#4712 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#4700 + # source://prism//lib/prism/node.rb#4730 def type; end end end -# source://prism//lib/prism/node.rb#4719 +# source://prism//lib/prism/node.rb#4749 class Prism::ConstantOperatorWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#4721 + # source://prism//lib/prism/node.rb#4751 sig do params( source: Prism::Source, @@ -4141,34 +4141,34 @@ class Prism::ConstantOperatorWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, binary_operator_loc, value, binary_operator); end - # source://prism//lib/prism/node.rb#4818 + # source://prism//lib/prism/node.rb#4848 def ===(other); end - # source://prism//lib/prism/node.rb#4734 + # source://prism//lib/prism/node.rb#4764 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#4799 + # source://prism//lib/prism/node.rb#4829 sig { returns(Symbol) } def binary_operator; end - # source://prism//lib/prism/node.rb#4783 + # source://prism//lib/prism/node.rb#4813 sig { returns(Prism::Location) } def binary_operator_loc; end - # source://prism//lib/prism/node.rb#4739 + # source://prism//lib/prism/node.rb#4769 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#4749 + # source://prism//lib/prism/node.rb#4779 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#4744 + # source://prism//lib/prism/node.rb#4774 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#4754 + # source://prism//lib/prism/node.rb#4784 sig do params( node_id: Integer, @@ -4183,61 +4183,61 @@ class Prism::ConstantOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#4739 + # source://prism//lib/prism/node.rb#4769 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#4762 + # source://prism//lib/prism/node.rb#4792 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#194 + # source://prism//lib/prism/desugar_compiler.rb#195 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#4802 + # source://prism//lib/prism/node.rb#4832 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#4767 + # source://prism//lib/prism/node.rb#4797 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#4770 + # source://prism//lib/prism/node.rb#4800 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node_ext.rb#371 + # source://prism//lib/prism/node_ext.rb#374 def operator; end - # source://prism//lib/prism/node_ext.rb#378 + # source://prism//lib/prism/node_ext.rb#381 def operator_loc; end - # source://prism//lib/prism/node.rb#4791 + # source://prism//lib/prism/node.rb#4821 def save_binary_operator_loc(repository); end - # source://prism//lib/prism/node.rb#4778 + # source://prism//lib/prism/node.rb#4808 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#4807 + # source://prism//lib/prism/node.rb#4837 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#4796 + # source://prism//lib/prism/node.rb#4826 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#4812 + # source://prism//lib/prism/node.rb#4842 def type; end end end -# source://prism//lib/prism/node.rb#4832 +# source://prism//lib/prism/node.rb#4862 class Prism::ConstantOrWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#4834 + # source://prism//lib/prism/node.rb#4864 sig do params( source: Prism::Source, @@ -4252,26 +4252,26 @@ class Prism::ConstantOrWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, operator_loc, value); end - # source://prism//lib/prism/node.rb#4932 + # source://prism//lib/prism/node.rb#4962 def ===(other); end - # source://prism//lib/prism/node.rb#4846 + # source://prism//lib/prism/node.rb#4876 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#4851 + # source://prism//lib/prism/node.rb#4881 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#4861 + # source://prism//lib/prism/node.rb#4891 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#4856 + # source://prism//lib/prism/node.rb#4886 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#4866 + # source://prism//lib/prism/node.rb#4896 sig do params( node_id: Integer, @@ -4285,63 +4285,63 @@ class Prism::ConstantOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#4851 + # source://prism//lib/prism/node.rb#4881 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#4874 + # source://prism//lib/prism/node.rb#4904 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#188 + # source://prism//lib/prism/desugar_compiler.rb#189 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#4916 + # source://prism//lib/prism/node.rb#4946 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#4879 + # source://prism//lib/prism/node.rb#4909 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#4882 + # source://prism//lib/prism/node.rb#4912 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#4911 + # source://prism//lib/prism/node.rb#4941 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#4895 + # source://prism//lib/prism/node.rb#4925 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#4890 + # source://prism//lib/prism/node.rb#4920 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#4903 + # source://prism//lib/prism/node.rb#4933 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#4921 + # source://prism//lib/prism/node.rb#4951 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#4908 + # source://prism//lib/prism/node.rb#4938 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#4926 + # source://prism//lib/prism/node.rb#4956 def type; end end end -# source://prism//lib/prism/node.rb#4945 +# source://prism//lib/prism/node.rb#4975 class Prism::ConstantPathAndWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#4947 + # source://prism//lib/prism/node.rb#4977 sig do params( source: Prism::Source, @@ -4355,26 +4355,26 @@ class Prism::ConstantPathAndWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, target, operator_loc, value); end - # source://prism//lib/prism/node.rb#5031 + # source://prism//lib/prism/node.rb#5061 def ===(other); end - # source://prism//lib/prism/node.rb#4958 + # source://prism//lib/prism/node.rb#4988 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#4963 + # source://prism//lib/prism/node.rb#4993 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#4973 + # source://prism//lib/prism/node.rb#5003 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#4968 + # source://prism//lib/prism/node.rb#4998 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#4978 + # source://prism//lib/prism/node.rb#5008 sig do params( node_id: Integer, @@ -4387,53 +4387,53 @@ class Prism::ConstantPathAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), target: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#4963 + # source://prism//lib/prism/node.rb#4993 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#4986 + # source://prism//lib/prism/node.rb#5016 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#5015 + # source://prism//lib/prism/node.rb#5045 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#5010 + # source://prism//lib/prism/node.rb#5040 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#4994 + # source://prism//lib/prism/node.rb#5024 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#5002 + # source://prism//lib/prism/node.rb#5032 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#4991 + # source://prism//lib/prism/node.rb#5021 sig { returns(Prism::ConstantPathNode) } def target; end - # source://prism//lib/prism/node.rb#5020 + # source://prism//lib/prism/node.rb#5050 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#5007 + # source://prism//lib/prism/node.rb#5037 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#5025 + # source://prism//lib/prism/node.rb#5055 def type; end end end -# source://prism//lib/prism/node.rb#5043 +# source://prism//lib/prism/node.rb#5073 class Prism::ConstantPathNode < ::Prism::Node - # source://prism//lib/prism/node.rb#5045 + # source://prism//lib/prism/node.rb#5075 sig do params( source: Prism::Source, @@ -4448,29 +4448,29 @@ class Prism::ConstantPathNode < ::Prism::Node end def initialize(source, node_id, location, flags, parent, name, delimiter_loc, name_loc); end - # source://prism//lib/prism/node.rb#5166 + # source://prism//lib/prism/node.rb#5196 def ===(other); end - # source://prism//lib/prism/node.rb#5057 + # source://prism//lib/prism/node.rb#5087 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node_ext.rb#202 + # source://prism//lib/prism/node_ext.rb#205 def child; end - # source://prism//lib/prism/node.rb#5062 + # source://prism//lib/prism/node.rb#5092 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#5074 + # source://prism//lib/prism/node.rb#5104 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#5067 + # source://prism//lib/prism/node.rb#5097 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#5079 + # source://prism//lib/prism/node.rb#5109 sig do params( node_id: Integer, @@ -4484,74 +4484,74 @@ class Prism::ConstantPathNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), parent: T.unsafe(nil), name: T.unsafe(nil), delimiter_loc: T.unsafe(nil), name_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#5062 + # source://prism//lib/prism/node.rb#5092 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#5087 + # source://prism//lib/prism/node.rb#5117 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#5145 + # source://prism//lib/prism/node.rb#5175 sig { returns(String) } def delimiter; end - # source://prism//lib/prism/node.rb#5113 + # source://prism//lib/prism/node.rb#5143 sig { returns(Prism::Location) } def delimiter_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node_ext.rb#195 + # source://prism//lib/prism/node_ext.rb#198 sig { returns(String) } def full_name; end - # source://prism//lib/prism/node_ext.rb#173 + # source://prism//lib/prism/node_ext.rb#176 sig { returns(T::Array[Symbol]) } def full_name_parts; end - # source://prism//lib/prism/node.rb#5150 + # source://prism//lib/prism/node.rb#5180 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#5104 + # source://prism//lib/prism/node.rb#5134 sig { returns(T.nilable(Symbol)) } def name; end - # source://prism//lib/prism/node.rb#5132 + # source://prism//lib/prism/node.rb#5162 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#5101 + # source://prism//lib/prism/node.rb#5131 sig { returns(T.nilable(Prism::Node)) } def parent; end - # source://prism//lib/prism/node.rb#5121 + # source://prism//lib/prism/node.rb#5151 def save_delimiter_loc(repository); end - # source://prism//lib/prism/node.rb#5140 + # source://prism//lib/prism/node.rb#5170 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#5155 + # source://prism//lib/prism/node.rb#5185 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#5160 + # source://prism//lib/prism/node.rb#5190 def type; end end end -# source://prism//lib/prism/node_ext.rb#164 +# source://prism//lib/prism/node_ext.rb#167 class Prism::ConstantPathNode::DynamicPartsInConstantPathError < ::StandardError; end -# source://prism//lib/prism/node_ext.rb#169 +# source://prism//lib/prism/node_ext.rb#172 class Prism::ConstantPathNode::MissingNodesInConstantPathError < ::StandardError; end -# source://prism//lib/prism/node.rb#5179 +# source://prism//lib/prism/node.rb#5209 class Prism::ConstantPathOperatorWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#5181 + # source://prism//lib/prism/node.rb#5211 sig do params( source: Prism::Source, @@ -4566,34 +4566,34 @@ class Prism::ConstantPathOperatorWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, target, binary_operator_loc, value, binary_operator); end - # source://prism//lib/prism/node.rb#5264 + # source://prism//lib/prism/node.rb#5294 def ===(other); end - # source://prism//lib/prism/node.rb#5193 + # source://prism//lib/prism/node.rb#5223 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#5245 + # source://prism//lib/prism/node.rb#5275 sig { returns(Symbol) } def binary_operator; end - # source://prism//lib/prism/node.rb#5229 + # source://prism//lib/prism/node.rb#5259 sig { returns(Prism::Location) } def binary_operator_loc; end - # source://prism//lib/prism/node.rb#5198 + # source://prism//lib/prism/node.rb#5228 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#5208 + # source://prism//lib/prism/node.rb#5238 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#5203 + # source://prism//lib/prism/node.rb#5233 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#5213 + # source://prism//lib/prism/node.rb#5243 sig do params( node_id: Integer, @@ -4607,51 +4607,51 @@ class Prism::ConstantPathOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), target: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#5198 + # source://prism//lib/prism/node.rb#5228 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#5221 + # source://prism//lib/prism/node.rb#5251 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#5248 + # source://prism//lib/prism/node.rb#5278 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node_ext.rb#387 + # source://prism//lib/prism/node_ext.rb#390 def operator; end - # source://prism//lib/prism/node_ext.rb#394 + # source://prism//lib/prism/node_ext.rb#397 def operator_loc; end - # source://prism//lib/prism/node.rb#5237 + # source://prism//lib/prism/node.rb#5267 def save_binary_operator_loc(repository); end - # source://prism//lib/prism/node.rb#5226 + # source://prism//lib/prism/node.rb#5256 sig { returns(Prism::ConstantPathNode) } def target; end - # source://prism//lib/prism/node.rb#5253 + # source://prism//lib/prism/node.rb#5283 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#5242 + # source://prism//lib/prism/node.rb#5272 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#5258 + # source://prism//lib/prism/node.rb#5288 def type; end end end -# source://prism//lib/prism/node.rb#5277 +# source://prism//lib/prism/node.rb#5307 class Prism::ConstantPathOrWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#5279 + # source://prism//lib/prism/node.rb#5309 sig do params( source: Prism::Source, @@ -4665,26 +4665,26 @@ class Prism::ConstantPathOrWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, target, operator_loc, value); end - # source://prism//lib/prism/node.rb#5363 + # source://prism//lib/prism/node.rb#5393 def ===(other); end - # source://prism//lib/prism/node.rb#5290 + # source://prism//lib/prism/node.rb#5320 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#5295 + # source://prism//lib/prism/node.rb#5325 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#5305 + # source://prism//lib/prism/node.rb#5335 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#5300 + # source://prism//lib/prism/node.rb#5330 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#5310 + # source://prism//lib/prism/node.rb#5340 sig do params( node_id: Integer, @@ -4697,53 +4697,53 @@ class Prism::ConstantPathOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), target: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#5295 + # source://prism//lib/prism/node.rb#5325 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#5318 + # source://prism//lib/prism/node.rb#5348 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#5347 + # source://prism//lib/prism/node.rb#5377 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#5342 + # source://prism//lib/prism/node.rb#5372 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#5326 + # source://prism//lib/prism/node.rb#5356 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#5334 + # source://prism//lib/prism/node.rb#5364 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#5323 + # source://prism//lib/prism/node.rb#5353 sig { returns(Prism::ConstantPathNode) } def target; end - # source://prism//lib/prism/node.rb#5352 + # source://prism//lib/prism/node.rb#5382 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#5339 + # source://prism//lib/prism/node.rb#5369 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#5357 + # source://prism//lib/prism/node.rb#5387 def type; end end end -# source://prism//lib/prism/node.rb#5375 +# source://prism//lib/prism/node.rb#5405 class Prism::ConstantPathTargetNode < ::Prism::Node - # source://prism//lib/prism/node.rb#5377 + # source://prism//lib/prism/node.rb#5407 sig do params( source: Prism::Source, @@ -4758,29 +4758,29 @@ class Prism::ConstantPathTargetNode < ::Prism::Node end def initialize(source, node_id, location, flags, parent, name, delimiter_loc, name_loc); end - # source://prism//lib/prism/node.rb#5477 + # source://prism//lib/prism/node.rb#5507 def ===(other); end - # source://prism//lib/prism/node.rb#5389 + # source://prism//lib/prism/node.rb#5419 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node_ext.rb#243 + # source://prism//lib/prism/node_ext.rb#246 def child; end - # source://prism//lib/prism/node.rb#5394 + # source://prism//lib/prism/node.rb#5424 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#5406 + # source://prism//lib/prism/node.rb#5436 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#5399 + # source://prism//lib/prism/node.rb#5429 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#5411 + # source://prism//lib/prism/node.rb#5441 sig do params( node_id: Integer, @@ -4794,68 +4794,68 @@ class Prism::ConstantPathTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), parent: T.unsafe(nil), name: T.unsafe(nil), delimiter_loc: T.unsafe(nil), name_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#5394 + # source://prism//lib/prism/node.rb#5424 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#5419 + # source://prism//lib/prism/node.rb#5449 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#5456 + # source://prism//lib/prism/node.rb#5486 sig { returns(String) } def delimiter; end - # source://prism//lib/prism/node.rb#5430 + # source://prism//lib/prism/node.rb#5460 sig { returns(Prism::Location) } def delimiter_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node_ext.rb#236 + # source://prism//lib/prism/node_ext.rb#239 sig { returns(String) } def full_name; end - # source://prism//lib/prism/node_ext.rb#216 + # source://prism//lib/prism/node_ext.rb#219 sig { returns(T::Array[Symbol]) } def full_name_parts; end - # source://prism//lib/prism/node.rb#5461 + # source://prism//lib/prism/node.rb#5491 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#5427 + # source://prism//lib/prism/node.rb#5457 sig { returns(T.nilable(Symbol)) } def name; end - # source://prism//lib/prism/node.rb#5443 + # source://prism//lib/prism/node.rb#5473 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#5424 + # source://prism//lib/prism/node.rb#5454 sig { returns(T.nilable(Prism::Node)) } def parent; end - # source://prism//lib/prism/node.rb#5438 + # source://prism//lib/prism/node.rb#5468 def save_delimiter_loc(repository); end - # source://prism//lib/prism/node.rb#5451 + # source://prism//lib/prism/node.rb#5481 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#5466 + # source://prism//lib/prism/node.rb#5496 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#5471 + # source://prism//lib/prism/node.rb#5501 def type; end end end -# source://prism//lib/prism/node.rb#5496 +# source://prism//lib/prism/node.rb#5526 class Prism::ConstantPathWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#5498 + # source://prism//lib/prism/node.rb#5528 sig do params( source: Prism::Source, @@ -4869,26 +4869,26 @@ class Prism::ConstantPathWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, target, operator_loc, value); end - # source://prism//lib/prism/node.rb#5594 + # source://prism//lib/prism/node.rb#5624 def ===(other); end - # source://prism//lib/prism/node.rb#5509 + # source://prism//lib/prism/node.rb#5539 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#5514 + # source://prism//lib/prism/node.rb#5544 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#5524 + # source://prism//lib/prism/node.rb#5554 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#5519 + # source://prism//lib/prism/node.rb#5549 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#5529 + # source://prism//lib/prism/node.rb#5559 sig do params( node_id: Integer, @@ -4901,76 +4901,76 @@ class Prism::ConstantPathWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), target: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#5514 + # source://prism//lib/prism/node.rb#5544 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#5537 + # source://prism//lib/prism/node.rb#5567 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#5578 + # source://prism//lib/prism/node.rb#5608 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#5573 + # source://prism//lib/prism/node.rb#5603 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#5554 + # source://prism//lib/prism/node.rb#5584 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#5562 + # source://prism//lib/prism/node.rb#5592 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#5548 + # source://prism//lib/prism/node.rb#5578 sig { returns(Prism::ConstantPathNode) } def target; end - # source://prism//lib/prism/node.rb#5583 + # source://prism//lib/prism/node.rb#5613 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#5570 + # source://prism//lib/prism/node.rb#5600 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#5588 + # source://prism//lib/prism/node.rb#5618 def type; end end end -# source://prism//lib/prism/node.rb#5606 +# source://prism//lib/prism/node.rb#5636 class Prism::ConstantReadNode < ::Prism::Node - # source://prism//lib/prism/node.rb#5608 + # source://prism//lib/prism/node.rb#5638 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end - # source://prism//lib/prism/node.rb#5673 + # source://prism//lib/prism/node.rb#5703 def ===(other); end - # source://prism//lib/prism/node.rb#5617 + # source://prism//lib/prism/node.rb#5647 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#5622 + # source://prism//lib/prism/node.rb#5652 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#5632 + # source://prism//lib/prism/node.rb#5662 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#5627 + # source://prism//lib/prism/node.rb#5657 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#5637 + # source://prism//lib/prism/node.rb#5667 sig do params( node_id: Integer, @@ -4981,69 +4981,69 @@ class Prism::ConstantReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#5622 + # source://prism//lib/prism/node.rb#5652 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#5645 + # source://prism//lib/prism/node.rb#5675 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node_ext.rb#139 + # source://prism//lib/prism/node_ext.rb#142 sig { returns(String) } def full_name; end - # source://prism//lib/prism/node_ext.rb#134 + # source://prism//lib/prism/node_ext.rb#137 sig { returns(T::Array[Symbol]) } def full_name_parts; end - # source://prism//lib/prism/node.rb#5657 + # source://prism//lib/prism/node.rb#5687 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#5654 + # source://prism//lib/prism/node.rb#5684 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#5662 + # source://prism//lib/prism/node.rb#5692 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#5667 + # source://prism//lib/prism/node.rb#5697 def type; end end end -# source://prism//lib/prism/node.rb#5683 +# source://prism//lib/prism/node.rb#5713 class Prism::ConstantTargetNode < ::Prism::Node - # source://prism//lib/prism/node.rb#5685 + # source://prism//lib/prism/node.rb#5715 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end - # source://prism//lib/prism/node.rb#5746 + # source://prism//lib/prism/node.rb#5776 def ===(other); end - # source://prism//lib/prism/node.rb#5694 + # source://prism//lib/prism/node.rb#5724 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#5699 + # source://prism//lib/prism/node.rb#5729 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#5709 + # source://prism//lib/prism/node.rb#5739 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#5704 + # source://prism//lib/prism/node.rb#5734 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#5714 + # source://prism//lib/prism/node.rb#5744 sig do params( node_id: Integer, @@ -5054,46 +5054,46 @@ class Prism::ConstantTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#5699 + # source://prism//lib/prism/node.rb#5729 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#5722 + # source://prism//lib/prism/node.rb#5752 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node_ext.rb#262 + # source://prism//lib/prism/node_ext.rb#265 sig { returns(String) } def full_name; end - # source://prism//lib/prism/node_ext.rb#257 + # source://prism//lib/prism/node_ext.rb#260 sig { returns(T::Array[Symbol]) } def full_name_parts; end - # source://prism//lib/prism/node.rb#5730 + # source://prism//lib/prism/node.rb#5760 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#5727 + # source://prism//lib/prism/node.rb#5757 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#5735 + # source://prism//lib/prism/node.rb#5765 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#5740 + # source://prism//lib/prism/node.rb#5770 def type; end end end -# source://prism//lib/prism/node.rb#5756 +# source://prism//lib/prism/node.rb#5786 class Prism::ConstantWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#5758 + # source://prism//lib/prism/node.rb#5788 sig do params( source: Prism::Source, @@ -5108,26 +5108,26 @@ class Prism::ConstantWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, value, operator_loc); end - # source://prism//lib/prism/node.rb#5872 + # source://prism//lib/prism/node.rb#5902 def ===(other); end - # source://prism//lib/prism/node.rb#5770 + # source://prism//lib/prism/node.rb#5800 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#5775 + # source://prism//lib/prism/node.rb#5805 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#5785 + # source://prism//lib/prism/node.rb#5815 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#5780 + # source://prism//lib/prism/node.rb#5810 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#5790 + # source://prism//lib/prism/node.rb#5820 sig do params( node_id: Integer, @@ -5141,70 +5141,70 @@ class Prism::ConstantWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#5775 + # source://prism//lib/prism/node.rb#5805 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#5798 + # source://prism//lib/prism/node.rb#5828 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node_ext.rb#152 + # source://prism//lib/prism/node_ext.rb#155 sig { returns(String) } def full_name; end - # source://prism//lib/prism/node_ext.rb#147 + # source://prism//lib/prism/node_ext.rb#150 sig { returns(T::Array[Symbol]) } def full_name_parts; end - # source://prism//lib/prism/node.rb#5856 + # source://prism//lib/prism/node.rb#5886 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#5807 + # source://prism//lib/prism/node.rb#5837 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#5813 + # source://prism//lib/prism/node.rb#5843 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#5851 + # source://prism//lib/prism/node.rb#5881 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#5838 + # source://prism//lib/prism/node.rb#5868 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#5821 + # source://prism//lib/prism/node.rb#5851 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#5846 + # source://prism//lib/prism/node.rb#5876 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#5861 + # source://prism//lib/prism/node.rb#5891 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#5832 + # source://prism//lib/prism/node.rb#5862 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#5866 + # source://prism//lib/prism/node.rb#5896 def type; end end end -# source://prism//lib/prism/dsl.rb#61 +# source://prism//lib/prism/dsl.rb#64 module Prism::DSL extend ::Prism::DSL - # source://prism//lib/prism/dsl.rb#77 + # source://prism//lib/prism/dsl.rb#80 sig do params( source: Prism::Source, @@ -5218,7 +5218,7 @@ module Prism::DSL end def alias_global_variable_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), new_name: T.unsafe(nil), old_name: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#82 + # source://prism//lib/prism/dsl.rb#85 sig do params( source: Prism::Source, @@ -5232,7 +5232,7 @@ module Prism::DSL end def alias_method_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), new_name: T.unsafe(nil), old_name: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#87 + # source://prism//lib/prism/dsl.rb#90 sig do params( source: Prism::Source, @@ -5246,7 +5246,7 @@ module Prism::DSL end def alternation_pattern_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#92 + # source://prism//lib/prism/dsl.rb#95 sig do params( source: Prism::Source, @@ -5260,7 +5260,7 @@ module Prism::DSL end def and_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#97 + # source://prism//lib/prism/dsl.rb#100 sig do params( source: Prism::Source, @@ -5272,11 +5272,11 @@ module Prism::DSL end def arguments_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), arguments: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#832 + # source://prism//lib/prism/dsl.rb#835 sig { params(name: Symbol).returns(Integer) } def arguments_node_flag(name); end - # source://prism//lib/prism/dsl.rb#102 + # source://prism//lib/prism/dsl.rb#105 sig do params( source: Prism::Source, @@ -5290,18 +5290,18 @@ module Prism::DSL end def array_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), elements: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#844 + # source://prism//lib/prism/dsl.rb#847 sig { params(name: Symbol).returns(Integer) } def array_node_flag(name); end - # source://prism//lib/prism/dsl.rb#107 + # source://prism//lib/prism/dsl.rb#110 sig do params( source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), requireds: T::Array[Prism::Node], rest: T.nilable(Prism::Node), posts: T::Array[Prism::Node], @@ -5311,7 +5311,7 @@ module Prism::DSL end def array_pattern_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), constant: T.unsafe(nil), requireds: T.unsafe(nil), rest: T.unsafe(nil), posts: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#112 + # source://prism//lib/prism/dsl.rb#115 sig do params( source: Prism::Source, @@ -5325,7 +5325,7 @@ module Prism::DSL end def assoc_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), key: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#117 + # source://prism//lib/prism/dsl.rb#120 sig do params( source: Prism::Source, @@ -5338,7 +5338,7 @@ module Prism::DSL end def assoc_splat_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#122 + # source://prism//lib/prism/dsl.rb#125 sig do params( source: Prism::Source, @@ -5350,7 +5350,7 @@ module Prism::DSL end def back_reference_read_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#127 + # source://prism//lib/prism/dsl.rb#130 sig do params( source: Prism::Source, @@ -5367,7 +5367,7 @@ module Prism::DSL end def begin_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), begin_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), rescue_clause: T.unsafe(nil), else_clause: T.unsafe(nil), ensure_clause: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#132 + # source://prism//lib/prism/dsl.rb#135 sig do params( source: Prism::Source, @@ -5380,7 +5380,7 @@ module Prism::DSL end def block_argument_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), expression: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#137 + # source://prism//lib/prism/dsl.rb#140 sig do params( source: Prism::Source, @@ -5392,7 +5392,7 @@ module Prism::DSL end def block_local_variable_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#142 + # source://prism//lib/prism/dsl.rb#145 sig do params( source: Prism::Source, @@ -5408,7 +5408,7 @@ module Prism::DSL end def block_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), parameters: T.unsafe(nil), body: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#147 + # source://prism//lib/prism/dsl.rb#150 sig do params( source: Prism::Source, @@ -5422,7 +5422,7 @@ module Prism::DSL end def block_parameter_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#152 + # source://prism//lib/prism/dsl.rb#155 sig do params( source: Prism::Source, @@ -5437,7 +5437,7 @@ module Prism::DSL end def block_parameters_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), parameters: T.unsafe(nil), locals: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#157 + # source://prism//lib/prism/dsl.rb#160 sig do params( source: Prism::Source, @@ -5450,7 +5450,7 @@ module Prism::DSL end def break_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), arguments: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#162 + # source://prism//lib/prism/dsl.rb#165 sig do params( source: Prism::Source, @@ -5468,7 +5468,7 @@ module Prism::DSL end def call_and_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), message_loc: T.unsafe(nil), read_name: T.unsafe(nil), write_name: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#167 + # source://prism//lib/prism/dsl.rb#170 sig do params( source: Prism::Source, @@ -5487,11 +5487,11 @@ module Prism::DSL end def call_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), name: T.unsafe(nil), message_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#852 + # source://prism//lib/prism/dsl.rb#855 sig { params(name: Symbol).returns(Integer) } def call_node_flag(name); end - # source://prism//lib/prism/dsl.rb#172 + # source://prism//lib/prism/dsl.rb#175 sig do params( source: Prism::Source, @@ -5510,7 +5510,7 @@ module Prism::DSL end def call_operator_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), message_loc: T.unsafe(nil), read_name: T.unsafe(nil), write_name: T.unsafe(nil), binary_operator: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#177 + # source://prism//lib/prism/dsl.rb#180 sig do params( source: Prism::Source, @@ -5528,7 +5528,7 @@ module Prism::DSL end def call_or_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), message_loc: T.unsafe(nil), read_name: T.unsafe(nil), write_name: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#182 + # source://prism//lib/prism/dsl.rb#185 sig do params( source: Prism::Source, @@ -5543,7 +5543,7 @@ module Prism::DSL end def call_target_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), name: T.unsafe(nil), message_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#187 + # source://prism//lib/prism/dsl.rb#190 sig do params( source: Prism::Source, @@ -5557,7 +5557,7 @@ module Prism::DSL end def capture_pattern_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil), target: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#192 + # source://prism//lib/prism/dsl.rb#195 sig do params( source: Prism::Source, @@ -5573,7 +5573,7 @@ module Prism::DSL end def case_match_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), predicate: T.unsafe(nil), conditions: T.unsafe(nil), else_clause: T.unsafe(nil), case_keyword_loc: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#197 + # source://prism//lib/prism/dsl.rb#200 sig do params( source: Prism::Source, @@ -5589,7 +5589,7 @@ module Prism::DSL end def case_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), predicate: T.unsafe(nil), conditions: T.unsafe(nil), else_clause: T.unsafe(nil), case_keyword_loc: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#202 + # source://prism//lib/prism/dsl.rb#205 sig do params( source: Prism::Source, @@ -5608,7 +5608,7 @@ module Prism::DSL end def class_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), class_keyword_loc: T.unsafe(nil), constant_path: T.unsafe(nil), inheritance_operator_loc: T.unsafe(nil), superclass: T.unsafe(nil), body: T.unsafe(nil), end_keyword_loc: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#207 + # source://prism//lib/prism/dsl.rb#210 sig do params( source: Prism::Source, @@ -5623,7 +5623,7 @@ module Prism::DSL end def class_variable_and_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#212 + # source://prism//lib/prism/dsl.rb#215 sig do params( source: Prism::Source, @@ -5639,7 +5639,7 @@ module Prism::DSL end def class_variable_operator_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#217 + # source://prism//lib/prism/dsl.rb#220 sig do params( source: Prism::Source, @@ -5654,7 +5654,7 @@ module Prism::DSL end def class_variable_or_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#222 + # source://prism//lib/prism/dsl.rb#225 sig do params( source: Prism::Source, @@ -5666,7 +5666,7 @@ module Prism::DSL end def class_variable_read_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#227 + # source://prism//lib/prism/dsl.rb#230 sig do params( source: Prism::Source, @@ -5678,7 +5678,7 @@ module Prism::DSL end def class_variable_target_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#232 + # source://prism//lib/prism/dsl.rb#235 sig do params( source: Prism::Source, @@ -5693,7 +5693,7 @@ module Prism::DSL end def class_variable_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#237 + # source://prism//lib/prism/dsl.rb#240 sig do params( source: Prism::Source, @@ -5708,7 +5708,7 @@ module Prism::DSL end def constant_and_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#242 + # source://prism//lib/prism/dsl.rb#245 sig do params( source: Prism::Source, @@ -5724,7 +5724,7 @@ module Prism::DSL end def constant_operator_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#247 + # source://prism//lib/prism/dsl.rb#250 sig do params( source: Prism::Source, @@ -5739,7 +5739,7 @@ module Prism::DSL end def constant_or_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#252 + # source://prism//lib/prism/dsl.rb#255 sig do params( source: Prism::Source, @@ -5753,7 +5753,7 @@ module Prism::DSL end def constant_path_and_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), target: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#257 + # source://prism//lib/prism/dsl.rb#260 sig do params( source: Prism::Source, @@ -5768,7 +5768,7 @@ module Prism::DSL end def constant_path_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), parent: T.unsafe(nil), name: T.unsafe(nil), delimiter_loc: T.unsafe(nil), name_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#262 + # source://prism//lib/prism/dsl.rb#265 sig do params( source: Prism::Source, @@ -5783,7 +5783,7 @@ module Prism::DSL end def constant_path_operator_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), target: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#267 + # source://prism//lib/prism/dsl.rb#270 sig do params( source: Prism::Source, @@ -5797,7 +5797,7 @@ module Prism::DSL end def constant_path_or_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), target: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#272 + # source://prism//lib/prism/dsl.rb#275 sig do params( source: Prism::Source, @@ -5812,7 +5812,7 @@ module Prism::DSL end def constant_path_target_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), parent: T.unsafe(nil), name: T.unsafe(nil), delimiter_loc: T.unsafe(nil), name_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#277 + # source://prism//lib/prism/dsl.rb#280 sig do params( source: Prism::Source, @@ -5826,7 +5826,7 @@ module Prism::DSL end def constant_path_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), target: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#282 + # source://prism//lib/prism/dsl.rb#285 sig do params( source: Prism::Source, @@ -5838,7 +5838,7 @@ module Prism::DSL end def constant_read_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#287 + # source://prism//lib/prism/dsl.rb#290 sig do params( source: Prism::Source, @@ -5850,7 +5850,7 @@ module Prism::DSL end def constant_target_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#292 + # source://prism//lib/prism/dsl.rb#295 sig do params( source: Prism::Source, @@ -5865,7 +5865,7 @@ module Prism::DSL end def constant_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#297 + # source://prism//lib/prism/dsl.rb#300 sig do params( source: Prism::Source, @@ -5888,7 +5888,7 @@ module Prism::DSL end def def_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), receiver: T.unsafe(nil), parameters: T.unsafe(nil), body: T.unsafe(nil), locals: T.unsafe(nil), def_keyword_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), lparen_loc: T.unsafe(nil), rparen_loc: T.unsafe(nil), equal_loc: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#302 + # source://prism//lib/prism/dsl.rb#305 sig do params( source: Prism::Source, @@ -5903,7 +5903,7 @@ module Prism::DSL end def defined_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), lparen_loc: T.unsafe(nil), value: T.unsafe(nil), rparen_loc: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#307 + # source://prism//lib/prism/dsl.rb#310 sig do params( source: Prism::Source, @@ -5917,7 +5917,7 @@ module Prism::DSL end def else_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), else_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#312 + # source://prism//lib/prism/dsl.rb#315 sig do params( source: Prism::Source, @@ -5931,7 +5931,7 @@ module Prism::DSL end def embedded_statements_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), statements: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#317 + # source://prism//lib/prism/dsl.rb#320 sig do params( source: Prism::Source, @@ -5944,11 +5944,11 @@ module Prism::DSL end def embedded_variable_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), operator_loc: T.unsafe(nil), variable: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#863 + # source://prism//lib/prism/dsl.rb#866 sig { params(name: Symbol).returns(Integer) } def encoding_flag(name); end - # source://prism//lib/prism/dsl.rb#322 + # source://prism//lib/prism/dsl.rb#325 sig do params( source: Prism::Source, @@ -5962,7 +5962,7 @@ module Prism::DSL end def ensure_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), ensure_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#327 + # source://prism//lib/prism/dsl.rb#330 sig do params( source: Prism::Source, @@ -5973,14 +5973,14 @@ module Prism::DSL end def false_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#332 + # source://prism//lib/prism/dsl.rb#335 sig do params( source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), left: Prism::SplatNode, requireds: T::Array[Prism::Node], right: T.any(Prism::SplatNode, Prism::MissingNode), @@ -5990,7 +5990,7 @@ module Prism::DSL end def find_pattern_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), constant: T.unsafe(nil), left: T.unsafe(nil), requireds: T.unsafe(nil), right: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#337 + # source://prism//lib/prism/dsl.rb#340 sig do params( source: Prism::Source, @@ -6004,7 +6004,7 @@ module Prism::DSL end def flip_flop_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#342 + # source://prism//lib/prism/dsl.rb#345 sig do params( source: Prism::Source, @@ -6016,7 +6016,7 @@ module Prism::DSL end def float_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#347 + # source://prism//lib/prism/dsl.rb#350 sig do params( source: Prism::Source, @@ -6034,7 +6034,7 @@ module Prism::DSL end def for_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), index: T.unsafe(nil), collection: T.unsafe(nil), statements: T.unsafe(nil), for_keyword_loc: T.unsafe(nil), in_keyword_loc: T.unsafe(nil), do_keyword_loc: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#352 + # source://prism//lib/prism/dsl.rb#355 sig do params( source: Prism::Source, @@ -6045,7 +6045,7 @@ module Prism::DSL end def forwarding_arguments_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#357 + # source://prism//lib/prism/dsl.rb#360 sig do params( source: Prism::Source, @@ -6056,7 +6056,7 @@ module Prism::DSL end def forwarding_parameter_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#362 + # source://prism//lib/prism/dsl.rb#365 sig do params( source: Prism::Source, @@ -6068,7 +6068,7 @@ module Prism::DSL end def forwarding_super_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), block: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#367 + # source://prism//lib/prism/dsl.rb#370 sig do params( source: Prism::Source, @@ -6083,7 +6083,7 @@ module Prism::DSL end def global_variable_and_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#372 + # source://prism//lib/prism/dsl.rb#375 sig do params( source: Prism::Source, @@ -6099,7 +6099,7 @@ module Prism::DSL end def global_variable_operator_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#377 + # source://prism//lib/prism/dsl.rb#380 sig do params( source: Prism::Source, @@ -6114,7 +6114,7 @@ module Prism::DSL end def global_variable_or_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#382 + # source://prism//lib/prism/dsl.rb#385 sig do params( source: Prism::Source, @@ -6126,7 +6126,7 @@ module Prism::DSL end def global_variable_read_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#387 + # source://prism//lib/prism/dsl.rb#390 sig do params( source: Prism::Source, @@ -6138,7 +6138,7 @@ module Prism::DSL end def global_variable_target_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#392 + # source://prism//lib/prism/dsl.rb#395 sig do params( source: Prism::Source, @@ -6153,7 +6153,7 @@ module Prism::DSL end def global_variable_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#397 + # source://prism//lib/prism/dsl.rb#400 sig do params( source: Prism::Source, @@ -6167,14 +6167,14 @@ module Prism::DSL end def hash_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), elements: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#402 + # source://prism//lib/prism/dsl.rb#405 sig do params( source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), elements: T::Array[Prism::AssocNode], rest: T.nilable(T.any(Prism::AssocSplatNode, Prism::NoKeywordsParameterNode)), opening_loc: T.nilable(Prism::Location), @@ -6183,7 +6183,7 @@ module Prism::DSL end def hash_pattern_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), constant: T.unsafe(nil), elements: T.unsafe(nil), rest: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#407 + # source://prism//lib/prism/dsl.rb#410 sig do params( source: Prism::Source, @@ -6200,7 +6200,7 @@ module Prism::DSL end def if_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), if_keyword_loc: T.unsafe(nil), predicate: T.unsafe(nil), then_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), subsequent: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#412 + # source://prism//lib/prism/dsl.rb#415 sig do params( source: Prism::Source, @@ -6212,7 +6212,7 @@ module Prism::DSL end def imaginary_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), numeric: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#417 + # source://prism//lib/prism/dsl.rb#420 sig do params( source: Prism::Source, @@ -6224,7 +6224,7 @@ module Prism::DSL end def implicit_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#422 + # source://prism//lib/prism/dsl.rb#425 sig do params( source: Prism::Source, @@ -6235,7 +6235,7 @@ module Prism::DSL end def implicit_rest_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#427 + # source://prism//lib/prism/dsl.rb#430 sig do params( source: Prism::Source, @@ -6250,7 +6250,7 @@ module Prism::DSL end def in_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), pattern: T.unsafe(nil), statements: T.unsafe(nil), in_loc: T.unsafe(nil), then_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#432 + # source://prism//lib/prism/dsl.rb#435 sig do params( source: Prism::Source, @@ -6269,7 +6269,7 @@ module Prism::DSL end def index_and_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#437 + # source://prism//lib/prism/dsl.rb#440 sig do params( source: Prism::Source, @@ -6289,7 +6289,7 @@ module Prism::DSL end def index_operator_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil), binary_operator: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#442 + # source://prism//lib/prism/dsl.rb#445 sig do params( source: Prism::Source, @@ -6308,7 +6308,7 @@ module Prism::DSL end def index_or_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#447 + # source://prism//lib/prism/dsl.rb#450 sig do params( source: Prism::Source, @@ -6324,7 +6324,7 @@ module Prism::DSL end def index_target_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#452 + # source://prism//lib/prism/dsl.rb#455 sig do params( source: Prism::Source, @@ -6339,7 +6339,7 @@ module Prism::DSL end def instance_variable_and_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#457 + # source://prism//lib/prism/dsl.rb#460 sig do params( source: Prism::Source, @@ -6355,7 +6355,7 @@ module Prism::DSL end def instance_variable_operator_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#462 + # source://prism//lib/prism/dsl.rb#465 sig do params( source: Prism::Source, @@ -6370,7 +6370,7 @@ module Prism::DSL end def instance_variable_or_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#467 + # source://prism//lib/prism/dsl.rb#470 sig do params( source: Prism::Source, @@ -6382,7 +6382,7 @@ module Prism::DSL end def instance_variable_read_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#472 + # source://prism//lib/prism/dsl.rb#475 sig do params( source: Prism::Source, @@ -6394,7 +6394,7 @@ module Prism::DSL end def instance_variable_target_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#477 + # source://prism//lib/prism/dsl.rb#480 sig do params( source: Prism::Source, @@ -6409,11 +6409,11 @@ module Prism::DSL end def instance_variable_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#872 + # source://prism//lib/prism/dsl.rb#875 sig { params(name: Symbol).returns(Integer) } def integer_base_flag(name); end - # source://prism//lib/prism/dsl.rb#482 + # source://prism//lib/prism/dsl.rb#485 sig do params( source: Prism::Source, @@ -6425,7 +6425,7 @@ module Prism::DSL end def integer_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#487 + # source://prism//lib/prism/dsl.rb#490 sig do params( source: Prism::Source, @@ -6439,7 +6439,7 @@ module Prism::DSL end def interpolated_match_last_line_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#492 + # source://prism//lib/prism/dsl.rb#495 sig do params( source: Prism::Source, @@ -6453,7 +6453,7 @@ module Prism::DSL end def interpolated_regular_expression_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#497 + # source://prism//lib/prism/dsl.rb#500 sig do params( source: Prism::Source, @@ -6467,11 +6467,11 @@ module Prism::DSL end def interpolated_string_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#883 + # source://prism//lib/prism/dsl.rb#886 sig { params(name: Symbol).returns(Integer) } def interpolated_string_node_flag(name); end - # source://prism//lib/prism/dsl.rb#502 + # source://prism//lib/prism/dsl.rb#505 sig do params( source: Prism::Source, @@ -6485,7 +6485,7 @@ module Prism::DSL end def interpolated_symbol_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#507 + # source://prism//lib/prism/dsl.rb#510 sig do params( source: Prism::Source, @@ -6499,7 +6499,7 @@ module Prism::DSL end def interpolated_x_string_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#512 + # source://prism//lib/prism/dsl.rb#515 sig do params( source: Prism::Source, @@ -6510,7 +6510,7 @@ module Prism::DSL end def it_local_variable_read_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#517 + # source://prism//lib/prism/dsl.rb#520 sig do params( source: Prism::Source, @@ -6521,7 +6521,7 @@ module Prism::DSL end def it_parameters_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#522 + # source://prism//lib/prism/dsl.rb#525 sig do params( source: Prism::Source, @@ -6533,11 +6533,11 @@ module Prism::DSL end def keyword_hash_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), elements: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#892 + # source://prism//lib/prism/dsl.rb#895 sig { params(name: Symbol).returns(Integer) } def keyword_hash_node_flag(name); end - # source://prism//lib/prism/dsl.rb#527 + # source://prism//lib/prism/dsl.rb#530 sig do params( source: Prism::Source, @@ -6551,7 +6551,7 @@ module Prism::DSL end def keyword_rest_parameter_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#532 + # source://prism//lib/prism/dsl.rb#535 sig do params( source: Prism::Source, @@ -6568,7 +6568,7 @@ module Prism::DSL end def lambda_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), operator_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), parameters: T.unsafe(nil), body: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#537 + # source://prism//lib/prism/dsl.rb#540 sig do params( source: Prism::Source, @@ -6584,7 +6584,7 @@ module Prism::DSL end def local_variable_and_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#542 + # source://prism//lib/prism/dsl.rb#545 sig do params( source: Prism::Source, @@ -6601,7 +6601,7 @@ module Prism::DSL end def local_variable_operator_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), name: T.unsafe(nil), binary_operator: T.unsafe(nil), depth: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#547 + # source://prism//lib/prism/dsl.rb#550 sig do params( source: Prism::Source, @@ -6617,7 +6617,7 @@ module Prism::DSL end def local_variable_or_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#552 + # source://prism//lib/prism/dsl.rb#555 sig do params( source: Prism::Source, @@ -6630,7 +6630,7 @@ module Prism::DSL end def local_variable_read_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#557 + # source://prism//lib/prism/dsl.rb#560 sig do params( source: Prism::Source, @@ -6643,7 +6643,7 @@ module Prism::DSL end def local_variable_target_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#562 + # source://prism//lib/prism/dsl.rb#565 sig do params( source: Prism::Source, @@ -6659,15 +6659,15 @@ module Prism::DSL end def local_variable_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#72 + # source://prism//lib/prism/dsl.rb#75 sig { params(source: Prism::Source, start_offset: Integer, length: Integer).returns(Prism::Location) } def location(source: T.unsafe(nil), start_offset: T.unsafe(nil), length: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#900 + # source://prism//lib/prism/dsl.rb#903 sig { params(name: Symbol).returns(Integer) } def loop_flag(name); end - # source://prism//lib/prism/dsl.rb#567 + # source://prism//lib/prism/dsl.rb#570 sig do params( source: Prism::Source, @@ -6682,7 +6682,7 @@ module Prism::DSL end def match_last_line_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), content_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#572 + # source://prism//lib/prism/dsl.rb#575 sig do params( source: Prism::Source, @@ -6696,7 +6696,7 @@ module Prism::DSL end def match_predicate_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil), pattern: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#577 + # source://prism//lib/prism/dsl.rb#580 sig do params( source: Prism::Source, @@ -6710,7 +6710,7 @@ module Prism::DSL end def match_required_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil), pattern: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#582 + # source://prism//lib/prism/dsl.rb#585 sig do params( source: Prism::Source, @@ -6723,7 +6723,7 @@ module Prism::DSL end def match_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), call: T.unsafe(nil), targets: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#587 + # source://prism//lib/prism/dsl.rb#590 sig do params( source: Prism::Source, @@ -6734,7 +6734,7 @@ module Prism::DSL end def missing_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#592 + # source://prism//lib/prism/dsl.rb#595 sig do params( source: Prism::Source, @@ -6751,7 +6751,7 @@ module Prism::DSL end def module_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), module_keyword_loc: T.unsafe(nil), constant_path: T.unsafe(nil), body: T.unsafe(nil), end_keyword_loc: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#597 + # source://prism//lib/prism/dsl.rb#600 sig do params( source: Prism::Source, @@ -6767,7 +6767,7 @@ module Prism::DSL end def multi_target_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), lefts: T.unsafe(nil), rest: T.unsafe(nil), rights: T.unsafe(nil), lparen_loc: T.unsafe(nil), rparen_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#602 + # source://prism//lib/prism/dsl.rb#605 sig do params( source: Prism::Source, @@ -6785,7 +6785,7 @@ module Prism::DSL end def multi_write_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), lefts: T.unsafe(nil), rest: T.unsafe(nil), rights: T.unsafe(nil), lparen_loc: T.unsafe(nil), rparen_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#607 + # source://prism//lib/prism/dsl.rb#610 sig do params( source: Prism::Source, @@ -6798,7 +6798,7 @@ module Prism::DSL end def next_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), arguments: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#612 + # source://prism//lib/prism/dsl.rb#615 sig do params( source: Prism::Source, @@ -6809,7 +6809,7 @@ module Prism::DSL end def nil_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#617 + # source://prism//lib/prism/dsl.rb#620 sig do params( source: Prism::Source, @@ -6822,7 +6822,7 @@ module Prism::DSL end def no_keywords_parameter_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), operator_loc: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#622 + # source://prism//lib/prism/dsl.rb#625 sig do params( source: Prism::Source, @@ -6834,7 +6834,7 @@ module Prism::DSL end def numbered_parameters_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), maximum: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#627 + # source://prism//lib/prism/dsl.rb#630 sig do params( source: Prism::Source, @@ -6846,7 +6846,7 @@ module Prism::DSL end def numbered_reference_read_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), number: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#632 + # source://prism//lib/prism/dsl.rb#635 sig do params( source: Prism::Source, @@ -6860,7 +6860,7 @@ module Prism::DSL end def optional_keyword_parameter_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#637 + # source://prism//lib/prism/dsl.rb#640 sig do params( source: Prism::Source, @@ -6875,7 +6875,7 @@ module Prism::DSL end def optional_parameter_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#642 + # source://prism//lib/prism/dsl.rb#645 sig do params( source: Prism::Source, @@ -6889,11 +6889,11 @@ module Prism::DSL end def or_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#908 + # source://prism//lib/prism/dsl.rb#911 sig { params(name: Symbol).returns(Integer) } def parameter_flag(name); end - # source://prism//lib/prism/dsl.rb#647 + # source://prism//lib/prism/dsl.rb#650 sig do params( source: Prism::Source, @@ -6911,7 +6911,7 @@ module Prism::DSL end def parameters_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), requireds: T.unsafe(nil), optionals: T.unsafe(nil), rest: T.unsafe(nil), posts: T.unsafe(nil), keywords: T.unsafe(nil), keyword_rest: T.unsafe(nil), block: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#652 + # source://prism//lib/prism/dsl.rb#655 sig do params( source: Prism::Source, @@ -6925,11 +6925,11 @@ module Prism::DSL end def parentheses_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), body: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#916 + # source://prism//lib/prism/dsl.rb#919 sig { params(name: Symbol).returns(Integer) } def parentheses_node_flag(name); end - # source://prism//lib/prism/dsl.rb#657 + # source://prism//lib/prism/dsl.rb#660 sig do params( source: Prism::Source, @@ -6944,7 +6944,7 @@ module Prism::DSL end def pinned_expression_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), expression: T.unsafe(nil), operator_loc: T.unsafe(nil), lparen_loc: T.unsafe(nil), rparen_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#662 + # source://prism//lib/prism/dsl.rb#665 sig do params( source: Prism::Source, @@ -6957,7 +6957,7 @@ module Prism::DSL end def pinned_variable_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), variable: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#667 + # source://prism//lib/prism/dsl.rb#670 sig do params( source: Prism::Source, @@ -6972,7 +6972,7 @@ module Prism::DSL end def post_execution_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), statements: T.unsafe(nil), keyword_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#672 + # source://prism//lib/prism/dsl.rb#675 sig do params( source: Prism::Source, @@ -6987,7 +6987,7 @@ module Prism::DSL end def pre_execution_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), statements: T.unsafe(nil), keyword_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#677 + # source://prism//lib/prism/dsl.rb#680 sig do params( source: Prism::Source, @@ -7000,11 +7000,11 @@ module Prism::DSL end def program_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), statements: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#924 + # source://prism//lib/prism/dsl.rb#927 sig { params(name: Symbol).returns(Integer) } def range_flag(name); end - # source://prism//lib/prism/dsl.rb#682 + # source://prism//lib/prism/dsl.rb#685 sig do params( source: Prism::Source, @@ -7018,7 +7018,7 @@ module Prism::DSL end def range_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#687 + # source://prism//lib/prism/dsl.rb#690 sig do params( source: Prism::Source, @@ -7031,7 +7031,7 @@ module Prism::DSL end def rational_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), numerator: T.unsafe(nil), denominator: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#692 + # source://prism//lib/prism/dsl.rb#695 sig do params( source: Prism::Source, @@ -7042,11 +7042,11 @@ module Prism::DSL end def redo_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#932 + # source://prism//lib/prism/dsl.rb#935 sig { params(name: Symbol).returns(Integer) } def regular_expression_flag(name); end - # source://prism//lib/prism/dsl.rb#697 + # source://prism//lib/prism/dsl.rb#700 sig do params( source: Prism::Source, @@ -7061,7 +7061,7 @@ module Prism::DSL end def regular_expression_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), content_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#702 + # source://prism//lib/prism/dsl.rb#705 sig do params( source: Prism::Source, @@ -7074,7 +7074,7 @@ module Prism::DSL end def required_keyword_parameter_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#707 + # source://prism//lib/prism/dsl.rb#710 sig do params( source: Prism::Source, @@ -7086,7 +7086,7 @@ module Prism::DSL end def required_parameter_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#712 + # source://prism//lib/prism/dsl.rb#715 sig do params( source: Prism::Source, @@ -7100,7 +7100,7 @@ module Prism::DSL end def rescue_modifier_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), expression: T.unsafe(nil), keyword_loc: T.unsafe(nil), rescue_expression: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#717 + # source://prism//lib/prism/dsl.rb#720 sig do params( source: Prism::Source, @@ -7118,7 +7118,7 @@ module Prism::DSL end def rescue_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), exceptions: T.unsafe(nil), operator_loc: T.unsafe(nil), reference: T.unsafe(nil), then_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), subsequent: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#722 + # source://prism//lib/prism/dsl.rb#725 sig do params( source: Prism::Source, @@ -7132,7 +7132,7 @@ module Prism::DSL end def rest_parameter_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#727 + # source://prism//lib/prism/dsl.rb#730 sig do params( source: Prism::Source, @@ -7143,7 +7143,7 @@ module Prism::DSL end def retry_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#732 + # source://prism//lib/prism/dsl.rb#735 sig do params( source: Prism::Source, @@ -7156,7 +7156,7 @@ module Prism::DSL end def return_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), arguments: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#737 + # source://prism//lib/prism/dsl.rb#740 sig do params( source: Prism::Source, @@ -7167,7 +7167,7 @@ module Prism::DSL end def self_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#742 + # source://prism//lib/prism/dsl.rb#745 sig do params( source: Prism::Source, @@ -7179,11 +7179,11 @@ module Prism::DSL end def shareable_constant_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), write: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#950 + # source://prism//lib/prism/dsl.rb#953 sig { params(name: Symbol).returns(Integer) } def shareable_constant_node_flag(name); end - # source://prism//lib/prism/dsl.rb#747 + # source://prism//lib/prism/dsl.rb#750 sig do params( source: Prism::Source, @@ -7200,11 +7200,11 @@ module Prism::DSL end def singleton_class_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), class_keyword_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), expression: T.unsafe(nil), body: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#67 + # source://prism//lib/prism/dsl.rb#70 sig { params(string: String).returns(Prism::Source) } def source(string); end - # source://prism//lib/prism/dsl.rb#752 + # source://prism//lib/prism/dsl.rb#755 sig do params( source: Prism::Source, @@ -7215,7 +7215,7 @@ module Prism::DSL end def source_encoding_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#757 + # source://prism//lib/prism/dsl.rb#760 sig do params( source: Prism::Source, @@ -7227,7 +7227,7 @@ module Prism::DSL end def source_file_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), filepath: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#762 + # source://prism//lib/prism/dsl.rb#765 sig do params( source: Prism::Source, @@ -7238,7 +7238,7 @@ module Prism::DSL end def source_line_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#767 + # source://prism//lib/prism/dsl.rb#770 sig do params( source: Prism::Source, @@ -7251,7 +7251,7 @@ module Prism::DSL end def splat_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), operator_loc: T.unsafe(nil), expression: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#772 + # source://prism//lib/prism/dsl.rb#775 sig do params( source: Prism::Source, @@ -7263,11 +7263,11 @@ module Prism::DSL end def statements_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), body: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#960 + # source://prism//lib/prism/dsl.rb#963 sig { params(name: Symbol).returns(Integer) } def string_flag(name); end - # source://prism//lib/prism/dsl.rb#777 + # source://prism//lib/prism/dsl.rb#780 sig do params( source: Prism::Source, @@ -7282,7 +7282,7 @@ module Prism::DSL end def string_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), content_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#782 + # source://prism//lib/prism/dsl.rb#785 sig do params( source: Prism::Source, @@ -7298,11 +7298,11 @@ module Prism::DSL end def super_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), lparen_loc: T.unsafe(nil), arguments: T.unsafe(nil), rparen_loc: T.unsafe(nil), block: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#971 + # source://prism//lib/prism/dsl.rb#974 sig { params(name: Symbol).returns(Integer) } def symbol_flag(name); end - # source://prism//lib/prism/dsl.rb#787 + # source://prism//lib/prism/dsl.rb#790 sig do params( source: Prism::Source, @@ -7317,7 +7317,7 @@ module Prism::DSL end def symbol_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), value_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#792 + # source://prism//lib/prism/dsl.rb#795 sig do params( source: Prism::Source, @@ -7328,7 +7328,7 @@ module Prism::DSL end def true_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#797 + # source://prism//lib/prism/dsl.rb#800 sig do params( source: Prism::Source, @@ -7341,7 +7341,7 @@ module Prism::DSL end def undef_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), names: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#802 + # source://prism//lib/prism/dsl.rb#805 sig do params( source: Prism::Source, @@ -7358,7 +7358,7 @@ module Prism::DSL end def unless_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), predicate: T.unsafe(nil), then_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), else_clause: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#807 + # source://prism//lib/prism/dsl.rb#810 sig do params( source: Prism::Source, @@ -7374,7 +7374,7 @@ module Prism::DSL end def until_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), do_keyword_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), predicate: T.unsafe(nil), statements: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#812 + # source://prism//lib/prism/dsl.rb#815 sig do params( source: Prism::Source, @@ -7389,7 +7389,7 @@ module Prism::DSL end def when_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), conditions: T.unsafe(nil), then_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#817 + # source://prism//lib/prism/dsl.rb#820 sig do params( source: Prism::Source, @@ -7405,7 +7405,7 @@ module Prism::DSL end def while_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), do_keyword_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), predicate: T.unsafe(nil), statements: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#822 + # source://prism//lib/prism/dsl.rb#825 sig do params( source: Prism::Source, @@ -7420,7 +7420,7 @@ module Prism::DSL end def x_string_node(source: T.unsafe(nil), node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), content_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # source://prism//lib/prism/dsl.rb#827 + # source://prism//lib/prism/dsl.rb#830 sig do params( source: Prism::Source, @@ -7437,22 +7437,22 @@ module Prism::DSL private - # source://prism//lib/prism/dsl.rb#990 + # source://prism//lib/prism/dsl.rb#993 sig { returns(Prism::Location) } def default_location; end - # source://prism//lib/prism/dsl.rb#996 + # source://prism//lib/prism/dsl.rb#999 sig { params(source: Prism::Source, location: Prism::Location).returns(Prism::Node) } def default_node(source, location); end - # source://prism//lib/prism/dsl.rb#984 + # source://prism//lib/prism/dsl.rb#987 sig { returns(Prism::Source) } def default_source; end end -# source://prism//lib/prism/node.rb#5886 +# source://prism//lib/prism/node.rb#5916 class Prism::DefNode < ::Prism::Node - # source://prism//lib/prism/node.rb#5888 + # source://prism//lib/prism/node.rb#5918 sig do params( source: Prism::Source, @@ -7475,30 +7475,30 @@ class Prism::DefNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc); end - # source://prism//lib/prism/node.rb#6127 + # source://prism//lib/prism/node.rb#6157 def ===(other); end - # source://prism//lib/prism/node.rb#5908 + # source://prism//lib/prism/node.rb#5938 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#5967 + # source://prism//lib/prism/node.rb#5997 sig { returns(T.nilable(T.any(Prism::StatementsNode, Prism::BeginNode))) } def body; end - # source://prism//lib/prism/node.rb#5913 + # source://prism//lib/prism/node.rb#5943 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#5927 + # source://prism//lib/prism/node.rb#5957 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#5918 + # source://prism//lib/prism/node.rb#5948 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#5932 + # source://prism//lib/prism/node.rb#5962 sig do params( node_id: Integer, @@ -7520,123 +7520,123 @@ class Prism::DefNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), receiver: T.unsafe(nil), parameters: T.unsafe(nil), body: T.unsafe(nil), locals: T.unsafe(nil), def_keyword_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), lparen_loc: T.unsafe(nil), rparen_loc: T.unsafe(nil), equal_loc: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#5913 + # source://prism//lib/prism/node.rb#5943 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#5940 + # source://prism//lib/prism/node.rb#5970 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#6081 + # source://prism//lib/prism/node.rb#6111 sig { returns(String) } def def_keyword; end - # source://prism//lib/prism/node.rb#5973 + # source://prism//lib/prism/node.rb#6003 sig { returns(Prism::Location) } def def_keyword_loc; end - # source://prism//lib/prism/node.rb#6106 + # source://prism//lib/prism/node.rb#6136 sig { returns(T.nilable(String)) } def end_keyword; end - # source://prism//lib/prism/node.rb#6062 + # source://prism//lib/prism/node.rb#6092 sig { returns(T.nilable(Prism::Location)) } def end_keyword_loc; end - # source://prism//lib/prism/node.rb#6101 + # source://prism//lib/prism/node.rb#6131 sig { returns(T.nilable(String)) } def equal; end - # source://prism//lib/prism/node.rb#6043 + # source://prism//lib/prism/node.rb#6073 sig { returns(T.nilable(Prism::Location)) } def equal_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#6111 + # source://prism//lib/prism/node.rb#6141 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#5970 + # source://prism//lib/prism/node.rb#6000 sig { returns(T::Array[Symbol]) } def locals; end - # source://prism//lib/prism/node.rb#6091 + # source://prism//lib/prism/node.rb#6121 sig { returns(T.nilable(String)) } def lparen; end - # source://prism//lib/prism/node.rb#6005 + # source://prism//lib/prism/node.rb#6035 sig { returns(T.nilable(Prism::Location)) } def lparen_loc; end - # source://prism//lib/prism/node.rb#5945 + # source://prism//lib/prism/node.rb#5975 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#5948 + # source://prism//lib/prism/node.rb#5978 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#6086 + # source://prism//lib/prism/node.rb#6116 sig { returns(T.nilable(String)) } def operator; end - # source://prism//lib/prism/node.rb#5986 + # source://prism//lib/prism/node.rb#6016 sig { returns(T.nilable(Prism::Location)) } def operator_loc; end - # source://prism//lib/prism/node.rb#5964 + # source://prism//lib/prism/node.rb#5994 sig { returns(T.nilable(Prism::ParametersNode)) } def parameters; end - # source://prism//lib/prism/node.rb#5961 + # source://prism//lib/prism/node.rb#5991 sig { returns(T.nilable(Prism::Node)) } def receiver; end - # source://prism//lib/prism/node.rb#6096 + # source://prism//lib/prism/node.rb#6126 sig { returns(T.nilable(String)) } def rparen; end - # source://prism//lib/prism/node.rb#6024 + # source://prism//lib/prism/node.rb#6054 sig { returns(T.nilable(Prism::Location)) } def rparen_loc; end - # source://prism//lib/prism/node.rb#5981 + # source://prism//lib/prism/node.rb#6011 def save_def_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#6076 + # source://prism//lib/prism/node.rb#6106 def save_end_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#6057 + # source://prism//lib/prism/node.rb#6087 def save_equal_loc(repository); end - # source://prism//lib/prism/node.rb#6019 + # source://prism//lib/prism/node.rb#6049 def save_lparen_loc(repository); end - # source://prism//lib/prism/node.rb#5956 + # source://prism//lib/prism/node.rb#5986 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#6000 + # source://prism//lib/prism/node.rb#6030 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#6038 + # source://prism//lib/prism/node.rb#6068 def save_rparen_loc(repository); end - # source://prism//lib/prism/node.rb#6116 + # source://prism//lib/prism/node.rb#6146 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#6121 + # source://prism//lib/prism/node.rb#6151 def type; end end end -# source://prism//lib/prism/node.rb#6149 +# source://prism//lib/prism/node.rb#6179 class Prism::DefinedNode < ::Prism::Node - # source://prism//lib/prism/node.rb#6151 + # source://prism//lib/prism/node.rb#6181 sig do params( source: Prism::Source, @@ -7651,26 +7651,26 @@ class Prism::DefinedNode < ::Prism::Node end def initialize(source, node_id, location, flags, lparen_loc, value, rparen_loc, keyword_loc); end - # source://prism//lib/prism/node.rb#6281 + # source://prism//lib/prism/node.rb#6311 def ===(other); end - # source://prism//lib/prism/node.rb#6163 + # source://prism//lib/prism/node.rb#6193 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#6168 + # source://prism//lib/prism/node.rb#6198 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#6178 + # source://prism//lib/prism/node.rb#6208 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#6173 + # source://prism//lib/prism/node.rb#6203 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#6183 + # source://prism//lib/prism/node.rb#6213 sig do params( node_id: Integer, @@ -7684,1737 +7684,1745 @@ class Prism::DefinedNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), lparen_loc: T.unsafe(nil), value: T.unsafe(nil), rparen_loc: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#6168 + # source://prism//lib/prism/node.rb#6198 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#6191 + # source://prism//lib/prism/node.rb#6221 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#6265 + # source://prism//lib/prism/node.rb#6295 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#6260 + # source://prism//lib/prism/node.rb#6290 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#6237 + # source://prism//lib/prism/node.rb#6267 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#6250 + # source://prism//lib/prism/node.rb#6280 sig { returns(T.nilable(String)) } def lparen; end - # source://prism//lib/prism/node.rb#6196 + # source://prism//lib/prism/node.rb#6226 sig { returns(T.nilable(Prism::Location)) } def lparen_loc; end - # source://prism//lib/prism/node.rb#6255 + # source://prism//lib/prism/node.rb#6285 sig { returns(T.nilable(String)) } def rparen; end - # source://prism//lib/prism/node.rb#6218 + # source://prism//lib/prism/node.rb#6248 sig { returns(T.nilable(Prism::Location)) } def rparen_loc; end - # source://prism//lib/prism/node.rb#6245 + # source://prism//lib/prism/node.rb#6275 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#6210 + # source://prism//lib/prism/node.rb#6240 def save_lparen_loc(repository); end - # source://prism//lib/prism/node.rb#6232 + # source://prism//lib/prism/node.rb#6262 def save_rparen_loc(repository); end - # source://prism//lib/prism/node.rb#6270 + # source://prism//lib/prism/node.rb#6300 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#6215 + # source://prism//lib/prism/node.rb#6245 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#6275 + # source://prism//lib/prism/node.rb#6305 def type; end end end -# source://prism//lib/prism/desugar_compiler.rb#4 +# source://prism//lib/prism/desugar_compiler.rb#5 class Prism::DesugarAndWriteNode include ::Prism::DSL - # source://prism//lib/prism/desugar_compiler.rb#9 + # source://prism//lib/prism/desugar_compiler.rb#10 def initialize(node, default_source, read_class, write_class, **arguments); end - # source://prism//lib/prism/desugar_compiler.rb#7 + # source://prism//lib/prism/desugar_compiler.rb#8 def arguments; end - # source://prism//lib/prism/desugar_compiler.rb#18 + # source://prism//lib/prism/desugar_compiler.rb#19 def compile; end - # source://prism//lib/prism/desugar_compiler.rb#7 + # source://prism//lib/prism/desugar_compiler.rb#8 def default_source; end - # source://prism//lib/prism/desugar_compiler.rb#7 + # source://prism//lib/prism/desugar_compiler.rb#8 def node; end - # source://prism//lib/prism/desugar_compiler.rb#7 + # source://prism//lib/prism/desugar_compiler.rb#8 def read_class; end - # source://prism//lib/prism/desugar_compiler.rb#7 + # source://prism//lib/prism/desugar_compiler.rb#8 def write_class; end end -# source://prism//lib/prism/desugar_compiler.rb#255 +# source://prism//lib/prism/desugar_compiler.rb#256 class Prism::DesugarCompiler < ::Prism::MutationCompiler - # source://prism//lib/prism/desugar_compiler.rb#261 + # source://prism//lib/prism/desugar_compiler.rb#262 def visit_class_variable_and_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#279 + # source://prism//lib/prism/desugar_compiler.rb#280 def visit_class_variable_operator_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#270 + # source://prism//lib/prism/desugar_compiler.rb#271 def visit_class_variable_or_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#288 + # source://prism//lib/prism/desugar_compiler.rb#289 def visit_constant_and_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#306 + # source://prism//lib/prism/desugar_compiler.rb#307 def visit_constant_operator_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#297 + # source://prism//lib/prism/desugar_compiler.rb#298 def visit_constant_or_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#315 + # source://prism//lib/prism/desugar_compiler.rb#316 def visit_global_variable_and_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#333 + # source://prism//lib/prism/desugar_compiler.rb#334 def visit_global_variable_operator_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#324 + # source://prism//lib/prism/desugar_compiler.rb#325 def visit_global_variable_or_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#342 + # source://prism//lib/prism/desugar_compiler.rb#343 def visit_instance_variable_and_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#360 + # source://prism//lib/prism/desugar_compiler.rb#361 def visit_instance_variable_operator_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#351 + # source://prism//lib/prism/desugar_compiler.rb#352 def visit_instance_variable_or_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#369 + # source://prism//lib/prism/desugar_compiler.rb#370 def visit_local_variable_and_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#387 + # source://prism//lib/prism/desugar_compiler.rb#388 def visit_local_variable_operator_write_node(node); end - # source://prism//lib/prism/desugar_compiler.rb#378 + # source://prism//lib/prism/desugar_compiler.rb#379 def visit_local_variable_or_write_node(node); end end -# source://prism//lib/prism/desugar_compiler.rb#86 +# source://prism//lib/prism/desugar_compiler.rb#87 class Prism::DesugarOperatorWriteNode include ::Prism::DSL - # source://prism//lib/prism/desugar_compiler.rb#91 + # source://prism//lib/prism/desugar_compiler.rb#92 def initialize(node, default_source, read_class, write_class, **arguments); end - # source://prism//lib/prism/desugar_compiler.rb#89 + # source://prism//lib/prism/desugar_compiler.rb#90 def arguments; end - # source://prism//lib/prism/desugar_compiler.rb#100 + # source://prism//lib/prism/desugar_compiler.rb#101 def compile; end - # source://prism//lib/prism/desugar_compiler.rb#89 + # source://prism//lib/prism/desugar_compiler.rb#90 def default_source; end - # source://prism//lib/prism/desugar_compiler.rb#89 + # source://prism//lib/prism/desugar_compiler.rb#90 def node; end - # source://prism//lib/prism/desugar_compiler.rb#89 + # source://prism//lib/prism/desugar_compiler.rb#90 def read_class; end - # source://prism//lib/prism/desugar_compiler.rb#89 + # source://prism//lib/prism/desugar_compiler.rb#90 def write_class; end end -# source://prism//lib/prism/desugar_compiler.rb#35 +# source://prism//lib/prism/desugar_compiler.rb#36 class Prism::DesugarOrWriteDefinedNode include ::Prism::DSL - # source://prism//lib/prism/desugar_compiler.rb#40 + # source://prism//lib/prism/desugar_compiler.rb#41 def initialize(node, default_source, read_class, write_class, **arguments); end - # source://prism//lib/prism/desugar_compiler.rb#38 + # source://prism//lib/prism/desugar_compiler.rb#39 def arguments; end - # source://prism//lib/prism/desugar_compiler.rb#49 + # source://prism//lib/prism/desugar_compiler.rb#50 def compile; end - # source://prism//lib/prism/desugar_compiler.rb#38 + # source://prism//lib/prism/desugar_compiler.rb#39 def default_source; end - # source://prism//lib/prism/desugar_compiler.rb#38 + # source://prism//lib/prism/desugar_compiler.rb#39 def node; end - # source://prism//lib/prism/desugar_compiler.rb#38 + # source://prism//lib/prism/desugar_compiler.rb#39 def read_class; end - # source://prism//lib/prism/desugar_compiler.rb#38 + # source://prism//lib/prism/desugar_compiler.rb#39 def write_class; end end -# source://prism//lib/prism/desugar_compiler.rb#130 +# source://prism//lib/prism/desugar_compiler.rb#131 class Prism::DesugarOrWriteNode include ::Prism::DSL - # source://prism//lib/prism/desugar_compiler.rb#135 + # source://prism//lib/prism/desugar_compiler.rb#136 def initialize(node, default_source, read_class, write_class, **arguments); end - # source://prism//lib/prism/desugar_compiler.rb#133 + # source://prism//lib/prism/desugar_compiler.rb#134 def arguments; end - # source://prism//lib/prism/desugar_compiler.rb#144 + # source://prism//lib/prism/desugar_compiler.rb#145 def compile; end - # source://prism//lib/prism/desugar_compiler.rb#133 + # source://prism//lib/prism/desugar_compiler.rb#134 def default_source; end - # source://prism//lib/prism/desugar_compiler.rb#133 + # source://prism//lib/prism/desugar_compiler.rb#134 def node; end - # source://prism//lib/prism/desugar_compiler.rb#133 + # source://prism//lib/prism/desugar_compiler.rb#134 def read_class; end - # source://prism//lib/prism/desugar_compiler.rb#133 + # source://prism//lib/prism/desugar_compiler.rb#134 def write_class; end end -# source://prism//lib/prism/dispatcher.rb#42 +# source://prism//lib/prism/dispatcher.rb#45 class Prism::Dispatcher < ::Prism::Visitor - # source://prism//lib/prism/dispatcher.rb#47 + # source://prism//lib/prism/dispatcher.rb#50 def initialize; end - # source://prism//lib/prism/visitor.rb#17 + # source://prism//lib/prism/visitor.rb#20 def dispatch(node); end - # source://prism//lib/prism/dispatcher.rb#66 + # source://prism//lib/prism/dispatcher.rb#82 def dispatch_once(node); end - # source://prism//lib/prism/dispatcher.rb#44 + # source://prism//lib/prism/dispatcher.rb#47 def listeners; end - # source://prism//lib/prism/dispatcher.rb#54 + # source://prism//lib/prism/dispatcher.rb#57 def register(listener, *events); end - # source://prism//lib/prism/dispatcher.rb#72 + # source://prism//lib/prism/dispatcher.rb#65 + def register_public_methods(listener); end + + # source://prism//lib/prism/dispatcher.rb#88 def visit_alias_global_variable_node(node); end - # source://prism//lib/prism/dispatcher.rb#80 + # source://prism//lib/prism/dispatcher.rb#96 def visit_alias_method_node(node); end - # source://prism//lib/prism/dispatcher.rb#88 + # source://prism//lib/prism/dispatcher.rb#104 def visit_alternation_pattern_node(node); end - # source://prism//lib/prism/dispatcher.rb#96 + # source://prism//lib/prism/dispatcher.rb#112 def visit_and_node(node); end - # source://prism//lib/prism/dispatcher.rb#104 + # source://prism//lib/prism/dispatcher.rb#120 def visit_arguments_node(node); end - # source://prism//lib/prism/dispatcher.rb#112 + # source://prism//lib/prism/dispatcher.rb#128 def visit_array_node(node); end - # source://prism//lib/prism/dispatcher.rb#120 + # source://prism//lib/prism/dispatcher.rb#136 def visit_array_pattern_node(node); end - # source://prism//lib/prism/dispatcher.rb#128 + # source://prism//lib/prism/dispatcher.rb#144 def visit_assoc_node(node); end - # source://prism//lib/prism/dispatcher.rb#136 + # source://prism//lib/prism/dispatcher.rb#152 def visit_assoc_splat_node(node); end - # source://prism//lib/prism/dispatcher.rb#144 + # source://prism//lib/prism/dispatcher.rb#160 def visit_back_reference_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#152 + # source://prism//lib/prism/dispatcher.rb#168 def visit_begin_node(node); end - # source://prism//lib/prism/dispatcher.rb#160 + # source://prism//lib/prism/dispatcher.rb#176 def visit_block_argument_node(node); end - # source://prism//lib/prism/dispatcher.rb#168 + # source://prism//lib/prism/dispatcher.rb#184 def visit_block_local_variable_node(node); end - # source://prism//lib/prism/dispatcher.rb#176 + # source://prism//lib/prism/dispatcher.rb#192 def visit_block_node(node); end - # source://prism//lib/prism/dispatcher.rb#184 + # source://prism//lib/prism/dispatcher.rb#200 def visit_block_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#192 + # source://prism//lib/prism/dispatcher.rb#208 def visit_block_parameters_node(node); end - # source://prism//lib/prism/dispatcher.rb#200 + # source://prism//lib/prism/dispatcher.rb#216 def visit_break_node(node); end - # source://prism//lib/prism/dispatcher.rb#208 + # source://prism//lib/prism/dispatcher.rb#224 def visit_call_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#216 + # source://prism//lib/prism/dispatcher.rb#232 def visit_call_node(node); end - # source://prism//lib/prism/dispatcher.rb#224 + # source://prism//lib/prism/dispatcher.rb#240 def visit_call_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#232 + # source://prism//lib/prism/dispatcher.rb#248 def visit_call_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#240 + # source://prism//lib/prism/dispatcher.rb#256 def visit_call_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#248 + # source://prism//lib/prism/dispatcher.rb#264 def visit_capture_pattern_node(node); end - # source://prism//lib/prism/dispatcher.rb#256 + # source://prism//lib/prism/dispatcher.rb#272 def visit_case_match_node(node); end - # source://prism//lib/prism/dispatcher.rb#264 + # source://prism//lib/prism/dispatcher.rb#280 def visit_case_node(node); end - # source://prism//lib/prism/dispatcher.rb#272 + # source://prism//lib/prism/dispatcher.rb#288 def visit_class_node(node); end - # source://prism//lib/prism/dispatcher.rb#280 + # source://prism//lib/prism/dispatcher.rb#296 def visit_class_variable_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#288 + # source://prism//lib/prism/dispatcher.rb#304 def visit_class_variable_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#296 + # source://prism//lib/prism/dispatcher.rb#312 def visit_class_variable_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#304 + # source://prism//lib/prism/dispatcher.rb#320 def visit_class_variable_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#312 + # source://prism//lib/prism/dispatcher.rb#328 def visit_class_variable_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#320 + # source://prism//lib/prism/dispatcher.rb#336 def visit_class_variable_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#328 + # source://prism//lib/prism/dispatcher.rb#344 def visit_constant_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#336 + # source://prism//lib/prism/dispatcher.rb#352 def visit_constant_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#344 + # source://prism//lib/prism/dispatcher.rb#360 def visit_constant_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#352 + # source://prism//lib/prism/dispatcher.rb#368 def visit_constant_path_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#360 + # source://prism//lib/prism/dispatcher.rb#376 def visit_constant_path_node(node); end - # source://prism//lib/prism/dispatcher.rb#368 + # source://prism//lib/prism/dispatcher.rb#384 def visit_constant_path_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#376 + # source://prism//lib/prism/dispatcher.rb#392 def visit_constant_path_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#384 + # source://prism//lib/prism/dispatcher.rb#400 def visit_constant_path_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#392 + # source://prism//lib/prism/dispatcher.rb#408 def visit_constant_path_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#400 + # source://prism//lib/prism/dispatcher.rb#416 def visit_constant_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#408 + # source://prism//lib/prism/dispatcher.rb#424 def visit_constant_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#416 + # source://prism//lib/prism/dispatcher.rb#432 def visit_constant_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#424 + # source://prism//lib/prism/dispatcher.rb#440 def visit_def_node(node); end - # source://prism//lib/prism/dispatcher.rb#432 + # source://prism//lib/prism/dispatcher.rb#448 def visit_defined_node(node); end - # source://prism//lib/prism/dispatcher.rb#440 + # source://prism//lib/prism/dispatcher.rb#456 def visit_else_node(node); end - # source://prism//lib/prism/dispatcher.rb#448 + # source://prism//lib/prism/dispatcher.rb#464 def visit_embedded_statements_node(node); end - # source://prism//lib/prism/dispatcher.rb#456 + # source://prism//lib/prism/dispatcher.rb#472 def visit_embedded_variable_node(node); end - # source://prism//lib/prism/dispatcher.rb#464 + # source://prism//lib/prism/dispatcher.rb#480 def visit_ensure_node(node); end - # source://prism//lib/prism/dispatcher.rb#472 + # source://prism//lib/prism/dispatcher.rb#488 def visit_false_node(node); end - # source://prism//lib/prism/dispatcher.rb#480 + # source://prism//lib/prism/dispatcher.rb#496 def visit_find_pattern_node(node); end - # source://prism//lib/prism/dispatcher.rb#488 + # source://prism//lib/prism/dispatcher.rb#504 def visit_flip_flop_node(node); end - # source://prism//lib/prism/dispatcher.rb#496 + # source://prism//lib/prism/dispatcher.rb#512 def visit_float_node(node); end - # source://prism//lib/prism/dispatcher.rb#504 + # source://prism//lib/prism/dispatcher.rb#520 def visit_for_node(node); end - # source://prism//lib/prism/dispatcher.rb#512 + # source://prism//lib/prism/dispatcher.rb#528 def visit_forwarding_arguments_node(node); end - # source://prism//lib/prism/dispatcher.rb#520 + # source://prism//lib/prism/dispatcher.rb#536 def visit_forwarding_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#528 + # source://prism//lib/prism/dispatcher.rb#544 def visit_forwarding_super_node(node); end - # source://prism//lib/prism/dispatcher.rb#536 + # source://prism//lib/prism/dispatcher.rb#552 def visit_global_variable_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#544 + # source://prism//lib/prism/dispatcher.rb#560 def visit_global_variable_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#552 + # source://prism//lib/prism/dispatcher.rb#568 def visit_global_variable_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#560 + # source://prism//lib/prism/dispatcher.rb#576 def visit_global_variable_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#568 + # source://prism//lib/prism/dispatcher.rb#584 def visit_global_variable_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#576 + # source://prism//lib/prism/dispatcher.rb#592 def visit_global_variable_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#584 + # source://prism//lib/prism/dispatcher.rb#600 def visit_hash_node(node); end - # source://prism//lib/prism/dispatcher.rb#592 + # source://prism//lib/prism/dispatcher.rb#608 def visit_hash_pattern_node(node); end - # source://prism//lib/prism/dispatcher.rb#600 + # source://prism//lib/prism/dispatcher.rb#616 def visit_if_node(node); end - # source://prism//lib/prism/dispatcher.rb#608 + # source://prism//lib/prism/dispatcher.rb#624 def visit_imaginary_node(node); end - # source://prism//lib/prism/dispatcher.rb#616 + # source://prism//lib/prism/dispatcher.rb#632 def visit_implicit_node(node); end - # source://prism//lib/prism/dispatcher.rb#624 + # source://prism//lib/prism/dispatcher.rb#640 def visit_implicit_rest_node(node); end - # source://prism//lib/prism/dispatcher.rb#632 + # source://prism//lib/prism/dispatcher.rb#648 def visit_in_node(node); end - # source://prism//lib/prism/dispatcher.rb#640 + # source://prism//lib/prism/dispatcher.rb#656 def visit_index_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#648 + # source://prism//lib/prism/dispatcher.rb#664 def visit_index_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#656 + # source://prism//lib/prism/dispatcher.rb#672 def visit_index_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#664 + # source://prism//lib/prism/dispatcher.rb#680 def visit_index_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#672 + # source://prism//lib/prism/dispatcher.rb#688 def visit_instance_variable_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#680 + # source://prism//lib/prism/dispatcher.rb#696 def visit_instance_variable_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#688 + # source://prism//lib/prism/dispatcher.rb#704 def visit_instance_variable_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#696 + # source://prism//lib/prism/dispatcher.rb#712 def visit_instance_variable_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#704 + # source://prism//lib/prism/dispatcher.rb#720 def visit_instance_variable_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#712 + # source://prism//lib/prism/dispatcher.rb#728 def visit_instance_variable_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#720 + # source://prism//lib/prism/dispatcher.rb#736 def visit_integer_node(node); end - # source://prism//lib/prism/dispatcher.rb#728 + # source://prism//lib/prism/dispatcher.rb#744 def visit_interpolated_match_last_line_node(node); end - # source://prism//lib/prism/dispatcher.rb#736 + # source://prism//lib/prism/dispatcher.rb#752 def visit_interpolated_regular_expression_node(node); end - # source://prism//lib/prism/dispatcher.rb#744 + # source://prism//lib/prism/dispatcher.rb#760 def visit_interpolated_string_node(node); end - # source://prism//lib/prism/dispatcher.rb#752 + # source://prism//lib/prism/dispatcher.rb#768 def visit_interpolated_symbol_node(node); end - # source://prism//lib/prism/dispatcher.rb#760 + # source://prism//lib/prism/dispatcher.rb#776 def visit_interpolated_x_string_node(node); end - # source://prism//lib/prism/dispatcher.rb#768 + # source://prism//lib/prism/dispatcher.rb#784 def visit_it_local_variable_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#776 + # source://prism//lib/prism/dispatcher.rb#792 def visit_it_parameters_node(node); end - # source://prism//lib/prism/dispatcher.rb#784 + # source://prism//lib/prism/dispatcher.rb#800 def visit_keyword_hash_node(node); end - # source://prism//lib/prism/dispatcher.rb#792 + # source://prism//lib/prism/dispatcher.rb#808 def visit_keyword_rest_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#800 + # source://prism//lib/prism/dispatcher.rb#816 def visit_lambda_node(node); end - # source://prism//lib/prism/dispatcher.rb#808 + # source://prism//lib/prism/dispatcher.rb#824 def visit_local_variable_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#816 + # source://prism//lib/prism/dispatcher.rb#832 def visit_local_variable_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#824 + # source://prism//lib/prism/dispatcher.rb#840 def visit_local_variable_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#832 + # source://prism//lib/prism/dispatcher.rb#848 def visit_local_variable_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#840 + # source://prism//lib/prism/dispatcher.rb#856 def visit_local_variable_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#848 + # source://prism//lib/prism/dispatcher.rb#864 def visit_local_variable_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#856 + # source://prism//lib/prism/dispatcher.rb#872 def visit_match_last_line_node(node); end - # source://prism//lib/prism/dispatcher.rb#864 + # source://prism//lib/prism/dispatcher.rb#880 def visit_match_predicate_node(node); end - # source://prism//lib/prism/dispatcher.rb#872 + # source://prism//lib/prism/dispatcher.rb#888 def visit_match_required_node(node); end - # source://prism//lib/prism/dispatcher.rb#880 + # source://prism//lib/prism/dispatcher.rb#896 def visit_match_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#888 + # source://prism//lib/prism/dispatcher.rb#904 def visit_missing_node(node); end - # source://prism//lib/prism/dispatcher.rb#896 + # source://prism//lib/prism/dispatcher.rb#912 def visit_module_node(node); end - # source://prism//lib/prism/dispatcher.rb#904 + # source://prism//lib/prism/dispatcher.rb#920 def visit_multi_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#912 + # source://prism//lib/prism/dispatcher.rb#928 def visit_multi_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#920 + # source://prism//lib/prism/dispatcher.rb#936 def visit_next_node(node); end - # source://prism//lib/prism/dispatcher.rb#928 + # source://prism//lib/prism/dispatcher.rb#944 def visit_nil_node(node); end - # source://prism//lib/prism/dispatcher.rb#936 + # source://prism//lib/prism/dispatcher.rb#952 def visit_no_keywords_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#944 + # source://prism//lib/prism/dispatcher.rb#960 def visit_numbered_parameters_node(node); end - # source://prism//lib/prism/dispatcher.rb#952 + # source://prism//lib/prism/dispatcher.rb#968 def visit_numbered_reference_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#960 + # source://prism//lib/prism/dispatcher.rb#976 def visit_optional_keyword_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#968 + # source://prism//lib/prism/dispatcher.rb#984 def visit_optional_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#976 + # source://prism//lib/prism/dispatcher.rb#992 def visit_or_node(node); end - # source://prism//lib/prism/dispatcher.rb#984 + # source://prism//lib/prism/dispatcher.rb#1000 def visit_parameters_node(node); end - # source://prism//lib/prism/dispatcher.rb#992 + # source://prism//lib/prism/dispatcher.rb#1008 def visit_parentheses_node(node); end - # source://prism//lib/prism/dispatcher.rb#1000 + # source://prism//lib/prism/dispatcher.rb#1016 def visit_pinned_expression_node(node); end - # source://prism//lib/prism/dispatcher.rb#1008 + # source://prism//lib/prism/dispatcher.rb#1024 def visit_pinned_variable_node(node); end - # source://prism//lib/prism/dispatcher.rb#1016 + # source://prism//lib/prism/dispatcher.rb#1032 def visit_post_execution_node(node); end - # source://prism//lib/prism/dispatcher.rb#1024 + # source://prism//lib/prism/dispatcher.rb#1040 def visit_pre_execution_node(node); end - # source://prism//lib/prism/dispatcher.rb#1032 + # source://prism//lib/prism/dispatcher.rb#1048 def visit_program_node(node); end - # source://prism//lib/prism/dispatcher.rb#1040 + # source://prism//lib/prism/dispatcher.rb#1056 def visit_range_node(node); end - # source://prism//lib/prism/dispatcher.rb#1048 + # source://prism//lib/prism/dispatcher.rb#1064 def visit_rational_node(node); end - # source://prism//lib/prism/dispatcher.rb#1056 + # source://prism//lib/prism/dispatcher.rb#1072 def visit_redo_node(node); end - # source://prism//lib/prism/dispatcher.rb#1064 + # source://prism//lib/prism/dispatcher.rb#1080 def visit_regular_expression_node(node); end - # source://prism//lib/prism/dispatcher.rb#1072 + # source://prism//lib/prism/dispatcher.rb#1088 def visit_required_keyword_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#1080 + # source://prism//lib/prism/dispatcher.rb#1096 def visit_required_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#1088 + # source://prism//lib/prism/dispatcher.rb#1104 def visit_rescue_modifier_node(node); end - # source://prism//lib/prism/dispatcher.rb#1096 + # source://prism//lib/prism/dispatcher.rb#1112 def visit_rescue_node(node); end - # source://prism//lib/prism/dispatcher.rb#1104 + # source://prism//lib/prism/dispatcher.rb#1120 def visit_rest_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#1112 + # source://prism//lib/prism/dispatcher.rb#1128 def visit_retry_node(node); end - # source://prism//lib/prism/dispatcher.rb#1120 + # source://prism//lib/prism/dispatcher.rb#1136 def visit_return_node(node); end - # source://prism//lib/prism/dispatcher.rb#1128 + # source://prism//lib/prism/dispatcher.rb#1144 def visit_self_node(node); end - # source://prism//lib/prism/dispatcher.rb#1136 + # source://prism//lib/prism/dispatcher.rb#1152 def visit_shareable_constant_node(node); end - # source://prism//lib/prism/dispatcher.rb#1144 + # source://prism//lib/prism/dispatcher.rb#1160 def visit_singleton_class_node(node); end - # source://prism//lib/prism/dispatcher.rb#1152 + # source://prism//lib/prism/dispatcher.rb#1168 def visit_source_encoding_node(node); end - # source://prism//lib/prism/dispatcher.rb#1160 + # source://prism//lib/prism/dispatcher.rb#1176 def visit_source_file_node(node); end - # source://prism//lib/prism/dispatcher.rb#1168 + # source://prism//lib/prism/dispatcher.rb#1184 def visit_source_line_node(node); end - # source://prism//lib/prism/dispatcher.rb#1176 + # source://prism//lib/prism/dispatcher.rb#1192 def visit_splat_node(node); end - # source://prism//lib/prism/dispatcher.rb#1184 + # source://prism//lib/prism/dispatcher.rb#1200 def visit_statements_node(node); end - # source://prism//lib/prism/dispatcher.rb#1192 + # source://prism//lib/prism/dispatcher.rb#1208 def visit_string_node(node); end - # source://prism//lib/prism/dispatcher.rb#1200 + # source://prism//lib/prism/dispatcher.rb#1216 def visit_super_node(node); end - # source://prism//lib/prism/dispatcher.rb#1208 + # source://prism//lib/prism/dispatcher.rb#1224 def visit_symbol_node(node); end - # source://prism//lib/prism/dispatcher.rb#1216 + # source://prism//lib/prism/dispatcher.rb#1232 def visit_true_node(node); end - # source://prism//lib/prism/dispatcher.rb#1224 + # source://prism//lib/prism/dispatcher.rb#1240 def visit_undef_node(node); end - # source://prism//lib/prism/dispatcher.rb#1232 + # source://prism//lib/prism/dispatcher.rb#1248 def visit_unless_node(node); end - # source://prism//lib/prism/dispatcher.rb#1240 + # source://prism//lib/prism/dispatcher.rb#1256 def visit_until_node(node); end - # source://prism//lib/prism/dispatcher.rb#1248 + # source://prism//lib/prism/dispatcher.rb#1264 def visit_when_node(node); end - # source://prism//lib/prism/dispatcher.rb#1256 + # source://prism//lib/prism/dispatcher.rb#1272 def visit_while_node(node); end - # source://prism//lib/prism/dispatcher.rb#1264 + # source://prism//lib/prism/dispatcher.rb#1280 def visit_x_string_node(node); end - # source://prism//lib/prism/dispatcher.rb#1272 + # source://prism//lib/prism/dispatcher.rb#1288 def visit_yield_node(node); end + + private + + # source://prism//lib/prism/dispatcher.rb#70 + def register_events(listener, events); end end -# source://prism//lib/prism/dispatcher.rb#1278 +# source://prism//lib/prism/dispatcher.rb#1294 class Prism::Dispatcher::DispatchOnce < ::Prism::Visitor - # source://prism//lib/prism/dispatcher.rb#1281 + # source://prism//lib/prism/dispatcher.rb#1297 def initialize(listeners); end - # source://prism//lib/prism/dispatcher.rb#1279 + # source://prism//lib/prism/dispatcher.rb#1295 def listeners; end - # source://prism//lib/prism/dispatcher.rb#1286 + # source://prism//lib/prism/dispatcher.rb#1302 def visit_alias_global_variable_node(node); end - # source://prism//lib/prism/dispatcher.rb#1292 + # source://prism//lib/prism/dispatcher.rb#1308 def visit_alias_method_node(node); end - # source://prism//lib/prism/dispatcher.rb#1298 + # source://prism//lib/prism/dispatcher.rb#1314 def visit_alternation_pattern_node(node); end - # source://prism//lib/prism/dispatcher.rb#1304 + # source://prism//lib/prism/dispatcher.rb#1320 def visit_and_node(node); end - # source://prism//lib/prism/dispatcher.rb#1310 + # source://prism//lib/prism/dispatcher.rb#1326 def visit_arguments_node(node); end - # source://prism//lib/prism/dispatcher.rb#1316 + # source://prism//lib/prism/dispatcher.rb#1332 def visit_array_node(node); end - # source://prism//lib/prism/dispatcher.rb#1322 + # source://prism//lib/prism/dispatcher.rb#1338 def visit_array_pattern_node(node); end - # source://prism//lib/prism/dispatcher.rb#1328 + # source://prism//lib/prism/dispatcher.rb#1344 def visit_assoc_node(node); end - # source://prism//lib/prism/dispatcher.rb#1334 + # source://prism//lib/prism/dispatcher.rb#1350 def visit_assoc_splat_node(node); end - # source://prism//lib/prism/dispatcher.rb#1340 + # source://prism//lib/prism/dispatcher.rb#1356 def visit_back_reference_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#1346 + # source://prism//lib/prism/dispatcher.rb#1362 def visit_begin_node(node); end - # source://prism//lib/prism/dispatcher.rb#1352 + # source://prism//lib/prism/dispatcher.rb#1368 def visit_block_argument_node(node); end - # source://prism//lib/prism/dispatcher.rb#1358 + # source://prism//lib/prism/dispatcher.rb#1374 def visit_block_local_variable_node(node); end - # source://prism//lib/prism/dispatcher.rb#1364 + # source://prism//lib/prism/dispatcher.rb#1380 def visit_block_node(node); end - # source://prism//lib/prism/dispatcher.rb#1370 + # source://prism//lib/prism/dispatcher.rb#1386 def visit_block_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#1376 + # source://prism//lib/prism/dispatcher.rb#1392 def visit_block_parameters_node(node); end - # source://prism//lib/prism/dispatcher.rb#1382 + # source://prism//lib/prism/dispatcher.rb#1398 def visit_break_node(node); end - # source://prism//lib/prism/dispatcher.rb#1388 + # source://prism//lib/prism/dispatcher.rb#1404 def visit_call_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1394 + # source://prism//lib/prism/dispatcher.rb#1410 def visit_call_node(node); end - # source://prism//lib/prism/dispatcher.rb#1400 + # source://prism//lib/prism/dispatcher.rb#1416 def visit_call_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1406 + # source://prism//lib/prism/dispatcher.rb#1422 def visit_call_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1412 + # source://prism//lib/prism/dispatcher.rb#1428 def visit_call_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#1418 + # source://prism//lib/prism/dispatcher.rb#1434 def visit_capture_pattern_node(node); end - # source://prism//lib/prism/dispatcher.rb#1424 + # source://prism//lib/prism/dispatcher.rb#1440 def visit_case_match_node(node); end - # source://prism//lib/prism/dispatcher.rb#1430 + # source://prism//lib/prism/dispatcher.rb#1446 def visit_case_node(node); end - # source://prism//lib/prism/dispatcher.rb#1436 + # source://prism//lib/prism/dispatcher.rb#1452 def visit_class_node(node); end - # source://prism//lib/prism/dispatcher.rb#1442 + # source://prism//lib/prism/dispatcher.rb#1458 def visit_class_variable_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1448 + # source://prism//lib/prism/dispatcher.rb#1464 def visit_class_variable_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1454 + # source://prism//lib/prism/dispatcher.rb#1470 def visit_class_variable_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1460 + # source://prism//lib/prism/dispatcher.rb#1476 def visit_class_variable_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#1466 + # source://prism//lib/prism/dispatcher.rb#1482 def visit_class_variable_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#1472 + # source://prism//lib/prism/dispatcher.rb#1488 def visit_class_variable_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1478 + # source://prism//lib/prism/dispatcher.rb#1494 def visit_constant_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1484 + # source://prism//lib/prism/dispatcher.rb#1500 def visit_constant_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1490 + # source://prism//lib/prism/dispatcher.rb#1506 def visit_constant_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1496 + # source://prism//lib/prism/dispatcher.rb#1512 def visit_constant_path_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1502 + # source://prism//lib/prism/dispatcher.rb#1518 def visit_constant_path_node(node); end - # source://prism//lib/prism/dispatcher.rb#1508 + # source://prism//lib/prism/dispatcher.rb#1524 def visit_constant_path_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1514 + # source://prism//lib/prism/dispatcher.rb#1530 def visit_constant_path_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1520 + # source://prism//lib/prism/dispatcher.rb#1536 def visit_constant_path_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#1526 + # source://prism//lib/prism/dispatcher.rb#1542 def visit_constant_path_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1532 + # source://prism//lib/prism/dispatcher.rb#1548 def visit_constant_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#1538 + # source://prism//lib/prism/dispatcher.rb#1554 def visit_constant_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#1544 + # source://prism//lib/prism/dispatcher.rb#1560 def visit_constant_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1550 + # source://prism//lib/prism/dispatcher.rb#1566 def visit_def_node(node); end - # source://prism//lib/prism/dispatcher.rb#1556 + # source://prism//lib/prism/dispatcher.rb#1572 def visit_defined_node(node); end - # source://prism//lib/prism/dispatcher.rb#1562 + # source://prism//lib/prism/dispatcher.rb#1578 def visit_else_node(node); end - # source://prism//lib/prism/dispatcher.rb#1568 + # source://prism//lib/prism/dispatcher.rb#1584 def visit_embedded_statements_node(node); end - # source://prism//lib/prism/dispatcher.rb#1574 + # source://prism//lib/prism/dispatcher.rb#1590 def visit_embedded_variable_node(node); end - # source://prism//lib/prism/dispatcher.rb#1580 + # source://prism//lib/prism/dispatcher.rb#1596 def visit_ensure_node(node); end - # source://prism//lib/prism/dispatcher.rb#1586 + # source://prism//lib/prism/dispatcher.rb#1602 def visit_false_node(node); end - # source://prism//lib/prism/dispatcher.rb#1592 + # source://prism//lib/prism/dispatcher.rb#1608 def visit_find_pattern_node(node); end - # source://prism//lib/prism/dispatcher.rb#1598 + # source://prism//lib/prism/dispatcher.rb#1614 def visit_flip_flop_node(node); end - # source://prism//lib/prism/dispatcher.rb#1604 + # source://prism//lib/prism/dispatcher.rb#1620 def visit_float_node(node); end - # source://prism//lib/prism/dispatcher.rb#1610 + # source://prism//lib/prism/dispatcher.rb#1626 def visit_for_node(node); end - # source://prism//lib/prism/dispatcher.rb#1616 + # source://prism//lib/prism/dispatcher.rb#1632 def visit_forwarding_arguments_node(node); end - # source://prism//lib/prism/dispatcher.rb#1622 + # source://prism//lib/prism/dispatcher.rb#1638 def visit_forwarding_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#1628 + # source://prism//lib/prism/dispatcher.rb#1644 def visit_forwarding_super_node(node); end - # source://prism//lib/prism/dispatcher.rb#1634 + # source://prism//lib/prism/dispatcher.rb#1650 def visit_global_variable_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1640 + # source://prism//lib/prism/dispatcher.rb#1656 def visit_global_variable_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1646 + # source://prism//lib/prism/dispatcher.rb#1662 def visit_global_variable_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1652 + # source://prism//lib/prism/dispatcher.rb#1668 def visit_global_variable_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#1658 + # source://prism//lib/prism/dispatcher.rb#1674 def visit_global_variable_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#1664 + # source://prism//lib/prism/dispatcher.rb#1680 def visit_global_variable_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1670 + # source://prism//lib/prism/dispatcher.rb#1686 def visit_hash_node(node); end - # source://prism//lib/prism/dispatcher.rb#1676 + # source://prism//lib/prism/dispatcher.rb#1692 def visit_hash_pattern_node(node); end - # source://prism//lib/prism/dispatcher.rb#1682 + # source://prism//lib/prism/dispatcher.rb#1698 def visit_if_node(node); end - # source://prism//lib/prism/dispatcher.rb#1688 + # source://prism//lib/prism/dispatcher.rb#1704 def visit_imaginary_node(node); end - # source://prism//lib/prism/dispatcher.rb#1694 + # source://prism//lib/prism/dispatcher.rb#1710 def visit_implicit_node(node); end - # source://prism//lib/prism/dispatcher.rb#1700 + # source://prism//lib/prism/dispatcher.rb#1716 def visit_implicit_rest_node(node); end - # source://prism//lib/prism/dispatcher.rb#1706 + # source://prism//lib/prism/dispatcher.rb#1722 def visit_in_node(node); end - # source://prism//lib/prism/dispatcher.rb#1712 + # source://prism//lib/prism/dispatcher.rb#1728 def visit_index_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1718 + # source://prism//lib/prism/dispatcher.rb#1734 def visit_index_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1724 + # source://prism//lib/prism/dispatcher.rb#1740 def visit_index_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1730 + # source://prism//lib/prism/dispatcher.rb#1746 def visit_index_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#1736 + # source://prism//lib/prism/dispatcher.rb#1752 def visit_instance_variable_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1742 + # source://prism//lib/prism/dispatcher.rb#1758 def visit_instance_variable_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1748 + # source://prism//lib/prism/dispatcher.rb#1764 def visit_instance_variable_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1754 + # source://prism//lib/prism/dispatcher.rb#1770 def visit_instance_variable_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#1760 + # source://prism//lib/prism/dispatcher.rb#1776 def visit_instance_variable_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#1766 + # source://prism//lib/prism/dispatcher.rb#1782 def visit_instance_variable_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1772 + # source://prism//lib/prism/dispatcher.rb#1788 def visit_integer_node(node); end - # source://prism//lib/prism/dispatcher.rb#1778 + # source://prism//lib/prism/dispatcher.rb#1794 def visit_interpolated_match_last_line_node(node); end - # source://prism//lib/prism/dispatcher.rb#1784 + # source://prism//lib/prism/dispatcher.rb#1800 def visit_interpolated_regular_expression_node(node); end - # source://prism//lib/prism/dispatcher.rb#1790 + # source://prism//lib/prism/dispatcher.rb#1806 def visit_interpolated_string_node(node); end - # source://prism//lib/prism/dispatcher.rb#1796 + # source://prism//lib/prism/dispatcher.rb#1812 def visit_interpolated_symbol_node(node); end - # source://prism//lib/prism/dispatcher.rb#1802 + # source://prism//lib/prism/dispatcher.rb#1818 def visit_interpolated_x_string_node(node); end - # source://prism//lib/prism/dispatcher.rb#1808 + # source://prism//lib/prism/dispatcher.rb#1824 def visit_it_local_variable_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#1814 + # source://prism//lib/prism/dispatcher.rb#1830 def visit_it_parameters_node(node); end - # source://prism//lib/prism/dispatcher.rb#1820 + # source://prism//lib/prism/dispatcher.rb#1836 def visit_keyword_hash_node(node); end - # source://prism//lib/prism/dispatcher.rb#1826 + # source://prism//lib/prism/dispatcher.rb#1842 def visit_keyword_rest_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#1832 + # source://prism//lib/prism/dispatcher.rb#1848 def visit_lambda_node(node); end - # source://prism//lib/prism/dispatcher.rb#1838 + # source://prism//lib/prism/dispatcher.rb#1854 def visit_local_variable_and_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1844 + # source://prism//lib/prism/dispatcher.rb#1860 def visit_local_variable_operator_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1850 + # source://prism//lib/prism/dispatcher.rb#1866 def visit_local_variable_or_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1856 + # source://prism//lib/prism/dispatcher.rb#1872 def visit_local_variable_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#1862 + # source://prism//lib/prism/dispatcher.rb#1878 def visit_local_variable_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#1868 + # source://prism//lib/prism/dispatcher.rb#1884 def visit_local_variable_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1874 + # source://prism//lib/prism/dispatcher.rb#1890 def visit_match_last_line_node(node); end - # source://prism//lib/prism/dispatcher.rb#1880 + # source://prism//lib/prism/dispatcher.rb#1896 def visit_match_predicate_node(node); end - # source://prism//lib/prism/dispatcher.rb#1886 + # source://prism//lib/prism/dispatcher.rb#1902 def visit_match_required_node(node); end - # source://prism//lib/prism/dispatcher.rb#1892 + # source://prism//lib/prism/dispatcher.rb#1908 def visit_match_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1898 + # source://prism//lib/prism/dispatcher.rb#1914 def visit_missing_node(node); end - # source://prism//lib/prism/dispatcher.rb#1904 + # source://prism//lib/prism/dispatcher.rb#1920 def visit_module_node(node); end - # source://prism//lib/prism/dispatcher.rb#1910 + # source://prism//lib/prism/dispatcher.rb#1926 def visit_multi_target_node(node); end - # source://prism//lib/prism/dispatcher.rb#1916 + # source://prism//lib/prism/dispatcher.rb#1932 def visit_multi_write_node(node); end - # source://prism//lib/prism/dispatcher.rb#1922 + # source://prism//lib/prism/dispatcher.rb#1938 def visit_next_node(node); end - # source://prism//lib/prism/dispatcher.rb#1928 + # source://prism//lib/prism/dispatcher.rb#1944 def visit_nil_node(node); end - # source://prism//lib/prism/dispatcher.rb#1934 + # source://prism//lib/prism/dispatcher.rb#1950 def visit_no_keywords_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#1940 + # source://prism//lib/prism/dispatcher.rb#1956 def visit_numbered_parameters_node(node); end - # source://prism//lib/prism/dispatcher.rb#1946 + # source://prism//lib/prism/dispatcher.rb#1962 def visit_numbered_reference_read_node(node); end - # source://prism//lib/prism/dispatcher.rb#1952 + # source://prism//lib/prism/dispatcher.rb#1968 def visit_optional_keyword_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#1958 + # source://prism//lib/prism/dispatcher.rb#1974 def visit_optional_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#1964 + # source://prism//lib/prism/dispatcher.rb#1980 def visit_or_node(node); end - # source://prism//lib/prism/dispatcher.rb#1970 + # source://prism//lib/prism/dispatcher.rb#1986 def visit_parameters_node(node); end - # source://prism//lib/prism/dispatcher.rb#1976 + # source://prism//lib/prism/dispatcher.rb#1992 def visit_parentheses_node(node); end - # source://prism//lib/prism/dispatcher.rb#1982 + # source://prism//lib/prism/dispatcher.rb#1998 def visit_pinned_expression_node(node); end - # source://prism//lib/prism/dispatcher.rb#1988 + # source://prism//lib/prism/dispatcher.rb#2004 def visit_pinned_variable_node(node); end - # source://prism//lib/prism/dispatcher.rb#1994 + # source://prism//lib/prism/dispatcher.rb#2010 def visit_post_execution_node(node); end - # source://prism//lib/prism/dispatcher.rb#2000 + # source://prism//lib/prism/dispatcher.rb#2016 def visit_pre_execution_node(node); end - # source://prism//lib/prism/dispatcher.rb#2006 + # source://prism//lib/prism/dispatcher.rb#2022 def visit_program_node(node); end - # source://prism//lib/prism/dispatcher.rb#2012 + # source://prism//lib/prism/dispatcher.rb#2028 def visit_range_node(node); end - # source://prism//lib/prism/dispatcher.rb#2018 + # source://prism//lib/prism/dispatcher.rb#2034 def visit_rational_node(node); end - # source://prism//lib/prism/dispatcher.rb#2024 + # source://prism//lib/prism/dispatcher.rb#2040 def visit_redo_node(node); end - # source://prism//lib/prism/dispatcher.rb#2030 + # source://prism//lib/prism/dispatcher.rb#2046 def visit_regular_expression_node(node); end - # source://prism//lib/prism/dispatcher.rb#2036 + # source://prism//lib/prism/dispatcher.rb#2052 def visit_required_keyword_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#2042 + # source://prism//lib/prism/dispatcher.rb#2058 def visit_required_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#2048 + # source://prism//lib/prism/dispatcher.rb#2064 def visit_rescue_modifier_node(node); end - # source://prism//lib/prism/dispatcher.rb#2054 + # source://prism//lib/prism/dispatcher.rb#2070 def visit_rescue_node(node); end - # source://prism//lib/prism/dispatcher.rb#2060 + # source://prism//lib/prism/dispatcher.rb#2076 def visit_rest_parameter_node(node); end - # source://prism//lib/prism/dispatcher.rb#2066 + # source://prism//lib/prism/dispatcher.rb#2082 def visit_retry_node(node); end - # source://prism//lib/prism/dispatcher.rb#2072 + # source://prism//lib/prism/dispatcher.rb#2088 def visit_return_node(node); end - # source://prism//lib/prism/dispatcher.rb#2078 + # source://prism//lib/prism/dispatcher.rb#2094 def visit_self_node(node); end - # source://prism//lib/prism/dispatcher.rb#2084 + # source://prism//lib/prism/dispatcher.rb#2100 def visit_shareable_constant_node(node); end - # source://prism//lib/prism/dispatcher.rb#2090 + # source://prism//lib/prism/dispatcher.rb#2106 def visit_singleton_class_node(node); end - # source://prism//lib/prism/dispatcher.rb#2096 + # source://prism//lib/prism/dispatcher.rb#2112 def visit_source_encoding_node(node); end - # source://prism//lib/prism/dispatcher.rb#2102 + # source://prism//lib/prism/dispatcher.rb#2118 def visit_source_file_node(node); end - # source://prism//lib/prism/dispatcher.rb#2108 + # source://prism//lib/prism/dispatcher.rb#2124 def visit_source_line_node(node); end - # source://prism//lib/prism/dispatcher.rb#2114 + # source://prism//lib/prism/dispatcher.rb#2130 def visit_splat_node(node); end - # source://prism//lib/prism/dispatcher.rb#2120 + # source://prism//lib/prism/dispatcher.rb#2136 def visit_statements_node(node); end - # source://prism//lib/prism/dispatcher.rb#2126 + # source://prism//lib/prism/dispatcher.rb#2142 def visit_string_node(node); end - # source://prism//lib/prism/dispatcher.rb#2132 + # source://prism//lib/prism/dispatcher.rb#2148 def visit_super_node(node); end - # source://prism//lib/prism/dispatcher.rb#2138 + # source://prism//lib/prism/dispatcher.rb#2154 def visit_symbol_node(node); end - # source://prism//lib/prism/dispatcher.rb#2144 + # source://prism//lib/prism/dispatcher.rb#2160 def visit_true_node(node); end - # source://prism//lib/prism/dispatcher.rb#2150 + # source://prism//lib/prism/dispatcher.rb#2166 def visit_undef_node(node); end - # source://prism//lib/prism/dispatcher.rb#2156 + # source://prism//lib/prism/dispatcher.rb#2172 def visit_unless_node(node); end - # source://prism//lib/prism/dispatcher.rb#2162 + # source://prism//lib/prism/dispatcher.rb#2178 def visit_until_node(node); end - # source://prism//lib/prism/dispatcher.rb#2168 + # source://prism//lib/prism/dispatcher.rb#2184 def visit_when_node(node); end - # source://prism//lib/prism/dispatcher.rb#2174 + # source://prism//lib/prism/dispatcher.rb#2190 def visit_while_node(node); end - # source://prism//lib/prism/dispatcher.rb#2180 + # source://prism//lib/prism/dispatcher.rb#2196 def visit_x_string_node(node); end - # source://prism//lib/prism/dispatcher.rb#2186 + # source://prism//lib/prism/dispatcher.rb#2202 def visit_yield_node(node); end end -# source://prism//lib/prism/dot_visitor.rb#14 +# source://prism//lib/prism/dot_visitor.rb#18 class Prism::DotVisitor < ::Prism::Visitor - # source://prism//lib/prism/dot_visitor.rb#106 + # source://prism//lib/prism/dot_visitor.rb#110 def initialize; end - # source://prism//lib/prism/dot_visitor.rb#103 + # source://prism//lib/prism/dot_visitor.rb#107 def digraph; end - # source://prism//lib/prism/dot_visitor.rb#111 + # source://prism//lib/prism/dot_visitor.rb#115 def to_dot; end - # source://prism//lib/prism/dot_visitor.rb#116 + # source://prism//lib/prism/dot_visitor.rb#120 def visit_alias_global_variable_node(node); end - # source://prism//lib/prism/dot_visitor.rb#141 + # source://prism//lib/prism/dot_visitor.rb#145 def visit_alias_method_node(node); end - # source://prism//lib/prism/dot_visitor.rb#166 + # source://prism//lib/prism/dot_visitor.rb#170 def visit_alternation_pattern_node(node); end - # source://prism//lib/prism/dot_visitor.rb#191 + # source://prism//lib/prism/dot_visitor.rb#195 def visit_and_node(node); end - # source://prism//lib/prism/dot_visitor.rb#216 + # source://prism//lib/prism/dot_visitor.rb#220 def visit_arguments_node(node); end - # source://prism//lib/prism/dot_visitor.rb#246 + # source://prism//lib/prism/dot_visitor.rb#250 def visit_array_node(node); end - # source://prism//lib/prism/dot_visitor.rb#286 + # source://prism//lib/prism/dot_visitor.rb#290 def visit_array_pattern_node(node); end - # source://prism//lib/prism/dot_visitor.rb#348 + # source://prism//lib/prism/dot_visitor.rb#352 def visit_assoc_node(node); end - # source://prism//lib/prism/dot_visitor.rb#375 + # source://prism//lib/prism/dot_visitor.rb#379 def visit_assoc_splat_node(node); end - # source://prism//lib/prism/dot_visitor.rb#398 + # source://prism//lib/prism/dot_visitor.rb#402 def visit_back_reference_read_node(node); end - # source://prism//lib/prism/dot_visitor.rb#415 + # source://prism//lib/prism/dot_visitor.rb#419 def visit_begin_node(node); end - # source://prism//lib/prism/dot_visitor.rb#463 + # source://prism//lib/prism/dot_visitor.rb#467 def visit_block_argument_node(node); end - # source://prism//lib/prism/dot_visitor.rb#486 + # source://prism//lib/prism/dot_visitor.rb#490 def visit_block_local_variable_node(node); end - # source://prism//lib/prism/dot_visitor.rb#506 + # source://prism//lib/prism/dot_visitor.rb#510 def visit_block_node(node); end - # source://prism//lib/prism/dot_visitor.rb#541 + # source://prism//lib/prism/dot_visitor.rb#545 def visit_block_parameter_node(node); end - # source://prism//lib/prism/dot_visitor.rb#569 + # source://prism//lib/prism/dot_visitor.rb#573 def visit_block_parameters_node(node); end - # source://prism//lib/prism/dot_visitor.rb#612 + # source://prism//lib/prism/dot_visitor.rb#616 def visit_break_node(node); end - # source://prism//lib/prism/dot_visitor.rb#635 + # source://prism//lib/prism/dot_visitor.rb#639 def visit_call_and_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#681 + # source://prism//lib/prism/dot_visitor.rb#685 def visit_call_node(node); end - # source://prism//lib/prism/dot_visitor.rb#739 + # source://prism//lib/prism/dot_visitor.rb#743 def visit_call_operator_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#788 + # source://prism//lib/prism/dot_visitor.rb#792 def visit_call_or_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#834 + # source://prism//lib/prism/dot_visitor.rb#838 def visit_call_target_node(node); end - # source://prism//lib/prism/dot_visitor.rb#864 + # source://prism//lib/prism/dot_visitor.rb#868 def visit_capture_pattern_node(node); end - # source://prism//lib/prism/dot_visitor.rb#889 + # source://prism//lib/prism/dot_visitor.rb#893 def visit_case_match_node(node); end - # source://prism//lib/prism/dot_visitor.rb#934 + # source://prism//lib/prism/dot_visitor.rb#938 def visit_case_node(node); end - # source://prism//lib/prism/dot_visitor.rb#979 + # source://prism//lib/prism/dot_visitor.rb#983 def visit_class_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1026 + # source://prism//lib/prism/dot_visitor.rb#1030 def visit_class_variable_and_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1053 + # source://prism//lib/prism/dot_visitor.rb#1057 def visit_class_variable_operator_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1083 + # source://prism//lib/prism/dot_visitor.rb#1087 def visit_class_variable_or_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1110 + # source://prism//lib/prism/dot_visitor.rb#1114 def visit_class_variable_read_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1127 + # source://prism//lib/prism/dot_visitor.rb#1131 def visit_class_variable_target_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1144 + # source://prism//lib/prism/dot_visitor.rb#1148 def visit_class_variable_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1171 + # source://prism//lib/prism/dot_visitor.rb#1175 def visit_constant_and_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1198 + # source://prism//lib/prism/dot_visitor.rb#1202 def visit_constant_operator_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1228 + # source://prism//lib/prism/dot_visitor.rb#1232 def visit_constant_or_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1255 + # source://prism//lib/prism/dot_visitor.rb#1259 def visit_constant_path_and_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1280 + # source://prism//lib/prism/dot_visitor.rb#1284 def visit_constant_path_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1309 + # source://prism//lib/prism/dot_visitor.rb#1313 def visit_constant_path_operator_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1337 + # source://prism//lib/prism/dot_visitor.rb#1341 def visit_constant_path_or_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1362 + # source://prism//lib/prism/dot_visitor.rb#1366 def visit_constant_path_target_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1391 + # source://prism//lib/prism/dot_visitor.rb#1395 def visit_constant_path_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1416 + # source://prism//lib/prism/dot_visitor.rb#1420 def visit_constant_read_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1433 + # source://prism//lib/prism/dot_visitor.rb#1437 def visit_constant_target_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1450 + # source://prism//lib/prism/dot_visitor.rb#1454 def visit_constant_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1477 + # source://prism//lib/prism/dot_visitor.rb#1481 def visit_def_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1546 + # source://prism//lib/prism/dot_visitor.rb#1550 def visit_defined_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1577 + # source://prism//lib/prism/dot_visitor.rb#1581 def visit_else_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1605 + # source://prism//lib/prism/dot_visitor.rb#1609 def visit_embedded_statements_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1631 + # source://prism//lib/prism/dot_visitor.rb#1635 def visit_embedded_variable_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1652 + # source://prism//lib/prism/dot_visitor.rb#1656 def visit_ensure_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1678 + # source://prism//lib/prism/dot_visitor.rb#1682 def visit_false_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1692 + # source://prism//lib/prism/dot_visitor.rb#1696 def visit_find_pattern_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1743 + # source://prism//lib/prism/dot_visitor.rb#1747 def visit_flip_flop_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1775 + # source://prism//lib/prism/dot_visitor.rb#1779 def visit_float_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1792 + # source://prism//lib/prism/dot_visitor.rb#1796 def visit_for_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1834 + # source://prism//lib/prism/dot_visitor.rb#1838 def visit_forwarding_arguments_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1848 + # source://prism//lib/prism/dot_visitor.rb#1852 def visit_forwarding_parameter_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1862 + # source://prism//lib/prism/dot_visitor.rb#1866 def visit_forwarding_super_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1882 + # source://prism//lib/prism/dot_visitor.rb#1886 def visit_global_variable_and_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1909 + # source://prism//lib/prism/dot_visitor.rb#1913 def visit_global_variable_operator_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1939 + # source://prism//lib/prism/dot_visitor.rb#1943 def visit_global_variable_or_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1966 + # source://prism//lib/prism/dot_visitor.rb#1970 def visit_global_variable_read_node(node); end - # source://prism//lib/prism/dot_visitor.rb#1983 + # source://prism//lib/prism/dot_visitor.rb#1987 def visit_global_variable_target_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2000 + # source://prism//lib/prism/dot_visitor.rb#2004 def visit_global_variable_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2027 + # source://prism//lib/prism/dot_visitor.rb#2031 def visit_hash_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2060 + # source://prism//lib/prism/dot_visitor.rb#2064 def visit_hash_pattern_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2109 + # source://prism//lib/prism/dot_visitor.rb#2113 def visit_if_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2154 + # source://prism//lib/prism/dot_visitor.rb#2158 def visit_imaginary_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2172 + # source://prism//lib/prism/dot_visitor.rb#2176 def visit_implicit_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2190 + # source://prism//lib/prism/dot_visitor.rb#2194 def visit_implicit_rest_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2204 + # source://prism//lib/prism/dot_visitor.rb#2208 def visit_in_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2236 + # source://prism//lib/prism/dot_visitor.rb#2240 def visit_index_and_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2289 + # source://prism//lib/prism/dot_visitor.rb#2293 def visit_index_operator_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2345 + # source://prism//lib/prism/dot_visitor.rb#2349 def visit_index_or_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2398 + # source://prism//lib/prism/dot_visitor.rb#2402 def visit_index_target_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2437 + # source://prism//lib/prism/dot_visitor.rb#2441 def visit_instance_variable_and_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2464 + # source://prism//lib/prism/dot_visitor.rb#2468 def visit_instance_variable_operator_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2494 + # source://prism//lib/prism/dot_visitor.rb#2498 def visit_instance_variable_or_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2521 + # source://prism//lib/prism/dot_visitor.rb#2525 def visit_instance_variable_read_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2538 + # source://prism//lib/prism/dot_visitor.rb#2542 def visit_instance_variable_target_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2555 + # source://prism//lib/prism/dot_visitor.rb#2559 def visit_instance_variable_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2582 + # source://prism//lib/prism/dot_visitor.rb#2586 def visit_integer_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2602 + # source://prism//lib/prism/dot_visitor.rb#2606 def visit_interpolated_match_last_line_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2638 + # source://prism//lib/prism/dot_visitor.rb#2642 def visit_interpolated_regular_expression_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2674 + # source://prism//lib/prism/dot_visitor.rb#2678 def visit_interpolated_string_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2714 + # source://prism//lib/prism/dot_visitor.rb#2718 def visit_interpolated_symbol_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2751 + # source://prism//lib/prism/dot_visitor.rb#2755 def visit_interpolated_x_string_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2784 + # source://prism//lib/prism/dot_visitor.rb#2788 def visit_it_local_variable_read_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2798 + # source://prism//lib/prism/dot_visitor.rb#2802 def visit_it_parameters_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2812 + # source://prism//lib/prism/dot_visitor.rb#2816 def visit_keyword_hash_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2842 + # source://prism//lib/prism/dot_visitor.rb#2846 def visit_keyword_rest_parameter_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2870 + # source://prism//lib/prism/dot_visitor.rb#2874 def visit_lambda_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2908 + # source://prism//lib/prism/dot_visitor.rb#2912 def visit_local_variable_and_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2938 + # source://prism//lib/prism/dot_visitor.rb#2942 def visit_local_variable_operator_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#2971 + # source://prism//lib/prism/dot_visitor.rb#2975 def visit_local_variable_or_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3001 + # source://prism//lib/prism/dot_visitor.rb#3005 def visit_local_variable_read_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3021 + # source://prism//lib/prism/dot_visitor.rb#3025 def visit_local_variable_target_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3041 + # source://prism//lib/prism/dot_visitor.rb#3045 def visit_local_variable_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3071 + # source://prism//lib/prism/dot_visitor.rb#3075 def visit_match_last_line_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3100 + # source://prism//lib/prism/dot_visitor.rb#3104 def visit_match_predicate_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3125 + # source://prism//lib/prism/dot_visitor.rb#3129 def visit_match_required_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3150 + # source://prism//lib/prism/dot_visitor.rb#3154 def visit_match_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3181 + # source://prism//lib/prism/dot_visitor.rb#3185 def visit_missing_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3195 + # source://prism//lib/prism/dot_visitor.rb#3199 def visit_module_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3231 + # source://prism//lib/prism/dot_visitor.rb#3235 def visit_multi_target_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3287 + # source://prism//lib/prism/dot_visitor.rb#3291 def visit_multi_write_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3350 + # source://prism//lib/prism/dot_visitor.rb#3354 def visit_next_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3373 + # source://prism//lib/prism/dot_visitor.rb#3377 def visit_nil_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3387 + # source://prism//lib/prism/dot_visitor.rb#3391 def visit_no_keywords_parameter_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3407 + # source://prism//lib/prism/dot_visitor.rb#3411 def visit_numbered_parameters_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3424 + # source://prism//lib/prism/dot_visitor.rb#3428 def visit_numbered_reference_read_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3441 + # source://prism//lib/prism/dot_visitor.rb#3445 def visit_optional_keyword_parameter_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3468 + # source://prism//lib/prism/dot_visitor.rb#3472 def visit_optional_parameter_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3498 + # source://prism//lib/prism/dot_visitor.rb#3502 def visit_or_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3523 + # source://prism//lib/prism/dot_visitor.rb#3527 def visit_parameters_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3607 + # source://prism//lib/prism/dot_visitor.rb#3611 def visit_parentheses_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3636 + # source://prism//lib/prism/dot_visitor.rb#3640 def visit_pinned_expression_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3663 + # source://prism//lib/prism/dot_visitor.rb#3667 def visit_pinned_variable_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3684 + # source://prism//lib/prism/dot_visitor.rb#3688 def visit_post_execution_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3713 + # source://prism//lib/prism/dot_visitor.rb#3717 def visit_pre_execution_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3742 + # source://prism//lib/prism/dot_visitor.rb#3746 def visit_program_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3763 + # source://prism//lib/prism/dot_visitor.rb#3767 def visit_range_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3795 + # source://prism//lib/prism/dot_visitor.rb#3799 def visit_rational_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3818 + # source://prism//lib/prism/dot_visitor.rb#3822 def visit_redo_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3832 + # source://prism//lib/prism/dot_visitor.rb#3836 def visit_regular_expression_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3861 + # source://prism//lib/prism/dot_visitor.rb#3865 def visit_required_keyword_parameter_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3884 + # source://prism//lib/prism/dot_visitor.rb#3888 def visit_required_parameter_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3904 + # source://prism//lib/prism/dot_visitor.rb#3908 def visit_rescue_modifier_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3929 + # source://prism//lib/prism/dot_visitor.rb#3933 def visit_rescue_node(node); end - # source://prism//lib/prism/dot_visitor.rb#3987 + # source://prism//lib/prism/dot_visitor.rb#3991 def visit_rest_parameter_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4015 + # source://prism//lib/prism/dot_visitor.rb#4019 def visit_retry_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4029 + # source://prism//lib/prism/dot_visitor.rb#4033 def visit_return_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4052 + # source://prism//lib/prism/dot_visitor.rb#4056 def visit_self_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4066 + # source://prism//lib/prism/dot_visitor.rb#4070 def visit_shareable_constant_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4087 + # source://prism//lib/prism/dot_visitor.rb#4091 def visit_singleton_class_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4123 + # source://prism//lib/prism/dot_visitor.rb#4127 def visit_source_encoding_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4137 + # source://prism//lib/prism/dot_visitor.rb#4141 def visit_source_file_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4157 + # source://prism//lib/prism/dot_visitor.rb#4161 def visit_source_line_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4171 + # source://prism//lib/prism/dot_visitor.rb#4175 def visit_splat_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4194 + # source://prism//lib/prism/dot_visitor.rb#4198 def visit_statements_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4221 + # source://prism//lib/prism/dot_visitor.rb#4225 def visit_string_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4254 + # source://prism//lib/prism/dot_visitor.rb#4258 def visit_super_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4293 + # source://prism//lib/prism/dot_visitor.rb#4297 def visit_symbol_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4328 + # source://prism//lib/prism/dot_visitor.rb#4332 def visit_true_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4342 + # source://prism//lib/prism/dot_visitor.rb#4346 def visit_undef_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4372 + # source://prism//lib/prism/dot_visitor.rb#4376 def visit_unless_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4415 + # source://prism//lib/prism/dot_visitor.rb#4419 def visit_until_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4455 + # source://prism//lib/prism/dot_visitor.rb#4459 def visit_when_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4496 + # source://prism//lib/prism/dot_visitor.rb#4500 def visit_while_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4536 + # source://prism//lib/prism/dot_visitor.rb#4540 def visit_x_string_node(node); end - # source://prism//lib/prism/dot_visitor.rb#4565 + # source://prism//lib/prism/dot_visitor.rb#4569 def visit_yield_node(node); end private - # source://prism//lib/prism/dot_visitor.rb#4611 + # source://prism//lib/prism/dot_visitor.rb#4615 def arguments_node_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4623 + # source://prism//lib/prism/dot_visitor.rb#4627 def array_node_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4631 + # source://prism//lib/prism/dot_visitor.rb#4635 def call_node_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4642 + # source://prism//lib/prism/dot_visitor.rb#4646 def encoding_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4651 + # source://prism//lib/prism/dot_visitor.rb#4655 def integer_base_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4662 + # source://prism//lib/prism/dot_visitor.rb#4666 def interpolated_string_node_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4671 + # source://prism//lib/prism/dot_visitor.rb#4675 def keyword_hash_node_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4605 + # source://prism//lib/prism/dot_visitor.rb#4609 def location_inspect(location); end - # source://prism//lib/prism/dot_visitor.rb#4679 + # source://prism//lib/prism/dot_visitor.rb#4683 def loop_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4600 + # source://prism//lib/prism/dot_visitor.rb#4604 def node_id(node); end - # source://prism//lib/prism/dot_visitor.rb#4687 + # source://prism//lib/prism/dot_visitor.rb#4691 def parameter_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4695 + # source://prism//lib/prism/dot_visitor.rb#4699 def parentheses_node_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4703 + # source://prism//lib/prism/dot_visitor.rb#4707 def range_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4711 + # source://prism//lib/prism/dot_visitor.rb#4715 def regular_expression_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4729 + # source://prism//lib/prism/dot_visitor.rb#4733 def shareable_constant_node_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4739 + # source://prism//lib/prism/dot_visitor.rb#4743 def string_flags_inspect(node); end - # source://prism//lib/prism/dot_visitor.rb#4750 + # source://prism//lib/prism/dot_visitor.rb#4754 def symbol_flags_inspect(node); end end -# source://prism//lib/prism/dot_visitor.rb#59 +# source://prism//lib/prism/dot_visitor.rb#63 class Prism::DotVisitor::Digraph - # source://prism//lib/prism/dot_visitor.rb#62 + # source://prism//lib/prism/dot_visitor.rb#66 def initialize; end - # source://prism//lib/prism/dot_visitor.rb#76 + # source://prism//lib/prism/dot_visitor.rb#80 def edge(value); end - # source://prism//lib/prism/dot_visitor.rb#60 + # source://prism//lib/prism/dot_visitor.rb#64 def edges; end - # source://prism//lib/prism/dot_visitor.rb#68 + # source://prism//lib/prism/dot_visitor.rb#72 def node(value); end - # source://prism//lib/prism/dot_visitor.rb#60 + # source://prism//lib/prism/dot_visitor.rb#64 def nodes; end - # source://prism//lib/prism/dot_visitor.rb#80 + # source://prism//lib/prism/dot_visitor.rb#84 def to_dot; end - # source://prism//lib/prism/dot_visitor.rb#72 + # source://prism//lib/prism/dot_visitor.rb#76 def waypoint(value); end - # source://prism//lib/prism/dot_visitor.rb#60 + # source://prism//lib/prism/dot_visitor.rb#64 def waypoints; end end -# source://prism//lib/prism/dot_visitor.rb#15 +# source://prism//lib/prism/dot_visitor.rb#19 class Prism::DotVisitor::Field - # source://prism//lib/prism/dot_visitor.rb#18 + # source://prism//lib/prism/dot_visitor.rb#22 def initialize(name, value, port); end - # source://prism//lib/prism/dot_visitor.rb#16 + # source://prism//lib/prism/dot_visitor.rb#20 def name; end - # source://prism//lib/prism/dot_visitor.rb#16 + # source://prism//lib/prism/dot_visitor.rb#20 def port; end - # source://prism//lib/prism/dot_visitor.rb#24 + # source://prism//lib/prism/dot_visitor.rb#28 def to_dot; end - # source://prism//lib/prism/dot_visitor.rb#16 + # source://prism//lib/prism/dot_visitor.rb#20 def value; end end -# source://prism//lib/prism/dot_visitor.rb#33 +# source://prism//lib/prism/dot_visitor.rb#37 class Prism::DotVisitor::Table - # source://prism//lib/prism/dot_visitor.rb#36 + # source://prism//lib/prism/dot_visitor.rb#40 def initialize(name); end - # source://prism//lib/prism/dot_visitor.rb#41 + # source://prism//lib/prism/dot_visitor.rb#45 def field(name, value = T.unsafe(nil), port: T.unsafe(nil)); end - # source://prism//lib/prism/dot_visitor.rb#34 + # source://prism//lib/prism/dot_visitor.rb#38 def fields; end - # source://prism//lib/prism/dot_visitor.rb#34 + # source://prism//lib/prism/dot_visitor.rb#38 def name; end - # source://prism//lib/prism/dot_visitor.rb#45 + # source://prism//lib/prism/dot_visitor.rb#49 def to_dot; end end -# source://prism//lib/prism/node.rb#6294 +# source://prism//lib/prism/node.rb#6324 class Prism::ElseNode < ::Prism::Node - # source://prism//lib/prism/node.rb#6296 + # source://prism//lib/prism/node.rb#6326 sig do params( source: Prism::Source, @@ -9428,26 +9436,26 @@ class Prism::ElseNode < ::Prism::Node end def initialize(source, node_id, location, flags, else_keyword_loc, statements, end_keyword_loc); end - # source://prism//lib/prism/node.rb#6403 + # source://prism//lib/prism/node.rb#6433 def ===(other); end - # source://prism//lib/prism/node.rb#6307 + # source://prism//lib/prism/node.rb#6337 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#6312 + # source://prism//lib/prism/node.rb#6342 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#6324 + # source://prism//lib/prism/node.rb#6354 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#6317 + # source://prism//lib/prism/node.rb#6347 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#6329 + # source://prism//lib/prism/node.rb#6359 sig do params( node_id: Integer, @@ -9460,71 +9468,71 @@ class Prism::ElseNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), else_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#6312 + # source://prism//lib/prism/node.rb#6342 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#6337 + # source://prism//lib/prism/node.rb#6367 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#6377 + # source://prism//lib/prism/node.rb#6407 sig { returns(String) } def else_keyword; end - # source://prism//lib/prism/node.rb#6342 + # source://prism//lib/prism/node.rb#6372 sig { returns(Prism::Location) } def else_keyword_loc; end - # source://prism//lib/prism/node.rb#6382 + # source://prism//lib/prism/node.rb#6412 sig { returns(T.nilable(String)) } def end_keyword; end - # source://prism//lib/prism/node.rb#6358 + # source://prism//lib/prism/node.rb#6388 sig { returns(T.nilable(Prism::Location)) } def end_keyword_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#6387 + # source://prism//lib/prism/node.rb#6417 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#6350 + # source://prism//lib/prism/node.rb#6380 def save_else_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#6372 + # source://prism//lib/prism/node.rb#6402 def save_end_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#6355 + # source://prism//lib/prism/node.rb#6385 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#6392 + # source://prism//lib/prism/node.rb#6422 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#6397 + # source://prism//lib/prism/node.rb#6427 def type; end end end -# source://prism//lib/prism/parse_result.rb#561 +# source://prism//lib/prism/parse_result.rb#562 class Prism::EmbDocComment < ::Prism::Comment - # source://prism//lib/prism/parse_result.rb#568 + # source://prism//lib/prism/parse_result.rb#569 sig { returns(String) } def inspect; end - # source://prism//lib/prism/parse_result.rb#563 + # source://prism//lib/prism/parse_result.rb#564 sig { override.returns(T::Boolean) } def trailing?; end end -# source://prism//lib/prism/node.rb#6415 +# source://prism//lib/prism/node.rb#6445 class Prism::EmbeddedStatementsNode < ::Prism::Node - # source://prism//lib/prism/node.rb#6417 + # source://prism//lib/prism/node.rb#6447 sig do params( source: Prism::Source, @@ -9538,34 +9546,34 @@ class Prism::EmbeddedStatementsNode < ::Prism::Node end def initialize(source, node_id, location, flags, opening_loc, statements, closing_loc); end - # source://prism//lib/prism/node.rb#6518 + # source://prism//lib/prism/node.rb#6548 def ===(other); end - # source://prism//lib/prism/node.rb#6428 + # source://prism//lib/prism/node.rb#6458 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#6433 + # source://prism//lib/prism/node.rb#6463 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#6497 + # source://prism//lib/prism/node.rb#6527 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#6479 + # source://prism//lib/prism/node.rb#6509 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#6445 + # source://prism//lib/prism/node.rb#6475 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#6438 + # source://prism//lib/prism/node.rb#6468 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#6450 + # source://prism//lib/prism/node.rb#6480 sig do params( node_id: Integer, @@ -9578,52 +9586,52 @@ class Prism::EmbeddedStatementsNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), statements: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#6433 + # source://prism//lib/prism/node.rb#6463 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#6458 + # source://prism//lib/prism/node.rb#6488 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#6502 + # source://prism//lib/prism/node.rb#6532 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#6492 + # source://prism//lib/prism/node.rb#6522 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#6463 + # source://prism//lib/prism/node.rb#6493 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node.rb#6487 + # source://prism//lib/prism/node.rb#6517 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#6471 + # source://prism//lib/prism/node.rb#6501 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#6476 + # source://prism//lib/prism/node.rb#6506 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#6507 + # source://prism//lib/prism/node.rb#6537 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#6512 + # source://prism//lib/prism/node.rb#6542 def type; end end end -# source://prism//lib/prism/node.rb#6530 +# source://prism//lib/prism/node.rb#6560 class Prism::EmbeddedVariableNode < ::Prism::Node - # source://prism//lib/prism/node.rb#6532 + # source://prism//lib/prism/node.rb#6562 sig do params( source: Prism::Source, @@ -9636,26 +9644,26 @@ class Prism::EmbeddedVariableNode < ::Prism::Node end def initialize(source, node_id, location, flags, operator_loc, variable); end - # source://prism//lib/prism/node.rb#6612 + # source://prism//lib/prism/node.rb#6642 def ===(other); end - # source://prism//lib/prism/node.rb#6542 + # source://prism//lib/prism/node.rb#6572 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#6547 + # source://prism//lib/prism/node.rb#6577 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#6557 + # source://prism//lib/prism/node.rb#6587 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#6552 + # source://prism//lib/prism/node.rb#6582 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#6562 + # source://prism//lib/prism/node.rb#6592 sig do params( node_id: Integer, @@ -9667,61 +9675,61 @@ class Prism::EmbeddedVariableNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), operator_loc: T.unsafe(nil), variable: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#6547 + # source://prism//lib/prism/node.rb#6577 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#6570 + # source://prism//lib/prism/node.rb#6600 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#6596 + # source://prism//lib/prism/node.rb#6626 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#6591 + # source://prism//lib/prism/node.rb#6621 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#6575 + # source://prism//lib/prism/node.rb#6605 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#6583 + # source://prism//lib/prism/node.rb#6613 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#6601 + # source://prism//lib/prism/node.rb#6631 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#6588 + # source://prism//lib/prism/node.rb#6618 sig do returns(T.any(Prism::InstanceVariableReadNode, Prism::ClassVariableReadNode, Prism::GlobalVariableReadNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode)) end def variable; end class << self - # source://prism//lib/prism/node.rb#6606 + # source://prism//lib/prism/node.rb#6636 def type; end end end -# source://prism//lib/prism/node.rb#18498 +# source://prism//lib/prism/node.rb#18669 # Flags for nodes that have unescaped content. module Prism::EncodingFlags; end -# source://prism//lib/prism/node.rb#18503 +# source://prism//lib/prism/node.rb#18674 Prism::EncodingFlags::FORCED_BINARY_ENCODING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18500 +# source://prism//lib/prism/node.rb#18671 Prism::EncodingFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#6627 +# source://prism//lib/prism/node.rb#6657 class Prism::EnsureNode < ::Prism::Node - # source://prism//lib/prism/node.rb#6629 + # source://prism//lib/prism/node.rb#6659 sig do params( source: Prism::Source, @@ -9735,26 +9743,26 @@ class Prism::EnsureNode < ::Prism::Node end def initialize(source, node_id, location, flags, ensure_keyword_loc, statements, end_keyword_loc); end - # source://prism//lib/prism/node.rb#6730 + # source://prism//lib/prism/node.rb#6760 def ===(other); end - # source://prism//lib/prism/node.rb#6640 + # source://prism//lib/prism/node.rb#6670 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#6645 + # source://prism//lib/prism/node.rb#6675 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#6657 + # source://prism//lib/prism/node.rb#6687 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#6650 + # source://prism//lib/prism/node.rb#6680 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#6662 + # source://prism//lib/prism/node.rb#6692 sig do params( node_id: Integer, @@ -9767,121 +9775,121 @@ class Prism::EnsureNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), ensure_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#6645 + # source://prism//lib/prism/node.rb#6675 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#6670 + # source://prism//lib/prism/node.rb#6700 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#6709 + # source://prism//lib/prism/node.rb#6739 sig { returns(String) } def end_keyword; end - # source://prism//lib/prism/node.rb#6691 + # source://prism//lib/prism/node.rb#6721 sig { returns(Prism::Location) } def end_keyword_loc; end - # source://prism//lib/prism/node.rb#6704 + # source://prism//lib/prism/node.rb#6734 sig { returns(String) } def ensure_keyword; end - # source://prism//lib/prism/node.rb#6675 + # source://prism//lib/prism/node.rb#6705 sig { returns(Prism::Location) } def ensure_keyword_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#6714 + # source://prism//lib/prism/node.rb#6744 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#6699 + # source://prism//lib/prism/node.rb#6729 def save_end_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#6683 + # source://prism//lib/prism/node.rb#6713 def save_ensure_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#6688 + # source://prism//lib/prism/node.rb#6718 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#6719 + # source://prism//lib/prism/node.rb#6749 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#6724 + # source://prism//lib/prism/node.rb#6754 def type; end end end -# source://prism//lib/prism/node.rb#6742 +# source://prism//lib/prism/node.rb#6772 class Prism::FalseNode < ::Prism::Node - # source://prism//lib/prism/node.rb#6744 + # source://prism//lib/prism/node.rb#6774 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#6801 + # source://prism//lib/prism/node.rb#6831 def ===(other); end - # source://prism//lib/prism/node.rb#6752 + # source://prism//lib/prism/node.rb#6782 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#6757 + # source://prism//lib/prism/node.rb#6787 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#6767 + # source://prism//lib/prism/node.rb#6797 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#6762 + # source://prism//lib/prism/node.rb#6792 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#6772 + # source://prism//lib/prism/node.rb#6802 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::FalseNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#6757 + # source://prism//lib/prism/node.rb#6787 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#6780 + # source://prism//lib/prism/node.rb#6810 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#6785 + # source://prism//lib/prism/node.rb#6815 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#6790 + # source://prism//lib/prism/node.rb#6820 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#6795 + # source://prism//lib/prism/node.rb#6825 def type; end end end -# source://prism//lib/prism/node.rb#6816 +# source://prism//lib/prism/node.rb#6849 class Prism::FindPatternNode < ::Prism::Node - # source://prism//lib/prism/node.rb#6818 + # source://prism//lib/prism/node.rb#6851 sig do params( source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), left: Prism::SplatNode, requireds: T::Array[Prism::Node], right: T.any(Prism::SplatNode, Prism::MissingNode), @@ -9891,44 +9899,44 @@ class Prism::FindPatternNode < ::Prism::Node end def initialize(source, node_id, location, flags, constant, left, requireds, right, opening_loc, closing_loc); end - # source://prism//lib/prism/node.rb#6946 + # source://prism//lib/prism/node.rb#7012 def ===(other); end - # source://prism//lib/prism/node.rb#6832 + # source://prism//lib/prism/node.rb#6865 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#6837 + # source://prism//lib/prism/node.rb#6870 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#6925 + # source://prism//lib/prism/node.rb#6991 sig { returns(T.nilable(String)) } def closing; end - # source://prism//lib/prism/node.rb#6901 + # source://prism//lib/prism/node.rb#6967 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end - # source://prism//lib/prism/node.rb#6852 + # source://prism//lib/prism/node.rb#6885 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#6842 + # source://prism//lib/prism/node.rb#6875 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#6870 - sig { returns(T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode))) } + # source://prism//lib/prism/node.rb#6906 + sig { returns(T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode))) } def constant; end - # source://prism//lib/prism/node.rb#6857 + # source://prism//lib/prism/node.rb#6890 sig do params( node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), left: Prism::SplatNode, requireds: T::Array[Prism::Node], right: T.any(Prism::SplatNode, Prism::MissingNode), @@ -9938,60 +9946,60 @@ class Prism::FindPatternNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), constant: T.unsafe(nil), left: T.unsafe(nil), requireds: T.unsafe(nil), right: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#6837 + # source://prism//lib/prism/node.rb#6870 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#6865 + # source://prism//lib/prism/node.rb#6898 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#6930 + # source://prism//lib/prism/node.rb#6996 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#6873 + # source://prism//lib/prism/node.rb#6915 sig { returns(Prism::SplatNode) } def left; end - # source://prism//lib/prism/node.rb#6920 + # source://prism//lib/prism/node.rb#6986 sig { returns(T.nilable(String)) } def opening; end - # source://prism//lib/prism/node.rb#6882 + # source://prism//lib/prism/node.rb#6942 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end - # source://prism//lib/prism/node.rb#6876 + # source://prism//lib/prism/node.rb#6924 sig { returns(T::Array[Prism::Node]) } def requireds; end - # source://prism//lib/prism/node.rb#6879 + # source://prism//lib/prism/node.rb#6933 sig { returns(T.any(Prism::SplatNode, Prism::MissingNode)) } def right; end - # source://prism//lib/prism/node.rb#6915 + # source://prism//lib/prism/node.rb#6981 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#6896 + # source://prism//lib/prism/node.rb#6956 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#6935 + # source://prism//lib/prism/node.rb#7001 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#6940 + # source://prism//lib/prism/node.rb#7006 def type; end end end -# source://prism//lib/prism/node.rb#6962 +# source://prism//lib/prism/node.rb#7028 class Prism::FlipFlopNode < ::Prism::Node - # source://prism//lib/prism/node.rb#6964 + # source://prism//lib/prism/node.rb#7030 sig do params( source: Prism::Source, @@ -10005,26 +10013,26 @@ class Prism::FlipFlopNode < ::Prism::Node end def initialize(source, node_id, location, flags, left, right, operator_loc); end - # source://prism//lib/prism/node.rb#7056 + # source://prism//lib/prism/node.rb#7122 def ===(other); end - # source://prism//lib/prism/node.rb#6975 + # source://prism//lib/prism/node.rb#7041 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#6980 + # source://prism//lib/prism/node.rb#7046 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#6993 + # source://prism//lib/prism/node.rb#7059 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#6985 + # source://prism//lib/prism/node.rb#7051 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#6998 + # source://prism//lib/prism/node.rb#7064 sig do params( node_id: Integer, @@ -10037,115 +10045,115 @@ class Prism::FlipFlopNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#6980 + # source://prism//lib/prism/node.rb#7046 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#7006 + # source://prism//lib/prism/node.rb#7072 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#7011 + # source://prism//lib/prism/node.rb#7077 sig { returns(T::Boolean) } def exclude_end?; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#7040 + # source://prism//lib/prism/node.rb#7106 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#7016 + # source://prism//lib/prism/node.rb#7082 sig { returns(T.nilable(Prism::Node)) } def left; end - # source://prism//lib/prism/node.rb#7035 + # source://prism//lib/prism/node.rb#7101 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#7022 + # source://prism//lib/prism/node.rb#7088 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#7019 + # source://prism//lib/prism/node.rb#7085 sig { returns(T.nilable(Prism::Node)) } def right; end - # source://prism//lib/prism/node.rb#7030 + # source://prism//lib/prism/node.rb#7096 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#7045 + # source://prism//lib/prism/node.rb#7111 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#7050 + # source://prism//lib/prism/node.rb#7116 def type; end end end -# source://prism//lib/prism/node.rb#7069 +# source://prism//lib/prism/node.rb#7135 class Prism::FloatNode < ::Prism::Node - # source://prism//lib/prism/node.rb#7071 + # source://prism//lib/prism/node.rb#7137 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, value: Float).void } def initialize(source, node_id, location, flags, value); end - # source://prism//lib/prism/node.rb#7132 + # source://prism//lib/prism/node.rb#7198 def ===(other); end - # source://prism//lib/prism/node.rb#7080 + # source://prism//lib/prism/node.rb#7146 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#7085 + # source://prism//lib/prism/node.rb#7151 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#7095 + # source://prism//lib/prism/node.rb#7161 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#7090 + # source://prism//lib/prism/node.rb#7156 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#7100 + # source://prism//lib/prism/node.rb#7166 sig { params(node_id: Integer, location: Prism::Location, flags: Integer, value: Float).returns(Prism::FloatNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#7085 + # source://prism//lib/prism/node.rb#7151 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#7108 + # source://prism//lib/prism/node.rb#7174 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#7116 + # source://prism//lib/prism/node.rb#7182 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#7121 + # source://prism//lib/prism/node.rb#7187 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#7113 + # source://prism//lib/prism/node.rb#7179 sig { returns(Float) } def value; end class << self - # source://prism//lib/prism/node.rb#7126 + # source://prism//lib/prism/node.rb#7192 def type; end end end -# source://prism//lib/prism/node.rb#7142 +# source://prism//lib/prism/node.rb#7208 class Prism::ForNode < ::Prism::Node - # source://prism//lib/prism/node.rb#7144 + # source://prism//lib/prism/node.rb#7210 sig do params( source: Prism::Source, @@ -10163,30 +10171,30 @@ class Prism::ForNode < ::Prism::Node end def initialize(source, node_id, location, flags, index, collection, statements, for_keyword_loc, in_keyword_loc, do_keyword_loc, end_keyword_loc); end - # source://prism//lib/prism/node.rb#7322 + # source://prism//lib/prism/node.rb#7388 def ===(other); end - # source://prism//lib/prism/node.rb#7159 + # source://prism//lib/prism/node.rb#7225 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#7164 + # source://prism//lib/prism/node.rb#7230 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#7205 + # source://prism//lib/prism/node.rb#7271 sig { returns(Prism::Node) } def collection; end - # source://prism//lib/prism/node.rb#7178 + # source://prism//lib/prism/node.rb#7244 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#7169 + # source://prism//lib/prism/node.rb#7235 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#7183 + # source://prism//lib/prism/node.rb#7249 sig do params( node_id: Integer, @@ -10203,196 +10211,196 @@ class Prism::ForNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), index: T.unsafe(nil), collection: T.unsafe(nil), statements: T.unsafe(nil), for_keyword_loc: T.unsafe(nil), in_keyword_loc: T.unsafe(nil), do_keyword_loc: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#7164 + # source://prism//lib/prism/node.rb#7230 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#7191 + # source://prism//lib/prism/node.rb#7257 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#7296 + # source://prism//lib/prism/node.rb#7362 sig { returns(T.nilable(String)) } def do_keyword; end - # source://prism//lib/prism/node.rb#7251 + # source://prism//lib/prism/node.rb#7317 sig { returns(T.nilable(Prism::Location)) } def do_keyword_loc; end - # source://prism//lib/prism/node.rb#7301 + # source://prism//lib/prism/node.rb#7367 sig { returns(String) } def end_keyword; end - # source://prism//lib/prism/node.rb#7273 + # source://prism//lib/prism/node.rb#7339 sig { returns(Prism::Location) } def end_keyword_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#7286 + # source://prism//lib/prism/node.rb#7352 sig { returns(String) } def for_keyword; end - # source://prism//lib/prism/node.rb#7219 + # source://prism//lib/prism/node.rb#7285 sig { returns(Prism::Location) } def for_keyword_loc; end - # source://prism//lib/prism/node.rb#7291 + # source://prism//lib/prism/node.rb#7357 sig { returns(String) } def in_keyword; end - # source://prism//lib/prism/node.rb#7235 + # source://prism//lib/prism/node.rb#7301 sig { returns(Prism::Location) } def in_keyword_loc; end - # source://prism//lib/prism/node.rb#7199 + # source://prism//lib/prism/node.rb#7265 sig do returns(T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::MultiTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::MissingNode)) end def index; end - # source://prism//lib/prism/node.rb#7306 + # source://prism//lib/prism/node.rb#7372 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#7265 + # source://prism//lib/prism/node.rb#7331 def save_do_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#7281 + # source://prism//lib/prism/node.rb#7347 def save_end_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#7227 + # source://prism//lib/prism/node.rb#7293 def save_for_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#7243 + # source://prism//lib/prism/node.rb#7309 def save_in_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#7213 + # source://prism//lib/prism/node.rb#7279 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#7311 + # source://prism//lib/prism/node.rb#7377 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#7316 + # source://prism//lib/prism/node.rb#7382 def type; end end end -# source://prism//lib/prism/node.rb#7340 +# source://prism//lib/prism/node.rb#7406 class Prism::ForwardingArgumentsNode < ::Prism::Node - # source://prism//lib/prism/node.rb#7342 + # source://prism//lib/prism/node.rb#7408 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#7399 + # source://prism//lib/prism/node.rb#7465 def ===(other); end - # source://prism//lib/prism/node.rb#7350 + # source://prism//lib/prism/node.rb#7416 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#7355 + # source://prism//lib/prism/node.rb#7421 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#7365 + # source://prism//lib/prism/node.rb#7431 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#7360 + # source://prism//lib/prism/node.rb#7426 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#7370 + # source://prism//lib/prism/node.rb#7436 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::ForwardingArgumentsNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#7355 + # source://prism//lib/prism/node.rb#7421 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#7378 + # source://prism//lib/prism/node.rb#7444 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#7383 + # source://prism//lib/prism/node.rb#7449 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#7388 + # source://prism//lib/prism/node.rb#7454 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#7393 + # source://prism//lib/prism/node.rb#7459 def type; end end end -# source://prism//lib/prism/node.rb#7409 +# source://prism//lib/prism/node.rb#7475 class Prism::ForwardingParameterNode < ::Prism::Node - # source://prism//lib/prism/node.rb#7411 + # source://prism//lib/prism/node.rb#7477 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#7468 + # source://prism//lib/prism/node.rb#7534 def ===(other); end - # source://prism//lib/prism/node.rb#7419 + # source://prism//lib/prism/node.rb#7485 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#7424 + # source://prism//lib/prism/node.rb#7490 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#7434 + # source://prism//lib/prism/node.rb#7500 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#7429 + # source://prism//lib/prism/node.rb#7495 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#7439 + # source://prism//lib/prism/node.rb#7505 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::ForwardingParameterNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#7424 + # source://prism//lib/prism/node.rb#7490 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#7447 + # source://prism//lib/prism/node.rb#7513 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#7452 + # source://prism//lib/prism/node.rb#7518 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#7457 + # source://prism//lib/prism/node.rb#7523 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#7462 + # source://prism//lib/prism/node.rb#7528 def type; end end end -# source://prism//lib/prism/node.rb#7477 +# source://prism//lib/prism/node.rb#7543 class Prism::ForwardingSuperNode < ::Prism::Node - # source://prism//lib/prism/node.rb#7479 + # source://prism//lib/prism/node.rb#7545 sig do params( source: Prism::Source, @@ -10404,30 +10412,30 @@ class Prism::ForwardingSuperNode < ::Prism::Node end def initialize(source, node_id, location, flags, block); end - # source://prism//lib/prism/node.rb#7542 + # source://prism//lib/prism/node.rb#7608 def ===(other); end - # source://prism//lib/prism/node.rb#7488 + # source://prism//lib/prism/node.rb#7554 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#7523 + # source://prism//lib/prism/node.rb#7589 sig { returns(T.nilable(Prism::BlockNode)) } def block; end - # source://prism//lib/prism/node.rb#7493 + # source://prism//lib/prism/node.rb#7559 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#7505 + # source://prism//lib/prism/node.rb#7571 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#7498 + # source://prism//lib/prism/node.rb#7564 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#7510 + # source://prism//lib/prism/node.rb#7576 sig do params( node_id: Integer, @@ -10438,34 +10446,34 @@ class Prism::ForwardingSuperNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), block: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#7493 + # source://prism//lib/prism/node.rb#7559 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#7518 + # source://prism//lib/prism/node.rb#7584 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#7526 + # source://prism//lib/prism/node.rb#7592 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#7531 + # source://prism//lib/prism/node.rb#7597 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#7536 + # source://prism//lib/prism/node.rb#7602 def type; end end end -# source://prism//lib/prism/node.rb#7552 +# source://prism//lib/prism/node.rb#7618 class Prism::GlobalVariableAndWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#7554 + # source://prism//lib/prism/node.rb#7620 sig do params( source: Prism::Source, @@ -10480,26 +10488,26 @@ class Prism::GlobalVariableAndWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, operator_loc, value); end - # source://prism//lib/prism/node.rb#7652 + # source://prism//lib/prism/node.rb#7718 def ===(other); end - # source://prism//lib/prism/node.rb#7566 + # source://prism//lib/prism/node.rb#7632 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#7571 + # source://prism//lib/prism/node.rb#7637 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#7581 + # source://prism//lib/prism/node.rb#7647 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#7576 + # source://prism//lib/prism/node.rb#7642 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#7586 + # source://prism//lib/prism/node.rb#7652 sig do params( node_id: Integer, @@ -10513,63 +10521,63 @@ class Prism::GlobalVariableAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#7571 + # source://prism//lib/prism/node.rb#7637 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#7594 + # source://prism//lib/prism/node.rb#7660 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#200 + # source://prism//lib/prism/desugar_compiler.rb#201 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#7636 + # source://prism//lib/prism/node.rb#7702 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#7599 + # source://prism//lib/prism/node.rb#7665 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#7602 + # source://prism//lib/prism/node.rb#7668 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#7631 + # source://prism//lib/prism/node.rb#7697 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#7615 + # source://prism//lib/prism/node.rb#7681 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#7610 + # source://prism//lib/prism/node.rb#7676 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#7623 + # source://prism//lib/prism/node.rb#7689 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#7641 + # source://prism//lib/prism/node.rb#7707 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#7628 + # source://prism//lib/prism/node.rb#7694 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#7646 + # source://prism//lib/prism/node.rb#7712 def type; end end end -# source://prism//lib/prism/node.rb#7665 +# source://prism//lib/prism/node.rb#7731 class Prism::GlobalVariableOperatorWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#7667 + # source://prism//lib/prism/node.rb#7733 sig do params( source: Prism::Source, @@ -10585,34 +10593,34 @@ class Prism::GlobalVariableOperatorWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, binary_operator_loc, value, binary_operator); end - # source://prism//lib/prism/node.rb#7764 + # source://prism//lib/prism/node.rb#7830 def ===(other); end - # source://prism//lib/prism/node.rb#7680 + # source://prism//lib/prism/node.rb#7746 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#7745 + # source://prism//lib/prism/node.rb#7811 sig { returns(Symbol) } def binary_operator; end - # source://prism//lib/prism/node.rb#7729 + # source://prism//lib/prism/node.rb#7795 sig { returns(Prism::Location) } def binary_operator_loc; end - # source://prism//lib/prism/node.rb#7685 + # source://prism//lib/prism/node.rb#7751 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#7695 + # source://prism//lib/prism/node.rb#7761 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#7690 + # source://prism//lib/prism/node.rb#7756 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#7700 + # source://prism//lib/prism/node.rb#7766 sig do params( node_id: Integer, @@ -10627,61 +10635,61 @@ class Prism::GlobalVariableOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#7685 + # source://prism//lib/prism/node.rb#7751 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#7708 + # source://prism//lib/prism/node.rb#7774 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#212 + # source://prism//lib/prism/desugar_compiler.rb#213 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#7748 + # source://prism//lib/prism/node.rb#7814 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#7713 + # source://prism//lib/prism/node.rb#7779 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#7716 + # source://prism//lib/prism/node.rb#7782 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node_ext.rb#403 + # source://prism//lib/prism/node_ext.rb#406 def operator; end - # source://prism//lib/prism/node_ext.rb#410 + # source://prism//lib/prism/node_ext.rb#413 def operator_loc; end - # source://prism//lib/prism/node.rb#7737 + # source://prism//lib/prism/node.rb#7803 def save_binary_operator_loc(repository); end - # source://prism//lib/prism/node.rb#7724 + # source://prism//lib/prism/node.rb#7790 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#7753 + # source://prism//lib/prism/node.rb#7819 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#7742 + # source://prism//lib/prism/node.rb#7808 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#7758 + # source://prism//lib/prism/node.rb#7824 def type; end end end -# source://prism//lib/prism/node.rb#7778 +# source://prism//lib/prism/node.rb#7844 class Prism::GlobalVariableOrWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#7780 + # source://prism//lib/prism/node.rb#7846 sig do params( source: Prism::Source, @@ -10696,26 +10704,26 @@ class Prism::GlobalVariableOrWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, operator_loc, value); end - # source://prism//lib/prism/node.rb#7878 + # source://prism//lib/prism/node.rb#7944 def ===(other); end - # source://prism//lib/prism/node.rb#7792 + # source://prism//lib/prism/node.rb#7858 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#7797 + # source://prism//lib/prism/node.rb#7863 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#7807 + # source://prism//lib/prism/node.rb#7873 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#7802 + # source://prism//lib/prism/node.rb#7868 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#7812 + # source://prism//lib/prism/node.rb#7878 sig do params( node_id: Integer, @@ -10729,86 +10737,86 @@ class Prism::GlobalVariableOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#7797 + # source://prism//lib/prism/node.rb#7863 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#7820 + # source://prism//lib/prism/node.rb#7886 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#206 + # source://prism//lib/prism/desugar_compiler.rb#207 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#7862 + # source://prism//lib/prism/node.rb#7928 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#7825 + # source://prism//lib/prism/node.rb#7891 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#7828 + # source://prism//lib/prism/node.rb#7894 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#7857 + # source://prism//lib/prism/node.rb#7923 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#7841 + # source://prism//lib/prism/node.rb#7907 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#7836 + # source://prism//lib/prism/node.rb#7902 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#7849 + # source://prism//lib/prism/node.rb#7915 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#7867 + # source://prism//lib/prism/node.rb#7933 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#7854 + # source://prism//lib/prism/node.rb#7920 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#7872 + # source://prism//lib/prism/node.rb#7938 def type; end end end -# source://prism//lib/prism/node.rb#7891 +# source://prism//lib/prism/node.rb#7957 class Prism::GlobalVariableReadNode < ::Prism::Node - # source://prism//lib/prism/node.rb#7893 + # source://prism//lib/prism/node.rb#7959 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end - # source://prism//lib/prism/node.rb#7958 + # source://prism//lib/prism/node.rb#8024 def ===(other); end - # source://prism//lib/prism/node.rb#7902 + # source://prism//lib/prism/node.rb#7968 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#7907 + # source://prism//lib/prism/node.rb#7973 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#7917 + # source://prism//lib/prism/node.rb#7983 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#7912 + # source://prism//lib/prism/node.rb#7978 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#7922 + # source://prism//lib/prism/node.rb#7988 sig do params( node_id: Integer, @@ -10819,61 +10827,61 @@ class Prism::GlobalVariableReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#7907 + # source://prism//lib/prism/node.rb#7973 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#7930 + # source://prism//lib/prism/node.rb#7996 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#7942 + # source://prism//lib/prism/node.rb#8008 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#7939 + # source://prism//lib/prism/node.rb#8005 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#7947 + # source://prism//lib/prism/node.rb#8013 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#7952 + # source://prism//lib/prism/node.rb#8018 def type; end end end -# source://prism//lib/prism/node.rb#7968 +# source://prism//lib/prism/node.rb#8034 class Prism::GlobalVariableTargetNode < ::Prism::Node - # source://prism//lib/prism/node.rb#7970 + # source://prism//lib/prism/node.rb#8036 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end - # source://prism//lib/prism/node.rb#8031 + # source://prism//lib/prism/node.rb#8097 def ===(other); end - # source://prism//lib/prism/node.rb#7979 + # source://prism//lib/prism/node.rb#8045 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#7984 + # source://prism//lib/prism/node.rb#8050 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#7994 + # source://prism//lib/prism/node.rb#8060 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#7989 + # source://prism//lib/prism/node.rb#8055 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#7999 + # source://prism//lib/prism/node.rb#8065 sig do params( node_id: Integer, @@ -10884,38 +10892,38 @@ class Prism::GlobalVariableTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#7984 + # source://prism//lib/prism/node.rb#8050 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#8007 + # source://prism//lib/prism/node.rb#8073 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#8015 + # source://prism//lib/prism/node.rb#8081 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#8012 + # source://prism//lib/prism/node.rb#8078 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#8020 + # source://prism//lib/prism/node.rb#8086 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#8025 + # source://prism//lib/prism/node.rb#8091 def type; end end end -# source://prism//lib/prism/node.rb#8041 +# source://prism//lib/prism/node.rb#8107 class Prism::GlobalVariableWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#8043 + # source://prism//lib/prism/node.rb#8109 sig do params( source: Prism::Source, @@ -10930,26 +10938,26 @@ class Prism::GlobalVariableWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, value, operator_loc); end - # source://prism//lib/prism/node.rb#8157 + # source://prism//lib/prism/node.rb#8223 def ===(other); end - # source://prism//lib/prism/node.rb#8055 + # source://prism//lib/prism/node.rb#8121 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#8060 + # source://prism//lib/prism/node.rb#8126 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#8070 + # source://prism//lib/prism/node.rb#8136 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#8065 + # source://prism//lib/prism/node.rb#8131 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#8075 + # source://prism//lib/prism/node.rb#8141 sig do params( node_id: Integer, @@ -10963,60 +10971,60 @@ class Prism::GlobalVariableWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#8060 + # source://prism//lib/prism/node.rb#8126 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#8083 + # source://prism//lib/prism/node.rb#8149 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#8141 + # source://prism//lib/prism/node.rb#8207 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#8092 + # source://prism//lib/prism/node.rb#8158 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#8098 + # source://prism//lib/prism/node.rb#8164 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#8136 + # source://prism//lib/prism/node.rb#8202 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#8123 + # source://prism//lib/prism/node.rb#8189 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#8106 + # source://prism//lib/prism/node.rb#8172 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#8131 + # source://prism//lib/prism/node.rb#8197 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#8146 + # source://prism//lib/prism/node.rb#8212 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#8117 + # source://prism//lib/prism/node.rb#8183 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#8151 + # source://prism//lib/prism/node.rb#8217 def type; end end end -# source://prism//lib/prism/node.rb#8170 +# source://prism//lib/prism/node.rb#8236 class Prism::HashNode < ::Prism::Node - # source://prism//lib/prism/node.rb#8172 + # source://prism//lib/prism/node.rb#8238 sig do params( source: Prism::Source, @@ -11030,34 +11038,34 @@ class Prism::HashNode < ::Prism::Node end def initialize(source, node_id, location, flags, opening_loc, elements, closing_loc); end - # source://prism//lib/prism/node.rb#8283 + # source://prism//lib/prism/node.rb#8349 def ===(other); end - # source://prism//lib/prism/node.rb#8183 + # source://prism//lib/prism/node.rb#8249 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#8188 + # source://prism//lib/prism/node.rb#8254 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#8262 + # source://prism//lib/prism/node.rb#8328 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#8244 + # source://prism//lib/prism/node.rb#8310 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#8198 + # source://prism//lib/prism/node.rb#8264 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#8193 + # source://prism//lib/prism/node.rb#8259 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#8203 + # source://prism//lib/prism/node.rb#8269 sig do params( node_id: Integer, @@ -11070,59 +11078,59 @@ class Prism::HashNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), elements: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#8188 + # source://prism//lib/prism/node.rb#8254 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#8211 + # source://prism//lib/prism/node.rb#8277 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#8238 + # source://prism//lib/prism/node.rb#8304 sig { returns(T::Array[T.any(Prism::AssocNode, Prism::AssocSplatNode)]) } def elements; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#8267 + # source://prism//lib/prism/node.rb#8333 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#8257 + # source://prism//lib/prism/node.rb#8323 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#8219 + # source://prism//lib/prism/node.rb#8285 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node.rb#8252 + # source://prism//lib/prism/node.rb#8318 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#8227 + # source://prism//lib/prism/node.rb#8293 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#8272 + # source://prism//lib/prism/node.rb#8338 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#8277 + # source://prism//lib/prism/node.rb#8343 def type; end end end -# source://prism//lib/prism/node.rb#8299 +# source://prism//lib/prism/node.rb#8371 class Prism::HashPatternNode < ::Prism::Node - # source://prism//lib/prism/node.rb#8301 + # source://prism//lib/prism/node.rb#8373 sig do params( source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), elements: T::Array[Prism::AssocNode], rest: T.nilable(T.any(Prism::AssocSplatNode, Prism::NoKeywordsParameterNode)), opening_loc: T.nilable(Prism::Location), @@ -11131,44 +11139,44 @@ class Prism::HashPatternNode < ::Prism::Node end def initialize(source, node_id, location, flags, constant, elements, rest, opening_loc, closing_loc); end - # source://prism//lib/prism/node.rb#8424 + # source://prism//lib/prism/node.rb#8526 def ===(other); end - # source://prism//lib/prism/node.rb#8314 + # source://prism//lib/prism/node.rb#8386 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#8319 + # source://prism//lib/prism/node.rb#8391 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#8403 + # source://prism//lib/prism/node.rb#8505 sig { returns(T.nilable(String)) } def closing; end - # source://prism//lib/prism/node.rb#8379 + # source://prism//lib/prism/node.rb#8481 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end - # source://prism//lib/prism/node.rb#8333 + # source://prism//lib/prism/node.rb#8405 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#8324 + # source://prism//lib/prism/node.rb#8396 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#8351 - sig { returns(T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode))) } + # source://prism//lib/prism/node.rb#8429 + sig { returns(T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode))) } def constant; end - # source://prism//lib/prism/node.rb#8338 + # source://prism//lib/prism/node.rb#8410 sig do params( node_id: Integer, location: Prism::Location, flags: Integer, - constant: T.nilable(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode)), + constant: T.nilable(T.any(Prism::ConstantPathNode, Prism::ConstantReadNode)), elements: T::Array[Prism::AssocNode], rest: T.nilable(T.any(Prism::AssocSplatNode, Prism::NoKeywordsParameterNode)), opening_loc: T.nilable(Prism::Location), @@ -11177,62 +11185,62 @@ class Prism::HashPatternNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), constant: T.unsafe(nil), elements: T.unsafe(nil), rest: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#8319 + # source://prism//lib/prism/node.rb#8391 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#8346 + # source://prism//lib/prism/node.rb#8418 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#8354 + # source://prism//lib/prism/node.rb#8435 sig { returns(T::Array[Prism::AssocNode]) } def elements; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#8408 + # source://prism//lib/prism/node.rb#8510 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#8398 + # source://prism//lib/prism/node.rb#8500 sig { returns(T.nilable(String)) } def opening; end - # source://prism//lib/prism/node.rb#8360 + # source://prism//lib/prism/node.rb#8456 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end - # source://prism//lib/prism/node.rb#8357 + # source://prism//lib/prism/node.rb#8447 sig { returns(T.nilable(T.any(Prism::AssocSplatNode, Prism::NoKeywordsParameterNode))) } def rest; end - # source://prism//lib/prism/node.rb#8393 + # source://prism//lib/prism/node.rb#8495 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#8374 + # source://prism//lib/prism/node.rb#8470 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#8413 + # source://prism//lib/prism/node.rb#8515 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#8418 + # source://prism//lib/prism/node.rb#8520 def type; end end end -# source://prism//lib/prism/node_ext.rb#52 +# source://prism//lib/prism/node_ext.rb#55 module Prism::HeredocQuery - # source://prism//lib/prism/node_ext.rb#54 + # source://prism//lib/prism/node_ext.rb#57 def heredoc?; end end -# source://prism//lib/prism/node.rb#8445 +# source://prism//lib/prism/node.rb#8547 class Prism::IfNode < ::Prism::Node - # source://prism//lib/prism/node.rb#8447 + # source://prism//lib/prism/node.rb#8549 sig do params( source: Prism::Source, @@ -11249,29 +11257,29 @@ class Prism::IfNode < ::Prism::Node end def initialize(source, node_id, location, flags, if_keyword_loc, predicate, then_keyword_loc, statements, subsequent, end_keyword_loc); end - # source://prism//lib/prism/node.rb#8641 + # source://prism//lib/prism/node.rb#8743 def ===(other); end - # source://prism//lib/prism/node.rb#8461 + # source://prism//lib/prism/node.rb#8563 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#8466 + # source://prism//lib/prism/node.rb#8568 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#8480 + # source://prism//lib/prism/node.rb#8582 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#8471 + # source://prism//lib/prism/node.rb#8573 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node_ext.rb#485 + # source://prism//lib/prism/node_ext.rb#488 def consequent; end - # source://prism//lib/prism/node.rb#8485 + # source://prism//lib/prism/node.rb#8587 sig do params( node_id: Integer, @@ -11287,82 +11295,82 @@ class Prism::IfNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), if_keyword_loc: T.unsafe(nil), predicate: T.unsafe(nil), then_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), subsequent: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#8466 + # source://prism//lib/prism/node.rb#8568 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#8493 + # source://prism//lib/prism/node.rb#8595 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#8620 + # source://prism//lib/prism/node.rb#8722 sig { returns(T.nilable(String)) } def end_keyword; end - # source://prism//lib/prism/node.rb#8591 + # source://prism//lib/prism/node.rb#8693 sig { returns(T.nilable(Prism::Location)) } def end_keyword_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#8610 + # source://prism//lib/prism/node.rb#8712 sig { returns(T.nilable(String)) } def if_keyword; end - # source://prism//lib/prism/node.rb#8503 + # source://prism//lib/prism/node.rb#8605 sig { returns(T.nilable(Prism::Location)) } def if_keyword_loc; end - # source://prism//lib/prism/node.rb#8625 + # source://prism//lib/prism/node.rb#8727 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/parse_result/newlines.rb#91 + # source://prism//lib/prism/parse_result/newlines.rb#92 def newline_flag!(lines); end - # source://prism//lib/prism/node.rb#8533 + # source://prism//lib/prism/node.rb#8635 sig { returns(Prism::Node) } def predicate; end - # source://prism//lib/prism/node.rb#8605 + # source://prism//lib/prism/node.rb#8707 def save_end_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#8517 + # source://prism//lib/prism/node.rb#8619 def save_if_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#8556 + # source://prism//lib/prism/node.rb#8658 def save_then_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#8568 + # source://prism//lib/prism/node.rb#8670 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#8583 + # source://prism//lib/prism/node.rb#8685 sig { returns(T.nilable(T.any(Prism::ElseNode, Prism::IfNode))) } def subsequent; end - # source://prism//lib/prism/node.rb#8615 + # source://prism//lib/prism/node.rb#8717 sig { returns(T.nilable(String)) } def then_keyword; end - # source://prism//lib/prism/node.rb#8542 + # source://prism//lib/prism/node.rb#8644 sig { returns(T.nilable(Prism::Location)) } def then_keyword_loc; end - # source://prism//lib/prism/node.rb#8630 + # source://prism//lib/prism/node.rb#8732 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#8635 + # source://prism//lib/prism/node.rb#8737 def type; end end end -# source://prism//lib/prism/node.rb#8656 +# source://prism//lib/prism/node.rb#8758 class Prism::ImaginaryNode < ::Prism::Node - # source://prism//lib/prism/node.rb#8658 + # source://prism//lib/prism/node.rb#8760 sig do params( source: Prism::Source, @@ -11374,26 +11382,26 @@ class Prism::ImaginaryNode < ::Prism::Node end def initialize(source, node_id, location, flags, numeric); end - # source://prism//lib/prism/node.rb#8719 + # source://prism//lib/prism/node.rb#8821 def ===(other); end - # source://prism//lib/prism/node.rb#8667 + # source://prism//lib/prism/node.rb#8769 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#8672 + # source://prism//lib/prism/node.rb#8774 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#8682 + # source://prism//lib/prism/node.rb#8784 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#8677 + # source://prism//lib/prism/node.rb#8779 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#8687 + # source://prism//lib/prism/node.rb#8789 sig do params( node_id: Integer, @@ -11404,42 +11412,42 @@ class Prism::ImaginaryNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), numeric: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#8672 + # source://prism//lib/prism/node.rb#8774 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#8695 + # source://prism//lib/prism/node.rb#8797 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#8703 + # source://prism//lib/prism/node.rb#8805 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#8700 + # source://prism//lib/prism/node.rb#8802 sig { returns(T.any(Prism::FloatNode, Prism::IntegerNode, Prism::RationalNode)) } def numeric; end - # source://prism//lib/prism/node.rb#8708 + # source://prism//lib/prism/node.rb#8810 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node_ext.rb#107 + # source://prism//lib/prism/node_ext.rb#110 sig { returns(Complex) } def value; end class << self - # source://prism//lib/prism/node.rb#8713 + # source://prism//lib/prism/node.rb#8815 def type; end end end -# source://prism//lib/prism/node.rb#8735 +# source://prism//lib/prism/node.rb#8837 class Prism::ImplicitNode < ::Prism::Node - # source://prism//lib/prism/node.rb#8737 + # source://prism//lib/prism/node.rb#8839 sig do params( source: Prism::Source, @@ -11451,26 +11459,26 @@ class Prism::ImplicitNode < ::Prism::Node end def initialize(source, node_id, location, flags, value); end - # source://prism//lib/prism/node.rb#8798 + # source://prism//lib/prism/node.rb#8900 def ===(other); end - # source://prism//lib/prism/node.rb#8746 + # source://prism//lib/prism/node.rb#8848 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#8751 + # source://prism//lib/prism/node.rb#8853 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#8761 + # source://prism//lib/prism/node.rb#8863 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#8756 + # source://prism//lib/prism/node.rb#8858 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#8766 + # source://prism//lib/prism/node.rb#8868 sig do params( node_id: Integer, @@ -11481,94 +11489,94 @@ class Prism::ImplicitNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#8751 + # source://prism//lib/prism/node.rb#8853 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#8774 + # source://prism//lib/prism/node.rb#8876 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#8782 + # source://prism//lib/prism/node.rb#8884 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#8787 + # source://prism//lib/prism/node.rb#8889 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#8779 + # source://prism//lib/prism/node.rb#8881 sig do returns(T.any(Prism::LocalVariableReadNode, Prism::CallNode, Prism::ConstantReadNode, Prism::LocalVariableTargetNode)) end def value; end class << self - # source://prism//lib/prism/node.rb#8792 + # source://prism//lib/prism/node.rb#8894 def type; end end end -# source://prism//lib/prism/node.rb#8817 +# source://prism//lib/prism/node.rb#8919 class Prism::ImplicitRestNode < ::Prism::Node - # source://prism//lib/prism/node.rb#8819 + # source://prism//lib/prism/node.rb#8921 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#8876 + # source://prism//lib/prism/node.rb#8978 def ===(other); end - # source://prism//lib/prism/node.rb#8827 + # source://prism//lib/prism/node.rb#8929 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#8832 + # source://prism//lib/prism/node.rb#8934 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#8842 + # source://prism//lib/prism/node.rb#8944 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#8837 + # source://prism//lib/prism/node.rb#8939 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#8847 + # source://prism//lib/prism/node.rb#8949 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::ImplicitRestNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#8832 + # source://prism//lib/prism/node.rb#8934 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#8855 + # source://prism//lib/prism/node.rb#8957 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#8860 + # source://prism//lib/prism/node.rb#8962 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#8865 + # source://prism//lib/prism/node.rb#8967 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#8870 + # source://prism//lib/prism/node.rb#8972 def type; end end end -# source://prism//lib/prism/node.rb#8885 +# source://prism//lib/prism/node.rb#8987 class Prism::InNode < ::Prism::Node - # source://prism//lib/prism/node.rb#8887 + # source://prism//lib/prism/node.rb#8989 sig do params( source: Prism::Source, @@ -11583,26 +11591,26 @@ class Prism::InNode < ::Prism::Node end def initialize(source, node_id, location, flags, pattern, statements, in_loc, then_loc); end - # source://prism//lib/prism/node.rb#8999 + # source://prism//lib/prism/node.rb#9101 def ===(other); end - # source://prism//lib/prism/node.rb#8899 + # source://prism//lib/prism/node.rb#9001 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#8904 + # source://prism//lib/prism/node.rb#9006 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#8917 + # source://prism//lib/prism/node.rb#9019 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#8909 + # source://prism//lib/prism/node.rb#9011 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#8922 + # source://prism//lib/prism/node.rb#9024 sig do params( node_id: Integer, @@ -11616,64 +11624,64 @@ class Prism::InNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), pattern: T.unsafe(nil), statements: T.unsafe(nil), in_loc: T.unsafe(nil), then_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#8904 + # source://prism//lib/prism/node.rb#9006 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#8930 + # source://prism//lib/prism/node.rb#9032 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#8973 + # source://prism//lib/prism/node.rb#9075 sig { returns(String) } def in; end - # source://prism//lib/prism/node.rb#8941 + # source://prism//lib/prism/node.rb#9043 sig { returns(Prism::Location) } def in_loc; end - # source://prism//lib/prism/node.rb#8983 + # source://prism//lib/prism/node.rb#9085 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#8935 + # source://prism//lib/prism/node.rb#9037 sig { returns(Prism::Node) } def pattern; end - # source://prism//lib/prism/node.rb#8949 + # source://prism//lib/prism/node.rb#9051 def save_in_loc(repository); end - # source://prism//lib/prism/node.rb#8968 + # source://prism//lib/prism/node.rb#9070 def save_then_loc(repository); end - # source://prism//lib/prism/node.rb#8938 + # source://prism//lib/prism/node.rb#9040 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#8978 + # source://prism//lib/prism/node.rb#9080 sig { returns(T.nilable(String)) } def then; end - # source://prism//lib/prism/node.rb#8954 + # source://prism//lib/prism/node.rb#9056 sig { returns(T.nilable(Prism::Location)) } def then_loc; end - # source://prism//lib/prism/node.rb#8988 + # source://prism//lib/prism/node.rb#9090 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#8993 + # source://prism//lib/prism/node.rb#9095 def type; end end end -# source://prism//lib/prism/node.rb#9012 +# source://prism//lib/prism/node.rb#9114 class Prism::IndexAndWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#9014 + # source://prism//lib/prism/node.rb#9116 sig do params( source: Prism::Source, @@ -11692,54 +11700,54 @@ class Prism::IndexAndWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, operator_loc, value); end - # source://prism//lib/prism/node.rb#9194 + # source://prism//lib/prism/node.rb#9296 def ===(other); end - # source://prism//lib/prism/node.rb#9030 + # source://prism//lib/prism/node.rb#9132 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#9123 + # source://prism//lib/prism/node.rb#9225 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # source://prism//lib/prism/node.rb#9078 + # source://prism//lib/prism/node.rb#9180 sig { returns(T::Boolean) } def attribute_write?; end - # source://prism//lib/prism/node.rb#9139 + # source://prism//lib/prism/node.rb#9241 sig { returns(T.nilable(Prism::BlockArgumentNode)) } def block; end - # source://prism//lib/prism/node.rb#9158 + # source://prism//lib/prism/node.rb#9260 sig { returns(T.nilable(String)) } def call_operator; end - # source://prism//lib/prism/node.rb#9091 + # source://prism//lib/prism/node.rb#9193 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # source://prism//lib/prism/node.rb#9035 + # source://prism//lib/prism/node.rb#9137 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#9168 + # source://prism//lib/prism/node.rb#9270 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#9126 + # source://prism//lib/prism/node.rb#9228 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#9050 + # source://prism//lib/prism/node.rb#9152 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#9040 + # source://prism//lib/prism/node.rb#9142 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#9055 + # source://prism//lib/prism/node.rb#9157 sig do params( node_id: Integer, @@ -11757,82 +11765,82 @@ class Prism::IndexAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#9035 + # source://prism//lib/prism/node.rb#9137 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#9063 + # source://prism//lib/prism/node.rb#9165 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#9083 + # source://prism//lib/prism/node.rb#9185 sig { returns(T::Boolean) } def ignore_visibility?; end - # source://prism//lib/prism/node.rb#9178 + # source://prism//lib/prism/node.rb#9280 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#9163 + # source://prism//lib/prism/node.rb#9265 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#9110 + # source://prism//lib/prism/node.rb#9212 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node.rb#9173 + # source://prism//lib/prism/node.rb#9275 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#9142 + # source://prism//lib/prism/node.rb#9244 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#9088 + # source://prism//lib/prism/node.rb#9190 sig { returns(T.nilable(Prism::Node)) } def receiver; end - # source://prism//lib/prism/node.rb#9068 + # source://prism//lib/prism/node.rb#9170 sig { returns(T::Boolean) } def safe_navigation?; end - # source://prism//lib/prism/node.rb#9105 + # source://prism//lib/prism/node.rb#9207 def save_call_operator_loc(repository); end - # source://prism//lib/prism/node.rb#9134 + # source://prism//lib/prism/node.rb#9236 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#9118 + # source://prism//lib/prism/node.rb#9220 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#9150 + # source://prism//lib/prism/node.rb#9252 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#9183 + # source://prism//lib/prism/node.rb#9285 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#9155 + # source://prism//lib/prism/node.rb#9257 sig { returns(Prism::Node) } def value; end - # source://prism//lib/prism/node.rb#9073 + # source://prism//lib/prism/node.rb#9175 sig { returns(T::Boolean) } def variable_call?; end class << self - # source://prism//lib/prism/node.rb#9188 + # source://prism//lib/prism/node.rb#9290 def type; end end end -# source://prism//lib/prism/node.rb#9212 +# source://prism//lib/prism/node.rb#9314 class Prism::IndexOperatorWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#9214 + # source://prism//lib/prism/node.rb#9316 sig do params( source: Prism::Source, @@ -11852,62 +11860,62 @@ class Prism::IndexOperatorWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, binary_operator, binary_operator_loc, value); end - # source://prism//lib/prism/node.rb#9393 + # source://prism//lib/prism/node.rb#9495 def ===(other); end - # source://prism//lib/prism/node.rb#9231 + # source://prism//lib/prism/node.rb#9333 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#9324 + # source://prism//lib/prism/node.rb#9426 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # source://prism//lib/prism/node.rb#9279 + # source://prism//lib/prism/node.rb#9381 sig { returns(T::Boolean) } def attribute_write?; end - # source://prism//lib/prism/node.rb#9343 + # source://prism//lib/prism/node.rb#9445 sig { returns(Symbol) } def binary_operator; end - # source://prism//lib/prism/node.rb#9346 + # source://prism//lib/prism/node.rb#9448 sig { returns(Prism::Location) } def binary_operator_loc; end - # source://prism//lib/prism/node.rb#9340 + # source://prism//lib/prism/node.rb#9442 sig { returns(T.nilable(Prism::BlockArgumentNode)) } def block; end - # source://prism//lib/prism/node.rb#9362 + # source://prism//lib/prism/node.rb#9464 sig { returns(T.nilable(String)) } def call_operator; end - # source://prism//lib/prism/node.rb#9292 + # source://prism//lib/prism/node.rb#9394 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # source://prism//lib/prism/node.rb#9236 + # source://prism//lib/prism/node.rb#9338 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#9372 + # source://prism//lib/prism/node.rb#9474 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#9327 + # source://prism//lib/prism/node.rb#9429 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#9251 + # source://prism//lib/prism/node.rb#9353 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#9241 + # source://prism//lib/prism/node.rb#9343 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#9256 + # source://prism//lib/prism/node.rb#9358 sig do params( node_id: Integer, @@ -11926,80 +11934,80 @@ class Prism::IndexOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil), binary_operator: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#9236 + # source://prism//lib/prism/node.rb#9338 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#9264 + # source://prism//lib/prism/node.rb#9366 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#9284 + # source://prism//lib/prism/node.rb#9386 sig { returns(T::Boolean) } def ignore_visibility?; end - # source://prism//lib/prism/node.rb#9377 + # source://prism//lib/prism/node.rb#9479 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#9367 + # source://prism//lib/prism/node.rb#9469 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#9311 + # source://prism//lib/prism/node.rb#9413 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node_ext.rb#419 + # source://prism//lib/prism/node_ext.rb#422 def operator; end - # source://prism//lib/prism/node_ext.rb#426 + # source://prism//lib/prism/node_ext.rb#429 def operator_loc; end - # source://prism//lib/prism/node.rb#9289 + # source://prism//lib/prism/node.rb#9391 sig { returns(T.nilable(Prism::Node)) } def receiver; end - # source://prism//lib/prism/node.rb#9269 + # source://prism//lib/prism/node.rb#9371 sig { returns(T::Boolean) } def safe_navigation?; end - # source://prism//lib/prism/node.rb#9354 + # source://prism//lib/prism/node.rb#9456 def save_binary_operator_loc(repository); end - # source://prism//lib/prism/node.rb#9306 + # source://prism//lib/prism/node.rb#9408 def save_call_operator_loc(repository); end - # source://prism//lib/prism/node.rb#9335 + # source://prism//lib/prism/node.rb#9437 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#9319 + # source://prism//lib/prism/node.rb#9421 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#9382 + # source://prism//lib/prism/node.rb#9484 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#9359 + # source://prism//lib/prism/node.rb#9461 sig { returns(Prism::Node) } def value; end - # source://prism//lib/prism/node.rb#9274 + # source://prism//lib/prism/node.rb#9376 sig { returns(T::Boolean) } def variable_call?; end class << self - # source://prism//lib/prism/node.rb#9387 + # source://prism//lib/prism/node.rb#9489 def type; end end end -# source://prism//lib/prism/node.rb#9412 +# source://prism//lib/prism/node.rb#9514 class Prism::IndexOrWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#9414 + # source://prism//lib/prism/node.rb#9516 sig do params( source: Prism::Source, @@ -12018,54 +12026,54 @@ class Prism::IndexOrWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, operator_loc, value); end - # source://prism//lib/prism/node.rb#9594 + # source://prism//lib/prism/node.rb#9696 def ===(other); end - # source://prism//lib/prism/node.rb#9430 + # source://prism//lib/prism/node.rb#9532 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#9523 + # source://prism//lib/prism/node.rb#9625 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # source://prism//lib/prism/node.rb#9478 + # source://prism//lib/prism/node.rb#9580 sig { returns(T::Boolean) } def attribute_write?; end - # source://prism//lib/prism/node.rb#9539 + # source://prism//lib/prism/node.rb#9641 sig { returns(T.nilable(Prism::BlockArgumentNode)) } def block; end - # source://prism//lib/prism/node.rb#9558 + # source://prism//lib/prism/node.rb#9660 sig { returns(T.nilable(String)) } def call_operator; end - # source://prism//lib/prism/node.rb#9491 + # source://prism//lib/prism/node.rb#9593 sig { returns(T.nilable(Prism::Location)) } def call_operator_loc; end - # source://prism//lib/prism/node.rb#9435 + # source://prism//lib/prism/node.rb#9537 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#9568 + # source://prism//lib/prism/node.rb#9670 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#9526 + # source://prism//lib/prism/node.rb#9628 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#9450 + # source://prism//lib/prism/node.rb#9552 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#9440 + # source://prism//lib/prism/node.rb#9542 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#9455 + # source://prism//lib/prism/node.rb#9557 sig do params( node_id: Integer, @@ -12083,82 +12091,82 @@ class Prism::IndexOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), call_operator_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#9435 + # source://prism//lib/prism/node.rb#9537 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#9463 + # source://prism//lib/prism/node.rb#9565 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#9483 + # source://prism//lib/prism/node.rb#9585 sig { returns(T::Boolean) } def ignore_visibility?; end - # source://prism//lib/prism/node.rb#9578 + # source://prism//lib/prism/node.rb#9680 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#9563 + # source://prism//lib/prism/node.rb#9665 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#9510 + # source://prism//lib/prism/node.rb#9612 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node.rb#9573 + # source://prism//lib/prism/node.rb#9675 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#9542 + # source://prism//lib/prism/node.rb#9644 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#9488 + # source://prism//lib/prism/node.rb#9590 sig { returns(T.nilable(Prism::Node)) } def receiver; end - # source://prism//lib/prism/node.rb#9468 + # source://prism//lib/prism/node.rb#9570 sig { returns(T::Boolean) } def safe_navigation?; end - # source://prism//lib/prism/node.rb#9505 + # source://prism//lib/prism/node.rb#9607 def save_call_operator_loc(repository); end - # source://prism//lib/prism/node.rb#9534 + # source://prism//lib/prism/node.rb#9636 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#9518 + # source://prism//lib/prism/node.rb#9620 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#9550 + # source://prism//lib/prism/node.rb#9652 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#9583 + # source://prism//lib/prism/node.rb#9685 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#9555 + # source://prism//lib/prism/node.rb#9657 sig { returns(Prism::Node) } def value; end - # source://prism//lib/prism/node.rb#9473 + # source://prism//lib/prism/node.rb#9575 sig { returns(T::Boolean) } def variable_call?; end class << self - # source://prism//lib/prism/node.rb#9588 + # source://prism//lib/prism/node.rb#9690 def type; end end end -# source://prism//lib/prism/node.rb#9620 +# source://prism//lib/prism/node.rb#9722 class Prism::IndexTargetNode < ::Prism::Node - # source://prism//lib/prism/node.rb#9622 + # source://prism//lib/prism/node.rb#9724 sig do params( source: Prism::Source, @@ -12174,46 +12182,46 @@ class Prism::IndexTargetNode < ::Prism::Node end def initialize(source, node_id, location, flags, receiver, opening_loc, arguments, closing_loc, block); end - # source://prism//lib/prism/node.rb#9753 + # source://prism//lib/prism/node.rb#9855 def ===(other); end - # source://prism//lib/prism/node.rb#9635 + # source://prism//lib/prism/node.rb#9737 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#9708 + # source://prism//lib/prism/node.rb#9810 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # source://prism//lib/prism/node.rb#9682 + # source://prism//lib/prism/node.rb#9784 sig { returns(T::Boolean) } def attribute_write?; end - # source://prism//lib/prism/node.rb#9724 + # source://prism//lib/prism/node.rb#9826 sig { returns(T.nilable(Prism::BlockArgumentNode)) } def block; end - # source://prism//lib/prism/node.rb#9640 + # source://prism//lib/prism/node.rb#9742 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#9732 + # source://prism//lib/prism/node.rb#9834 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#9711 + # source://prism//lib/prism/node.rb#9813 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#9654 + # source://prism//lib/prism/node.rb#9756 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#9645 + # source://prism//lib/prism/node.rb#9747 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#9659 + # source://prism//lib/prism/node.rb#9761 sig do params( node_id: Integer, @@ -12228,568 +12236,568 @@ class Prism::IndexTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), receiver: T.unsafe(nil), opening_loc: T.unsafe(nil), arguments: T.unsafe(nil), closing_loc: T.unsafe(nil), block: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#9640 + # source://prism//lib/prism/node.rb#9742 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#9667 + # source://prism//lib/prism/node.rb#9769 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#9687 + # source://prism//lib/prism/node.rb#9789 sig { returns(T::Boolean) } def ignore_visibility?; end - # source://prism//lib/prism/node.rb#9737 + # source://prism//lib/prism/node.rb#9839 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#9727 + # source://prism//lib/prism/node.rb#9829 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#9695 + # source://prism//lib/prism/node.rb#9797 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node.rb#9692 + # source://prism//lib/prism/node.rb#9794 sig { returns(Prism::Node) } def receiver; end - # source://prism//lib/prism/node.rb#9672 + # source://prism//lib/prism/node.rb#9774 sig { returns(T::Boolean) } def safe_navigation?; end - # source://prism//lib/prism/node.rb#9719 + # source://prism//lib/prism/node.rb#9821 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#9703 + # source://prism//lib/prism/node.rb#9805 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#9742 + # source://prism//lib/prism/node.rb#9844 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#9677 + # source://prism//lib/prism/node.rb#9779 sig { returns(T::Boolean) } def variable_call?; end class << self - # source://prism//lib/prism/node.rb#9747 + # source://prism//lib/prism/node.rb#9849 def type; end end end -# source://prism//lib/prism/parse_result.rb#546 +# source://prism//lib/prism/parse_result.rb#547 class Prism::InlineComment < ::Prism::Comment - # source://prism//lib/prism/parse_result.rb#554 + # source://prism//lib/prism/parse_result.rb#555 sig { returns(String) } def inspect; end - # source://prism//lib/prism/parse_result.rb#549 + # source://prism//lib/prism/parse_result.rb#550 sig { override.returns(T::Boolean) } def trailing?; end end -# source://prism//lib/prism/inspect_visitor.rb#12 +# source://prism//lib/prism/inspect_visitor.rb#15 class Prism::InspectVisitor < ::Prism::Visitor - # source://prism//lib/prism/inspect_visitor.rb#35 + # source://prism//lib/prism/inspect_visitor.rb#38 sig { params(indent: String).void } def initialize(indent = T.unsafe(nil)); end - # source://prism//lib/prism/inspect_visitor.rb#32 + # source://prism//lib/prism/inspect_visitor.rb#35 def commands; end - # source://prism//lib/prism/inspect_visitor.rb#48 + # source://prism//lib/prism/inspect_visitor.rb#51 sig { returns(String) } def compose; end - # source://prism//lib/prism/inspect_visitor.rb#28 + # source://prism//lib/prism/inspect_visitor.rb#31 def indent; end - # source://prism//lib/prism/inspect_visitor.rb#77 + # source://prism//lib/prism/inspect_visitor.rb#80 def visit_alias_global_variable_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#89 + # source://prism//lib/prism/inspect_visitor.rb#92 def visit_alias_method_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#101 + # source://prism//lib/prism/inspect_visitor.rb#104 def visit_alternation_pattern_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#113 + # source://prism//lib/prism/inspect_visitor.rb#116 def visit_and_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#125 + # source://prism//lib/prism/inspect_visitor.rb#128 def visit_arguments_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#141 + # source://prism//lib/prism/inspect_visitor.rb#144 def visit_array_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#159 + # source://prism//lib/prism/inspect_visitor.rb#162 def visit_array_pattern_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#198 + # source://prism//lib/prism/inspect_visitor.rb#201 def visit_assoc_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#210 + # source://prism//lib/prism/inspect_visitor.rb#213 def visit_assoc_splat_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#224 + # source://prism//lib/prism/inspect_visitor.rb#227 def visit_back_reference_read_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#232 + # source://prism//lib/prism/inspect_visitor.rb#235 def visit_begin_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#265 + # source://prism//lib/prism/inspect_visitor.rb#268 def visit_block_argument_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#279 + # source://prism//lib/prism/inspect_visitor.rb#282 def visit_block_local_variable_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#287 + # source://prism//lib/prism/inspect_visitor.rb#290 def visit_block_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#309 + # source://prism//lib/prism/inspect_visitor.rb#312 def visit_block_parameter_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#323 + # source://prism//lib/prism/inspect_visitor.rb#326 def visit_block_parameters_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#347 + # source://prism//lib/prism/inspect_visitor.rb#350 def visit_break_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#361 + # source://prism//lib/prism/inspect_visitor.rb#364 def visit_call_and_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#381 + # source://prism//lib/prism/inspect_visitor.rb#384 def visit_call_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#411 + # source://prism//lib/prism/inspect_visitor.rb#414 def visit_call_operator_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#432 + # source://prism//lib/prism/inspect_visitor.rb#435 def visit_call_or_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#452 + # source://prism//lib/prism/inspect_visitor.rb#455 def visit_call_target_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#464 + # source://prism//lib/prism/inspect_visitor.rb#467 def visit_capture_pattern_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#476 + # source://prism//lib/prism/inspect_visitor.rb#479 def visit_case_match_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#506 + # source://prism//lib/prism/inspect_visitor.rb#509 def visit_case_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#536 + # source://prism//lib/prism/inspect_visitor.rb#539 def visit_class_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#562 + # source://prism//lib/prism/inspect_visitor.rb#565 def visit_class_variable_and_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#574 + # source://prism//lib/prism/inspect_visitor.rb#577 def visit_class_variable_operator_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#587 + # source://prism//lib/prism/inspect_visitor.rb#590 def visit_class_variable_or_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#599 + # source://prism//lib/prism/inspect_visitor.rb#602 def visit_class_variable_read_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#607 + # source://prism//lib/prism/inspect_visitor.rb#610 def visit_class_variable_target_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#615 + # source://prism//lib/prism/inspect_visitor.rb#618 def visit_class_variable_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#627 + # source://prism//lib/prism/inspect_visitor.rb#630 def visit_constant_and_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#639 + # source://prism//lib/prism/inspect_visitor.rb#642 def visit_constant_operator_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#652 + # source://prism//lib/prism/inspect_visitor.rb#655 def visit_constant_or_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#664 + # source://prism//lib/prism/inspect_visitor.rb#667 def visit_constant_path_and_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#676 + # source://prism//lib/prism/inspect_visitor.rb#679 def visit_constant_path_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#696 + # source://prism//lib/prism/inspect_visitor.rb#699 def visit_constant_path_operator_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#709 + # source://prism//lib/prism/inspect_visitor.rb#712 def visit_constant_path_or_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#721 + # source://prism//lib/prism/inspect_visitor.rb#724 def visit_constant_path_target_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#741 + # source://prism//lib/prism/inspect_visitor.rb#744 def visit_constant_path_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#753 + # source://prism//lib/prism/inspect_visitor.rb#756 def visit_constant_read_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#761 + # source://prism//lib/prism/inspect_visitor.rb#764 def visit_constant_target_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#769 + # source://prism//lib/prism/inspect_visitor.rb#772 def visit_constant_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#781 + # source://prism//lib/prism/inspect_visitor.rb#784 def visit_def_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#815 + # source://prism//lib/prism/inspect_visitor.rb#818 def visit_defined_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#827 + # source://prism//lib/prism/inspect_visitor.rb#830 def visit_else_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#842 + # source://prism//lib/prism/inspect_visitor.rb#845 def visit_embedded_statements_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#857 + # source://prism//lib/prism/inspect_visitor.rb#860 def visit_embedded_variable_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#867 + # source://prism//lib/prism/inspect_visitor.rb#870 def visit_ensure_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#882 + # source://prism//lib/prism/inspect_visitor.rb#885 def visit_false_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#889 + # source://prism//lib/prism/inspect_visitor.rb#892 def visit_find_pattern_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#917 + # source://prism//lib/prism/inspect_visitor.rb#920 def visit_flip_flop_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#937 + # source://prism//lib/prism/inspect_visitor.rb#940 def visit_float_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#945 + # source://prism//lib/prism/inspect_visitor.rb#948 def visit_for_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#966 + # source://prism//lib/prism/inspect_visitor.rb#969 def visit_forwarding_arguments_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#973 + # source://prism//lib/prism/inspect_visitor.rb#976 def visit_forwarding_parameter_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#980 + # source://prism//lib/prism/inspect_visitor.rb#983 def visit_forwarding_super_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#993 + # source://prism//lib/prism/inspect_visitor.rb#996 def visit_global_variable_and_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1005 + # source://prism//lib/prism/inspect_visitor.rb#1008 def visit_global_variable_operator_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1018 + # source://prism//lib/prism/inspect_visitor.rb#1021 def visit_global_variable_or_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1030 + # source://prism//lib/prism/inspect_visitor.rb#1033 def visit_global_variable_read_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1038 + # source://prism//lib/prism/inspect_visitor.rb#1041 def visit_global_variable_target_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1046 + # source://prism//lib/prism/inspect_visitor.rb#1049 def visit_global_variable_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1058 + # source://prism//lib/prism/inspect_visitor.rb#1061 def visit_hash_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1076 + # source://prism//lib/prism/inspect_visitor.rb#1079 def visit_hash_pattern_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1106 + # source://prism//lib/prism/inspect_visitor.rb#1109 def visit_if_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1130 + # source://prism//lib/prism/inspect_visitor.rb#1133 def visit_imaginary_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1139 + # source://prism//lib/prism/inspect_visitor.rb#1142 def visit_implicit_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1148 + # source://prism//lib/prism/inspect_visitor.rb#1151 def visit_implicit_rest_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1155 + # source://prism//lib/prism/inspect_visitor.rb#1158 def visit_in_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1172 + # source://prism//lib/prism/inspect_visitor.rb#1175 def visit_index_and_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1203 + # source://prism//lib/prism/inspect_visitor.rb#1206 def visit_index_operator_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1235 + # source://prism//lib/prism/inspect_visitor.rb#1238 def visit_index_or_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1266 + # source://prism//lib/prism/inspect_visitor.rb#1269 def visit_index_target_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1289 + # source://prism//lib/prism/inspect_visitor.rb#1292 def visit_instance_variable_and_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1301 + # source://prism//lib/prism/inspect_visitor.rb#1304 def visit_instance_variable_operator_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1314 + # source://prism//lib/prism/inspect_visitor.rb#1317 def visit_instance_variable_or_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1326 + # source://prism//lib/prism/inspect_visitor.rb#1329 def visit_instance_variable_read_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1334 + # source://prism//lib/prism/inspect_visitor.rb#1337 def visit_instance_variable_target_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1342 + # source://prism//lib/prism/inspect_visitor.rb#1345 def visit_instance_variable_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1354 + # source://prism//lib/prism/inspect_visitor.rb#1357 def visit_integer_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1362 + # source://prism//lib/prism/inspect_visitor.rb#1365 def visit_interpolated_match_last_line_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1380 + # source://prism//lib/prism/inspect_visitor.rb#1383 def visit_interpolated_regular_expression_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1398 + # source://prism//lib/prism/inspect_visitor.rb#1401 def visit_interpolated_string_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1416 + # source://prism//lib/prism/inspect_visitor.rb#1419 def visit_interpolated_symbol_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1434 + # source://prism//lib/prism/inspect_visitor.rb#1437 def visit_interpolated_x_string_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1452 + # source://prism//lib/prism/inspect_visitor.rb#1455 def visit_it_local_variable_read_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1459 + # source://prism//lib/prism/inspect_visitor.rb#1462 def visit_it_parameters_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1466 + # source://prism//lib/prism/inspect_visitor.rb#1469 def visit_keyword_hash_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1482 + # source://prism//lib/prism/inspect_visitor.rb#1485 def visit_keyword_rest_parameter_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1496 + # source://prism//lib/prism/inspect_visitor.rb#1499 def visit_lambda_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1519 + # source://prism//lib/prism/inspect_visitor.rb#1522 def visit_local_variable_and_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1532 + # source://prism//lib/prism/inspect_visitor.rb#1535 def visit_local_variable_operator_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1546 + # source://prism//lib/prism/inspect_visitor.rb#1549 def visit_local_variable_or_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1559 + # source://prism//lib/prism/inspect_visitor.rb#1562 def visit_local_variable_read_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1568 + # source://prism//lib/prism/inspect_visitor.rb#1571 def visit_local_variable_target_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1577 + # source://prism//lib/prism/inspect_visitor.rb#1580 def visit_local_variable_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1590 + # source://prism//lib/prism/inspect_visitor.rb#1593 def visit_match_last_line_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1601 + # source://prism//lib/prism/inspect_visitor.rb#1604 def visit_match_predicate_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1613 + # source://prism//lib/prism/inspect_visitor.rb#1616 def visit_match_required_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1625 + # source://prism//lib/prism/inspect_visitor.rb#1628 def visit_match_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1643 + # source://prism//lib/prism/inspect_visitor.rb#1646 def visit_missing_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1650 + # source://prism//lib/prism/inspect_visitor.rb#1653 def visit_module_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1669 + # source://prism//lib/prism/inspect_visitor.rb#1672 def visit_multi_target_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1702 + # source://prism//lib/prism/inspect_visitor.rb#1705 def visit_multi_write_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1738 + # source://prism//lib/prism/inspect_visitor.rb#1741 def visit_next_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1752 + # source://prism//lib/prism/inspect_visitor.rb#1755 def visit_nil_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1759 + # source://prism//lib/prism/inspect_visitor.rb#1762 def visit_no_keywords_parameter_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1768 + # source://prism//lib/prism/inspect_visitor.rb#1771 def visit_numbered_parameters_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1776 + # source://prism//lib/prism/inspect_visitor.rb#1779 def visit_numbered_reference_read_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1784 + # source://prism//lib/prism/inspect_visitor.rb#1787 def visit_optional_keyword_parameter_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1795 + # source://prism//lib/prism/inspect_visitor.rb#1798 def visit_optional_parameter_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1807 + # source://prism//lib/prism/inspect_visitor.rb#1810 def visit_or_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1819 + # source://prism//lib/prism/inspect_visitor.rb#1822 def visit_parameters_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1880 + # source://prism//lib/prism/inspect_visitor.rb#1883 def visit_parentheses_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1895 + # source://prism//lib/prism/inspect_visitor.rb#1898 def visit_pinned_expression_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1907 + # source://prism//lib/prism/inspect_visitor.rb#1910 def visit_pinned_variable_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1917 + # source://prism//lib/prism/inspect_visitor.rb#1920 def visit_post_execution_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1933 + # source://prism//lib/prism/inspect_visitor.rb#1936 def visit_pre_execution_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1949 + # source://prism//lib/prism/inspect_visitor.rb#1952 def visit_program_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1959 + # source://prism//lib/prism/inspect_visitor.rb#1962 def visit_range_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1979 + # source://prism//lib/prism/inspect_visitor.rb#1982 def visit_rational_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1988 + # source://prism//lib/prism/inspect_visitor.rb#1991 def visit_redo_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#1995 + # source://prism//lib/prism/inspect_visitor.rb#1998 def visit_regular_expression_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2006 + # source://prism//lib/prism/inspect_visitor.rb#2009 def visit_required_keyword_parameter_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2015 + # source://prism//lib/prism/inspect_visitor.rb#2018 def visit_required_parameter_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2023 + # source://prism//lib/prism/inspect_visitor.rb#2026 def visit_rescue_modifier_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2035 + # source://prism//lib/prism/inspect_visitor.rb#2038 def visit_rescue_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2072 + # source://prism//lib/prism/inspect_visitor.rb#2075 def visit_rest_parameter_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2086 + # source://prism//lib/prism/inspect_visitor.rb#2089 def visit_retry_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2093 + # source://prism//lib/prism/inspect_visitor.rb#2096 def visit_return_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2107 + # source://prism//lib/prism/inspect_visitor.rb#2110 def visit_self_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2114 + # source://prism//lib/prism/inspect_visitor.rb#2117 def visit_shareable_constant_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2123 + # source://prism//lib/prism/inspect_visitor.rb#2126 def visit_singleton_class_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2142 + # source://prism//lib/prism/inspect_visitor.rb#2145 def visit_source_encoding_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2149 + # source://prism//lib/prism/inspect_visitor.rb#2152 def visit_source_file_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2157 + # source://prism//lib/prism/inspect_visitor.rb#2160 def visit_source_line_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2164 + # source://prism//lib/prism/inspect_visitor.rb#2167 def visit_splat_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2178 + # source://prism//lib/prism/inspect_visitor.rb#2181 def visit_statements_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2194 + # source://prism//lib/prism/inspect_visitor.rb#2197 def visit_string_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2205 + # source://prism//lib/prism/inspect_visitor.rb#2208 def visit_super_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2227 + # source://prism//lib/prism/inspect_visitor.rb#2230 def visit_symbol_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2238 + # source://prism//lib/prism/inspect_visitor.rb#2241 def visit_true_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2245 + # source://prism//lib/prism/inspect_visitor.rb#2248 def visit_undef_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2262 + # source://prism//lib/prism/inspect_visitor.rb#2265 def visit_unless_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2286 + # source://prism//lib/prism/inspect_visitor.rb#2289 def visit_until_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2304 + # source://prism//lib/prism/inspect_visitor.rb#2307 def visit_when_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2328 + # source://prism//lib/prism/inspect_visitor.rb#2331 def visit_while_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2346 + # source://prism//lib/prism/inspect_visitor.rb#2349 def visit_x_string_node(node); end - # source://prism//lib/prism/inspect_visitor.rb#2357 + # source://prism//lib/prism/inspect_visitor.rb#2360 def visit_yield_node(node); end private - # source://prism//lib/prism/inspect_visitor.rb#2381 + # source://prism//lib/prism/inspect_visitor.rb#2384 def inspect_location(location); end - # source://prism//lib/prism/inspect_visitor.rb#2375 + # source://prism//lib/prism/inspect_visitor.rb#2378 def inspect_node(name, node); end class << self - # source://prism//lib/prism/inspect_visitor.rb#41 + # source://prism//lib/prism/inspect_visitor.rb#44 sig { params(node: Prism::Node).returns(String) } def compose(node); end end end -# source://prism//lib/prism/inspect_visitor.rb#17 +# source://prism//lib/prism/inspect_visitor.rb#20 class Prism::InspectVisitor::Replace - # source://prism//lib/prism/inspect_visitor.rb#20 + # source://prism//lib/prism/inspect_visitor.rb#23 def initialize(value); end - # source://prism//lib/prism/inspect_visitor.rb#18 + # source://prism//lib/prism/inspect_visitor.rb#21 def value; end end -# source://prism//lib/prism/node.rb#9768 +# source://prism//lib/prism/node.rb#9870 class Prism::InstanceVariableAndWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#9770 + # source://prism//lib/prism/node.rb#9872 sig do params( source: Prism::Source, @@ -12804,26 +12812,26 @@ class Prism::InstanceVariableAndWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, operator_loc, value); end - # source://prism//lib/prism/node.rb#9868 + # source://prism//lib/prism/node.rb#9970 def ===(other); end - # source://prism//lib/prism/node.rb#9782 + # source://prism//lib/prism/node.rb#9884 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#9787 + # source://prism//lib/prism/node.rb#9889 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#9797 + # source://prism//lib/prism/node.rb#9899 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#9792 + # source://prism//lib/prism/node.rb#9894 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#9802 + # source://prism//lib/prism/node.rb#9904 sig do params( node_id: Integer, @@ -12837,63 +12845,63 @@ class Prism::InstanceVariableAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#9787 + # source://prism//lib/prism/node.rb#9889 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#9810 + # source://prism//lib/prism/node.rb#9912 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#218 + # source://prism//lib/prism/desugar_compiler.rb#219 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#9852 + # source://prism//lib/prism/node.rb#9954 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#9815 + # source://prism//lib/prism/node.rb#9917 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#9818 + # source://prism//lib/prism/node.rb#9920 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#9847 + # source://prism//lib/prism/node.rb#9949 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#9831 + # source://prism//lib/prism/node.rb#9933 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#9826 + # source://prism//lib/prism/node.rb#9928 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#9839 + # source://prism//lib/prism/node.rb#9941 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#9857 + # source://prism//lib/prism/node.rb#9959 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#9844 + # source://prism//lib/prism/node.rb#9946 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#9862 + # source://prism//lib/prism/node.rb#9964 def type; end end end -# source://prism//lib/prism/node.rb#9881 +# source://prism//lib/prism/node.rb#9983 class Prism::InstanceVariableOperatorWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#9883 + # source://prism//lib/prism/node.rb#9985 sig do params( source: Prism::Source, @@ -12909,34 +12917,34 @@ class Prism::InstanceVariableOperatorWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, binary_operator_loc, value, binary_operator); end - # source://prism//lib/prism/node.rb#9980 + # source://prism//lib/prism/node.rb#10082 def ===(other); end - # source://prism//lib/prism/node.rb#9896 + # source://prism//lib/prism/node.rb#9998 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#9961 + # source://prism//lib/prism/node.rb#10063 sig { returns(Symbol) } def binary_operator; end - # source://prism//lib/prism/node.rb#9945 + # source://prism//lib/prism/node.rb#10047 sig { returns(Prism::Location) } def binary_operator_loc; end - # source://prism//lib/prism/node.rb#9901 + # source://prism//lib/prism/node.rb#10003 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#9911 + # source://prism//lib/prism/node.rb#10013 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#9906 + # source://prism//lib/prism/node.rb#10008 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#9916 + # source://prism//lib/prism/node.rb#10018 sig do params( node_id: Integer, @@ -12951,61 +12959,61 @@ class Prism::InstanceVariableOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), binary_operator: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#9901 + # source://prism//lib/prism/node.rb#10003 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#9924 + # source://prism//lib/prism/node.rb#10026 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#230 + # source://prism//lib/prism/desugar_compiler.rb#231 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#9964 + # source://prism//lib/prism/node.rb#10066 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#9929 + # source://prism//lib/prism/node.rb#10031 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#9932 + # source://prism//lib/prism/node.rb#10034 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node_ext.rb#435 + # source://prism//lib/prism/node_ext.rb#438 def operator; end - # source://prism//lib/prism/node_ext.rb#442 + # source://prism//lib/prism/node_ext.rb#445 def operator_loc; end - # source://prism//lib/prism/node.rb#9953 + # source://prism//lib/prism/node.rb#10055 def save_binary_operator_loc(repository); end - # source://prism//lib/prism/node.rb#9940 + # source://prism//lib/prism/node.rb#10042 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#9969 + # source://prism//lib/prism/node.rb#10071 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#9958 + # source://prism//lib/prism/node.rb#10060 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#9974 + # source://prism//lib/prism/node.rb#10076 def type; end end end -# source://prism//lib/prism/node.rb#9994 +# source://prism//lib/prism/node.rb#10096 class Prism::InstanceVariableOrWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#9996 + # source://prism//lib/prism/node.rb#10098 sig do params( source: Prism::Source, @@ -13020,26 +13028,26 @@ class Prism::InstanceVariableOrWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, operator_loc, value); end - # source://prism//lib/prism/node.rb#10094 + # source://prism//lib/prism/node.rb#10196 def ===(other); end - # source://prism//lib/prism/node.rb#10008 + # source://prism//lib/prism/node.rb#10110 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#10013 + # source://prism//lib/prism/node.rb#10115 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#10023 + # source://prism//lib/prism/node.rb#10125 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#10018 + # source://prism//lib/prism/node.rb#10120 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#10028 + # source://prism//lib/prism/node.rb#10130 sig do params( node_id: Integer, @@ -13053,86 +13061,86 @@ class Prism::InstanceVariableOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#10013 + # source://prism//lib/prism/node.rb#10115 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#10036 + # source://prism//lib/prism/node.rb#10138 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/desugar_compiler.rb#224 + # source://prism//lib/prism/desugar_compiler.rb#225 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#10078 + # source://prism//lib/prism/node.rb#10180 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#10041 + # source://prism//lib/prism/node.rb#10143 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#10044 + # source://prism//lib/prism/node.rb#10146 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#10073 + # source://prism//lib/prism/node.rb#10175 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#10057 + # source://prism//lib/prism/node.rb#10159 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#10052 + # source://prism//lib/prism/node.rb#10154 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#10065 + # source://prism//lib/prism/node.rb#10167 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#10083 + # source://prism//lib/prism/node.rb#10185 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#10070 + # source://prism//lib/prism/node.rb#10172 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#10088 + # source://prism//lib/prism/node.rb#10190 def type; end end end -# source://prism//lib/prism/node.rb#10107 +# source://prism//lib/prism/node.rb#10209 class Prism::InstanceVariableReadNode < ::Prism::Node - # source://prism//lib/prism/node.rb#10109 + # source://prism//lib/prism/node.rb#10211 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end - # source://prism//lib/prism/node.rb#10174 + # source://prism//lib/prism/node.rb#10276 def ===(other); end - # source://prism//lib/prism/node.rb#10118 + # source://prism//lib/prism/node.rb#10220 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#10123 + # source://prism//lib/prism/node.rb#10225 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#10133 + # source://prism//lib/prism/node.rb#10235 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#10128 + # source://prism//lib/prism/node.rb#10230 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#10138 + # source://prism//lib/prism/node.rb#10240 sig do params( node_id: Integer, @@ -13143,61 +13151,61 @@ class Prism::InstanceVariableReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#10123 + # source://prism//lib/prism/node.rb#10225 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#10146 + # source://prism//lib/prism/node.rb#10248 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#10158 + # source://prism//lib/prism/node.rb#10260 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#10155 + # source://prism//lib/prism/node.rb#10257 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#10163 + # source://prism//lib/prism/node.rb#10265 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#10168 + # source://prism//lib/prism/node.rb#10270 def type; end end end -# source://prism//lib/prism/node.rb#10184 +# source://prism//lib/prism/node.rb#10286 class Prism::InstanceVariableTargetNode < ::Prism::Node - # source://prism//lib/prism/node.rb#10186 + # source://prism//lib/prism/node.rb#10288 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end - # source://prism//lib/prism/node.rb#10247 + # source://prism//lib/prism/node.rb#10349 def ===(other); end - # source://prism//lib/prism/node.rb#10195 + # source://prism//lib/prism/node.rb#10297 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#10200 + # source://prism//lib/prism/node.rb#10302 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#10210 + # source://prism//lib/prism/node.rb#10312 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#10205 + # source://prism//lib/prism/node.rb#10307 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#10215 + # source://prism//lib/prism/node.rb#10317 sig do params( node_id: Integer, @@ -13208,38 +13216,38 @@ class Prism::InstanceVariableTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#10200 + # source://prism//lib/prism/node.rb#10302 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#10223 + # source://prism//lib/prism/node.rb#10325 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#10231 + # source://prism//lib/prism/node.rb#10333 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#10228 + # source://prism//lib/prism/node.rb#10330 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#10236 + # source://prism//lib/prism/node.rb#10338 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#10241 + # source://prism//lib/prism/node.rb#10343 def type; end end end -# source://prism//lib/prism/node.rb#10257 +# source://prism//lib/prism/node.rb#10359 class Prism::InstanceVariableWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#10259 + # source://prism//lib/prism/node.rb#10361 sig do params( source: Prism::Source, @@ -13254,26 +13262,26 @@ class Prism::InstanceVariableWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, value, operator_loc); end - # source://prism//lib/prism/node.rb#10373 + # source://prism//lib/prism/node.rb#10475 def ===(other); end - # source://prism//lib/prism/node.rb#10271 + # source://prism//lib/prism/node.rb#10373 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#10276 + # source://prism//lib/prism/node.rb#10378 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#10286 + # source://prism//lib/prism/node.rb#10388 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#10281 + # source://prism//lib/prism/node.rb#10383 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#10291 + # source://prism//lib/prism/node.rb#10393 sig do params( node_id: Integer, @@ -13287,76 +13295,76 @@ class Prism::InstanceVariableWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#10276 + # source://prism//lib/prism/node.rb#10378 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#10299 + # source://prism//lib/prism/node.rb#10401 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#10357 + # source://prism//lib/prism/node.rb#10459 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#10308 + # source://prism//lib/prism/node.rb#10410 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#10314 + # source://prism//lib/prism/node.rb#10416 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#10352 + # source://prism//lib/prism/node.rb#10454 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#10339 + # source://prism//lib/prism/node.rb#10441 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#10322 + # source://prism//lib/prism/node.rb#10424 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#10347 + # source://prism//lib/prism/node.rb#10449 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#10362 + # source://prism//lib/prism/node.rb#10464 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#10333 + # source://prism//lib/prism/node.rb#10435 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#10367 + # source://prism//lib/prism/node.rb#10469 def type; end end end -# source://prism//lib/prism/node.rb#18507 +# source://prism//lib/prism/node.rb#18678 # Flags for integer nodes that correspond to the base of the integer. module Prism::IntegerBaseFlags; end -# source://prism//lib/prism/node.rb#18509 +# source://prism//lib/prism/node.rb#18680 Prism::IntegerBaseFlags::BINARY = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18512 +# source://prism//lib/prism/node.rb#18683 Prism::IntegerBaseFlags::DECIMAL = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18518 +# source://prism//lib/prism/node.rb#18689 Prism::IntegerBaseFlags::HEXADECIMAL = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18515 +# source://prism//lib/prism/node.rb#18686 Prism::IntegerBaseFlags::OCTAL = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#10386 +# source://prism//lib/prism/node.rb#10488 class Prism::IntegerNode < ::Prism::Node - # source://prism//lib/prism/node.rb#10388 + # source://prism//lib/prism/node.rb#10490 sig do params( source: Prism::Source, @@ -13368,30 +13376,30 @@ class Prism::IntegerNode < ::Prism::Node end def initialize(source, node_id, location, flags, value); end - # source://prism//lib/prism/node.rb#10469 + # source://prism//lib/prism/node.rb#10571 def ===(other); end - # source://prism//lib/prism/node.rb#10397 + # source://prism//lib/prism/node.rb#10499 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#10430 + # source://prism//lib/prism/node.rb#10532 sig { returns(T::Boolean) } def binary?; end - # source://prism//lib/prism/node.rb#10402 + # source://prism//lib/prism/node.rb#10504 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#10412 + # source://prism//lib/prism/node.rb#10514 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#10407 + # source://prism//lib/prism/node.rb#10509 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#10417 + # source://prism//lib/prism/node.rb#10519 sig do params( node_id: Integer, @@ -13402,52 +13410,52 @@ class Prism::IntegerNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#10435 + # source://prism//lib/prism/node.rb#10537 sig { returns(T::Boolean) } def decimal?; end - # source://prism//lib/prism/node.rb#10402 + # source://prism//lib/prism/node.rb#10504 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#10425 + # source://prism//lib/prism/node.rb#10527 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#10445 + # source://prism//lib/prism/node.rb#10547 sig { returns(T::Boolean) } def hexadecimal?; end - # source://prism//lib/prism/node.rb#10453 + # source://prism//lib/prism/node.rb#10555 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#10440 + # source://prism//lib/prism/node.rb#10542 sig { returns(T::Boolean) } def octal?; end - # source://prism//lib/prism/node.rb#10458 + # source://prism//lib/prism/node.rb#10560 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#10450 + # source://prism//lib/prism/node.rb#10552 sig { returns(Integer) } def value; end class << self - # source://prism//lib/prism/node.rb#10463 + # source://prism//lib/prism/node.rb#10565 def type; end end end -# source://prism//lib/prism/node.rb#10480 +# source://prism//lib/prism/node.rb#10582 class Prism::InterpolatedMatchLastLineNode < ::Prism::Node include ::Prism::RegularExpressionOptions - # source://prism//lib/prism/node.rb#10482 + # source://prism//lib/prism/node.rb#10584 sig do params( source: Prism::Source, @@ -13461,38 +13469,38 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node end def initialize(source, node_id, location, flags, opening_loc, parts, closing_loc); end - # source://prism//lib/prism/node.rb#10636 + # source://prism//lib/prism/node.rb#10738 def ===(other); end - # source://prism//lib/prism/node.rb#10493 + # source://prism//lib/prism/node.rb#10595 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#10551 + # source://prism//lib/prism/node.rb#10653 sig { returns(T::Boolean) } def ascii_8bit?; end - # source://prism//lib/prism/node.rb#10498 + # source://prism//lib/prism/node.rb#10600 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#10615 + # source://prism//lib/prism/node.rb#10717 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#10597 + # source://prism//lib/prism/node.rb#10699 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#10508 + # source://prism//lib/prism/node.rb#10610 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#10503 + # source://prism//lib/prism/node.rb#10605 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#10513 + # source://prism//lib/prism/node.rb#10615 sig do params( node_id: Integer, @@ -13505,100 +13513,100 @@ class Prism::InterpolatedMatchLastLineNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#10498 + # source://prism//lib/prism/node.rb#10600 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#10521 + # source://prism//lib/prism/node.rb#10623 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#10546 + # source://prism//lib/prism/node.rb#10648 sig { returns(T::Boolean) } def euc_jp?; end - # source://prism//lib/prism/node.rb#10531 + # source://prism//lib/prism/node.rb#10633 sig { returns(T::Boolean) } def extended?; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#10571 + # source://prism//lib/prism/node.rb#10673 sig { returns(T::Boolean) } def forced_binary_encoding?; end - # source://prism//lib/prism/node.rb#10576 + # source://prism//lib/prism/node.rb#10678 sig { returns(T::Boolean) } def forced_us_ascii_encoding?; end - # source://prism//lib/prism/node.rb#10566 + # source://prism//lib/prism/node.rb#10668 sig { returns(T::Boolean) } def forced_utf8_encoding?; end - # source://prism//lib/prism/node.rb#10526 + # source://prism//lib/prism/node.rb#10628 sig { returns(T::Boolean) } def ignore_case?; end - # source://prism//lib/prism/node.rb#10620 + # source://prism//lib/prism/node.rb#10722 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#10536 + # source://prism//lib/prism/node.rb#10638 sig { returns(T::Boolean) } def multi_line?; end - # source://prism//lib/prism/parse_result/newlines.rb#121 + # source://prism//lib/prism/parse_result/newlines.rb#122 def newline_flag!(lines); end - # source://prism//lib/prism/node.rb#10541 + # source://prism//lib/prism/node.rb#10643 sig { returns(T::Boolean) } def once?; end - # source://prism//lib/prism/node.rb#10610 + # source://prism//lib/prism/node.rb#10712 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#10581 + # source://prism//lib/prism/node.rb#10683 sig { returns(Prism::Location) } def opening_loc; end sig { returns(Integer) } def options; end - # source://prism//lib/prism/node.rb#10594 + # source://prism//lib/prism/node.rb#10696 sig { returns(T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode)]) } def parts; end - # source://prism//lib/prism/node.rb#10605 + # source://prism//lib/prism/node.rb#10707 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#10589 + # source://prism//lib/prism/node.rb#10691 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#10625 + # source://prism//lib/prism/node.rb#10727 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#10561 + # source://prism//lib/prism/node.rb#10663 sig { returns(T::Boolean) } def utf_8?; end - # source://prism//lib/prism/node.rb#10556 + # source://prism//lib/prism/node.rb#10658 sig { returns(T::Boolean) } def windows_31j?; end class << self - # source://prism//lib/prism/node.rb#10630 + # source://prism//lib/prism/node.rb#10732 def type; end end end -# source://prism//lib/prism/node.rb#10650 +# source://prism//lib/prism/node.rb#10752 class Prism::InterpolatedRegularExpressionNode < ::Prism::Node include ::Prism::RegularExpressionOptions - # source://prism//lib/prism/node.rb#10652 + # source://prism//lib/prism/node.rb#10754 sig do params( source: Prism::Source, @@ -13612,38 +13620,38 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node end def initialize(source, node_id, location, flags, opening_loc, parts, closing_loc); end - # source://prism//lib/prism/node.rb#10806 + # source://prism//lib/prism/node.rb#10908 def ===(other); end - # source://prism//lib/prism/node.rb#10663 + # source://prism//lib/prism/node.rb#10765 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#10721 + # source://prism//lib/prism/node.rb#10823 sig { returns(T::Boolean) } def ascii_8bit?; end - # source://prism//lib/prism/node.rb#10668 + # source://prism//lib/prism/node.rb#10770 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#10785 + # source://prism//lib/prism/node.rb#10887 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#10767 + # source://prism//lib/prism/node.rb#10869 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#10678 + # source://prism//lib/prism/node.rb#10780 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#10673 + # source://prism//lib/prism/node.rb#10775 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#10683 + # source://prism//lib/prism/node.rb#10785 sig do params( node_id: Integer, @@ -13656,100 +13664,100 @@ class Prism::InterpolatedRegularExpressionNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#10668 + # source://prism//lib/prism/node.rb#10770 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#10691 + # source://prism//lib/prism/node.rb#10793 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#10716 + # source://prism//lib/prism/node.rb#10818 sig { returns(T::Boolean) } def euc_jp?; end - # source://prism//lib/prism/node.rb#10701 + # source://prism//lib/prism/node.rb#10803 sig { returns(T::Boolean) } def extended?; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#10741 + # source://prism//lib/prism/node.rb#10843 sig { returns(T::Boolean) } def forced_binary_encoding?; end - # source://prism//lib/prism/node.rb#10746 + # source://prism//lib/prism/node.rb#10848 sig { returns(T::Boolean) } def forced_us_ascii_encoding?; end - # source://prism//lib/prism/node.rb#10736 + # source://prism//lib/prism/node.rb#10838 sig { returns(T::Boolean) } def forced_utf8_encoding?; end - # source://prism//lib/prism/node.rb#10696 + # source://prism//lib/prism/node.rb#10798 sig { returns(T::Boolean) } def ignore_case?; end - # source://prism//lib/prism/node.rb#10790 + # source://prism//lib/prism/node.rb#10892 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#10706 + # source://prism//lib/prism/node.rb#10808 sig { returns(T::Boolean) } def multi_line?; end - # source://prism//lib/prism/parse_result/newlines.rb#128 + # source://prism//lib/prism/parse_result/newlines.rb#129 def newline_flag!(lines); end - # source://prism//lib/prism/node.rb#10711 + # source://prism//lib/prism/node.rb#10813 sig { returns(T::Boolean) } def once?; end - # source://prism//lib/prism/node.rb#10780 + # source://prism//lib/prism/node.rb#10882 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#10751 + # source://prism//lib/prism/node.rb#10853 sig { returns(Prism::Location) } def opening_loc; end sig { returns(Integer) } def options; end - # source://prism//lib/prism/node.rb#10764 + # source://prism//lib/prism/node.rb#10866 sig { returns(T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode)]) } def parts; end - # source://prism//lib/prism/node.rb#10775 + # source://prism//lib/prism/node.rb#10877 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#10759 + # source://prism//lib/prism/node.rb#10861 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#10795 + # source://prism//lib/prism/node.rb#10897 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#10731 + # source://prism//lib/prism/node.rb#10833 sig { returns(T::Boolean) } def utf_8?; end - # source://prism//lib/prism/node.rb#10726 + # source://prism//lib/prism/node.rb#10828 sig { returns(T::Boolean) } def windows_31j?; end class << self - # source://prism//lib/prism/node.rb#10800 + # source://prism//lib/prism/node.rb#10902 def type; end end end -# source://prism//lib/prism/node.rb#10820 +# source://prism//lib/prism/node.rb#10922 class Prism::InterpolatedStringNode < ::Prism::Node include ::Prism::HeredocQuery - # source://prism//lib/prism/node.rb#10822 + # source://prism//lib/prism/node.rb#10924 sig do params( source: Prism::Source, @@ -13763,34 +13771,34 @@ class Prism::InterpolatedStringNode < ::Prism::Node end def initialize(source, node_id, location, flags, opening_loc, parts, closing_loc); end - # source://prism//lib/prism/node.rb#10943 + # source://prism//lib/prism/node.rb#11045 def ===(other); end - # source://prism//lib/prism/node.rb#10833 + # source://prism//lib/prism/node.rb#10935 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#10838 + # source://prism//lib/prism/node.rb#10940 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#10922 + # source://prism//lib/prism/node.rb#11024 sig { returns(T.nilable(String)) } def closing; end - # source://prism//lib/prism/node.rb#10898 + # source://prism//lib/prism/node.rb#11000 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end - # source://prism//lib/prism/node.rb#10848 + # source://prism//lib/prism/node.rb#10950 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#10843 + # source://prism//lib/prism/node.rb#10945 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#10853 + # source://prism//lib/prism/node.rb#10955 sig do params( node_id: Integer, @@ -13803,78 +13811,78 @@ class Prism::InterpolatedStringNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#10838 + # source://prism//lib/prism/node.rb#10940 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#10861 + # source://prism//lib/prism/node.rb#10963 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#10866 + # source://prism//lib/prism/node.rb#10968 sig { returns(T::Boolean) } def frozen?; end sig { returns(T::Boolean) } def heredoc?; end - # source://prism//lib/prism/node.rb#10927 + # source://prism//lib/prism/node.rb#11029 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#10871 + # source://prism//lib/prism/node.rb#10973 sig { returns(T::Boolean) } def mutable?; end - # source://prism//lib/prism/parse_result/newlines.rb#135 + # source://prism//lib/prism/parse_result/newlines.rb#136 def newline_flag!(lines); end - # source://prism//lib/prism/node.rb#10917 + # source://prism//lib/prism/node.rb#11019 sig { returns(T.nilable(String)) } def opening; end - # source://prism//lib/prism/node.rb#10876 + # source://prism//lib/prism/node.rb#10978 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end - # source://prism//lib/prism/node.rb#10895 + # source://prism//lib/prism/node.rb#10997 sig do returns(T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode, Prism::InterpolatedStringNode, Prism::XStringNode)]) end def parts; end - # source://prism//lib/prism/node.rb#10912 + # source://prism//lib/prism/node.rb#11014 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#10890 + # source://prism//lib/prism/node.rb#10992 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#10932 + # source://prism//lib/prism/node.rb#11034 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#10937 + # source://prism//lib/prism/node.rb#11039 def type; end end end -# source://prism//lib/prism/node.rb#18522 +# source://prism//lib/prism/node.rb#18693 # Flags for interpolated string nodes that indicated mutability if they are also marked as literals. module Prism::InterpolatedStringNodeFlags; end -# source://prism//lib/prism/node.rb#18524 +# source://prism//lib/prism/node.rb#18695 Prism::InterpolatedStringNodeFlags::FROZEN = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18527 +# source://prism//lib/prism/node.rb#18698 Prism::InterpolatedStringNodeFlags::MUTABLE = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#10957 +# source://prism//lib/prism/node.rb#11059 class Prism::InterpolatedSymbolNode < ::Prism::Node - # source://prism//lib/prism/node.rb#10959 + # source://prism//lib/prism/node.rb#11061 sig do params( source: Prism::Source, @@ -13888,34 +13896,34 @@ class Prism::InterpolatedSymbolNode < ::Prism::Node end def initialize(source, node_id, location, flags, opening_loc, parts, closing_loc); end - # source://prism//lib/prism/node.rb#11070 + # source://prism//lib/prism/node.rb#11172 def ===(other); end - # source://prism//lib/prism/node.rb#10970 + # source://prism//lib/prism/node.rb#11072 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#10975 + # source://prism//lib/prism/node.rb#11077 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#11049 + # source://prism//lib/prism/node.rb#11151 sig { returns(T.nilable(String)) } def closing; end - # source://prism//lib/prism/node.rb#11025 + # source://prism//lib/prism/node.rb#11127 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end - # source://prism//lib/prism/node.rb#10985 + # source://prism//lib/prism/node.rb#11087 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#10980 + # source://prism//lib/prism/node.rb#11082 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#10990 + # source://prism//lib/prism/node.rb#11092 sig do params( node_id: Integer, @@ -13928,57 +13936,57 @@ class Prism::InterpolatedSymbolNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#10975 + # source://prism//lib/prism/node.rb#11077 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#10998 + # source://prism//lib/prism/node.rb#11100 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#11054 + # source://prism//lib/prism/node.rb#11156 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/parse_result/newlines.rb#142 + # source://prism//lib/prism/parse_result/newlines.rb#143 def newline_flag!(lines); end - # source://prism//lib/prism/node.rb#11044 + # source://prism//lib/prism/node.rb#11146 sig { returns(T.nilable(String)) } def opening; end - # source://prism//lib/prism/node.rb#11003 + # source://prism//lib/prism/node.rb#11105 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end - # source://prism//lib/prism/node.rb#11022 + # source://prism//lib/prism/node.rb#11124 sig { returns(T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode)]) } def parts; end - # source://prism//lib/prism/node.rb#11039 + # source://prism//lib/prism/node.rb#11141 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#11017 + # source://prism//lib/prism/node.rb#11119 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#11059 + # source://prism//lib/prism/node.rb#11161 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#11064 + # source://prism//lib/prism/node.rb#11166 def type; end end end -# source://prism//lib/prism/node.rb#11083 +# source://prism//lib/prism/node.rb#11185 class Prism::InterpolatedXStringNode < ::Prism::Node include ::Prism::HeredocQuery - # source://prism//lib/prism/node.rb#11085 + # source://prism//lib/prism/node.rb#11187 sig do params( source: Prism::Source, @@ -13992,34 +14000,34 @@ class Prism::InterpolatedXStringNode < ::Prism::Node end def initialize(source, node_id, location, flags, opening_loc, parts, closing_loc); end - # source://prism//lib/prism/node.rb#11184 + # source://prism//lib/prism/node.rb#11286 def ===(other); end - # source://prism//lib/prism/node.rb#11096 + # source://prism//lib/prism/node.rb#11198 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#11101 + # source://prism//lib/prism/node.rb#11203 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#11163 + # source://prism//lib/prism/node.rb#11265 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#11145 + # source://prism//lib/prism/node.rb#11247 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#11111 + # source://prism//lib/prism/node.rb#11213 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#11106 + # source://prism//lib/prism/node.rb#11208 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#11116 + # source://prism//lib/prism/node.rb#11218 sig do params( node_id: Integer, @@ -14032,11 +14040,11 @@ class Prism::InterpolatedXStringNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), parts: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#11101 + # source://prism//lib/prism/node.rb#11203 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#11124 + # source://prism//lib/prism/node.rb#11226 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end @@ -14046,152 +14054,152 @@ class Prism::InterpolatedXStringNode < ::Prism::Node sig { returns(T::Boolean) } def heredoc?; end - # source://prism//lib/prism/node.rb#11168 + # source://prism//lib/prism/node.rb#11270 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/parse_result/newlines.rb#149 + # source://prism//lib/prism/parse_result/newlines.rb#150 def newline_flag!(lines); end - # source://prism//lib/prism/node.rb#11158 + # source://prism//lib/prism/node.rb#11260 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#11129 + # source://prism//lib/prism/node.rb#11231 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node.rb#11142 + # source://prism//lib/prism/node.rb#11244 sig { returns(T::Array[T.any(Prism::StringNode, Prism::EmbeddedStatementsNode, Prism::EmbeddedVariableNode)]) } def parts; end - # source://prism//lib/prism/node.rb#11153 + # source://prism//lib/prism/node.rb#11255 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#11137 + # source://prism//lib/prism/node.rb#11239 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#11173 + # source://prism//lib/prism/node.rb#11275 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#11178 + # source://prism//lib/prism/node.rb#11280 def type; end end end -# source://prism//lib/prism/node.rb#11197 +# source://prism//lib/prism/node.rb#11299 class Prism::ItLocalVariableReadNode < ::Prism::Node - # source://prism//lib/prism/node.rb#11199 + # source://prism//lib/prism/node.rb#11301 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#11256 + # source://prism//lib/prism/node.rb#11358 def ===(other); end - # source://prism//lib/prism/node.rb#11207 + # source://prism//lib/prism/node.rb#11309 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#11212 + # source://prism//lib/prism/node.rb#11314 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#11222 + # source://prism//lib/prism/node.rb#11324 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#11217 + # source://prism//lib/prism/node.rb#11319 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#11227 + # source://prism//lib/prism/node.rb#11329 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::ItLocalVariableReadNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#11212 + # source://prism//lib/prism/node.rb#11314 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#11235 + # source://prism//lib/prism/node.rb#11337 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#11240 + # source://prism//lib/prism/node.rb#11342 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#11245 + # source://prism//lib/prism/node.rb#11347 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#11250 + # source://prism//lib/prism/node.rb#11352 def type; end end end -# source://prism//lib/prism/node.rb#11265 +# source://prism//lib/prism/node.rb#11367 class Prism::ItParametersNode < ::Prism::Node - # source://prism//lib/prism/node.rb#11267 + # source://prism//lib/prism/node.rb#11369 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#11324 + # source://prism//lib/prism/node.rb#11426 def ===(other); end - # source://prism//lib/prism/node.rb#11275 + # source://prism//lib/prism/node.rb#11377 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#11280 + # source://prism//lib/prism/node.rb#11382 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#11290 + # source://prism//lib/prism/node.rb#11392 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#11285 + # source://prism//lib/prism/node.rb#11387 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#11295 + # source://prism//lib/prism/node.rb#11397 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::ItParametersNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#11280 + # source://prism//lib/prism/node.rb#11382 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#11303 + # source://prism//lib/prism/node.rb#11405 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#11308 + # source://prism//lib/prism/node.rb#11410 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#11313 + # source://prism//lib/prism/node.rb#11415 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#11318 + # source://prism//lib/prism/node.rb#11420 def type; end end end -# source://prism//lib/prism/node.rb#11333 +# source://prism//lib/prism/node.rb#11435 class Prism::KeywordHashNode < ::Prism::Node - # source://prism//lib/prism/node.rb#11335 + # source://prism//lib/prism/node.rb#11437 sig do params( source: Prism::Source, @@ -14203,26 +14211,26 @@ class Prism::KeywordHashNode < ::Prism::Node end def initialize(source, node_id, location, flags, elements); end - # source://prism//lib/prism/node.rb#11401 + # source://prism//lib/prism/node.rb#11503 def ===(other); end - # source://prism//lib/prism/node.rb#11344 + # source://prism//lib/prism/node.rb#11446 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#11349 + # source://prism//lib/prism/node.rb#11451 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#11359 + # source://prism//lib/prism/node.rb#11461 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#11354 + # source://prism//lib/prism/node.rb#11456 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#11364 + # source://prism//lib/prism/node.rb#11466 sig do params( node_id: Integer, @@ -14233,49 +14241,49 @@ class Prism::KeywordHashNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), elements: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#11349 + # source://prism//lib/prism/node.rb#11451 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#11372 + # source://prism//lib/prism/node.rb#11474 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#11382 + # source://prism//lib/prism/node.rb#11484 sig { returns(T::Array[T.any(Prism::AssocNode, Prism::AssocSplatNode)]) } def elements; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#11385 + # source://prism//lib/prism/node.rb#11487 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#11377 + # source://prism//lib/prism/node.rb#11479 sig { returns(T::Boolean) } def symbol_keys?; end - # source://prism//lib/prism/node.rb#11390 + # source://prism//lib/prism/node.rb#11492 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#11395 + # source://prism//lib/prism/node.rb#11497 def type; end end end -# source://prism//lib/prism/node.rb#18531 +# source://prism//lib/prism/node.rb#18702 # Flags for keyword hash nodes. module Prism::KeywordHashNodeFlags; end -# source://prism//lib/prism/node.rb#18533 +# source://prism//lib/prism/node.rb#18704 Prism::KeywordHashNodeFlags::SYMBOL_KEYS = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#11414 +# source://prism//lib/prism/node.rb#11516 class Prism::KeywordRestParameterNode < ::Prism::Node - # source://prism//lib/prism/node.rb#11416 + # source://prism//lib/prism/node.rb#11518 sig do params( source: Prism::Source, @@ -14289,26 +14297,26 @@ class Prism::KeywordRestParameterNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, operator_loc); end - # source://prism//lib/prism/node.rb#11521 + # source://prism//lib/prism/node.rb#11623 def ===(other); end - # source://prism//lib/prism/node.rb#11427 + # source://prism//lib/prism/node.rb#11529 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#11432 + # source://prism//lib/prism/node.rb#11534 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#11442 + # source://prism//lib/prism/node.rb#11544 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#11437 + # source://prism//lib/prism/node.rb#11539 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#11447 + # source://prism//lib/prism/node.rb#11549 sig do params( node_id: Integer, @@ -14321,60 +14329,60 @@ class Prism::KeywordRestParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#11432 + # source://prism//lib/prism/node.rb#11534 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#11455 + # source://prism//lib/prism/node.rb#11557 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#11505 + # source://prism//lib/prism/node.rb#11607 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#11465 + # source://prism//lib/prism/node.rb#11567 sig { returns(T.nilable(Symbol)) } def name; end - # source://prism//lib/prism/node.rb#11468 + # source://prism//lib/prism/node.rb#11570 sig { returns(T.nilable(Prism::Location)) } def name_loc; end - # source://prism//lib/prism/node.rb#11500 + # source://prism//lib/prism/node.rb#11602 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#11487 + # source://prism//lib/prism/node.rb#11589 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#11460 + # source://prism//lib/prism/node.rb#11562 sig { returns(T::Boolean) } def repeated_parameter?; end - # source://prism//lib/prism/node.rb#11482 + # source://prism//lib/prism/node.rb#11584 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#11495 + # source://prism//lib/prism/node.rb#11597 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#11510 + # source://prism//lib/prism/node.rb#11612 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#11515 + # source://prism//lib/prism/node.rb#11617 def type; end end end -# source://prism//lib/prism/node.rb#11534 +# source://prism//lib/prism/node.rb#11636 class Prism::LambdaNode < ::Prism::Node - # source://prism//lib/prism/node.rb#11536 + # source://prism//lib/prism/node.rb#11638 sig do params( source: Prism::Source, @@ -14391,38 +14399,38 @@ class Prism::LambdaNode < ::Prism::Node end def initialize(source, node_id, location, flags, locals, operator_loc, opening_loc, closing_loc, parameters, body); end - # source://prism//lib/prism/node.rb#11665 + # source://prism//lib/prism/node.rb#11767 def ===(other); end - # source://prism//lib/prism/node.rb#11550 + # source://prism//lib/prism/node.rb#11652 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#11631 + # source://prism//lib/prism/node.rb#11733 sig { returns(T.nilable(T.any(Prism::StatementsNode, Prism::BeginNode))) } def body; end - # source://prism//lib/prism/node.rb#11555 + # source://prism//lib/prism/node.rb#11657 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#11644 + # source://prism//lib/prism/node.rb#11746 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#11615 + # source://prism//lib/prism/node.rb#11717 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#11568 + # source://prism//lib/prism/node.rb#11670 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#11560 + # source://prism//lib/prism/node.rb#11662 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#11573 + # source://prism//lib/prism/node.rb#11675 sig do params( node_id: Integer, @@ -14438,210 +14446,210 @@ class Prism::LambdaNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), operator_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), parameters: T.unsafe(nil), body: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#11555 + # source://prism//lib/prism/node.rb#11657 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#11581 + # source://prism//lib/prism/node.rb#11683 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#11649 + # source://prism//lib/prism/node.rb#11751 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#11586 + # source://prism//lib/prism/node.rb#11688 sig { returns(T::Array[Symbol]) } def locals; end - # source://prism//lib/prism/node.rb#11639 + # source://prism//lib/prism/node.rb#11741 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#11602 + # source://prism//lib/prism/node.rb#11704 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node.rb#11634 + # source://prism//lib/prism/node.rb#11736 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#11589 + # source://prism//lib/prism/node.rb#11691 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#11628 + # source://prism//lib/prism/node.rb#11730 sig { returns(T.nilable(T.any(Prism::BlockParametersNode, Prism::NumberedParametersNode, Prism::ItParametersNode))) } def parameters; end - # source://prism//lib/prism/node.rb#11623 + # source://prism//lib/prism/node.rb#11725 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#11610 + # source://prism//lib/prism/node.rb#11712 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#11597 + # source://prism//lib/prism/node.rb#11699 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#11654 + # source://prism//lib/prism/node.rb#11756 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#11659 + # source://prism//lib/prism/node.rb#11761 def type; end end end -# source://prism//lib/prism/lex_compat.rb#12 +# source://prism//lib/prism/lex_compat.rb#13 class Prism::LexCompat - # source://prism//lib/prism/lex_compat.rb#619 + # source://prism//lib/prism/lex_compat.rb#620 def initialize(source, **options); end - # source://prism//lib/prism/lex_compat.rb#617 + # source://prism//lib/prism/lex_compat.rb#618 def options; end - # source://prism//lib/prism/lex_compat.rb#624 + # source://prism//lib/prism/lex_compat.rb#625 def result; end - # source://prism//lib/prism/lex_compat.rb#617 + # source://prism//lib/prism/lex_compat.rb#618 def source; end end -# source://prism//lib/prism/lex_compat.rb#230 +# source://prism//lib/prism/lex_compat.rb#231 class Prism::LexCompat::EndContentToken < ::Prism::LexCompat::Token - # source://prism//lib/prism/lex_compat.rb#231 + # source://prism//lib/prism/lex_compat.rb#232 def ==(other); end end -# source://prism//lib/prism/lex_compat.rb#291 +# source://prism//lib/prism/lex_compat.rb#292 module Prism::LexCompat::Heredoc class << self - # source://prism//lib/prism/lex_compat.rb#603 + # source://prism//lib/prism/lex_compat.rb#604 def build(opening); end end end -# source://prism//lib/prism/lex_compat.rb#315 +# source://prism//lib/prism/lex_compat.rb#316 class Prism::LexCompat::Heredoc::DashHeredoc - # source://prism//lib/prism/lex_compat.rb#318 + # source://prism//lib/prism/lex_compat.rb#319 def initialize(split); end - # source://prism//lib/prism/lex_compat.rb#323 + # source://prism//lib/prism/lex_compat.rb#324 def <<(token); end - # source://prism//lib/prism/lex_compat.rb#316 + # source://prism//lib/prism/lex_compat.rb#317 def split; end - # source://prism//lib/prism/lex_compat.rb#327 + # source://prism//lib/prism/lex_compat.rb#328 def to_a; end - # source://prism//lib/prism/lex_compat.rb#316 + # source://prism//lib/prism/lex_compat.rb#317 def tokens; end end -# source://prism//lib/prism/lex_compat.rb#374 +# source://prism//lib/prism/lex_compat.rb#375 class Prism::LexCompat::Heredoc::DedentingHeredoc - # source://prism//lib/prism/lex_compat.rb#379 + # source://prism//lib/prism/lex_compat.rb#380 def initialize; end - # source://prism//lib/prism/lex_compat.rb#390 + # source://prism//lib/prism/lex_compat.rb#391 def <<(token); end - # source://prism//lib/prism/lex_compat.rb#377 + # source://prism//lib/prism/lex_compat.rb#378 def dedent; end - # source://prism//lib/prism/lex_compat.rb#377 + # source://prism//lib/prism/lex_compat.rb#378 def dedent_next; end - # source://prism//lib/prism/lex_compat.rb#377 + # source://prism//lib/prism/lex_compat.rb#378 def embexpr_balance; end - # source://prism//lib/prism/lex_compat.rb#427 + # source://prism//lib/prism/lex_compat.rb#428 def to_a; end - # source://prism//lib/prism/lex_compat.rb#377 + # source://prism//lib/prism/lex_compat.rb#378 def tokens; end end -# source://prism//lib/prism/lex_compat.rb#375 +# source://prism//lib/prism/lex_compat.rb#376 Prism::LexCompat::Heredoc::DedentingHeredoc::TAB_WIDTH = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/lex_compat.rb#296 +# source://prism//lib/prism/lex_compat.rb#297 class Prism::LexCompat::Heredoc::PlainHeredoc - # source://prism//lib/prism/lex_compat.rb#299 + # source://prism//lib/prism/lex_compat.rb#300 def initialize; end - # source://prism//lib/prism/lex_compat.rb#303 + # source://prism//lib/prism/lex_compat.rb#304 def <<(token); end - # source://prism//lib/prism/lex_compat.rb#307 + # source://prism//lib/prism/lex_compat.rb#308 def to_a; end - # source://prism//lib/prism/lex_compat.rb#297 + # source://prism//lib/prism/lex_compat.rb#298 def tokens; end end -# source://prism//lib/prism/lex_compat.rb#248 +# source://prism//lib/prism/lex_compat.rb#249 class Prism::LexCompat::IdentToken < ::Prism::LexCompat::Token - # source://prism//lib/prism/lex_compat.rb#249 + # source://prism//lib/prism/lex_compat.rb#250 def ==(other); end end -# source://prism//lib/prism/lex_compat.rb#238 +# source://prism//lib/prism/lex_compat.rb#239 class Prism::LexCompat::IgnoreStateToken < ::Prism::LexCompat::Token - # source://prism//lib/prism/lex_compat.rb#239 + # source://prism//lib/prism/lex_compat.rb#240 def ==(other); end end -# source://prism//lib/prism/lex_compat.rb#259 +# source://prism//lib/prism/lex_compat.rb#260 class Prism::LexCompat::IgnoredNewlineToken < ::Prism::LexCompat::Token - # source://prism//lib/prism/lex_compat.rb#260 + # source://prism//lib/prism/lex_compat.rb#261 def ==(other); end end -# source://prism//lib/prism/lex_compat.rb#279 +# source://prism//lib/prism/lex_compat.rb#280 class Prism::LexCompat::ParamToken < ::Prism::LexCompat::Token - # source://prism//lib/prism/lex_compat.rb#280 + # source://prism//lib/prism/lex_compat.rb#281 def ==(other); end end -# source://prism//lib/prism/lex_compat.rb#33 +# source://prism//lib/prism/lex_compat.rb#34 Prism::LexCompat::RIPPER = T.let(T.unsafe(nil), Hash) -# source://prism//lib/prism/lex_compat.rb#14 +# source://prism//lib/prism/lex_compat.rb#15 class Prism::LexCompat::Result < ::Prism::Result - # source://prism//lib/prism/lex_compat.rb#19 + # source://prism//lib/prism/lex_compat.rb#20 def initialize(value, comments, magic_comments, data_loc, errors, warnings, source); end - # source://prism//lib/prism/lex_compat.rb#25 + # source://prism//lib/prism/lex_compat.rb#26 def deconstruct_keys(keys); end - # source://prism//lib/prism/lex_compat.rb#16 + # source://prism//lib/prism/lex_compat.rb#17 def value; end end -# source://prism//lib/prism/lex_compat.rb#204 +# source://prism//lib/prism/lex_compat.rb#205 class Prism::LexCompat::Token < ::SimpleDelegator - # source://prism//lib/prism/lex_compat.rb#213 + # source://prism//lib/prism/lex_compat.rb#214 def event; end - # source://prism//lib/prism/lex_compat.rb#208 + # source://prism//lib/prism/lex_compat.rb#209 def location; end - # source://prism//lib/prism/lex_compat.rb#223 + # source://prism//lib/prism/lex_compat.rb#224 def state; end - # source://prism//lib/prism/lex_compat.rb#218 + # source://prism//lib/prism/lex_compat.rb#219 def value; end end -# source://prism//lib/prism/parse_result.rb#781 +# source://prism//lib/prism/parse_result.rb#782 class Prism::LexResult < ::Prism::Result - # source://prism//lib/prism/parse_result.rb#786 + # source://prism//lib/prism/parse_result.rb#787 sig do params( value: T::Array[T.untyped], @@ -14655,35 +14663,35 @@ class Prism::LexResult < ::Prism::Result end def initialize(value, comments, magic_comments, data_loc, errors, warnings, source); end - # source://prism//lib/prism/parse_result.rb#792 + # source://prism//lib/prism/parse_result.rb#793 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/parse_result.rb#783 + # source://prism//lib/prism/parse_result.rb#784 sig { returns(T::Array[T.untyped]) } def value; end end -# source://prism//lib/prism/lex_compat.rb#872 +# source://prism//lib/prism/lex_compat.rb#873 class Prism::LexRipper - # source://prism//lib/prism/lex_compat.rb#875 + # source://prism//lib/prism/lex_compat.rb#876 def initialize(source); end - # source://prism//lib/prism/lex_compat.rb#879 + # source://prism//lib/prism/lex_compat.rb#880 def result; end - # source://prism//lib/prism/lex_compat.rb#873 + # source://prism//lib/prism/lex_compat.rb#874 def source; end private - # source://prism//lib/prism/lex_compat.rb#913 + # source://prism//lib/prism/lex_compat.rb#914 def lex(source); end end -# source://prism//lib/prism/node.rb#11681 +# source://prism//lib/prism/node.rb#11783 class Prism::LocalVariableAndWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#11683 + # source://prism//lib/prism/node.rb#11785 sig do params( source: Prism::Source, @@ -14699,26 +14707,26 @@ class Prism::LocalVariableAndWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name_loc, operator_loc, value, name, depth); end - # source://prism//lib/prism/node.rb#11785 + # source://prism//lib/prism/node.rb#11887 def ===(other); end - # source://prism//lib/prism/node.rb#11696 + # source://prism//lib/prism/node.rb#11798 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#11701 + # source://prism//lib/prism/node.rb#11803 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#11711 + # source://prism//lib/prism/node.rb#11813 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#11706 + # source://prism//lib/prism/node.rb#11808 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#11716 + # source://prism//lib/prism/node.rb#11818 sig do params( node_id: Integer, @@ -14733,67 +14741,67 @@ class Prism::LocalVariableAndWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#11701 + # source://prism//lib/prism/node.rb#11803 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#11724 + # source://prism//lib/prism/node.rb#11826 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#11761 + # source://prism//lib/prism/node.rb#11863 sig { returns(Integer) } def depth; end - # source://prism//lib/prism/desugar_compiler.rb#236 + # source://prism//lib/prism/desugar_compiler.rb#237 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#11769 + # source://prism//lib/prism/node.rb#11871 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#11758 + # source://prism//lib/prism/node.rb#11860 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#11729 + # source://prism//lib/prism/node.rb#11831 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#11764 + # source://prism//lib/prism/node.rb#11866 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#11742 + # source://prism//lib/prism/node.rb#11844 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#11737 + # source://prism//lib/prism/node.rb#11839 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#11750 + # source://prism//lib/prism/node.rb#11852 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#11774 + # source://prism//lib/prism/node.rb#11876 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#11755 + # source://prism//lib/prism/node.rb#11857 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#11779 + # source://prism//lib/prism/node.rb#11881 def type; end end end -# source://prism//lib/prism/node.rb#11799 +# source://prism//lib/prism/node.rb#11901 class Prism::LocalVariableOperatorWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#11801 + # source://prism//lib/prism/node.rb#11903 sig do params( source: Prism::Source, @@ -14810,34 +14818,34 @@ class Prism::LocalVariableOperatorWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name_loc, binary_operator_loc, value, name, binary_operator, depth); end - # source://prism//lib/prism/node.rb#11902 + # source://prism//lib/prism/node.rb#12004 def ===(other); end - # source://prism//lib/prism/node.rb#11815 + # source://prism//lib/prism/node.rb#11917 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#11880 + # source://prism//lib/prism/node.rb#11982 sig { returns(Symbol) } def binary_operator; end - # source://prism//lib/prism/node.rb#11861 + # source://prism//lib/prism/node.rb#11963 sig { returns(Prism::Location) } def binary_operator_loc; end - # source://prism//lib/prism/node.rb#11820 + # source://prism//lib/prism/node.rb#11922 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#11830 + # source://prism//lib/prism/node.rb#11932 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#11825 + # source://prism//lib/prism/node.rb#11927 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#11835 + # source://prism//lib/prism/node.rb#11937 sig do params( node_id: Integer, @@ -14853,65 +14861,65 @@ class Prism::LocalVariableOperatorWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name_loc: T.unsafe(nil), binary_operator_loc: T.unsafe(nil), value: T.unsafe(nil), name: T.unsafe(nil), binary_operator: T.unsafe(nil), depth: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#11820 + # source://prism//lib/prism/node.rb#11922 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#11843 + # source://prism//lib/prism/node.rb#11945 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#11883 + # source://prism//lib/prism/node.rb#11985 sig { returns(Integer) } def depth; end - # source://prism//lib/prism/desugar_compiler.rb#248 + # source://prism//lib/prism/desugar_compiler.rb#249 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#11886 + # source://prism//lib/prism/node.rb#11988 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#11877 + # source://prism//lib/prism/node.rb#11979 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#11848 + # source://prism//lib/prism/node.rb#11950 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node_ext.rb#451 + # source://prism//lib/prism/node_ext.rb#454 def operator; end - # source://prism//lib/prism/node_ext.rb#458 + # source://prism//lib/prism/node_ext.rb#461 def operator_loc; end - # source://prism//lib/prism/node.rb#11869 + # source://prism//lib/prism/node.rb#11971 def save_binary_operator_loc(repository); end - # source://prism//lib/prism/node.rb#11856 + # source://prism//lib/prism/node.rb#11958 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#11891 + # source://prism//lib/prism/node.rb#11993 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#11874 + # source://prism//lib/prism/node.rb#11976 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#11896 + # source://prism//lib/prism/node.rb#11998 def type; end end end -# source://prism//lib/prism/node.rb#11917 +# source://prism//lib/prism/node.rb#12019 class Prism::LocalVariableOrWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#11919 + # source://prism//lib/prism/node.rb#12021 sig do params( source: Prism::Source, @@ -14927,26 +14935,26 @@ class Prism::LocalVariableOrWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name_loc, operator_loc, value, name, depth); end - # source://prism//lib/prism/node.rb#12021 + # source://prism//lib/prism/node.rb#12123 def ===(other); end - # source://prism//lib/prism/node.rb#11932 + # source://prism//lib/prism/node.rb#12034 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#11937 + # source://prism//lib/prism/node.rb#12039 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#11947 + # source://prism//lib/prism/node.rb#12049 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#11942 + # source://prism//lib/prism/node.rb#12044 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#11952 + # source://prism//lib/prism/node.rb#12054 sig do params( node_id: Integer, @@ -14961,67 +14969,67 @@ class Prism::LocalVariableOrWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#11937 + # source://prism//lib/prism/node.rb#12039 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#11960 + # source://prism//lib/prism/node.rb#12062 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#11997 + # source://prism//lib/prism/node.rb#12099 sig { returns(Integer) } def depth; end - # source://prism//lib/prism/desugar_compiler.rb#242 + # source://prism//lib/prism/desugar_compiler.rb#243 def desugar; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#12005 + # source://prism//lib/prism/node.rb#12107 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#11994 + # source://prism//lib/prism/node.rb#12096 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#11965 + # source://prism//lib/prism/node.rb#12067 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#12000 + # source://prism//lib/prism/node.rb#12102 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#11978 + # source://prism//lib/prism/node.rb#12080 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#11973 + # source://prism//lib/prism/node.rb#12075 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#11986 + # source://prism//lib/prism/node.rb#12088 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#12010 + # source://prism//lib/prism/node.rb#12112 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#11991 + # source://prism//lib/prism/node.rb#12093 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#12015 + # source://prism//lib/prism/node.rb#12117 def type; end end end -# source://prism//lib/prism/node.rb#12035 +# source://prism//lib/prism/node.rb#12137 class Prism::LocalVariableReadNode < ::Prism::Node - # source://prism//lib/prism/node.rb#12037 + # source://prism//lib/prism/node.rb#12139 sig do params( source: Prism::Source, @@ -15034,26 +15042,26 @@ class Prism::LocalVariableReadNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, depth); end - # source://prism//lib/prism/node.rb#12116 + # source://prism//lib/prism/node.rb#12218 def ===(other); end - # source://prism//lib/prism/node.rb#12047 + # source://prism//lib/prism/node.rb#12149 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#12052 + # source://prism//lib/prism/node.rb#12154 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#12062 + # source://prism//lib/prism/node.rb#12164 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#12057 + # source://prism//lib/prism/node.rb#12159 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#12067 + # source://prism//lib/prism/node.rb#12169 sig do params( node_id: Integer, @@ -15065,42 +15073,42 @@ class Prism::LocalVariableReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#12052 + # source://prism//lib/prism/node.rb#12154 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#12075 + # source://prism//lib/prism/node.rb#12177 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#12097 + # source://prism//lib/prism/node.rb#12199 sig { returns(Integer) } def depth; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#12100 + # source://prism//lib/prism/node.rb#12202 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#12088 + # source://prism//lib/prism/node.rb#12190 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#12105 + # source://prism//lib/prism/node.rb#12207 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#12110 + # source://prism//lib/prism/node.rb#12212 def type; end end end -# source://prism//lib/prism/node.rb#12127 +# source://prism//lib/prism/node.rb#12232 class Prism::LocalVariableTargetNode < ::Prism::Node - # source://prism//lib/prism/node.rb#12129 + # source://prism//lib/prism/node.rb#12234 sig do params( source: Prism::Source, @@ -15113,26 +15121,26 @@ class Prism::LocalVariableTargetNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, depth); end - # source://prism//lib/prism/node.rb#12194 + # source://prism//lib/prism/node.rb#12299 def ===(other); end - # source://prism//lib/prism/node.rb#12139 + # source://prism//lib/prism/node.rb#12244 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#12144 + # source://prism//lib/prism/node.rb#12249 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#12154 + # source://prism//lib/prism/node.rb#12259 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#12149 + # source://prism//lib/prism/node.rb#12254 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#12159 + # source://prism//lib/prism/node.rb#12264 sig do params( node_id: Integer, @@ -15144,42 +15152,42 @@ class Prism::LocalVariableTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#12144 + # source://prism//lib/prism/node.rb#12249 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#12167 + # source://prism//lib/prism/node.rb#12272 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#12175 + # source://prism//lib/prism/node.rb#12280 sig { returns(Integer) } def depth; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#12178 + # source://prism//lib/prism/node.rb#12283 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#12172 + # source://prism//lib/prism/node.rb#12277 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#12183 + # source://prism//lib/prism/node.rb#12288 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#12188 + # source://prism//lib/prism/node.rb#12293 def type; end end end -# source://prism//lib/prism/node.rb#12205 +# source://prism//lib/prism/node.rb#12310 class Prism::LocalVariableWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#12207 + # source://prism//lib/prism/node.rb#12312 sig do params( source: Prism::Source, @@ -15195,26 +15203,26 @@ class Prism::LocalVariableWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, depth, name_loc, value, operator_loc); end - # source://prism//lib/prism/node.rb#12335 + # source://prism//lib/prism/node.rb#12440 def ===(other); end - # source://prism//lib/prism/node.rb#12220 + # source://prism//lib/prism/node.rb#12325 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#12225 + # source://prism//lib/prism/node.rb#12330 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#12235 + # source://prism//lib/prism/node.rb#12340 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#12230 + # source://prism//lib/prism/node.rb#12335 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#12240 + # source://prism//lib/prism/node.rb#12345 sig do params( node_id: Integer, @@ -15229,76 +15237,76 @@ class Prism::LocalVariableWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), depth: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#12225 + # source://prism//lib/prism/node.rb#12330 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#12248 + # source://prism//lib/prism/node.rb#12353 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#12266 + # source://prism//lib/prism/node.rb#12371 sig { returns(Integer) } def depth; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#12319 + # source://prism//lib/prism/node.rb#12424 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#12257 + # source://prism//lib/prism/node.rb#12362 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#12272 + # source://prism//lib/prism/node.rb#12377 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#12314 + # source://prism//lib/prism/node.rb#12419 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#12301 + # source://prism//lib/prism/node.rb#12406 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#12280 + # source://prism//lib/prism/node.rb#12385 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#12309 + # source://prism//lib/prism/node.rb#12414 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#12324 + # source://prism//lib/prism/node.rb#12429 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#12295 + # source://prism//lib/prism/node.rb#12400 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#12329 + # source://prism//lib/prism/node.rb#12434 def type; end end end -# source://prism//lib/prism/parse_result.rb#290 +# source://prism//lib/prism/parse_result.rb#291 class Prism::Location - # source://prism//lib/prism/parse_result.rb#305 + # source://prism//lib/prism/parse_result.rb#306 sig { params(source: Prism::Source, start_offset: Integer, length: Integer).void } def initialize(source, start_offset, length); end - # source://prism//lib/prism/parse_result.rb#493 + # source://prism//lib/prism/parse_result.rb#494 sig { params(other: T.untyped).returns(T::Boolean) } def ==(other); end - # source://prism//lib/prism/parse_result.rb#512 + # source://prism//lib/prism/parse_result.rb#513 sig { params(string: String).returns(Prism::Location) } def adjoin(string); end - # source://prism//lib/prism/parse_result.rb#478 + # source://prism//lib/prism/parse_result.rb#479 sig do params( cache: T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer)) @@ -15306,7 +15314,7 @@ class Prism::Location end def cached_end_code_units_column(cache); end - # source://prism//lib/prism/parse_result.rb#414 + # source://prism//lib/prism/parse_result.rb#415 sig do params( cache: T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer)) @@ -15314,7 +15322,7 @@ class Prism::Location end def cached_end_code_units_offset(cache); end - # source://prism//lib/prism/parse_result.rb#454 + # source://prism//lib/prism/parse_result.rb#455 sig do params( cache: T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer)) @@ -15322,7 +15330,7 @@ class Prism::Location end def cached_start_code_units_column(cache); end - # source://prism//lib/prism/parse_result.rb#392 + # source://prism//lib/prism/parse_result.rb#393 sig do params( cache: T.any(Prism::CodeUnitsCache, T.proc.params(byte_offset: Integer).returns(Integer)) @@ -15330,175 +15338,175 @@ class Prism::Location end def cached_start_code_units_offset(cache); end - # source://prism//lib/prism/parse_result.rb#351 + # source://prism//lib/prism/parse_result.rb#352 sig { returns(Prism::Location) } def chop; end - # source://prism//lib/prism/parse_result.rb#341 + # source://prism//lib/prism/parse_result.rb#342 sig { returns(T::Array[Prism::Comment]) } def comments; end - # source://prism//lib/prism/parse_result.rb#346 + # source://prism//lib/prism/parse_result.rb#347 sig { params(source: Prism::Source, start_offset: Integer, length: Integer).returns(Prism::Location) } def copy(source: T.unsafe(nil), start_offset: T.unsafe(nil), length: T.unsafe(nil)); end - # source://prism//lib/prism/parse_result.rb#483 + # source://prism//lib/prism/parse_result.rb#484 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/parse_result.rb#466 + # source://prism//lib/prism/parse_result.rb#467 sig { returns(Integer) } def end_character_column; end - # source://prism//lib/prism/parse_result.rb#403 + # source://prism//lib/prism/parse_result.rb#404 sig { returns(Integer) } def end_character_offset; end - # source://prism//lib/prism/parse_result.rb#472 + # source://prism//lib/prism/parse_result.rb#473 sig { params(encoding: Encoding).returns(Integer) } def end_code_units_column(encoding = T.unsafe(nil)); end - # source://prism//lib/prism/parse_result.rb#408 + # source://prism//lib/prism/parse_result.rb#409 sig { params(encoding: Encoding).returns(Integer) } def end_code_units_offset(encoding = T.unsafe(nil)); end - # source://prism//lib/prism/parse_result.rb#460 + # source://prism//lib/prism/parse_result.rb#461 sig { returns(Integer) } def end_column; end - # source://prism//lib/prism/parse_result.rb#430 + # source://prism//lib/prism/parse_result.rb#431 sig { returns(Integer) } def end_line; end - # source://prism//lib/prism/parse_result.rb#397 + # source://prism//lib/prism/parse_result.rb#398 sig { returns(Integer) } def end_offset; end - # source://prism//lib/prism/parse_result.rb#356 + # source://prism//lib/prism/parse_result.rb#357 sig { returns(String) } def inspect; end - # source://prism//lib/prism/parse_result.rb#502 + # source://prism//lib/prism/parse_result.rb#503 sig { params(other: Prism::Location).returns(Prism::Location) } def join(other); end - # source://prism//lib/prism/parse_result.rb#324 + # source://prism//lib/prism/parse_result.rb#325 sig { params(comment: Prism::Comment).void } def leading_comment(comment); end - # source://prism//lib/prism/parse_result.rb#319 + # source://prism//lib/prism/parse_result.rb#320 sig { returns(T::Array[Prism::Comment]) } def leading_comments; end - # source://prism//lib/prism/parse_result.rb#301 + # source://prism//lib/prism/parse_result.rb#302 sig { returns(Integer) } def length; end - # source://prism//lib/prism/parse_result.rb#488 + # source://prism//lib/prism/parse_result.rb#489 sig { params(q: T.untyped).void } def pretty_print(q); end - # source://prism//lib/prism/parse_result.rb#366 + # source://prism//lib/prism/parse_result.rb#367 sig { returns(String) } def slice; end - # source://prism//lib/prism/parse_result.rb#373 + # source://prism//lib/prism/parse_result.rb#374 def slice_lines; end - # source://prism//lib/prism/parse_result.rb#361 + # source://prism//lib/prism/parse_result.rb#362 sig { returns(T::Array[String]) } def source_lines; end - # source://prism//lib/prism/parse_result.rb#442 + # source://prism//lib/prism/parse_result.rb#443 sig { returns(Integer) } def start_character_column; end - # source://prism//lib/prism/parse_result.rb#381 + # source://prism//lib/prism/parse_result.rb#382 sig { returns(Integer) } def start_character_offset; end - # source://prism//lib/prism/parse_result.rb#448 + # source://prism//lib/prism/parse_result.rb#449 sig { params(encoding: Encoding).returns(Integer) } def start_code_units_column(encoding = T.unsafe(nil)); end - # source://prism//lib/prism/parse_result.rb#386 + # source://prism//lib/prism/parse_result.rb#387 sig { params(encoding: Encoding).returns(Integer) } def start_code_units_offset(encoding = T.unsafe(nil)); end - # source://prism//lib/prism/parse_result.rb#436 + # source://prism//lib/prism/parse_result.rb#437 sig { returns(Integer) } def start_column; end - # source://prism//lib/prism/parse_result.rb#419 + # source://prism//lib/prism/parse_result.rb#420 sig { returns(Integer) } def start_line; end - # source://prism//lib/prism/parse_result.rb#424 + # source://prism//lib/prism/parse_result.rb#425 sig { returns(String) } def start_line_slice; end - # source://prism//lib/prism/parse_result.rb#298 + # source://prism//lib/prism/parse_result.rb#299 sig { returns(Integer) } def start_offset; end - # source://prism//lib/prism/parse_result.rb#335 + # source://prism//lib/prism/parse_result.rb#336 sig { params(comment: Prism::Comment).void } def trailing_comment(comment); end - # source://prism//lib/prism/parse_result.rb#330 + # source://prism//lib/prism/parse_result.rb#331 sig { returns(T::Array[Prism::Comment]) } def trailing_comments; end protected - # source://prism//lib/prism/parse_result.rb#293 + # source://prism//lib/prism/parse_result.rb#294 sig { returns(Prism::Source) } def source; end end -# source://prism//lib/prism/node.rb#18537 +# source://prism//lib/prism/node.rb#18708 # Flags for while and until loop nodes. module Prism::LoopFlags; end -# source://prism//lib/prism/node.rb#18539 +# source://prism//lib/prism/node.rb#18710 Prism::LoopFlags::BEGIN_MODIFIER = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/parse_result.rb#574 +# source://prism//lib/prism/parse_result.rb#575 class Prism::MagicComment - # source://prism//lib/prism/parse_result.rb#582 + # source://prism//lib/prism/parse_result.rb#583 sig { params(key_loc: Prism::Location, value_loc: Prism::Location).void } def initialize(key_loc, value_loc); end - # source://prism//lib/prism/parse_result.rb#598 + # source://prism//lib/prism/parse_result.rb#599 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/parse_result.rb#603 + # source://prism//lib/prism/parse_result.rb#604 sig { returns(String) } def inspect; end - # source://prism//lib/prism/parse_result.rb#588 + # source://prism//lib/prism/parse_result.rb#589 sig { returns(String) } def key; end - # source://prism//lib/prism/parse_result.rb#576 + # source://prism//lib/prism/parse_result.rb#577 sig { returns(Prism::Location) } def key_loc; end - # source://prism//lib/prism/parse_result.rb#593 + # source://prism//lib/prism/parse_result.rb#594 sig { returns(String) } def value; end - # source://prism//lib/prism/parse_result.rb#579 + # source://prism//lib/prism/parse_result.rb#580 sig { returns(Prism::Location) } def value_loc; end end -# source://prism//lib/prism/node.rb#12349 +# source://prism//lib/prism/node.rb#12454 class Prism::MatchLastLineNode < ::Prism::Node include ::Prism::RegularExpressionOptions - # source://prism//lib/prism/node.rb#12351 + # source://prism//lib/prism/node.rb#12456 sig do params( source: Prism::Source, @@ -15513,46 +15521,46 @@ class Prism::MatchLastLineNode < ::Prism::Node end def initialize(source, node_id, location, flags, opening_loc, content_loc, closing_loc, unescaped); end - # source://prism//lib/prism/node.rb#12524 + # source://prism//lib/prism/node.rb#12629 def ===(other); end - # source://prism//lib/prism/node.rb#12363 + # source://prism//lib/prism/node.rb#12468 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#12421 + # source://prism//lib/prism/node.rb#12526 sig { returns(T::Boolean) } def ascii_8bit?; end - # source://prism//lib/prism/node.rb#12368 + # source://prism//lib/prism/node.rb#12473 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#12503 + # source://prism//lib/prism/node.rb#12608 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#12477 + # source://prism//lib/prism/node.rb#12582 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#12378 + # source://prism//lib/prism/node.rb#12483 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#12373 + # source://prism//lib/prism/node.rb#12478 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#12498 + # source://prism//lib/prism/node.rb#12603 sig { returns(String) } def content; end - # source://prism//lib/prism/node.rb#12464 + # source://prism//lib/prism/node.rb#12569 sig { returns(Prism::Location) } def content_loc; end - # source://prism//lib/prism/node.rb#12383 + # source://prism//lib/prism/node.rb#12488 sig do params( node_id: Integer, @@ -15566,98 +15574,98 @@ class Prism::MatchLastLineNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), content_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#12368 + # source://prism//lib/prism/node.rb#12473 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#12391 + # source://prism//lib/prism/node.rb#12496 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#12416 + # source://prism//lib/prism/node.rb#12521 sig { returns(T::Boolean) } def euc_jp?; end - # source://prism//lib/prism/node.rb#12401 + # source://prism//lib/prism/node.rb#12506 sig { returns(T::Boolean) } def extended?; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#12441 + # source://prism//lib/prism/node.rb#12546 sig { returns(T::Boolean) } def forced_binary_encoding?; end - # source://prism//lib/prism/node.rb#12446 + # source://prism//lib/prism/node.rb#12551 sig { returns(T::Boolean) } def forced_us_ascii_encoding?; end - # source://prism//lib/prism/node.rb#12436 + # source://prism//lib/prism/node.rb#12541 sig { returns(T::Boolean) } def forced_utf8_encoding?; end - # source://prism//lib/prism/node.rb#12396 + # source://prism//lib/prism/node.rb#12501 sig { returns(T::Boolean) } def ignore_case?; end - # source://prism//lib/prism/node.rb#12508 + # source://prism//lib/prism/node.rb#12613 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#12406 + # source://prism//lib/prism/node.rb#12511 sig { returns(T::Boolean) } def multi_line?; end - # source://prism//lib/prism/node.rb#12411 + # source://prism//lib/prism/node.rb#12516 sig { returns(T::Boolean) } def once?; end - # source://prism//lib/prism/node.rb#12493 + # source://prism//lib/prism/node.rb#12598 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#12451 + # source://prism//lib/prism/node.rb#12556 sig { returns(Prism::Location) } def opening_loc; end sig { returns(Integer) } def options; end - # source://prism//lib/prism/node.rb#12485 + # source://prism//lib/prism/node.rb#12590 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#12472 + # source://prism//lib/prism/node.rb#12577 def save_content_loc(repository); end - # source://prism//lib/prism/node.rb#12459 + # source://prism//lib/prism/node.rb#12564 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#12513 + # source://prism//lib/prism/node.rb#12618 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#12490 + # source://prism//lib/prism/node.rb#12595 sig { returns(String) } def unescaped; end - # source://prism//lib/prism/node.rb#12431 + # source://prism//lib/prism/node.rb#12536 sig { returns(T::Boolean) } def utf_8?; end - # source://prism//lib/prism/node.rb#12426 + # source://prism//lib/prism/node.rb#12531 sig { returns(T::Boolean) } def windows_31j?; end class << self - # source://prism//lib/prism/node.rb#12518 + # source://prism//lib/prism/node.rb#12623 def type; end end end -# source://prism//lib/prism/node.rb#12538 +# source://prism//lib/prism/node.rb#12643 class Prism::MatchPredicateNode < ::Prism::Node - # source://prism//lib/prism/node.rb#12540 + # source://prism//lib/prism/node.rb#12645 sig do params( source: Prism::Source, @@ -15671,26 +15679,26 @@ class Prism::MatchPredicateNode < ::Prism::Node end def initialize(source, node_id, location, flags, value, pattern, operator_loc); end - # source://prism//lib/prism/node.rb#12624 + # source://prism//lib/prism/node.rb#12729 def ===(other); end - # source://prism//lib/prism/node.rb#12551 + # source://prism//lib/prism/node.rb#12656 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#12556 + # source://prism//lib/prism/node.rb#12661 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#12566 + # source://prism//lib/prism/node.rb#12671 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#12561 + # source://prism//lib/prism/node.rb#12666 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#12571 + # source://prism//lib/prism/node.rb#12676 sig do params( node_id: Integer, @@ -15703,53 +15711,53 @@ class Prism::MatchPredicateNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil), pattern: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#12556 + # source://prism//lib/prism/node.rb#12661 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#12579 + # source://prism//lib/prism/node.rb#12684 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#12608 + # source://prism//lib/prism/node.rb#12713 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#12603 + # source://prism//lib/prism/node.rb#12708 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#12590 + # source://prism//lib/prism/node.rb#12695 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#12587 + # source://prism//lib/prism/node.rb#12692 sig { returns(Prism::Node) } def pattern; end - # source://prism//lib/prism/node.rb#12598 + # source://prism//lib/prism/node.rb#12703 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#12613 + # source://prism//lib/prism/node.rb#12718 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#12584 + # source://prism//lib/prism/node.rb#12689 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#12618 + # source://prism//lib/prism/node.rb#12723 def type; end end end -# source://prism//lib/prism/node.rb#12636 +# source://prism//lib/prism/node.rb#12741 class Prism::MatchRequiredNode < ::Prism::Node - # source://prism//lib/prism/node.rb#12638 + # source://prism//lib/prism/node.rb#12743 sig do params( source: Prism::Source, @@ -15763,26 +15771,26 @@ class Prism::MatchRequiredNode < ::Prism::Node end def initialize(source, node_id, location, flags, value, pattern, operator_loc); end - # source://prism//lib/prism/node.rb#12722 + # source://prism//lib/prism/node.rb#12875 def ===(other); end - # source://prism//lib/prism/node.rb#12649 + # source://prism//lib/prism/node.rb#12754 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#12654 + # source://prism//lib/prism/node.rb#12759 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#12664 + # source://prism//lib/prism/node.rb#12769 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#12659 + # source://prism//lib/prism/node.rb#12764 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#12669 + # source://prism//lib/prism/node.rb#12774 sig do params( node_id: Integer, @@ -15795,53 +15803,53 @@ class Prism::MatchRequiredNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), value: T.unsafe(nil), pattern: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#12654 + # source://prism//lib/prism/node.rb#12759 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#12677 + # source://prism//lib/prism/node.rb#12782 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#12706 + # source://prism//lib/prism/node.rb#12859 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#12701 + # source://prism//lib/prism/node.rb#12854 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#12688 + # source://prism//lib/prism/node.rb#12841 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#12685 + # source://prism//lib/prism/node.rb#12835 sig { returns(Prism::Node) } def pattern; end - # source://prism//lib/prism/node.rb#12696 + # source://prism//lib/prism/node.rb#12849 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#12711 + # source://prism//lib/prism/node.rb#12864 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#12682 + # source://prism//lib/prism/node.rb#12790 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#12716 + # source://prism//lib/prism/node.rb#12869 def type; end end end -# source://prism//lib/prism/node.rb#12734 +# source://prism//lib/prism/node.rb#12887 class Prism::MatchWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#12736 + # source://prism//lib/prism/node.rb#12889 sig do params( source: Prism::Source, @@ -15854,30 +15862,30 @@ class Prism::MatchWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, call, targets); end - # source://prism//lib/prism/node.rb#12801 + # source://prism//lib/prism/node.rb#12954 def ===(other); end - # source://prism//lib/prism/node.rb#12746 + # source://prism//lib/prism/node.rb#12899 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#12779 + # source://prism//lib/prism/node.rb#12932 sig { returns(Prism::CallNode) } def call; end - # source://prism//lib/prism/node.rb#12751 + # source://prism//lib/prism/node.rb#12904 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#12761 + # source://prism//lib/prism/node.rb#12914 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#12756 + # source://prism//lib/prism/node.rb#12909 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#12766 + # source://prism//lib/prism/node.rb#12919 sig do params( node_id: Integer, @@ -15889,92 +15897,92 @@ class Prism::MatchWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), call: T.unsafe(nil), targets: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#12751 + # source://prism//lib/prism/node.rb#12904 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#12774 + # source://prism//lib/prism/node.rb#12927 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#12785 + # source://prism//lib/prism/node.rb#12938 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#12782 + # source://prism//lib/prism/node.rb#12935 sig { returns(T::Array[Prism::LocalVariableTargetNode]) } def targets; end - # source://prism//lib/prism/node.rb#12790 + # source://prism//lib/prism/node.rb#12943 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#12795 + # source://prism//lib/prism/node.rb#12948 def type; end end end -# source://prism//lib/prism/node.rb#12810 +# source://prism//lib/prism/node.rb#12963 class Prism::MissingNode < ::Prism::Node - # source://prism//lib/prism/node.rb#12812 + # source://prism//lib/prism/node.rb#12965 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#12869 + # source://prism//lib/prism/node.rb#13022 def ===(other); end - # source://prism//lib/prism/node.rb#12820 + # source://prism//lib/prism/node.rb#12973 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#12825 + # source://prism//lib/prism/node.rb#12978 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#12835 + # source://prism//lib/prism/node.rb#12988 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#12830 + # source://prism//lib/prism/node.rb#12983 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#12840 + # source://prism//lib/prism/node.rb#12993 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::MissingNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#12825 + # source://prism//lib/prism/node.rb#12978 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#12848 + # source://prism//lib/prism/node.rb#13001 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#12853 + # source://prism//lib/prism/node.rb#13006 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#12858 + # source://prism//lib/prism/node.rb#13011 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#12863 + # source://prism//lib/prism/node.rb#13016 def type; end end end -# source://prism//lib/prism/node.rb#12878 +# source://prism//lib/prism/node.rb#13031 class Prism::ModuleNode < ::Prism::Node - # source://prism//lib/prism/node.rb#12880 + # source://prism//lib/prism/node.rb#13033 sig do params( source: Prism::Source, @@ -15991,34 +15999,34 @@ class Prism::ModuleNode < ::Prism::Node end def initialize(source, node_id, location, flags, locals, module_keyword_loc, constant_path, body, end_keyword_loc, name); end - # source://prism//lib/prism/node.rb#12994 + # source://prism//lib/prism/node.rb#13147 def ===(other); end - # source://prism//lib/prism/node.rb#12894 + # source://prism//lib/prism/node.rb#13047 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#12949 + # source://prism//lib/prism/node.rb#13102 sig { returns(T.nilable(T.any(Prism::StatementsNode, Prism::BeginNode))) } def body; end - # source://prism//lib/prism/node.rb#12899 + # source://prism//lib/prism/node.rb#13052 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#12912 + # source://prism//lib/prism/node.rb#13065 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#12904 + # source://prism//lib/prism/node.rb#13057 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#12946 + # source://prism//lib/prism/node.rb#13099 sig { returns(T.any(Prism::ConstantReadNode, Prism::ConstantPathNode, Prism::MissingNode)) } def constant_path; end - # source://prism//lib/prism/node.rb#12917 + # source://prism//lib/prism/node.rb#13070 sig do params( node_id: Integer, @@ -16034,64 +16042,64 @@ class Prism::ModuleNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), module_keyword_loc: T.unsafe(nil), constant_path: T.unsafe(nil), body: T.unsafe(nil), end_keyword_loc: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#12899 + # source://prism//lib/prism/node.rb#13052 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#12925 + # source://prism//lib/prism/node.rb#13078 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#12973 + # source://prism//lib/prism/node.rb#13126 sig { returns(String) } def end_keyword; end - # source://prism//lib/prism/node.rb#12952 + # source://prism//lib/prism/node.rb#13105 sig { returns(Prism::Location) } def end_keyword_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#12978 + # source://prism//lib/prism/node.rb#13131 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#12930 + # source://prism//lib/prism/node.rb#13083 sig { returns(T::Array[Symbol]) } def locals; end - # source://prism//lib/prism/node.rb#12968 + # source://prism//lib/prism/node.rb#13121 sig { returns(String) } def module_keyword; end - # source://prism//lib/prism/node.rb#12933 + # source://prism//lib/prism/node.rb#13086 sig { returns(Prism::Location) } def module_keyword_loc; end - # source://prism//lib/prism/node.rb#12965 + # source://prism//lib/prism/node.rb#13118 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#12960 + # source://prism//lib/prism/node.rb#13113 def save_end_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#12941 + # source://prism//lib/prism/node.rb#13094 def save_module_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#12983 + # source://prism//lib/prism/node.rb#13136 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#12988 + # source://prism//lib/prism/node.rb#13141 def type; end end end -# source://prism//lib/prism/node.rb#13015 +# source://prism//lib/prism/node.rb#13168 class Prism::MultiTargetNode < ::Prism::Node - # source://prism//lib/prism/node.rb#13017 + # source://prism//lib/prism/node.rb#13170 sig do params( source: Prism::Source, @@ -16107,26 +16115,26 @@ class Prism::MultiTargetNode < ::Prism::Node end def initialize(source, node_id, location, flags, lefts, rest, rights, lparen_loc, rparen_loc); end - # source://prism//lib/prism/node.rb#13170 + # source://prism//lib/prism/node.rb#13323 def ===(other); end - # source://prism//lib/prism/node.rb#13030 + # source://prism//lib/prism/node.rb#13183 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#13035 + # source://prism//lib/prism/node.rb#13188 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#13049 + # source://prism//lib/prism/node.rb#13202 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#13040 + # source://prism//lib/prism/node.rb#13193 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#13054 + # source://prism//lib/prism/node.rb#13207 sig do params( node_id: Integer, @@ -16141,72 +16149,72 @@ class Prism::MultiTargetNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), lefts: T.unsafe(nil), rest: T.unsafe(nil), rights: T.unsafe(nil), lparen_loc: T.unsafe(nil), rparen_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#13035 + # source://prism//lib/prism/node.rb#13188 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#13062 + # source://prism//lib/prism/node.rb#13215 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#13154 + # source://prism//lib/prism/node.rb#13307 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#13075 + # source://prism//lib/prism/node.rb#13228 sig do returns(T::Array[T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::MultiTargetNode, Prism::RequiredParameterNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode)]) end def lefts; end - # source://prism//lib/prism/node.rb#13144 + # source://prism//lib/prism/node.rb#13297 sig { returns(T.nilable(String)) } def lparen; end - # source://prism//lib/prism/node.rb#13103 + # source://prism//lib/prism/node.rb#13256 sig { returns(T.nilable(Prism::Location)) } def lparen_loc; end - # source://prism//lib/prism/node.rb#13091 + # source://prism//lib/prism/node.rb#13244 sig { returns(T.nilable(T.any(Prism::ImplicitRestNode, Prism::SplatNode))) } def rest; end - # source://prism//lib/prism/node.rb#13097 + # source://prism//lib/prism/node.rb#13250 sig do returns(T::Array[T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::MultiTargetNode, Prism::RequiredParameterNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode)]) end def rights; end - # source://prism//lib/prism/node.rb#13149 + # source://prism//lib/prism/node.rb#13302 sig { returns(T.nilable(String)) } def rparen; end - # source://prism//lib/prism/node.rb#13125 + # source://prism//lib/prism/node.rb#13278 sig { returns(T.nilable(Prism::Location)) } def rparen_loc; end - # source://prism//lib/prism/node.rb#13117 + # source://prism//lib/prism/node.rb#13270 def save_lparen_loc(repository); end - # source://prism//lib/prism/node.rb#13139 + # source://prism//lib/prism/node.rb#13292 def save_rparen_loc(repository); end - # source://prism//lib/prism/node.rb#13159 + # source://prism//lib/prism/node.rb#13312 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#13164 + # source://prism//lib/prism/node.rb#13317 def type; end end end -# source://prism//lib/prism/node.rb#13186 +# source://prism//lib/prism/node.rb#13339 class Prism::MultiWriteNode < ::Prism::Node - # source://prism//lib/prism/node.rb#13188 + # source://prism//lib/prism/node.rb#13341 sig do params( source: Prism::Source, @@ -16224,26 +16232,26 @@ class Prism::MultiWriteNode < ::Prism::Node end def initialize(source, node_id, location, flags, lefts, rest, rights, lparen_loc, rparen_loc, operator_loc, value); end - # source://prism//lib/prism/node.rb#13371 + # source://prism//lib/prism/node.rb#13524 def ===(other); end - # source://prism//lib/prism/node.rb#13203 + # source://prism//lib/prism/node.rb#13356 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#13208 + # source://prism//lib/prism/node.rb#13361 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#13223 + # source://prism//lib/prism/node.rb#13376 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#13213 + # source://prism//lib/prism/node.rb#13366 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#13228 + # source://prism//lib/prism/node.rb#13381 sig do params( node_id: Integer, @@ -16260,543 +16268,543 @@ class Prism::MultiWriteNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), lefts: T.unsafe(nil), rest: T.unsafe(nil), rights: T.unsafe(nil), lparen_loc: T.unsafe(nil), rparen_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#13208 + # source://prism//lib/prism/node.rb#13361 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#13236 + # source://prism//lib/prism/node.rb#13389 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#13355 + # source://prism//lib/prism/node.rb#13508 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#13249 + # source://prism//lib/prism/node.rb#13402 sig do returns(T::Array[T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::MultiTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode)]) end def lefts; end - # source://prism//lib/prism/node.rb#13340 + # source://prism//lib/prism/node.rb#13493 sig { returns(T.nilable(String)) } def lparen; end - # source://prism//lib/prism/node.rb#13277 + # source://prism//lib/prism/node.rb#13430 sig { returns(T.nilable(Prism::Location)) } def lparen_loc; end - # source://prism//lib/prism/node.rb#13350 + # source://prism//lib/prism/node.rb#13503 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#13321 + # source://prism//lib/prism/node.rb#13474 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#13265 + # source://prism//lib/prism/node.rb#13418 sig { returns(T.nilable(T.any(Prism::ImplicitRestNode, Prism::SplatNode))) } def rest; end - # source://prism//lib/prism/node.rb#13271 + # source://prism//lib/prism/node.rb#13424 sig do returns(T::Array[T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::MultiTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode)]) end def rights; end - # source://prism//lib/prism/node.rb#13345 + # source://prism//lib/prism/node.rb#13498 sig { returns(T.nilable(String)) } def rparen; end - # source://prism//lib/prism/node.rb#13299 + # source://prism//lib/prism/node.rb#13452 sig { returns(T.nilable(Prism::Location)) } def rparen_loc; end - # source://prism//lib/prism/node.rb#13291 + # source://prism//lib/prism/node.rb#13444 def save_lparen_loc(repository); end - # source://prism//lib/prism/node.rb#13329 + # source://prism//lib/prism/node.rb#13482 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#13313 + # source://prism//lib/prism/node.rb#13466 def save_rparen_loc(repository); end - # source://prism//lib/prism/node.rb#13360 + # source://prism//lib/prism/node.rb#13513 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#13337 + # source://prism//lib/prism/node.rb#13490 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#13365 + # source://prism//lib/prism/node.rb#13518 def type; end end end -# source://prism//lib/prism/mutation_compiler.rb#13 +# source://prism//lib/prism/mutation_compiler.rb#16 class Prism::MutationCompiler < ::Prism::Compiler - # source://prism//lib/prism/mutation_compiler.rb#15 + # source://prism//lib/prism/mutation_compiler.rb#18 def visit_alias_global_variable_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#20 + # source://prism//lib/prism/mutation_compiler.rb#23 def visit_alias_method_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#25 + # source://prism//lib/prism/mutation_compiler.rb#28 def visit_alternation_pattern_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#30 + # source://prism//lib/prism/mutation_compiler.rb#33 def visit_and_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#35 + # source://prism//lib/prism/mutation_compiler.rb#38 def visit_arguments_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#40 + # source://prism//lib/prism/mutation_compiler.rb#43 def visit_array_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#45 + # source://prism//lib/prism/mutation_compiler.rb#48 def visit_array_pattern_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#50 + # source://prism//lib/prism/mutation_compiler.rb#53 def visit_assoc_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#55 + # source://prism//lib/prism/mutation_compiler.rb#58 def visit_assoc_splat_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#60 + # source://prism//lib/prism/mutation_compiler.rb#63 def visit_back_reference_read_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#65 + # source://prism//lib/prism/mutation_compiler.rb#68 def visit_begin_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#70 + # source://prism//lib/prism/mutation_compiler.rb#73 def visit_block_argument_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#75 + # source://prism//lib/prism/mutation_compiler.rb#78 def visit_block_local_variable_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#80 + # source://prism//lib/prism/mutation_compiler.rb#83 def visit_block_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#85 + # source://prism//lib/prism/mutation_compiler.rb#88 def visit_block_parameter_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#90 + # source://prism//lib/prism/mutation_compiler.rb#93 def visit_block_parameters_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#95 + # source://prism//lib/prism/mutation_compiler.rb#98 def visit_break_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#100 + # source://prism//lib/prism/mutation_compiler.rb#103 def visit_call_and_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#105 + # source://prism//lib/prism/mutation_compiler.rb#108 def visit_call_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#110 + # source://prism//lib/prism/mutation_compiler.rb#113 def visit_call_operator_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#115 + # source://prism//lib/prism/mutation_compiler.rb#118 def visit_call_or_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#120 + # source://prism//lib/prism/mutation_compiler.rb#123 def visit_call_target_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#125 + # source://prism//lib/prism/mutation_compiler.rb#128 def visit_capture_pattern_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#130 + # source://prism//lib/prism/mutation_compiler.rb#133 def visit_case_match_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#135 + # source://prism//lib/prism/mutation_compiler.rb#138 def visit_case_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#140 + # source://prism//lib/prism/mutation_compiler.rb#143 def visit_class_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#145 + # source://prism//lib/prism/mutation_compiler.rb#148 def visit_class_variable_and_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#150 + # source://prism//lib/prism/mutation_compiler.rb#153 def visit_class_variable_operator_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#155 + # source://prism//lib/prism/mutation_compiler.rb#158 def visit_class_variable_or_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#160 + # source://prism//lib/prism/mutation_compiler.rb#163 def visit_class_variable_read_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#165 + # source://prism//lib/prism/mutation_compiler.rb#168 def visit_class_variable_target_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#170 + # source://prism//lib/prism/mutation_compiler.rb#173 def visit_class_variable_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#175 + # source://prism//lib/prism/mutation_compiler.rb#178 def visit_constant_and_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#180 + # source://prism//lib/prism/mutation_compiler.rb#183 def visit_constant_operator_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#185 + # source://prism//lib/prism/mutation_compiler.rb#188 def visit_constant_or_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#190 + # source://prism//lib/prism/mutation_compiler.rb#193 def visit_constant_path_and_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#195 + # source://prism//lib/prism/mutation_compiler.rb#198 def visit_constant_path_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#200 + # source://prism//lib/prism/mutation_compiler.rb#203 def visit_constant_path_operator_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#205 + # source://prism//lib/prism/mutation_compiler.rb#208 def visit_constant_path_or_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#210 + # source://prism//lib/prism/mutation_compiler.rb#213 def visit_constant_path_target_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#215 + # source://prism//lib/prism/mutation_compiler.rb#218 def visit_constant_path_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#220 + # source://prism//lib/prism/mutation_compiler.rb#223 def visit_constant_read_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#225 + # source://prism//lib/prism/mutation_compiler.rb#228 def visit_constant_target_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#230 + # source://prism//lib/prism/mutation_compiler.rb#233 def visit_constant_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#235 + # source://prism//lib/prism/mutation_compiler.rb#238 def visit_def_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#240 + # source://prism//lib/prism/mutation_compiler.rb#243 def visit_defined_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#245 + # source://prism//lib/prism/mutation_compiler.rb#248 def visit_else_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#250 + # source://prism//lib/prism/mutation_compiler.rb#253 def visit_embedded_statements_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#255 + # source://prism//lib/prism/mutation_compiler.rb#258 def visit_embedded_variable_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#260 + # source://prism//lib/prism/mutation_compiler.rb#263 def visit_ensure_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#265 + # source://prism//lib/prism/mutation_compiler.rb#268 def visit_false_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#270 + # source://prism//lib/prism/mutation_compiler.rb#273 def visit_find_pattern_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#275 + # source://prism//lib/prism/mutation_compiler.rb#278 def visit_flip_flop_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#280 + # source://prism//lib/prism/mutation_compiler.rb#283 def visit_float_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#285 + # source://prism//lib/prism/mutation_compiler.rb#288 def visit_for_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#290 + # source://prism//lib/prism/mutation_compiler.rb#293 def visit_forwarding_arguments_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#295 + # source://prism//lib/prism/mutation_compiler.rb#298 def visit_forwarding_parameter_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#300 + # source://prism//lib/prism/mutation_compiler.rb#303 def visit_forwarding_super_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#305 + # source://prism//lib/prism/mutation_compiler.rb#308 def visit_global_variable_and_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#310 + # source://prism//lib/prism/mutation_compiler.rb#313 def visit_global_variable_operator_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#315 + # source://prism//lib/prism/mutation_compiler.rb#318 def visit_global_variable_or_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#320 + # source://prism//lib/prism/mutation_compiler.rb#323 def visit_global_variable_read_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#325 + # source://prism//lib/prism/mutation_compiler.rb#328 def visit_global_variable_target_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#330 + # source://prism//lib/prism/mutation_compiler.rb#333 def visit_global_variable_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#335 + # source://prism//lib/prism/mutation_compiler.rb#338 def visit_hash_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#340 + # source://prism//lib/prism/mutation_compiler.rb#343 def visit_hash_pattern_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#345 + # source://prism//lib/prism/mutation_compiler.rb#348 def visit_if_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#350 + # source://prism//lib/prism/mutation_compiler.rb#353 def visit_imaginary_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#355 + # source://prism//lib/prism/mutation_compiler.rb#358 def visit_implicit_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#360 + # source://prism//lib/prism/mutation_compiler.rb#363 def visit_implicit_rest_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#365 + # source://prism//lib/prism/mutation_compiler.rb#368 def visit_in_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#370 + # source://prism//lib/prism/mutation_compiler.rb#373 def visit_index_and_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#375 + # source://prism//lib/prism/mutation_compiler.rb#378 def visit_index_operator_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#380 + # source://prism//lib/prism/mutation_compiler.rb#383 def visit_index_or_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#385 + # source://prism//lib/prism/mutation_compiler.rb#388 def visit_index_target_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#390 + # source://prism//lib/prism/mutation_compiler.rb#393 def visit_instance_variable_and_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#395 + # source://prism//lib/prism/mutation_compiler.rb#398 def visit_instance_variable_operator_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#400 + # source://prism//lib/prism/mutation_compiler.rb#403 def visit_instance_variable_or_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#405 + # source://prism//lib/prism/mutation_compiler.rb#408 def visit_instance_variable_read_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#410 + # source://prism//lib/prism/mutation_compiler.rb#413 def visit_instance_variable_target_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#415 + # source://prism//lib/prism/mutation_compiler.rb#418 def visit_instance_variable_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#420 + # source://prism//lib/prism/mutation_compiler.rb#423 def visit_integer_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#425 + # source://prism//lib/prism/mutation_compiler.rb#428 def visit_interpolated_match_last_line_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#430 + # source://prism//lib/prism/mutation_compiler.rb#433 def visit_interpolated_regular_expression_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#435 + # source://prism//lib/prism/mutation_compiler.rb#438 def visit_interpolated_string_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#440 + # source://prism//lib/prism/mutation_compiler.rb#443 def visit_interpolated_symbol_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#445 + # source://prism//lib/prism/mutation_compiler.rb#448 def visit_interpolated_x_string_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#450 + # source://prism//lib/prism/mutation_compiler.rb#453 def visit_it_local_variable_read_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#455 + # source://prism//lib/prism/mutation_compiler.rb#458 def visit_it_parameters_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#460 + # source://prism//lib/prism/mutation_compiler.rb#463 def visit_keyword_hash_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#465 + # source://prism//lib/prism/mutation_compiler.rb#468 def visit_keyword_rest_parameter_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#470 + # source://prism//lib/prism/mutation_compiler.rb#473 def visit_lambda_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#475 + # source://prism//lib/prism/mutation_compiler.rb#478 def visit_local_variable_and_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#480 + # source://prism//lib/prism/mutation_compiler.rb#483 def visit_local_variable_operator_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#485 + # source://prism//lib/prism/mutation_compiler.rb#488 def visit_local_variable_or_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#490 + # source://prism//lib/prism/mutation_compiler.rb#493 def visit_local_variable_read_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#495 + # source://prism//lib/prism/mutation_compiler.rb#498 def visit_local_variable_target_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#500 + # source://prism//lib/prism/mutation_compiler.rb#503 def visit_local_variable_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#505 + # source://prism//lib/prism/mutation_compiler.rb#508 def visit_match_last_line_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#510 + # source://prism//lib/prism/mutation_compiler.rb#513 def visit_match_predicate_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#515 + # source://prism//lib/prism/mutation_compiler.rb#518 def visit_match_required_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#520 + # source://prism//lib/prism/mutation_compiler.rb#523 def visit_match_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#525 + # source://prism//lib/prism/mutation_compiler.rb#528 def visit_missing_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#530 + # source://prism//lib/prism/mutation_compiler.rb#533 def visit_module_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#535 + # source://prism//lib/prism/mutation_compiler.rb#538 def visit_multi_target_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#540 + # source://prism//lib/prism/mutation_compiler.rb#543 def visit_multi_write_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#545 + # source://prism//lib/prism/mutation_compiler.rb#548 def visit_next_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#550 + # source://prism//lib/prism/mutation_compiler.rb#553 def visit_nil_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#555 + # source://prism//lib/prism/mutation_compiler.rb#558 def visit_no_keywords_parameter_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#560 + # source://prism//lib/prism/mutation_compiler.rb#563 def visit_numbered_parameters_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#565 + # source://prism//lib/prism/mutation_compiler.rb#568 def visit_numbered_reference_read_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#570 + # source://prism//lib/prism/mutation_compiler.rb#573 def visit_optional_keyword_parameter_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#575 + # source://prism//lib/prism/mutation_compiler.rb#578 def visit_optional_parameter_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#580 + # source://prism//lib/prism/mutation_compiler.rb#583 def visit_or_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#585 + # source://prism//lib/prism/mutation_compiler.rb#588 def visit_parameters_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#590 + # source://prism//lib/prism/mutation_compiler.rb#593 def visit_parentheses_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#595 + # source://prism//lib/prism/mutation_compiler.rb#598 def visit_pinned_expression_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#600 + # source://prism//lib/prism/mutation_compiler.rb#603 def visit_pinned_variable_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#605 + # source://prism//lib/prism/mutation_compiler.rb#608 def visit_post_execution_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#610 + # source://prism//lib/prism/mutation_compiler.rb#613 def visit_pre_execution_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#615 + # source://prism//lib/prism/mutation_compiler.rb#618 def visit_program_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#620 + # source://prism//lib/prism/mutation_compiler.rb#623 def visit_range_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#625 + # source://prism//lib/prism/mutation_compiler.rb#628 def visit_rational_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#630 + # source://prism//lib/prism/mutation_compiler.rb#633 def visit_redo_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#635 + # source://prism//lib/prism/mutation_compiler.rb#638 def visit_regular_expression_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#640 + # source://prism//lib/prism/mutation_compiler.rb#643 def visit_required_keyword_parameter_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#645 + # source://prism//lib/prism/mutation_compiler.rb#648 def visit_required_parameter_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#650 + # source://prism//lib/prism/mutation_compiler.rb#653 def visit_rescue_modifier_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#655 + # source://prism//lib/prism/mutation_compiler.rb#658 def visit_rescue_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#660 + # source://prism//lib/prism/mutation_compiler.rb#663 def visit_rest_parameter_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#665 + # source://prism//lib/prism/mutation_compiler.rb#668 def visit_retry_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#670 + # source://prism//lib/prism/mutation_compiler.rb#673 def visit_return_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#675 + # source://prism//lib/prism/mutation_compiler.rb#678 def visit_self_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#680 + # source://prism//lib/prism/mutation_compiler.rb#683 def visit_shareable_constant_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#685 + # source://prism//lib/prism/mutation_compiler.rb#688 def visit_singleton_class_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#690 + # source://prism//lib/prism/mutation_compiler.rb#693 def visit_source_encoding_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#695 + # source://prism//lib/prism/mutation_compiler.rb#698 def visit_source_file_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#700 + # source://prism//lib/prism/mutation_compiler.rb#703 def visit_source_line_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#705 + # source://prism//lib/prism/mutation_compiler.rb#708 def visit_splat_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#710 + # source://prism//lib/prism/mutation_compiler.rb#713 def visit_statements_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#715 + # source://prism//lib/prism/mutation_compiler.rb#718 def visit_string_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#720 + # source://prism//lib/prism/mutation_compiler.rb#723 def visit_super_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#725 + # source://prism//lib/prism/mutation_compiler.rb#728 def visit_symbol_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#730 + # source://prism//lib/prism/mutation_compiler.rb#733 def visit_true_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#735 + # source://prism//lib/prism/mutation_compiler.rb#738 def visit_undef_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#740 + # source://prism//lib/prism/mutation_compiler.rb#743 def visit_unless_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#745 + # source://prism//lib/prism/mutation_compiler.rb#748 def visit_until_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#750 + # source://prism//lib/prism/mutation_compiler.rb#753 def visit_when_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#755 + # source://prism//lib/prism/mutation_compiler.rb#758 def visit_while_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#760 + # source://prism//lib/prism/mutation_compiler.rb#763 def visit_x_string_node(node); end - # source://prism//lib/prism/mutation_compiler.rb#765 + # source://prism//lib/prism/mutation_compiler.rb#768 def visit_yield_node(node); end end -# source://prism//lib/prism/node.rb#13389 +# source://prism//lib/prism/node.rb#13542 class Prism::NextNode < ::Prism::Node - # source://prism//lib/prism/node.rb#13391 + # source://prism//lib/prism/node.rb#13544 sig do params( source: Prism::Source, @@ -16809,30 +16817,30 @@ class Prism::NextNode < ::Prism::Node end def initialize(source, node_id, location, flags, arguments, keyword_loc); end - # source://prism//lib/prism/node.rb#13473 + # source://prism//lib/prism/node.rb#13626 def ===(other); end - # source://prism//lib/prism/node.rb#13401 + # source://prism//lib/prism/node.rb#13554 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#13436 + # source://prism//lib/prism/node.rb#13589 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # source://prism//lib/prism/node.rb#13406 + # source://prism//lib/prism/node.rb#13559 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#13418 + # source://prism//lib/prism/node.rb#13571 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#13411 + # source://prism//lib/prism/node.rb#13564 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#13423 + # source://prism//lib/prism/node.rb#13576 sig do params( node_id: Integer, @@ -16844,99 +16852,99 @@ class Prism::NextNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), arguments: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#13406 + # source://prism//lib/prism/node.rb#13559 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#13431 + # source://prism//lib/prism/node.rb#13584 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#13457 + # source://prism//lib/prism/node.rb#13610 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#13452 + # source://prism//lib/prism/node.rb#13605 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#13439 + # source://prism//lib/prism/node.rb#13592 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#13447 + # source://prism//lib/prism/node.rb#13600 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#13462 + # source://prism//lib/prism/node.rb#13615 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#13467 + # source://prism//lib/prism/node.rb#13620 def type; end end end -# source://prism//lib/prism/node.rb#13484 +# source://prism//lib/prism/node.rb#13637 class Prism::NilNode < ::Prism::Node - # source://prism//lib/prism/node.rb#13486 + # source://prism//lib/prism/node.rb#13639 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#13543 + # source://prism//lib/prism/node.rb#13696 def ===(other); end - # source://prism//lib/prism/node.rb#13494 + # source://prism//lib/prism/node.rb#13647 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#13499 + # source://prism//lib/prism/node.rb#13652 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#13509 + # source://prism//lib/prism/node.rb#13662 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#13504 + # source://prism//lib/prism/node.rb#13657 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#13514 + # source://prism//lib/prism/node.rb#13667 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::NilNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#13499 + # source://prism//lib/prism/node.rb#13652 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#13522 + # source://prism//lib/prism/node.rb#13675 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#13527 + # source://prism//lib/prism/node.rb#13680 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#13532 + # source://prism//lib/prism/node.rb#13685 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#13537 + # source://prism//lib/prism/node.rb#13690 def type; end end end -# source://prism//lib/prism/node.rb#13553 +# source://prism//lib/prism/node.rb#13706 class Prism::NoKeywordsParameterNode < ::Prism::Node - # source://prism//lib/prism/node.rb#13555 + # source://prism//lib/prism/node.rb#13708 sig do params( source: Prism::Source, @@ -16949,26 +16957,26 @@ class Prism::NoKeywordsParameterNode < ::Prism::Node end def initialize(source, node_id, location, flags, operator_loc, keyword_loc); end - # source://prism//lib/prism/node.rb#13650 + # source://prism//lib/prism/node.rb#13803 def ===(other); end - # source://prism//lib/prism/node.rb#13565 + # source://prism//lib/prism/node.rb#13718 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#13570 + # source://prism//lib/prism/node.rb#13723 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#13580 + # source://prism//lib/prism/node.rb#13733 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#13575 + # source://prism//lib/prism/node.rb#13728 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#13585 + # source://prism//lib/prism/node.rb#13738 sig do params( node_id: Integer, @@ -16980,238 +16988,238 @@ class Prism::NoKeywordsParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), operator_loc: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#13570 + # source://prism//lib/prism/node.rb#13723 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#13593 + # source://prism//lib/prism/node.rb#13746 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#13634 + # source://prism//lib/prism/node.rb#13787 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#13629 + # source://prism//lib/prism/node.rb#13782 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#13611 + # source://prism//lib/prism/node.rb#13764 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#13624 + # source://prism//lib/prism/node.rb#13777 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#13598 + # source://prism//lib/prism/node.rb#13751 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#13619 + # source://prism//lib/prism/node.rb#13772 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#13606 + # source://prism//lib/prism/node.rb#13759 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#13639 + # source://prism//lib/prism/node.rb#13792 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#13644 + # source://prism//lib/prism/node.rb#13797 def type; end end end -# source://prism//lib/prism/node.rb#12 +# source://prism//lib/prism/node.rb#15 class Prism::Node abstract! - # source://prism//lib/prism/node.rb#258 + # source://prism//lib/prism/node.rb#261 sig { abstract.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#228 + # source://prism//lib/prism/node.rb#231 sig { params(block: T.proc.params(node: Prism::Node).returns(T::Boolean)).returns(T.nilable(Prism::Node)) } def breadth_first_search(&block); end - # source://prism//lib/prism/node.rb#115 + # source://prism//lib/prism/node.rb#118 def cached_end_code_units_column(cache); end - # source://prism//lib/prism/node.rb#83 + # source://prism//lib/prism/node.rb#86 def cached_end_code_units_offset(cache); end - # source://prism//lib/prism/node.rb#109 + # source://prism//lib/prism/node.rb#112 def cached_start_code_units_column(cache); end - # source://prism//lib/prism/node.rb#77 + # source://prism//lib/prism/node.rb#80 def cached_start_code_units_offset(cache); end - # source://prism//lib/prism/node.rb#264 + # source://prism//lib/prism/node.rb#267 sig { abstract.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#278 + # source://prism//lib/prism/node.rb#281 sig { abstract.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#130 + # source://prism//lib/prism/node.rb#133 def comments; end - # source://prism//lib/prism/node.rb#272 + # source://prism//lib/prism/node.rb#275 sig { abstract.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#264 + # source://prism//lib/prism/node.rb#267 sig { abstract.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node_ext.rb#7 + # source://prism//lib/prism/node_ext.rb#10 def deprecated(*replacements); end - # source://prism//lib/prism/node.rb#103 + # source://prism//lib/prism/node.rb#106 def end_character_column; end - # source://prism//lib/prism/node.rb#71 + # source://prism//lib/prism/node.rb#74 def end_character_offset; end - # source://prism//lib/prism/node.rb#93 + # source://prism//lib/prism/node.rb#96 def end_column; end - # source://prism//lib/prism/node.rb#47 + # source://prism//lib/prism/node.rb#50 def end_line; end - # source://prism//lib/prism/node.rb#60 + # source://prism//lib/prism/node.rb#63 sig { returns(Integer) } def end_offset; end sig { abstract.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#283 + # source://prism//lib/prism/node.rb#286 sig { abstract.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#120 + # source://prism//lib/prism/node.rb#123 def leading_comments; end - # source://prism//lib/prism/node.rb#30 + # source://prism//lib/prism/node.rb#33 sig { returns(Prism::Location) } def location; end - # source://prism//lib/prism/node.rb#161 + # source://prism//lib/prism/node.rb#164 sig { returns(T::Boolean) } def newline?; end - # source://prism//lib/prism/parse_result/newlines.rb#69 + # source://prism//lib/prism/parse_result/newlines.rb#70 def newline_flag!(lines); end - # source://prism//lib/prism/parse_result/newlines.rb#65 + # source://prism//lib/prism/parse_result/newlines.rb#66 def newline_flag?; end - # source://prism//lib/prism/node.rb#21 + # source://prism//lib/prism/node.rb#24 sig { returns(Integer) } def node_id; end - # source://prism//lib/prism/node.rb#172 + # source://prism//lib/prism/node.rb#175 sig { params(q: T.untyped).void } def pretty_print(q); end - # source://prism//lib/prism/node.rb#24 + # source://prism//lib/prism/node.rb#27 def save(repository); end - # source://prism//lib/prism/node.rb#37 + # source://prism//lib/prism/node.rb#40 def save_location(repository); end - # source://prism//lib/prism/node.rb#135 + # source://prism//lib/prism/node.rb#138 sig { returns(T::Array[String]) } def script_lines; end - # source://prism//lib/prism/node.rb#144 + # source://prism//lib/prism/node.rb#147 sig { returns(String) } def slice; end - # source://prism//lib/prism/node.rb#151 + # source://prism//lib/prism/node.rb#154 sig { returns(String) } def slice_lines; end - # source://prism//lib/prism/node.rb#135 + # source://prism//lib/prism/node.rb#138 sig { returns(T::Array[String]) } def source_lines; end - # source://prism//lib/prism/node.rb#98 + # source://prism//lib/prism/node.rb#101 def start_character_column; end - # source://prism//lib/prism/node.rb#66 + # source://prism//lib/prism/node.rb#69 def start_character_offset; end - # source://prism//lib/prism/node.rb#88 + # source://prism//lib/prism/node.rb#91 def start_column; end - # source://prism//lib/prism/node.rb#42 + # source://prism//lib/prism/node.rb#45 def start_line; end - # source://prism//lib/prism/node.rb#53 + # source://prism//lib/prism/node.rb#56 sig { returns(Integer) } def start_offset; end - # source://prism//lib/prism/node.rb#166 + # source://prism//lib/prism/node.rb#169 sig { returns(T::Boolean) } def static_literal?; end - # source://prism//lib/prism/node.rb#180 + # source://prism//lib/prism/node.rb#183 sig { returns(String) } def to_dot; end - # source://prism//lib/prism/node.rb#125 + # source://prism//lib/prism/node.rb#128 def trailing_comments; end - # source://prism//lib/prism/node.rb#191 + # source://prism//lib/prism/node.rb#194 sig { params(line: Integer, column: Integer).returns(T::Array[Prism::Node]) } def tunnel(line, column); end - # source://prism//lib/prism/node.rb#299 + # source://prism//lib/prism/node.rb#302 sig { abstract.returns(Symbol) } def type; end protected - # source://prism//lib/prism/node.rb#157 + # source://prism//lib/prism/node.rb#160 sig { returns(Integer) } def flags; end private - # source://prism//lib/prism/node.rb#14 + # source://prism//lib/prism/node.rb#17 sig { returns(Prism::Source) } def source; end class << self - # source://prism//lib/prism/node.rb#242 + # source://prism//lib/prism/node.rb#245 def fields; end - # source://prism//lib/prism/node.rb#307 + # source://prism//lib/prism/node.rb#310 def type; end end end -# source://prism//lib/prism/node.rb#18636 +# source://prism//lib/prism/node.rb#18807 # The flags that are common to all nodes. module Prism::NodeFlags; end -# source://prism//lib/prism/node.rb#18639 +# source://prism//lib/prism/node.rb#18810 Prism::NodeFlags::NEWLINE = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18643 +# source://prism//lib/prism/node.rb#18814 Prism::NodeFlags::STATIC_LITERAL = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#13661 +# source://prism//lib/prism/node.rb#13814 class Prism::NumberedParametersNode < ::Prism::Node - # source://prism//lib/prism/node.rb#13663 + # source://prism//lib/prism/node.rb#13816 sig do params( source: Prism::Source, @@ -17223,26 +17231,26 @@ class Prism::NumberedParametersNode < ::Prism::Node end def initialize(source, node_id, location, flags, maximum); end - # source://prism//lib/prism/node.rb#13724 + # source://prism//lib/prism/node.rb#13877 def ===(other); end - # source://prism//lib/prism/node.rb#13672 + # source://prism//lib/prism/node.rb#13825 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#13677 + # source://prism//lib/prism/node.rb#13830 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#13687 + # source://prism//lib/prism/node.rb#13840 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#13682 + # source://prism//lib/prism/node.rb#13835 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#13692 + # source://prism//lib/prism/node.rb#13845 sig do params( node_id: Integer, @@ -17253,38 +17261,38 @@ class Prism::NumberedParametersNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), maximum: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#13677 + # source://prism//lib/prism/node.rb#13830 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#13700 + # source://prism//lib/prism/node.rb#13853 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#13708 + # source://prism//lib/prism/node.rb#13861 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#13705 + # source://prism//lib/prism/node.rb#13858 sig { returns(Integer) } def maximum; end - # source://prism//lib/prism/node.rb#13713 + # source://prism//lib/prism/node.rb#13866 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#13718 + # source://prism//lib/prism/node.rb#13871 def type; end end end -# source://prism//lib/prism/node.rb#13734 +# source://prism//lib/prism/node.rb#13887 class Prism::NumberedReferenceReadNode < ::Prism::Node - # source://prism//lib/prism/node.rb#13736 + # source://prism//lib/prism/node.rb#13889 sig do params( source: Prism::Source, @@ -17296,26 +17304,26 @@ class Prism::NumberedReferenceReadNode < ::Prism::Node end def initialize(source, node_id, location, flags, number); end - # source://prism//lib/prism/node.rb#13803 + # source://prism//lib/prism/node.rb#13956 def ===(other); end - # source://prism//lib/prism/node.rb#13745 + # source://prism//lib/prism/node.rb#13898 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#13750 + # source://prism//lib/prism/node.rb#13903 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#13760 + # source://prism//lib/prism/node.rb#13913 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#13755 + # source://prism//lib/prism/node.rb#13908 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#13765 + # source://prism//lib/prism/node.rb#13918 sig do params( node_id: Integer, @@ -17326,38 +17334,38 @@ class Prism::NumberedReferenceReadNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), number: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#13750 + # source://prism//lib/prism/node.rb#13903 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#13773 + # source://prism//lib/prism/node.rb#13926 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#13787 + # source://prism//lib/prism/node.rb#13940 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#13784 + # source://prism//lib/prism/node.rb#13937 sig { returns(Integer) } def number; end - # source://prism//lib/prism/node.rb#13792 + # source://prism//lib/prism/node.rb#13945 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#13797 + # source://prism//lib/prism/node.rb#13950 def type; end end end -# source://prism//lib/prism/node.rb#13814 +# source://prism//lib/prism/node.rb#13967 class Prism::OptionalKeywordParameterNode < ::Prism::Node - # source://prism//lib/prism/node.rb#13816 + # source://prism//lib/prism/node.rb#13969 sig do params( source: Prism::Source, @@ -17371,26 +17379,26 @@ class Prism::OptionalKeywordParameterNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, value); end - # source://prism//lib/prism/node.rb#13900 + # source://prism//lib/prism/node.rb#14053 def ===(other); end - # source://prism//lib/prism/node.rb#13827 + # source://prism//lib/prism/node.rb#13980 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#13832 + # source://prism//lib/prism/node.rb#13985 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#13842 + # source://prism//lib/prism/node.rb#13995 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#13837 + # source://prism//lib/prism/node.rb#13990 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#13847 + # source://prism//lib/prism/node.rb#14000 sig do params( node_id: Integer, @@ -17403,53 +17411,53 @@ class Prism::OptionalKeywordParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#13832 + # source://prism//lib/prism/node.rb#13985 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#13855 + # source://prism//lib/prism/node.rb#14008 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#13884 + # source://prism//lib/prism/node.rb#14037 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#13865 + # source://prism//lib/prism/node.rb#14018 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#13868 + # source://prism//lib/prism/node.rb#14021 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#13860 + # source://prism//lib/prism/node.rb#14013 sig { returns(T::Boolean) } def repeated_parameter?; end - # source://prism//lib/prism/node.rb#13876 + # source://prism//lib/prism/node.rb#14029 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#13889 + # source://prism//lib/prism/node.rb#14042 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#13881 + # source://prism//lib/prism/node.rb#14034 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#13894 + # source://prism//lib/prism/node.rb#14047 def type; end end end -# source://prism//lib/prism/node.rb#13914 +# source://prism//lib/prism/node.rb#14067 class Prism::OptionalParameterNode < ::Prism::Node - # source://prism//lib/prism/node.rb#13916 + # source://prism//lib/prism/node.rb#14069 sig do params( source: Prism::Source, @@ -17464,26 +17472,26 @@ class Prism::OptionalParameterNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, operator_loc, value); end - # source://prism//lib/prism/node.rb#14019 + # source://prism//lib/prism/node.rb#14172 def ===(other); end - # source://prism//lib/prism/node.rb#13928 + # source://prism//lib/prism/node.rb#14081 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#13933 + # source://prism//lib/prism/node.rb#14086 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#13943 + # source://prism//lib/prism/node.rb#14096 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#13938 + # source://prism//lib/prism/node.rb#14091 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#13948 + # source://prism//lib/prism/node.rb#14101 sig do params( node_id: Integer, @@ -17497,64 +17505,64 @@ class Prism::OptionalParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), value: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#13933 + # source://prism//lib/prism/node.rb#14086 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#13956 + # source://prism//lib/prism/node.rb#14109 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#14003 + # source://prism//lib/prism/node.rb#14156 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#13966 + # source://prism//lib/prism/node.rb#14119 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#13969 + # source://prism//lib/prism/node.rb#14122 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#13998 + # source://prism//lib/prism/node.rb#14151 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#13982 + # source://prism//lib/prism/node.rb#14135 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#13961 + # source://prism//lib/prism/node.rb#14114 sig { returns(T::Boolean) } def repeated_parameter?; end - # source://prism//lib/prism/node.rb#13977 + # source://prism//lib/prism/node.rb#14130 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#13990 + # source://prism//lib/prism/node.rb#14143 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#14008 + # source://prism//lib/prism/node.rb#14161 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#13995 + # source://prism//lib/prism/node.rb#14148 sig { returns(Prism::Node) } def value; end class << self - # source://prism//lib/prism/node.rb#14013 + # source://prism//lib/prism/node.rb#14166 def type; end end end -# source://prism//lib/prism/node.rb#14033 +# source://prism//lib/prism/node.rb#14186 class Prism::OrNode < ::Prism::Node - # source://prism//lib/prism/node.rb#14035 + # source://prism//lib/prism/node.rb#14188 sig do params( source: Prism::Source, @@ -17568,26 +17576,26 @@ class Prism::OrNode < ::Prism::Node end def initialize(source, node_id, location, flags, left, right, operator_loc); end - # source://prism//lib/prism/node.rb#14134 + # source://prism//lib/prism/node.rb#14287 def ===(other); end - # source://prism//lib/prism/node.rb#14046 + # source://prism//lib/prism/node.rb#14199 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#14051 + # source://prism//lib/prism/node.rb#14204 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#14061 + # source://prism//lib/prism/node.rb#14214 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#14056 + # source://prism//lib/prism/node.rb#14209 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#14066 + # source://prism//lib/prism/node.rb#14219 sig do params( node_id: Integer, @@ -17600,256 +17608,256 @@ class Prism::OrNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#14051 + # source://prism//lib/prism/node.rb#14204 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#14074 + # source://prism//lib/prism/node.rb#14227 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#14118 + # source://prism//lib/prism/node.rb#14271 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#14085 + # source://prism//lib/prism/node.rb#14238 sig { returns(Prism::Node) } def left; end - # source://prism//lib/prism/node.rb#14113 + # source://prism//lib/prism/node.rb#14266 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#14100 + # source://prism//lib/prism/node.rb#14253 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#14094 + # source://prism//lib/prism/node.rb#14247 sig { returns(Prism::Node) } def right; end - # source://prism//lib/prism/node.rb#14108 + # source://prism//lib/prism/node.rb#14261 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#14123 + # source://prism//lib/prism/node.rb#14276 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#14128 + # source://prism//lib/prism/node.rb#14281 def type; end end end -# source://prism//lib/prism/pack.rb#6 +# source://prism//lib/prism/pack.rb#8 module Prism::Pack class << self def parse(_arg0, _arg1, _arg2); end end end -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::AGNOSTIC_ENDIAN = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::BACK = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::BER = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::BIG_ENDIAN = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::COMMENT = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#60 +# source://prism//lib/prism/pack.rb#62 class Prism::Pack::Directive - # source://prism//lib/prism/pack.rb#89 + # source://prism//lib/prism/pack.rb#91 def initialize(version, variant, source, type, signed, endian, size, length_type, length); end - # source://prism//lib/prism/pack.rb#131 + # source://prism//lib/prism/pack.rb#133 def describe; end - # source://prism//lib/prism/pack.rb#77 + # source://prism//lib/prism/pack.rb#79 def endian; end - # source://prism//lib/prism/pack.rb#86 + # source://prism//lib/prism/pack.rb#88 def length; end - # source://prism//lib/prism/pack.rb#83 + # source://prism//lib/prism/pack.rb#85 def length_type; end - # source://prism//lib/prism/pack.rb#74 + # source://prism//lib/prism/pack.rb#76 def signed; end - # source://prism//lib/prism/pack.rb#80 + # source://prism//lib/prism/pack.rb#82 def size; end - # source://prism//lib/prism/pack.rb#68 + # source://prism//lib/prism/pack.rb#70 def source; end - # source://prism//lib/prism/pack.rb#71 + # source://prism//lib/prism/pack.rb#73 def type; end - # source://prism//lib/prism/pack.rb#65 + # source://prism//lib/prism/pack.rb#67 def variant; end - # source://prism//lib/prism/pack.rb#62 + # source://prism//lib/prism/pack.rb#64 def version; end end -# source://prism//lib/prism/pack.rb#102 +# source://prism//lib/prism/pack.rb#104 Prism::Pack::Directive::ENDIAN_DESCRIPTIONS = T.let(T.unsafe(nil), Hash) -# source://prism//lib/prism/pack.rb#111 +# source://prism//lib/prism/pack.rb#113 Prism::Pack::Directive::SIGNED_DESCRIPTIONS = T.let(T.unsafe(nil), Hash) -# source://prism//lib/prism/pack.rb#118 +# source://prism//lib/prism/pack.rb#120 Prism::Pack::Directive::SIZE_DESCRIPTIONS = T.let(T.unsafe(nil), Hash) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::ENDIAN_NA = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::FLOAT = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#198 +# source://prism//lib/prism/pack.rb#200 class Prism::Pack::Format - # source://prism//lib/prism/pack.rb#206 + # source://prism//lib/prism/pack.rb#208 def initialize(directives, encoding); end - # source://prism//lib/prism/pack.rb#212 + # source://prism//lib/prism/pack.rb#214 def describe; end - # source://prism//lib/prism/pack.rb#200 + # source://prism//lib/prism/pack.rb#202 def directives; end - # source://prism//lib/prism/pack.rb#203 + # source://prism//lib/prism/pack.rb#205 def encoding; end end -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::INTEGER = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::LENGTH_FIXED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::LENGTH_MAX = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::LENGTH_NA = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::LENGTH_RELATIVE = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::LITTLE_ENDIAN = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::MOVE = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::NATIVE_ENDIAN = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::NULL = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIGNED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIGNED_NA = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_16 = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_32 = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_64 = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_8 = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_INT = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_LONG = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_LONG_LONG = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_NA = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_P = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SIZE_SHORT = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::SPACE = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_BASE64 = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_FIXED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_HEX_HIGH = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_HEX_LOW = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_LSB = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_MIME = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_MSB = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_NULL_PADDED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_NULL_TERMINATED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_POINTER = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_SPACE_PADDED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::STRING_UU = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::UNSIGNED = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/pack.rb#56 +# source://prism//lib/prism/pack.rb#58 Prism::Pack::UTF8 = T.let(T.unsafe(nil), Symbol) -# source://prism//lib/prism/node.rb#18543 +# source://prism//lib/prism/node.rb#18714 # Flags for parameter nodes. module Prism::ParameterFlags; end -# source://prism//lib/prism/node.rb#18545 +# source://prism//lib/prism/node.rb#18716 Prism::ParameterFlags::REPEATED_PARAMETER = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#14147 +# source://prism//lib/prism/node.rb#14300 class Prism::ParametersNode < ::Prism::Node - # source://prism//lib/prism/node.rb#14149 + # source://prism//lib/prism/node.rb#14302 sig do params( source: Prism::Source, @@ -17867,30 +17875,30 @@ class Prism::ParametersNode < ::Prism::Node end def initialize(source, node_id, location, flags, requireds, optionals, rest, posts, keywords, keyword_rest, block); end - # source://prism//lib/prism/node.rb#14242 + # source://prism//lib/prism/node.rb#14395 def ===(other); end - # source://prism//lib/prism/node.rb#14164 + # source://prism//lib/prism/node.rb#14317 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#14223 + # source://prism//lib/prism/node.rb#14376 sig { returns(T.nilable(Prism::BlockParameterNode)) } def block; end - # source://prism//lib/prism/node.rb#14169 + # source://prism//lib/prism/node.rb#14322 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#14187 + # source://prism//lib/prism/node.rb#14340 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#14174 + # source://prism//lib/prism/node.rb#14327 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#14192 + # source://prism//lib/prism/node.rb#14345 sig do params( node_id: Integer, @@ -17907,66 +17915,66 @@ class Prism::ParametersNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), requireds: T.unsafe(nil), optionals: T.unsafe(nil), rest: T.unsafe(nil), posts: T.unsafe(nil), keywords: T.unsafe(nil), keyword_rest: T.unsafe(nil), block: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#14169 + # source://prism//lib/prism/node.rb#14322 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#14200 + # source://prism//lib/prism/node.rb#14353 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#14226 + # source://prism//lib/prism/node.rb#14379 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#14220 + # source://prism//lib/prism/node.rb#14373 sig do returns(T.nilable(T.any(Prism::KeywordRestParameterNode, Prism::ForwardingParameterNode, Prism::NoKeywordsParameterNode))) end def keyword_rest; end - # source://prism//lib/prism/node.rb#14217 + # source://prism//lib/prism/node.rb#14370 sig { returns(T::Array[T.any(Prism::RequiredKeywordParameterNode, Prism::OptionalKeywordParameterNode)]) } def keywords; end - # source://prism//lib/prism/node.rb#14208 + # source://prism//lib/prism/node.rb#14361 sig { returns(T::Array[Prism::OptionalParameterNode]) } def optionals; end - # source://prism//lib/prism/node.rb#14214 + # source://prism//lib/prism/node.rb#14367 sig do returns(T::Array[T.any(Prism::RequiredParameterNode, Prism::MultiTargetNode, Prism::KeywordRestParameterNode, Prism::NoKeywordsParameterNode, Prism::ForwardingParameterNode)]) end def posts; end - # source://prism//lib/prism/node.rb#14205 + # source://prism//lib/prism/node.rb#14358 sig { returns(T::Array[T.any(Prism::RequiredParameterNode, Prism::MultiTargetNode)]) } def requireds; end - # source://prism//lib/prism/node.rb#14211 + # source://prism//lib/prism/node.rb#14364 sig { returns(T.nilable(T.any(Prism::RestParameterNode, Prism::ImplicitRestNode))) } def rest; end - # source://prism//lib/prism/node_ext.rb#269 + # source://prism//lib/prism/node_ext.rb#272 sig { returns(T::Array[T.any([Symbol, Symbol], [Symbol])]) } def signature; end - # source://prism//lib/prism/node.rb#14231 + # source://prism//lib/prism/node.rb#14384 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#14236 + # source://prism//lib/prism/node.rb#14389 def type; end end end -# source://prism//lib/prism/node.rb#14262 +# source://prism//lib/prism/node.rb#14415 class Prism::ParenthesesNode < ::Prism::Node - # source://prism//lib/prism/node.rb#14264 + # source://prism//lib/prism/node.rb#14417 sig do params( source: Prism::Source, @@ -17980,38 +17988,38 @@ class Prism::ParenthesesNode < ::Prism::Node end def initialize(source, node_id, location, flags, body, opening_loc, closing_loc); end - # source://prism//lib/prism/node.rb#14370 + # source://prism//lib/prism/node.rb#14523 def ===(other); end - # source://prism//lib/prism/node.rb#14275 + # source://prism//lib/prism/node.rb#14428 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#14315 + # source://prism//lib/prism/node.rb#14468 sig { returns(T.nilable(Prism::Node)) } def body; end - # source://prism//lib/prism/node.rb#14280 + # source://prism//lib/prism/node.rb#14433 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#14349 + # source://prism//lib/prism/node.rb#14502 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#14331 + # source://prism//lib/prism/node.rb#14484 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#14292 + # source://prism//lib/prism/node.rb#14445 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#14285 + # source://prism//lib/prism/node.rb#14438 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#14297 + # source://prism//lib/prism/node.rb#14450 sig do params( node_id: Integer, @@ -18024,93 +18032,93 @@ class Prism::ParenthesesNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), body: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#14280 + # source://prism//lib/prism/node.rb#14433 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#14305 + # source://prism//lib/prism/node.rb#14458 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#14354 + # source://prism//lib/prism/node.rb#14507 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#14310 + # source://prism//lib/prism/node.rb#14463 sig { returns(T::Boolean) } def multiple_statements?; end - # source://prism//lib/prism/parse_result/newlines.rb#85 + # source://prism//lib/prism/parse_result/newlines.rb#86 def newline_flag!(lines); end - # source://prism//lib/prism/node.rb#14344 + # source://prism//lib/prism/node.rb#14497 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#14318 + # source://prism//lib/prism/node.rb#14471 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node.rb#14339 + # source://prism//lib/prism/node.rb#14492 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#14326 + # source://prism//lib/prism/node.rb#14479 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#14359 + # source://prism//lib/prism/node.rb#14512 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#14364 + # source://prism//lib/prism/node.rb#14517 def type; end end end -# source://prism//lib/prism/node.rb#18549 +# source://prism//lib/prism/node.rb#18720 # Flags for parentheses nodes. module Prism::ParenthesesNodeFlags; end -# source://prism//lib/prism/node.rb#18551 +# source://prism//lib/prism/node.rb#18722 Prism::ParenthesesNodeFlags::MULTIPLE_STATEMENTS = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/parse_result.rb#609 +# source://prism//lib/prism/parse_result.rb#610 class Prism::ParseError - # source://prism//lib/prism/parse_result.rb#624 + # source://prism//lib/prism/parse_result.rb#625 sig { params(type: Symbol, message: String, location: Prism::Location, level: Symbol).void } def initialize(type, message, location, level); end - # source://prism//lib/prism/parse_result.rb#632 + # source://prism//lib/prism/parse_result.rb#633 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/parse_result.rb#637 + # source://prism//lib/prism/parse_result.rb#638 sig { returns(String) } def inspect; end - # source://prism//lib/prism/parse_result.rb#621 + # source://prism//lib/prism/parse_result.rb#622 sig { returns(Symbol) } def level; end - # source://prism//lib/prism/parse_result.rb#618 + # source://prism//lib/prism/parse_result.rb#619 sig { returns(Prism::Location) } def location; end - # source://prism//lib/prism/parse_result.rb#615 + # source://prism//lib/prism/parse_result.rb#616 sig { returns(String) } def message; end - # source://prism//lib/prism/parse_result.rb#612 + # source://prism//lib/prism/parse_result.rb#613 sig { returns(Symbol) } def type; end end -# source://prism//lib/prism/parse_result.rb#798 +# source://prism//lib/prism/parse_result.rb#799 class Prism::ParseLexResult < ::Prism::Result - # source://prism//lib/prism/parse_result.rb#804 + # source://prism//lib/prism/parse_result.rb#805 sig do params( value: [Prism::ProgramNode, T::Array[T.untyped]], @@ -18124,18 +18132,18 @@ class Prism::ParseLexResult < ::Prism::Result end def initialize(value, comments, magic_comments, data_loc, errors, warnings, source); end - # source://prism//lib/prism/parse_result.rb#810 + # source://prism//lib/prism/parse_result.rb#811 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/parse_result.rb#801 + # source://prism//lib/prism/parse_result.rb#802 sig { returns([Prism::ProgramNode, T::Array[T.untyped]]) } def value; end end -# source://prism//lib/prism/parse_result.rb#739 +# source://prism//lib/prism/parse_result.rb#740 class Prism::ParseResult < ::Prism::Result - # source://prism//lib/prism/parse_result.rb#752 + # source://prism//lib/prism/parse_result.rb#753 sig do params( value: Prism::ProgramNode, @@ -18149,221 +18157,221 @@ class Prism::ParseResult < ::Prism::Result end def initialize(value, comments, magic_comments, data_loc, errors, warnings, source); end - # source://prism//lib/prism/parse_result.rb#763 + # source://prism//lib/prism/parse_result.rb#764 def attach_comments!; end - # source://prism//lib/prism/parse_result.rb#758 + # source://prism//lib/prism/parse_result.rb#759 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/parse_result.rb#775 + # source://prism//lib/prism/parse_result.rb#776 def errors_format; end - # source://prism//lib/prism/parse_result.rb#769 + # source://prism//lib/prism/parse_result.rb#770 def mark_newlines!; end - # source://prism//lib/prism/parse_result.rb#749 + # source://prism//lib/prism/parse_result.rb#750 sig { returns(Prism::ProgramNode) } def value; end end -# source://prism//lib/prism/parse_result/comments.rb#19 +# source://prism//lib/prism/parse_result/comments.rb#20 class Prism::ParseResult::Comments - # source://prism//lib/prism/parse_result/comments.rb#86 + # source://prism//lib/prism/parse_result/comments.rb#87 def initialize(parse_result); end - # source://prism//lib/prism/parse_result/comments.rb#92 + # source://prism//lib/prism/parse_result/comments.rb#93 def attach!; end - # source://prism//lib/prism/parse_result/comments.rb#82 + # source://prism//lib/prism/parse_result/comments.rb#83 def parse_result; end private - # source://prism//lib/prism/parse_result/comments.rb#119 + # source://prism//lib/prism/parse_result/comments.rb#120 def nearest_targets(node, comment); end end -# source://prism//lib/prism/parse_result/comments.rb#53 +# source://prism//lib/prism/parse_result/comments.rb#54 class Prism::ParseResult::Comments::LocationTarget - # source://prism//lib/prism/parse_result/comments.rb#56 + # source://prism//lib/prism/parse_result/comments.rb#57 def initialize(location); end - # source://prism//lib/prism/parse_result/comments.rb#68 + # source://prism//lib/prism/parse_result/comments.rb#69 def encloses?(comment); end - # source://prism//lib/prism/parse_result/comments.rb#64 + # source://prism//lib/prism/parse_result/comments.rb#65 def end_offset; end - # source://prism//lib/prism/parse_result/comments.rb#72 + # source://prism//lib/prism/parse_result/comments.rb#73 def leading_comment(comment); end - # source://prism//lib/prism/parse_result/comments.rb#54 + # source://prism//lib/prism/parse_result/comments.rb#55 def location; end - # source://prism//lib/prism/parse_result/comments.rb#60 + # source://prism//lib/prism/parse_result/comments.rb#61 def start_offset; end - # source://prism//lib/prism/parse_result/comments.rb#76 + # source://prism//lib/prism/parse_result/comments.rb#77 def trailing_comment(comment); end end -# source://prism//lib/prism/parse_result/comments.rb#22 +# source://prism//lib/prism/parse_result/comments.rb#23 class Prism::ParseResult::Comments::NodeTarget - # source://prism//lib/prism/parse_result/comments.rb#25 + # source://prism//lib/prism/parse_result/comments.rb#26 def initialize(node); end - # source://prism//lib/prism/parse_result/comments.rb#37 + # source://prism//lib/prism/parse_result/comments.rb#38 def encloses?(comment); end - # source://prism//lib/prism/parse_result/comments.rb#33 + # source://prism//lib/prism/parse_result/comments.rb#34 def end_offset; end - # source://prism//lib/prism/parse_result/comments.rb#42 + # source://prism//lib/prism/parse_result/comments.rb#43 def leading_comment(comment); end - # source://prism//lib/prism/parse_result/comments.rb#23 + # source://prism//lib/prism/parse_result/comments.rb#24 def node; end - # source://prism//lib/prism/parse_result/comments.rb#29 + # source://prism//lib/prism/parse_result/comments.rb#30 def start_offset; end - # source://prism//lib/prism/parse_result/comments.rb#46 + # source://prism//lib/prism/parse_result/comments.rb#47 def trailing_comment(comment); end end -# source://prism//lib/prism/parse_result/errors.rb#9 +# source://prism//lib/prism/parse_result/errors.rb#10 class Prism::ParseResult::Errors - # source://prism//lib/prism/parse_result/errors.rb#14 + # source://prism//lib/prism/parse_result/errors.rb#15 def initialize(parse_result); end - # source://prism//lib/prism/parse_result/errors.rb#19 + # source://prism//lib/prism/parse_result/errors.rb#20 def format; end - # source://prism//lib/prism/parse_result/errors.rb#11 + # source://prism//lib/prism/parse_result/errors.rb#12 def parse_result; end end -# source://prism//lib/prism/parse_result/newlines.rb#25 +# source://prism//lib/prism/parse_result/newlines.rb#26 class Prism::ParseResult::Newlines < ::Prism::Visitor - # source://prism//lib/prism/parse_result/newlines.rb#27 + # source://prism//lib/prism/parse_result/newlines.rb#28 def initialize(lines); end - # source://prism//lib/prism/parse_result/newlines.rb#33 + # source://prism//lib/prism/parse_result/newlines.rb#34 def visit_block_node(node); end - # source://prism//lib/prism/parse_result/newlines.rb#47 + # source://prism//lib/prism/parse_result/newlines.rb#48 def visit_if_node(node); end - # source://prism//lib/prism/parse_result/newlines.rb#33 + # source://prism//lib/prism/parse_result/newlines.rb#34 def visit_lambda_node(node); end - # source://prism//lib/prism/parse_result/newlines.rb#55 + # source://prism//lib/prism/parse_result/newlines.rb#56 def visit_statements_node(node); end - # source://prism//lib/prism/parse_result/newlines.rb#47 + # source://prism//lib/prism/parse_result/newlines.rb#48 def visit_unless_node(node); end end -# source://prism//lib/prism/parse_result.rb#643 +# source://prism//lib/prism/parse_result.rb#644 class Prism::ParseWarning - # source://prism//lib/prism/parse_result.rb#658 + # source://prism//lib/prism/parse_result.rb#659 sig { params(type: Symbol, message: String, location: Prism::Location, level: Symbol).void } def initialize(type, message, location, level); end - # source://prism//lib/prism/parse_result.rb#666 + # source://prism//lib/prism/parse_result.rb#667 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/parse_result.rb#671 + # source://prism//lib/prism/parse_result.rb#672 sig { returns(String) } def inspect; end - # source://prism//lib/prism/parse_result.rb#655 + # source://prism//lib/prism/parse_result.rb#656 sig { returns(Symbol) } def level; end - # source://prism//lib/prism/parse_result.rb#652 + # source://prism//lib/prism/parse_result.rb#653 sig { returns(Prism::Location) } def location; end - # source://prism//lib/prism/parse_result.rb#649 + # source://prism//lib/prism/parse_result.rb#650 sig { returns(String) } def message; end - # source://prism//lib/prism/parse_result.rb#646 + # source://prism//lib/prism/parse_result.rb#647 sig { returns(Symbol) } def type; end end -# source://prism//lib/prism/pattern.rb#37 +# source://prism//lib/prism/pattern.rb#38 class Prism::Pattern - # source://prism//lib/prism/pattern.rb#63 + # source://prism//lib/prism/pattern.rb#64 def initialize(query); end - # source://prism//lib/prism/pattern.rb#70 + # source://prism//lib/prism/pattern.rb#71 def compile; end - # source://prism//lib/prism/pattern.rb#59 + # source://prism//lib/prism/pattern.rb#60 def query; end - # source://prism//lib/prism/pattern.rb#86 + # source://prism//lib/prism/pattern.rb#87 def scan(root); end private - # source://prism//lib/prism/pattern.rb#102 + # source://prism//lib/prism/pattern.rb#103 def combine_and(left, right); end - # source://prism//lib/prism/pattern.rb#108 + # source://prism//lib/prism/pattern.rb#109 def combine_or(left, right); end - # source://prism//lib/prism/pattern.rb#143 + # source://prism//lib/prism/pattern.rb#144 def compile_alternation_pattern_node(node); end - # source://prism//lib/prism/pattern.rb#118 + # source://prism//lib/prism/pattern.rb#119 def compile_array_pattern_node(node); end - # source://prism//lib/prism/pattern.rb#168 + # source://prism//lib/prism/pattern.rb#169 def compile_constant_name(node, name); end - # source://prism//lib/prism/pattern.rb#148 + # source://prism//lib/prism/pattern.rb#149 def compile_constant_path_node(node); end - # source://prism//lib/prism/pattern.rb#163 + # source://prism//lib/prism/pattern.rb#164 def compile_constant_read_node(node); end - # source://prism//lib/prism/pattern.rb#113 + # source://prism//lib/prism/pattern.rb#114 def compile_error(node); end - # source://prism//lib/prism/pattern.rb#184 + # source://prism//lib/prism/pattern.rb#185 def compile_hash_pattern_node(node); end - # source://prism//lib/prism/pattern.rb#214 + # source://prism//lib/prism/pattern.rb#215 def compile_nil_node(node); end - # source://prism//lib/prism/pattern.rb#243 + # source://prism//lib/prism/pattern.rb#244 def compile_node(node); end - # source://prism//lib/prism/pattern.rb#219 + # source://prism//lib/prism/pattern.rb#220 def compile_regular_expression_node(node); end - # source://prism//lib/prism/pattern.rb#227 + # source://prism//lib/prism/pattern.rb#228 def compile_string_node(node); end - # source://prism//lib/prism/pattern.rb#235 + # source://prism//lib/prism/pattern.rb#236 def compile_symbol_node(node); end end -# source://prism//lib/prism/pattern.rb#40 +# source://prism//lib/prism/pattern.rb#41 class Prism::Pattern::CompilationError < ::StandardError - # source://prism//lib/prism/pattern.rb#43 + # source://prism//lib/prism/pattern.rb#44 def initialize(repr); end end -# source://prism//lib/prism/node.rb#14383 +# source://prism//lib/prism/node.rb#14536 class Prism::PinnedExpressionNode < ::Prism::Node - # source://prism//lib/prism/node.rb#14385 + # source://prism//lib/prism/node.rb#14538 sig do params( source: Prism::Source, @@ -18378,26 +18386,26 @@ class Prism::PinnedExpressionNode < ::Prism::Node end def initialize(source, node_id, location, flags, expression, operator_loc, lparen_loc, rparen_loc); end - # source://prism//lib/prism/node.rb#14503 + # source://prism//lib/prism/node.rb#14668 def ===(other); end - # source://prism//lib/prism/node.rb#14397 + # source://prism//lib/prism/node.rb#14550 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#14402 + # source://prism//lib/prism/node.rb#14555 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#14412 + # source://prism//lib/prism/node.rb#14565 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#14407 + # source://prism//lib/prism/node.rb#14560 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#14417 + # source://prism//lib/prism/node.rb#14570 sig do params( node_id: Integer, @@ -18411,71 +18419,71 @@ class Prism::PinnedExpressionNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), expression: T.unsafe(nil), operator_loc: T.unsafe(nil), lparen_loc: T.unsafe(nil), rparen_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#14402 + # source://prism//lib/prism/node.rb#14555 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#14425 + # source://prism//lib/prism/node.rb#14578 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#14430 + # source://prism//lib/prism/node.rb#14586 sig { returns(Prism::Node) } def expression; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#14487 + # source://prism//lib/prism/node.rb#14652 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#14477 + # source://prism//lib/prism/node.rb#14642 sig { returns(String) } def lparen; end - # source://prism//lib/prism/node.rb#14446 + # source://prism//lib/prism/node.rb#14608 sig { returns(Prism::Location) } def lparen_loc; end - # source://prism//lib/prism/node.rb#14472 + # source://prism//lib/prism/node.rb#14637 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#14433 + # source://prism//lib/prism/node.rb#14592 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#14482 + # source://prism//lib/prism/node.rb#14647 sig { returns(String) } def rparen; end - # source://prism//lib/prism/node.rb#14459 + # source://prism//lib/prism/node.rb#14624 sig { returns(Prism::Location) } def rparen_loc; end - # source://prism//lib/prism/node.rb#14454 + # source://prism//lib/prism/node.rb#14616 def save_lparen_loc(repository); end - # source://prism//lib/prism/node.rb#14441 + # source://prism//lib/prism/node.rb#14600 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#14467 + # source://prism//lib/prism/node.rb#14632 def save_rparen_loc(repository); end - # source://prism//lib/prism/node.rb#14492 + # source://prism//lib/prism/node.rb#14657 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#14497 + # source://prism//lib/prism/node.rb#14662 def type; end end end -# source://prism//lib/prism/node.rb#14516 +# source://prism//lib/prism/node.rb#14681 class Prism::PinnedVariableNode < ::Prism::Node - # source://prism//lib/prism/node.rb#14518 + # source://prism//lib/prism/node.rb#14683 sig do params( source: Prism::Source, @@ -18488,26 +18496,26 @@ class Prism::PinnedVariableNode < ::Prism::Node end def initialize(source, node_id, location, flags, variable, operator_loc); end - # source://prism//lib/prism/node.rb#14598 + # source://prism//lib/prism/node.rb#14769 def ===(other); end - # source://prism//lib/prism/node.rb#14528 + # source://prism//lib/prism/node.rb#14693 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#14533 + # source://prism//lib/prism/node.rb#14698 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#14543 + # source://prism//lib/prism/node.rb#14708 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#14538 + # source://prism//lib/prism/node.rb#14703 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#14548 + # source://prism//lib/prism/node.rb#14713 sig do params( node_id: Integer, @@ -18519,51 +18527,51 @@ class Prism::PinnedVariableNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), variable: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#14533 + # source://prism//lib/prism/node.rb#14698 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#14556 + # source://prism//lib/prism/node.rb#14721 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#14582 + # source://prism//lib/prism/node.rb#14753 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#14577 + # source://prism//lib/prism/node.rb#14748 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#14564 + # source://prism//lib/prism/node.rb#14735 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#14572 + # source://prism//lib/prism/node.rb#14743 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#14587 + # source://prism//lib/prism/node.rb#14758 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#14561 + # source://prism//lib/prism/node.rb#14729 sig do returns(T.any(Prism::LocalVariableReadNode, Prism::InstanceVariableReadNode, Prism::ClassVariableReadNode, Prism::GlobalVariableReadNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::ItLocalVariableReadNode, Prism::MissingNode)) end def variable; end class << self - # source://prism//lib/prism/node.rb#14592 + # source://prism//lib/prism/node.rb#14763 def type; end end end -# source://prism//lib/prism/node.rb#14609 +# source://prism//lib/prism/node.rb#14780 class Prism::PostExecutionNode < ::Prism::Node - # source://prism//lib/prism/node.rb#14611 + # source://prism//lib/prism/node.rb#14782 sig do params( source: Prism::Source, @@ -18578,34 +18586,34 @@ class Prism::PostExecutionNode < ::Prism::Node end def initialize(source, node_id, location, flags, statements, keyword_loc, opening_loc, closing_loc); end - # source://prism//lib/prism/node.rb#14731 + # source://prism//lib/prism/node.rb#14902 def ===(other); end - # source://prism//lib/prism/node.rb#14623 + # source://prism//lib/prism/node.rb#14794 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#14628 + # source://prism//lib/prism/node.rb#14799 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#14710 + # source://prism//lib/prism/node.rb#14881 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#14687 + # source://prism//lib/prism/node.rb#14858 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#14640 + # source://prism//lib/prism/node.rb#14811 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#14633 + # source://prism//lib/prism/node.rb#14804 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#14645 + # source://prism//lib/prism/node.rb#14816 sig do params( node_id: Integer, @@ -18619,63 +18627,63 @@ class Prism::PostExecutionNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), statements: T.unsafe(nil), keyword_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#14628 + # source://prism//lib/prism/node.rb#14799 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#14653 + # source://prism//lib/prism/node.rb#14824 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#14715 + # source://prism//lib/prism/node.rb#14886 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#14700 + # source://prism//lib/prism/node.rb#14871 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#14661 + # source://prism//lib/prism/node.rb#14832 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#14705 + # source://prism//lib/prism/node.rb#14876 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#14674 + # source://prism//lib/prism/node.rb#14845 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node.rb#14695 + # source://prism//lib/prism/node.rb#14866 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#14669 + # source://prism//lib/prism/node.rb#14840 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#14682 + # source://prism//lib/prism/node.rb#14853 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#14658 + # source://prism//lib/prism/node.rb#14829 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#14720 + # source://prism//lib/prism/node.rb#14891 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#14725 + # source://prism//lib/prism/node.rb#14896 def type; end end end -# source://prism//lib/prism/node.rb#14744 +# source://prism//lib/prism/node.rb#14915 class Prism::PreExecutionNode < ::Prism::Node - # source://prism//lib/prism/node.rb#14746 + # source://prism//lib/prism/node.rb#14917 sig do params( source: Prism::Source, @@ -18690,34 +18698,34 @@ class Prism::PreExecutionNode < ::Prism::Node end def initialize(source, node_id, location, flags, statements, keyword_loc, opening_loc, closing_loc); end - # source://prism//lib/prism/node.rb#14866 + # source://prism//lib/prism/node.rb#15037 def ===(other); end - # source://prism//lib/prism/node.rb#14758 + # source://prism//lib/prism/node.rb#14929 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#14763 + # source://prism//lib/prism/node.rb#14934 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#14845 + # source://prism//lib/prism/node.rb#15016 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#14822 + # source://prism//lib/prism/node.rb#14993 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#14775 + # source://prism//lib/prism/node.rb#14946 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#14768 + # source://prism//lib/prism/node.rb#14939 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#14780 + # source://prism//lib/prism/node.rb#14951 sig do params( node_id: Integer, @@ -18731,63 +18739,63 @@ class Prism::PreExecutionNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), statements: T.unsafe(nil), keyword_loc: T.unsafe(nil), opening_loc: T.unsafe(nil), closing_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#14763 + # source://prism//lib/prism/node.rb#14934 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#14788 + # source://prism//lib/prism/node.rb#14959 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#14850 + # source://prism//lib/prism/node.rb#15021 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#14835 + # source://prism//lib/prism/node.rb#15006 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#14796 + # source://prism//lib/prism/node.rb#14967 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#14840 + # source://prism//lib/prism/node.rb#15011 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#14809 + # source://prism//lib/prism/node.rb#14980 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node.rb#14830 + # source://prism//lib/prism/node.rb#15001 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#14804 + # source://prism//lib/prism/node.rb#14975 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#14817 + # source://prism//lib/prism/node.rb#14988 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#14793 + # source://prism//lib/prism/node.rb#14964 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#14855 + # source://prism//lib/prism/node.rb#15026 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#14860 + # source://prism//lib/prism/node.rb#15031 def type; end end end -# source://prism//lib/prism/node.rb#14876 +# source://prism//lib/prism/node.rb#15047 class Prism::ProgramNode < ::Prism::Node - # source://prism//lib/prism/node.rb#14878 + # source://prism//lib/prism/node.rb#15049 sig do params( source: Prism::Source, @@ -18800,26 +18808,26 @@ class Prism::ProgramNode < ::Prism::Node end def initialize(source, node_id, location, flags, locals, statements); end - # source://prism//lib/prism/node.rb#14943 + # source://prism//lib/prism/node.rb#15114 def ===(other); end - # source://prism//lib/prism/node.rb#14888 + # source://prism//lib/prism/node.rb#15059 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#14893 + # source://prism//lib/prism/node.rb#15064 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#14903 + # source://prism//lib/prism/node.rb#15074 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#14898 + # source://prism//lib/prism/node.rb#15069 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#14908 + # source://prism//lib/prism/node.rb#15079 sig do params( node_id: Integer, @@ -18831,49 +18839,49 @@ class Prism::ProgramNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), statements: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#14893 + # source://prism//lib/prism/node.rb#15064 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#14916 + # source://prism//lib/prism/node.rb#15087 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#14927 + # source://prism//lib/prism/node.rb#15098 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#14921 + # source://prism//lib/prism/node.rb#15092 sig { returns(T::Array[Symbol]) } def locals; end - # source://prism//lib/prism/node.rb#14924 + # source://prism//lib/prism/node.rb#15095 sig { returns(Prism::StatementsNode) } def statements; end - # source://prism//lib/prism/node.rb#14932 + # source://prism//lib/prism/node.rb#15103 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#14937 + # source://prism//lib/prism/node.rb#15108 def type; end end end -# source://prism//lib/prism/node.rb#18555 +# source://prism//lib/prism/node.rb#18726 # Flags for range and flip-flop nodes. module Prism::RangeFlags; end -# source://prism//lib/prism/node.rb#18557 +# source://prism//lib/prism/node.rb#18728 Prism::RangeFlags::EXCLUDE_END = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#14958 +# source://prism//lib/prism/node.rb#15129 class Prism::RangeNode < ::Prism::Node - # source://prism//lib/prism/node.rb#14960 + # source://prism//lib/prism/node.rb#15131 sig do params( source: Prism::Source, @@ -18887,26 +18895,26 @@ class Prism::RangeNode < ::Prism::Node end def initialize(source, node_id, location, flags, left, right, operator_loc); end - # source://prism//lib/prism/node.rb#15065 + # source://prism//lib/prism/node.rb#15236 def ===(other); end - # source://prism//lib/prism/node.rb#14971 + # source://prism//lib/prism/node.rb#15142 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#14976 + # source://prism//lib/prism/node.rb#15147 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#14989 + # source://prism//lib/prism/node.rb#15160 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#14981 + # source://prism//lib/prism/node.rb#15152 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#14994 + # source://prism//lib/prism/node.rb#15165 sig do params( node_id: Integer, @@ -18919,57 +18927,57 @@ class Prism::RangeNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), left: T.unsafe(nil), right: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#14976 + # source://prism//lib/prism/node.rb#15147 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#15002 + # source://prism//lib/prism/node.rb#15173 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#15007 + # source://prism//lib/prism/node.rb#15178 sig { returns(T::Boolean) } def exclude_end?; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#15049 + # source://prism//lib/prism/node.rb#15220 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#15018 + # source://prism//lib/prism/node.rb#15189 sig { returns(T.nilable(Prism::Node)) } def left; end - # source://prism//lib/prism/node.rb#15044 + # source://prism//lib/prism/node.rb#15215 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#15031 + # source://prism//lib/prism/node.rb#15202 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#15028 + # source://prism//lib/prism/node.rb#15199 sig { returns(T.nilable(Prism::Node)) } def right; end - # source://prism//lib/prism/node.rb#15039 + # source://prism//lib/prism/node.rb#15210 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#15054 + # source://prism//lib/prism/node.rb#15225 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#15059 + # source://prism//lib/prism/node.rb#15230 def type; end end end -# source://prism//lib/prism/node.rb#15078 +# source://prism//lib/prism/node.rb#15249 class Prism::RationalNode < ::Prism::Node - # source://prism//lib/prism/node.rb#15080 + # source://prism//lib/prism/node.rb#15251 sig do params( source: Prism::Source, @@ -18982,30 +18990,30 @@ class Prism::RationalNode < ::Prism::Node end def initialize(source, node_id, location, flags, numerator, denominator); end - # source://prism//lib/prism/node.rb#15169 + # source://prism//lib/prism/node.rb#15340 def ===(other); end - # source://prism//lib/prism/node.rb#15090 + # source://prism//lib/prism/node.rb#15261 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#15123 + # source://prism//lib/prism/node.rb#15294 sig { returns(T::Boolean) } def binary?; end - # source://prism//lib/prism/node.rb#15095 + # source://prism//lib/prism/node.rb#15266 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#15105 + # source://prism//lib/prism/node.rb#15276 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#15100 + # source://prism//lib/prism/node.rb#15271 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#15110 + # source://prism//lib/prism/node.rb#15281 sig do params( node_id: Integer, @@ -19017,218 +19025,218 @@ class Prism::RationalNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), numerator: T.unsafe(nil), denominator: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#15128 + # source://prism//lib/prism/node.rb#15299 sig { returns(T::Boolean) } def decimal?; end - # source://prism//lib/prism/node.rb#15095 + # source://prism//lib/prism/node.rb#15266 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#15118 + # source://prism//lib/prism/node.rb#15289 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#15150 + # source://prism//lib/prism/node.rb#15321 sig { returns(Integer) } def denominator; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#15138 + # source://prism//lib/prism/node.rb#15309 sig { returns(T::Boolean) } def hexadecimal?; end - # source://prism//lib/prism/node.rb#15153 + # source://prism//lib/prism/node.rb#15324 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#15145 + # source://prism//lib/prism/node.rb#15316 sig { returns(Integer) } def numerator; end - # source://prism//lib/prism/node_ext.rb#120 + # source://prism//lib/prism/node_ext.rb#123 def numeric; end - # source://prism//lib/prism/node.rb#15133 + # source://prism//lib/prism/node.rb#15304 sig { returns(T::Boolean) } def octal?; end - # source://prism//lib/prism/node.rb#15158 + # source://prism//lib/prism/node.rb#15329 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node_ext.rb#114 + # source://prism//lib/prism/node_ext.rb#117 sig { returns(Rational) } def value; end class << self - # source://prism//lib/prism/node.rb#15163 + # source://prism//lib/prism/node.rb#15334 def type; end end end -# source://prism//lib/prism/node.rb#15181 +# source://prism//lib/prism/node.rb#15352 class Prism::RedoNode < ::Prism::Node - # source://prism//lib/prism/node.rb#15183 + # source://prism//lib/prism/node.rb#15354 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#15240 + # source://prism//lib/prism/node.rb#15411 def ===(other); end - # source://prism//lib/prism/node.rb#15191 + # source://prism//lib/prism/node.rb#15362 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#15196 + # source://prism//lib/prism/node.rb#15367 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#15206 + # source://prism//lib/prism/node.rb#15377 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#15201 + # source://prism//lib/prism/node.rb#15372 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#15211 + # source://prism//lib/prism/node.rb#15382 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::RedoNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#15196 + # source://prism//lib/prism/node.rb#15367 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#15219 + # source://prism//lib/prism/node.rb#15390 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#15224 + # source://prism//lib/prism/node.rb#15395 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#15229 + # source://prism//lib/prism/node.rb#15400 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#15234 + # source://prism//lib/prism/node.rb#15405 def type; end end end -# source://prism//lib/prism/reflection.rb#13 +# source://prism//lib/prism/reflection.rb#16 module Prism::Reflection class << self - # source://prism//lib/prism/reflection.rb#104 + # source://prism//lib/prism/reflection.rb#107 sig { params(node: T.class_of(Prism::Node)).returns(T::Array[Prism::Reflection::Field]) } def fields_for(node); end end end -# source://prism//lib/prism/reflection.rb#45 +# source://prism//lib/prism/reflection.rb#48 class Prism::Reflection::ConstantField < ::Prism::Reflection::Field; end -# source://prism//lib/prism/reflection.rb#55 +# source://prism//lib/prism/reflection.rb#58 class Prism::Reflection::ConstantListField < ::Prism::Reflection::Field; end -# source://prism//lib/prism/reflection.rb#16 +# source://prism//lib/prism/reflection.rb#19 class Prism::Reflection::Field - # source://prism//lib/prism/reflection.rb#21 + # source://prism//lib/prism/reflection.rb#24 sig { params(name: Symbol).void } def initialize(name); end - # source://prism//lib/prism/reflection.rb#18 + # source://prism//lib/prism/reflection.rb#21 sig { returns(Symbol) } def name; end end -# source://prism//lib/prism/reflection.rb#92 +# source://prism//lib/prism/reflection.rb#95 class Prism::Reflection::FlagsField < ::Prism::Reflection::Field - # source://prism//lib/prism/reflection.rb#97 + # source://prism//lib/prism/reflection.rb#100 sig { params(name: Symbol, flags: T::Array[Symbol]).void } def initialize(name, flags); end - # source://prism//lib/prism/reflection.rb#94 + # source://prism//lib/prism/reflection.rb#97 sig { returns(T::Array[Symbol]) } def flags; end end -# source://prism//lib/prism/reflection.rb#85 +# source://prism//lib/prism/reflection.rb#88 class Prism::Reflection::FloatField < ::Prism::Reflection::Field; end -# source://prism//lib/prism/reflection.rb#79 +# source://prism//lib/prism/reflection.rb#82 class Prism::Reflection::IntegerField < ::Prism::Reflection::Field; end -# source://prism//lib/prism/reflection.rb#67 +# source://prism//lib/prism/reflection.rb#70 class Prism::Reflection::LocationField < ::Prism::Reflection::Field; end -# source://prism//lib/prism/reflection.rb#28 +# source://prism//lib/prism/reflection.rb#31 class Prism::Reflection::NodeField < ::Prism::Reflection::Field; end -# source://prism//lib/prism/reflection.rb#39 +# source://prism//lib/prism/reflection.rb#42 class Prism::Reflection::NodeListField < ::Prism::Reflection::Field; end -# source://prism//lib/prism/reflection.rb#50 +# source://prism//lib/prism/reflection.rb#53 class Prism::Reflection::OptionalConstantField < ::Prism::Reflection::Field; end -# source://prism//lib/prism/reflection.rb#73 +# source://prism//lib/prism/reflection.rb#76 class Prism::Reflection::OptionalLocationField < ::Prism::Reflection::Field; end -# source://prism//lib/prism/reflection.rb#34 +# source://prism//lib/prism/reflection.rb#37 class Prism::Reflection::OptionalNodeField < ::Prism::Reflection::Field; end -# source://prism//lib/prism/reflection.rb#61 +# source://prism//lib/prism/reflection.rb#64 class Prism::Reflection::StringField < ::Prism::Reflection::Field; end -# source://prism//lib/prism/node.rb#18561 +# source://prism//lib/prism/node.rb#18732 # Flags for regular expression and match last line nodes. module Prism::RegularExpressionFlags; end -# source://prism//lib/prism/node.rb#18578 +# source://prism//lib/prism/node.rb#18749 Prism::RegularExpressionFlags::ASCII_8BIT = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18575 +# source://prism//lib/prism/node.rb#18746 Prism::RegularExpressionFlags::EUC_JP = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18566 +# source://prism//lib/prism/node.rb#18737 Prism::RegularExpressionFlags::EXTENDED = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18590 +# source://prism//lib/prism/node.rb#18761 Prism::RegularExpressionFlags::FORCED_BINARY_ENCODING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18593 +# source://prism//lib/prism/node.rb#18764 Prism::RegularExpressionFlags::FORCED_US_ASCII_ENCODING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18587 +# source://prism//lib/prism/node.rb#18758 Prism::RegularExpressionFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18563 +# source://prism//lib/prism/node.rb#18734 Prism::RegularExpressionFlags::IGNORE_CASE = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18569 +# source://prism//lib/prism/node.rb#18740 Prism::RegularExpressionFlags::MULTI_LINE = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18572 +# source://prism//lib/prism/node.rb#18743 Prism::RegularExpressionFlags::ONCE = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18584 +# source://prism//lib/prism/node.rb#18755 Prism::RegularExpressionFlags::UTF_8 = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18581 +# source://prism//lib/prism/node.rb#18752 Prism::RegularExpressionFlags::WINDOWS_31J = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#15249 +# source://prism//lib/prism/node.rb#15420 class Prism::RegularExpressionNode < ::Prism::Node include ::Prism::RegularExpressionOptions - # source://prism//lib/prism/node.rb#15251 + # source://prism//lib/prism/node.rb#15422 sig do params( source: Prism::Source, @@ -19243,46 +19251,46 @@ class Prism::RegularExpressionNode < ::Prism::Node end def initialize(source, node_id, location, flags, opening_loc, content_loc, closing_loc, unescaped); end - # source://prism//lib/prism/node.rb#15424 + # source://prism//lib/prism/node.rb#15595 def ===(other); end - # source://prism//lib/prism/node.rb#15263 + # source://prism//lib/prism/node.rb#15434 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#15321 + # source://prism//lib/prism/node.rb#15492 sig { returns(T::Boolean) } def ascii_8bit?; end - # source://prism//lib/prism/node.rb#15268 + # source://prism//lib/prism/node.rb#15439 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#15403 + # source://prism//lib/prism/node.rb#15574 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#15377 + # source://prism//lib/prism/node.rb#15548 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#15278 + # source://prism//lib/prism/node.rb#15449 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#15273 + # source://prism//lib/prism/node.rb#15444 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#15398 + # source://prism//lib/prism/node.rb#15569 sig { returns(String) } def content; end - # source://prism//lib/prism/node.rb#15364 + # source://prism//lib/prism/node.rb#15535 sig { returns(Prism::Location) } def content_loc; end - # source://prism//lib/prism/node.rb#15283 + # source://prism//lib/prism/node.rb#15454 sig do params( node_id: Integer, @@ -19296,392 +19304,392 @@ class Prism::RegularExpressionNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), content_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#15268 + # source://prism//lib/prism/node.rb#15439 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#15291 + # source://prism//lib/prism/node.rb#15462 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#15316 + # source://prism//lib/prism/node.rb#15487 sig { returns(T::Boolean) } def euc_jp?; end - # source://prism//lib/prism/node.rb#15301 + # source://prism//lib/prism/node.rb#15472 sig { returns(T::Boolean) } def extended?; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#15341 + # source://prism//lib/prism/node.rb#15512 sig { returns(T::Boolean) } def forced_binary_encoding?; end - # source://prism//lib/prism/node.rb#15346 + # source://prism//lib/prism/node.rb#15517 sig { returns(T::Boolean) } def forced_us_ascii_encoding?; end - # source://prism//lib/prism/node.rb#15336 + # source://prism//lib/prism/node.rb#15507 sig { returns(T::Boolean) } def forced_utf8_encoding?; end - # source://prism//lib/prism/node.rb#15296 + # source://prism//lib/prism/node.rb#15467 sig { returns(T::Boolean) } def ignore_case?; end - # source://prism//lib/prism/node.rb#15408 + # source://prism//lib/prism/node.rb#15579 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#15306 + # source://prism//lib/prism/node.rb#15477 sig { returns(T::Boolean) } def multi_line?; end - # source://prism//lib/prism/node.rb#15311 + # source://prism//lib/prism/node.rb#15482 sig { returns(T::Boolean) } def once?; end - # source://prism//lib/prism/node.rb#15393 + # source://prism//lib/prism/node.rb#15564 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#15351 + # source://prism//lib/prism/node.rb#15522 sig { returns(Prism::Location) } def opening_loc; end sig { returns(Integer) } def options; end - # source://prism//lib/prism/node.rb#15385 + # source://prism//lib/prism/node.rb#15556 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#15372 + # source://prism//lib/prism/node.rb#15543 def save_content_loc(repository); end - # source://prism//lib/prism/node.rb#15359 + # source://prism//lib/prism/node.rb#15530 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#15413 + # source://prism//lib/prism/node.rb#15584 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#15390 + # source://prism//lib/prism/node.rb#15561 sig { returns(String) } def unescaped; end - # source://prism//lib/prism/node.rb#15331 + # source://prism//lib/prism/node.rb#15502 sig { returns(T::Boolean) } def utf_8?; end - # source://prism//lib/prism/node.rb#15326 + # source://prism//lib/prism/node.rb#15497 sig { returns(T::Boolean) } def windows_31j?; end class << self - # source://prism//lib/prism/node.rb#15418 + # source://prism//lib/prism/node.rb#15589 def type; end end end -# source://prism//lib/prism/node_ext.rb#20 +# source://prism//lib/prism/node_ext.rb#23 module Prism::RegularExpressionOptions - # source://prism//lib/prism/node_ext.rb#23 + # source://prism//lib/prism/node_ext.rb#26 def options; end end -# source://prism//lib/prism/relocation.rb#13 +# source://prism//lib/prism/relocation.rb#14 module Prism::Relocation class << self - # source://prism//lib/prism/relocation.rb#495 + # source://prism//lib/prism/relocation.rb#496 def filepath(value); end - # source://prism//lib/prism/relocation.rb#500 + # source://prism//lib/prism/relocation.rb#501 def string(value); end end end -# source://prism//lib/prism/relocation.rb#269 +# source://prism//lib/prism/relocation.rb#270 class Prism::Relocation::CharacterColumnsField - # source://prism//lib/prism/relocation.rb#271 + # source://prism//lib/prism/relocation.rb#272 def fields(value); end end -# source://prism//lib/prism/relocation.rb#217 +# source://prism//lib/prism/relocation.rb#218 class Prism::Relocation::CharacterOffsetsField - # source://prism//lib/prism/relocation.rb#219 + # source://prism//lib/prism/relocation.rb#220 def fields(value); end end -# source://prism//lib/prism/relocation.rb#281 +# source://prism//lib/prism/relocation.rb#282 class Prism::Relocation::CodeUnitColumnsField - # source://prism//lib/prism/relocation.rb#290 + # source://prism//lib/prism/relocation.rb#291 def initialize(repository, encoding); end - # source://prism//lib/prism/relocation.rb#287 + # source://prism//lib/prism/relocation.rb#288 def encoding; end - # source://prism//lib/prism/relocation.rb#298 + # source://prism//lib/prism/relocation.rb#299 def fields(value); end - # source://prism//lib/prism/relocation.rb#284 + # source://prism//lib/prism/relocation.rb#285 def repository; end private - # source://prism//lib/prism/relocation.rb#308 + # source://prism//lib/prism/relocation.rb#309 def cache; end end -# source://prism//lib/prism/relocation.rb#228 +# source://prism//lib/prism/relocation.rb#229 class Prism::Relocation::CodeUnitOffsetsField - # source://prism//lib/prism/relocation.rb#237 + # source://prism//lib/prism/relocation.rb#238 def initialize(repository, encoding); end - # source://prism//lib/prism/relocation.rb#234 + # source://prism//lib/prism/relocation.rb#235 def encoding; end - # source://prism//lib/prism/relocation.rb#245 + # source://prism//lib/prism/relocation.rb#246 def fields(value); end - # source://prism//lib/prism/relocation.rb#231 + # source://prism//lib/prism/relocation.rb#232 def repository; end private - # source://prism//lib/prism/relocation.rb#255 + # source://prism//lib/prism/relocation.rb#256 def cache; end end -# source://prism//lib/prism/relocation.rb#261 +# source://prism//lib/prism/relocation.rb#262 class Prism::Relocation::ColumnsField - # source://prism//lib/prism/relocation.rb#263 + # source://prism//lib/prism/relocation.rb#264 def fields(value); end end -# source://prism//lib/prism/relocation.rb#314 +# source://prism//lib/prism/relocation.rb#315 class Prism::Relocation::CommentsField private - # source://prism//lib/prism/relocation.rb#329 + # source://prism//lib/prism/relocation.rb#330 def comments(values); end end -# source://prism//lib/prism/relocation.rb#316 +# source://prism//lib/prism/relocation.rb#317 class Prism::Relocation::CommentsField::Comment - # source://prism//lib/prism/relocation.rb#321 + # source://prism//lib/prism/relocation.rb#322 def initialize(slice); end - # source://prism//lib/prism/relocation.rb#318 + # source://prism//lib/prism/relocation.rb#319 def slice; end end -# source://prism//lib/prism/relocation.rb#16 +# source://prism//lib/prism/relocation.rb#17 class Prism::Relocation::Entry - # source://prism//lib/prism/relocation.rb#24 + # source://prism//lib/prism/relocation.rb#25 def initialize(repository); end - # source://prism//lib/prism/relocation.rb#119 + # source://prism//lib/prism/relocation.rb#120 def comments; end - # source://prism//lib/prism/relocation.rb#92 + # source://prism//lib/prism/relocation.rb#93 def end_character_column; end - # source://prism//lib/prism/relocation.rb#60 + # source://prism//lib/prism/relocation.rb#61 def end_character_offset; end - # source://prism//lib/prism/relocation.rb#104 + # source://prism//lib/prism/relocation.rb#105 def end_code_units_column; end - # source://prism//lib/prism/relocation.rb#72 + # source://prism//lib/prism/relocation.rb#73 def end_code_units_offset; end - # source://prism//lib/prism/relocation.rb#82 + # source://prism//lib/prism/relocation.rb#83 def end_column; end - # source://prism//lib/prism/relocation.rb#40 + # source://prism//lib/prism/relocation.rb#41 def end_line; end - # source://prism//lib/prism/relocation.rb#50 + # source://prism//lib/prism/relocation.rb#51 def end_offset; end - # source://prism//lib/prism/relocation.rb#30 + # source://prism//lib/prism/relocation.rb#31 def filepath; end - # source://prism//lib/prism/relocation.rb#109 + # source://prism//lib/prism/relocation.rb#110 def leading_comments; end - # source://prism//lib/prism/relocation.rb#126 + # source://prism//lib/prism/relocation.rb#127 def reify!(values); end - # source://prism//lib/prism/relocation.rb#87 + # source://prism//lib/prism/relocation.rb#88 def start_character_column; end - # source://prism//lib/prism/relocation.rb#55 + # source://prism//lib/prism/relocation.rb#56 def start_character_offset; end - # source://prism//lib/prism/relocation.rb#98 + # source://prism//lib/prism/relocation.rb#99 def start_code_units_column; end - # source://prism//lib/prism/relocation.rb#66 + # source://prism//lib/prism/relocation.rb#67 def start_code_units_offset; end - # source://prism//lib/prism/relocation.rb#77 + # source://prism//lib/prism/relocation.rb#78 def start_column; end - # source://prism//lib/prism/relocation.rb#35 + # source://prism//lib/prism/relocation.rb#36 def start_line; end - # source://prism//lib/prism/relocation.rb#45 + # source://prism//lib/prism/relocation.rb#46 def start_offset; end - # source://prism//lib/prism/relocation.rb#114 + # source://prism//lib/prism/relocation.rb#115 def trailing_comments; end private - # source://prism//lib/prism/relocation.rb#134 + # source://prism//lib/prism/relocation.rb#135 def fetch_value(name); end - # source://prism//lib/prism/relocation.rb#142 + # source://prism//lib/prism/relocation.rb#143 def values; end end -# source://prism//lib/prism/relocation.rb#20 +# source://prism//lib/prism/relocation.rb#21 class Prism::Relocation::Entry::MissingValueError < ::StandardError; end -# source://prism//lib/prism/relocation.rb#185 +# source://prism//lib/prism/relocation.rb#186 class Prism::Relocation::FilepathField - # source://prism//lib/prism/relocation.rb#190 + # source://prism//lib/prism/relocation.rb#191 def initialize(value); end - # source://prism//lib/prism/relocation.rb#195 + # source://prism//lib/prism/relocation.rb#196 def fields(_value); end - # source://prism//lib/prism/relocation.rb#187 + # source://prism//lib/prism/relocation.rb#188 def value; end end -# source://prism//lib/prism/relocation.rb#335 +# source://prism//lib/prism/relocation.rb#336 class Prism::Relocation::LeadingCommentsField < ::Prism::Relocation::CommentsField - # source://prism//lib/prism/relocation.rb#337 + # source://prism//lib/prism/relocation.rb#338 def fields(value); end end -# source://prism//lib/prism/relocation.rb#201 +# source://prism//lib/prism/relocation.rb#202 class Prism::Relocation::LinesField - # source://prism//lib/prism/relocation.rb#203 + # source://prism//lib/prism/relocation.rb#204 def fields(value); end end -# source://prism//lib/prism/relocation.rb#209 +# source://prism//lib/prism/relocation.rb#210 class Prism::Relocation::OffsetsField - # source://prism//lib/prism/relocation.rb#211 + # source://prism//lib/prism/relocation.rb#212 def fields(value); end end -# source://prism//lib/prism/relocation.rb#352 +# source://prism//lib/prism/relocation.rb#353 class Prism::Relocation::Repository - # source://prism//lib/prism/relocation.rb#369 + # source://prism//lib/prism/relocation.rb#370 def initialize(source); end - # source://prism//lib/prism/relocation.rb#415 + # source://prism//lib/prism/relocation.rb#416 def character_columns; end - # source://prism//lib/prism/relocation.rb#398 + # source://prism//lib/prism/relocation.rb#399 def character_offsets; end - # source://prism//lib/prism/relocation.rb#421 + # source://prism//lib/prism/relocation.rb#422 def code_unit_columns(encoding); end - # source://prism//lib/prism/relocation.rb#404 + # source://prism//lib/prism/relocation.rb#405 def code_unit_offsets(encoding); end - # source://prism//lib/prism/relocation.rb#376 + # source://prism//lib/prism/relocation.rb#377 def code_units_cache(encoding); end - # source://prism//lib/prism/relocation.rb#409 + # source://prism//lib/prism/relocation.rb#410 def columns; end - # source://prism//lib/prism/relocation.rb#439 + # source://prism//lib/prism/relocation.rb#440 def comments; end - # source://prism//lib/prism/relocation.rb#446 + # source://prism//lib/prism/relocation.rb#447 def enter(node_id, field_name); end - # source://prism//lib/prism/relocation.rb#366 + # source://prism//lib/prism/relocation.rb#367 def entries; end - # source://prism//lib/prism/relocation.rb#363 + # source://prism//lib/prism/relocation.rb#364 def fields; end - # source://prism//lib/prism/relocation.rb#381 + # source://prism//lib/prism/relocation.rb#382 def filepath; end - # source://prism//lib/prism/relocation.rb#427 + # source://prism//lib/prism/relocation.rb#428 def leading_comments; end - # source://prism//lib/prism/relocation.rb#387 + # source://prism//lib/prism/relocation.rb#388 def lines; end - # source://prism//lib/prism/relocation.rb#392 + # source://prism//lib/prism/relocation.rb#393 def offsets; end - # source://prism//lib/prism/relocation.rb#455 + # source://prism//lib/prism/relocation.rb#456 def reify!; end - # source://prism//lib/prism/relocation.rb#360 + # source://prism//lib/prism/relocation.rb#361 def source; end - # source://prism//lib/prism/relocation.rb#433 + # source://prism//lib/prism/relocation.rb#434 def trailing_comments; end private - # source://prism//lib/prism/relocation.rb#487 + # source://prism//lib/prism/relocation.rb#488 def field(name, value); end end -# source://prism//lib/prism/relocation.rb#355 +# source://prism//lib/prism/relocation.rb#356 class Prism::Relocation::Repository::ConfigurationError < ::StandardError; end -# source://prism//lib/prism/relocation.rb#148 +# source://prism//lib/prism/relocation.rb#149 class Prism::Relocation::Source - # source://prism//lib/prism/relocation.rb#153 + # source://prism//lib/prism/relocation.rb#154 def initialize(value); end - # source://prism//lib/prism/relocation.rb#163 + # source://prism//lib/prism/relocation.rb#164 def code_units_cache(encoding); end - # source://prism//lib/prism/relocation.rb#158 + # source://prism//lib/prism/relocation.rb#159 def result; end - # source://prism//lib/prism/relocation.rb#150 + # source://prism//lib/prism/relocation.rb#151 def value; end end -# source://prism//lib/prism/relocation.rb#169 +# source://prism//lib/prism/relocation.rb#170 class Prism::Relocation::SourceFilepath < ::Prism::Relocation::Source - # source://prism//lib/prism/relocation.rb#171 + # source://prism//lib/prism/relocation.rb#172 def result; end end -# source://prism//lib/prism/relocation.rb#177 +# source://prism//lib/prism/relocation.rb#178 class Prism::Relocation::SourceString < ::Prism::Relocation::Source - # source://prism//lib/prism/relocation.rb#179 + # source://prism//lib/prism/relocation.rb#180 def result; end end -# source://prism//lib/prism/relocation.rb#343 +# source://prism//lib/prism/relocation.rb#344 class Prism::Relocation::TrailingCommentsField < ::Prism::Relocation::CommentsField - # source://prism//lib/prism/relocation.rb#345 + # source://prism//lib/prism/relocation.rb#346 def fields(value); end end -# source://prism//lib/prism/node.rb#15439 +# source://prism//lib/prism/node.rb#15610 class Prism::RequiredKeywordParameterNode < ::Prism::Node - # source://prism//lib/prism/node.rb#15441 + # source://prism//lib/prism/node.rb#15612 sig do params( source: Prism::Source, @@ -19694,26 +19702,26 @@ class Prism::RequiredKeywordParameterNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc); end - # source://prism//lib/prism/node.rb#15521 + # source://prism//lib/prism/node.rb#15692 def ===(other); end - # source://prism//lib/prism/node.rb#15451 + # source://prism//lib/prism/node.rb#15622 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#15456 + # source://prism//lib/prism/node.rb#15627 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#15466 + # source://prism//lib/prism/node.rb#15637 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#15461 + # source://prism//lib/prism/node.rb#15632 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#15471 + # source://prism//lib/prism/node.rb#15642 sig do params( node_id: Integer, @@ -19725,72 +19733,72 @@ class Prism::RequiredKeywordParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#15456 + # source://prism//lib/prism/node.rb#15627 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#15479 + # source://prism//lib/prism/node.rb#15650 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#15505 + # source://prism//lib/prism/node.rb#15676 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#15489 + # source://prism//lib/prism/node.rb#15660 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#15492 + # source://prism//lib/prism/node.rb#15663 sig { returns(Prism::Location) } def name_loc; end - # source://prism//lib/prism/node.rb#15484 + # source://prism//lib/prism/node.rb#15655 sig { returns(T::Boolean) } def repeated_parameter?; end - # source://prism//lib/prism/node.rb#15500 + # source://prism//lib/prism/node.rb#15671 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#15510 + # source://prism//lib/prism/node.rb#15681 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#15515 + # source://prism//lib/prism/node.rb#15686 def type; end end end -# source://prism//lib/prism/node.rb#15534 +# source://prism//lib/prism/node.rb#15705 class Prism::RequiredParameterNode < ::Prism::Node - # source://prism//lib/prism/node.rb#15536 + # source://prism//lib/prism/node.rb#15707 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer, name: Symbol).void } def initialize(source, node_id, location, flags, name); end - # source://prism//lib/prism/node.rb#15602 + # source://prism//lib/prism/node.rb#15773 def ===(other); end - # source://prism//lib/prism/node.rb#15545 + # source://prism//lib/prism/node.rb#15716 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#15550 + # source://prism//lib/prism/node.rb#15721 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#15560 + # source://prism//lib/prism/node.rb#15731 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#15555 + # source://prism//lib/prism/node.rb#15726 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#15565 + # source://prism//lib/prism/node.rb#15736 sig do params( node_id: Integer, @@ -19801,42 +19809,42 @@ class Prism::RequiredParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#15550 + # source://prism//lib/prism/node.rb#15721 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#15573 + # source://prism//lib/prism/node.rb#15744 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#15586 + # source://prism//lib/prism/node.rb#15757 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#15583 + # source://prism//lib/prism/node.rb#15754 sig { returns(Symbol) } def name; end - # source://prism//lib/prism/node.rb#15578 + # source://prism//lib/prism/node.rb#15749 sig { returns(T::Boolean) } def repeated_parameter?; end - # source://prism//lib/prism/node.rb#15591 + # source://prism//lib/prism/node.rb#15762 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#15596 + # source://prism//lib/prism/node.rb#15767 def type; end end end -# source://prism//lib/prism/node.rb#15613 +# source://prism//lib/prism/node.rb#15784 class Prism::RescueModifierNode < ::Prism::Node - # source://prism//lib/prism/node.rb#15615 + # source://prism//lib/prism/node.rb#15786 sig do params( source: Prism::Source, @@ -19850,26 +19858,26 @@ class Prism::RescueModifierNode < ::Prism::Node end def initialize(source, node_id, location, flags, expression, keyword_loc, rescue_expression); end - # source://prism//lib/prism/node.rb#15699 + # source://prism//lib/prism/node.rb#15870 def ===(other); end - # source://prism//lib/prism/node.rb#15626 + # source://prism//lib/prism/node.rb#15797 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#15631 + # source://prism//lib/prism/node.rb#15802 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#15641 + # source://prism//lib/prism/node.rb#15812 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#15636 + # source://prism//lib/prism/node.rb#15807 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#15646 + # source://prism//lib/prism/node.rb#15817 sig do params( node_id: Integer, @@ -19882,56 +19890,56 @@ class Prism::RescueModifierNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), expression: T.unsafe(nil), keyword_loc: T.unsafe(nil), rescue_expression: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#15631 + # source://prism//lib/prism/node.rb#15802 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#15654 + # source://prism//lib/prism/node.rb#15825 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#15659 + # source://prism//lib/prism/node.rb#15830 sig { returns(Prism::Node) } def expression; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#15683 + # source://prism//lib/prism/node.rb#15854 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#15678 + # source://prism//lib/prism/node.rb#15849 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#15662 + # source://prism//lib/prism/node.rb#15833 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/parse_result/newlines.rb#115 + # source://prism//lib/prism/parse_result/newlines.rb#116 def newline_flag!(lines); end - # source://prism//lib/prism/node.rb#15675 + # source://prism//lib/prism/node.rb#15846 sig { returns(Prism::Node) } def rescue_expression; end - # source://prism//lib/prism/node.rb#15670 + # source://prism//lib/prism/node.rb#15841 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#15688 + # source://prism//lib/prism/node.rb#15859 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#15693 + # source://prism//lib/prism/node.rb#15864 def type; end end end -# source://prism//lib/prism/node.rb#15716 +# source://prism//lib/prism/node.rb#15887 class Prism::RescueNode < ::Prism::Node - # source://prism//lib/prism/node.rb#15718 + # source://prism//lib/prism/node.rb#15889 sig do params( source: Prism::Source, @@ -19949,29 +19957,29 @@ class Prism::RescueNode < ::Prism::Node end def initialize(source, node_id, location, flags, keyword_loc, exceptions, operator_loc, reference, then_keyword_loc, statements, subsequent); end - # source://prism//lib/prism/node.rb#15865 + # source://prism//lib/prism/node.rb#16036 def ===(other); end - # source://prism//lib/prism/node.rb#15733 + # source://prism//lib/prism/node.rb#15904 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#15738 + # source://prism//lib/prism/node.rb#15909 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#15753 + # source://prism//lib/prism/node.rb#15924 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#15743 + # source://prism//lib/prism/node.rb#15914 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node_ext.rb#494 + # source://prism//lib/prism/node_ext.rb#497 def consequent; end - # source://prism//lib/prism/node.rb#15758 + # source://prism//lib/prism/node.rb#15929 sig do params( node_id: Integer, @@ -19988,85 +19996,85 @@ class Prism::RescueNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), exceptions: T.unsafe(nil), operator_loc: T.unsafe(nil), reference: T.unsafe(nil), then_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), subsequent: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#15738 + # source://prism//lib/prism/node.rb#15909 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#15766 + # source://prism//lib/prism/node.rb#15937 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#15784 + # source://prism//lib/prism/node.rb#15955 sig { returns(T::Array[Prism::Node]) } def exceptions; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#15849 + # source://prism//lib/prism/node.rb#16020 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#15834 + # source://prism//lib/prism/node.rb#16005 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#15771 + # source://prism//lib/prism/node.rb#15942 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#15839 + # source://prism//lib/prism/node.rb#16010 sig { returns(T.nilable(String)) } def operator; end - # source://prism//lib/prism/node.rb#15787 + # source://prism//lib/prism/node.rb#15958 sig { returns(T.nilable(Prism::Location)) } def operator_loc; end - # source://prism//lib/prism/node.rb#15806 + # source://prism//lib/prism/node.rb#15977 sig do returns(T.nilable(T.any(Prism::LocalVariableTargetNode, Prism::InstanceVariableTargetNode, Prism::ClassVariableTargetNode, Prism::GlobalVariableTargetNode, Prism::ConstantTargetNode, Prism::ConstantPathTargetNode, Prism::CallTargetNode, Prism::IndexTargetNode, Prism::BackReferenceReadNode, Prism::NumberedReferenceReadNode, Prism::MissingNode))) end def reference; end - # source://prism//lib/prism/node.rb#15779 + # source://prism//lib/prism/node.rb#15950 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#15801 + # source://prism//lib/prism/node.rb#15972 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#15823 + # source://prism//lib/prism/node.rb#15994 def save_then_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#15828 + # source://prism//lib/prism/node.rb#15999 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#15831 + # source://prism//lib/prism/node.rb#16002 sig { returns(T.nilable(Prism::RescueNode)) } def subsequent; end - # source://prism//lib/prism/node.rb#15844 + # source://prism//lib/prism/node.rb#16015 sig { returns(T.nilable(String)) } def then_keyword; end - # source://prism//lib/prism/node.rb#15809 + # source://prism//lib/prism/node.rb#15980 sig { returns(T.nilable(Prism::Location)) } def then_keyword_loc; end - # source://prism//lib/prism/node.rb#15854 + # source://prism//lib/prism/node.rb#16025 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#15859 + # source://prism//lib/prism/node.rb#16030 def type; end end end -# source://prism//lib/prism/node.rb#15883 +# source://prism//lib/prism/node.rb#16054 class Prism::RestParameterNode < ::Prism::Node - # source://prism//lib/prism/node.rb#15885 + # source://prism//lib/prism/node.rb#16056 sig do params( source: Prism::Source, @@ -20080,26 +20088,26 @@ class Prism::RestParameterNode < ::Prism::Node end def initialize(source, node_id, location, flags, name, name_loc, operator_loc); end - # source://prism//lib/prism/node.rb#15990 + # source://prism//lib/prism/node.rb#16161 def ===(other); end - # source://prism//lib/prism/node.rb#15896 + # source://prism//lib/prism/node.rb#16067 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#15901 + # source://prism//lib/prism/node.rb#16072 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#15911 + # source://prism//lib/prism/node.rb#16082 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#15906 + # source://prism//lib/prism/node.rb#16077 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#15916 + # source://prism//lib/prism/node.rb#16087 sig do params( node_id: Integer, @@ -20112,60 +20120,60 @@ class Prism::RestParameterNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), name: T.unsafe(nil), name_loc: T.unsafe(nil), operator_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#15901 + # source://prism//lib/prism/node.rb#16072 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#15924 + # source://prism//lib/prism/node.rb#16095 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#15974 + # source://prism//lib/prism/node.rb#16145 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#15934 + # source://prism//lib/prism/node.rb#16105 sig { returns(T.nilable(Symbol)) } def name; end - # source://prism//lib/prism/node.rb#15937 + # source://prism//lib/prism/node.rb#16108 sig { returns(T.nilable(Prism::Location)) } def name_loc; end - # source://prism//lib/prism/node.rb#15969 + # source://prism//lib/prism/node.rb#16140 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#15956 + # source://prism//lib/prism/node.rb#16127 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#15929 + # source://prism//lib/prism/node.rb#16100 sig { returns(T::Boolean) } def repeated_parameter?; end - # source://prism//lib/prism/node.rb#15951 + # source://prism//lib/prism/node.rb#16122 def save_name_loc(repository); end - # source://prism//lib/prism/node.rb#15964 + # source://prism//lib/prism/node.rb#16135 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#15979 + # source://prism//lib/prism/node.rb#16150 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#15984 + # source://prism//lib/prism/node.rb#16155 def type; end end end -# source://prism//lib/prism/parse_result.rb#679 +# source://prism//lib/prism/parse_result.rb#680 class Prism::Result - # source://prism//lib/prism/parse_result.rb#701 + # source://prism//lib/prism/parse_result.rb#702 sig do params( comments: T::Array[Prism::Comment], @@ -20178,7 +20186,7 @@ class Prism::Result end def initialize(comments, magic_comments, data_loc, errors, warnings, source); end - # source://prism//lib/prism/parse_result.rb#733 + # source://prism//lib/prism/parse_result.rb#734 sig do params( encoding: Encoding @@ -20186,104 +20194,104 @@ class Prism::Result end def code_units_cache(encoding); end - # source://prism//lib/prism/parse_result.rb#681 + # source://prism//lib/prism/parse_result.rb#682 sig { returns(T::Array[Prism::Comment]) } def comments; end - # source://prism//lib/prism/parse_result.rb#689 + # source://prism//lib/prism/parse_result.rb#690 sig { returns(T.nilable(Prism::Location)) } def data_loc; end - # source://prism//lib/prism/parse_result.rb#711 + # source://prism//lib/prism/parse_result.rb#712 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/parse_result.rb#716 + # source://prism//lib/prism/parse_result.rb#717 sig { returns(Encoding) } def encoding; end - # source://prism//lib/prism/parse_result.rb#692 + # source://prism//lib/prism/parse_result.rb#693 sig { returns(T::Array[Prism::ParseError]) } def errors; end - # source://prism//lib/prism/parse_result.rb#728 + # source://prism//lib/prism/parse_result.rb#729 sig { returns(T::Boolean) } def failure?; end - # source://prism//lib/prism/parse_result.rb#684 + # source://prism//lib/prism/parse_result.rb#685 sig { returns(T::Array[Prism::MagicComment]) } def magic_comments; end - # source://prism//lib/prism/parse_result.rb#698 + # source://prism//lib/prism/parse_result.rb#699 sig { returns(Prism::Source) } def source; end - # source://prism//lib/prism/parse_result.rb#722 + # source://prism//lib/prism/parse_result.rb#723 sig { returns(T::Boolean) } def success?; end - # source://prism//lib/prism/parse_result.rb#695 + # source://prism//lib/prism/parse_result.rb#696 sig { returns(T::Array[Prism::ParseWarning]) } def warnings; end end -# source://prism//lib/prism/node.rb#16003 +# source://prism//lib/prism/node.rb#16174 class Prism::RetryNode < ::Prism::Node - # source://prism//lib/prism/node.rb#16005 + # source://prism//lib/prism/node.rb#16176 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#16062 + # source://prism//lib/prism/node.rb#16233 def ===(other); end - # source://prism//lib/prism/node.rb#16013 + # source://prism//lib/prism/node.rb#16184 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#16018 + # source://prism//lib/prism/node.rb#16189 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#16028 + # source://prism//lib/prism/node.rb#16199 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#16023 + # source://prism//lib/prism/node.rb#16194 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#16033 + # source://prism//lib/prism/node.rb#16204 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::RetryNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#16018 + # source://prism//lib/prism/node.rb#16189 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#16041 + # source://prism//lib/prism/node.rb#16212 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#16046 + # source://prism//lib/prism/node.rb#16217 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#16051 + # source://prism//lib/prism/node.rb#16222 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#16056 + # source://prism//lib/prism/node.rb#16227 def type; end end end -# source://prism//lib/prism/node.rb#16071 +# source://prism//lib/prism/node.rb#16242 class Prism::ReturnNode < ::Prism::Node - # source://prism//lib/prism/node.rb#16073 + # source://prism//lib/prism/node.rb#16244 sig do params( source: Prism::Source, @@ -20296,30 +20304,30 @@ class Prism::ReturnNode < ::Prism::Node end def initialize(source, node_id, location, flags, keyword_loc, arguments); end - # source://prism//lib/prism/node.rb#16155 + # source://prism//lib/prism/node.rb#16326 def ===(other); end - # source://prism//lib/prism/node.rb#16083 + # source://prism//lib/prism/node.rb#16254 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#16131 + # source://prism//lib/prism/node.rb#16302 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # source://prism//lib/prism/node.rb#16088 + # source://prism//lib/prism/node.rb#16259 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#16100 + # source://prism//lib/prism/node.rb#16271 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#16093 + # source://prism//lib/prism/node.rb#16264 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#16105 + # source://prism//lib/prism/node.rb#16276 sig do params( node_id: Integer, @@ -20331,257 +20339,257 @@ class Prism::ReturnNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), arguments: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#16088 + # source://prism//lib/prism/node.rb#16259 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#16113 + # source://prism//lib/prism/node.rb#16284 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#16139 + # source://prism//lib/prism/node.rb#16310 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#16134 + # source://prism//lib/prism/node.rb#16305 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#16118 + # source://prism//lib/prism/node.rb#16289 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#16126 + # source://prism//lib/prism/node.rb#16297 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#16144 + # source://prism//lib/prism/node.rb#16315 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#16149 + # source://prism//lib/prism/node.rb#16320 def type; end end end -# source://prism//lib/prism/parse_result.rb#887 +# source://prism//lib/prism/parse_result.rb#888 class Prism::Scope - # source://prism//lib/prism/parse_result.rb#898 + # source://prism//lib/prism/parse_result.rb#899 sig { params(locals: T::Array[Symbol], forwarding: T::Array[Symbol]).void } def initialize(locals, forwarding); end - # source://prism//lib/prism/parse_result.rb#895 + # source://prism//lib/prism/parse_result.rb#896 sig { returns(T::Array[Symbol]) } def forwarding; end - # source://prism//lib/prism/parse_result.rb#890 + # source://prism//lib/prism/parse_result.rb#891 sig { returns(T::Array[Symbol]) } def locals; end end -# source://prism//lib/prism/node.rb#16166 +# source://prism//lib/prism/node.rb#16337 class Prism::SelfNode < ::Prism::Node - # source://prism//lib/prism/node.rb#16168 + # source://prism//lib/prism/node.rb#16339 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#16225 + # source://prism//lib/prism/node.rb#16396 def ===(other); end - # source://prism//lib/prism/node.rb#16176 + # source://prism//lib/prism/node.rb#16347 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#16181 + # source://prism//lib/prism/node.rb#16352 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#16191 + # source://prism//lib/prism/node.rb#16362 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#16186 + # source://prism//lib/prism/node.rb#16357 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#16196 + # source://prism//lib/prism/node.rb#16367 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::SelfNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#16181 + # source://prism//lib/prism/node.rb#16352 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#16204 + # source://prism//lib/prism/node.rb#16375 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#16209 + # source://prism//lib/prism/node.rb#16380 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#16214 + # source://prism//lib/prism/node.rb#16385 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#16219 + # source://prism//lib/prism/node.rb#16390 def type; end end end -# source://prism//lib/prism/serialize.rb#14 +# source://prism//lib/prism/serialize.rb#17 module Prism::Serialize class << self - # source://prism//lib/prism/serialize.rb#84 + # source://prism//lib/prism/serialize.rb#87 def load_lex(input, serialized, freeze); end - # source://prism//lib/prism/serialize.rb#31 + # source://prism//lib/prism/serialize.rb#34 def load_parse(input, serialized, freeze); end - # source://prism//lib/prism/serialize.rb#128 + # source://prism//lib/prism/serialize.rb#131 def load_parse_comments(input, serialized, freeze); end - # source://prism//lib/prism/serialize.rb#150 + # source://prism//lib/prism/serialize.rb#153 def load_parse_lex(input, serialized, freeze); end end end -# source://prism//lib/prism/serialize.rb#199 +# source://prism//lib/prism/serialize.rb#202 class Prism::Serialize::ConstantPool - # source://prism//lib/prism/serialize.rb#202 + # source://prism//lib/prism/serialize.rb#205 def initialize(input, serialized, base, size); end - # source://prism//lib/prism/serialize.rb#210 + # source://prism//lib/prism/serialize.rb#213 def get(index, encoding); end - # source://prism//lib/prism/serialize.rb#200 + # source://prism//lib/prism/serialize.rb#203 def size; end end -# source://prism//lib/prism/serialize.rb#253 +# source://prism//lib/prism/serialize.rb#256 Prism::Serialize::FastStringIO = StringIO -# source://prism//lib/prism/serialize.rb#256 +# source://prism//lib/prism/serialize.rb#259 class Prism::Serialize::Loader - # source://prism//lib/prism/serialize.rb#259 + # source://prism//lib/prism/serialize.rb#262 def initialize(source, serialized); end - # source://prism//lib/prism/serialize.rb#267 + # source://prism//lib/prism/serialize.rb#270 def eof?; end - # source://prism//lib/prism/serialize.rb#257 + # source://prism//lib/prism/serialize.rb#260 def input; end - # source://prism//lib/prism/serialize.rb#257 + # source://prism//lib/prism/serialize.rb#260 def io; end - # source://prism//lib/prism/serialize.rb#301 + # source://prism//lib/prism/serialize.rb#304 def load_comments(freeze); end - # source://prism//lib/prism/serialize.rb#823 + # source://prism//lib/prism/serialize.rb#829 def load_constant(constant_pool, encoding); end - # source://prism//lib/prism/serialize.rb#272 + # source://prism//lib/prism/serialize.rb#275 def load_constant_pool(constant_pool); end - # source://prism//lib/prism/serialize.rb#774 + # source://prism//lib/prism/serialize.rb#780 def load_double; end - # source://prism//lib/prism/serialize.rb#789 + # source://prism//lib/prism/serialize.rb#795 def load_embedded_string(encoding); end - # source://prism//lib/prism/serialize.rb#289 + # source://prism//lib/prism/serialize.rb#292 def load_encoding; end - # source://prism//lib/prism/serialize.rb#659 + # source://prism//lib/prism/serialize.rb#665 def load_error_level; end - # source://prism//lib/prism/serialize.rb#674 + # source://prism//lib/prism/serialize.rb#680 def load_errors(encoding, freeze); end - # source://prism//lib/prism/serialize.rb#283 + # source://prism//lib/prism/serialize.rb#286 def load_header; end - # source://prism//lib/prism/serialize.rb#763 + # source://prism//lib/prism/serialize.rb#769 def load_integer; end - # source://prism//lib/prism/serialize.rb#295 + # source://prism//lib/prism/serialize.rb#298 def load_line_offsets(freeze); end - # source://prism//lib/prism/serialize.rb#810 + # source://prism//lib/prism/serialize.rb#816 def load_location(freeze); end - # source://prism//lib/prism/serialize.rb#804 + # source://prism//lib/prism/serialize.rb#810 def load_location_object(freeze); end - # source://prism//lib/prism/serialize.rb#318 + # source://prism//lib/prism/serialize.rb#321 def load_magic_comments(freeze); end - # source://prism//lib/prism/serialize.rb#834 + # source://prism//lib/prism/serialize.rb#840 def load_node(constant_pool, encoding, freeze); end - # source://prism//lib/prism/serialize.rb#828 + # source://prism//lib/prism/serialize.rb#834 def load_optional_constant(constant_pool, encoding); end - # source://prism//lib/prism/serialize.rb#815 + # source://prism//lib/prism/serialize.rb#821 def load_optional_location(freeze); end - # source://prism//lib/prism/serialize.rb#819 + # source://prism//lib/prism/serialize.rb#825 def load_optional_location_object(freeze); end - # source://prism//lib/prism/serialize.rb#782 + # source://prism//lib/prism/serialize.rb#788 def load_optional_node(constant_pool, encoding, freeze); end - # source://prism//lib/prism/serialize.rb#793 + # source://prism//lib/prism/serialize.rb#799 def load_string(encoding); end - # source://prism//lib/prism/serialize.rb#725 + # source://prism//lib/prism/serialize.rb#731 def load_tokens; end - # source://prism//lib/prism/serialize.rb#778 + # source://prism//lib/prism/serialize.rb#784 def load_uint32; end - # source://prism//lib/prism/serialize.rb#758 + # source://prism//lib/prism/serialize.rb#764 def load_varsint; end - # source://prism//lib/prism/serialize.rb#744 + # source://prism//lib/prism/serialize.rb#750 def load_varuint; end - # source://prism//lib/prism/serialize.rb#693 + # source://prism//lib/prism/serialize.rb#699 def load_warning_level; end - # source://prism//lib/prism/serialize.rb#706 + # source://prism//lib/prism/serialize.rb#712 def load_warnings(encoding, freeze); end - # source://prism//lib/prism/serialize.rb#257 + # source://prism//lib/prism/serialize.rb#260 def source; end end -# source://prism//lib/prism/serialize.rb#335 +# source://prism//lib/prism/serialize.rb#338 Prism::Serialize::Loader::DIAGNOSTIC_TYPES = T.let(T.unsafe(nil), Array) -# source://prism//lib/prism/serialize.rb#17 +# source://prism//lib/prism/serialize.rb#20 Prism::Serialize::MAJOR_VERSION = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/serialize.rb#21 +# source://prism//lib/prism/serialize.rb#24 Prism::Serialize::MINOR_VERSION = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/serialize.rb#25 +# source://prism//lib/prism/serialize.rb#28 Prism::Serialize::PATCH_VERSION = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/serialize.rb#2219 +# source://prism//lib/prism/serialize.rb#2225 Prism::Serialize::TOKEN_TYPES = T.let(T.unsafe(nil), Array) -# source://prism//lib/prism/node.rb#16235 +# source://prism//lib/prism/node.rb#16406 class Prism::ShareableConstantNode < ::Prism::Node - # source://prism//lib/prism/node.rb#16237 + # source://prism//lib/prism/node.rb#16408 sig do params( source: Prism::Source, @@ -20593,26 +20601,26 @@ class Prism::ShareableConstantNode < ::Prism::Node end def initialize(source, node_id, location, flags, write); end - # source://prism//lib/prism/node.rb#16313 + # source://prism//lib/prism/node.rb#16484 def ===(other); end - # source://prism//lib/prism/node.rb#16246 + # source://prism//lib/prism/node.rb#16417 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#16251 + # source://prism//lib/prism/node.rb#16422 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#16261 + # source://prism//lib/prism/node.rb#16432 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#16256 + # source://prism//lib/prism/node.rb#16427 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#16266 + # source://prism//lib/prism/node.rb#16437 sig do params( node_id: Integer, @@ -20623,65 +20631,65 @@ class Prism::ShareableConstantNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), write: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#16251 + # source://prism//lib/prism/node.rb#16422 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#16274 + # source://prism//lib/prism/node.rb#16445 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#16289 + # source://prism//lib/prism/node.rb#16460 sig { returns(T::Boolean) } def experimental_copy?; end - # source://prism//lib/prism/node.rb#16284 + # source://prism//lib/prism/node.rb#16455 sig { returns(T::Boolean) } def experimental_everything?; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#16297 + # source://prism//lib/prism/node.rb#16468 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#16279 + # source://prism//lib/prism/node.rb#16450 sig { returns(T::Boolean) } def literal?; end - # source://prism//lib/prism/node.rb#16302 + # source://prism//lib/prism/node.rb#16473 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#16294 + # source://prism//lib/prism/node.rb#16465 sig do returns(T.any(Prism::ConstantWriteNode, Prism::ConstantAndWriteNode, Prism::ConstantOrWriteNode, Prism::ConstantOperatorWriteNode, Prism::ConstantPathWriteNode, Prism::ConstantPathAndWriteNode, Prism::ConstantPathOrWriteNode, Prism::ConstantPathOperatorWriteNode)) end def write; end class << self - # source://prism//lib/prism/node.rb#16307 + # source://prism//lib/prism/node.rb#16478 def type; end end end -# source://prism//lib/prism/node.rb#18597 +# source://prism//lib/prism/node.rb#18768 # Flags for shareable constant nodes. module Prism::ShareableConstantNodeFlags; end -# source://prism//lib/prism/node.rb#18605 +# source://prism//lib/prism/node.rb#18776 Prism::ShareableConstantNodeFlags::EXPERIMENTAL_COPY = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18602 +# source://prism//lib/prism/node.rb#18773 Prism::ShareableConstantNodeFlags::EXPERIMENTAL_EVERYTHING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18599 +# source://prism//lib/prism/node.rb#18770 Prism::ShareableConstantNodeFlags::LITERAL = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#16324 +# source://prism//lib/prism/node.rb#16495 class Prism::SingletonClassNode < ::Prism::Node - # source://prism//lib/prism/node.rb#16326 + # source://prism//lib/prism/node.rb#16497 sig do params( source: Prism::Source, @@ -20698,38 +20706,38 @@ class Prism::SingletonClassNode < ::Prism::Node end def initialize(source, node_id, location, flags, locals, class_keyword_loc, operator_loc, expression, body, end_keyword_loc); end - # source://prism//lib/prism/node.rb#16455 + # source://prism//lib/prism/node.rb#16626 def ===(other); end - # source://prism//lib/prism/node.rb#16340 + # source://prism//lib/prism/node.rb#16511 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#16408 + # source://prism//lib/prism/node.rb#16579 sig { returns(T.nilable(T.any(Prism::StatementsNode, Prism::BeginNode))) } def body; end - # source://prism//lib/prism/node.rb#16345 + # source://prism//lib/prism/node.rb#16516 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#16424 + # source://prism//lib/prism/node.rb#16595 sig { returns(String) } def class_keyword; end - # source://prism//lib/prism/node.rb#16379 + # source://prism//lib/prism/node.rb#16550 sig { returns(Prism::Location) } def class_keyword_loc; end - # source://prism//lib/prism/node.rb#16358 + # source://prism//lib/prism/node.rb#16529 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#16350 + # source://prism//lib/prism/node.rb#16521 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#16363 + # source://prism//lib/prism/node.rb#16534 sig do params( node_id: Integer, @@ -20745,79 +20753,79 @@ class Prism::SingletonClassNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), locals: T.unsafe(nil), class_keyword_loc: T.unsafe(nil), operator_loc: T.unsafe(nil), expression: T.unsafe(nil), body: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#16345 + # source://prism//lib/prism/node.rb#16516 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#16371 + # source://prism//lib/prism/node.rb#16542 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#16434 + # source://prism//lib/prism/node.rb#16605 sig { returns(String) } def end_keyword; end - # source://prism//lib/prism/node.rb#16411 + # source://prism//lib/prism/node.rb#16582 sig { returns(Prism::Location) } def end_keyword_loc; end - # source://prism//lib/prism/node.rb#16405 + # source://prism//lib/prism/node.rb#16576 sig { returns(Prism::Node) } def expression; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#16439 + # source://prism//lib/prism/node.rb#16610 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#16376 + # source://prism//lib/prism/node.rb#16547 sig { returns(T::Array[Symbol]) } def locals; end - # source://prism//lib/prism/node.rb#16429 + # source://prism//lib/prism/node.rb#16600 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#16392 + # source://prism//lib/prism/node.rb#16563 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#16387 + # source://prism//lib/prism/node.rb#16558 def save_class_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#16419 + # source://prism//lib/prism/node.rb#16590 def save_end_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#16400 + # source://prism//lib/prism/node.rb#16571 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#16444 + # source://prism//lib/prism/node.rb#16615 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#16449 + # source://prism//lib/prism/node.rb#16620 def type; end end end -# source://prism//lib/prism/parse_result.rb#7 +# source://prism//lib/prism/parse_result.rb#8 class Prism::Source - # source://prism//lib/prism/parse_result.rb#45 + # source://prism//lib/prism/parse_result.rb#46 sig { params(source: String, start_line: Integer, offsets: T::Array[Integer]).void } def initialize(source, start_line = T.unsafe(nil), offsets = T.unsafe(nil)); end - # source://prism//lib/prism/parse_result.rb#107 + # source://prism//lib/prism/parse_result.rb#108 sig { params(byte_offset: Integer).returns(Integer) } def character_column(byte_offset); end - # source://prism//lib/prism/parse_result.rb#102 + # source://prism//lib/prism/parse_result.rb#103 sig { params(byte_offset: Integer).returns(Integer) } def character_offset(byte_offset); end - # source://prism//lib/prism/parse_result.rb#135 + # source://prism//lib/prism/parse_result.rb#136 sig do params( encoding: Encoding @@ -20825,132 +20833,132 @@ class Prism::Source end def code_units_cache(encoding); end - # source://prism//lib/prism/parse_result.rb#141 + # source://prism//lib/prism/parse_result.rb#142 sig { params(byte_offset: Integer, encoding: Encoding).returns(Integer) } def code_units_column(byte_offset, encoding); end - # source://prism//lib/prism/parse_result.rb#123 + # source://prism//lib/prism/parse_result.rb#124 sig { params(byte_offset: Integer, encoding: Encoding).returns(Integer) } def code_units_offset(byte_offset, encoding); end - # source://prism//lib/prism/parse_result.rb#97 + # source://prism//lib/prism/parse_result.rb#98 sig { params(byte_offset: Integer).returns(Integer) } def column(byte_offset); end - # source://prism//lib/prism/parse_result.rb#146 + # source://prism//lib/prism/parse_result.rb#147 def deep_freeze; end - # source://prism//lib/prism/parse_result.rb#63 + # source://prism//lib/prism/parse_result.rb#64 sig { returns(Encoding) } def encoding; end - # source://prism//lib/prism/parse_result.rb#80 + # source://prism//lib/prism/parse_result.rb#81 sig { params(byte_offset: Integer).returns(Integer) } def line(byte_offset); end - # source://prism//lib/prism/parse_result.rb#92 + # source://prism//lib/prism/parse_result.rb#93 def line_end(byte_offset); end - # source://prism//lib/prism/parse_result.rb#86 + # source://prism//lib/prism/parse_result.rb#87 sig { params(byte_offset: Integer).returns(Integer) } def line_start(byte_offset); end - # source://prism//lib/prism/parse_result.rb#68 + # source://prism//lib/prism/parse_result.rb#69 sig { returns(T::Array[String]) } def lines; end - # source://prism//lib/prism/parse_result.rb#42 + # source://prism//lib/prism/parse_result.rb#43 sig { returns(T::Array[Integer]) } def offsets; end - # source://prism//lib/prism/parse_result.rb#57 + # source://prism//lib/prism/parse_result.rb#58 sig { params(offsets: T::Array[Integer]).void } def replace_offsets(offsets); end - # source://prism//lib/prism/parse_result.rb#52 + # source://prism//lib/prism/parse_result.rb#53 sig { params(start_line: Integer).void } def replace_start_line(start_line); end - # source://prism//lib/prism/parse_result.rb#74 + # source://prism//lib/prism/parse_result.rb#75 sig { params(byte_offset: Integer, length: Integer).returns(String) } def slice(byte_offset, length); end - # source://prism//lib/prism/parse_result.rb#36 + # source://prism//lib/prism/parse_result.rb#37 sig { returns(String) } def source; end - # source://prism//lib/prism/parse_result.rb#39 + # source://prism//lib/prism/parse_result.rb#40 sig { returns(Integer) } def start_line; end private - # source://prism//lib/prism/parse_result.rb#156 + # source://prism//lib/prism/parse_result.rb#157 def find_line(byte_offset); end class << self - # source://prism//lib/prism/parse_result.rb#12 + # source://prism//lib/prism/parse_result.rb#13 def for(source, start_line = T.unsafe(nil), offsets = T.unsafe(nil)); end end end -# source://prism//lib/prism/node.rb#16471 +# source://prism//lib/prism/node.rb#16642 class Prism::SourceEncodingNode < ::Prism::Node - # source://prism//lib/prism/node.rb#16473 + # source://prism//lib/prism/node.rb#16644 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#16530 + # source://prism//lib/prism/node.rb#16701 def ===(other); end - # source://prism//lib/prism/node.rb#16481 + # source://prism//lib/prism/node.rb#16652 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#16486 + # source://prism//lib/prism/node.rb#16657 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#16496 + # source://prism//lib/prism/node.rb#16667 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#16491 + # source://prism//lib/prism/node.rb#16662 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#16501 + # source://prism//lib/prism/node.rb#16672 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::SourceEncodingNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#16486 + # source://prism//lib/prism/node.rb#16657 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#16509 + # source://prism//lib/prism/node.rb#16680 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#16514 + # source://prism//lib/prism/node.rb#16685 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#16519 + # source://prism//lib/prism/node.rb#16690 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#16524 + # source://prism//lib/prism/node.rb#16695 def type; end end end -# source://prism//lib/prism/node.rb#16539 +# source://prism//lib/prism/node.rb#16710 class Prism::SourceFileNode < ::Prism::Node - # source://prism//lib/prism/node.rb#16541 + # source://prism//lib/prism/node.rb#16712 sig do params( source: Prism::Source, @@ -20962,26 +20970,26 @@ class Prism::SourceFileNode < ::Prism::Node end def initialize(source, node_id, location, flags, filepath); end - # source://prism//lib/prism/node.rb#16622 + # source://prism//lib/prism/node.rb#16793 def ===(other); end - # source://prism//lib/prism/node.rb#16550 + # source://prism//lib/prism/node.rb#16721 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#16555 + # source://prism//lib/prism/node.rb#16726 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#16565 + # source://prism//lib/prism/node.rb#16736 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#16560 + # source://prism//lib/prism/node.rb#16731 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#16570 + # source://prism//lib/prism/node.rb#16741 sig do params( node_id: Integer, @@ -20992,108 +21000,108 @@ class Prism::SourceFileNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), filepath: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#16555 + # source://prism//lib/prism/node.rb#16726 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#16578 + # source://prism//lib/prism/node.rb#16749 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#16603 + # source://prism//lib/prism/node.rb#16774 sig { returns(String) } def filepath; end - # source://prism//lib/prism/node.rb#16588 + # source://prism//lib/prism/node.rb#16759 sig { returns(T::Boolean) } def forced_binary_encoding?; end - # source://prism//lib/prism/node.rb#16583 + # source://prism//lib/prism/node.rb#16754 sig { returns(T::Boolean) } def forced_utf8_encoding?; end - # source://prism//lib/prism/node.rb#16593 + # source://prism//lib/prism/node.rb#16764 sig { returns(T::Boolean) } def frozen?; end - # source://prism//lib/prism/node.rb#16606 + # source://prism//lib/prism/node.rb#16777 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#16598 + # source://prism//lib/prism/node.rb#16769 sig { returns(T::Boolean) } def mutable?; end - # source://prism//lib/prism/node.rb#16611 + # source://prism//lib/prism/node.rb#16782 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#16616 + # source://prism//lib/prism/node.rb#16787 def type; end end end -# source://prism//lib/prism/node.rb#16633 +# source://prism//lib/prism/node.rb#16804 class Prism::SourceLineNode < ::Prism::Node - # source://prism//lib/prism/node.rb#16635 + # source://prism//lib/prism/node.rb#16806 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#16692 + # source://prism//lib/prism/node.rb#16863 def ===(other); end - # source://prism//lib/prism/node.rb#16643 + # source://prism//lib/prism/node.rb#16814 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#16648 + # source://prism//lib/prism/node.rb#16819 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#16658 + # source://prism//lib/prism/node.rb#16829 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#16653 + # source://prism//lib/prism/node.rb#16824 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#16663 + # source://prism//lib/prism/node.rb#16834 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::SourceLineNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#16648 + # source://prism//lib/prism/node.rb#16819 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#16671 + # source://prism//lib/prism/node.rb#16842 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#16676 + # source://prism//lib/prism/node.rb#16847 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#16681 + # source://prism//lib/prism/node.rb#16852 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#16686 + # source://prism//lib/prism/node.rb#16857 def type; end end end -# source://prism//lib/prism/node.rb#16701 +# source://prism//lib/prism/node.rb#16872 class Prism::SplatNode < ::Prism::Node - # source://prism//lib/prism/node.rb#16703 + # source://prism//lib/prism/node.rb#16874 sig do params( source: Prism::Source, @@ -21106,26 +21114,26 @@ class Prism::SplatNode < ::Prism::Node end def initialize(source, node_id, location, flags, operator_loc, expression); end - # source://prism//lib/prism/node.rb#16785 + # source://prism//lib/prism/node.rb#16956 def ===(other); end - # source://prism//lib/prism/node.rb#16713 + # source://prism//lib/prism/node.rb#16884 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#16718 + # source://prism//lib/prism/node.rb#16889 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#16730 + # source://prism//lib/prism/node.rb#16901 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#16723 + # source://prism//lib/prism/node.rb#16894 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#16735 + # source://prism//lib/prism/node.rb#16906 sig do params( node_id: Integer, @@ -21137,49 +21145,49 @@ class Prism::SplatNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), operator_loc: T.unsafe(nil), expression: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#16718 + # source://prism//lib/prism/node.rb#16889 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#16743 + # source://prism//lib/prism/node.rb#16914 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#16761 + # source://prism//lib/prism/node.rb#16932 sig { returns(T.nilable(Prism::Node)) } def expression; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#16769 + # source://prism//lib/prism/node.rb#16940 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#16764 + # source://prism//lib/prism/node.rb#16935 sig { returns(String) } def operator; end - # source://prism//lib/prism/node.rb#16748 + # source://prism//lib/prism/node.rb#16919 sig { returns(Prism::Location) } def operator_loc; end - # source://prism//lib/prism/node.rb#16756 + # source://prism//lib/prism/node.rb#16927 def save_operator_loc(repository); end - # source://prism//lib/prism/node.rb#16774 + # source://prism//lib/prism/node.rb#16945 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#16779 + # source://prism//lib/prism/node.rb#16950 def type; end end end -# source://prism//lib/prism/node.rb#16796 +# source://prism//lib/prism/node.rb#16967 class Prism::StatementsNode < ::Prism::Node - # source://prism//lib/prism/node.rb#16798 + # source://prism//lib/prism/node.rb#16969 sig do params( source: Prism::Source, @@ -21191,30 +21199,30 @@ class Prism::StatementsNode < ::Prism::Node end def initialize(source, node_id, location, flags, body); end - # source://prism//lib/prism/node.rb#16859 + # source://prism//lib/prism/node.rb#17030 def ===(other); end - # source://prism//lib/prism/node.rb#16807 + # source://prism//lib/prism/node.rb#16978 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#16840 + # source://prism//lib/prism/node.rb#17011 sig { returns(T::Array[Prism::Node]) } def body; end - # source://prism//lib/prism/node.rb#16812 + # source://prism//lib/prism/node.rb#16983 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#16822 + # source://prism//lib/prism/node.rb#16993 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#16817 + # source://prism//lib/prism/node.rb#16988 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#16827 + # source://prism//lib/prism/node.rb#16998 sig do params( node_id: Integer, @@ -21225,52 +21233,52 @@ class Prism::StatementsNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), body: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#16812 + # source://prism//lib/prism/node.rb#16983 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#16835 + # source://prism//lib/prism/node.rb#17006 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#16843 + # source://prism//lib/prism/node.rb#17014 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#16848 + # source://prism//lib/prism/node.rb#17019 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#16853 + # source://prism//lib/prism/node.rb#17024 def type; end end end -# source://prism//lib/prism/node.rb#18609 +# source://prism//lib/prism/node.rb#18780 # Flags for string nodes. module Prism::StringFlags; end -# source://prism//lib/prism/node.rb#18614 +# source://prism//lib/prism/node.rb#18785 Prism::StringFlags::FORCED_BINARY_ENCODING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18611 +# source://prism//lib/prism/node.rb#18782 Prism::StringFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18617 +# source://prism//lib/prism/node.rb#18788 Prism::StringFlags::FROZEN = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18620 +# source://prism//lib/prism/node.rb#18791 Prism::StringFlags::MUTABLE = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#16876 +# source://prism//lib/prism/node.rb#17047 class Prism::StringNode < ::Prism::Node include ::Prism::HeredocQuery - # source://prism//lib/prism/node.rb#16878 + # source://prism//lib/prism/node.rb#17049 sig do params( source: Prism::Source, @@ -21285,42 +21293,42 @@ class Prism::StringNode < ::Prism::Node end def initialize(source, node_id, location, flags, opening_loc, content_loc, closing_loc, unescaped); end - # source://prism//lib/prism/node.rb#17028 + # source://prism//lib/prism/node.rb#17199 def ===(other); end - # source://prism//lib/prism/node.rb#16890 + # source://prism//lib/prism/node.rb#17061 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#16895 + # source://prism//lib/prism/node.rb#17066 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#17007 + # source://prism//lib/prism/node.rb#17178 sig { returns(T.nilable(String)) } def closing; end - # source://prism//lib/prism/node.rb#16975 + # source://prism//lib/prism/node.rb#17146 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end - # source://prism//lib/prism/node.rb#16905 + # source://prism//lib/prism/node.rb#17076 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#16900 + # source://prism//lib/prism/node.rb#17071 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#17002 + # source://prism//lib/prism/node.rb#17173 sig { returns(String) } def content; end - # source://prism//lib/prism/node.rb#16962 + # source://prism//lib/prism/node.rb#17133 sig { returns(Prism::Location) } def content_loc; end - # source://prism//lib/prism/node.rb#16910 + # source://prism//lib/prism/node.rb#17081 sig do params( node_id: Integer, @@ -21334,90 +21342,90 @@ class Prism::StringNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), content_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#16895 + # source://prism//lib/prism/node.rb#17066 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#16918 + # source://prism//lib/prism/node.rb#17089 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#16928 + # source://prism//lib/prism/node.rb#17099 sig { returns(T::Boolean) } def forced_binary_encoding?; end - # source://prism//lib/prism/node.rb#16923 + # source://prism//lib/prism/node.rb#17094 sig { returns(T::Boolean) } def forced_utf8_encoding?; end - # source://prism//lib/prism/node.rb#16933 + # source://prism//lib/prism/node.rb#17104 sig { returns(T::Boolean) } def frozen?; end sig { returns(T::Boolean) } def heredoc?; end - # source://prism//lib/prism/node.rb#17012 + # source://prism//lib/prism/node.rb#17183 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#16938 + # source://prism//lib/prism/node.rb#17109 sig { returns(T::Boolean) } def mutable?; end - # source://prism//lib/prism/node.rb#16997 + # source://prism//lib/prism/node.rb#17168 sig { returns(T.nilable(String)) } def opening; end - # source://prism//lib/prism/node.rb#16943 + # source://prism//lib/prism/node.rb#17114 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end - # source://prism//lib/prism/node.rb#16989 + # source://prism//lib/prism/node.rb#17160 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#16970 + # source://prism//lib/prism/node.rb#17141 def save_content_loc(repository); end - # source://prism//lib/prism/node.rb#16957 + # source://prism//lib/prism/node.rb#17128 def save_opening_loc(repository); end - # source://prism//lib/prism/node_ext.rb#72 + # source://prism//lib/prism/node_ext.rb#75 sig { returns(Prism::InterpolatedStringNode) } def to_interpolated; end - # source://prism//lib/prism/node.rb#17017 + # source://prism//lib/prism/node.rb#17188 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#16994 + # source://prism//lib/prism/node.rb#17165 sig { returns(String) } def unescaped; end class << self - # source://prism//lib/prism/node.rb#17022 + # source://prism//lib/prism/node.rb#17193 def type; end end end -# source://prism//lib/prism/string_query.rb#6 +# source://prism//lib/prism/string_query.rb#7 class Prism::StringQuery - # source://prism//lib/prism/string_query.rb#11 + # source://prism//lib/prism/string_query.rb#12 def initialize(string); end - # source://prism//lib/prism/string_query.rb#21 + # source://prism//lib/prism/string_query.rb#22 def constant?; end - # source://prism//lib/prism/string_query.rb#16 + # source://prism//lib/prism/string_query.rb#17 def local?; end - # source://prism//lib/prism/string_query.rb#26 + # source://prism//lib/prism/string_query.rb#27 def method_name?; end - # source://prism//lib/prism/string_query.rb#8 + # source://prism//lib/prism/string_query.rb#9 def string; end class << self @@ -21427,9 +21435,9 @@ class Prism::StringQuery end end -# source://prism//lib/prism/node.rb#17045 +# source://prism//lib/prism/node.rb#17216 class Prism::SuperNode < ::Prism::Node - # source://prism//lib/prism/node.rb#17047 + # source://prism//lib/prism/node.rb#17218 sig do params( source: Prism::Source, @@ -21445,34 +21453,34 @@ class Prism::SuperNode < ::Prism::Node end def initialize(source, node_id, location, flags, keyword_loc, lparen_loc, arguments, rparen_loc, block); end - # source://prism//lib/prism/node.rb#17184 + # source://prism//lib/prism/node.rb#17355 def ===(other); end - # source://prism//lib/prism/node.rb#17060 + # source://prism//lib/prism/node.rb#17231 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#17128 + # source://prism//lib/prism/node.rb#17299 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # source://prism//lib/prism/node.rb#17150 + # source://prism//lib/prism/node.rb#17321 sig { returns(T.nilable(T.any(Prism::BlockNode, Prism::BlockArgumentNode))) } def block; end - # source://prism//lib/prism/node.rb#17065 + # source://prism//lib/prism/node.rb#17236 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#17078 + # source://prism//lib/prism/node.rb#17249 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#17070 + # source://prism//lib/prism/node.rb#17241 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#17083 + # source://prism//lib/prism/node.rb#17254 sig do params( node_id: Integer, @@ -21487,80 +21495,80 @@ class Prism::SuperNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), lparen_loc: T.unsafe(nil), arguments: T.unsafe(nil), rparen_loc: T.unsafe(nil), block: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#17065 + # source://prism//lib/prism/node.rb#17236 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#17091 + # source://prism//lib/prism/node.rb#17262 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#17168 + # source://prism//lib/prism/node.rb#17339 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#17153 + # source://prism//lib/prism/node.rb#17324 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#17096 + # source://prism//lib/prism/node.rb#17267 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#17158 + # source://prism//lib/prism/node.rb#17329 sig { returns(T.nilable(String)) } def lparen; end - # source://prism//lib/prism/node.rb#17109 + # source://prism//lib/prism/node.rb#17280 sig { returns(T.nilable(Prism::Location)) } def lparen_loc; end - # source://prism//lib/prism/node.rb#17163 + # source://prism//lib/prism/node.rb#17334 sig { returns(T.nilable(String)) } def rparen; end - # source://prism//lib/prism/node.rb#17131 + # source://prism//lib/prism/node.rb#17302 sig { returns(T.nilable(Prism::Location)) } def rparen_loc; end - # source://prism//lib/prism/node.rb#17104 + # source://prism//lib/prism/node.rb#17275 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#17123 + # source://prism//lib/prism/node.rb#17294 def save_lparen_loc(repository); end - # source://prism//lib/prism/node.rb#17145 + # source://prism//lib/prism/node.rb#17316 def save_rparen_loc(repository); end - # source://prism//lib/prism/node.rb#17173 + # source://prism//lib/prism/node.rb#17344 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#17178 + # source://prism//lib/prism/node.rb#17349 def type; end end end -# source://prism//lib/prism/node.rb#18624 +# source://prism//lib/prism/node.rb#18795 # Flags for symbol nodes. module Prism::SymbolFlags; end -# source://prism//lib/prism/node.rb#18629 +# source://prism//lib/prism/node.rb#18800 Prism::SymbolFlags::FORCED_BINARY_ENCODING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18632 +# source://prism//lib/prism/node.rb#18803 Prism::SymbolFlags::FORCED_US_ASCII_ENCODING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#18626 +# source://prism//lib/prism/node.rb#18797 Prism::SymbolFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/node.rb#17201 +# source://prism//lib/prism/node.rb#17372 class Prism::SymbolNode < ::Prism::Node - # source://prism//lib/prism/node.rb#17203 + # source://prism//lib/prism/node.rb#17374 sig do params( source: Prism::Source, @@ -21575,34 +21583,34 @@ class Prism::SymbolNode < ::Prism::Node end def initialize(source, node_id, location, flags, opening_loc, value_loc, closing_loc, unescaped); end - # source://prism//lib/prism/node.rb#17354 + # source://prism//lib/prism/node.rb#17525 def ===(other); end - # source://prism//lib/prism/node.rb#17215 + # source://prism//lib/prism/node.rb#17386 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#17220 + # source://prism//lib/prism/node.rb#17391 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#17333 + # source://prism//lib/prism/node.rb#17504 sig { returns(T.nilable(String)) } def closing; end - # source://prism//lib/prism/node.rb#17301 + # source://prism//lib/prism/node.rb#17472 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end - # source://prism//lib/prism/node.rb#17230 + # source://prism//lib/prism/node.rb#17401 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#17225 + # source://prism//lib/prism/node.rb#17396 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#17235 + # source://prism//lib/prism/node.rb#17406 sig do params( node_id: Integer, @@ -21616,834 +21624,834 @@ class Prism::SymbolNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), value_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#17220 + # source://prism//lib/prism/node.rb#17391 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#17243 + # source://prism//lib/prism/node.rb#17414 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#17253 + # source://prism//lib/prism/node.rb#17424 sig { returns(T::Boolean) } def forced_binary_encoding?; end - # source://prism//lib/prism/node.rb#17258 + # source://prism//lib/prism/node.rb#17429 sig { returns(T::Boolean) } def forced_us_ascii_encoding?; end - # source://prism//lib/prism/node.rb#17248 + # source://prism//lib/prism/node.rb#17419 sig { returns(T::Boolean) } def forced_utf8_encoding?; end - # source://prism//lib/prism/node.rb#17338 + # source://prism//lib/prism/node.rb#17509 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#17323 + # source://prism//lib/prism/node.rb#17494 sig { returns(T.nilable(String)) } def opening; end - # source://prism//lib/prism/node.rb#17263 + # source://prism//lib/prism/node.rb#17434 sig { returns(T.nilable(Prism::Location)) } def opening_loc; end - # source://prism//lib/prism/node.rb#17315 + # source://prism//lib/prism/node.rb#17486 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#17277 + # source://prism//lib/prism/node.rb#17448 def save_opening_loc(repository); end - # source://prism//lib/prism/node.rb#17296 + # source://prism//lib/prism/node.rb#17467 def save_value_loc(repository); end - # source://prism//lib/prism/node.rb#17343 + # source://prism//lib/prism/node.rb#17514 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#17320 + # source://prism//lib/prism/node.rb#17491 sig { returns(String) } def unescaped; end - # source://prism//lib/prism/node.rb#17328 + # source://prism//lib/prism/node.rb#17499 sig { returns(T.nilable(String)) } def value; end - # source://prism//lib/prism/node.rb#17282 + # source://prism//lib/prism/node.rb#17453 sig { returns(T.nilable(Prism::Location)) } def value_loc; end class << self - # source://prism//lib/prism/node.rb#17348 + # source://prism//lib/prism/node.rb#17519 def type; end end end -# source://prism//lib/prism/parse_result.rb#816 +# source://prism//lib/prism/parse_result.rb#817 class Prism::Token - # source://prism//lib/prism/parse_result.rb#828 + # source://prism//lib/prism/parse_result.rb#829 sig { params(source: Prism::Source, type: Symbol, value: String, location: T.any(Integer, Prism::Location)).void } def initialize(source, type, value, location); end - # source://prism//lib/prism/parse_result.rb#863 + # source://prism//lib/prism/parse_result.rb#864 sig { params(other: T.untyped).returns(T::Boolean) } def ==(other); end - # source://prism//lib/prism/parse_result.rb#836 + # source://prism//lib/prism/parse_result.rb#837 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/parse_result.rb#876 + # source://prism//lib/prism/parse_result.rb#877 def deep_freeze; end - # source://prism//lib/prism/parse_result.rb#870 + # source://prism//lib/prism/parse_result.rb#871 def inspect; end - # source://prism//lib/prism/parse_result.rb#841 + # source://prism//lib/prism/parse_result.rb#842 sig { returns(Prism::Location) } def location; end - # source://prism//lib/prism/parse_result.rb#848 + # source://prism//lib/prism/parse_result.rb#849 sig { params(q: T.untyped).void } def pretty_print(q); end - # source://prism//lib/prism/parse_result.rb#822 + # source://prism//lib/prism/parse_result.rb#823 sig { returns(Symbol) } def type; end - # source://prism//lib/prism/parse_result.rb#825 + # source://prism//lib/prism/parse_result.rb#826 sig { returns(String) } def value; end private - # source://prism//lib/prism/parse_result.rb#818 + # source://prism//lib/prism/parse_result.rb#819 sig { returns(Prism::Source) } def source; end end -# source://prism//lib/prism/translation.rb#6 +# source://prism//lib/prism/translation.rb#7 module Prism::Translation; end -# source://prism//lib/prism/translation/parser.rb#16 +# source://prism//lib/prism/translation/parser.rb#29 class Prism::Translation::Parser < ::Parser::Base - # source://prism//lib/prism/translation/parser.rb#61 + # source://prism//lib/prism/translation/parser.rb#74 def initialize(builder = T.unsafe(nil), parser: T.unsafe(nil)); end - # source://prism//lib/prism/translation/parser.rb#72 + # source://prism//lib/prism/translation/parser.rb#91 def default_encoding; end - # source://prism//lib/prism/translation/parser.rb#80 + # source://prism//lib/prism/translation/parser.rb#99 def parse(source_buffer); end - # source://prism//lib/prism/translation/parser.rb#93 + # source://prism//lib/prism/translation/parser.rb#112 def parse_with_comments(source_buffer); end - # source://prism//lib/prism/translation/parser.rb#110 + # source://prism//lib/prism/translation/parser.rb#129 def tokenize(source_buffer, recover = T.unsafe(nil)); end - # source://prism//lib/prism/translation/parser.rb#136 + # source://prism//lib/prism/translation/parser.rb#155 def try_declare_numparam(node); end - # source://prism//lib/prism/translation/parser.rb#67 + # source://prism//lib/prism/translation/parser.rb#86 sig { overridable.returns(Integer) } def version; end - # source://prism//lib/prism/translation/parser.rb#76 + # source://prism//lib/prism/translation/parser.rb#95 def yyerror; end private - # source://prism//lib/prism/translation/parser.rb#294 + # source://prism//lib/prism/translation/parser.rb#313 def build_ast(program, offset_cache); end - # source://prism//lib/prism/translation/parser.rb#299 + # source://prism//lib/prism/translation/parser.rb#318 def build_comments(comments, offset_cache); end - # source://prism//lib/prism/translation/parser.rb#277 + # source://prism//lib/prism/translation/parser.rb#296 def build_offset_cache(source); end - # source://prism//lib/prism/translation/parser.rb#311 + # source://prism//lib/prism/translation/parser.rb#330 def build_range(location, offset_cache); end - # source://prism//lib/prism/translation/parser.rb#306 + # source://prism//lib/prism/translation/parser.rb#325 def build_tokens(tokens, offset_cache); end - # source://prism//lib/prism/translation/parser.rb#334 + # source://prism//lib/prism/translation/parser.rb#353 def convert_for_prism(version); end - # source://prism//lib/prism/translation/parser.rb#155 + # source://prism//lib/prism/translation/parser.rb#174 def error_diagnostic(error, offset_cache); end - # source://prism//lib/prism/translation/parser.rb#320 + # source://prism//lib/prism/translation/parser.rb#339 def prism_options; end - # source://prism//lib/prism/translation/parser.rb#255 + # source://prism//lib/prism/translation/parser.rb#274 def unwrap(result, offset_cache); end - # source://prism//lib/prism/translation/parser.rb#144 + # source://prism//lib/prism/translation/parser.rb#163 def valid_error?(error); end - # source://prism//lib/prism/translation/parser.rb#150 + # source://prism//lib/prism/translation/parser.rb#169 def valid_warning?(warning); end - # source://prism//lib/prism/translation/parser.rb#228 + # source://prism//lib/prism/translation/parser.rb#247 def warning_diagnostic(warning, offset_cache); end end -# source://prism//lib/prism/translation/parser33.rb#6 +# source://prism//lib/prism/translation/parser33.rb#7 class Prism::Translation::Parser33 < ::Prism::Translation::Parser - # source://prism//lib/prism/translation/parser33.rb#7 + # source://prism//lib/prism/translation/parser33.rb#8 sig { override.returns(Integer) } def version; end end -# source://prism//lib/prism/translation/parser34.rb#6 +# source://prism//lib/prism/translation/parser34.rb#7 class Prism::Translation::Parser34 < ::Prism::Translation::Parser - # source://prism//lib/prism/translation/parser34.rb#7 + # source://prism//lib/prism/translation/parser34.rb#8 sig { override.returns(Integer) } def version; end end -# source://prism//lib/prism/translation/parser35.rb#6 +# source://prism//lib/prism/translation/parser35.rb#7 class Prism::Translation::Parser35 < ::Prism::Translation::Parser - # source://prism//lib/prism/translation/parser35.rb#7 + # source://prism//lib/prism/translation/parser35.rb#8 sig { override.returns(Integer) } def version; end end -# source://prism//lib/prism/translation/parser/builder.rb#8 +# source://prism//lib/prism/translation/parser/builder.rb#9 class Prism::Translation::Parser::Builder < ::Parser::Builders::Default - # source://prism//lib/prism/translation/parser/builder.rb#21 + # source://prism//lib/prism/translation/parser/builder.rb#22 def block(method_call, begin_t, args, body, end_t); end - # source://prism//lib/prism/translation/parser/builder.rb#10 + # source://prism//lib/prism/translation/parser/builder.rb#11 def itarg; end end -# source://prism//lib/prism/translation/parser/compiler.rb#8 +# source://prism//lib/prism/translation/parser/compiler.rb#9 class Prism::Translation::Parser::Compiler < ::Prism::Compiler - # source://prism//lib/prism/translation/parser/compiler.rb#39 + # source://prism//lib/prism/translation/parser/compiler.rb#40 def initialize(parser, offset_cache, forwarding: T.unsafe(nil), in_destructure: T.unsafe(nil), in_pattern: T.unsafe(nil)); end - # source://prism//lib/prism/translation/parser/compiler.rb#18 + # source://prism//lib/prism/translation/parser/compiler.rb#19 def builder; end - # source://prism//lib/prism/translation/parser/compiler.rb#29 + # source://prism//lib/prism/translation/parser/compiler.rb#30 def forwarding; end - # source://prism//lib/prism/translation/parser/compiler.rb#32 + # source://prism//lib/prism/translation/parser/compiler.rb#33 def in_destructure; end - # source://prism//lib/prism/translation/parser/compiler.rb#35 + # source://prism//lib/prism/translation/parser/compiler.rb#36 def in_pattern; end - # source://prism//lib/prism/translation/parser/compiler.rb#26 + # source://prism//lib/prism/translation/parser/compiler.rb#27 def offset_cache; end - # source://prism//lib/prism/translation/parser/compiler.rb#14 + # source://prism//lib/prism/translation/parser/compiler.rb#15 def parser; end - # source://prism//lib/prism/translation/parser/compiler.rb#22 + # source://prism//lib/prism/translation/parser/compiler.rb#23 def source_buffer; end - # source://prism//lib/prism/translation/parser/compiler.rb#58 + # source://prism//lib/prism/translation/parser/compiler.rb#59 def visit_alias_global_variable_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#52 + # source://prism//lib/prism/translation/parser/compiler.rb#53 def visit_alias_method_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#64 + # source://prism//lib/prism/translation/parser/compiler.rb#65 def visit_alternation_pattern_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#70 + # source://prism//lib/prism/translation/parser/compiler.rb#71 def visit_and_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#127 + # source://prism//lib/prism/translation/parser/compiler.rb#128 def visit_arguments_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#76 + # source://prism//lib/prism/translation/parser/compiler.rb#77 def visit_array_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#104 + # source://prism//lib/prism/translation/parser/compiler.rb#105 def visit_array_pattern_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#133 + # source://prism//lib/prism/translation/parser/compiler.rb#134 def visit_assoc_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#185 + # source://prism//lib/prism/translation/parser/compiler.rb#182 def visit_assoc_splat_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#197 + # source://prism//lib/prism/translation/parser/compiler.rb#194 def visit_back_reference_read_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#203 + # source://prism//lib/prism/translation/parser/compiler.rb#200 def visit_begin_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#248 + # source://prism//lib/prism/translation/parser/compiler.rb#245 def visit_block_argument_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#254 + # source://prism//lib/prism/translation/parser/compiler.rb#251 def visit_block_local_variable_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#259 + # source://prism//lib/prism/translation/parser/compiler.rb#256 def visit_block_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#265 + # source://prism//lib/prism/translation/parser/compiler.rb#262 def visit_block_parameter_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#270 + # source://prism//lib/prism/translation/parser/compiler.rb#267 def visit_block_parameters_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#279 + # source://prism//lib/prism/translation/parser/compiler.rb#276 def visit_break_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#384 + # source://prism//lib/prism/translation/parser/compiler.rb#381 def visit_call_and_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#291 + # source://prism//lib/prism/translation/parser/compiler.rb#288 def visit_call_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#365 + # source://prism//lib/prism/translation/parser/compiler.rb#362 def visit_call_operator_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#403 + # source://prism//lib/prism/translation/parser/compiler.rb#400 def visit_call_or_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#422 + # source://prism//lib/prism/translation/parser/compiler.rb#419 def visit_call_target_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#434 + # source://prism//lib/prism/translation/parser/compiler.rb#431 def visit_capture_pattern_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#453 + # source://prism//lib/prism/translation/parser/compiler.rb#450 def visit_case_match_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#440 + # source://prism//lib/prism/translation/parser/compiler.rb#437 def visit_case_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#466 + # source://prism//lib/prism/translation/parser/compiler.rb#463 def visit_class_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#505 + # source://prism//lib/prism/translation/parser/compiler.rb#502 def visit_class_variable_and_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#495 + # source://prism//lib/prism/translation/parser/compiler.rb#492 def visit_class_variable_operator_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#515 + # source://prism//lib/prism/translation/parser/compiler.rb#512 def visit_class_variable_or_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#479 + # source://prism//lib/prism/translation/parser/compiler.rb#476 def visit_class_variable_read_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#525 + # source://prism//lib/prism/translation/parser/compiler.rb#522 def visit_class_variable_target_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#485 + # source://prism//lib/prism/translation/parser/compiler.rb#482 def visit_class_variable_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#556 + # source://prism//lib/prism/translation/parser/compiler.rb#553 def visit_constant_and_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#546 + # source://prism//lib/prism/translation/parser/compiler.rb#543 def visit_constant_operator_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#566 + # source://prism//lib/prism/translation/parser/compiler.rb#563 def visit_constant_or_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#622 + # source://prism//lib/prism/translation/parser/compiler.rb#619 def visit_constant_path_and_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#582 + # source://prism//lib/prism/translation/parser/compiler.rb#579 def visit_constant_path_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#612 + # source://prism//lib/prism/translation/parser/compiler.rb#609 def visit_constant_path_operator_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#632 + # source://prism//lib/prism/translation/parser/compiler.rb#629 def visit_constant_path_or_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#642 + # source://prism//lib/prism/translation/parser/compiler.rb#639 def visit_constant_path_target_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#602 + # source://prism//lib/prism/translation/parser/compiler.rb#599 def visit_constant_path_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#531 + # source://prism//lib/prism/translation/parser/compiler.rb#528 def visit_constant_read_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#576 + # source://prism//lib/prism/translation/parser/compiler.rb#573 def visit_constant_target_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#540 + # source://prism//lib/prism/translation/parser/compiler.rb#537 def visit_constant_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#651 + # source://prism//lib/prism/translation/parser/compiler.rb#648 def visit_def_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#698 + # source://prism//lib/prism/translation/parser/compiler.rb#695 def visit_defined_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#710 + # source://prism//lib/prism/translation/parser/compiler.rb#731 def visit_else_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#716 + # source://prism//lib/prism/translation/parser/compiler.rb#737 def visit_embedded_statements_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#726 + # source://prism//lib/prism/translation/parser/compiler.rb#747 def visit_embedded_variable_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#732 + # source://prism//lib/prism/translation/parser/compiler.rb#753 def visit_ensure_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#738 + # source://prism//lib/prism/translation/parser/compiler.rb#759 def visit_false_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#744 + # source://prism//lib/prism/translation/parser/compiler.rb#765 def visit_find_pattern_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1501 + # source://prism//lib/prism/translation/parser/compiler.rb#1523 def visit_flip_flop_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#756 + # source://prism//lib/prism/translation/parser/compiler.rb#777 def visit_float_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#762 + # source://prism//lib/prism/translation/parser/compiler.rb#783 def visit_for_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#780 + # source://prism//lib/prism/translation/parser/compiler.rb#801 def visit_forwarding_arguments_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#786 + # source://prism//lib/prism/translation/parser/compiler.rb#807 def visit_forwarding_parameter_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#795 + # source://prism//lib/prism/translation/parser/compiler.rb#816 def visit_forwarding_super_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#833 + # source://prism//lib/prism/translation/parser/compiler.rb#854 def visit_global_variable_and_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#823 + # source://prism//lib/prism/translation/parser/compiler.rb#844 def visit_global_variable_operator_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#843 + # source://prism//lib/prism/translation/parser/compiler.rb#864 def visit_global_variable_or_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#807 + # source://prism//lib/prism/translation/parser/compiler.rb#828 def visit_global_variable_read_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#853 + # source://prism//lib/prism/translation/parser/compiler.rb#874 def visit_global_variable_target_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#813 + # source://prism//lib/prism/translation/parser/compiler.rb#834 def visit_global_variable_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#859 + # source://prism//lib/prism/translation/parser/compiler.rb#880 def visit_hash_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#869 + # source://prism//lib/prism/translation/parser/compiler.rb#890 def visit_hash_pattern_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#887 + # source://prism//lib/prism/translation/parser/compiler.rb#908 def visit_if_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#929 + # source://prism//lib/prism/translation/parser/compiler.rb#950 def visit_imaginary_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#935 + # source://prism//lib/prism/translation/parser/compiler.rb#956 def visit_implicit_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#941 + # source://prism//lib/prism/translation/parser/compiler.rb#962 def visit_implicit_rest_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#947 + # source://prism//lib/prism/translation/parser/compiler.rb#968 def visit_in_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#995 + # source://prism//lib/prism/translation/parser/compiler.rb#1016 def visit_index_and_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#977 + # source://prism//lib/prism/translation/parser/compiler.rb#998 def visit_index_operator_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1013 + # source://prism//lib/prism/translation/parser/compiler.rb#1034 def visit_index_or_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1031 + # source://prism//lib/prism/translation/parser/compiler.rb#1052 def visit_index_target_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1068 + # source://prism//lib/prism/translation/parser/compiler.rb#1089 def visit_instance_variable_and_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1058 + # source://prism//lib/prism/translation/parser/compiler.rb#1079 def visit_instance_variable_operator_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1078 + # source://prism//lib/prism/translation/parser/compiler.rb#1099 def visit_instance_variable_or_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1042 + # source://prism//lib/prism/translation/parser/compiler.rb#1063 def visit_instance_variable_read_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1088 + # source://prism//lib/prism/translation/parser/compiler.rb#1109 def visit_instance_variable_target_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1048 + # source://prism//lib/prism/translation/parser/compiler.rb#1069 def visit_instance_variable_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1094 + # source://prism//lib/prism/translation/parser/compiler.rb#1115 def visit_integer_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1100 + # source://prism//lib/prism/translation/parser/compiler.rb#1121 def visit_interpolated_match_last_line_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1100 + # source://prism//lib/prism/translation/parser/compiler.rb#1121 def visit_interpolated_regular_expression_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1115 + # source://prism//lib/prism/translation/parser/compiler.rb#1136 def visit_interpolated_string_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1129 + # source://prism//lib/prism/translation/parser/compiler.rb#1150 def visit_interpolated_symbol_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1139 + # source://prism//lib/prism/translation/parser/compiler.rb#1160 def visit_interpolated_x_string_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1153 + # source://prism//lib/prism/translation/parser/compiler.rb#1174 def visit_it_local_variable_read_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1159 + # source://prism//lib/prism/translation/parser/compiler.rb#1180 def visit_it_parameters_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1175 + # source://prism//lib/prism/translation/parser/compiler.rb#1196 def visit_keyword_hash_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1184 + # source://prism//lib/prism/translation/parser/compiler.rb#1205 def visit_keyword_rest_parameter_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1193 + # source://prism//lib/prism/translation/parser/compiler.rb#1214 def visit_lambda_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1245 + # source://prism//lib/prism/translation/parser/compiler.rb#1266 def visit_local_variable_and_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1235 + # source://prism//lib/prism/translation/parser/compiler.rb#1256 def visit_local_variable_operator_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1255 + # source://prism//lib/prism/translation/parser/compiler.rb#1276 def visit_local_variable_or_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1219 + # source://prism//lib/prism/translation/parser/compiler.rb#1240 def visit_local_variable_read_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1265 + # source://prism//lib/prism/translation/parser/compiler.rb#1286 def visit_local_variable_target_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1225 + # source://prism//lib/prism/translation/parser/compiler.rb#1246 def visit_local_variable_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1535 + # source://prism//lib/prism/translation/parser/compiler.rb#1557 def visit_match_last_line_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1275 + # source://prism//lib/prism/translation/parser/compiler.rb#1296 def visit_match_predicate_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1285 + # source://prism//lib/prism/translation/parser/compiler.rb#1306 def visit_match_required_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1295 + # source://prism//lib/prism/translation/parser/compiler.rb#1316 def visit_match_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1306 + # source://prism//lib/prism/translation/parser/compiler.rb#1327 def visit_missing_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1312 + # source://prism//lib/prism/translation/parser/compiler.rb#1333 def visit_module_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1323 + # source://prism//lib/prism/translation/parser/compiler.rb#1344 def visit_multi_target_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1333 + # source://prism//lib/prism/translation/parser/compiler.rb#1354 def visit_multi_write_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1356 + # source://prism//lib/prism/translation/parser/compiler.rb#1377 def visit_next_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1368 + # source://prism//lib/prism/translation/parser/compiler.rb#1389 def visit_nil_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1374 + # source://prism//lib/prism/translation/parser/compiler.rb#1395 def visit_no_keywords_parameter_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1384 + # source://prism//lib/prism/translation/parser/compiler.rb#1405 def visit_numbered_parameters_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1390 + # source://prism//lib/prism/translation/parser/compiler.rb#1411 def visit_numbered_reference_read_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1396 + # source://prism//lib/prism/translation/parser/compiler.rb#1417 def visit_optional_keyword_parameter_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1402 + # source://prism//lib/prism/translation/parser/compiler.rb#1423 def visit_optional_parameter_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1408 + # source://prism//lib/prism/translation/parser/compiler.rb#1429 def visit_or_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1414 + # source://prism//lib/prism/translation/parser/compiler.rb#1435 def visit_parameters_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1453 + # source://prism//lib/prism/translation/parser/compiler.rb#1474 def visit_parentheses_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1463 + # source://prism//lib/prism/translation/parser/compiler.rb#1484 def visit_pinned_expression_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1470 + # source://prism//lib/prism/translation/parser/compiler.rb#1492 def visit_pinned_variable_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1475 + # source://prism//lib/prism/translation/parser/compiler.rb#1497 def visit_post_execution_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1485 + # source://prism//lib/prism/translation/parser/compiler.rb#1507 def visit_pre_execution_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1495 + # source://prism//lib/prism/translation/parser/compiler.rb#1517 def visit_program_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1501 + # source://prism//lib/prism/translation/parser/compiler.rb#1523 def visit_range_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1523 + # source://prism//lib/prism/translation/parser/compiler.rb#1545 def visit_rational_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1529 + # source://prism//lib/prism/translation/parser/compiler.rb#1551 def visit_redo_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1535 + # source://prism//lib/prism/translation/parser/compiler.rb#1557 def visit_regular_expression_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1559 + # source://prism//lib/prism/translation/parser/compiler.rb#1581 def visit_required_keyword_parameter_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1565 + # source://prism//lib/prism/translation/parser/compiler.rb#1587 def visit_required_parameter_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1571 + # source://prism//lib/prism/translation/parser/compiler.rb#1593 def visit_rescue_modifier_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1589 + # source://prism//lib/prism/translation/parser/compiler.rb#1611 def visit_rescue_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1598 + # source://prism//lib/prism/translation/parser/compiler.rb#1620 def visit_rest_parameter_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1604 + # source://prism//lib/prism/translation/parser/compiler.rb#1626 def visit_retry_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1613 + # source://prism//lib/prism/translation/parser/compiler.rb#1635 def visit_return_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1625 + # source://prism//lib/prism/translation/parser/compiler.rb#1647 def visit_self_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1630 + # source://prism//lib/prism/translation/parser/compiler.rb#1652 def visit_shareable_constant_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1636 + # source://prism//lib/prism/translation/parser/compiler.rb#1658 def visit_singleton_class_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1648 + # source://prism//lib/prism/translation/parser/compiler.rb#1670 def visit_source_encoding_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1654 + # source://prism//lib/prism/translation/parser/compiler.rb#1676 def visit_source_file_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1660 + # source://prism//lib/prism/translation/parser/compiler.rb#1682 def visit_source_line_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1672 + # source://prism//lib/prism/translation/parser/compiler.rb#1694 def visit_splat_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1685 + # source://prism//lib/prism/translation/parser/compiler.rb#1707 def visit_statements_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1691 + # source://prism//lib/prism/translation/parser/compiler.rb#1713 def visit_string_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1716 + # source://prism//lib/prism/translation/parser/compiler.rb#1738 def visit_super_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1739 + # source://prism//lib/prism/translation/parser/compiler.rb#1761 def visit_symbol_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1766 + # source://prism//lib/prism/translation/parser/compiler.rb#1788 def visit_true_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1772 + # source://prism//lib/prism/translation/parser/compiler.rb#1794 def visit_undef_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1781 + # source://prism//lib/prism/translation/parser/compiler.rb#1803 def visit_unless_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1811 + # source://prism//lib/prism/translation/parser/compiler.rb#1833 def visit_until_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1837 + # source://prism//lib/prism/translation/parser/compiler.rb#1859 def visit_when_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1855 + # source://prism//lib/prism/translation/parser/compiler.rb#1877 def visit_while_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1881 + # source://prism//lib/prism/translation/parser/compiler.rb#1903 def visit_x_string_node(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1907 + # source://prism//lib/prism/translation/parser/compiler.rb#1929 def visit_yield_node(node); end private - # source://prism//lib/prism/translation/parser/compiler.rb#1921 + # source://prism//lib/prism/translation/parser/compiler.rb#1943 def copy_compiler(forwarding: T.unsafe(nil), in_destructure: T.unsafe(nil), in_pattern: T.unsafe(nil)); end - # source://prism//lib/prism/translation/parser/compiler.rb#1928 + # source://prism//lib/prism/translation/parser/compiler.rb#1950 def find_forwarding(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1941 + # source://prism//lib/prism/translation/parser/compiler.rb#1963 def multi_target_elements(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#1953 + # source://prism//lib/prism/translation/parser/compiler.rb#1975 def numeric_negate(message_loc, receiver); end - # source://prism//lib/prism/translation/parser/compiler.rb#1967 + # source://prism//lib/prism/translation/parser/compiler.rb#1989 def procarg0?(parameters); end - # source://prism//lib/prism/translation/parser/compiler.rb#1984 + # source://prism//lib/prism/translation/parser/compiler.rb#2006 def srange(location); end - # source://prism//lib/prism/translation/parser/compiler.rb#1999 + # source://prism//lib/prism/translation/parser/compiler.rb#2021 def srange_find(start_offset, end_offset, character); end - # source://prism//lib/prism/translation/parser/compiler.rb#1989 + # source://prism//lib/prism/translation/parser/compiler.rb#2011 def srange_offsets(start_offset, end_offset); end - # source://prism//lib/prism/translation/parser/compiler.rb#2116 + # source://prism//lib/prism/translation/parser/compiler.rb#2138 def string_nodes_from_interpolation(node, opening); end - # source://prism//lib/prism/translation/parser/compiler.rb#2128 + # source://prism//lib/prism/translation/parser/compiler.rb#2150 def string_nodes_from_line_continuations(unescaped, escaped, start_offset, opening); end - # source://prism//lib/prism/translation/parser/compiler.rb#2007 + # source://prism//lib/prism/translation/parser/compiler.rb#2029 def token(location); end - # source://prism//lib/prism/translation/parser/compiler.rb#2012 + # source://prism//lib/prism/translation/parser/compiler.rb#2034 def visit_block(call, block); end - # source://prism//lib/prism/translation/parser/compiler.rb#2047 + # source://prism//lib/prism/translation/parser/compiler.rb#2069 def visit_heredoc(node); end - # source://prism//lib/prism/translation/parser/compiler.rb#2093 + # source://prism//lib/prism/translation/parser/compiler.rb#2115 def visit_numeric(node, value); end - # source://prism//lib/prism/translation/parser/compiler.rb#2105 + # source://prism//lib/prism/translation/parser/compiler.rb#2127 def within_pattern; end end -# source://prism//lib/prism/translation/parser/compiler.rb#10 +# source://prism//lib/prism/translation/parser/compiler.rb#11 class Prism::Translation::Parser::Compiler::CompilationError < ::StandardError; end -# source://prism//lib/prism/translation/parser/compiler.rb#1981 +# source://prism//lib/prism/translation/parser/compiler.rb#2003 Prism::Translation::Parser::Compiler::Range = Parser::Source::Range -# source://prism//lib/prism/translation/parser.rb#17 +# source://prism//lib/prism/translation/parser.rb#30 Prism::Translation::Parser::Diagnostic = Parser::Diagnostic -# source://prism//lib/prism/translation/parser/lexer.rb#11 +# source://prism//lib/prism/translation/parser/lexer.rb#13 class Prism::Translation::Parser::Lexer - # source://prism//lib/prism/translation/parser/lexer.rb#229 + # source://prism//lib/prism/translation/parser/lexer.rb#231 def initialize(source_buffer, lexed, offset_cache); end - # source://prism//lib/prism/translation/parser/lexer.rb#222 + # source://prism//lib/prism/translation/parser/lexer.rb#224 def lexed; end - # source://prism//lib/prism/translation/parser/lexer.rb#225 + # source://prism//lib/prism/translation/parser/lexer.rb#227 def offset_cache; end - # source://prism//lib/prism/translation/parser/lexer.rb#218 + # source://prism//lib/prism/translation/parser/lexer.rb#220 def source_buffer; end - # source://prism//lib/prism/translation/parser/lexer.rb#239 + # source://prism//lib/prism/translation/parser/lexer.rb#241 def to_a; end private - # source://prism//lib/prism/translation/parser/lexer.rb#585 + # source://prism//lib/prism/translation/parser/lexer.rb#593 def calculate_heredoc_whitespace(heredoc_token_index); end - # source://prism//lib/prism/translation/parser/lexer.rb#727 + # source://prism//lib/prism/translation/parser/lexer.rb#735 def escape_build(value, control, meta); end - # source://prism//lib/prism/translation/parser/lexer.rb#735 + # source://prism//lib/prism/translation/parser/lexer.rb#743 def escape_read(result, scanner, control, meta); end - # source://prism//lib/prism/translation/parser/lexer.rb#796 + # source://prism//lib/prism/translation/parser/lexer.rb#804 def interpolation?(quote); end - # source://prism//lib/prism/translation/parser/lexer.rb#556 + # source://prism//lib/prism/translation/parser/lexer.rb#564 def parse_complex(value); end - # source://prism//lib/prism/translation/parser/lexer.rb#549 + # source://prism//lib/prism/translation/parser/lexer.rb#557 def parse_float(value); end - # source://prism//lib/prism/translation/parser/lexer.rb#542 + # source://prism//lib/prism/translation/parser/lexer.rb#550 def parse_integer(value); end - # source://prism//lib/prism/translation/parser/lexer.rb#571 + # source://prism//lib/prism/translation/parser/lexer.rb#579 def parse_rational(value); end - # source://prism//lib/prism/translation/parser/lexer.rb#806 + # source://prism//lib/prism/translation/parser/lexer.rb#814 def percent_array?(quote); end - # source://prism//lib/prism/translation/parser/lexer.rb#784 + # source://prism//lib/prism/translation/parser/lexer.rb#792 def percent_array_leading_whitespace(string); end - # source://prism//lib/prism/translation/parser/lexer.rb#776 + # source://prism//lib/prism/translation/parser/lexer.rb#784 def percent_array_unescape(string); end - # source://prism//lib/prism/translation/parser/lexer.rb#537 + # source://prism//lib/prism/translation/parser/lexer.rb#545 def range(start_offset, end_offset); end - # source://prism//lib/prism/translation/parser/lexer.rb#801 + # source://prism//lib/prism/translation/parser/lexer.rb#809 def regexp?(quote); end - # source://prism//lib/prism/translation/parser/lexer.rb#710 + # source://prism//lib/prism/translation/parser/lexer.rb#718 def simplify_string?(value, quote); end - # source://prism//lib/prism/translation/parser/lexer.rb#632 + # source://prism//lib/prism/translation/parser/lexer.rb#640 def trim_heredoc_whitespace(string, heredoc); end - # source://prism//lib/prism/translation/parser/lexer.rb#667 + # source://prism//lib/prism/translation/parser/lexer.rb#675 def unescape_string(string, quote); end end -# source://prism//lib/prism/translation/parser/lexer.rb#209 +# source://prism//lib/prism/translation/parser/lexer.rb#211 Prism::Translation::Parser::Lexer::COMMENT_CONTINUATION_TYPES = T.let(T.unsafe(nil), Set) -# source://prism//lib/prism/translation/parser/lexer.rb#658 +# source://prism//lib/prism/translation/parser/lexer.rb#666 Prism::Translation::Parser::Lexer::DELIMITER_SYMETRY = T.let(T.unsafe(nil), Hash) -# source://prism//lib/prism/translation/parser/lexer.rb#649 +# source://prism//lib/prism/translation/parser/lexer.rb#657 Prism::Translation::Parser::Lexer::ESCAPES = T.let(T.unsafe(nil), Hash) -# source://prism//lib/prism/translation/parser/lexer.rb#191 +# source://prism//lib/prism/translation/parser/lexer.rb#193 Prism::Translation::Parser::Lexer::EXPR_BEG = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/translation/parser/lexer.rb#192 +# source://prism//lib/prism/translation/parser/lexer.rb#194 Prism::Translation::Parser::Lexer::EXPR_LABEL = T.let(T.unsafe(nil), Integer) -# source://prism//lib/prism/translation/parser/lexer.rb#213 +# source://prism//lib/prism/translation/parser/lexer.rb#215 class Prism::Translation::Parser::Lexer::HeredocData < ::Struct def common_whitespace; end def common_whitespace=(_); end @@ -22459,2485 +22467,2488 @@ class Prism::Translation::Parser::Lexer::HeredocData < ::Struct end end -# source://prism//lib/prism/translation/parser/lexer.rb#198 +# source://prism//lib/prism/translation/parser/lexer.rb#200 Prism::Translation::Parser::Lexer::LAMBDA_TOKEN_TYPES = T.let(T.unsafe(nil), Set) -# source://prism//lib/prism/translation/parser/lexer.rb#202 +# source://prism//lib/prism/translation/parser/lexer.rb#204 Prism::Translation::Parser::Lexer::LPAREN_CONVERSION_TOKEN_TYPES = T.let(T.unsafe(nil), Set) -# source://prism//lib/prism/translation/parser/lexer.rb#663 +# source://prism//lib/prism/translation/parser/lexer.rb#671 Prism::Translation::Parser::Lexer::REGEXP_META_CHARACTERS = T.let(T.unsafe(nil), Array) -# source://prism//lib/prism/translation/parser/lexer.rb#235 +# source://prism//lib/prism/translation/parser/lexer.rb#237 Prism::Translation::Parser::Lexer::Range = Parser::Source::Range -# source://prism//lib/prism/translation/parser/lexer.rb#17 +# source://prism//lib/prism/translation/parser/lexer.rb#19 Prism::Translation::Parser::Lexer::TYPES = T.let(T.unsafe(nil), Hash) -# source://prism//lib/prism/translation/parser/lexer.rb#13 +# source://prism//lib/prism/translation/parser/lexer.rb#15 Prism::Translation::Parser::Lexer::TYPES_ALWAYS_SKIP = T.let(T.unsafe(nil), Set) -# source://prism//lib/prism/translation/parser.rb#23 +# source://prism//lib/prism/translation/parser.rb#36 class Prism::Translation::Parser::PrismDiagnostic < ::Parser::Diagnostic - # source://prism//lib/prism/translation/parser.rb#28 + # source://prism//lib/prism/translation/parser.rb#41 def initialize(message, level, reason, location); end - # source://prism//lib/prism/translation/parser.rb#25 + # source://prism//lib/prism/translation/parser.rb#38 def message; end end -# source://prism//lib/prism/translation/parser.rb#34 +# source://prism//lib/prism/translation/parser.rb#47 Prism::Translation::Parser::Racc_debug_parser = T.let(T.unsafe(nil), FalseClass) -# source://prism//lib/prism/translation/ripper.rb#43 +# source://prism//lib/prism/translation/parser_current.rb#21 +Prism::Translation::ParserCurrent = Prism::Translation::Parser34 + +# source://prism//lib/prism/translation/ripper.rb#44 class Prism::Translation::Ripper < ::Prism::Compiler - # source://prism//lib/prism/translation/ripper.rb#444 + # source://prism//lib/prism/translation/ripper.rb#445 def initialize(source, filename = T.unsafe(nil), lineno = T.unsafe(nil)); end - # source://prism//lib/prism/translation/ripper.rb#441 + # source://prism//lib/prism/translation/ripper.rb#442 def column; end - # source://prism//lib/prism/translation/ripper.rb#457 + # source://prism//lib/prism/translation/ripper.rb#458 sig { returns(T::Boolean) } def error?; end - # source://prism//lib/prism/translation/ripper.rb#435 + # source://prism//lib/prism/translation/ripper.rb#436 def filename; end - # source://prism//lib/prism/translation/ripper.rb#438 + # source://prism//lib/prism/translation/ripper.rb#439 def lineno; end - # source://prism//lib/prism/translation/ripper.rb#462 + # source://prism//lib/prism/translation/ripper.rb#463 sig { returns(T.untyped) } def parse; end - # source://prism//lib/prism/translation/ripper.rb#432 + # source://prism//lib/prism/translation/ripper.rb#433 def source; end - # source://prism//lib/prism/translation/ripper.rb#561 + # source://prism//lib/prism/translation/ripper.rb#562 def visit_alias_global_variable_node(node); end - # source://prism//lib/prism/translation/ripper.rb#551 + # source://prism//lib/prism/translation/ripper.rb#552 def visit_alias_method_node(node); end - # source://prism//lib/prism/translation/ripper.rb#585 + # source://prism//lib/prism/translation/ripper.rb#586 def visit_alternation_pattern_node(node); end - # source://prism//lib/prism/translation/ripper.rb#605 + # source://prism//lib/prism/translation/ripper.rb#606 def visit_and_node(node); end - # source://prism//lib/prism/translation/ripper.rb#796 + # source://prism//lib/prism/translation/ripper.rb#797 def visit_arguments_node(node); end - # source://prism//lib/prism/translation/ripper.rb#615 + # source://prism//lib/prism/translation/ripper.rb#616 def visit_array_node(node); end - # source://prism//lib/prism/translation/ripper.rb#775 + # source://prism//lib/prism/translation/ripper.rb#776 def visit_array_pattern_node(node); end - # source://prism//lib/prism/translation/ripper.rb#803 + # source://prism//lib/prism/translation/ripper.rb#804 def visit_assoc_node(node); end - # source://prism//lib/prism/translation/ripper.rb#816 + # source://prism//lib/prism/translation/ripper.rb#817 def visit_assoc_splat_node(node); end - # source://prism//lib/prism/translation/ripper.rb#825 + # source://prism//lib/prism/translation/ripper.rb#826 def visit_back_reference_read_node(node); end - # source://prism//lib/prism/translation/ripper.rb#832 + # source://prism//lib/prism/translation/ripper.rb#833 def visit_begin_node(node); end - # source://prism//lib/prism/translation/ripper.rb#896 + # source://prism//lib/prism/translation/ripper.rb#897 def visit_block_argument_node(node); end - # source://prism//lib/prism/translation/ripper.rb#902 + # source://prism//lib/prism/translation/ripper.rb#903 def visit_block_local_variable_node(node); end - # source://prism//lib/prism/translation/ripper.rb#908 + # source://prism//lib/prism/translation/ripper.rb#909 def visit_block_node(node); end - # source://prism//lib/prism/translation/ripper.rb#944 + # source://prism//lib/prism/translation/ripper.rb#945 def visit_block_parameter_node(node); end - # source://prism//lib/prism/translation/ripper.rb#958 + # source://prism//lib/prism/translation/ripper.rb#959 def visit_block_parameters_node(node); end - # source://prism//lib/prism/translation/ripper.rb#982 + # source://prism//lib/prism/translation/ripper.rb#983 def visit_break_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1204 + # source://prism//lib/prism/translation/ripper.rb#1205 def visit_call_and_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1002 + # source://prism//lib/prism/translation/ripper.rb#1003 def visit_call_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1182 + # source://prism//lib/prism/translation/ripper.rb#1183 def visit_call_operator_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1226 + # source://prism//lib/prism/translation/ripper.rb#1227 def visit_call_or_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1248 + # source://prism//lib/prism/translation/ripper.rb#1249 def visit_call_target_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1273 + # source://prism//lib/prism/translation/ripper.rb#1274 def visit_capture_pattern_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1296 + # source://prism//lib/prism/translation/ripper.rb#1297 def visit_case_match_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1283 + # source://prism//lib/prism/translation/ripper.rb#1284 def visit_case_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1309 + # source://prism//lib/prism/translation/ripper.rb#1310 def visit_class_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1362 + # source://prism//lib/prism/translation/ripper.rb#1363 def visit_class_variable_and_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1348 + # source://prism//lib/prism/translation/ripper.rb#1349 def visit_class_variable_operator_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1376 + # source://prism//lib/prism/translation/ripper.rb#1377 def visit_class_variable_or_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1327 + # source://prism//lib/prism/translation/ripper.rb#1328 def visit_class_variable_read_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1390 + # source://prism//lib/prism/translation/ripper.rb#1391 def visit_class_variable_target_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1337 + # source://prism//lib/prism/translation/ripper.rb#1338 def visit_class_variable_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1432 + # source://prism//lib/prism/translation/ripper.rb#1433 def visit_constant_and_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1418 + # source://prism//lib/prism/translation/ripper.rb#1419 def visit_constant_operator_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1446 + # source://prism//lib/prism/translation/ripper.rb#1447 def visit_constant_or_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1533 + # source://prism//lib/prism/translation/ripper.rb#1534 def visit_constant_path_and_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1467 + # source://prism//lib/prism/translation/ripper.rb#1468 def visit_constant_path_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1519 + # source://prism//lib/prism/translation/ripper.rb#1520 def visit_constant_path_operator_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1547 + # source://prism//lib/prism/translation/ripper.rb#1548 def visit_constant_path_or_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1561 + # source://prism//lib/prism/translation/ripper.rb#1562 def visit_constant_path_target_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1490 + # source://prism//lib/prism/translation/ripper.rb#1491 def visit_constant_path_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1397 + # source://prism//lib/prism/translation/ripper.rb#1398 def visit_constant_read_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1460 + # source://prism//lib/prism/translation/ripper.rb#1461 def visit_constant_target_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1407 + # source://prism//lib/prism/translation/ripper.rb#1408 def visit_constant_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1570 + # source://prism//lib/prism/translation/ripper.rb#1571 def visit_def_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1617 + # source://prism//lib/prism/translation/ripper.rb#1618 def visit_defined_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1624 + # source://prism//lib/prism/translation/ripper.rb#1640 def visit_else_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1640 + # source://prism//lib/prism/translation/ripper.rb#1656 def visit_embedded_statements_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1661 + # source://prism//lib/prism/translation/ripper.rb#1677 def visit_embedded_variable_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1672 + # source://prism//lib/prism/translation/ripper.rb#1688 def visit_ensure_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1690 + # source://prism//lib/prism/translation/ripper.rb#1706 def visit_false_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1697 + # source://prism//lib/prism/translation/ripper.rb#1713 def visit_find_pattern_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1722 + # source://prism//lib/prism/translation/ripper.rb#1738 def visit_flip_flop_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1736 + # source://prism//lib/prism/translation/ripper.rb#1752 def visit_float_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1742 + # source://prism//lib/prism/translation/ripper.rb#1758 def visit_for_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1759 + # source://prism//lib/prism/translation/ripper.rb#1775 def visit_forwarding_arguments_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1766 + # source://prism//lib/prism/translation/ripper.rb#1782 def visit_forwarding_parameter_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1776 + # source://prism//lib/prism/translation/ripper.rb#1792 def visit_forwarding_super_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1825 + # source://prism//lib/prism/translation/ripper.rb#1841 def visit_global_variable_and_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1811 + # source://prism//lib/prism/translation/ripper.rb#1827 def visit_global_variable_operator_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1839 + # source://prism//lib/prism/translation/ripper.rb#1855 def visit_global_variable_or_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1790 + # source://prism//lib/prism/translation/ripper.rb#1806 def visit_global_variable_read_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1853 + # source://prism//lib/prism/translation/ripper.rb#1869 def visit_global_variable_target_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1800 + # source://prism//lib/prism/translation/ripper.rb#1816 def visit_global_variable_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1860 + # source://prism//lib/prism/translation/ripper.rb#1876 def visit_hash_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1875 + # source://prism//lib/prism/translation/ripper.rb#1891 def visit_hash_pattern_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1917 + # source://prism//lib/prism/translation/ripper.rb#1933 def visit_if_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1953 + # source://prism//lib/prism/translation/ripper.rb#1969 def visit_imaginary_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1959 + # source://prism//lib/prism/translation/ripper.rb#1975 def visit_implicit_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1964 + # source://prism//lib/prism/translation/ripper.rb#1980 def visit_implicit_rest_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1971 + # source://prism//lib/prism/translation/ripper.rb#1987 def visit_in_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2006 + # source://prism//lib/prism/translation/ripper.rb#2022 def visit_index_and_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#1989 + # source://prism//lib/prism/translation/ripper.rb#2005 def visit_index_operator_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2023 + # source://prism//lib/prism/translation/ripper.rb#2039 def visit_index_or_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2040 + # source://prism//lib/prism/translation/ripper.rb#2056 def visit_index_target_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2082 + # source://prism//lib/prism/translation/ripper.rb#2098 def visit_instance_variable_and_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2068 + # source://prism//lib/prism/translation/ripper.rb#2084 def visit_instance_variable_operator_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2096 + # source://prism//lib/prism/translation/ripper.rb#2112 def visit_instance_variable_or_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2050 + # source://prism//lib/prism/translation/ripper.rb#2066 def visit_instance_variable_read_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2110 + # source://prism//lib/prism/translation/ripper.rb#2126 def visit_instance_variable_target_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2057 + # source://prism//lib/prism/translation/ripper.rb#2073 def visit_instance_variable_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2117 + # source://prism//lib/prism/translation/ripper.rb#2133 def visit_integer_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2123 + # source://prism//lib/prism/translation/ripper.rb#2139 def visit_interpolated_match_last_line_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2142 + # source://prism//lib/prism/translation/ripper.rb#2158 def visit_interpolated_regular_expression_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2161 + # source://prism//lib/prism/translation/ripper.rb#2177 def visit_interpolated_string_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2189 + # source://prism//lib/prism/translation/ripper.rb#2205 def visit_interpolated_symbol_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2202 + # source://prism//lib/prism/translation/ripper.rb#2218 def visit_interpolated_x_string_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2232 + # source://prism//lib/prism/translation/ripper.rb#2248 def visit_it_local_variable_read_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2239 + # source://prism//lib/prism/translation/ripper.rb#2255 def visit_it_parameters_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2244 + # source://prism//lib/prism/translation/ripper.rb#2260 def visit_keyword_hash_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2256 + # source://prism//lib/prism/translation/ripper.rb#2272 def visit_keyword_rest_parameter_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2270 + # source://prism//lib/prism/translation/ripper.rb#2286 def visit_lambda_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2362 + # source://prism//lib/prism/translation/ripper.rb#2378 def visit_local_variable_and_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2348 + # source://prism//lib/prism/translation/ripper.rb#2364 def visit_local_variable_operator_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2376 + # source://prism//lib/prism/translation/ripper.rb#2392 def visit_local_variable_or_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2330 + # source://prism//lib/prism/translation/ripper.rb#2346 def visit_local_variable_read_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2390 + # source://prism//lib/prism/translation/ripper.rb#2406 def visit_local_variable_target_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2337 + # source://prism//lib/prism/translation/ripper.rb#2353 def visit_local_variable_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2397 + # source://prism//lib/prism/translation/ripper.rb#2413 def visit_match_last_line_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2412 + # source://prism//lib/prism/translation/ripper.rb#2428 def visit_match_predicate_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2421 + # source://prism//lib/prism/translation/ripper.rb#2437 def visit_match_required_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2430 + # source://prism//lib/prism/translation/ripper.rb#2446 def visit_match_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2436 + # source://prism//lib/prism/translation/ripper.rb#2452 def visit_missing_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2442 + # source://prism//lib/prism/translation/ripper.rb#2458 def visit_module_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2459 + # source://prism//lib/prism/translation/ripper.rb#2475 def visit_multi_target_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2513 + # source://prism//lib/prism/translation/ripper.rb#2529 def visit_multi_write_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2533 + # source://prism//lib/prism/translation/ripper.rb#2549 def visit_next_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2547 + # source://prism//lib/prism/translation/ripper.rb#2563 def visit_nil_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2554 + # source://prism//lib/prism/translation/ripper.rb#2570 def visit_no_keywords_parameter_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2563 + # source://prism//lib/prism/translation/ripper.rb#2579 def visit_numbered_parameters_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2568 + # source://prism//lib/prism/translation/ripper.rb#2584 def visit_numbered_reference_read_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2575 + # source://prism//lib/prism/translation/ripper.rb#2591 def visit_optional_keyword_parameter_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2585 + # source://prism//lib/prism/translation/ripper.rb#2601 def visit_optional_parameter_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2595 + # source://prism//lib/prism/translation/ripper.rb#2611 def visit_or_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2605 + # source://prism//lib/prism/translation/ripper.rb#2621 def visit_parameters_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2632 + # source://prism//lib/prism/translation/ripper.rb#2648 def visit_parentheses_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2646 + # source://prism//lib/prism/translation/ripper.rb#2662 def visit_pinned_expression_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2655 + # source://prism//lib/prism/translation/ripper.rb#2671 def visit_pinned_variable_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2661 + # source://prism//lib/prism/translation/ripper.rb#2677 def visit_post_execution_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2676 + # source://prism//lib/prism/translation/ripper.rb#2692 def visit_pre_execution_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2690 + # source://prism//lib/prism/translation/ripper.rb#2706 def visit_program_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2701 + # source://prism//lib/prism/translation/ripper.rb#2717 def visit_range_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2715 + # source://prism//lib/prism/translation/ripper.rb#2731 def visit_rational_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2721 + # source://prism//lib/prism/translation/ripper.rb#2737 def visit_redo_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2728 + # source://prism//lib/prism/translation/ripper.rb#2744 def visit_regular_expression_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2750 + # source://prism//lib/prism/translation/ripper.rb#2766 def visit_required_keyword_parameter_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2757 + # source://prism//lib/prism/translation/ripper.rb#2773 def visit_required_parameter_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2764 + # source://prism//lib/prism/translation/ripper.rb#2780 def visit_rescue_modifier_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2774 + # source://prism//lib/prism/translation/ripper.rb#2790 def visit_rescue_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2832 + # source://prism//lib/prism/translation/ripper.rb#2848 def visit_rest_parameter_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2844 + # source://prism//lib/prism/translation/ripper.rb#2860 def visit_retry_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2854 + # source://prism//lib/prism/translation/ripper.rb#2870 def visit_return_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2868 + # source://prism//lib/prism/translation/ripper.rb#2884 def visit_self_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2874 + # source://prism//lib/prism/translation/ripper.rb#2890 def visit_shareable_constant_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2880 + # source://prism//lib/prism/translation/ripper.rb#2896 def visit_singleton_class_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2890 + # source://prism//lib/prism/translation/ripper.rb#2906 def visit_source_encoding_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2897 + # source://prism//lib/prism/translation/ripper.rb#2913 def visit_source_file_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2904 + # source://prism//lib/prism/translation/ripper.rb#2920 def visit_source_line_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2917 + # source://prism//lib/prism/translation/ripper.rb#2933 def visit_splat_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2922 + # source://prism//lib/prism/translation/ripper.rb#2938 def visit_statements_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2939 + # source://prism//lib/prism/translation/ripper.rb#2955 def visit_string_node(node); end - # source://prism//lib/prism/translation/ripper.rb#3071 + # source://prism//lib/prism/translation/ripper.rb#3087 def visit_super_node(node); end - # source://prism//lib/prism/translation/ripper.rb#3092 + # source://prism//lib/prism/translation/ripper.rb#3108 def visit_symbol_node(node); end - # source://prism//lib/prism/translation/ripper.rb#3116 + # source://prism//lib/prism/translation/ripper.rb#3132 def visit_true_node(node); end - # source://prism//lib/prism/translation/ripper.rb#3123 + # source://prism//lib/prism/translation/ripper.rb#3139 def visit_undef_node(node); end - # source://prism//lib/prism/translation/ripper.rb#3135 + # source://prism//lib/prism/translation/ripper.rb#3151 def visit_unless_node(node); end - # source://prism//lib/prism/translation/ripper.rb#3163 + # source://prism//lib/prism/translation/ripper.rb#3179 def visit_until_node(node); end - # source://prism//lib/prism/translation/ripper.rb#3187 + # source://prism//lib/prism/translation/ripper.rb#3203 def visit_when_node(node); end - # source://prism//lib/prism/translation/ripper.rb#3208 + # source://prism//lib/prism/translation/ripper.rb#3224 def visit_while_node(node); end - # source://prism//lib/prism/translation/ripper.rb#3232 + # source://prism//lib/prism/translation/ripper.rb#3248 def visit_x_string_node(node); end - # source://prism//lib/prism/translation/ripper.rb#3255 + # source://prism//lib/prism/translation/ripper.rb#3271 def visit_yield_node(node); end private - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def _dispatch_0; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def _dispatch_1(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def _dispatch_2(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def _dispatch_3(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3399 + # source://prism//lib/prism/translation/ripper.rb#3415 def _dispatch_4(_, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3400 + # source://prism//lib/prism/translation/ripper.rb#3416 def _dispatch_5(_, _, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3401 + # source://prism//lib/prism/translation/ripper.rb#3417 def _dispatch_7(_, _, _, _, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3385 + # source://prism//lib/prism/translation/ripper.rb#3401 def bounds(location); end - # source://prism//lib/prism/translation/ripper.rb#1173 + # source://prism//lib/prism/translation/ripper.rb#1174 def command?(node); end - # source://prism//lib/prism/translation/ripper.rb#3423 + # source://prism//lib/prism/translation/ripper.rb#3439 def compile_error(msg); end - # source://prism//lib/prism/translation/ripper.rb#3438 + # source://prism//lib/prism/translation/ripper.rb#3454 def dedent_string(string, width); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_BEGIN(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_CHAR(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_END(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on___end__(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_alias(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_alias_error(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_aref(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_aref_field(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_arg_ambiguous(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_arg_paren(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_args_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_args_add_block(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_args_add_star(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_args_forward; end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_args_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_array(_); end - # source://prism//lib/prism/translation/ripper.rb#3399 + # source://prism//lib/prism/translation/ripper.rb#3415 def on_aryptn(_, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_assign(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_assign_error(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_assoc_new(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_assoc_splat(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_assoclist_from_args(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_backref(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_backtick(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_bare_assoc_hash(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_begin(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_binary(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_block_var(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_blockarg(_); end - # source://prism//lib/prism/translation/ripper.rb#3399 + # source://prism//lib/prism/translation/ripper.rb#3415 def on_bodystmt(_, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_brace_block(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_break(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_call(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_case(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_class(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_class_name_error(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_comma(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_command(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3399 + # source://prism//lib/prism/translation/ripper.rb#3415 def on_command_call(_, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_comment(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_const(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_const_path_field(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_const_path_ref(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_const_ref(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_cvar(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_def(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_defined(_); end - # source://prism//lib/prism/translation/ripper.rb#3400 + # source://prism//lib/prism/translation/ripper.rb#3416 def on_defs(_, _, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_do_block(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_dot2(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_dot3(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_dyna_symbol(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_else(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_elsif(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_embdoc(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_embdoc_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_embdoc_end(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_embexpr_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_embexpr_end(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_embvar(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_ensure(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_excessed_comma; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_fcall(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_field(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_float(_); end - # source://prism//lib/prism/translation/ripper.rb#3399 + # source://prism//lib/prism/translation/ripper.rb#3415 def on_fndptn(_, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_for(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_gvar(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_hash(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_heredoc_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_heredoc_dedent(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_heredoc_end(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_hshptn(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_ident(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_if(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_if_mod(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_ifop(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_ignored_nl(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_ignored_sp(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_imaginary(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_in(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_int(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_ivar(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_kw(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_kwrest_param(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_label(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_label_end(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_lambda(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_lbrace(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_lbracket(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_lparen(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_magic_comment(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_massign(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_method_add_arg(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_method_add_block(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_mlhs_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_mlhs_add_post(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_mlhs_add_star(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_mlhs_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_mlhs_paren(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_module(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_mrhs_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_mrhs_add_star(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_mrhs_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_mrhs_new_from_args(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_next(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_nl(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_nokw_param(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_op(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_opassign(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_operator_ambiguous(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_param_error(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3401 + # source://prism//lib/prism/translation/ripper.rb#3417 def on_params(_, _, _, _, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_paren(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_parse_error(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_period(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_program(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_qsymbols_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_qsymbols_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_qsymbols_new; end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_qwords_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_qwords_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_qwords_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_rational(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_rbrace(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_rbracket(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_redo; end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_regexp_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_regexp_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_regexp_end(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_regexp_literal(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_regexp_new; end - # source://prism//lib/prism/translation/ripper.rb#3399 + # source://prism//lib/prism/translation/ripper.rb#3415 def on_rescue(_, _, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_rescue_mod(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_rest_param(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_retry; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_return(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_return0; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_rparen(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_sclass(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_semicolon(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_sp(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_stmts_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_stmts_new; end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_string_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_string_concat(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_string_content; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_string_dvar(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_string_embexpr(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_string_literal(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_super(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_symbeg(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_symbol(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_symbol_literal(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_symbols_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_symbols_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_symbols_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_tlambda(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_tlambeg(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_top_const_field(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_top_const_ref(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_tstring_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_tstring_content(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_tstring_end(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_unary(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_undef(_); end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_unless(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_unless_mod(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_until(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_until_mod(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_var_alias(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_var_field(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_var_ref(_); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_vcall(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_void_stmt; end - # source://prism//lib/prism/translation/ripper.rb#3398 + # source://prism//lib/prism/translation/ripper.rb#3414 def on_when(_, _, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_while(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_while_mod(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_word_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_word_new; end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_words_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_words_beg(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_words_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_words_sep(_); end - # source://prism//lib/prism/translation/ripper.rb#3397 + # source://prism//lib/prism/translation/ripper.rb#3413 def on_xstring_add(_, _); end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_xstring_literal(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_xstring_new; end - # source://prism//lib/prism/translation/ripper.rb#3396 + # source://prism//lib/prism/translation/ripper.rb#3412 def on_yield(_); end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_yield0; end - # source://prism//lib/prism/translation/ripper.rb#3395 + # source://prism//lib/prism/translation/ripper.rb#3411 def on_zsuper; end - # source://prism//lib/prism/translation/ripper.rb#3281 + # source://prism//lib/prism/translation/ripper.rb#3297 def result; end - # source://prism//lib/prism/translation/ripper.rb#3290 + # source://prism//lib/prism/translation/ripper.rb#3306 def trailing_comma?(left, right); end - # source://prism//lib/prism/translation/ripper.rb#570 + # source://prism//lib/prism/translation/ripper.rb#571 def visit_alias_global_variable_node_value(node); end - # source://prism//lib/prism/translation/ripper.rb#756 + # source://prism//lib/prism/translation/ripper.rb#757 def visit_arguments(elements); end - # source://prism//lib/prism/translation/ripper.rb#840 + # source://prism//lib/prism/translation/ripper.rb#841 def visit_begin_node_clauses(location, node, allow_newline); end - # source://prism//lib/prism/translation/ripper.rb#875 + # source://prism//lib/prism/translation/ripper.rb#876 def visit_body_node(location, node, allow_newline = T.unsafe(nil)); end - # source://prism//lib/prism/translation/ripper.rb#1146 + # source://prism//lib/prism/translation/ripper.rb#1147 def visit_call_node_arguments(arguments_node, block_node, trailing_comma); end - # source://prism//lib/prism/translation/ripper.rb#1499 + # source://prism//lib/prism/translation/ripper.rb#1500 def visit_constant_path_write_node_target(node); end - # source://prism//lib/prism/translation/ripper.rb#2619 + # source://prism//lib/prism/translation/ripper.rb#2635 def visit_destructured_parameter_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2990 + # source://prism//lib/prism/translation/ripper.rb#3006 def visit_heredoc_node(parts, base); end - # source://prism//lib/prism/translation/ripper.rb#2965 + # source://prism//lib/prism/translation/ripper.rb#2981 def visit_heredoc_node_whitespace(parts); end - # source://prism//lib/prism/translation/ripper.rb#3036 + # source://prism//lib/prism/translation/ripper.rb#3052 def visit_heredoc_string_node(node); end - # source://prism//lib/prism/translation/ripper.rb#3053 + # source://prism//lib/prism/translation/ripper.rb#3069 def visit_heredoc_x_string_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2472 + # source://prism//lib/prism/translation/ripper.rb#2488 def visit_multi_target_node_targets(lefts, rest, rights, skippable); end - # source://prism//lib/prism/translation/ripper.rb#3329 + # source://prism//lib/prism/translation/ripper.rb#3345 def visit_number_node(node); end - # source://prism//lib/prism/translation/ripper.rb#595 + # source://prism//lib/prism/translation/ripper.rb#596 def visit_pattern_node(node); end - # source://prism//lib/prism/translation/ripper.rb#2931 + # source://prism//lib/prism/translation/ripper.rb#2947 def visit_statements_node_body(body); end - # source://prism//lib/prism/translation/ripper.rb#2221 + # source://prism//lib/prism/translation/ripper.rb#2237 def visit_string_content(part); end - # source://prism//lib/prism/translation/ripper.rb#3302 + # source://prism//lib/prism/translation/ripper.rb#3318 def visit_token(token, allow_keywords = T.unsafe(nil)); end - # source://prism//lib/prism/translation/ripper.rb#745 + # source://prism//lib/prism/translation/ripper.rb#746 def visit_words_sep(opening_loc, previous, current); end - # source://prism//lib/prism/translation/ripper.rb#3347 + # source://prism//lib/prism/translation/ripper.rb#3363 def visit_write_value(node); end - # source://prism//lib/prism/translation/ripper.rb#3295 + # source://prism//lib/prism/translation/ripper.rb#3311 def void_stmt?(left, right, allow_newline); end - # source://prism//lib/prism/translation/ripper.rb#3414 + # source://prism//lib/prism/translation/ripper.rb#3430 def warn(fmt, *args); end - # source://prism//lib/prism/translation/ripper.rb#3419 + # source://prism//lib/prism/translation/ripper.rb#3435 def warning(fmt, *args); end class << self - # source://prism//lib/prism/translation/ripper.rb#72 + # source://prism//lib/prism/translation/ripper.rb#73 def lex(src, filename = T.unsafe(nil), lineno = T.unsafe(nil), raise_errors: T.unsafe(nil)); end - # source://prism//lib/prism/translation/ripper.rb#46 + # source://prism//lib/prism/translation/ripper.rb#47 def parse(src, filename = T.unsafe(nil), lineno = T.unsafe(nil)); end - # source://prism//lib/prism/translation/ripper.rb#381 + # source://prism//lib/prism/translation/ripper.rb#382 def sexp(src, filename = T.unsafe(nil), lineno = T.unsafe(nil), raise_errors: T.unsafe(nil)); end - # source://prism//lib/prism/translation/ripper.rb#416 + # source://prism//lib/prism/translation/ripper.rb#417 def sexp_raw(src, filename = T.unsafe(nil), lineno = T.unsafe(nil), raise_errors: T.unsafe(nil)); end end end -# source://prism//lib/prism/translation/ripper.rb#337 +# source://prism//lib/prism/translation/ripper.rb#338 Prism::Translation::Ripper::BINARY_OPERATORS = T.let(T.unsafe(nil), Array) -# source://prism//lib/prism/translation/ripper.rb#289 +# source://prism//lib/prism/translation/ripper.rb#290 Prism::Translation::Ripper::EVENTS = T.let(T.unsafe(nil), Array) -# source://prism//lib/prism/translation/ripper.rb#292 +# source://prism//lib/prism/translation/ripper.rb#293 Prism::Translation::Ripper::KEYWORDS = T.let(T.unsafe(nil), Array) -# source://prism//lib/prism/translation/ripper.rb#283 +# source://prism//lib/prism/translation/ripper.rb#284 Prism::Translation::Ripper::PARSER_EVENTS = T.let(T.unsafe(nil), Array) -# source://prism//lib/prism/translation/ripper.rb#84 +# source://prism//lib/prism/translation/ripper.rb#85 Prism::Translation::Ripper::PARSER_EVENT_TABLE = T.let(T.unsafe(nil), Hash) -# source://prism//lib/prism/translation/ripper.rb#286 +# source://prism//lib/prism/translation/ripper.rb#287 Prism::Translation::Ripper::SCANNER_EVENTS = T.let(T.unsafe(nil), Array) -# source://prism//lib/prism/translation/ripper.rb#227 +# source://prism//lib/prism/translation/ripper.rb#228 Prism::Translation::Ripper::SCANNER_EVENT_TABLE = T.let(T.unsafe(nil), Hash) -# source://prism//lib/prism/translation/ripper/sexp.rb#10 +# source://prism//lib/prism/translation/ripper/sexp.rb#11 class Prism::Translation::Ripper::SexpBuilder < ::Prism::Translation::Ripper - # source://prism//lib/prism/translation/ripper/sexp.rb#13 + # source://prism//lib/prism/translation/ripper/sexp.rb#14 def error; end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_BEGIN(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_CHAR(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_END(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on___end__(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_alias(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_alias_error(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_aref(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_aref_field(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_arg_ambiguous(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_arg_paren(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_args_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_args_add_block(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_args_add_star(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_args_forward(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_args_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_array(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_aryptn(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_assign(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_assign_error(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_assoc_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_assoc_splat(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_assoclist_from_args(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_backref(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_backtick(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_bare_assoc_hash(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_begin(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_binary(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_block_var(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_blockarg(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_bodystmt(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_brace_block(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_break(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_call(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_case(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_class(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_class_name_error(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_comma(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_command(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_command_call(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_comment(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_const(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_const_path_field(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_const_path_ref(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_const_ref(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_cvar(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_def(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_defined(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_defs(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_do_block(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_dot2(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_dot3(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_dyna_symbol(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_else(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_elsif(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_embdoc(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_embdoc_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_embdoc_end(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_embexpr_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_embexpr_end(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_embvar(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_ensure(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_excessed_comma(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_fcall(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_field(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_float(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_fndptn(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_for(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_gvar(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_hash(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_heredoc_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_heredoc_end(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_hshptn(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_ident(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_if(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_if_mod(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_ifop(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_ignored_nl(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_ignored_sp(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_imaginary(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_in(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_int(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_ivar(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_kw(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_kwrest_param(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_label(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_label_end(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_lambda(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_lbrace(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_lbracket(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_lparen(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_magic_comment(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_massign(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_method_add_arg(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_method_add_block(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mlhs_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mlhs_add_post(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mlhs_add_star(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mlhs_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mlhs_paren(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_module(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mrhs_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mrhs_add_star(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mrhs_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_mrhs_new_from_args(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_next(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_nl(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_nokw_param(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_op(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_opassign(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_operator_ambiguous(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_param_error(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_params(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_paren(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_period(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_program(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_qsymbols_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_qsymbols_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_qsymbols_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_qwords_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_qwords_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_qwords_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_rational(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_rbrace(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_rbracket(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_redo(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_regexp_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_regexp_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_regexp_end(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_regexp_literal(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_regexp_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_rescue(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_rescue_mod(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_rest_param(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_retry(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_return(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_return0(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_rparen(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_sclass(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_semicolon(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_sp(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_stmts_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_stmts_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_string_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_string_concat(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_string_content(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_string_dvar(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_string_embexpr(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_string_literal(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_super(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_symbeg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_symbol(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_symbol_literal(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_symbols_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_symbols_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_symbols_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_tlambda(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_tlambeg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_top_const_field(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_top_const_ref(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_tstring_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_tstring_content(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_tstring_end(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_unary(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_undef(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_unless(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_unless_mod(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_until(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_until_mod(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_var_alias(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_var_field(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_var_ref(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_vcall(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_void_stmt(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_when(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_while(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_while_mod(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_word_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_word_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_words_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_words_beg(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_words_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#55 + # source://prism//lib/prism/translation/ripper/sexp.rb#56 def on_words_sep(tok); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_xstring_add(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_xstring_literal(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_xstring_new(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_yield(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_yield0(*args); end - # source://prism//lib/prism/translation/ripper/sexp.rb#47 + # source://prism//lib/prism/translation/ripper/sexp.rb#48 def on_zsuper(*args); end private - # source://prism//lib/prism/translation/ripper/sexp.rb#61 + # source://prism//lib/prism/translation/ripper/sexp.rb#62 def compile_error(mesg); end - # source://prism//lib/prism/translation/ripper/sexp.rb#17 + # source://prism//lib/prism/translation/ripper/sexp.rb#18 def dedent_element(e, width); end - # source://prism//lib/prism/translation/ripper/sexp.rb#61 + # source://prism//lib/prism/translation/ripper/sexp.rb#62 def on_error(mesg); end - # source://prism//lib/prism/translation/ripper/sexp.rb#24 + # source://prism//lib/prism/translation/ripper/sexp.rb#25 def on_heredoc_dedent(val, width); end - # source://prism//lib/prism/translation/ripper/sexp.rb#61 + # source://prism//lib/prism/translation/ripper/sexp.rb#62 def on_parse_error(mesg); end end -# source://prism//lib/prism/translation/ripper/sexp.rb#74 +# source://prism//lib/prism/translation/ripper/sexp.rb#75 class Prism::Translation::Ripper::SexpBuilderPP < ::Prism::Translation::Ripper::SexpBuilder private - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def _dispatch_event_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def _dispatch_event_push(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_args_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_args_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#79 + # source://prism//lib/prism/translation/ripper/sexp.rb#80 def on_heredoc_dedent(val, width); end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_mlhs_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#109 + # source://prism//lib/prism/translation/ripper/sexp.rb#110 def on_mlhs_add_post(list, post); end - # source://prism//lib/prism/translation/ripper/sexp.rb#105 + # source://prism//lib/prism/translation/ripper/sexp.rb#106 def on_mlhs_add_star(list, star); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_mlhs_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#101 + # source://prism//lib/prism/translation/ripper/sexp.rb#102 def on_mlhs_paren(list); end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_mrhs_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_mrhs_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_qsymbols_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_qsymbols_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_qwords_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_qwords_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_regexp_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_regexp_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_stmts_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_stmts_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_string_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_symbols_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_symbols_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_word_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_word_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_words_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_words_new; end - # source://prism//lib/prism/translation/ripper/sexp.rb#96 + # source://prism//lib/prism/translation/ripper/sexp.rb#97 def on_xstring_add(list, item); end - # source://prism//lib/prism/translation/ripper/sexp.rb#92 + # source://prism//lib/prism/translation/ripper/sexp.rb#93 def on_xstring_new; end end -# source://prism//lib/prism/translation/ruby_parser.rb#14 +# source://prism//lib/prism/translation/ruby_parser.rb#15 class Prism::Translation::RubyParser - # source://prism//lib/prism/translation/ruby_parser.rb#1608 + # source://prism//lib/prism/translation/ruby_parser.rb#1891 def parse(source, filepath = T.unsafe(nil)); end - # source://prism//lib/prism/translation/ruby_parser.rb#1614 + # source://prism//lib/prism/translation/ruby_parser.rb#1897 def parse_file(filepath); end private - # source://prism//lib/prism/translation/ruby_parser.rb#1636 + # source://prism//lib/prism/translation/ruby_parser.rb#1919 def translate(result, filepath); end class << self - # source://prism//lib/prism/translation/ruby_parser.rb#1621 + # source://prism//lib/prism/translation/ruby_parser.rb#1904 def parse(source, filepath = T.unsafe(nil)); end - # source://prism//lib/prism/translation/ruby_parser.rb#1627 + # source://prism//lib/prism/translation/ruby_parser.rb#1910 def parse_file(filepath); end end end -# source://prism//lib/prism/translation/ruby_parser.rb#16 +# source://prism//lib/prism/translation/ruby_parser.rb#17 class Prism::Translation::RubyParser::Compiler < ::Prism::Compiler - # source://prism//lib/prism/translation/ruby_parser.rb#31 + # source://prism//lib/prism/translation/ruby_parser.rb#32 def initialize(file, in_def: T.unsafe(nil), in_pattern: T.unsafe(nil)); end - # source://prism//lib/prism/translation/ruby_parser.rb#20 + # source://prism//lib/prism/translation/ruby_parser.rb#21 def file; end - # source://prism//lib/prism/translation/ruby_parser.rb#24 + # source://prism//lib/prism/translation/ruby_parser.rb#25 def in_def; end - # source://prism//lib/prism/translation/ruby_parser.rb#28 + # source://prism//lib/prism/translation/ruby_parser.rb#29 def in_pattern; end - # source://prism//lib/prism/translation/ruby_parser.rb#45 + # source://prism//lib/prism/translation/ruby_parser.rb#50 def visit_alias_global_variable_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#39 + # source://prism//lib/prism/translation/ruby_parser.rb#42 def visit_alias_method_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#51 + # source://prism//lib/prism/translation/ruby_parser.rb#58 def visit_alternation_pattern_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#57 + # source://prism//lib/prism/translation/ruby_parser.rb#66 def visit_and_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#108 + # source://prism//lib/prism/translation/ruby_parser.rb#123 def visit_arguments_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#75 + # source://prism//lib/prism/translation/ruby_parser.rb#86 def visit_array_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#85 + # source://prism//lib/prism/translation/ruby_parser.rb#98 def visit_array_pattern_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#114 + # source://prism//lib/prism/translation/ruby_parser.rb#131 def visit_assoc_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#123 + # source://prism//lib/prism/translation/ruby_parser.rb#142 def visit_assoc_splat_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#133 + # source://prism//lib/prism/translation/ruby_parser.rb#154 def visit_back_reference_read_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#139 + # source://prism//lib/prism/translation/ruby_parser.rb#162 def visit_begin_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#172 + # source://prism//lib/prism/translation/ruby_parser.rb#197 def visit_block_argument_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#180 + # source://prism//lib/prism/translation/ruby_parser.rb#207 def visit_block_local_variable_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#185 + # source://prism//lib/prism/translation/ruby_parser.rb#212 def visit_block_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#191 + # source://prism//lib/prism/translation/ruby_parser.rb#220 def visit_block_parameter_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#196 + # source://prism//lib/prism/translation/ruby_parser.rb#225 def visit_block_parameters_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#236 + # source://prism//lib/prism/translation/ruby_parser.rb#267 def visit_break_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#304 + # source://prism//lib/prism/translation/ruby_parser.rb#341 def visit_call_and_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#254 + # source://prism//lib/prism/translation/ruby_parser.rb#287 def visit_call_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#294 + # source://prism//lib/prism/translation/ruby_parser.rb#329 def visit_call_operator_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#314 + # source://prism//lib/prism/translation/ruby_parser.rb#353 def visit_call_or_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#337 + # source://prism//lib/prism/translation/ruby_parser.rb#378 def visit_call_target_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#343 + # source://prism//lib/prism/translation/ruby_parser.rb#386 def visit_capture_pattern_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#355 + # source://prism//lib/prism/translation/ruby_parser.rb#402 def visit_case_match_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#349 + # source://prism//lib/prism/translation/ruby_parser.rb#394 def visit_case_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#361 + # source://prism//lib/prism/translation/ruby_parser.rb#410 def visit_class_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#402 + # source://prism//lib/prism/translation/ruby_parser.rb#459 def visit_class_variable_and_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#396 + # source://prism//lib/prism/translation/ruby_parser.rb#451 def visit_class_variable_operator_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#408 + # source://prism//lib/prism/translation/ruby_parser.rb#467 def visit_class_variable_or_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#381 + # source://prism//lib/prism/translation/ruby_parser.rb#432 def visit_class_variable_read_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#414 + # source://prism//lib/prism/translation/ruby_parser.rb#475 def visit_class_variable_target_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#390 + # source://prism//lib/prism/translation/ruby_parser.rb#443 def visit_class_variable_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#447 + # source://prism//lib/prism/translation/ruby_parser.rb#516 def visit_constant_and_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#441 + # source://prism//lib/prism/translation/ruby_parser.rb#508 def visit_constant_operator_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#453 + # source://prism//lib/prism/translation/ruby_parser.rb#524 def visit_constant_or_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#490 + # source://prism//lib/prism/translation/ruby_parser.rb#571 def visit_constant_path_and_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#465 + # source://prism//lib/prism/translation/ruby_parser.rb#540 def visit_constant_path_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#484 + # source://prism//lib/prism/translation/ruby_parser.rb#563 def visit_constant_path_operator_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#496 + # source://prism//lib/prism/translation/ruby_parser.rb#579 def visit_constant_path_or_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#502 + # source://prism//lib/prism/translation/ruby_parser.rb#587 def visit_constant_path_target_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#478 + # source://prism//lib/prism/translation/ruby_parser.rb#555 def visit_constant_path_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#426 + # source://prism//lib/prism/translation/ruby_parser.rb#489 def visit_constant_read_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#459 + # source://prism//lib/prism/translation/ruby_parser.rb#532 def visit_constant_target_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#435 + # source://prism//lib/prism/translation/ruby_parser.rb#500 def visit_constant_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#518 + # source://prism//lib/prism/translation/ruby_parser.rb#605 def visit_def_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#549 + # source://prism//lib/prism/translation/ruby_parser.rb#638 def visit_defined_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#555 + # source://prism//lib/prism/translation/ruby_parser.rb#646 def visit_else_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#561 + # source://prism//lib/prism/translation/ruby_parser.rb#654 def visit_embedded_statements_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#569 + # source://prism//lib/prism/translation/ruby_parser.rb#664 def visit_embedded_variable_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#575 + # source://prism//lib/prism/translation/ruby_parser.rb#672 def visit_ensure_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#581 + # source://prism//lib/prism/translation/ruby_parser.rb#680 def visit_false_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#587 + # source://prism//lib/prism/translation/ruby_parser.rb#688 def visit_find_pattern_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#593 + # source://prism//lib/prism/translation/ruby_parser.rb#696 def visit_flip_flop_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#603 + # source://prism//lib/prism/translation/ruby_parser.rb#708 def visit_float_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#609 + # source://prism//lib/prism/translation/ruby_parser.rb#716 def visit_for_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#615 + # source://prism//lib/prism/translation/ruby_parser.rb#724 def visit_forwarding_arguments_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#621 + # source://prism//lib/prism/translation/ruby_parser.rb#732 def visit_forwarding_parameter_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#630 + # source://prism//lib/prism/translation/ruby_parser.rb#743 def visit_forwarding_super_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#657 + # source://prism//lib/prism/translation/ruby_parser.rb#778 def visit_global_variable_and_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#651 + # source://prism//lib/prism/translation/ruby_parser.rb#770 def visit_global_variable_operator_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#663 + # source://prism//lib/prism/translation/ruby_parser.rb#786 def visit_global_variable_or_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#636 + # source://prism//lib/prism/translation/ruby_parser.rb#751 def visit_global_variable_read_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#669 + # source://prism//lib/prism/translation/ruby_parser.rb#794 def visit_global_variable_target_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#645 + # source://prism//lib/prism/translation/ruby_parser.rb#762 def visit_global_variable_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#675 + # source://prism//lib/prism/translation/ruby_parser.rb#802 def visit_hash_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#681 + # source://prism//lib/prism/translation/ruby_parser.rb#810 def visit_hash_pattern_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#702 + # source://prism//lib/prism/translation/ruby_parser.rb#833 def visit_if_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#707 + # source://prism//lib/prism/translation/ruby_parser.rb#838 def visit_imaginary_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#713 + # source://prism//lib/prism/translation/ruby_parser.rb#846 def visit_implicit_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#718 + # source://prism//lib/prism/translation/ruby_parser.rb#853 def visit_implicit_rest_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#723 + # source://prism//lib/prism/translation/ruby_parser.rb#860 def visit_in_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#749 + # source://prism//lib/prism/translation/ruby_parser.rb#890 def visit_index_and_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#736 + # source://prism//lib/prism/translation/ruby_parser.rb#875 def visit_index_operator_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#762 + # source://prism//lib/prism/translation/ruby_parser.rb#905 def visit_index_or_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#775 + # source://prism//lib/prism/translation/ruby_parser.rb#920 def visit_index_target_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#805 + # source://prism//lib/prism/translation/ruby_parser.rb#958 def visit_instance_variable_and_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#799 + # source://prism//lib/prism/translation/ruby_parser.rb#950 def visit_instance_variable_operator_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#811 + # source://prism//lib/prism/translation/ruby_parser.rb#966 def visit_instance_variable_or_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#784 + # source://prism//lib/prism/translation/ruby_parser.rb#931 def visit_instance_variable_read_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#817 + # source://prism//lib/prism/translation/ruby_parser.rb#974 def visit_instance_variable_target_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#793 + # source://prism//lib/prism/translation/ruby_parser.rb#942 def visit_instance_variable_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#823 + # source://prism//lib/prism/translation/ruby_parser.rb#982 def visit_integer_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#829 + # source://prism//lib/prism/translation/ruby_parser.rb#990 def visit_interpolated_match_last_line_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#846 + # source://prism//lib/prism/translation/ruby_parser.rb#1009 def visit_interpolated_regular_expression_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#861 + # source://prism//lib/prism/translation/ruby_parser.rb#1026 def visit_interpolated_string_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#868 + # source://prism//lib/prism/translation/ruby_parser.rb#1035 def visit_interpolated_symbol_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#875 + # source://prism//lib/prism/translation/ruby_parser.rb#1044 def visit_interpolated_x_string_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#956 + # source://prism//lib/prism/translation/ruby_parser.rb#1127 def visit_it_local_variable_read_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#962 + # source://prism//lib/prism/translation/ruby_parser.rb#1135 def visit_keyword_hash_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#971 + # source://prism//lib/prism/translation/ruby_parser.rb#1146 def visit_keyword_rest_parameter_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#976 + # source://prism//lib/prism/translation/ruby_parser.rb#1151 def visit_lambda_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1019 + # source://prism//lib/prism/translation/ruby_parser.rb#1202 def visit_local_variable_and_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1013 + # source://prism//lib/prism/translation/ruby_parser.rb#1194 def visit_local_variable_operator_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1025 + # source://prism//lib/prism/translation/ruby_parser.rb#1210 def visit_local_variable_or_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#994 + # source://prism//lib/prism/translation/ruby_parser.rb#1171 def visit_local_variable_read_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1031 + # source://prism//lib/prism/translation/ruby_parser.rb#1218 def visit_local_variable_target_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1007 + # source://prism//lib/prism/translation/ruby_parser.rb#1186 def visit_local_variable_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1037 + # source://prism//lib/prism/translation/ruby_parser.rb#1226 def visit_match_last_line_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1043 + # source://prism//lib/prism/translation/ruby_parser.rb#1234 def visit_match_predicate_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1049 + # source://prism//lib/prism/translation/ruby_parser.rb#1242 def visit_match_required_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1055 + # source://prism//lib/prism/translation/ruby_parser.rb#1250 def visit_match_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1062 + # source://prism//lib/prism/translation/ruby_parser.rb#1257 def visit_missing_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1068 + # source://prism//lib/prism/translation/ruby_parser.rb#1265 def visit_module_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1088 + # source://prism//lib/prism/translation/ruby_parser.rb#1287 def visit_multi_target_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1098 + # source://prism//lib/prism/translation/ruby_parser.rb#1299 def visit_multi_write_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1122 + # source://prism//lib/prism/translation/ruby_parser.rb#1325 def visit_next_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1135 + # source://prism//lib/prism/translation/ruby_parser.rb#1340 def visit_nil_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1141 + # source://prism//lib/prism/translation/ruby_parser.rb#1348 def visit_no_keywords_parameter_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1147 + # source://prism//lib/prism/translation/ruby_parser.rb#1356 def visit_numbered_parameters_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1153 + # source://prism//lib/prism/translation/ruby_parser.rb#1364 def visit_numbered_reference_read_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1159 + # source://prism//lib/prism/translation/ruby_parser.rb#1372 def visit_optional_keyword_parameter_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1165 + # source://prism//lib/prism/translation/ruby_parser.rb#1380 def visit_optional_parameter_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1171 + # source://prism//lib/prism/translation/ruby_parser.rb#1388 def visit_or_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1189 + # source://prism//lib/prism/translation/ruby_parser.rb#1408 def visit_parameters_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1227 + # source://prism//lib/prism/translation/ruby_parser.rb#1450 def visit_parentheses_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1237 + # source://prism//lib/prism/translation/ruby_parser.rb#1462 def visit_pinned_expression_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1243 + # source://prism//lib/prism/translation/ruby_parser.rb#1470 def visit_pinned_variable_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1252 + # source://prism//lib/prism/translation/ruby_parser.rb#1479 def visit_post_execution_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1257 + # source://prism//lib/prism/translation/ruby_parser.rb#1484 def visit_pre_execution_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1262 + # source://prism//lib/prism/translation/ruby_parser.rb#1489 def visit_program_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1268 + # source://prism//lib/prism/translation/ruby_parser.rb#1497 def visit_range_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1290 + # source://prism//lib/prism/translation/ruby_parser.rb#1521 def visit_rational_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1296 + # source://prism//lib/prism/translation/ruby_parser.rb#1529 def visit_redo_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1302 + # source://prism//lib/prism/translation/ruby_parser.rb#1537 def visit_regular_expression_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1308 + # source://prism//lib/prism/translation/ruby_parser.rb#1545 def visit_required_keyword_parameter_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1314 + # source://prism//lib/prism/translation/ruby_parser.rb#1553 def visit_required_parameter_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1320 + # source://prism//lib/prism/translation/ruby_parser.rb#1561 def visit_rescue_modifier_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1326 + # source://prism//lib/prism/translation/ruby_parser.rb#1569 def visit_rescue_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1346 + # source://prism//lib/prism/translation/ruby_parser.rb#1591 def visit_rest_parameter_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1352 + # source://prism//lib/prism/translation/ruby_parser.rb#1599 def visit_retry_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1361 + # source://prism//lib/prism/translation/ruby_parser.rb#1610 def visit_return_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1374 + # source://prism//lib/prism/translation/ruby_parser.rb#1625 def visit_self_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1379 + # source://prism//lib/prism/translation/ruby_parser.rb#1630 def visit_shareable_constant_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1385 + # source://prism//lib/prism/translation/ruby_parser.rb#1638 def visit_singleton_class_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1393 + # source://prism//lib/prism/translation/ruby_parser.rb#1648 def visit_source_encoding_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1400 + # source://prism//lib/prism/translation/ruby_parser.rb#1657 def visit_source_file_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1406 + # source://prism//lib/prism/translation/ruby_parser.rb#1665 def visit_source_line_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1418 + # source://prism//lib/prism/translation/ruby_parser.rb#1679 def visit_splat_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1427 + # source://prism//lib/prism/translation/ruby_parser.rb#1688 def visit_statements_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1439 + # source://prism//lib/prism/translation/ruby_parser.rb#1702 def visit_string_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1452 + # source://prism//lib/prism/translation/ruby_parser.rb#1717 def visit_super_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1466 + # source://prism//lib/prism/translation/ruby_parser.rb#1733 def visit_symbol_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1472 + # source://prism//lib/prism/translation/ruby_parser.rb#1741 def visit_true_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1478 + # source://prism//lib/prism/translation/ruby_parser.rb#1749 def visit_undef_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1488 + # source://prism//lib/prism/translation/ruby_parser.rb#1761 def visit_unless_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1497 + # source://prism//lib/prism/translation/ruby_parser.rb#1772 def visit_until_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1503 + # source://prism//lib/prism/translation/ruby_parser.rb#1780 def visit_when_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1512 + # source://prism//lib/prism/translation/ruby_parser.rb#1791 def visit_while_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1518 + # source://prism//lib/prism/translation/ruby_parser.rb#1799 def visit_x_string_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1534 + # source://prism//lib/prism/translation/ruby_parser.rb#1817 def visit_yield_node(node); end private - # source://prism//lib/prism/translation/ruby_parser.rb#420 + # source://prism//lib/prism/translation/ruby_parser.rb#481 def class_variable_write_type; end - # source://prism//lib/prism/translation/ruby_parser.rb#1541 + # source://prism//lib/prism/translation/ruby_parser.rb#1824 def copy_compiler(in_def: T.unsafe(nil), in_pattern: T.unsafe(nil)); end - # source://prism//lib/prism/translation/ruby_parser.rb#325 + # source://prism//lib/prism/translation/ruby_parser.rb#364 def op_asgn?(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#331 + # source://prism//lib/prism/translation/ruby_parser.rb#370 def op_asgn_type(node, type); end - # source://prism//lib/prism/translation/ruby_parser.rb#1546 + # source://prism//lib/prism/translation/ruby_parser.rb#1829 def s(node, *arguments); end - # source://prism//lib/prism/translation/ruby_parser.rb#1556 + # source://prism//lib/prism/translation/ruby_parser.rb#1839 def visit_block(node, sexp, block); end - # source://prism//lib/prism/translation/ruby_parser.rb#1204 + # source://prism//lib/prism/translation/ruby_parser.rb#1425 def visit_destructured_parameter(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#882 + # source://prism//lib/prism/translation/ruby_parser.rb#1051 def visit_interpolated_parts(parts); end - # source://prism//lib/prism/translation/ruby_parser.rb#1577 + # source://prism//lib/prism/translation/ruby_parser.rb#1860 def visit_pattern_constant(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1280 + # source://prism//lib/prism/translation/ruby_parser.rb#1509 def visit_range_bounds_node(node); end - # source://prism//lib/prism/translation/ruby_parser.rb#1591 + # source://prism//lib/prism/translation/ruby_parser.rb#1874 def visit_write_value(node); end end -# source://prism//lib/prism/node.rb#17368 +# source://prism//lib/prism/node.rb#17539 class Prism::TrueNode < ::Prism::Node - # source://prism//lib/prism/node.rb#17370 + # source://prism//lib/prism/node.rb#17541 sig { params(source: Prism::Source, node_id: Integer, location: Prism::Location, flags: Integer).void } def initialize(source, node_id, location, flags); end - # source://prism//lib/prism/node.rb#17427 + # source://prism//lib/prism/node.rb#17598 def ===(other); end - # source://prism//lib/prism/node.rb#17378 + # source://prism//lib/prism/node.rb#17549 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#17383 + # source://prism//lib/prism/node.rb#17554 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#17393 + # source://prism//lib/prism/node.rb#17564 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#17388 + # source://prism//lib/prism/node.rb#17559 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#17398 + # source://prism//lib/prism/node.rb#17569 sig { params(node_id: Integer, location: Prism::Location, flags: Integer).returns(Prism::TrueNode) } def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#17383 + # source://prism//lib/prism/node.rb#17554 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#17406 + # source://prism//lib/prism/node.rb#17577 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#17411 + # source://prism//lib/prism/node.rb#17582 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#17416 + # source://prism//lib/prism/node.rb#17587 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#17421 + # source://prism//lib/prism/node.rb#17592 def type; end end end -# source://prism//lib/prism/node.rb#17436 +# source://prism//lib/prism/node.rb#17607 class Prism::UndefNode < ::Prism::Node - # source://prism//lib/prism/node.rb#17438 + # source://prism//lib/prism/node.rb#17609 sig do params( source: Prism::Source, @@ -24950,26 +24961,26 @@ class Prism::UndefNode < ::Prism::Node end def initialize(source, node_id, location, flags, names, keyword_loc); end - # source://prism//lib/prism/node.rb#17518 + # source://prism//lib/prism/node.rb#17689 def ===(other); end - # source://prism//lib/prism/node.rb#17448 + # source://prism//lib/prism/node.rb#17619 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#17453 + # source://prism//lib/prism/node.rb#17624 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#17463 + # source://prism//lib/prism/node.rb#17634 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#17458 + # source://prism//lib/prism/node.rb#17629 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#17468 + # source://prism//lib/prism/node.rb#17639 sig do params( node_id: Integer, @@ -24981,49 +24992,49 @@ class Prism::UndefNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), names: T.unsafe(nil), keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#17453 + # source://prism//lib/prism/node.rb#17624 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#17476 + # source://prism//lib/prism/node.rb#17647 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#17502 + # source://prism//lib/prism/node.rb#17673 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#17497 + # source://prism//lib/prism/node.rb#17668 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#17484 + # source://prism//lib/prism/node.rb#17655 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#17481 + # source://prism//lib/prism/node.rb#17652 sig { returns(T::Array[T.any(Prism::SymbolNode, Prism::InterpolatedSymbolNode)]) } def names; end - # source://prism//lib/prism/node.rb#17492 + # source://prism//lib/prism/node.rb#17663 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#17507 + # source://prism//lib/prism/node.rb#17678 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#17512 + # source://prism//lib/prism/node.rb#17683 def type; end end end -# source://prism//lib/prism/node.rb#17533 +# source://prism//lib/prism/node.rb#17704 class Prism::UnlessNode < ::Prism::Node - # source://prism//lib/prism/node.rb#17535 + # source://prism//lib/prism/node.rb#17706 sig do params( source: Prism::Source, @@ -25040,29 +25051,29 @@ class Prism::UnlessNode < ::Prism::Node end def initialize(source, node_id, location, flags, keyword_loc, predicate, then_keyword_loc, statements, else_clause, end_keyword_loc); end - # source://prism//lib/prism/node.rb#17702 + # source://prism//lib/prism/node.rb#17873 def ===(other); end - # source://prism//lib/prism/node.rb#17549 + # source://prism//lib/prism/node.rb#17720 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#17554 + # source://prism//lib/prism/node.rb#17725 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#17568 + # source://prism//lib/prism/node.rb#17739 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#17559 + # source://prism//lib/prism/node.rb#17730 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node_ext.rb#503 + # source://prism//lib/prism/node_ext.rb#506 def consequent; end - # source://prism//lib/prism/node.rb#17573 + # source://prism//lib/prism/node.rb#17744 sig do params( node_id: Integer, @@ -25078,82 +25089,82 @@ class Prism::UnlessNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), predicate: T.unsafe(nil), then_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil), else_clause: T.unsafe(nil), end_keyword_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#17554 + # source://prism//lib/prism/node.rb#17725 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#17581 + # source://prism//lib/prism/node.rb#17752 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#17646 + # source://prism//lib/prism/node.rb#17817 sig { returns(T.nilable(Prism::ElseNode)) } def else_clause; end - # source://prism//lib/prism/node.rb#17681 + # source://prism//lib/prism/node.rb#17852 sig { returns(T.nilable(String)) } def end_keyword; end - # source://prism//lib/prism/node.rb#17652 + # source://prism//lib/prism/node.rb#17823 sig { returns(T.nilable(Prism::Location)) } def end_keyword_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#17686 + # source://prism//lib/prism/node.rb#17857 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#17671 + # source://prism//lib/prism/node.rb#17842 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#17592 + # source://prism//lib/prism/node.rb#17763 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/parse_result/newlines.rb#97 + # source://prism//lib/prism/parse_result/newlines.rb#98 def newline_flag!(lines); end - # source://prism//lib/prism/node.rb#17611 + # source://prism//lib/prism/node.rb#17782 sig { returns(Prism::Node) } def predicate; end - # source://prism//lib/prism/node.rb#17666 + # source://prism//lib/prism/node.rb#17837 def save_end_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#17600 + # source://prism//lib/prism/node.rb#17771 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#17631 + # source://prism//lib/prism/node.rb#17802 def save_then_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#17640 + # source://prism//lib/prism/node.rb#17811 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#17676 + # source://prism//lib/prism/node.rb#17847 sig { returns(T.nilable(String)) } def then_keyword; end - # source://prism//lib/prism/node.rb#17617 + # source://prism//lib/prism/node.rb#17788 sig { returns(T.nilable(Prism::Location)) } def then_keyword_loc; end - # source://prism//lib/prism/node.rb#17691 + # source://prism//lib/prism/node.rb#17862 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#17696 + # source://prism//lib/prism/node.rb#17867 def type; end end end -# source://prism//lib/prism/node.rb#17720 +# source://prism//lib/prism/node.rb#17891 class Prism::UntilNode < ::Prism::Node - # source://prism//lib/prism/node.rb#17722 + # source://prism//lib/prism/node.rb#17893 sig do params( source: Prism::Source, @@ -25169,38 +25180,38 @@ class Prism::UntilNode < ::Prism::Node end def initialize(source, node_id, location, flags, keyword_loc, do_keyword_loc, closing_loc, predicate, statements); end - # source://prism//lib/prism/node.rb#17864 + # source://prism//lib/prism/node.rb#18035 def ===(other); end - # source://prism//lib/prism/node.rb#17735 + # source://prism//lib/prism/node.rb#17906 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#17771 + # source://prism//lib/prism/node.rb#17942 sig { returns(T::Boolean) } def begin_modifier?; end - # source://prism//lib/prism/node.rb#17740 + # source://prism//lib/prism/node.rb#17911 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#17843 + # source://prism//lib/prism/node.rb#18014 sig { returns(T.nilable(String)) } def closing; end - # source://prism//lib/prism/node.rb#17808 + # source://prism//lib/prism/node.rb#17979 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end - # source://prism//lib/prism/node.rb#17753 + # source://prism//lib/prism/node.rb#17924 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#17745 + # source://prism//lib/prism/node.rb#17916 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#17758 + # source://prism//lib/prism/node.rb#17929 sig do params( node_id: Integer, @@ -25215,679 +25226,679 @@ class Prism::UntilNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), do_keyword_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), predicate: T.unsafe(nil), statements: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#17740 + # source://prism//lib/prism/node.rb#17911 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#17766 + # source://prism//lib/prism/node.rb#17937 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#17838 + # source://prism//lib/prism/node.rb#18009 sig { returns(T.nilable(String)) } def do_keyword; end - # source://prism//lib/prism/node.rb#17789 + # source://prism//lib/prism/node.rb#17960 sig { returns(T.nilable(Prism::Location)) } def do_keyword_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#17848 + # source://prism//lib/prism/node.rb#18019 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#17833 + # source://prism//lib/prism/node.rb#18004 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#17776 + # source://prism//lib/prism/node.rb#17947 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/parse_result/newlines.rb#103 + # source://prism//lib/prism/parse_result/newlines.rb#104 def newline_flag!(lines); end - # source://prism//lib/prism/node.rb#17827 + # source://prism//lib/prism/node.rb#17998 sig { returns(Prism::Node) } def predicate; end - # source://prism//lib/prism/node.rb#17822 + # source://prism//lib/prism/node.rb#17993 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#17803 + # source://prism//lib/prism/node.rb#17974 def save_do_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#17784 + # source://prism//lib/prism/node.rb#17955 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#17830 + # source://prism//lib/prism/node.rb#18001 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#17853 + # source://prism//lib/prism/node.rb#18024 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#17858 + # source://prism//lib/prism/node.rb#18029 def type; end end end Prism::VERSION = T.let(T.unsafe(nil), String) -# source://prism//lib/prism/visitor.rb#54 +# source://prism//lib/prism/visitor.rb#57 class Prism::Visitor < ::Prism::BasicVisitor - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#59 sig { params(node: Prism::AliasGlobalVariableNode).void } def visit_alias_global_variable_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#64 sig { params(node: Prism::AliasMethodNode).void } def visit_alias_method_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#69 sig { params(node: Prism::AlternationPatternNode).void } def visit_alternation_pattern_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#74 sig { params(node: Prism::AndNode).void } def visit_and_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#79 sig { params(node: Prism::ArgumentsNode).void } def visit_arguments_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#84 sig { params(node: Prism::ArrayNode).void } def visit_array_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#89 sig { params(node: Prism::ArrayPatternNode).void } def visit_array_pattern_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#94 sig { params(node: Prism::AssocNode).void } def visit_assoc_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#99 sig { params(node: Prism::AssocSplatNode).void } def visit_assoc_splat_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#104 sig { params(node: Prism::BackReferenceReadNode).void } def visit_back_reference_read_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#109 sig { params(node: Prism::BeginNode).void } def visit_begin_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#114 sig { params(node: Prism::BlockArgumentNode).void } def visit_block_argument_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#119 sig { params(node: Prism::BlockLocalVariableNode).void } def visit_block_local_variable_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#124 sig { params(node: Prism::BlockNode).void } def visit_block_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#129 sig { params(node: Prism::BlockParameterNode).void } def visit_block_parameter_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#134 sig { params(node: Prism::BlockParametersNode).void } def visit_block_parameters_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#139 sig { params(node: Prism::BreakNode).void } def visit_break_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#144 sig { params(node: Prism::CallAndWriteNode).void } def visit_call_and_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#149 sig { params(node: Prism::CallNode).void } def visit_call_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#154 sig { params(node: Prism::CallOperatorWriteNode).void } def visit_call_operator_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#159 sig { params(node: Prism::CallOrWriteNode).void } def visit_call_or_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#164 sig { params(node: Prism::CallTargetNode).void } def visit_call_target_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#169 sig { params(node: Prism::CapturePatternNode).void } def visit_capture_pattern_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#174 sig { params(node: Prism::CaseMatchNode).void } def visit_case_match_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#179 sig { params(node: Prism::CaseNode).void } def visit_case_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#184 sig { params(node: Prism::ClassNode).void } def visit_class_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#189 sig { params(node: Prism::ClassVariableAndWriteNode).void } def visit_class_variable_and_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#194 sig { params(node: Prism::ClassVariableOperatorWriteNode).void } def visit_class_variable_operator_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#199 sig { params(node: Prism::ClassVariableOrWriteNode).void } def visit_class_variable_or_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#204 sig { params(node: Prism::ClassVariableReadNode).void } def visit_class_variable_read_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#209 sig { params(node: Prism::ClassVariableTargetNode).void } def visit_class_variable_target_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#214 sig { params(node: Prism::ClassVariableWriteNode).void } def visit_class_variable_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#219 sig { params(node: Prism::ConstantAndWriteNode).void } def visit_constant_and_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#224 sig { params(node: Prism::ConstantOperatorWriteNode).void } def visit_constant_operator_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#229 sig { params(node: Prism::ConstantOrWriteNode).void } def visit_constant_or_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#234 sig { params(node: Prism::ConstantPathAndWriteNode).void } def visit_constant_path_and_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#239 sig { params(node: Prism::ConstantPathNode).void } def visit_constant_path_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#244 sig { params(node: Prism::ConstantPathOperatorWriteNode).void } def visit_constant_path_operator_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#249 sig { params(node: Prism::ConstantPathOrWriteNode).void } def visit_constant_path_or_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#254 sig { params(node: Prism::ConstantPathTargetNode).void } def visit_constant_path_target_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#259 sig { params(node: Prism::ConstantPathWriteNode).void } def visit_constant_path_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#264 sig { params(node: Prism::ConstantReadNode).void } def visit_constant_read_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#269 sig { params(node: Prism::ConstantTargetNode).void } def visit_constant_target_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#274 sig { params(node: Prism::ConstantWriteNode).void } def visit_constant_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#279 sig { params(node: Prism::DefNode).void } def visit_def_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#284 sig { params(node: Prism::DefinedNode).void } def visit_defined_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#289 sig { params(node: Prism::ElseNode).void } def visit_else_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#294 sig { params(node: Prism::EmbeddedStatementsNode).void } def visit_embedded_statements_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#299 sig { params(node: Prism::EmbeddedVariableNode).void } def visit_embedded_variable_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#304 sig { params(node: Prism::EnsureNode).void } def visit_ensure_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#309 sig { params(node: Prism::FalseNode).void } def visit_false_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#314 sig { params(node: Prism::FindPatternNode).void } def visit_find_pattern_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#319 sig { params(node: Prism::FlipFlopNode).void } def visit_flip_flop_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#324 sig { params(node: Prism::FloatNode).void } def visit_float_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#329 sig { params(node: Prism::ForNode).void } def visit_for_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#334 sig { params(node: Prism::ForwardingArgumentsNode).void } def visit_forwarding_arguments_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#339 sig { params(node: Prism::ForwardingParameterNode).void } def visit_forwarding_parameter_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#344 sig { params(node: Prism::ForwardingSuperNode).void } def visit_forwarding_super_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#349 sig { params(node: Prism::GlobalVariableAndWriteNode).void } def visit_global_variable_and_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#354 sig { params(node: Prism::GlobalVariableOperatorWriteNode).void } def visit_global_variable_operator_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#359 sig { params(node: Prism::GlobalVariableOrWriteNode).void } def visit_global_variable_or_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#364 sig { params(node: Prism::GlobalVariableReadNode).void } def visit_global_variable_read_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#369 sig { params(node: Prism::GlobalVariableTargetNode).void } def visit_global_variable_target_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#374 sig { params(node: Prism::GlobalVariableWriteNode).void } def visit_global_variable_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#379 sig { params(node: Prism::HashNode).void } def visit_hash_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#384 sig { params(node: Prism::HashPatternNode).void } def visit_hash_pattern_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#389 sig { params(node: Prism::IfNode).void } def visit_if_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#394 sig { params(node: Prism::ImaginaryNode).void } def visit_imaginary_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#399 sig { params(node: Prism::ImplicitNode).void } def visit_implicit_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#404 sig { params(node: Prism::ImplicitRestNode).void } def visit_implicit_rest_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#409 sig { params(node: Prism::InNode).void } def visit_in_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#414 sig { params(node: Prism::IndexAndWriteNode).void } def visit_index_and_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#419 sig { params(node: Prism::IndexOperatorWriteNode).void } def visit_index_operator_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#424 sig { params(node: Prism::IndexOrWriteNode).void } def visit_index_or_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#429 sig { params(node: Prism::IndexTargetNode).void } def visit_index_target_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#434 sig { params(node: Prism::InstanceVariableAndWriteNode).void } def visit_instance_variable_and_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#439 sig { params(node: Prism::InstanceVariableOperatorWriteNode).void } def visit_instance_variable_operator_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#444 sig { params(node: Prism::InstanceVariableOrWriteNode).void } def visit_instance_variable_or_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#449 sig { params(node: Prism::InstanceVariableReadNode).void } def visit_instance_variable_read_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#454 sig { params(node: Prism::InstanceVariableTargetNode).void } def visit_instance_variable_target_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#459 sig { params(node: Prism::InstanceVariableWriteNode).void } def visit_instance_variable_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#464 sig { params(node: Prism::IntegerNode).void } def visit_integer_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#469 sig { params(node: Prism::InterpolatedMatchLastLineNode).void } def visit_interpolated_match_last_line_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#474 sig { params(node: Prism::InterpolatedRegularExpressionNode).void } def visit_interpolated_regular_expression_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#479 sig { params(node: Prism::InterpolatedStringNode).void } def visit_interpolated_string_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#484 sig { params(node: Prism::InterpolatedSymbolNode).void } def visit_interpolated_symbol_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#489 sig { params(node: Prism::InterpolatedXStringNode).void } def visit_interpolated_x_string_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#494 sig { params(node: Prism::ItLocalVariableReadNode).void } def visit_it_local_variable_read_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#499 sig { params(node: Prism::ItParametersNode).void } def visit_it_parameters_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#504 sig { params(node: Prism::KeywordHashNode).void } def visit_keyword_hash_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#509 sig { params(node: Prism::KeywordRestParameterNode).void } def visit_keyword_rest_parameter_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#514 sig { params(node: Prism::LambdaNode).void } def visit_lambda_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#519 sig { params(node: Prism::LocalVariableAndWriteNode).void } def visit_local_variable_and_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#524 sig { params(node: Prism::LocalVariableOperatorWriteNode).void } def visit_local_variable_operator_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#529 sig { params(node: Prism::LocalVariableOrWriteNode).void } def visit_local_variable_or_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#534 sig { params(node: Prism::LocalVariableReadNode).void } def visit_local_variable_read_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#539 sig { params(node: Prism::LocalVariableTargetNode).void } def visit_local_variable_target_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#544 sig { params(node: Prism::LocalVariableWriteNode).void } def visit_local_variable_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#549 sig { params(node: Prism::MatchLastLineNode).void } def visit_match_last_line_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#554 sig { params(node: Prism::MatchPredicateNode).void } def visit_match_predicate_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#559 sig { params(node: Prism::MatchRequiredNode).void } def visit_match_required_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#564 sig { params(node: Prism::MatchWriteNode).void } def visit_match_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#569 sig { params(node: Prism::MissingNode).void } def visit_missing_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#574 sig { params(node: Prism::ModuleNode).void } def visit_module_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#579 sig { params(node: Prism::MultiTargetNode).void } def visit_multi_target_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#584 sig { params(node: Prism::MultiWriteNode).void } def visit_multi_write_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#589 sig { params(node: Prism::NextNode).void } def visit_next_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#594 sig { params(node: Prism::NilNode).void } def visit_nil_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#599 sig { params(node: Prism::NoKeywordsParameterNode).void } def visit_no_keywords_parameter_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#604 sig { params(node: Prism::NumberedParametersNode).void } def visit_numbered_parameters_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#609 sig { params(node: Prism::NumberedReferenceReadNode).void } def visit_numbered_reference_read_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#614 sig { params(node: Prism::OptionalKeywordParameterNode).void } def visit_optional_keyword_parameter_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#619 sig { params(node: Prism::OptionalParameterNode).void } def visit_optional_parameter_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#624 sig { params(node: Prism::OrNode).void } def visit_or_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#629 sig { params(node: Prism::ParametersNode).void } def visit_parameters_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#634 sig { params(node: Prism::ParenthesesNode).void } def visit_parentheses_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#639 sig { params(node: Prism::PinnedExpressionNode).void } def visit_pinned_expression_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#644 sig { params(node: Prism::PinnedVariableNode).void } def visit_pinned_variable_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#649 sig { params(node: Prism::PostExecutionNode).void } def visit_post_execution_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#654 sig { params(node: Prism::PreExecutionNode).void } def visit_pre_execution_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#659 sig { params(node: Prism::ProgramNode).void } def visit_program_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#664 sig { params(node: Prism::RangeNode).void } def visit_range_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#669 sig { params(node: Prism::RationalNode).void } def visit_rational_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#674 sig { params(node: Prism::RedoNode).void } def visit_redo_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#679 sig { params(node: Prism::RegularExpressionNode).void } def visit_regular_expression_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#684 sig { params(node: Prism::RequiredKeywordParameterNode).void } def visit_required_keyword_parameter_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#689 sig { params(node: Prism::RequiredParameterNode).void } def visit_required_parameter_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#694 sig { params(node: Prism::RescueModifierNode).void } def visit_rescue_modifier_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#699 sig { params(node: Prism::RescueNode).void } def visit_rescue_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#704 sig { params(node: Prism::RestParameterNode).void } def visit_rest_parameter_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#709 sig { params(node: Prism::RetryNode).void } def visit_retry_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#714 sig { params(node: Prism::ReturnNode).void } def visit_return_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#719 sig { params(node: Prism::SelfNode).void } def visit_self_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#724 sig { params(node: Prism::ShareableConstantNode).void } def visit_shareable_constant_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#729 sig { params(node: Prism::SingletonClassNode).void } def visit_singleton_class_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#734 sig { params(node: Prism::SourceEncodingNode).void } def visit_source_encoding_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#739 sig { params(node: Prism::SourceFileNode).void } def visit_source_file_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#744 sig { params(node: Prism::SourceLineNode).void } def visit_source_line_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#749 sig { params(node: Prism::SplatNode).void } def visit_splat_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#754 sig { params(node: Prism::StatementsNode).void } def visit_statements_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#759 sig { params(node: Prism::StringNode).void } def visit_string_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#764 sig { params(node: Prism::SuperNode).void } def visit_super_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#769 sig { params(node: Prism::SymbolNode).void } def visit_symbol_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#774 sig { params(node: Prism::TrueNode).void } def visit_true_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#779 sig { params(node: Prism::UndefNode).void } def visit_undef_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#784 sig { params(node: Prism::UnlessNode).void } def visit_unless_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#789 sig { params(node: Prism::UntilNode).void } def visit_until_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#794 sig { params(node: Prism::WhenNode).void } def visit_when_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#799 sig { params(node: Prism::WhileNode).void } def visit_while_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#804 sig { params(node: Prism::XStringNode).void } def visit_x_string_node(node); end - # source://prism//lib/prism/visitor.rb#29 + # source://prism//lib/prism/visitor.rb#809 sig { params(node: Prism::YieldNode).void } def visit_yield_node(node); end end -# source://prism//lib/prism/node.rb#17881 +# source://prism//lib/prism/node.rb#18052 class Prism::WhenNode < ::Prism::Node - # source://prism//lib/prism/node.rb#17883 + # source://prism//lib/prism/node.rb#18054 sig do params( source: Prism::Source, @@ -25902,30 +25913,30 @@ class Prism::WhenNode < ::Prism::Node end def initialize(source, node_id, location, flags, keyword_loc, conditions, then_keyword_loc, statements); end - # source://prism//lib/prism/node.rb#17995 + # source://prism//lib/prism/node.rb#18166 def ===(other); end - # source://prism//lib/prism/node.rb#17895 + # source://prism//lib/prism/node.rb#18066 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#17900 + # source://prism//lib/prism/node.rb#18071 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#17913 + # source://prism//lib/prism/node.rb#18084 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#17905 + # source://prism//lib/prism/node.rb#18076 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#17944 + # source://prism//lib/prism/node.rb#18115 sig { returns(T::Array[Prism::Node]) } def conditions; end - # source://prism//lib/prism/node.rb#17918 + # source://prism//lib/prism/node.rb#18089 sig do params( node_id: Integer, @@ -25939,60 +25950,60 @@ class Prism::WhenNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), conditions: T.unsafe(nil), then_keyword_loc: T.unsafe(nil), statements: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#17900 + # source://prism//lib/prism/node.rb#18071 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#17926 + # source://prism//lib/prism/node.rb#18097 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#17979 + # source://prism//lib/prism/node.rb#18150 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#17969 + # source://prism//lib/prism/node.rb#18140 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#17931 + # source://prism//lib/prism/node.rb#18102 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#17939 + # source://prism//lib/prism/node.rb#18110 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#17961 + # source://prism//lib/prism/node.rb#18132 def save_then_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#17966 + # source://prism//lib/prism/node.rb#18137 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#17974 + # source://prism//lib/prism/node.rb#18145 sig { returns(T.nilable(String)) } def then_keyword; end - # source://prism//lib/prism/node.rb#17947 + # source://prism//lib/prism/node.rb#18118 sig { returns(T.nilable(Prism::Location)) } def then_keyword_loc; end - # source://prism//lib/prism/node.rb#17984 + # source://prism//lib/prism/node.rb#18155 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#17989 + # source://prism//lib/prism/node.rb#18160 def type; end end end -# source://prism//lib/prism/node.rb#18012 +# source://prism//lib/prism/node.rb#18183 class Prism::WhileNode < ::Prism::Node - # source://prism//lib/prism/node.rb#18014 + # source://prism//lib/prism/node.rb#18185 sig do params( source: Prism::Source, @@ -26008,38 +26019,38 @@ class Prism::WhileNode < ::Prism::Node end def initialize(source, node_id, location, flags, keyword_loc, do_keyword_loc, closing_loc, predicate, statements); end - # source://prism//lib/prism/node.rb#18156 + # source://prism//lib/prism/node.rb#18327 def ===(other); end - # source://prism//lib/prism/node.rb#18027 + # source://prism//lib/prism/node.rb#18198 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#18063 + # source://prism//lib/prism/node.rb#18234 sig { returns(T::Boolean) } def begin_modifier?; end - # source://prism//lib/prism/node.rb#18032 + # source://prism//lib/prism/node.rb#18203 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#18135 + # source://prism//lib/prism/node.rb#18306 sig { returns(T.nilable(String)) } def closing; end - # source://prism//lib/prism/node.rb#18100 + # source://prism//lib/prism/node.rb#18271 sig { returns(T.nilable(Prism::Location)) } def closing_loc; end - # source://prism//lib/prism/node.rb#18045 + # source://prism//lib/prism/node.rb#18216 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#18037 + # source://prism//lib/prism/node.rb#18208 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#18050 + # source://prism//lib/prism/node.rb#18221 sig do params( node_id: Integer, @@ -26054,72 +26065,72 @@ class Prism::WhileNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), do_keyword_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), predicate: T.unsafe(nil), statements: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#18032 + # source://prism//lib/prism/node.rb#18203 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#18058 + # source://prism//lib/prism/node.rb#18229 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end - # source://prism//lib/prism/node.rb#18130 + # source://prism//lib/prism/node.rb#18301 sig { returns(T.nilable(String)) } def do_keyword; end - # source://prism//lib/prism/node.rb#18081 + # source://prism//lib/prism/node.rb#18252 sig { returns(T.nilable(Prism::Location)) } def do_keyword_loc; end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#18140 + # source://prism//lib/prism/node.rb#18311 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#18125 + # source://prism//lib/prism/node.rb#18296 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#18068 + # source://prism//lib/prism/node.rb#18239 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/parse_result/newlines.rb#109 + # source://prism//lib/prism/parse_result/newlines.rb#110 def newline_flag!(lines); end - # source://prism//lib/prism/node.rb#18119 + # source://prism//lib/prism/node.rb#18290 sig { returns(Prism::Node) } def predicate; end - # source://prism//lib/prism/node.rb#18114 + # source://prism//lib/prism/node.rb#18285 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#18095 + # source://prism//lib/prism/node.rb#18266 def save_do_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#18076 + # source://prism//lib/prism/node.rb#18247 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#18122 + # source://prism//lib/prism/node.rb#18293 sig { returns(T.nilable(Prism::StatementsNode)) } def statements; end - # source://prism//lib/prism/node.rb#18145 + # source://prism//lib/prism/node.rb#18316 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#18150 + # source://prism//lib/prism/node.rb#18321 def type; end end end -# source://prism//lib/prism/node.rb#18171 +# source://prism//lib/prism/node.rb#18342 class Prism::XStringNode < ::Prism::Node include ::Prism::HeredocQuery - # source://prism//lib/prism/node.rb#18173 + # source://prism//lib/prism/node.rb#18344 sig do params( source: Prism::Source, @@ -26134,42 +26145,42 @@ class Prism::XStringNode < ::Prism::Node end def initialize(source, node_id, location, flags, opening_loc, content_loc, closing_loc, unescaped); end - # source://prism//lib/prism/node.rb#18301 + # source://prism//lib/prism/node.rb#18472 def ===(other); end - # source://prism//lib/prism/node.rb#18185 + # source://prism//lib/prism/node.rb#18356 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#18190 + # source://prism//lib/prism/node.rb#18361 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#18280 + # source://prism//lib/prism/node.rb#18451 sig { returns(String) } def closing; end - # source://prism//lib/prism/node.rb#18254 + # source://prism//lib/prism/node.rb#18425 sig { returns(Prism::Location) } def closing_loc; end - # source://prism//lib/prism/node.rb#18200 + # source://prism//lib/prism/node.rb#18371 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#18195 + # source://prism//lib/prism/node.rb#18366 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#18275 + # source://prism//lib/prism/node.rb#18446 sig { returns(String) } def content; end - # source://prism//lib/prism/node.rb#18241 + # source://prism//lib/prism/node.rb#18412 sig { returns(Prism::Location) } def content_loc; end - # source://prism//lib/prism/node.rb#18205 + # source://prism//lib/prism/node.rb#18376 sig do params( node_id: Integer, @@ -26183,70 +26194,70 @@ class Prism::XStringNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), opening_loc: T.unsafe(nil), content_loc: T.unsafe(nil), closing_loc: T.unsafe(nil), unescaped: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#18190 + # source://prism//lib/prism/node.rb#18361 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#18213 + # source://prism//lib/prism/node.rb#18384 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#18223 + # source://prism//lib/prism/node.rb#18394 sig { returns(T::Boolean) } def forced_binary_encoding?; end - # source://prism//lib/prism/node.rb#18218 + # source://prism//lib/prism/node.rb#18389 sig { returns(T::Boolean) } def forced_utf8_encoding?; end sig { returns(T::Boolean) } def heredoc?; end - # source://prism//lib/prism/node.rb#18285 + # source://prism//lib/prism/node.rb#18456 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#18270 + # source://prism//lib/prism/node.rb#18441 sig { returns(String) } def opening; end - # source://prism//lib/prism/node.rb#18228 + # source://prism//lib/prism/node.rb#18399 sig { returns(Prism::Location) } def opening_loc; end - # source://prism//lib/prism/node.rb#18262 + # source://prism//lib/prism/node.rb#18433 def save_closing_loc(repository); end - # source://prism//lib/prism/node.rb#18249 + # source://prism//lib/prism/node.rb#18420 def save_content_loc(repository); end - # source://prism//lib/prism/node.rb#18236 + # source://prism//lib/prism/node.rb#18407 def save_opening_loc(repository); end - # source://prism//lib/prism/node_ext.rb#90 + # source://prism//lib/prism/node_ext.rb#93 sig { returns(Prism::InterpolatedXStringNode) } def to_interpolated; end - # source://prism//lib/prism/node.rb#18290 + # source://prism//lib/prism/node.rb#18461 sig { override.returns(Symbol) } def type; end - # source://prism//lib/prism/node.rb#18267 + # source://prism//lib/prism/node.rb#18438 sig { returns(String) } def unescaped; end class << self - # source://prism//lib/prism/node.rb#18295 + # source://prism//lib/prism/node.rb#18466 def type; end end end -# source://prism//lib/prism/node.rb#18315 +# source://prism//lib/prism/node.rb#18486 class Prism::YieldNode < ::Prism::Node - # source://prism//lib/prism/node.rb#18317 + # source://prism//lib/prism/node.rb#18488 sig do params( source: Prism::Source, @@ -26261,30 +26272,30 @@ class Prism::YieldNode < ::Prism::Node end def initialize(source, node_id, location, flags, keyword_loc, lparen_loc, arguments, rparen_loc); end - # source://prism//lib/prism/node.rb#18449 + # source://prism//lib/prism/node.rb#18620 def ===(other); end - # source://prism//lib/prism/node.rb#18329 + # source://prism//lib/prism/node.rb#18500 sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end - # source://prism//lib/prism/node.rb#18396 + # source://prism//lib/prism/node.rb#18567 sig { returns(T.nilable(Prism::ArgumentsNode)) } def arguments; end - # source://prism//lib/prism/node.rb#18334 + # source://prism//lib/prism/node.rb#18505 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def child_nodes; end - # source://prism//lib/prism/node.rb#18346 + # source://prism//lib/prism/node.rb#18517 sig { override.returns(T::Array[T.any(Prism::Node, Prism::Location)]) } def comment_targets; end - # source://prism//lib/prism/node.rb#18339 + # source://prism//lib/prism/node.rb#18510 sig { override.returns(T::Array[Prism::Node]) } def compact_child_nodes; end - # source://prism//lib/prism/node.rb#18351 + # source://prism//lib/prism/node.rb#18522 sig do params( node_id: Integer, @@ -26298,60 +26309,60 @@ class Prism::YieldNode < ::Prism::Node end def copy(node_id: T.unsafe(nil), location: T.unsafe(nil), flags: T.unsafe(nil), keyword_loc: T.unsafe(nil), lparen_loc: T.unsafe(nil), arguments: T.unsafe(nil), rparen_loc: T.unsafe(nil)); end - # source://prism//lib/prism/node.rb#18334 + # source://prism//lib/prism/node.rb#18505 sig { override.returns(T::Array[T.nilable(Prism::Node)]) } def deconstruct; end - # source://prism//lib/prism/node.rb#18359 + # source://prism//lib/prism/node.rb#18530 sig { params(keys: T.nilable(T::Array[Symbol])).returns(T::Hash[Symbol, T.untyped]) } def deconstruct_keys(keys); end sig { override.returns(T::Array[Prism::Reflection::Field]) } def fields; end - # source://prism//lib/prism/node.rb#18433 + # source://prism//lib/prism/node.rb#18604 sig { override.returns(String) } def inspect; end - # source://prism//lib/prism/node.rb#18418 + # source://prism//lib/prism/node.rb#18589 sig { returns(String) } def keyword; end - # source://prism//lib/prism/node.rb#18364 + # source://prism//lib/prism/node.rb#18535 sig { returns(Prism::Location) } def keyword_loc; end - # source://prism//lib/prism/node.rb#18423 + # source://prism//lib/prism/node.rb#18594 sig { returns(T.nilable(String)) } def lparen; end - # source://prism//lib/prism/node.rb#18377 + # source://prism//lib/prism/node.rb#18548 sig { returns(T.nilable(Prism::Location)) } def lparen_loc; end - # source://prism//lib/prism/node.rb#18428 + # source://prism//lib/prism/node.rb#18599 sig { returns(T.nilable(String)) } def rparen; end - # source://prism//lib/prism/node.rb#18399 + # source://prism//lib/prism/node.rb#18570 sig { returns(T.nilable(Prism::Location)) } def rparen_loc; end - # source://prism//lib/prism/node.rb#18372 + # source://prism//lib/prism/node.rb#18543 def save_keyword_loc(repository); end - # source://prism//lib/prism/node.rb#18391 + # source://prism//lib/prism/node.rb#18562 def save_lparen_loc(repository); end - # source://prism//lib/prism/node.rb#18413 + # source://prism//lib/prism/node.rb#18584 def save_rparen_loc(repository); end - # source://prism//lib/prism/node.rb#18438 + # source://prism//lib/prism/node.rb#18609 sig { override.returns(Symbol) } def type; end class << self - # source://prism//lib/prism/node.rb#18443 + # source://prism//lib/prism/node.rb#18614 def type; end end end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/rack@3.1.16.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/rack@3.2.3.rbi similarity index 78% rename from tools/ruby-gems/udb/sorbet/rbi/gems/rack@3.1.16.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/rack@3.2.3.rbi index d5275cabce..c6a14aca66 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/rack@3.1.16.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/rack@3.2.3.rbi @@ -5,15 +5,15 @@ # Please instead update this file by running `bin/tapioca gem rack`. -# source://rack//lib/rack/version.rb#14 +# source://rack//lib/rack/version.rb#8 module Rack class << self - # source://rack//lib/rack/version.rb#18 + # source://rack//lib/rack/version.rb#14 def release; end end end -# source://rack//lib/rack.rb#60 +# source://rack//lib/rack.rb#59 module Rack::Auth; end # source://rack//lib/rack/auth/abstract/handler.rb#11 @@ -36,36 +36,36 @@ class Rack::Auth::AbstractHandler def unauthorized(www_authenticate = T.unsafe(nil)); end end -# source://rack//lib/rack/auth/abstract/request.rb#7 +# source://rack//lib/rack/auth/abstract/request.rb#8 class Rack::Auth::AbstractRequest - # source://rack//lib/rack/auth/abstract/request.rb#9 + # source://rack//lib/rack/auth/abstract/request.rb#10 def initialize(env); end - # source://rack//lib/rack/auth/abstract/request.rb#33 + # source://rack//lib/rack/auth/abstract/request.rb#35 def params; end - # source://rack//lib/rack/auth/abstract/request.rb#25 + # source://rack//lib/rack/auth/abstract/request.rb#27 def parts; end - # source://rack//lib/rack/auth/abstract/request.rb#17 + # source://rack//lib/rack/auth/abstract/request.rb#19 def provided?; end - # source://rack//lib/rack/auth/abstract/request.rb#13 + # source://rack//lib/rack/auth/abstract/request.rb#14 def request; end - # source://rack//lib/rack/auth/abstract/request.rb#29 + # source://rack//lib/rack/auth/abstract/request.rb#31 def scheme; end - # source://rack//lib/rack/auth/abstract/request.rb#21 + # source://rack//lib/rack/auth/abstract/request.rb#23 def valid?; end private - # source://rack//lib/rack/auth/abstract/request.rb#42 + # source://rack//lib/rack/auth/abstract/request.rb#44 def authorization_key; end end -# source://rack//lib/rack/auth/abstract/request.rb#40 +# source://rack//lib/rack/auth/abstract/request.rb#42 Rack::Auth::AbstractRequest::AUTHORIZATION_KEYS = T.let(T.unsafe(nil), Array) # source://rack//lib/rack/auth/basic.rb#13 @@ -125,33 +125,33 @@ class Rack::Builder # source://rack//lib/rack/builder.rb#116 def initialize(default_app = T.unsafe(nil), **options, &block); end - # source://rack//lib/rack/builder.rb#276 + # source://rack//lib/rack/builder.rb#282 def call(env); end - # source://rack//lib/rack/builder.rb#259 + # source://rack//lib/rack/builder.rb#265 def freeze_app; end - # source://rack//lib/rack/builder.rb#252 + # source://rack//lib/rack/builder.rb#256 def map(path, &block); end # source://rack//lib/rack/builder.rb#132 def options; end - # source://rack//lib/rack/builder.rb#193 + # source://rack//lib/rack/builder.rb#195 def run(app = T.unsafe(nil), &block); end - # source://rack//lib/rack/builder.rb#264 + # source://rack//lib/rack/builder.rb#270 def to_app; end # source://rack//lib/rack/builder.rb#159 def use(middleware, *args, **_arg2, &block); end - # source://rack//lib/rack/builder.rb#209 + # source://rack//lib/rack/builder.rb#213 def warmup(prc = T.unsafe(nil), &block); end private - # source://rack//lib/rack/builder.rb#284 + # source://rack//lib/rack/builder.rb#290 def generate_map(default_app, mapping); end class << self @@ -235,16 +235,16 @@ class Rack::ConditionalGet private - # source://rack//lib/rack/conditional_get.rb#62 + # source://rack//lib/rack/conditional_get.rb#63 def etag_matches?(none_match, headers); end - # source://rack//lib/rack/conditional_get.rb#51 + # source://rack//lib/rack/conditional_get.rb#52 def fresh?(env, headers); end - # source://rack//lib/rack/conditional_get.rb#68 + # source://rack//lib/rack/conditional_get.rb#69 def modified_since?(modified_since, headers); end - # source://rack//lib/rack/conditional_get.rb#75 + # source://rack//lib/rack/conditional_get.rb#76 def to_rfc2822(since); end end @@ -405,77 +405,83 @@ Rack::ETag::ETAG_STRING = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#23 Rack::EXPIRES = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/events.rb#61 +# source://rack//lib/rack/events.rb#62 class Rack::Events - # source://rack//lib/rack/events.rb#106 + # source://rack//lib/rack/events.rb#121 def initialize(app, handlers); end - # source://rack//lib/rack/events.rb#111 + # source://rack//lib/rack/events.rb#126 def call(env); end private - # source://rack//lib/rack/events.rb#149 + # source://rack//lib/rack/events.rb#164 def make_request(env); end - # source://rack//lib/rack/events.rb#153 + # source://rack//lib/rack/events.rb#168 def make_response(status, headers, body); end - # source://rack//lib/rack/events.rb#137 + # source://rack//lib/rack/events.rb#152 def on_commit(request, response); end - # source://rack//lib/rack/events.rb#133 + # source://rack//lib/rack/events.rb#148 def on_error(request, response, e); end - # source://rack//lib/rack/events.rb#145 + # source://rack//lib/rack/events.rb#160 def on_finish(request, response); end - # source://rack//lib/rack/events.rb#141 + # source://rack//lib/rack/events.rb#156 def on_start(request, response); end end -# source://rack//lib/rack/events.rb#62 +# source://rack//lib/rack/events.rb#63 module Rack::Events::Abstract - # source://rack//lib/rack/events.rb#66 + # source://rack//lib/rack/events.rb#67 def on_commit(req, res); end - # source://rack//lib/rack/events.rb#75 + # source://rack//lib/rack/events.rb#76 def on_error(req, res, e); end - # source://rack//lib/rack/events.rb#72 + # source://rack//lib/rack/events.rb#73 def on_finish(req, res); end - # source://rack//lib/rack/events.rb#69 + # source://rack//lib/rack/events.rb#70 def on_send(req, res); end - # source://rack//lib/rack/events.rb#63 + # source://rack//lib/rack/events.rb#64 def on_start(req, res); end end -# source://rack//lib/rack/events.rb#95 +# source://rack//lib/rack/events.rb#110 class Rack::Events::BufferedResponse < ::Rack::Response::Raw - # source://rack//lib/rack/events.rb#98 + # source://rack//lib/rack/events.rb#113 def initialize(status, headers, body); end - # source://rack//lib/rack/events.rb#96 + # source://rack//lib/rack/events.rb#111 def body; end - # source://rack//lib/rack/events.rb#103 + # source://rack//lib/rack/events.rb#118 def to_a; end end -# source://rack//lib/rack/events.rb#79 +# source://rack//lib/rack/events.rb#80 class Rack::Events::EventedBodyProxy < ::Rack::BodyProxy - # source://rack//lib/rack/events.rb#82 + # source://rack//lib/rack/events.rb#83 def initialize(body, request, response, handlers, &block); end - # source://rack//lib/rack/events.rb#89 + # source://rack//lib/rack/events.rb#95 + def call(stream); end + + # source://rack//lib/rack/events.rb#90 def each; end - # source://rack//lib/rack/events.rb#80 + # source://rack//lib/rack/events.rb#81 def request; end - # source://rack//lib/rack/events.rb#80 + # source://rack//lib/rack/events.rb#100 + def respond_to?(method_name, include_all = T.unsafe(nil)); end + + # source://rack//lib/rack/events.rb#81 def response; end end @@ -697,143 +703,160 @@ Rack::Headers::KNOWN_HEADERS = T.let(T.unsafe(nil), Hash) # source://rack//lib/rack/constants.rb#36 Rack::LINK = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/lint.rb#13 +# source://rack//lib/rack/lint.rb#10 class Rack::Lint - # source://rack//lib/rack/lint.rb#19 + # source://rack//lib/rack/lint.rb#65 def initialize(app); end - # source://rack//lib/rack/lint.rb#40 + # source://rack//lib/rack/lint.rb#15 def call(env = T.unsafe(nil)); end end -# source://rack//lib/rack/lint.rb#25 +# source://rack//lib/rack/lint.rb#21 +Rack::Lint::ALLOWED_SCHEMES = T.let(T.unsafe(nil), Array) + +# source://rack//lib/rack/lint.rb#29 +Rack::Lint::HOST_PATTERN = T.let(T.unsafe(nil), Regexp) + +# source://rack//lib/rack/lint.rb#52 +Rack::Lint::HTTP_HOST_PATTERN = T.let(T.unsafe(nil), Regexp) + +# source://rack//lib/rack/lint.rb#12 class Rack::Lint::LintError < ::RuntimeError; end -# source://rack//lib/rack/lint.rb#15 +# source://rack//lib/rack/lint.rb#24 Rack::Lint::REQUEST_PATH_ABSOLUTE_FORM = T.let(T.unsafe(nil), Regexp) -# source://rack//lib/rack/lint.rb#17 +# source://rack//lib/rack/lint.rb#26 Rack::Lint::REQUEST_PATH_ASTERISK_FORM = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/lint.rb#16 +# source://rack//lib/rack/lint.rb#25 Rack::Lint::REQUEST_PATH_AUTHORITY_FORM = T.let(T.unsafe(nil), Regexp) -# source://rack//lib/rack/lint.rb#14 +# source://rack//lib/rack/lint.rb#23 Rack::Lint::REQUEST_PATH_ORIGIN_FORM = T.let(T.unsafe(nil), Regexp) -# source://rack//lib/rack/lint.rb#44 +# source://rack//lib/rack/lint.rb#51 +Rack::Lint::SERVER_NAME_PATTERN = T.let(T.unsafe(nil), Regexp) + +# source://rack//lib/rack/lint.rb#71 class Rack::Lint::Wrapper - # source://rack//lib/rack/lint.rb#45 + # source://rack//lib/rack/lint.rb#72 def initialize(app, env); end - # source://rack//lib/rack/lint.rb#939 + # source://rack//lib/rack/lint.rb#918 def call(stream); end - # source://rack//lib/rack/lint.rb#757 + # source://rack//lib/rack/lint.rb#768 def check_content_length_header(status, headers); end - # source://rack//lib/rack/lint.rb#741 + # source://rack//lib/rack/lint.rb#753 def check_content_type_header(status, headers); end - # source://rack//lib/rack/lint.rb#657 + # source://rack//lib/rack/lint.rb#670 def check_early_hints(env); end - # source://rack//lib/rack/lint.rb#101 + # source://rack//lib/rack/lint.rb#136 def check_environment(env); end - # source://rack//lib/rack/lint.rb#531 + # source://rack//lib/rack/lint.rb#571 def check_error_stream(error); end - # source://rack//lib/rack/lint.rb#731 + # source://rack//lib/rack/lint.rb#743 def check_header_value(key, value); end - # source://rack//lib/rack/lint.rb#691 + # source://rack//lib/rack/lint.rb#704 def check_headers(headers); end - # source://rack//lib/rack/lint.rb#591 + # source://rack//lib/rack/lint.rb#618 def check_hijack(env); end - # source://rack//lib/rack/lint.rb#619 + # source://rack//lib/rack/lint.rb#639 def check_hijack_response(headers, env); end - # source://rack//lib/rack/lint.rb#427 + # source://rack//lib/rack/lint.rb#478 def check_input_stream(input); end - # source://rack//lib/rack/lint.rb#785 + # source://rack//lib/rack/lint.rb#795 def check_rack_protocol_header(status, headers); end - # source://rack//lib/rack/lint.rb#680 + # source://rack//lib/rack/lint.rb#694 def check_status(status); end - # source://rack//lib/rack/lint.rb#831 + # source://rack//lib/rack/lint.rb#821 def close; end - # source://rack//lib/rack/lint.rb#865 + # source://rack//lib/rack/lint.rb#852 def each; end - # source://rack//lib/rack/lint.rb#910 + # source://rack//lib/rack/lint.rb#895 def respond_to?(name, *_arg1); end - # source://rack//lib/rack/lint.rb#60 + # source://rack//lib/rack/lint.rb#87 def response; end - # source://rack//lib/rack/lint.rb#926 + # source://rack//lib/rack/lint.rb#905 def to_ary; end - # source://rack//lib/rack/lint.rb#906 + # source://rack//lib/rack/lint.rb#891 def to_path; end - # source://rack//lib/rack/lint.rb#770 + # source://rack//lib/rack/lint.rb#780 def verify_content_length(size); end - # source://rack//lib/rack/lint.rb#847 + # source://rack//lib/rack/lint.rb#835 def verify_to_path; end + + private + + # source://rack//lib/rack/lint.rb#126 + def assert_required(key); end end -# source://rack//lib/rack/lint.rb#904 +# source://rack//lib/rack/lint.rb#889 Rack::Lint::Wrapper::BODY_METHODS = T.let(T.unsafe(nil), Hash) -# source://rack//lib/rack/lint.rb#540 +# source://rack//lib/rack/lint.rb#580 class Rack::Lint::Wrapper::ErrorWrapper - # source://rack//lib/rack/lint.rb#541 + # source://rack//lib/rack/lint.rb#581 def initialize(error); end - # source://rack//lib/rack/lint.rb#563 + # source://rack//lib/rack/lint.rb#602 def close(*args); end - # source://rack//lib/rack/lint.rb#558 + # source://rack//lib/rack/lint.rb#597 def flush; end - # source://rack//lib/rack/lint.rb#546 + # source://rack//lib/rack/lint.rb#586 def puts(str); end - # source://rack//lib/rack/lint.rb#551 + # source://rack//lib/rack/lint.rb#591 def write(str); end end -# source://rack//lib/rack/lint.rb#445 +# source://rack//lib/rack/lint.rb#495 class Rack::Lint::Wrapper::InputWrapper - # source://rack//lib/rack/lint.rb#446 + # source://rack//lib/rack/lint.rb#496 def initialize(input); end - # source://rack//lib/rack/lint.rb#523 + # source://rack//lib/rack/lint.rb#563 def close(*args); end - # source://rack//lib/rack/lint.rb#511 + # source://rack//lib/rack/lint.rb#552 def each(*args); end - # source://rack//lib/rack/lint.rb#452 + # source://rack//lib/rack/lint.rb#501 def gets(*args); end - # source://rack//lib/rack/lint.rb#478 + # source://rack//lib/rack/lint.rb#519 def read(*args); end end -# source://rack//lib/rack/lint.rb#959 +# source://rack//lib/rack/lint.rb#936 class Rack::Lint::Wrapper::StreamWrapper extend ::Forwardable - # source://rack//lib/rack/lint.rb#974 + # source://rack//lib/rack/lint.rb#947 def initialize(stream); end # source://forwardable/1.3.3/forwardable.rb#231 @@ -861,7 +884,7 @@ class Rack::Lint::Wrapper::StreamWrapper def write(*args, **_arg1, &block); end end -# source://rack//lib/rack/lint.rb#967 +# source://rack//lib/rack/lint.rb#940 Rack::Lint::Wrapper::StreamWrapper::REQUIRED_METHODS = T.let(T.unsafe(nil), Array) # source://rack//lib/rack/lock.rb#8 @@ -878,19 +901,10 @@ class Rack::Lock def unlock; end end -# source://rack//lib/rack/logger.rb#10 -class Rack::Logger - # source://rack//lib/rack/logger.rb#11 - def initialize(app, level = T.unsafe(nil)); end - - # source://rack//lib/rack/logger.rb#15 - def call(env); end -end - # source://rack//lib/rack/media_type.rb#6 class Rack::MediaType class << self - # source://rack//lib/rack/media_type.rb#35 + # source://rack//lib/rack/media_type.rb#34 def params(content_type); end # source://rack//lib/rack/media_type.rb#16 @@ -898,7 +912,7 @@ class Rack::MediaType private - # source://rack//lib/rack/media_type.rb#48 + # source://rack//lib/rack/media_type.rb#47 def strip_doublequotes(str); end end end @@ -1018,42 +1032,42 @@ class Rack::MockRequest::FatalWarning < ::RuntimeError; end # source://rack//lib/rack/mock_response.rb#12 class Rack::MockResponse < ::Rack::Response - # source://rack//lib/rack/mock_response.rb#53 + # source://rack//lib/rack/mock_response.rb#47 def initialize(status, headers, body, errors = T.unsafe(nil)); end - # source://rack//lib/rack/mock_response.rb#68 + # source://rack//lib/rack/mock_response.rb#62 def =~(other); end - # source://rack//lib/rack/mock_response.rb#76 + # source://rack//lib/rack/mock_response.rb#70 def body; end - # source://rack//lib/rack/mock_response.rb#102 + # source://rack//lib/rack/mock_response.rb#96 def cookie(name); end - # source://rack//lib/rack/mock_response.rb#48 + # source://rack//lib/rack/mock_response.rb#42 def cookies; end - # source://rack//lib/rack/mock_response.rb#98 + # source://rack//lib/rack/mock_response.rb#92 def empty?; end - # source://rack//lib/rack/mock_response.rb#51 + # source://rack//lib/rack/mock_response.rb#45 def errors; end - # source://rack//lib/rack/mock_response.rb#51 + # source://rack//lib/rack/mock_response.rb#45 def errors=(_arg0); end - # source://rack//lib/rack/mock_response.rb#72 + # source://rack//lib/rack/mock_response.rb#66 def match(other); end - # source://rack//lib/rack/mock_response.rb#48 + # source://rack//lib/rack/mock_response.rb#42 def original_headers; end private - # source://rack//lib/rack/mock_response.rb#129 + # source://rack//lib/rack/mock_response.rb#123 def identify_cookie_attributes(cookie_filling); end - # source://rack//lib/rack/mock_response.rb#108 + # source://rack//lib/rack/mock_response.rb#102 def parse_cookies_from_header; end class << self @@ -1061,8 +1075,37 @@ class Rack::MockResponse < ::Rack::Response end end -# source://rack//lib/rack/mock_response.rb#16 -Rack::MockResponse::Cookie = CGI::Cookie +# source://rack//lib/rack/mock_response.rb#13 +class Rack::MockResponse::Cookie + # source://rack//lib/rack/mock_response.rb#16 + def initialize(args); end + + # source://rack//lib/rack/mock_response.rb#14 + def domain; end + + # source://rack//lib/rack/mock_response.rb#14 + def expires; end + + # source://rack//lib/rack/mock_response.rb#25 + def method_missing(method_name, *args, **_arg2, &block); end + + # source://rack//lib/rack/mock_response.rb#14 + def name; end + + # source://rack//lib/rack/mock_response.rb#14 + def path; end + + # source://rack//lib/rack/mock_response.rb#14 + def secure; end + + # source://rack//lib/rack/mock_response.rb#14 + def value; end + + private + + # source://rack//lib/rack/mock_response.rb#32 + def respond_to_missing?(method_name, include_all = T.unsafe(nil)); end +end # source://rack//lib/rack/multipart/parser.rb#9 module Rack::Multipart @@ -1173,138 +1216,150 @@ class Rack::Multipart::ParamList end end -# source://rack//lib/rack/multipart/parser.rb#41 +# source://rack//lib/rack/multipart/parser.rb#53 class Rack::Multipart::Parser - # source://rack//lib/rack/multipart/parser.rb#202 + # source://rack//lib/rack/multipart/parser.rb#235 def initialize(boundary, tempfile, bufsize, query_parser); end - # source://rack//lib/rack/multipart/parser.rb#219 + # source://rack//lib/rack/multipart/parser.rb#254 def parse(io); end - # source://rack//lib/rack/multipart/parser.rb#242 + # source://rack//lib/rack/multipart/parser.rb#277 def result; end - # source://rack//lib/rack/multipart/parser.rb#200 + # source://rack//lib/rack/multipart/parser.rb#233 def state; end private - # source://rack//lib/rack/multipart/parser.rb#436 + # source://rack//lib/rack/multipart/parser.rb#493 def consume_boundary; end - # source://rack//lib/rack/multipart/parser.rb#254 - def dequote(str); end - - # source://rack//lib/rack/multipart/parser.rb#491 + # source://rack//lib/rack/multipart/parser.rb#548 def find_encoding(enc); end - # source://rack//lib/rack/multipart/parser.rb#296 + # source://rack//lib/rack/multipart/parser.rb#330 def handle_consume_token; end - # source://rack//lib/rack/multipart/parser.rb#497 + # source://rack//lib/rack/multipart/parser.rb#563 + def handle_dummy_encoding(name, body); end + + # source://rack//lib/rack/multipart/parser.rb#573 def handle_empty_content!(content); end - # source://rack//lib/rack/multipart/parser.rb#273 + # source://rack//lib/rack/multipart/parser.rb#303 def handle_fast_forward; end - # source://rack//lib/rack/multipart/parser.rb#413 + # source://rack//lib/rack/multipart/parser.rb#460 def handle_mime_body; end - # source://rack//lib/rack/multipart/parser.rb#308 + # source://rack//lib/rack/multipart/parser.rb#342 def handle_mime_head; end - # source://rack//lib/rack/multipart/parser.rb#445 + # source://rack//lib/rack/multipart/parser.rb#502 def normalize_filename(filename); end - # source://rack//lib/rack/multipart/parser.rb#260 + # source://rack//lib/rack/multipart/parser.rb#290 def read_data(io, outbuf); end - # source://rack//lib/rack/multipart/parser.rb#458 + # source://rack//lib/rack/multipart/parser.rb#515 def tag_multipart_encoding(filename, content_type, name, body); end + # source://rack//lib/rack/multipart/parser.rb#482 + def update_retained_size(size); end + class << self - # source://rack//lib/rack/multipart/parser.rb#89 + # source://rack//lib/rack/multipart/parser.rb#122 def parse(io, content_length, content_type, tmpfile, bufsize, qp); end - # source://rack//lib/rack/multipart/parser.rb#82 + # source://rack//lib/rack/multipart/parser.rb#115 def parse_boundary(content_type); end end end -# source://rack//lib/rack/multipart/parser.rb#42 +# source://rack//lib/rack/multipart/parser.rb#62 +Rack::Multipart::Parser::BOUNDARY_START_LIMIT = T.let(T.unsafe(nil), Integer) + +# source://rack//lib/rack/multipart/parser.rb#80 +Rack::Multipart::Parser::BUFFERED_UPLOAD_BYTESIZE_LIMIT = T.let(T.unsafe(nil), Integer) + +# source://rack//lib/rack/multipart/parser.rb#54 Rack::Multipart::Parser::BUFSIZE = T.let(T.unsafe(nil), Integer) -# source://rack//lib/rack/multipart/parser.rb#50 +# source://rack//lib/rack/multipart/parser.rb#83 class Rack::Multipart::Parser::BoundedIO - # source://rack//lib/rack/multipart/parser.rb#51 + # source://rack//lib/rack/multipart/parser.rb#84 def initialize(io, content_length); end - # source://rack//lib/rack/multipart/parser.rb#57 + # source://rack//lib/rack/multipart/parser.rb#90 def read(size, outbuf = T.unsafe(nil)); end end -# source://rack//lib/rack/multipart/parser.rb#455 +# source://rack//lib/rack/multipart/parser.rb#512 Rack::Multipart::Parser::CHARSET = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/multipart/parser.rb#307 +# source://rack//lib/rack/multipart/parser.rb#341 Rack::Multipart::Parser::CONTENT_DISPOSITION_MAX_BYTES = T.let(T.unsafe(nil), Integer) -# source://rack//lib/rack/multipart/parser.rb#306 +# source://rack//lib/rack/multipart/parser.rb#340 Rack::Multipart::Parser::CONTENT_DISPOSITION_MAX_PARAMS = T.let(T.unsafe(nil), Integer) -# source://rack//lib/rack/multipart/parser.rb#109 +# source://rack//lib/rack/multipart/parser.rb#142 class Rack::Multipart::Parser::Collector include ::Enumerable - # source://rack//lib/rack/multipart/parser.rb#145 + # source://rack//lib/rack/multipart/parser.rb#178 def initialize(tempfile); end - # source://rack//lib/rack/multipart/parser.rb#151 + # source://rack//lib/rack/multipart/parser.rb#184 def each; end - # source://rack//lib/rack/multipart/parser.rb#171 + # source://rack//lib/rack/multipart/parser.rb#204 def on_mime_body(mime_index, content); end - # source://rack//lib/rack/multipart/parser.rb#175 + # source://rack//lib/rack/multipart/parser.rb#208 def on_mime_finish(mime_index); end - # source://rack//lib/rack/multipart/parser.rb#155 + # source://rack//lib/rack/multipart/parser.rb#188 def on_mime_head(mime_index, head, filename, content_type, name); end private - # source://rack//lib/rack/multipart/parser.rb#180 + # source://rack//lib/rack/multipart/parser.rb#213 def check_part_limits; end end -# source://rack//lib/rack/multipart/parser.rb#133 +# source://rack//lib/rack/multipart/parser.rb#166 class Rack::Multipart::Parser::Collector::BufferPart < ::Rack::Multipart::Parser::Collector::MimePart - # source://rack//lib/rack/multipart/parser.rb#135 + # source://rack//lib/rack/multipart/parser.rb#168 def close; end - # source://rack//lib/rack/multipart/parser.rb#134 + # source://rack//lib/rack/multipart/parser.rb#167 def file?; end end -# source://rack//lib/rack/multipart/parser.rb#110 +# source://rack//lib/rack/multipart/parser.rb#143 class Rack::Multipart::Parser::Collector::MimePart < ::Struct - # source://rack//lib/rack/multipart/parser.rb#111 + # source://rack//lib/rack/multipart/parser.rb#144 def get_data; end end -# source://rack//lib/rack/multipart/parser.rb#138 +# source://rack//lib/rack/multipart/parser.rb#171 class Rack::Multipart::Parser::Collector::TempfilePart < ::Rack::Multipart::Parser::Collector::MimePart - # source://rack//lib/rack/multipart/parser.rb#140 + # source://rack//lib/rack/multipart/parser.rb#173 def close; end - # source://rack//lib/rack/multipart/parser.rb#139 + # source://rack//lib/rack/multipart/parser.rb#172 def file?; end end -# source://rack//lib/rack/multipart/parser.rb#80 +# source://rack//lib/rack/multipart/parser.rb#113 Rack::Multipart::Parser::EMPTY = T.let(T.unsafe(nil), Rack::Multipart::Parser::MultipartInfo) -# source://rack//lib/rack/multipart/parser.rb#79 +# source://rack//lib/rack/multipart/parser.rb#65 +Rack::Multipart::Parser::MIME_HEADER_BYTESIZE_LIMIT = T.let(T.unsafe(nil), Integer) + +# source://rack//lib/rack/multipart/parser.rb#112 class Rack::Multipart::Parser::MultipartInfo < ::Struct def params; end def params=(_); end @@ -1320,37 +1375,42 @@ class Rack::Multipart::Parser::MultipartInfo < ::Struct end end -# source://rack//lib/rack/multipart/parser.rb#44 +# source://rack//lib/rack/multipart/parser.rb#554 +Rack::Multipart::Parser::REENCODE_DUMMY_ENCODINGS = T.let(T.unsafe(nil), Hash) + +# source://rack//lib/rack/multipart/parser.rb#56 Rack::Multipart::Parser::TEMPFILE_FACTORY = T.let(T.unsafe(nil), Proc) -# source://rack//lib/rack/multipart/parser.rb#43 +# source://rack//lib/rack/multipart/parser.rb#55 Rack::Multipart::Parser::TEXT_PLAIN = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/multipart/uploaded_file.rb#8 +# source://rack//lib/rack/multipart/uploaded_file.rb#19 class Rack::Multipart::UploadedFile - # source://rack//lib/rack/multipart/uploaded_file.rb#16 + # source://rack//lib/rack/multipart/uploaded_file.rb#49 def initialize(filepath = T.unsafe(nil), ct = T.unsafe(nil), bin = T.unsafe(nil), path: T.unsafe(nil), content_type: T.unsafe(nil), binary: T.unsafe(nil), filename: T.unsafe(nil), io: T.unsafe(nil)); end - # source://rack//lib/rack/multipart/uploaded_file.rb#14 + # source://rack//lib/rack/multipart/uploaded_file.rb#26 def content_type; end - # source://rack//lib/rack/multipart/uploaded_file.rb#14 + # source://rack//lib/rack/multipart/uploaded_file.rb#26 def content_type=(_arg0); end - # source://rack//lib/rack/multipart/uploaded_file.rb#31 + # source://rack//lib/rack/multipart/uploaded_file.rb#66 def local_path; end - # source://rack//lib/rack/multipart/uploaded_file.rb#40 + # source://rack//lib/rack/multipart/uploaded_file.rb#77 def method_missing(method_name, *args, &block); end - # source://rack//lib/rack/multipart/uploaded_file.rb#11 + # source://rack//lib/rack/multipart/uploaded_file.rb#23 def original_filename; end - # source://rack//lib/rack/multipart/uploaded_file.rb#31 + # source://rack//lib/rack/multipart/uploaded_file.rb#66 def path; end - # source://rack//lib/rack/multipart/uploaded_file.rb#36 - def respond_to?(*args); end + private + + # source://rack//lib/rack/multipart/uploaded_file.rb#72 + def respond_to_missing?(*args); end end # source://rack//lib/rack/null_logger.rb#6 @@ -1475,42 +1535,48 @@ Rack::QUERY_STRING = T.let(T.unsafe(nil), String) # source://rack//lib/rack/query_parser.rb#7 class Rack::QueryParser - # source://rack//lib/rack/query_parser.rb#60 + # source://rack//lib/rack/query_parser.rb#62 def initialize(params_class, param_depth_limit, bytesize_limit: T.unsafe(nil), params_limit: T.unsafe(nil)); end - # source://rack//lib/rack/query_parser.rb#192 - def make_params; end + # source://rack//lib/rack/query_parser.rb#60 + def bytesize_limit; end # source://rack//lib/rack/query_parser.rb#196 + def make_params; end + + # source://rack//lib/rack/query_parser.rb#200 def new_depth_limit(param_depth_limit); end - # source://rack//lib/rack/query_parser.rb#120 + # source://rack//lib/rack/query_parser.rb#124 def normalize_params(params, name, v, _depth = T.unsafe(nil)); end # source://rack//lib/rack/query_parser.rb#40 def param_depth_limit; end - # source://rack//lib/rack/query_parser.rb#99 + # source://rack//lib/rack/query_parser.rb#109 def parse_nested_query(qs, separator = T.unsafe(nil)); end - # source://rack//lib/rack/query_parser.rb#71 + # source://rack//lib/rack/query_parser.rb#73 def parse_query(qs, separator = T.unsafe(nil), &unescaper); end + # source://rack//lib/rack/query_parser.rb#94 + def parse_query_pairs(qs, separator = T.unsafe(nil)); end + private - # source://rack//lib/rack/query_parser.rb#124 + # source://rack//lib/rack/query_parser.rb#128 def _normalize_params(params, name, v, depth); end - # source://rack//lib/rack/query_parser.rb#218 - def check_query_string(qs, sep); end + # source://rack//lib/rack/query_parser.rb#222 + def each_query_pair(qs, separator, unescaper = T.unsafe(nil)); end - # source://rack//lib/rack/query_parser.rb#206 + # source://rack//lib/rack/query_parser.rb#210 def params_hash_has_key?(hash, key); end - # source://rack//lib/rack/query_parser.rb#202 + # source://rack//lib/rack/query_parser.rb#206 def params_hash_type?(obj); end - # source://rack//lib/rack/query_parser.rb#234 + # source://rack//lib/rack/query_parser.rb#253 def unescape(string, encoding = T.unsafe(nil)); end class << self @@ -1541,7 +1607,7 @@ class Rack::QueryParser::ParameterTypeError < ::TypeError include ::Rack::BadRequest end -# source://rack//lib/rack/query_parser.rb#238 +# source://rack//lib/rack/query_parser.rb#257 class Rack::QueryParser::Params < ::Hash def to_params_hash; end end @@ -1572,7 +1638,7 @@ Rack::RACK_IS_HIJACK = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#45 Rack::RACK_LOGGER = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#66 +# source://rack//lib/rack/constants.rb#67 Rack::RACK_METHODOVERRIDE_ORIGINAL_METHOD = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#54 @@ -1581,34 +1647,37 @@ Rack::RACK_MULTIPART_BUFFER_SIZE = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#55 Rack::RACK_MULTIPART_TEMPFILE_FACTORY = T.let(T.unsafe(nil), String) +# source://rack//lib/rack/constants.rb#57 +Rack::RACK_PROTOCOL = T.let(T.unsafe(nil), String) + # source://rack//lib/rack/constants.rb#53 Rack::RACK_RECURSIVE_INCLUDE = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#62 +# source://rack//lib/rack/constants.rb#63 Rack::RACK_REQUEST_COOKIE_HASH = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#63 +# source://rack//lib/rack/constants.rb#64 Rack::RACK_REQUEST_COOKIE_STRING = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#61 +# source://rack//lib/rack/constants.rb#62 Rack::RACK_REQUEST_FORM_ERROR = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#58 +# source://rack//lib/rack/constants.rb#59 Rack::RACK_REQUEST_FORM_HASH = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#57 +# source://rack//lib/rack/constants.rb#58 Rack::RACK_REQUEST_FORM_INPUT = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#59 +# source://rack//lib/rack/constants.rb#60 Rack::RACK_REQUEST_FORM_PAIRS = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#60 +# source://rack//lib/rack/constants.rb#61 Rack::RACK_REQUEST_FORM_VARS = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#64 +# source://rack//lib/rack/constants.rb#65 Rack::RACK_REQUEST_QUERY_HASH = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/constants.rb#65 +# source://rack//lib/rack/constants.rb#66 Rack::RACK_REQUEST_QUERY_STRING = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#56 @@ -1632,7 +1701,7 @@ Rack::RACK_URL_SCHEME = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#41 Rack::RACK_VERSION = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/version.rb#15 +# source://rack//lib/rack/version.rb#11 Rack::RELEASE = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#9 @@ -1691,13 +1760,16 @@ class Rack::Request # source://rack//lib/rack/request.rb#62 def initialize(env); end - # source://rack//lib/rack/request.rb#76 + # source://rack//lib/rack/request.rb#81 def delete_param(k); end - # source://rack//lib/rack/request.rb#67 + # source://rack//lib/rack/request.rb#68 + def ip; end + + # source://rack//lib/rack/request.rb#72 def params; end - # source://rack//lib/rack/request.rb#71 + # source://rack//lib/rack/request.rb#76 def update_param(k, v); end class << self @@ -1724,305 +1796,305 @@ end # source://rack//lib/rack/request.rb#60 Rack::Request::ALLOWED_SCHEMES = T.let(T.unsafe(nil), Array) -# source://rack//lib/rack/request.rb#82 +# source://rack//lib/rack/request.rb#87 module Rack::Request::Env - # source://rack//lib/rack/request.rb#86 + # source://rack//lib/rack/request.rb#91 def initialize(env); end - # source://rack//lib/rack/request.rb#129 + # source://rack//lib/rack/request.rb#134 def add_header(key, v); end - # source://rack//lib/rack/request.rb#140 + # source://rack//lib/rack/request.rb#145 def delete_header(name); end - # source://rack//lib/rack/request.rb#111 + # source://rack//lib/rack/request.rb#116 def each_header(&block); end - # source://rack//lib/rack/request.rb#84 + # source://rack//lib/rack/request.rb#89 def env; end - # source://rack//lib/rack/request.rb#106 + # source://rack//lib/rack/request.rb#111 def fetch_header(name, &block); end - # source://rack//lib/rack/request.rb#100 + # source://rack//lib/rack/request.rb#105 def get_header(name); end - # source://rack//lib/rack/request.rb#95 + # source://rack//lib/rack/request.rb#100 def has_header?(name); end - # source://rack//lib/rack/request.rb#116 + # source://rack//lib/rack/request.rb#121 def set_header(name, v); end private - # source://rack//lib/rack/request.rb#144 + # source://rack//lib/rack/request.rb#149 def initialize_copy(other); end end -# source://rack//lib/rack/request.rb#149 +# source://rack//lib/rack/request.rb#154 module Rack::Request::Helpers - # source://rack//lib/rack/request.rb#484 + # source://rack//lib/rack/request.rb#491 def GET; end - # source://rack//lib/rack/request.rb#503 + # source://rack//lib/rack/request.rb#542 def POST; end - # source://rack//lib/rack/request.rb#607 + # source://rack//lib/rack/request.rb#611 def accept_encoding; end - # source://rack//lib/rack/request.rb#611 + # source://rack//lib/rack/request.rb#615 def accept_language; end - # source://rack//lib/rack/request.rb#266 + # source://rack//lib/rack/request.rb#271 def authority; end - # source://rack//lib/rack/request.rb#590 + # source://rack//lib/rack/request.rb#594 def base_url; end - # source://rack//lib/rack/request.rb#190 + # source://rack//lib/rack/request.rb#195 def body; end - # source://rack//lib/rack/request.rb#458 + # source://rack//lib/rack/request.rb#465 def content_charset; end - # source://rack//lib/rack/request.rb#199 + # source://rack//lib/rack/request.rb#204 def content_length; end - # source://rack//lib/rack/request.rb#308 + # source://rack//lib/rack/request.rb#313 def content_type; end - # source://rack//lib/rack/request.rb#293 + # source://rack//lib/rack/request.rb#298 def cookies; end - # source://rack//lib/rack/request.rb#220 + # source://rack//lib/rack/request.rb#225 def delete?; end - # source://rack//lib/rack/request.rb#585 + # source://rack//lib/rack/request.rb#589 def delete_param(k); end - # source://rack//lib/rack/request.rb#470 + # source://rack//lib/rack/request.rb#477 def form_data?; end - # source://rack//lib/rack/request.rb#393 + # source://rack//lib/rack/request.rb#499 + def form_pairs; end + + # source://rack//lib/rack/request.rb#398 def forwarded_authority; end - # source://rack//lib/rack/request.rb#353 + # source://rack//lib/rack/request.rb#358 def forwarded_for; end - # source://rack//lib/rack/request.rb#374 + # source://rack//lib/rack/request.rb#379 def forwarded_port; end - # source://rack//lib/rack/request.rb#603 + # source://rack//lib/rack/request.rb#607 def fullpath; end - # source://rack//lib/rack/request.rb#223 + # source://rack//lib/rack/request.rb#228 def get?; end - # source://rack//lib/rack/request.rb#226 + # source://rack//lib/rack/request.rb#231 def head?; end - # source://rack//lib/rack/request.rb#333 + # source://rack//lib/rack/request.rb#338 def host; end - # source://rack//lib/rack/request.rb#318 + # source://rack//lib/rack/request.rb#323 def host_authority; end - # source://rack//lib/rack/request.rb#322 + # source://rack//lib/rack/request.rb#327 def host_with_port(authority = T.unsafe(nil)); end - # source://rack//lib/rack/request.rb#341 + # source://rack//lib/rack/request.rb#346 def hostname; end - # source://rack//lib/rack/request.rb#414 + # source://rack//lib/rack/request.rb#419 def ip; end - # source://rack//lib/rack/request.rb#232 + # source://rack//lib/rack/request.rb#237 def link?; end - # source://rack//lib/rack/request.rb#200 + # source://rack//lib/rack/request.rb#205 def logger; end - # source://rack//lib/rack/request.rb#441 + # source://rack//lib/rack/request.rb#448 def media_type; end - # source://rack//lib/rack/request.rb#450 + # source://rack//lib/rack/request.rb#457 def media_type_params; end - # source://rack//lib/rack/request.rb#229 + # source://rack//lib/rack/request.rb#234 def options?; end # source://rack//lib/rack/request.rb#556 def params; end - # source://rack//lib/rack/request.rb#479 + # source://rack//lib/rack/request.rb#486 def parseable_data?; end - # source://rack//lib/rack/request.rb#235 + # source://rack//lib/rack/request.rb#240 def patch?; end - # source://rack//lib/rack/request.rb#599 + # source://rack//lib/rack/request.rb#603 def path; end - # source://rack//lib/rack/request.rb#194 + # source://rack//lib/rack/request.rb#199 def path_info; end - # source://rack//lib/rack/request.rb#195 + # source://rack//lib/rack/request.rb#200 def path_info=(s); end - # source://rack//lib/rack/request.rb#345 + # source://rack//lib/rack/request.rb#350 def port; end - # source://rack//lib/rack/request.rb#238 + # source://rack//lib/rack/request.rb#243 def post?; end - # source://rack//lib/rack/request.rb#241 + # source://rack//lib/rack/request.rb#246 def put?; end - # source://rack//lib/rack/request.rb#198 + # source://rack//lib/rack/request.rb#562 + def query_parser=(_arg0); end + + # source://rack//lib/rack/request.rb#203 def query_string; end - # source://rack//lib/rack/request.rb#204 + # source://rack//lib/rack/request.rb#209 def referer; end - # source://rack//lib/rack/request.rb#204 + # source://rack//lib/rack/request.rb#209 def referrer; end - # source://rack//lib/rack/request.rb#197 + # source://rack//lib/rack/request.rb#202 def request_method; end - # source://rack//lib/rack/request.rb#249 + # source://rack//lib/rack/request.rb#254 def scheme; end - # source://rack//lib/rack/request.rb#191 + # source://rack//lib/rack/request.rb#196 def script_name; end - # source://rack//lib/rack/request.rb#192 + # source://rack//lib/rack/request.rb#197 def script_name=(s); end - # source://rack//lib/rack/request.rb#272 + # source://rack//lib/rack/request.rb#277 def server_authority; end - # source://rack//lib/rack/request.rb#285 + # source://rack//lib/rack/request.rb#290 def server_name; end - # source://rack//lib/rack/request.rb#289 + # source://rack//lib/rack/request.rb#294 def server_port; end - # source://rack//lib/rack/request.rb#207 + # source://rack//lib/rack/request.rb#212 def session; end - # source://rack//lib/rack/request.rb#213 + # source://rack//lib/rack/request.rb#218 def session_options; end - # source://rack//lib/rack/request.rb#410 + # source://rack//lib/rack/request.rb#415 def ssl?; end - # source://rack//lib/rack/request.rb#244 + # source://rack//lib/rack/request.rb#249 def trace?; end - # source://rack//lib/rack/request.rb#615 + # source://rack//lib/rack/request.rb#619 def trusted_proxy?(ip); end - # source://rack//lib/rack/request.rb#247 + # source://rack//lib/rack/request.rb#252 def unlink?; end - # source://rack//lib/rack/request.rb#565 + # source://rack//lib/rack/request.rb#569 def update_param(k, v); end - # source://rack//lib/rack/request.rb#595 + # source://rack//lib/rack/request.rb#599 def url; end - # source://rack//lib/rack/request.rb#201 + # source://rack//lib/rack/request.rb#206 def user_agent; end - # source://rack//lib/rack/request.rb#620 - def values_at(*keys); end - - # source://rack//lib/rack/request.rb#313 + # source://rack//lib/rack/request.rb#318 def xhr?; end private - # source://rack//lib/rack/request.rb#776 + # source://rack//lib/rack/request.rb#770 def allowed_scheme(header); end - # source://rack//lib/rack/request.rb#628 + # source://rack//lib/rack/request.rb#625 def default_session; end - # source://rack//lib/rack/request.rb#684 + # source://rack//lib/rack/request.rb#682 def expand_param_pairs(pairs, query_parser = T.unsafe(nil)); end - # source://rack//lib/rack/request.rb#780 + # source://rack//lib/rack/request.rb#774 def forwarded_priority; end - # source://rack//lib/rack/request.rb#752 + # source://rack//lib/rack/request.rb#746 def forwarded_scheme; end - # source://rack//lib/rack/request.rb#668 + # source://rack//lib/rack/request.rb#665 def get_http_forwarded(token); end - # source://rack//lib/rack/request.rb#644 + # source://rack//lib/rack/request.rb#641 def parse_http_accept_header(header); end - # source://rack//lib/rack/request.rb#680 + # source://rack//lib/rack/request.rb#677 def parse_multipart; end - # source://rack//lib/rack/request.rb#676 + # source://rack//lib/rack/request.rb#673 def parse_query(qs, d = T.unsafe(nil)); end - # source://rack//lib/rack/request.rb#672 + # source://rack//lib/rack/request.rb#669 def query_parser; end - # source://rack//lib/rack/request.rb#743 - def reject_trusted_ip_addresses(ip_addresses); end - - # source://rack//lib/rack/request.rb#737 + # source://rack//lib/rack/request.rb#735 def split_authority(authority); end - # source://rack//lib/rack/request.rb#694 + # source://rack//lib/rack/request.rb#692 def split_header(value); end - # source://rack//lib/rack/request.rb#631 + # source://rack//lib/rack/request.rb#628 def wrap_ipv6(host); end - # source://rack//lib/rack/request.rb#784 + # source://rack//lib/rack/request.rb#778 def x_forwarded_proto_priority; end end -# source://rack//lib/rack/request.rb#722 +# source://rack//lib/rack/request.rb#720 Rack::Request::Helpers::AUTHORITY = T.let(T.unsafe(nil), Regexp) -# source://rack//lib/rack/request.rb#168 +# source://rack//lib/rack/request.rb#173 Rack::Request::Helpers::DEFAULT_PORTS = T.let(T.unsafe(nil), Hash) -# source://rack//lib/rack/request.rb#153 +# source://rack//lib/rack/request.rb#158 Rack::Request::Helpers::FORM_DATA_MEDIA_TYPES = T.let(T.unsafe(nil), Array) -# source://rack//lib/rack/request.rb#747 +# source://rack//lib/rack/request.rb#741 Rack::Request::Helpers::FORWARDED_SCHEME_HEADERS = T.let(T.unsafe(nil), Hash) -# source://rack//lib/rack/request.rb#176 +# source://rack//lib/rack/request.rb#181 Rack::Request::Helpers::HTTP_FORWARDED = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/request.rb#171 +# source://rack//lib/rack/request.rb#176 Rack::Request::Helpers::HTTP_X_FORWARDED_FOR = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/request.rb#174 +# source://rack//lib/rack/request.rb#179 Rack::Request::Helpers::HTTP_X_FORWARDED_HOST = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/request.rb#185 +# source://rack//lib/rack/request.rb#190 Rack::Request::Helpers::HTTP_X_FORWARDED_PORT = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/request.rb#182 +# source://rack//lib/rack/request.rb#187 Rack::Request::Helpers::HTTP_X_FORWARDED_PROTO = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/request.rb#179 +# source://rack//lib/rack/request.rb#184 Rack::Request::Helpers::HTTP_X_FORWARDED_SCHEME = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/request.rb#188 +# source://rack//lib/rack/request.rb#193 Rack::Request::Helpers::HTTP_X_FORWARDED_SSL = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/request.rb#161 +# source://rack//lib/rack/request.rb#166 Rack::Request::Helpers::PARSEABLE_DATA_MEDIA_TYPES = T.let(T.unsafe(nil), Array) # source://rack//lib/rack/response.rb#23 @@ -2272,33 +2344,33 @@ Rack::Response::STATUS_WITH_NO_ENTITY_BODY = T.let(T.unsafe(nil), Hash) # source://rack//lib/rack/rewindable_input.rb#14 class Rack::RewindableInput - # source://rack//lib/rack/rewindable_input.rb#29 + # source://rack//lib/rack/rewindable_input.rb#32 def initialize(io); end - # source://rack//lib/rack/rewindable_input.rb#65 + # source://rack//lib/rack/rewindable_input.rb#68 def close; end - # source://rack//lib/rack/rewindable_input.rb#45 + # source://rack//lib/rack/rewindable_input.rb#48 def each(&block); end - # source://rack//lib/rack/rewindable_input.rb#35 + # source://rack//lib/rack/rewindable_input.rb#38 def gets; end - # source://rack//lib/rack/rewindable_input.rb#40 + # source://rack//lib/rack/rewindable_input.rb#43 def read(*args); end - # source://rack//lib/rack/rewindable_input.rb#50 + # source://rack//lib/rack/rewindable_input.rb#53 def rewind; end - # source://rack//lib/rack/rewindable_input.rb#55 + # source://rack//lib/rack/rewindable_input.rb#58 def size; end private - # source://rack//lib/rack/rewindable_input.rb#109 + # source://rack//lib/rack/rewindable_input.rb#112 def filesystem_has_posix_semantics?; end - # source://rack//lib/rack/rewindable_input.rb#78 + # source://rack//lib/rack/rewindable_input.rb#81 def make_rewindable; end end @@ -2341,21 +2413,24 @@ Rack::SERVER_PROTOCOL = T.let(T.unsafe(nil), String) # source://rack//lib/rack/constants.rb#24 Rack::SET_COOKIE = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/sendfile.rb#104 +# source://rack//lib/rack/sendfile.rb#121 class Rack::Sendfile - # source://rack//lib/rack/sendfile.rb#105 + # source://rack//lib/rack/sendfile.rb#122 def initialize(app, variation = T.unsafe(nil), mappings = T.unsafe(nil)); end - # source://rack//lib/rack/sendfile.rb#113 + # source://rack//lib/rack/sendfile.rb#130 def call(env); end private - # source://rack//lib/rack/sendfile.rb#154 + # source://rack//lib/rack/sendfile.rb#182 def map_accel_path(env, path); end - # source://rack//lib/rack/sendfile.rb#148 + # source://rack//lib/rack/sendfile.rb#166 def variation(env); end + + # source://rack//lib/rack/sendfile.rb#172 + def x_accel_mapping(env); end end # source://rack//lib/rack/show_exceptions.rb#18 @@ -2369,16 +2444,16 @@ class Rack::ShowExceptions # source://rack//lib/rack/show_exceptions.rb#65 def dump_exception(exception); end - # source://rack//lib/rack/show_exceptions.rb#116 + # source://rack//lib/rack/show_exceptions.rb#120 def h(obj); end # source://rack//lib/rack/show_exceptions.rb#56 def prefers_plaintext?(env); end - # source://rack//lib/rack/show_exceptions.rb#76 + # source://rack//lib/rack/show_exceptions.rb#80 def pretty(env, exception); end - # source://rack//lib/rack/show_exceptions.rb#112 + # source://rack//lib/rack/show_exceptions.rb#116 def template; end private @@ -2418,7 +2493,7 @@ class Rack::ShowExceptions::Frame < ::Struct end end -# source://rack//lib/rack/show_exceptions.rb#131 +# source://rack//lib/rack/show_exceptions.rb#135 Rack::ShowExceptions::TEMPLATE = T.let(T.unsafe(nil), ERB) # source://rack//lib/rack/show_status.rb#18 @@ -2508,30 +2583,27 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#110 def build_query(params); end - # source://rack//lib/rack/utils.rb#409 + # source://rack//lib/rack/utils.rb#402 def byte_ranges(env, size); end - # source://rack//lib/rack/utils.rb#609 + # source://rack//lib/rack/utils.rb#600 def clean_path_info(path_info); end # source://rack//lib/rack/utils.rb#91 def clock_time; end - # source://rack//lib/rack/utils.rb#367 + # source://rack//lib/rack/utils.rb#360 def delete_cookie_header!(headers, key, value = T.unsafe(nil)); end - # source://rack//lib/rack/utils.rb#363 + # source://rack//lib/rack/utils.rb#356 def delete_set_cookie_header(key, value = T.unsafe(nil)); end - # source://rack//lib/rack/utils.rb#391 + # source://rack//lib/rack/utils.rb#384 def delete_set_cookie_header!(header, key, value = T.unsafe(nil)); end # source://rack//lib/rack/utils.rb#40 def escape(s); end - # source://rack//lib/rack/utils.rb#262 - def escape_cookie_key(key); end - def escape_html(_arg0); end # source://rack//lib/rack/utils.rb#46 @@ -2540,13 +2612,13 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#149 def forwarded_values(forwarded_header); end - # source://rack//lib/rack/utils.rb#413 + # source://rack//lib/rack/utils.rb#406 def get_byte_ranges(http_range, size); end - # source://rack//lib/rack/utils.rb#253 + # source://rack//lib/rack/utils.rb#257 def parse_cookies(env); end - # source://rack//lib/rack/utils.rb#234 + # source://rack//lib/rack/utils.rb#238 def parse_cookies_header(value); end # source://rack//lib/rack/utils.rb#106 @@ -2558,22 +2630,22 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#138 def q_values(q_value_header); end - # source://rack//lib/rack/utils.rb#402 + # source://rack//lib/rack/utils.rb#395 def rfc2822(time); end - # source://rack//lib/rack/utils.rb#455 + # source://rack//lib/rack/utils.rb#448 def secure_compare(a, b); end - # source://rack//lib/rack/utils.rb#192 + # source://rack//lib/rack/utils.rb#196 def select_best_encoding(available_encodings, accept_encoding); end - # source://rack//lib/rack/utils.rb#294 + # source://rack//lib/rack/utils.rb#286 def set_cookie_header(key, value); end - # source://rack//lib/rack/utils.rb#337 + # source://rack//lib/rack/utils.rb#330 def set_cookie_header!(headers, key, value); end - # source://rack//lib/rack/utils.rb#589 + # source://rack//lib/rack/utils.rb#582 def status_code(status); end # source://rack//lib/rack/utils.rb#58 @@ -2582,7 +2654,7 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#52 def unescape_path(s); end - # source://rack//lib/rack/utils.rb#626 + # source://rack//lib/rack/utils.rb#617 def valid_path?(path); end class << self @@ -2595,10 +2667,10 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#110 def build_query(params); end - # source://rack//lib/rack/utils.rb#409 + # source://rack//lib/rack/utils.rb#402 def byte_ranges(env, size); end - # source://rack//lib/rack/utils.rb#609 + # source://rack//lib/rack/utils.rb#600 def clean_path_info(path_info); end # source://rack//lib/rack/utils.rb#91 @@ -2610,21 +2682,18 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#30 def default_query_parser=(_arg0); end - # source://rack//lib/rack/utils.rb#367 + # source://rack//lib/rack/utils.rb#360 def delete_cookie_header!(headers, key, value = T.unsafe(nil)); end - # source://rack//lib/rack/utils.rb#363 + # source://rack//lib/rack/utils.rb#356 def delete_set_cookie_header(key, value = T.unsafe(nil)); end - # source://rack//lib/rack/utils.rb#391 + # source://rack//lib/rack/utils.rb#384 def delete_set_cookie_header!(header, key, value = T.unsafe(nil)); end # source://rack//lib/rack/utils.rb#40 def escape(s); end - # source://rack//lib/rack/utils.rb#262 - def escape_cookie_key(key); end - def escape_html(_arg0); end # source://rack//lib/rack/utils.rb#46 @@ -2633,7 +2702,7 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#149 def forwarded_values(forwarded_header); end - # source://rack//lib/rack/utils.rb#413 + # source://rack//lib/rack/utils.rb#406 def get_byte_ranges(http_range, size); end # source://rack//lib/rack/utils.rb#65 @@ -2660,10 +2729,10 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#86 def param_depth_limit=(v); end - # source://rack//lib/rack/utils.rb#253 + # source://rack//lib/rack/utils.rb#257 def parse_cookies(env); end - # source://rack//lib/rack/utils.rb#234 + # source://rack//lib/rack/utils.rb#238 def parse_cookies_header(value); end # source://rack//lib/rack/utils.rb#106 @@ -2675,22 +2744,22 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#138 def q_values(q_value_header); end - # source://rack//lib/rack/utils.rb#402 + # source://rack//lib/rack/utils.rb#395 def rfc2822(time); end - # source://rack//lib/rack/utils.rb#455 + # source://rack//lib/rack/utils.rb#448 def secure_compare(a, b); end - # source://rack//lib/rack/utils.rb#192 + # source://rack//lib/rack/utils.rb#196 def select_best_encoding(available_encodings, accept_encoding); end - # source://rack//lib/rack/utils.rb#294 + # source://rack//lib/rack/utils.rb#286 def set_cookie_header(key, value); end - # source://rack//lib/rack/utils.rb#337 + # source://rack//lib/rack/utils.rb#330 def set_cookie_header!(headers, key, value); end - # source://rack//lib/rack/utils.rb#589 + # source://rack//lib/rack/utils.rb#582 def status_code(status); end # source://rack//lib/rack/utils.rb#58 @@ -2699,7 +2768,7 @@ module Rack::Utils # source://rack//lib/rack/utils.rb#52 def unescape_path(s); end - # source://rack//lib/rack/utils.rb#626 + # source://rack//lib/rack/utils.rb#617 def valid_path?(path); end end end @@ -2707,31 +2776,31 @@ end # source://rack//lib/rack/utils.rb#25 Rack::Utils::COMMON_SEP = T.let(T.unsafe(nil), Hash) -# source://rack//lib/rack/utils.rb#478 +# source://rack//lib/rack/utils.rb#471 class Rack::Utils::Context - # source://rack//lib/rack/utils.rb#481 + # source://rack//lib/rack/utils.rb#474 def initialize(app_f, app_r); end - # source://rack//lib/rack/utils.rb#479 + # source://rack//lib/rack/utils.rb#472 def app; end - # source://rack//lib/rack/utils.rb#486 + # source://rack//lib/rack/utils.rb#479 def call(env); end - # source://rack//lib/rack/utils.rb#494 + # source://rack//lib/rack/utils.rb#487 def context(env, app = T.unsafe(nil)); end - # source://rack//lib/rack/utils.rb#479 + # source://rack//lib/rack/utils.rb#472 def for; end - # source://rack//lib/rack/utils.rb#490 + # source://rack//lib/rack/utils.rb#483 def recontext(app); end end # source://rack//lib/rack/utils.rb#24 Rack::Utils::DEFAULT_SEP = T.let(T.unsafe(nil), Regexp) -# source://rack//lib/rack/utils.rb#505 +# source://rack//lib/rack/utils.rb#498 Rack::Utils::HTTP_STATUS_CODES = T.let(T.unsafe(nil), Hash) # source://rack//lib/rack/utils.rb#22 @@ -2740,16 +2809,16 @@ Rack::Utils::InvalidParameterError = Rack::QueryParser::InvalidParameterError # source://rack//lib/rack/utils.rb#26 Rack::Utils::KeySpaceConstrainedParams = Rack::QueryParser::Params -# source://rack//lib/rack/utils.rb#624 +# source://rack//lib/rack/utils.rb#615 Rack::Utils::NULL_BYTE = T.let(T.unsafe(nil), String) -# source://rack//lib/rack/utils.rb#575 +# source://rack//lib/rack/utils.rb#568 Rack::Utils::OBSOLETE_SYMBOLS_TO_STATUS_CODES = T.let(T.unsafe(nil), Hash) -# source://rack//lib/rack/utils.rb#583 +# source://rack//lib/rack/utils.rb#576 Rack::Utils::OBSOLETE_SYMBOL_MAPPINGS = T.let(T.unsafe(nil), Hash) -# source://rack//lib/rack/utils.rb#607 +# source://rack//lib/rack/utils.rb#598 Rack::Utils::PATH_SEPS = T.let(T.unsafe(nil), Regexp) # source://rack//lib/rack/utils.rb#21 @@ -2758,14 +2827,17 @@ Rack::Utils::ParameterTypeError = Rack::QueryParser::ParameterTypeError # source://rack//lib/rack/utils.rb#23 Rack::Utils::ParamsTooDeepError = Rack::QueryParser::QueryLimitError -# source://rack//lib/rack/utils.rb#569 +# source://rack//lib/rack/utils.rb#562 Rack::Utils::STATUS_WITH_NO_ENTITY_BODY = T.let(T.unsafe(nil), Hash) -# source://rack//lib/rack/utils.rb#571 +# source://rack//lib/rack/utils.rb#564 Rack::Utils::SYMBOL_TO_STATUS_CODE = T.let(T.unsafe(nil), Hash) # source://rack//lib/rack/utils.rb#27 Rack::Utils::URI_PARSER = T.let(T.unsafe(nil), URI::RFC2396_Parser) -# source://rack//lib/rack/utils.rb#259 +# source://rack//lib/rack/utils.rb#263 Rack::Utils::VALID_COOKIE_KEY = T.let(T.unsafe(nil), Regexp) + +# source://rack//lib/rack/version.rb#9 +Rack::VERSION = T.let(T.unsafe(nil), String) diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/rainbow@3.1.1.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/rainbow@3.1.1.rbi index f64624b84a..fe353cc0e9 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/rainbow@3.1.1.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/rainbow@3.1.1.rbi @@ -8,6 +8,7 @@ class Object < ::BasicObject include ::Kernel include ::PP::ObjectMixin + include ::Udb::Helpers::WavedromUtil private diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/rbi@0.3.6.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/rbi@0.3.7.rbi similarity index 86% rename from tools/ruby-gems/udb/sorbet/rbi/gems/rbi@0.3.6.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/rbi@0.3.7.rbi index 6f7cb15613..ed045a5b13 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/rbi@0.3.6.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/rbi@0.3.7.rbi @@ -14,32 +14,32 @@ # source://rbi//lib/rbi.rb#7 module RBI; end -# source://rbi//lib/rbi/model.rb#783 +# source://rbi//lib/rbi/model.rb#833 class RBI::Arg < ::RBI::Node - # source://rbi//lib/rbi/model.rb#788 + # source://rbi//lib/rbi/model.rb#838 sig { params(value: ::String, loc: T.nilable(::RBI::Loc)).void } def initialize(value, loc: T.unsafe(nil)); end - # source://rbi//lib/rbi/model.rb#794 + # source://rbi//lib/rbi/model.rb#844 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/model.rb#799 + # source://rbi//lib/rbi/model.rb#849 sig { returns(::String) } def to_s; end - # source://rbi//lib/rbi/model.rb#785 + # source://rbi//lib/rbi/model.rb#835 sig { returns(::String) } def value; end end -# source://rbi//lib/rbi/model.rb#292 +# source://rbi//lib/rbi/model.rb#298 class RBI::Attr < ::RBI::NodeWithComments include ::RBI::Indexable abstract! - # source://rbi//lib/rbi/model.rb#303 + # source://rbi//lib/rbi/model.rb#316 sig do params( name: ::Symbol, @@ -52,7 +52,7 @@ class RBI::Attr < ::RBI::NodeWithComments end def initialize(name, names, visibility: T.unsafe(nil), sigs: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil)); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#403 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#407 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -60,7 +60,7 @@ class RBI::Attr < ::RBI::NodeWithComments sig { abstract.returns(T::Array[::RBI::Method]) } def convert_to_methods; end - # source://rbi//lib/rbi/model.rb#312 + # source://rbi//lib/rbi/model.rb#325 sig { abstract.returns(T::Array[::String]) } def fully_qualified_names; end @@ -68,23 +68,23 @@ class RBI::Attr < ::RBI::NodeWithComments sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#412 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#416 sig { override.params(other: ::RBI::Node).void } def merge_with(other); end - # source://rbi//lib/rbi/model.rb#294 + # source://rbi//lib/rbi/model.rb#300 sig { returns(T::Array[::Symbol]) } def names; end - # source://rbi//lib/rbi/model.rb#300 + # source://rbi//lib/rbi/model.rb#306 sig { returns(T::Array[::RBI::Sig]) } def sigs; end - # source://rbi//lib/rbi/model.rb#297 + # source://rbi//lib/rbi/model.rb#303 sig { returns(::RBI::Visibility) } def visibility; end - # source://rbi//lib/rbi/model.rb#297 + # source://rbi//lib/rbi/model.rb#303 def visibility=(_arg0); end private @@ -101,7 +101,7 @@ class RBI::Attr < ::RBI::NodeWithComments end def create_getter_method(name, sig, visibility, loc, comments); end - # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#92 + # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#99 sig do params( name: ::String, @@ -119,9 +119,9 @@ class RBI::Attr < ::RBI::NodeWithComments def parse_sig; end end -# source://rbi//lib/rbi/model.rb#315 +# source://rbi//lib/rbi/model.rb#328 class RBI::AttrAccessor < ::RBI::Attr - # source://rbi//lib/rbi/model.rb#317 + # source://rbi//lib/rbi/model.rb#337 sig do params( name: ::Symbol, @@ -135,26 +135,26 @@ class RBI::AttrAccessor < ::RBI::Attr end def initialize(name, *names, visibility: T.unsafe(nil), sigs: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#441 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#445 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end - # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#123 + # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#130 sig { override.returns(T::Array[::RBI::Method]) } def convert_to_methods; end - # source://rbi//lib/rbi/model.rb#324 + # source://rbi//lib/rbi/model.rb#344 sig { override.returns(T::Array[::String]) } def fully_qualified_names; end - # source://rbi//lib/rbi/model.rb#331 + # source://rbi//lib/rbi/model.rb#351 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#337 +# source://rbi//lib/rbi/model.rb#357 class RBI::AttrReader < ::RBI::Attr - # source://rbi//lib/rbi/model.rb#339 + # source://rbi//lib/rbi/model.rb#366 sig do params( name: ::Symbol, @@ -168,26 +168,26 @@ class RBI::AttrReader < ::RBI::Attr end def initialize(name, *names, visibility: T.unsafe(nil), sigs: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#425 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#429 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end - # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#138 + # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#145 sig { override.returns(T::Array[::RBI::Method]) } def convert_to_methods; end - # source://rbi//lib/rbi/model.rb#346 + # source://rbi//lib/rbi/model.rb#373 sig { override.returns(T::Array[::String]) } def fully_qualified_names; end - # source://rbi//lib/rbi/model.rb#353 + # source://rbi//lib/rbi/model.rb#380 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#359 +# source://rbi//lib/rbi/model.rb#386 class RBI::AttrWriter < ::RBI::Attr - # source://rbi//lib/rbi/model.rb#361 + # source://rbi//lib/rbi/model.rb#395 sig do params( name: ::Symbol, @@ -201,19 +201,19 @@ class RBI::AttrWriter < ::RBI::Attr end def initialize(name, *names, visibility: T.unsafe(nil), sigs: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#433 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#437 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end - # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#148 + # source://rbi//lib/rbi/rewriters/attr_to_methods.rb#155 sig { override.returns(T::Array[::RBI::Method]) } def convert_to_methods; end - # source://rbi//lib/rbi/model.rb#368 + # source://rbi//lib/rbi/model.rb#402 sig { override.returns(T::Array[::String]) } def fully_qualified_names; end - # source://rbi//lib/rbi/model.rb#375 + # source://rbi//lib/rbi/model.rb#409 sig { override.returns(::String) } def to_s; end end @@ -225,9 +225,9 @@ class RBI::BlankLine < ::RBI::Comment def initialize(loc: T.unsafe(nil)); end end -# source://rbi//lib/rbi/model.rb#629 +# source://rbi//lib/rbi/model.rb#679 class RBI::BlockParam < ::RBI::Param - # source://rbi//lib/rbi/model.rb#631 + # source://rbi//lib/rbi/model.rb#681 sig do params( name: ::String, @@ -238,11 +238,11 @@ class RBI::BlockParam < ::RBI::Param end def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#643 + # source://rbi//lib/rbi/model.rb#693 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/model.rb#638 + # source://rbi//lib/rbi/model.rb#688 sig { override.returns(::String) } def to_s; end end @@ -261,7 +261,7 @@ class RBI::Class < ::RBI::Scope end def initialize(name, superclass_name: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#371 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#375 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -302,32 +302,32 @@ class RBI::Comment < ::RBI::Node def text=(_arg0); end end -# source://rbi//lib/rbi/rewriters/merge_trees.rb#555 +# source://rbi//lib/rbi/rewriters/merge_trees.rb#559 class RBI::ConflictTree < ::RBI::Tree - # source://rbi//lib/rbi/rewriters/merge_trees.rb#563 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#567 sig { params(left_name: ::String, right_name: ::String).void } def initialize(left_name: T.unsafe(nil), right_name: T.unsafe(nil)); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#557 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#561 sig { returns(::RBI::Tree) } def left; end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#560 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#564 sig { returns(::String) } def left_name; end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#557 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#561 def right; end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#560 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#564 def right_name; end end -# source://rbi//lib/rbi/model.rb#263 +# source://rbi//lib/rbi/model.rb#269 class RBI::Const < ::RBI::NodeWithComments include ::RBI::Indexable - # source://rbi//lib/rbi/model.rb#268 + # source://rbi//lib/rbi/model.rb#274 sig do params( name: ::String, @@ -339,11 +339,11 @@ class RBI::Const < ::RBI::NodeWithComments end def initialize(name, value, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#395 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#399 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end - # source://rbi//lib/rbi/model.rb#276 + # source://rbi//lib/rbi/model.rb#282 sig { returns(::String) } def fully_qualified_name; end @@ -351,29 +351,29 @@ class RBI::Const < ::RBI::NodeWithComments sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#265 + # source://rbi//lib/rbi/model.rb#271 sig { returns(::String) } def name; end - # source://rbi//lib/rbi/model.rb#284 + # source://rbi//lib/rbi/model.rb#290 sig { override.returns(::String) } def to_s; end - # source://rbi//lib/rbi/model.rb#265 + # source://rbi//lib/rbi/model.rb#271 def value; end end -# source://rbi//lib/rbi/rewriters/merge_trees.rb#341 +# source://rbi//lib/rbi/rewriters/merge_trees.rb#345 class RBI::DuplicateNodeError < ::RBI::Error; end # source://rbi//lib/rbi.rb#8 class RBI::Error < ::StandardError; end -# source://rbi//lib/rbi/model.rb#676 +# source://rbi//lib/rbi/model.rb#726 class RBI::Extend < ::RBI::Mixin include ::RBI::Indexable - # source://rbi//lib/rbi/model.rb#678 + # source://rbi//lib/rbi/model.rb#728 sig do params( name: ::String, @@ -385,7 +385,7 @@ class RBI::Extend < ::RBI::Mixin end def initialize(name, *names, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#488 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#492 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -393,7 +393,7 @@ class RBI::Extend < ::RBI::Mixin sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#685 + # source://rbi//lib/rbi/model.rb#735 sig { override.returns(::String) } def to_s; end end @@ -425,7 +425,7 @@ class RBI::File sig { returns(T::Boolean) } def empty?; end - # source://rbi//lib/rbi/printer.rb#817 + # source://rbi//lib/rbi/printer.rb#819 sig do params( out: T.any(::IO, ::StringIO), @@ -436,11 +436,11 @@ class RBI::File end def print(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil), max_line_length: T.unsafe(nil)); end - # source://rbi//lib/rbi/rbs_printer.rb#1210 + # source://rbi//lib/rbi/rbs_printer.rb#1212 sig { params(out: T.any(::IO, ::StringIO), indent: ::Integer, print_locs: T::Boolean).void } def rbs_print(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil)); end - # source://rbi//lib/rbi/rbs_printer.rb#1216 + # source://rbi//lib/rbi/rbs_printer.rb#1218 sig { params(indent: ::Integer, print_locs: T::Boolean).returns(::String) } def rbs_string(indent: T.unsafe(nil), print_locs: T.unsafe(nil)); end @@ -458,14 +458,14 @@ class RBI::File # source://rbi//lib/rbi/model.rb#136 def strictness=(_arg0); end - # source://rbi//lib/rbi/printer.rb#823 + # source://rbi//lib/rbi/printer.rb#825 sig { params(indent: ::Integer, print_locs: T::Boolean, max_line_length: T.nilable(::Integer)).returns(::String) } def string(indent: T.unsafe(nil), print_locs: T.unsafe(nil), max_line_length: T.unsafe(nil)); end end # source://rbi//lib/rbi/formatter.rb#5 class RBI::Formatter - # source://rbi//lib/rbi/formatter.rb#10 + # source://rbi//lib/rbi/formatter.rb#18 sig do params( add_sig_templates: T::Boolean, @@ -479,11 +479,11 @@ class RBI::Formatter end def initialize(add_sig_templates: T.unsafe(nil), group_nodes: T.unsafe(nil), max_line_length: T.unsafe(nil), nest_singleton_methods: T.unsafe(nil), nest_non_public_members: T.unsafe(nil), sort_nodes: T.unsafe(nil), replace_attributes_with_methods: T.unsafe(nil)); end - # source://rbi//lib/rbi/formatter.rb#35 + # source://rbi//lib/rbi/formatter.rb#43 sig { params(file: ::RBI::File).void } def format_file(file); end - # source://rbi//lib/rbi/formatter.rb#40 + # source://rbi//lib/rbi/formatter.rb#48 sig { params(tree: ::RBI::Tree).void } def format_tree(tree); end @@ -494,7 +494,7 @@ class RBI::Formatter # source://rbi//lib/rbi/formatter.rb#7 def max_line_length=(_arg0); end - # source://rbi//lib/rbi/formatter.rb#29 + # source://rbi//lib/rbi/formatter.rb#37 sig { params(file: ::RBI::File).returns(::String) } def print_file(file); end end @@ -561,11 +561,11 @@ RBI::Group::Kind::TypeMembers = T.let(T.unsafe(nil), RBI::Group::Kind) # source://rbi//lib/rbi/rewriters/group_nodes.rb#5 class RBI::GroupNodesError < ::RBI::Error; end -# source://rbi//lib/rbi/model.rb#1045 +# source://rbi//lib/rbi/model.rb#1141 class RBI::Helper < ::RBI::NodeWithComments include ::RBI::Indexable - # source://rbi//lib/rbi/model.rb#1050 + # source://rbi//lib/rbi/model.rb#1146 sig do params( name: ::String, @@ -576,7 +576,7 @@ class RBI::Helper < ::RBI::NodeWithComments end def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#504 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#508 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -584,20 +584,20 @@ class RBI::Helper < ::RBI::NodeWithComments sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#1047 + # source://rbi//lib/rbi/model.rb#1143 sig { returns(::String) } def name; end - # source://rbi//lib/rbi/model.rb#1058 + # source://rbi//lib/rbi/model.rb#1154 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#662 +# source://rbi//lib/rbi/model.rb#712 class RBI::Include < ::RBI::Mixin include ::RBI::Indexable - # source://rbi//lib/rbi/model.rb#664 + # source://rbi//lib/rbi/model.rb#714 sig do params( name: ::String, @@ -609,7 +609,7 @@ class RBI::Include < ::RBI::Mixin end def initialize(name, *names, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#480 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#484 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -617,7 +617,7 @@ class RBI::Include < ::RBI::Mixin sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#671 + # source://rbi//lib/rbi/model.rb#721 sig { override.returns(::String) } def to_s; end end @@ -666,28 +666,28 @@ module RBI::Indexable def index_ids; end end -# source://rbi//lib/rbi/model.rb#804 +# source://rbi//lib/rbi/model.rb#854 class RBI::KwArg < ::RBI::Arg - # source://rbi//lib/rbi/model.rb#809 + # source://rbi//lib/rbi/model.rb#859 sig { params(keyword: ::String, value: ::String, loc: T.nilable(::RBI::Loc)).void } def initialize(keyword, value, loc: T.unsafe(nil)); end - # source://rbi//lib/rbi/model.rb#815 + # source://rbi//lib/rbi/model.rb#865 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/model.rb#806 + # source://rbi//lib/rbi/model.rb#856 sig { returns(::String) } def keyword; end - # source://rbi//lib/rbi/model.rb#820 + # source://rbi//lib/rbi/model.rb#870 sig { returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#587 +# source://rbi//lib/rbi/model.rb#637 class RBI::KwOptParam < ::RBI::Param - # source://rbi//lib/rbi/model.rb#592 + # source://rbi//lib/rbi/model.rb#642 sig do params( name: ::String, @@ -699,22 +699,22 @@ class RBI::KwOptParam < ::RBI::Param end def initialize(name, value, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#605 + # source://rbi//lib/rbi/model.rb#655 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/model.rb#600 + # source://rbi//lib/rbi/model.rb#650 sig { override.returns(::String) } def to_s; end - # source://rbi//lib/rbi/model.rb#589 + # source://rbi//lib/rbi/model.rb#639 sig { returns(::String) } def value; end end -# source://rbi//lib/rbi/model.rb#568 +# source://rbi//lib/rbi/model.rb#618 class RBI::KwParam < ::RBI::Param - # source://rbi//lib/rbi/model.rb#570 + # source://rbi//lib/rbi/model.rb#620 sig do params( name: ::String, @@ -725,18 +725,18 @@ class RBI::KwParam < ::RBI::Param end def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#582 + # source://rbi//lib/rbi/model.rb#632 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/model.rb#577 + # source://rbi//lib/rbi/model.rb#627 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#610 +# source://rbi//lib/rbi/model.rb#660 class RBI::KwRestParam < ::RBI::Param - # source://rbi//lib/rbi/model.rb#612 + # source://rbi//lib/rbi/model.rb#662 sig do params( name: ::String, @@ -747,18 +747,18 @@ class RBI::KwRestParam < ::RBI::Param end def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#624 + # source://rbi//lib/rbi/model.rb#674 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/model.rb#619 + # source://rbi//lib/rbi/model.rb#669 sig { override.returns(::String) } def to_s; end end # source://rbi//lib/rbi/loc.rb#5 class RBI::Loc - # source://rbi//lib/rbi/loc.rb#26 + # source://rbi//lib/rbi/loc.rb#32 sig do params( file: T.nilable(::String), @@ -787,15 +787,15 @@ class RBI::Loc sig { returns(T.nilable(::String)) } def file; end - # source://rbi//lib/rbi/loc.rb#35 + # source://rbi//lib/rbi/loc.rb#41 sig { params(other: ::RBI::Loc).returns(::RBI::Loc) } def join(other); end - # source://rbi//lib/rbi/loc.rb#55 + # source://rbi//lib/rbi/loc.rb#61 sig { returns(T.nilable(::String)) } def source; end - # source://rbi//lib/rbi/loc.rb#46 + # source://rbi//lib/rbi/loc.rb#52 sig { returns(::String) } def to_s; end @@ -808,7 +808,7 @@ end # source://rbi//lib/rbi/rewriters/merge_trees.rb#329 class RBI::MergeTree < ::RBI::Tree - # source://rbi//lib/rbi/rewriters/merge_trees.rb#334 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#338 sig do params( loc: T.nilable(::RBI::Loc), @@ -824,11 +824,11 @@ class RBI::MergeTree < ::RBI::Tree def conflicts; end end -# source://rbi//lib/rbi/model.rb#383 +# source://rbi//lib/rbi/model.rb#417 class RBI::Method < ::RBI::NodeWithComments include ::RBI::Indexable - # source://rbi//lib/rbi/model.rb#400 + # source://rbi//lib/rbi/model.rb#442 sig do params( name: ::String, @@ -843,39 +843,39 @@ class RBI::Method < ::RBI::NodeWithComments end def initialize(name, params: T.unsafe(nil), is_singleton: T.unsafe(nil), visibility: T.unsafe(nil), sigs: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#420 + # source://rbi//lib/rbi/model.rb#462 sig { params(param: ::RBI::Param).void } def <<(param); end - # source://rbi//lib/rbi/model.rb#455 + # source://rbi//lib/rbi/model.rb#497 sig { params(name: ::String).void } def add_block_param(name); end - # source://rbi//lib/rbi/model.rb#445 + # source://rbi//lib/rbi/model.rb#487 sig { params(name: ::String, default_value: ::String).void } def add_kw_opt_param(name, default_value); end - # source://rbi//lib/rbi/model.rb#440 + # source://rbi//lib/rbi/model.rb#482 sig { params(name: ::String).void } def add_kw_param(name); end - # source://rbi//lib/rbi/model.rb#450 + # source://rbi//lib/rbi/model.rb#492 sig { params(name: ::String).void } def add_kw_rest_param(name); end - # source://rbi//lib/rbi/model.rb#430 + # source://rbi//lib/rbi/model.rb#472 sig { params(name: ::String, default_value: ::String).void } def add_opt_param(name, default_value); end - # source://rbi//lib/rbi/model.rb#425 + # source://rbi//lib/rbi/model.rb#467 sig { params(name: ::String).void } def add_param(name); end - # source://rbi//lib/rbi/model.rb#435 + # source://rbi//lib/rbi/model.rb#477 sig { params(name: ::String).void } def add_rest_param(name); end - # source://rbi//lib/rbi/model.rb#460 + # source://rbi//lib/rbi/model.rb#510 sig do params( params: T::Array[::RBI::SigParam], @@ -891,11 +891,11 @@ class RBI::Method < ::RBI::NodeWithComments end def add_sig(params: T.unsafe(nil), return_type: T.unsafe(nil), is_abstract: T.unsafe(nil), is_override: T.unsafe(nil), is_overridable: T.unsafe(nil), is_final: T.unsafe(nil), type_params: T.unsafe(nil), checked: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#449 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#453 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end - # source://rbi//lib/rbi/model.rb#486 + # source://rbi//lib/rbi/model.rb#536 sig { returns(::String) } def fully_qualified_name; end @@ -903,52 +903,52 @@ class RBI::Method < ::RBI::NodeWithComments sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#391 + # source://rbi//lib/rbi/model.rb#425 sig { returns(T::Boolean) } def is_singleton; end - # source://rbi//lib/rbi/model.rb#391 + # source://rbi//lib/rbi/model.rb#425 def is_singleton=(_arg0); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#459 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#463 sig { override.params(other: ::RBI::Node).void } def merge_with(other); end - # source://rbi//lib/rbi/model.rb#385 + # source://rbi//lib/rbi/model.rb#419 sig { returns(::String) } def name; end - # source://rbi//lib/rbi/model.rb#385 + # source://rbi//lib/rbi/model.rb#419 def name=(_arg0); end - # source://rbi//lib/rbi/model.rb#388 + # source://rbi//lib/rbi/model.rb#422 sig { returns(T::Array[::RBI::Param]) } def params; end - # source://rbi//lib/rbi/model.rb#397 + # source://rbi//lib/rbi/model.rb#431 sig { returns(T::Array[::RBI::Sig]) } def sigs; end - # source://rbi//lib/rbi/model.rb#397 + # source://rbi//lib/rbi/model.rb#431 def sigs=(_arg0); end - # source://rbi//lib/rbi/model.rb#496 + # source://rbi//lib/rbi/model.rb#546 sig { override.returns(::String) } def to_s; end - # source://rbi//lib/rbi/model.rb#394 + # source://rbi//lib/rbi/model.rb#428 sig { returns(::RBI::Visibility) } def visibility; end - # source://rbi//lib/rbi/model.rb#394 + # source://rbi//lib/rbi/model.rb#428 def visibility=(_arg0); end end -# source://rbi//lib/rbi/model.rb#1089 +# source://rbi//lib/rbi/model.rb#1185 class RBI::MixesInClassMethods < ::RBI::Mixin include ::RBI::Indexable - # source://rbi//lib/rbi/model.rb#1091 + # source://rbi//lib/rbi/model.rb#1192 sig do params( name: ::String, @@ -960,7 +960,7 @@ class RBI::MixesInClassMethods < ::RBI::Mixin end def initialize(name, *names, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#496 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#500 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -968,16 +968,16 @@ class RBI::MixesInClassMethods < ::RBI::Mixin sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#1098 + # source://rbi//lib/rbi/model.rb#1199 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#651 +# source://rbi//lib/rbi/model.rb#701 class RBI::Mixin < ::RBI::NodeWithComments abstract! - # source://rbi//lib/rbi/model.rb#656 + # source://rbi//lib/rbi/model.rb#706 sig do params( name: ::String, @@ -988,11 +988,11 @@ class RBI::Mixin < ::RBI::NodeWithComments end def initialize(name, names, loc: T.unsafe(nil), comments: T.unsafe(nil)); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#472 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#476 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end - # source://rbi//lib/rbi/model.rb#653 + # source://rbi//lib/rbi/model.rb#703 sig { returns(T::Array[::String]) } def names; end end @@ -1010,7 +1010,7 @@ class RBI::Module < ::RBI::Scope end def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#379 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#383 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -1068,7 +1068,7 @@ class RBI::Node # source://rbi//lib/rbi/model.rb#10 def parent_tree=(_arg0); end - # source://rbi//lib/rbi/printer.rb#832 + # source://rbi//lib/rbi/printer.rb#834 sig do params( out: T.any(::IO, ::StringIO), @@ -1079,7 +1079,7 @@ class RBI::Node end def print(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil), max_line_length: T.unsafe(nil)); end - # source://rbi//lib/rbi/rbs_printer.rb#1225 + # source://rbi//lib/rbi/rbs_printer.rb#1227 sig do params( out: T.any(::IO, ::StringIO), @@ -1090,7 +1090,7 @@ class RBI::Node end def rbs_print(out: T.unsafe(nil), indent: T.unsafe(nil), print_locs: T.unsafe(nil), positional_names: T.unsafe(nil)); end - # source://rbi//lib/rbi/rbs_printer.rb#1231 + # source://rbi//lib/rbi/rbs_printer.rb#1233 sig { params(indent: ::Integer, print_locs: T::Boolean, positional_names: T::Boolean).returns(::String) } def rbs_string(indent: T.unsafe(nil), print_locs: T.unsafe(nil), positional_names: T.unsafe(nil)); end @@ -1102,7 +1102,7 @@ class RBI::Node sig { params(version: ::Gem::Version).returns(T::Boolean) } def satisfies_version?(version); end - # source://rbi//lib/rbi/printer.rb#838 + # source://rbi//lib/rbi/printer.rb#840 sig { params(indent: ::Integer, print_locs: T::Boolean, max_line_length: T.nilable(::Integer)).returns(::String) } def string(indent: T.unsafe(nil), print_locs: T.unsafe(nil), max_line_length: T.unsafe(nil)); end end @@ -1135,9 +1135,9 @@ class RBI::NodeWithComments < ::RBI::Node def version_requirements; end end -# source://rbi//lib/rbi/model.rb#532 +# source://rbi//lib/rbi/model.rb#582 class RBI::OptParam < ::RBI::Param - # source://rbi//lib/rbi/model.rb#537 + # source://rbi//lib/rbi/model.rb#587 sig do params( name: ::String, @@ -1149,28 +1149,28 @@ class RBI::OptParam < ::RBI::Param end def initialize(name, value, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#544 + # source://rbi//lib/rbi/model.rb#594 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/model.rb#534 + # source://rbi//lib/rbi/model.rb#584 sig { returns(::String) } def value; end end -# source://rbi//lib/rbi/model.rb#502 +# source://rbi//lib/rbi/model.rb#552 class RBI::Param < ::RBI::NodeWithComments abstract! - # source://rbi//lib/rbi/model.rb#507 + # source://rbi//lib/rbi/model.rb#557 sig { params(name: ::String, loc: T.nilable(::RBI::Loc), comments: T::Array[::RBI::Comment]).void } def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil)); end - # source://rbi//lib/rbi/model.rb#504 + # source://rbi//lib/rbi/model.rb#554 sig { returns(::String) } def name; end - # source://rbi//lib/rbi/model.rb#514 + # source://rbi//lib/rbi/model.rb#564 sig { override.returns(::String) } def to_s; end end @@ -1221,27 +1221,27 @@ class RBI::Parser end end -# source://rbi//lib/rbi/parser.rb#1000 +# source://rbi//lib/rbi/parser.rb#1003 class RBI::Parser::HeredocLocationVisitor < ::Prism::Visitor - # source://rbi//lib/rbi/parser.rb#1002 + # source://rbi//lib/rbi/parser.rb#1005 sig { params(source: ::Prism::Source, begin_offset: ::Integer, end_offset: ::Integer).void } def initialize(source, begin_offset, end_offset); end - # source://rbi//lib/rbi/parser.rb#1033 + # source://rbi//lib/rbi/parser.rb#1036 sig { returns(::Prism::Location) } def location; end - # source://rbi//lib/rbi/parser.rb#1023 + # source://rbi//lib/rbi/parser.rb#1026 sig { override.params(node: ::Prism::InterpolatedStringNode).void } def visit_interpolated_string_node(node); end - # source://rbi//lib/rbi/parser.rb#1012 + # source://rbi//lib/rbi/parser.rb#1015 sig { override.params(node: ::Prism::StringNode).void } def visit_string_node(node); end private - # source://rbi//lib/rbi/parser.rb#1044 + # source://rbi//lib/rbi/parser.rb#1047 sig { params(node: T.any(::Prism::InterpolatedStringNode, ::Prism::StringNode)).void } def handle_string_node(node); end end @@ -1252,11 +1252,15 @@ class RBI::Parser::SigBuilder < ::RBI::Parser::Visitor sig { params(content: ::String, file: ::String).void } def initialize(content, file:); end + # source://rbi//lib/rbi/parser.rb#986 + sig { params(node: ::Prism::CallNode, value: ::String).returns(T::Boolean) } + def allow_incompatible_override?(node, value); end + # source://rbi//lib/rbi/parser.rb#917 sig { returns(::RBI::Sig) } def current; end - # source://rbi//lib/rbi/parser.rb#992 + # source://rbi//lib/rbi/parser.rb#978 sig { override.params(node: ::Prism::AssocNode).void } def visit_assoc_node(node); end @@ -1735,9 +1739,9 @@ end # source://rbi//lib/rbi/printer.rb#5 class RBI::PrinterError < ::RBI::Error; end -# source://rbi//lib/rbi/model.rb#742 +# source://rbi//lib/rbi/model.rb#792 class RBI::Private < ::RBI::Visibility - # source://rbi//lib/rbi/model.rb#744 + # source://rbi//lib/rbi/model.rb#794 sig do params( loc: T.nilable(::RBI::Loc), @@ -1748,9 +1752,9 @@ class RBI::Private < ::RBI::Visibility def initialize(loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end end -# source://rbi//lib/rbi/model.rb#734 +# source://rbi//lib/rbi/model.rb#784 class RBI::Protected < ::RBI::Visibility - # source://rbi//lib/rbi/model.rb#736 + # source://rbi//lib/rbi/model.rb#786 sig do params( loc: T.nilable(::RBI::Loc), @@ -1761,9 +1765,9 @@ class RBI::Protected < ::RBI::Visibility def initialize(loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end end -# source://rbi//lib/rbi/model.rb#726 +# source://rbi//lib/rbi/model.rb#776 class RBI::Public < ::RBI::Visibility - # source://rbi//lib/rbi/model.rb#728 + # source://rbi//lib/rbi/model.rb#778 sig do params( loc: T.nilable(::RBI::Loc), @@ -1832,17 +1836,21 @@ class RBI::RBS::TypeTranslator private - # source://rbi//lib/rbi/rbs/type_translator.rb#95 + # source://rbi//lib/rbi/rbs/type_translator.rb#107 sig { params(type: ::RBS::Types::ClassInstance).returns(::RBI::Type) } def translate_class_instance(type); end - # source://rbi//lib/rbi/rbs/type_translator.rb#103 + # source://rbi//lib/rbi/rbs/type_translator.rb#115 sig { params(type: ::RBS::Types::Function).returns(::RBI::Type) } def translate_function(type); end - # source://rbi//lib/rbi/rbs/type_translator.rb#150 + # source://rbi//lib/rbi/rbs/type_translator.rb#162 sig { params(type_name: ::String).returns(::String) } def translate_t_generic_type(type_name); end + + # source://rbi//lib/rbi/rbs/type_translator.rb#95 + sig { params(type: ::RBS::Types::Alias).returns(::RBI::Type) } + def translate_type_alias(type); end end end @@ -1915,15 +1923,15 @@ class RBI::RBSPrinter < ::RBI::Visitor # source://rbi//lib/rbi/rbs_printer.rb#9 def print_locs=(_arg0); end - # source://rbi//lib/rbi/rbs_printer.rb#398 + # source://rbi//lib/rbi/rbs_printer.rb#400 sig { params(node: ::RBI::Method, sig: ::RBI::Sig).void } def print_method_sig(node, sig); end - # source://rbi//lib/rbi/rbs_printer.rb#415 + # source://rbi//lib/rbi/rbs_printer.rb#417 sig { params(node: ::RBI::Method, sig: ::RBI::Sig).void } def print_method_sig_inline(node, sig); end - # source://rbi//lib/rbi/rbs_printer.rb#477 + # source://rbi//lib/rbi/rbs_printer.rb#479 sig { params(node: ::RBI::Method, sig: ::RBI::Sig).void } def print_method_sig_multiline(node, sig); end @@ -1943,7 +1951,7 @@ class RBI::RBSPrinter < ::RBI::Visitor sig { override.params(nodes: T::Array[::RBI::Node]).void } def visit_all(nodes); end - # source://rbi//lib/rbi/rbs_printer.rb#678 + # source://rbi//lib/rbi/rbs_printer.rb#680 sig { override.params(node: ::RBI::Arg).void } def visit_arg(node); end @@ -1967,7 +1975,7 @@ class RBI::RBSPrinter < ::RBI::Visitor sig { override.params(node: ::RBI::BlankLine).void } def visit_blank_line(node); end - # source://rbi//lib/rbi/rbs_printer.rb#610 + # source://rbi//lib/rbi/rbs_printer.rb#612 sig { override.params(node: ::RBI::BlockParam).void } def visit_block_param(node); end @@ -1979,7 +1987,7 @@ class RBI::RBSPrinter < ::RBI::Visitor sig { override.params(node: ::RBI::Comment).void } def visit_comment(node); end - # source://rbi//lib/rbi/rbs_printer.rb#814 + # source://rbi//lib/rbi/rbs_printer.rb#816 sig { override.params(node: ::RBI::ConflictTree).void } def visit_conflict_tree(node); end @@ -1987,7 +1995,7 @@ class RBI::RBSPrinter < ::RBI::Visitor sig { override.params(node: ::RBI::Const).void } def visit_const(node); end - # source://rbi//lib/rbi/rbs_printer.rb#622 + # source://rbi//lib/rbi/rbs_printer.rb#624 sig { override.params(node: ::RBI::Extend).void } def visit_extend(node); end @@ -1995,31 +2003,31 @@ class RBI::RBSPrinter < ::RBI::Visitor sig { override.params(file: ::RBI::File).void } def visit_file(file); end - # source://rbi//lib/rbi/rbs_printer.rb#787 + # source://rbi//lib/rbi/rbs_printer.rb#789 sig { override.params(node: ::RBI::Group).void } def visit_group(node); end - # source://rbi//lib/rbi/rbs_printer.rb#775 + # source://rbi//lib/rbi/rbs_printer.rb#777 sig { override.params(node: ::RBI::Helper).void } def visit_helper(node); end - # source://rbi//lib/rbi/rbs_printer.rb#616 + # source://rbi//lib/rbi/rbs_printer.rb#618 sig { override.params(node: ::RBI::Include).void } def visit_include(node); end - # source://rbi//lib/rbi/rbs_printer.rb#684 + # source://rbi//lib/rbi/rbs_printer.rb#686 sig { override.params(node: ::RBI::KwArg).void } def visit_kw_arg(node); end - # source://rbi//lib/rbi/rbs_printer.rb#598 + # source://rbi//lib/rbi/rbs_printer.rb#600 sig { override.params(node: ::RBI::KwOptParam).void } def visit_kw_opt_param(node); end - # source://rbi//lib/rbi/rbs_printer.rb#592 + # source://rbi//lib/rbi/rbs_printer.rb#594 sig { override.params(node: ::RBI::KwParam).void } def visit_kw_param(node); end - # source://rbi//lib/rbi/rbs_printer.rb#604 + # source://rbi//lib/rbi/rbs_printer.rb#606 sig { override.params(node: ::RBI::KwRestParam).void } def visit_kw_rest_param(node); end @@ -2027,11 +2035,11 @@ class RBI::RBSPrinter < ::RBI::Visitor sig { override.params(node: ::RBI::Method).void } def visit_method(node); end - # source://rbi//lib/rbi/rbs_printer.rb#781 + # source://rbi//lib/rbi/rbs_printer.rb#783 sig { override.params(node: ::RBI::MixesInClassMethods).void } def visit_mixes_in_class_methods(node); end - # source://rbi//lib/rbi/rbs_printer.rb#627 + # source://rbi//lib/rbi/rbs_printer.rb#629 sig { params(node: ::RBI::Mixin).void } def visit_mixin(node); end @@ -2039,31 +2047,31 @@ class RBI::RBSPrinter < ::RBI::Visitor sig { override.params(node: ::RBI::Module).void } def visit_module(node); end - # source://rbi//lib/rbi/rbs_printer.rb#572 + # source://rbi//lib/rbi/rbs_printer.rb#574 sig { override.params(node: ::RBI::OptParam).void } def visit_opt_param(node); end - # source://rbi//lib/rbi/rbs_printer.rb#657 + # source://rbi//lib/rbi/rbs_printer.rb#659 sig { override.params(node: ::RBI::Private).void } def visit_private(node); end - # source://rbi//lib/rbi/rbs_printer.rb#651 + # source://rbi//lib/rbi/rbs_printer.rb#653 sig { override.params(node: ::RBI::Protected).void } def visit_protected(node); end - # source://rbi//lib/rbi/rbs_printer.rb#645 + # source://rbi//lib/rbi/rbs_printer.rb#647 sig { override.params(node: ::RBI::Public).void } def visit_public(node); end - # source://rbi//lib/rbi/rbs_printer.rb#562 + # source://rbi//lib/rbi/rbs_printer.rb#564 sig { override.params(node: ::RBI::ReqParam).void } def visit_req_param(node); end - # source://rbi//lib/rbi/rbs_printer.rb#808 + # source://rbi//lib/rbi/rbs_printer.rb#810 sig { override.params(node: ::RBI::RequiresAncestor).void } def visit_requires_ancestor(node); end - # source://rbi//lib/rbi/rbs_printer.rb#582 + # source://rbi//lib/rbi/rbs_printer.rb#584 sig { override.params(node: ::RBI::RestParam).void } def visit_rest_param(node); end @@ -2075,7 +2083,7 @@ class RBI::RBSPrinter < ::RBI::Visitor sig { params(node: ::RBI::Scope).void } def visit_scope_body(node); end - # source://rbi//lib/rbi/rbs_printer.rb#824 + # source://rbi//lib/rbi/rbs_printer.rb#826 sig { override.params(node: ::RBI::ScopeConflict).void } def visit_scope_conflict(node); end @@ -2083,15 +2091,15 @@ class RBI::RBSPrinter < ::RBI::Visitor sig { params(node: ::RBI::Scope).void } def visit_scope_header(node); end - # source://rbi//lib/rbi/rbs_printer.rb#672 + # source://rbi//lib/rbi/rbs_printer.rb#674 sig { override.params(node: ::RBI::Send).void } def visit_send(node); end - # source://rbi//lib/rbi/rbs_printer.rb#543 + # source://rbi//lib/rbi/rbs_printer.rb#545 sig { params(node: ::RBI::Sig).void } def visit_sig(node); end - # source://rbi//lib/rbi/rbs_printer.rb#556 + # source://rbi//lib/rbi/rbs_printer.rb#558 sig { params(node: ::RBI::SigParam).void } def visit_sig_param(node); end @@ -2103,15 +2111,15 @@ class RBI::RBSPrinter < ::RBI::Visitor sig { override.params(node: ::RBI::Struct).void } def visit_struct(node); end - # source://rbi//lib/rbi/rbs_printer.rb#741 + # source://rbi//lib/rbi/rbs_printer.rb#743 sig { override.params(node: ::RBI::TEnum).void } def visit_tenum(node); end - # source://rbi//lib/rbi/rbs_printer.rb#747 + # source://rbi//lib/rbi/rbs_printer.rb#749 sig { override.params(node: ::RBI::TEnumBlock).void } def visit_tenum_block(node); end - # source://rbi//lib/rbi/rbs_printer.rb#753 + # source://rbi//lib/rbi/rbs_printer.rb#755 sig { override.params(node: ::RBI::TEnumValue).void } def visit_tenum_value(node); end @@ -2119,61 +2127,61 @@ class RBI::RBSPrinter < ::RBI::Visitor sig { override.params(node: ::RBI::Tree).void } def visit_tree(node); end - # source://rbi//lib/rbi/rbs_printer.rb#690 + # source://rbi//lib/rbi/rbs_printer.rb#692 sig { override.params(node: ::RBI::TStruct).void } def visit_tstruct(node); end - # source://rbi//lib/rbi/rbs_printer.rb#725 + # source://rbi//lib/rbi/rbs_printer.rb#727 sig { override.params(node: ::RBI::TStructConst).void } def visit_tstruct_const(node); end - # source://rbi//lib/rbi/rbs_printer.rb#733 + # source://rbi//lib/rbi/rbs_printer.rb#735 sig { override.params(node: ::RBI::TStructProp).void } def visit_tstruct_prop(node); end - # source://rbi//lib/rbi/rbs_printer.rb#769 + # source://rbi//lib/rbi/rbs_printer.rb#771 sig { override.params(node: ::RBI::TypeMember).void } def visit_type_member(node); end - # source://rbi//lib/rbi/rbs_printer.rb#662 + # source://rbi//lib/rbi/rbs_printer.rb#664 sig { params(node: ::RBI::Visibility).void } def visit_visibility(node); end - # source://rbi//lib/rbi/rbs_printer.rb#794 + # source://rbi//lib/rbi/rbs_printer.rb#796 sig { override.params(node: ::RBI::VisibilityGroup).void } def visit_visibility_group(node); end private - # source://rbi//lib/rbi/rbs_printer.rb#927 + # source://rbi//lib/rbi/rbs_printer.rb#929 sig { params(node: ::RBI::Node).returns(T::Boolean) } def oneline?(node); end - # source://rbi//lib/rbi/rbs_printer.rb#961 + # source://rbi//lib/rbi/rbs_printer.rb#963 sig { params(code: T.nilable(::String)).returns(T.nilable(::String)) } def parse_t_let(code); end - # source://rbi//lib/rbi/rbs_printer.rb#949 + # source://rbi//lib/rbi/rbs_printer.rb#951 sig { params(type: T.any(::RBI::Type, ::String)).returns(::RBI::Type) } def parse_type(type); end - # source://rbi//lib/rbi/rbs_printer.rb#840 + # source://rbi//lib/rbi/rbs_printer.rb#842 sig { params(node: ::RBI::Node).void } def print_blank_line_before(node); end - # source://rbi//lib/rbi/rbs_printer.rb#859 + # source://rbi//lib/rbi/rbs_printer.rb#861 sig { params(node: ::RBI::Node).void } def print_loc(node); end - # source://rbi//lib/rbi/rbs_printer.rb#901 + # source://rbi//lib/rbi/rbs_printer.rb#903 sig { params(node: ::RBI::Param, last: T::Boolean).void } def print_param_comment_leading_space(node, last:); end - # source://rbi//lib/rbi/rbs_printer.rb#865 + # source://rbi//lib/rbi/rbs_printer.rb#867 sig { params(node: ::RBI::Method, param: ::RBI::SigParam).void } def print_sig_param(node, param); end - # source://rbi//lib/rbi/rbs_printer.rb#919 + # source://rbi//lib/rbi/rbs_printer.rb#921 sig { params(node: ::RBI::SigParam, last: T::Boolean).void } def print_sig_param_comment_leading_space(node, last:); end end @@ -2184,9 +2192,9 @@ class RBI::RBSPrinter::Error < ::RBI::Error; end # source://rbi//lib/rbi/model.rb#5 class RBI::ReplaceNodeError < ::RBI::Error; end -# source://rbi//lib/rbi/model.rb#519 +# source://rbi//lib/rbi/model.rb#569 class RBI::ReqParam < ::RBI::Param - # source://rbi//lib/rbi/model.rb#521 + # source://rbi//lib/rbi/model.rb#571 sig do params( name: ::String, @@ -2197,16 +2205,16 @@ class RBI::ReqParam < ::RBI::Param end def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#527 + # source://rbi//lib/rbi/model.rb#577 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end end -# source://rbi//lib/rbi/model.rb#1103 +# source://rbi//lib/rbi/model.rb#1204 class RBI::RequiresAncestor < ::RBI::NodeWithComments include ::RBI::Indexable - # source://rbi//lib/rbi/model.rb#1108 + # source://rbi//lib/rbi/model.rb#1209 sig { params(name: ::String, loc: T.nilable(::RBI::Loc), comments: T::Array[::RBI::Comment]).void } def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil)); end @@ -2214,18 +2222,18 @@ class RBI::RequiresAncestor < ::RBI::NodeWithComments sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#1105 + # source://rbi//lib/rbi/model.rb#1206 sig { returns(::String) } def name; end - # source://rbi//lib/rbi/model.rb#1115 + # source://rbi//lib/rbi/model.rb#1216 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#549 +# source://rbi//lib/rbi/model.rb#599 class RBI::RestParam < ::RBI::Param - # source://rbi//lib/rbi/model.rb#551 + # source://rbi//lib/rbi/model.rb#601 sig do params( name: ::String, @@ -2236,11 +2244,11 @@ class RBI::RestParam < ::RBI::Param end def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#563 + # source://rbi//lib/rbi/model.rb#613 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/model.rb#558 + # source://rbi//lib/rbi/model.rb#608 sig { override.returns(::String) } def to_s; end end @@ -2650,7 +2658,7 @@ class RBI::Scope < ::RBI::Tree abstract! - # source://rbi//lib/rbi/rewriters/merge_trees.rb#346 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#350 sig { returns(T.self_type) } def dup_empty; end @@ -2667,32 +2675,32 @@ class RBI::Scope < ::RBI::Tree def to_s; end end -# source://rbi//lib/rbi/rewriters/merge_trees.rb#586 +# source://rbi//lib/rbi/rewriters/merge_trees.rb#590 class RBI::ScopeConflict < ::RBI::Tree - # source://rbi//lib/rbi/rewriters/merge_trees.rb#594 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#598 sig { params(left: ::RBI::Scope, right: ::RBI::Scope, left_name: ::String, right_name: ::String).void } def initialize(left:, right:, left_name: T.unsafe(nil), right_name: T.unsafe(nil)); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#588 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#592 sig { returns(::RBI::Scope) } def left; end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#591 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#595 sig { returns(::String) } def left_name; end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#588 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#592 def right; end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#591 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#595 def right_name; end end -# source://rbi//lib/rbi/model.rb#752 +# source://rbi//lib/rbi/model.rb#802 class RBI::Send < ::RBI::NodeWithComments include ::RBI::Indexable - # source://rbi//lib/rbi/model.rb#760 + # source://rbi//lib/rbi/model.rb#810 sig do params( method: ::String, @@ -2704,19 +2712,19 @@ class RBI::Send < ::RBI::NodeWithComments end def initialize(method, args = T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#768 + # source://rbi//lib/rbi/model.rb#818 sig { params(arg: ::RBI::Arg).void } def <<(arg); end - # source://rbi//lib/rbi/model.rb#773 + # source://rbi//lib/rbi/model.rb#823 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/model.rb#757 + # source://rbi//lib/rbi/model.rb#807 sig { returns(T::Array[::RBI::Arg]) } def args; end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#512 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#516 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end @@ -2724,18 +2732,18 @@ class RBI::Send < ::RBI::NodeWithComments sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#754 + # source://rbi//lib/rbi/model.rb#804 sig { returns(::String) } def method; end - # source://rbi//lib/rbi/model.rb#778 + # source://rbi//lib/rbi/model.rb#828 sig { returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#827 +# source://rbi//lib/rbi/model.rb#877 class RBI::Sig < ::RBI::NodeWithComments - # source://rbi//lib/rbi/model.rb#844 + # source://rbi//lib/rbi/model.rb#926 sig do params( params: T::Array[::RBI::SigParam], @@ -2745,6 +2753,7 @@ class RBI::Sig < ::RBI::NodeWithComments is_overridable: T::Boolean, is_final: T::Boolean, allow_incompatible_override: T::Boolean, + allow_incompatible_override_visibility: T::Boolean, without_runtime: T::Boolean, type_params: T::Array[::String], checked: T.nilable(::Symbol), @@ -2753,83 +2762,95 @@ class RBI::Sig < ::RBI::NodeWithComments block: T.nilable(T.proc.params(node: ::RBI::Sig).void) ).void end - def initialize(params: T.unsafe(nil), return_type: T.unsafe(nil), is_abstract: T.unsafe(nil), is_override: T.unsafe(nil), is_overridable: T.unsafe(nil), is_final: T.unsafe(nil), allow_incompatible_override: T.unsafe(nil), without_runtime: T.unsafe(nil), type_params: T.unsafe(nil), checked: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end + def initialize(params: T.unsafe(nil), return_type: T.unsafe(nil), is_abstract: T.unsafe(nil), is_override: T.unsafe(nil), is_overridable: T.unsafe(nil), is_final: T.unsafe(nil), allow_incompatible_override: T.unsafe(nil), allow_incompatible_override_visibility: T.unsafe(nil), without_runtime: T.unsafe(nil), type_params: T.unsafe(nil), checked: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#874 + # source://rbi//lib/rbi/model.rb#958 sig { params(param: ::RBI::SigParam).void } def <<(param); end - # source://rbi//lib/rbi/model.rb#884 + # source://rbi//lib/rbi/model.rb#968 sig { params(other: ::Object).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/model.rb#879 + # source://rbi//lib/rbi/model.rb#963 sig { params(name: ::String, type: T.any(::RBI::Type, ::String)).void } def add_param(name, type); end - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#897 + sig { returns(T::Boolean) } def allow_incompatible_override; end - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#897 def allow_incompatible_override=(_arg0); end - # source://rbi//lib/rbi/model.rb#841 + # source://rbi//lib/rbi/model.rb#900 + sig { returns(T::Boolean) } + def allow_incompatible_override_visibility; end + + # source://rbi//lib/rbi/model.rb#900 + def allow_incompatible_override_visibility=(_arg0); end + + # source://rbi//lib/rbi/model.rb#909 sig { returns(T.nilable(::Symbol)) } def checked; end - # source://rbi//lib/rbi/model.rb#841 + # source://rbi//lib/rbi/model.rb#909 def checked=(_arg0); end - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#885 sig { returns(T::Boolean) } def is_abstract; end - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#885 def is_abstract=(_arg0); end - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#894 + sig { returns(T::Boolean) } def is_final; end - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#894 def is_final=(_arg0); end - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#891 + sig { returns(T::Boolean) } def is_overridable; end - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#891 def is_overridable=(_arg0); end - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#888 + sig { returns(T::Boolean) } def is_override; end - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#888 def is_override=(_arg0); end - # source://rbi//lib/rbi/model.rb#829 + # source://rbi//lib/rbi/model.rb#879 sig { returns(T::Array[::RBI::SigParam]) } def params; end - # source://rbi//lib/rbi/model.rb#832 + # source://rbi//lib/rbi/model.rb#882 sig { returns(T.any(::RBI::Type, ::String)) } def return_type; end - # source://rbi//lib/rbi/model.rb#832 + # source://rbi//lib/rbi/model.rb#882 def return_type=(_arg0); end - # source://rbi//lib/rbi/model.rb#838 + # source://rbi//lib/rbi/model.rb#906 sig { returns(T::Array[::String]) } def type_params; end - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#903 + sig { returns(T::Boolean) } def without_runtime; end - # source://rbi//lib/rbi/model.rb#835 + # source://rbi//lib/rbi/model.rb#903 def without_runtime=(_arg0); end end -# source://rbi//lib/rbi/model.rb#893 +# source://rbi//lib/rbi/model.rb#977 class RBI::SigParam < ::RBI::NodeWithComments - # source://rbi//lib/rbi/model.rb#901 + # source://rbi//lib/rbi/model.rb#985 sig do params( name: ::String, @@ -2841,15 +2862,15 @@ class RBI::SigParam < ::RBI::NodeWithComments end def initialize(name, type, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#909 + # source://rbi//lib/rbi/model.rb#993 sig { params(other: ::Object).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/model.rb#895 + # source://rbi//lib/rbi/model.rb#979 sig { returns(::String) } def name; end - # source://rbi//lib/rbi/model.rb#898 + # source://rbi//lib/rbi/model.rb#982 sig { returns(T.any(::RBI::Type, ::String)) } def type; end end @@ -2873,7 +2894,7 @@ end # source://rbi//lib/rbi/model.rb#233 class RBI::Struct < ::RBI::Scope - # source://rbi//lib/rbi/model.rb#244 + # source://rbi//lib/rbi/model.rb#250 sig do params( name: ::String, @@ -2886,11 +2907,11 @@ class RBI::Struct < ::RBI::Scope end def initialize(name, members: T.unsafe(nil), keyword_init: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#387 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#391 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end - # source://rbi//lib/rbi/model.rb#254 + # source://rbi//lib/rbi/model.rb#260 sig { override.returns(::String) } def fully_qualified_name; end @@ -2916,9 +2937,9 @@ class RBI::Struct < ::RBI::Scope def name=(_arg0); end end -# source://rbi//lib/rbi/model.rb#992 +# source://rbi//lib/rbi/model.rb#1088 class RBI::TEnum < ::RBI::Class - # source://rbi//lib/rbi/model.rb#994 + # source://rbi//lib/rbi/model.rb#1090 sig do params( name: ::String, @@ -2930,9 +2951,9 @@ class RBI::TEnum < ::RBI::Class def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end end -# source://rbi//lib/rbi/model.rb#1000 +# source://rbi//lib/rbi/model.rb#1096 class RBI::TEnumBlock < ::RBI::Scope - # source://rbi//lib/rbi/model.rb#1002 + # source://rbi//lib/rbi/model.rb#1098 sig do params( loc: T.nilable(::RBI::Loc), @@ -2942,7 +2963,7 @@ class RBI::TEnumBlock < ::RBI::Scope end def initialize(loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#1009 + # source://rbi//lib/rbi/model.rb#1105 sig { override.returns(::String) } def fully_qualified_name; end @@ -2950,16 +2971,16 @@ class RBI::TEnumBlock < ::RBI::Scope sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#1015 + # source://rbi//lib/rbi/model.rb#1111 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#1020 +# source://rbi//lib/rbi/model.rb#1116 class RBI::TEnumValue < ::RBI::NodeWithComments include ::RBI::Indexable - # source://rbi//lib/rbi/model.rb#1025 + # source://rbi//lib/rbi/model.rb#1121 sig do params( name: ::String, @@ -2970,7 +2991,7 @@ class RBI::TEnumValue < ::RBI::NodeWithComments end def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#1032 + # source://rbi//lib/rbi/model.rb#1128 sig { returns(::String) } def fully_qualified_name; end @@ -2978,18 +2999,18 @@ class RBI::TEnumValue < ::RBI::NodeWithComments sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#1022 + # source://rbi//lib/rbi/model.rb#1118 sig { returns(::String) } def name; end - # source://rbi//lib/rbi/model.rb#1038 + # source://rbi//lib/rbi/model.rb#1134 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#916 +# source://rbi//lib/rbi/model.rb#1000 class RBI::TStruct < ::RBI::Class - # source://rbi//lib/rbi/model.rb#918 + # source://rbi//lib/rbi/model.rb#1002 sig do params( name: ::String, @@ -3001,11 +3022,11 @@ class RBI::TStruct < ::RBI::Class def initialize(name, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end end -# source://rbi//lib/rbi/model.rb#948 +# source://rbi//lib/rbi/model.rb#1032 class RBI::TStructConst < ::RBI::TStructField include ::RBI::Indexable - # source://rbi//lib/rbi/model.rb#950 + # source://rbi//lib/rbi/model.rb#1040 sig do params( name: ::String, @@ -3018,11 +3039,11 @@ class RBI::TStructConst < ::RBI::TStructField end def initialize(name, type, default: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#528 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#532 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end - # source://rbi//lib/rbi/model.rb#957 + # source://rbi//lib/rbi/model.rb#1047 sig { override.returns(T::Array[::String]) } def fully_qualified_names; end @@ -3030,16 +3051,16 @@ class RBI::TStructConst < ::RBI::TStructField sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#964 + # source://rbi//lib/rbi/model.rb#1054 sig { override.returns(::String) } def to_s; end end -# source://rbi//lib/rbi/model.rb#925 +# source://rbi//lib/rbi/model.rb#1009 class RBI::TStructField < ::RBI::NodeWithComments abstract! - # source://rbi//lib/rbi/model.rb#936 + # source://rbi//lib/rbi/model.rb#1020 sig do params( name: ::String, @@ -3051,41 +3072,41 @@ class RBI::TStructField < ::RBI::NodeWithComments end def initialize(name, type, default: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil)); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#520 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#524 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end - # source://rbi//lib/rbi/model.rb#933 + # source://rbi//lib/rbi/model.rb#1017 sig { returns(T.nilable(::String)) } def default; end - # source://rbi//lib/rbi/model.rb#933 + # source://rbi//lib/rbi/model.rb#1017 def default=(_arg0); end - # source://rbi//lib/rbi/model.rb#945 + # source://rbi//lib/rbi/model.rb#1029 sig { abstract.returns(T::Array[::String]) } def fully_qualified_names; end - # source://rbi//lib/rbi/model.rb#927 + # source://rbi//lib/rbi/model.rb#1011 sig { returns(::String) } def name; end - # source://rbi//lib/rbi/model.rb#927 + # source://rbi//lib/rbi/model.rb#1011 def name=(_arg0); end - # source://rbi//lib/rbi/model.rb#930 + # source://rbi//lib/rbi/model.rb#1014 sig { returns(T.any(::RBI::Type, ::String)) } def type; end - # source://rbi//lib/rbi/model.rb#930 + # source://rbi//lib/rbi/model.rb#1014 def type=(_arg0); end end -# source://rbi//lib/rbi/model.rb#969 +# source://rbi//lib/rbi/model.rb#1059 class RBI::TStructProp < ::RBI::TStructField include ::RBI::Indexable - # source://rbi//lib/rbi/model.rb#971 + # source://rbi//lib/rbi/model.rb#1067 sig do params( name: ::String, @@ -3098,11 +3119,11 @@ class RBI::TStructProp < ::RBI::TStructField end def initialize(name, type, default: T.unsafe(nil), loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/rewriters/merge_trees.rb#536 + # source://rbi//lib/rbi/rewriters/merge_trees.rb#540 sig { override.params(other: ::RBI::Node).returns(T::Boolean) } def compatible_with?(other); end - # source://rbi//lib/rbi/model.rb#978 + # source://rbi//lib/rbi/model.rb#1074 sig { override.returns(T::Array[::String]) } def fully_qualified_names; end @@ -3110,7 +3131,7 @@ class RBI::TStructProp < ::RBI::TStructField sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#985 + # source://rbi//lib/rbi/model.rb#1081 sig { override.returns(::String) } def to_s; end end @@ -3282,88 +3303,88 @@ end class RBI::Type abstract! - # source://rbi//lib/rbi/type.rb#905 + # source://rbi//lib/rbi/type.rb#951 sig { void } def initialize; end - # source://rbi//lib/rbi/type.rb#976 + # source://rbi//lib/rbi/type.rb#1022 sig { abstract.params(other: ::BasicObject).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/type.rb#979 + # source://rbi//lib/rbi/type.rb#1025 sig { params(other: ::BasicObject).returns(T::Boolean) } def eql?(other); end - # source://rbi//lib/rbi/type.rb#985 + # source://rbi//lib/rbi/type.rb#1031 sig { override.returns(::Integer) } def hash; end - # source://rbi//lib/rbi/type.rb#919 + # source://rbi//lib/rbi/type.rb#965 sig { returns(::RBI::Type) } def nilable; end - # source://rbi//lib/rbi/type.rb#946 + # source://rbi//lib/rbi/type.rb#992 sig { returns(T::Boolean) } def nilable?; end - # source://rbi//lib/rbi/type.rb#934 + # source://rbi//lib/rbi/type.rb#980 sig { returns(::RBI::Type) } def non_nilable; end - # source://rbi//lib/rbi/type.rb#960 + # source://rbi//lib/rbi/type.rb#1006 sig { abstract.returns(::RBI::Type) } def normalize; end - # source://rbi//lib/rbi/rbs_printer.rb#1240 + # source://rbi//lib/rbi/rbs_printer.rb#1242 sig { returns(::String) } def rbs_string; end - # source://rbi//lib/rbi/type.rb#972 + # source://rbi//lib/rbi/type.rb#1018 sig { abstract.returns(::RBI::Type) } def simplify; end - # source://rbi//lib/rbi/type.rb#991 + # source://rbi//lib/rbi/type.rb#1037 sig { abstract.returns(::String) } def to_rbi; end - # source://rbi//lib/rbi/type.rb#995 + # source://rbi//lib/rbi/type.rb#1041 sig { override.returns(::String) } def to_s; end class << self - # source://rbi//lib/rbi/type.rb#847 + # source://rbi//lib/rbi/type.rb#887 sig { params(type1: ::RBI::Type, type2: ::RBI::Type, types: ::RBI::Type).returns(::RBI::Type) } def all(type1, type2, *types); end - # source://rbi//lib/rbi/type.rb#856 + # source://rbi//lib/rbi/type.rb#896 sig { params(type1: ::RBI::Type, type2: ::RBI::Type, types: ::RBI::Type).returns(::RBI::Type) } def any(type1, type2, *types); end - # source://rbi//lib/rbi/type.rb#778 + # source://rbi//lib/rbi/type.rb#818 sig { returns(::RBI::Type::Anything) } def anything; end - # source://rbi//lib/rbi/type.rb#784 + # source://rbi//lib/rbi/type.rb#824 sig { returns(::RBI::Type::AttachedClass) } def attached_class; end - # source://rbi//lib/rbi/type.rb#790 + # source://rbi//lib/rbi/type.rb#830 sig { returns(::RBI::Type::Boolean) } def boolean; end - # source://rbi//lib/rbi/type.rb#828 + # source://rbi//lib/rbi/type.rb#868 sig { params(type: ::RBI::Type::Simple, type_parameter: T.nilable(::RBI::Type)).returns(::RBI::Type::ClassOf) } def class_of(type, type_parameter = T.unsafe(nil)); end - # source://rbi//lib/rbi/type.rb#864 + # source://rbi//lib/rbi/type.rb#904 sig { params(name: ::String, params: T.any(::RBI::Type, T::Array[::RBI::Type])).returns(::RBI::Type::Generic) } def generic(name, *params); end - # source://rbi//lib/rbi/type.rb#837 + # source://rbi//lib/rbi/type.rb#877 sig { params(type: ::RBI::Type).returns(::RBI::Type) } def nilable(type); end - # source://rbi//lib/rbi/type.rb#796 + # source://rbi//lib/rbi/type.rb#836 sig { returns(::RBI::Type::NoReturn) } def noreturn; end @@ -3375,97 +3396,109 @@ class RBI::Type sig { params(string: ::String).returns(::RBI::Type) } def parse_string(string); end - # source://rbi//lib/rbi/type.rb#892 + # source://rbi//lib/rbi/type.rb#938 sig { returns(::RBI::Type::Proc) } def proc; end - # source://rbi//lib/rbi/type.rb#802 + # source://rbi//lib/rbi/type.rb#842 sig { returns(::RBI::Type::SelfType) } def self_type; end - # source://rbi//lib/rbi/type.rb#884 + # source://rbi//lib/rbi/type.rb#930 sig { params(types: T::Hash[T.any(::String, ::Symbol), ::RBI::Type]).returns(::RBI::Type::Shape) } def shape(types = T.unsafe(nil)); end - # source://rbi//lib/rbi/type.rb#767 + # source://rbi//lib/rbi/type.rb#807 sig { params(name: ::String).returns(::RBI::Type::Simple) } def simple(name); end - # source://rbi//lib/rbi/type.rb#822 + # source://rbi//lib/rbi/type.rb#862 sig { params(type: ::RBI::Type).returns(::RBI::Type::Class) } def t_class(type); end - # source://rbi//lib/rbi/type.rb#878 + # source://rbi//lib/rbi/type.rb#924 sig { params(types: T.any(::RBI::Type, T::Array[::RBI::Type])).returns(::RBI::Type::Tuple) } def tuple(*types); end - # source://rbi//lib/rbi/type.rb#870 + # source://rbi//lib/rbi/type.rb#916 + sig { params(name: ::String, aliased_type: ::RBI::Type).returns(::RBI::Type::TypeAlias) } + def type_alias(name, aliased_type); end + + # source://rbi//lib/rbi/type.rb#910 sig { params(name: ::Symbol).returns(::RBI::Type::TypeParameter) } def type_parameter(name); end - # source://rbi//lib/rbi/type.rb#808 + # source://rbi//lib/rbi/type.rb#848 sig { returns(::RBI::Type::Untyped) } def untyped; end - # source://rbi//lib/rbi/type.rb#814 + # source://rbi//lib/rbi/type.rb#854 sig { returns(::RBI::Type::Void) } def void; end private - # source://rbi//lib/rbi/type_parser.rb#289 + # source://rbi//lib/rbi/type_parser.rb#314 sig { params(node: ::Prism::CallNode).returns(T::Array[::Prism::Node]) } def call_chain(node); end - # source://rbi//lib/rbi/type_parser.rb#276 + # source://rbi//lib/rbi/type_parser.rb#301 sig { params(node: ::Prism::CallNode, count: ::Integer).returns(T::Array[::Prism::Node]) } def check_arguments_at_least!(node, count); end - # source://rbi//lib/rbi/type_parser.rb#261 + # source://rbi//lib/rbi/type_parser.rb#286 sig { params(node: ::Prism::CallNode, count: ::Integer).returns(T::Array[::Prism::Node]) } def check_arguments_exactly!(node, count); end - # source://rbi//lib/rbi/type_parser.rb#71 + # source://rbi//lib/rbi/type_parser.rb#96 sig { params(node: ::Prism::CallNode).returns(::RBI::Type) } def parse_call(node); end - # source://rbi//lib/rbi/type_parser.rb#54 + # source://rbi//lib/rbi/type_parser.rb#56 sig { params(node: T.any(::Prism::ConstantPathNode, ::Prism::ConstantReadNode)).returns(::RBI::Type) } def parse_constant(node); end - # source://rbi//lib/rbi/type_parser.rb#211 + # source://rbi//lib/rbi/type_parser.rb#73 + sig { params(node: T.any(::Prism::ConstantPathWriteNode, ::Prism::ConstantWriteNode)).returns(::RBI::Type) } + def parse_constant_assignment(node); end + + # source://rbi//lib/rbi/type_parser.rb#236 sig { params(node: ::Prism::CallNode).returns(::RBI::Type) } def parse_proc(node); end - # source://rbi//lib/rbi/type_parser.rb#190 + # source://rbi//lib/rbi/type_parser.rb#215 sig { params(node: T.any(::Prism::HashNode, ::Prism::KeywordHashNode)).returns(::RBI::Type) } def parse_shape(node); end - # source://rbi//lib/rbi/type_parser.rb#185 + # source://rbi//lib/rbi/type_parser.rb#210 sig { params(node: ::Prism::ArrayNode).returns(::RBI::Type) } def parse_tuple(node); end - # source://rbi//lib/rbi/type_parser.rb#302 + # source://rbi//lib/rbi/type_parser.rb#327 sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) } def t?(node); end - # source://rbi//lib/rbi/type_parser.rb#314 + # source://rbi//lib/rbi/type_parser.rb#346 sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) } def t_boolean?(node); end - # source://rbi//lib/rbi/type_parser.rb#321 + # source://rbi//lib/rbi/type_parser.rb#353 sig { params(node: ::Prism::ConstantPathNode).returns(T::Boolean) } def t_class?(node); end - # source://rbi//lib/rbi/type_parser.rb#326 + # source://rbi//lib/rbi/type_parser.rb#358 sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) } def t_class_of?(node); end - # source://rbi//lib/rbi/type_parser.rb#333 + # source://rbi//lib/rbi/type_parser.rb#365 sig { params(node: ::Prism::CallNode).returns(T::Boolean) } def t_proc?(node); end - # source://rbi//lib/rbi/type.rb#899 + # source://rbi//lib/rbi/type_parser.rb#339 + sig { params(node: T.nilable(::Prism::Node)).returns(T::Boolean) } + def t_type_alias?(node); end + + # source://rbi//lib/rbi/type.rb#945 sig { params(name: ::String).returns(T::Boolean) } def valid_identifier?(name); end end @@ -3717,53 +3750,53 @@ class RBI::Type::NoReturn < ::RBI::Type def to_rbi; end end -# source://rbi//lib/rbi/type.rb#667 +# source://rbi//lib/rbi/type.rb#707 class RBI::Type::Proc < ::RBI::Type - # source://rbi//lib/rbi/type.rb#678 + # source://rbi//lib/rbi/type.rb#718 sig { void } def initialize; end - # source://rbi//lib/rbi/type.rb#687 + # source://rbi//lib/rbi/type.rb#727 sig { override.params(other: ::BasicObject).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/type.rb#715 + # source://rbi//lib/rbi/type.rb#755 sig { params(type: T.untyped).returns(T.self_type) } def bind(type); end - # source://rbi//lib/rbi/type.rb#747 + # source://rbi//lib/rbi/type.rb#787 sig { override.returns(::RBI::Type) } def normalize; end - # source://rbi//lib/rbi/type.rb#697 + # source://rbi//lib/rbi/type.rb#737 sig { params(params: ::RBI::Type).returns(T.self_type) } def params(**params); end - # source://rbi//lib/rbi/type.rb#675 + # source://rbi//lib/rbi/type.rb#715 sig { returns(T.nilable(::RBI::Type)) } def proc_bind; end - # source://rbi//lib/rbi/type.rb#669 + # source://rbi//lib/rbi/type.rb#709 sig { returns(T::Hash[::Symbol, ::RBI::Type]) } def proc_params; end - # source://rbi//lib/rbi/type.rb#672 + # source://rbi//lib/rbi/type.rb#712 sig { returns(::RBI::Type) } def proc_returns; end - # source://rbi//lib/rbi/type.rb#703 + # source://rbi//lib/rbi/type.rb#743 sig { params(type: T.untyped).returns(T.self_type) } def returns(type); end - # source://rbi//lib/rbi/type.rb#753 + # source://rbi//lib/rbi/type.rb#793 sig { override.returns(::RBI::Type) } def simplify; end - # source://rbi//lib/rbi/type.rb#722 + # source://rbi//lib/rbi/type.rb#762 sig { override.returns(::String) } def to_rbi; end - # source://rbi//lib/rbi/type.rb#709 + # source://rbi//lib/rbi/type.rb#749 sig { returns(T.self_type) } def void; end end @@ -3787,29 +3820,29 @@ class RBI::Type::SelfType < ::RBI::Type def to_rbi; end end -# source://rbi//lib/rbi/type.rb#625 +# source://rbi//lib/rbi/type.rb#665 class RBI::Type::Shape < ::RBI::Type - # source://rbi//lib/rbi/type.rb#630 + # source://rbi//lib/rbi/type.rb#670 sig { params(types: T::Hash[T.any(::String, ::Symbol), ::RBI::Type]).void } def initialize(types); end - # source://rbi//lib/rbi/type.rb#637 + # source://rbi//lib/rbi/type.rb#677 sig { override.params(other: ::BasicObject).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/type.rb#653 + # source://rbi//lib/rbi/type.rb#693 sig { override.returns(::RBI::Type) } def normalize; end - # source://rbi//lib/rbi/type.rb#659 + # source://rbi//lib/rbi/type.rb#699 sig { override.returns(::RBI::Type) } def simplify; end - # source://rbi//lib/rbi/type.rb#643 + # source://rbi//lib/rbi/type.rb#683 sig { override.returns(::String) } def to_rbi; end - # source://rbi//lib/rbi/type.rb#627 + # source://rbi//lib/rbi/type.rb#667 sig { returns(T::Hash[T.any(::String, ::Symbol), ::RBI::Type]) } def types; end end @@ -3841,33 +3874,64 @@ class RBI::Type::Simple < ::RBI::Type def to_rbi; end end -# source://rbi//lib/rbi/type.rb#589 +# source://rbi//lib/rbi/type.rb#629 class RBI::Type::Tuple < ::RBI::Type - # source://rbi//lib/rbi/type.rb#594 + # source://rbi//lib/rbi/type.rb#634 sig { params(types: T::Array[::RBI::Type]).void } def initialize(types); end - # source://rbi//lib/rbi/type.rb#601 + # source://rbi//lib/rbi/type.rb#641 sig { override.params(other: ::BasicObject).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/type.rb#613 + # source://rbi//lib/rbi/type.rb#653 sig { override.returns(::RBI::Type) } def normalize; end - # source://rbi//lib/rbi/type.rb#619 + # source://rbi//lib/rbi/type.rb#659 sig { override.returns(::RBI::Type) } def simplify; end - # source://rbi//lib/rbi/type.rb#607 + # source://rbi//lib/rbi/type.rb#647 sig { override.returns(::String) } def to_rbi; end - # source://rbi//lib/rbi/type.rb#591 + # source://rbi//lib/rbi/type.rb#631 sig { returns(T::Array[::RBI::Type]) } def types; end end +# source://rbi//lib/rbi/type.rb#587 +class RBI::Type::TypeAlias < ::RBI::Type + # source://rbi//lib/rbi/type.rb#595 + sig { params(name: ::String, aliased_type: ::RBI::Type).void } + def initialize(name, aliased_type); end + + # source://rbi//lib/rbi/type.rb#603 + sig { override.params(other: ::BasicObject).returns(T::Boolean) } + def ==(other); end + + # source://rbi//lib/rbi/type.rb#592 + sig { returns(::RBI::Type) } + def aliased_type; end + + # source://rbi//lib/rbi/type.rb#589 + sig { returns(::String) } + def name; end + + # source://rbi//lib/rbi/type.rb#615 + sig { override.returns(::RBI::Type) } + def normalize; end + + # source://rbi//lib/rbi/type.rb#621 + sig { override.returns(::RBI::Type) } + def simplify; end + + # source://rbi//lib/rbi/type.rb#609 + sig { override.returns(::String) } + def to_rbi; end +end + # source://rbi//lib/rbi/type.rb#551 class RBI::Type::TypeParameter < ::RBI::Type # source://rbi//lib/rbi/type.rb#556 @@ -3922,75 +3986,79 @@ class RBI::Type::Visitor private - # source://rbi//lib/rbi/type_visitor.rb#56 + # source://rbi//lib/rbi/type_visitor.rb#58 sig { params(type: ::RBI::Type::All).void } def visit_all(type); end - # source://rbi//lib/rbi/type_visitor.rb#59 + # source://rbi//lib/rbi/type_visitor.rb#61 sig { params(type: ::RBI::Type::Any).void } def visit_any(type); end - # source://rbi//lib/rbi/type_visitor.rb#62 + # source://rbi//lib/rbi/type_visitor.rb#64 sig { params(type: ::RBI::Type::Anything).void } def visit_anything(type); end - # source://rbi//lib/rbi/type_visitor.rb#65 + # source://rbi//lib/rbi/type_visitor.rb#67 sig { params(type: ::RBI::Type::AttachedClass).void } def visit_attached_class(type); end - # source://rbi//lib/rbi/type_visitor.rb#68 + # source://rbi//lib/rbi/type_visitor.rb#70 sig { params(type: ::RBI::Type::Boolean).void } def visit_boolean(type); end - # source://rbi//lib/rbi/type_visitor.rb#71 + # source://rbi//lib/rbi/type_visitor.rb#73 sig { params(type: ::RBI::Type::Class).void } def visit_class(type); end - # source://rbi//lib/rbi/type_visitor.rb#74 + # source://rbi//lib/rbi/type_visitor.rb#76 sig { params(type: ::RBI::Type::ClassOf).void } def visit_class_of(type); end - # source://rbi//lib/rbi/type_visitor.rb#77 + # source://rbi//lib/rbi/type_visitor.rb#79 sig { params(type: ::RBI::Type::Generic).void } def visit_generic(type); end - # source://rbi//lib/rbi/type_visitor.rb#80 + # source://rbi//lib/rbi/type_visitor.rb#82 sig { params(type: ::RBI::Type::Nilable).void } def visit_nilable(type); end - # source://rbi//lib/rbi/type_visitor.rb#86 + # source://rbi//lib/rbi/type_visitor.rb#88 sig { params(type: ::RBI::Type::NoReturn).void } def visit_no_return(type); end - # source://rbi//lib/rbi/type_visitor.rb#89 + # source://rbi//lib/rbi/type_visitor.rb#91 sig { params(type: ::RBI::Type::Proc).void } def visit_proc(type); end - # source://rbi//lib/rbi/type_visitor.rb#92 + # source://rbi//lib/rbi/type_visitor.rb#94 sig { params(type: ::RBI::Type::SelfType).void } def visit_self_type(type); end - # source://rbi//lib/rbi/type_visitor.rb#98 + # source://rbi//lib/rbi/type_visitor.rb#100 sig { params(type: ::RBI::Type::Shape).void } def visit_shape(type); end - # source://rbi//lib/rbi/type_visitor.rb#83 + # source://rbi//lib/rbi/type_visitor.rb#85 sig { params(type: ::RBI::Type::Simple).void } def visit_simple(type); end - # source://rbi//lib/rbi/type_visitor.rb#101 + # source://rbi//lib/rbi/type_visitor.rb#103 sig { params(type: ::RBI::Type::Tuple).void } def visit_tuple(type); end - # source://rbi//lib/rbi/type_visitor.rb#104 + # source://rbi//lib/rbi/type_visitor.rb#112 + sig { params(type: ::RBI::Type::TypeAlias).void } + def visit_type_alias(type); end + + # source://rbi//lib/rbi/type_visitor.rb#106 sig { params(type: ::RBI::Type::TypeParameter).void } def visit_type_parameter(type); end - # source://rbi//lib/rbi/type_visitor.rb#107 + # source://rbi//lib/rbi/type_visitor.rb#109 sig { params(type: ::RBI::Type::Untyped).void } def visit_untyped(type); end - # source://rbi//lib/rbi/type_visitor.rb#95 + # source://rbi//lib/rbi/type_visitor.rb#97 sig { params(type: ::RBI::Type::Void).void } def visit_void(type); end end @@ -4017,11 +4085,11 @@ class RBI::Type::Void < ::RBI::Type def to_rbi; end end -# source://rbi//lib/rbi/model.rb#1063 +# source://rbi//lib/rbi/model.rb#1159 class RBI::TypeMember < ::RBI::NodeWithComments include ::RBI::Indexable - # source://rbi//lib/rbi/model.rb#1068 + # source://rbi//lib/rbi/model.rb#1164 sig do params( name: ::String, @@ -4033,7 +4101,7 @@ class RBI::TypeMember < ::RBI::NodeWithComments end def initialize(name, value, loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi//lib/rbi/model.rb#1076 + # source://rbi//lib/rbi/model.rb#1172 sig { returns(::String) } def fully_qualified_name; end @@ -4041,107 +4109,107 @@ class RBI::TypeMember < ::RBI::NodeWithComments sig { override.returns(T::Array[::String]) } def index_ids; end - # source://rbi//lib/rbi/model.rb#1065 + # source://rbi//lib/rbi/model.rb#1161 sig { returns(::String) } def name; end - # source://rbi//lib/rbi/model.rb#1084 + # source://rbi//lib/rbi/model.rb#1180 sig { override.returns(::String) } def to_s; end - # source://rbi//lib/rbi/model.rb#1065 + # source://rbi//lib/rbi/model.rb#1161 def value; end end -# source://rbi//lib/rbi/rbs_printer.rb#982 +# source://rbi//lib/rbi/rbs_printer.rb#984 class RBI::TypePrinter - # source://rbi//lib/rbi/rbs_printer.rb#987 + # source://rbi//lib/rbi/rbs_printer.rb#989 sig { params(max_line_length: T.nilable(::Integer)).void } def initialize(max_line_length: T.unsafe(nil)); end - # source://rbi//lib/rbi/rbs_printer.rb#984 + # source://rbi//lib/rbi/rbs_printer.rb#986 sig { returns(::String) } def string; end - # source://rbi//lib/rbi/rbs_printer.rb#993 + # source://rbi//lib/rbi/rbs_printer.rb#995 sig { params(node: ::RBI::Type).void } def visit(node); end - # source://rbi//lib/rbi/rbs_printer.rb#1108 + # source://rbi//lib/rbi/rbs_printer.rb#1110 sig { params(type: ::RBI::Type::All).void } def visit_all(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1118 + # source://rbi//lib/rbi/rbs_printer.rb#1120 sig { params(type: ::RBI::Type::Any).void } def visit_any(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1058 + # source://rbi//lib/rbi/rbs_printer.rb#1060 sig { params(type: ::RBI::Type::Anything).void } def visit_anything(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1083 + # source://rbi//lib/rbi/rbs_printer.rb#1085 sig { params(type: ::RBI::Type::AttachedClass).void } def visit_attached_class(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1042 + # source://rbi//lib/rbi/rbs_printer.rb#1044 sig { params(type: ::RBI::Type::Boolean).void } def visit_boolean(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1185 + # source://rbi//lib/rbi/rbs_printer.rb#1187 sig { params(type: ::RBI::Type::Class).void } def visit_class(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1101 + # source://rbi//lib/rbi/rbs_printer.rb#1103 sig { params(type: ::RBI::Type::ClassOf).void } def visit_class_of(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1047 + # source://rbi//lib/rbi/rbs_printer.rb#1049 sig { params(type: ::RBI::Type::Generic).void } def visit_generic(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1088 + # source://rbi//lib/rbi/rbs_printer.rb#1090 sig { params(type: ::RBI::Type::Nilable).void } def visit_nilable(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1068 + # source://rbi//lib/rbi/rbs_printer.rb#1070 sig { params(type: ::RBI::Type::NoReturn).void } def visit_no_return(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1158 + # source://rbi//lib/rbi/rbs_printer.rb#1160 sig { params(type: ::RBI::Type::Proc).void } def visit_proc(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1078 + # source://rbi//lib/rbi/rbs_printer.rb#1080 sig { params(type: ::RBI::Type::SelfType).void } def visit_self_type(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1138 + # source://rbi//lib/rbi/rbs_printer.rb#1140 sig { params(type: ::RBI::Type::Shape).void } def visit_shape(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1037 + # source://rbi//lib/rbi/rbs_printer.rb#1039 sig { params(type: ::RBI::Type::Simple).void } def visit_simple(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1128 + # source://rbi//lib/rbi/rbs_printer.rb#1130 sig { params(type: ::RBI::Type::Tuple).void } def visit_tuple(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1180 + # source://rbi//lib/rbi/rbs_printer.rb#1182 sig { params(type: ::RBI::Type::TypeParameter).void } def visit_type_parameter(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1073 + # source://rbi//lib/rbi/rbs_printer.rb#1075 sig { params(type: ::RBI::Type::Untyped).void } def visit_untyped(type); end - # source://rbi//lib/rbi/rbs_printer.rb#1063 + # source://rbi//lib/rbi/rbs_printer.rb#1065 sig { params(type: ::RBI::Type::Void).void } def visit_void(type); end private - # source://rbi//lib/rbi/rbs_printer.rb#1194 + # source://rbi//lib/rbi/rbs_printer.rb#1196 sig { params(type_name: ::String).returns(::String) } def translate_t_type(type_name); end end @@ -4175,31 +4243,31 @@ end # source://rbi//lib/rbi/version.rb#5 RBI::VERSION = T.let(T.unsafe(nil), String) -# source://rbi//lib/rbi/model.rb#693 +# source://rbi//lib/rbi/model.rb#743 class RBI::Visibility < ::RBI::NodeWithComments abstract! - # source://rbi//lib/rbi/model.rb#698 + # source://rbi//lib/rbi/model.rb#748 sig { params(visibility: ::Symbol, loc: T.nilable(::RBI::Loc), comments: T::Array[::RBI::Comment]).void } def initialize(visibility, loc: T.unsafe(nil), comments: T.unsafe(nil)); end - # source://rbi//lib/rbi/model.rb#704 + # source://rbi//lib/rbi/model.rb#754 sig { params(other: T.nilable(::Object)).returns(T::Boolean) } def ==(other); end - # source://rbi//lib/rbi/model.rb#721 + # source://rbi//lib/rbi/model.rb#771 sig { returns(T::Boolean) } def private?; end - # source://rbi//lib/rbi/model.rb#716 + # source://rbi//lib/rbi/model.rb#766 sig { returns(T::Boolean) } def protected?; end - # source://rbi//lib/rbi/model.rb#711 + # source://rbi//lib/rbi/model.rb#761 sig { returns(T::Boolean) } def public?; end - # source://rbi//lib/rbi/model.rb#695 + # source://rbi//lib/rbi/model.rb#745 sig { returns(::Symbol) } def visibility; end end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/rbs@3.9.4.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/rbs@3.9.5.rbi similarity index 100% rename from tools/ruby-gems/udb/sorbet/rbi/gems/rbs@3.9.4.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/rbs@3.9.5.rbi diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/regexp_parser@2.10.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/regexp_parser@2.11.3.rbi similarity index 85% rename from tools/ruby-gems/udb/sorbet/rbi/gems/regexp_parser@2.10.0.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/regexp_parser@2.11.3.rbi index 1886978aaf..5ef4d681d9 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/regexp_parser@2.10.0.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/regexp_parser@2.11.3.rbi @@ -5,2021 +5,2033 @@ # Please instead update this file by running `bin/tapioca gem regexp_parser`. -# source://regexp_parser//lib/regexp_parser/expression/shared.rb#1 +# source://regexp_parser//lib/regexp_parser/expression/shared.rb#3 module Regexp::Expression; end -# source://regexp_parser//lib/regexp_parser/expression/classes/alternation.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/alternation.rb#7 class Regexp::Expression::Alternation < ::Regexp::Expression::SequenceOperation - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#7 def alternatives; end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#11 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#131 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#133 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/alternation.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/classes/alternation.rb#8 Regexp::Expression::Alternation::OPERAND = Regexp::Expression::Alternative -# source://regexp_parser//lib/regexp_parser/expression/classes/alternation.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/alternation.rb#5 class Regexp::Expression::Alternative < ::Regexp::Expression::Sequence - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#10 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#12 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#4 module Regexp::Expression::Anchor; end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#18 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#20 Regexp::Expression::Anchor::BOL = Regexp::Expression::Anchor::BeginningOfLine -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#20 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#22 Regexp::Expression::Anchor::BOS = Regexp::Expression::Anchor::BeginningOfString -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#5 class Regexp::Expression::Anchor::Base < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#148 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#150 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#7 class Regexp::Expression::Anchor::BeginningOfLine < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#11 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#13 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#8 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#10 class Regexp::Expression::Anchor::BeginningOfString < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#12 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#14 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#19 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#21 Regexp::Expression::Anchor::EOL = Regexp::Expression::Anchor::EndOfLine -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#21 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#23 Regexp::Expression::Anchor::EOS = Regexp::Expression::Anchor::EndOfString -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#22 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#24 Regexp::Expression::Anchor::EOSobEOL = Regexp::Expression::Anchor::EndOfStringOrBeforeEndOfLine -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#8 class Regexp::Expression::Anchor::EndOfLine < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#13 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#15 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#9 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#11 class Regexp::Expression::Anchor::EndOfString < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#16 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#11 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#13 class Regexp::Expression::Anchor::EndOfStringOrBeforeEndOfLine < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#15 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#17 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#16 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#18 class Regexp::Expression::Anchor::MatchStart < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#18 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#14 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#16 class Regexp::Expression::Anchor::NonWordBoundary < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#17 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#19 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#13 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#15 def negative?; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#13 +# source://regexp_parser//lib/regexp_parser/expression/classes/anchor.rb#15 class Regexp::Expression::Anchor::WordBoundary < ::Regexp::Expression::Anchor::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#18 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#20 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#64 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#66 module Regexp::Expression::Assertion; end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#65 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#67 class Regexp::Expression::Assertion::Base < ::Regexp::Expression::Group::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#148 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#150 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#67 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#69 class Regexp::Expression::Assertion::Lookahead < ::Regexp::Expression::Assertion::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#19 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#21 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#70 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#72 class Regexp::Expression::Assertion::Lookbehind < ::Regexp::Expression::Assertion::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#20 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#22 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#68 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#70 class Regexp::Expression::Assertion::NegativeLookahead < ::Regexp::Expression::Assertion::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#21 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#23 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#16 def negative?; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#71 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#73 class Regexp::Expression::Assertion::NegativeLookbehind < ::Regexp::Expression::Assertion::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#22 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#24 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#15 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#17 def negative?; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#55 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#57 Regexp::Expression::Backref = Regexp::Expression::Backreference -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#4 module Regexp::Expression::Backreference; end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#5 class Regexp::Expression::Backreference::Base < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#155 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#157 def match_length; end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#140 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#142 def referential?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#15 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#17 class Regexp::Expression::Backreference::Name < ::Regexp::Expression::Backreference::Base - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#19 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#21 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#23 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#25 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#18 def name; end - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#18 def reference; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#31 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#33 class Regexp::Expression::Backreference::NameCall < ::Regexp::Expression::Backreference::Name - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#24 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#26 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#43 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#45 class Regexp::Expression::Backreference::NameRecursionLevel < ::Regexp::Expression::Backreference::Name - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#46 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#48 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#44 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#46 def recursion_level; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#7 class Regexp::Expression::Backreference::Number < ::Regexp::Expression::Backreference::Base - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#11 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#25 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#27 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#6 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#8 def number; end - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#6 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#8 def reference; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#30 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#32 class Regexp::Expression::Backreference::NumberCall < ::Regexp::Expression::Backreference::Number - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#29 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#32 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#34 class Regexp::Expression::Backreference::NumberCallRelative < ::Regexp::Expression::Backreference::NumberRelative - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#28 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#30 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#34 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#36 class Regexp::Expression::Backreference::NumberRecursionLevel < ::Regexp::Expression::Backreference::NumberRelative - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#37 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#39 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#35 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#37 def recursion_level; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#25 +# source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#27 class Regexp::Expression::Backreference::NumberRelative < ::Regexp::Expression::Backreference::Number - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#26 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#28 def effective_number; end - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#26 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#28 def effective_number=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#26 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#28 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#26 + # source://regexp_parser//lib/regexp_parser/expression/classes/backreference.rb#28 def reference; end end -# source://regexp_parser//lib/regexp_parser/expression/base.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/base.rb#4 class Regexp::Expression::Base include ::Regexp::Expression::Shared include ::Regexp::Expression::ReferencedExpressions extend ::Regexp::Expression::Shared::ClassMethods - # source://regexp_parser//lib/regexp_parser/expression/base.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#7 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#10 def =~(string, offset = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#25 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#27 def a?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#25 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#27 def ascii_classes?; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#60 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#62 def attributes; end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#10 def case_insensitive?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def conditional_level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def conditional_level=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def custom_to_s_handling; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def custom_to_s_handling=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#20 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#22 def d?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#20 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#22 def default_classes?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#16 def extended?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#16 def free_spacing?; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#47 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#49 def greedy?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#10 def i?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#10 def ignore_case?; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#51 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#53 def lazy?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def level=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#5 def m?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#10 def match(string, offset = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#5 def match?(string); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/match.rb#5 def matches?(string); end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#5 def multiline?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#16 def nesting_level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def options; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def options=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def parent; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def parent=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#56 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#58 def possessive?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def pre_quantifier_decorations; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def pre_quantifier_decorations=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#16 def quantifier; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#17 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#19 def quantify(*args); end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#26 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#28 def quantity; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#51 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#53 def reluctant?; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#33 def repetitions; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def set_level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def set_level=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#37 + # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#39 def strfre(format = T.unsafe(nil), indent_offset = T.unsafe(nil), index = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#37 + # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#39 def strfregexp(format = T.unsafe(nil), indent_offset = T.unsafe(nil), index = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def te; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def te=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def text; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def text=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#60 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#62 def to_h; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#11 def to_re(format = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def token; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def token=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def ts; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def ts=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def type; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def type=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#30 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#32 def u?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#30 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#32 def unicode_classes?; end - # source://regexp_parser//lib/regexp_parser/expression/base.rb#21 + # source://regexp_parser//lib/regexp_parser/expression/base.rb#23 def unquantified_clone; end - # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/methods/options.rb#16 def x?; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#4 class Regexp::Expression::CharacterSet < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#6 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#8 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#18 def close; end - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#5 def closed; end - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#5 def closed=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#5 def closed?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#12 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#14 def negate; end - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#5 def negative; end - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#5 def negative=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#18 def negative?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#15 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#17 def parts; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/intersection.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/intersection.rb#5 class Regexp::Expression::CharacterSet::IntersectedSequence < ::Regexp::Expression::Sequence - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#29 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#31 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/intersection.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/intersection.rb#7 class Regexp::Expression::CharacterSet::Intersection < ::Regexp::Expression::SequenceOperation - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#30 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#32 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/intersection.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/intersection.rb#8 Regexp::Expression::CharacterSet::Intersection::OPERAND = Regexp::Expression::CharacterSet::IntersectedSequence -# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#5 class Regexp::Expression::CharacterSet::Range < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#10 def <<(exp); end - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#16 def complete?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#33 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#18 def parts; end - # source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/classes/character_set/range.rb#6 def ts; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#4 module Regexp::Expression::CharacterType; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#7 class Regexp::Expression::CharacterType::Any < ::Regexp::Expression::CharacterType::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#32 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#34 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#5 class Regexp::Expression::CharacterType::Base < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#17 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#19 def negative?; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#8 class Regexp::Expression::CharacterType::Digit < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#15 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#17 class Regexp::Expression::CharacterType::ExtendedGrapheme < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#8 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#10 class Regexp::Expression::CharacterType::Hex < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#14 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#16 class Regexp::Expression::CharacterType::Linebreak < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#7 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#9 class Regexp::Expression::CharacterType::NonDigit < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#9 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#11 class Regexp::Expression::CharacterType::NonHex < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#13 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#15 class Regexp::Expression::CharacterType::NonSpace < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#11 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#13 class Regexp::Expression::CharacterType::NonWord < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#12 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#14 class Regexp::Expression::CharacterType::Space < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#10 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_type.rb#12 class Regexp::Expression::CharacterType::Word < ::Regexp::Expression::CharacterType::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#8 +# source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#10 class Regexp::Expression::Comment < ::Regexp::Expression::FreeSpace - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#33 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#35 def human_name; end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#130 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#132 def comment?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#4 module Regexp::Expression::Conditional; end -# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#18 +# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#20 class Regexp::Expression::Conditional::Branch < ::Regexp::Expression::Sequence - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#34 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#36 def human_name; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#9 +# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#11 class Regexp::Expression::Conditional::Condition < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#35 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#37 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#148 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#150 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#12 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#14 def reference; end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#141 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#143 def referential?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#20 +# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#22 class Regexp::Expression::Conditional::Expression < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#21 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#23 def <<(exp); end - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#25 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#27 def add_sequence(active_opts = T.unsafe(nil), params = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#25 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#27 def branch(active_opts = T.unsafe(nil), params = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#43 def branches; end - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#37 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#39 def condition; end - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#32 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#34 def condition=(exp); end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#36 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#38 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#131 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#133 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#17 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#19 def parts; end - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#45 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#47 def reference; end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#142 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#144 def referential?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#5 class Regexp::Expression::Conditional::TooManyBranches < ::Regexp::Parser::Error - # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/classes/conditional.rb#6 def initialize; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#29 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#32 Regexp::Expression::Escape = Regexp::Expression::EscapeSequence -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#4 module Regexp::Expression::EscapeSequence; end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#22 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#25 class Regexp::Expression::EscapeSequence::AbstractMetaControlSequence < ::Regexp::Expression::EscapeSequence::Base private - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#40 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#48 def control_sequence_to_s(control_sequence); end - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#45 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#53 def meta_char_to_codepoint(meta_char); end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#7 class Regexp::Expression::EscapeSequence::AsciiEscape < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#2 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#4 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#8 class Regexp::Expression::EscapeSequence::Backspace < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#5 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#5 class Regexp::Expression::EscapeSequence::Base < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_char.rb#2 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_char.rb#4 def char; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#7 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#9 class Regexp::Expression::EscapeSequence::Bell < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#6 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#18 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#20 class Regexp::Expression::EscapeSequence::Codepoint < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#18 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#20 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#22 class Regexp::Expression::EscapeSequence::CodepointList < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#20 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#28 def char; end - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#28 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#36 def chars; end - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#24 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#32 def codepoint; end - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#32 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#40 def codepoints; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#164 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#166 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#23 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#26 class Regexp::Expression::EscapeSequence::Control < ::Regexp::Expression::EscapeSequence::AbstractMetaControlSequence - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#52 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#60 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#8 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#10 class Regexp::Expression::EscapeSequence::FormFeed < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#7 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#17 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#19 class Regexp::Expression::EscapeSequence::Hex < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#15 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#17 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#14 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#16 class Regexp::Expression::EscapeSequence::Literal < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#11 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#13 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#24 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#27 class Regexp::Expression::EscapeSequence::Meta < ::Regexp::Expression::EscapeSequence::AbstractMetaControlSequence - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#58 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#66 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#25 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#28 class Regexp::Expression::EscapeSequence::MetaControl < ::Regexp::Expression::EscapeSequence::AbstractMetaControlSequence - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#64 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#72 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#9 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#11 class Regexp::Expression::EscapeSequence::Newline < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#6 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#8 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#16 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#18 class Regexp::Expression::EscapeSequence::Octal < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#13 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#15 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#10 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#12 class Regexp::Expression::EscapeSequence::Return < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#7 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#9 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#11 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#13 class Regexp::Expression::EscapeSequence::Tab < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#10 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#12 +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#23 +class Regexp::Expression::EscapeSequence::UTF8Hex < ::Regexp::Expression::EscapeSequence::Base + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#21 + def codepoint; end +end + +# source://regexp_parser//lib/regexp_parser/expression/classes/escape_sequence.rb#14 class Regexp::Expression::EscapeSequence::VerticalTab < ::Regexp::Expression::EscapeSequence::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/methods/escape_sequence_codepoint.rb#11 def codepoint; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#4 class Regexp::Expression::FreeSpace < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#148 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#150 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#5 def quantify(*_args); end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#135 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#137 def decorative?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#4 module Regexp::Expression::Group; end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#19 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#21 class Regexp::Expression::Group::Absence < ::Regexp::Expression::Group::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#172 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#174 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#20 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#22 class Regexp::Expression::Group::Atomic < ::Regexp::Expression::Group::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#5 class Regexp::Expression::Group::Base < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#18 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#20 def parts; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#40 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#42 class Regexp::Expression::Group::Capture < ::Regexp::Expression::Group::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#37 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#39 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#43 def identifier; end - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#43 def number; end - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#43 def number=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#43 def number_at_level; end - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#43 def number_at_level=(_arg0); end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#126 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#128 def capturing?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#60 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#62 class Regexp::Expression::Group::Comment < ::Regexp::Expression::Group::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#20 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#22 def parts; end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#131 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#133 def comment?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#136 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#138 def decorative?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#45 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#47 class Regexp::Expression::Group::Named < ::Regexp::Expression::Group::Capture - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#49 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#51 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#38 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#40 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#46 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#48 def identifier; end - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#46 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#48 def name; end private - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#54 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#56 def initialize_copy(orig); end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#23 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#25 class Regexp::Expression::Group::Options < ::Regexp::Expression::Group::Base - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#24 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#26 def option_changes; end - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#24 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#26 def option_changes=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#33 def quantify(*args); end private - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#26 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#28 def initialize_copy(orig); end end -# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#8 class Regexp::Expression::Group::Passive < ::Regexp::Expression::Group::Base - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#11 def initialize(*_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#7 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#9 def implicit=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/classes/group.rb#16 def implicit?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#19 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#21 def parts; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/keep.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/keep.rb#4 module Regexp::Expression::Keep; end -# source://regexp_parser//lib/regexp_parser/expression/classes/keep.rb#5 +# source://regexp_parser//lib/regexp_parser/expression/classes/keep.rb#7 class Regexp::Expression::Keep::Mark < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#39 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#41 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#148 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#150 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/literal.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/literal.rb#4 class Regexp::Expression::Literal < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#40 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#42 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#105 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#107 def match_length; end end -# source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#85 +# source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#87 Regexp::Expression::MatchLength = Regexp::MatchLength -# source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#10 +# source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#12 Regexp::Expression::Nonposixclass = Regexp::Expression::PosixClass -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#118 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#120 Regexp::Expression::Nonproperty = Regexp::Expression::UnicodeProperty -# source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#4 class Regexp::Expression::PosixClass < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#5 def name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#18 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#20 def negative?; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#9 +# source://regexp_parser//lib/regexp_parser/expression/classes/posix_class.rb#11 Regexp::Expression::Posixclass = Regexp::Expression::PosixClass -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#117 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#119 Regexp::Expression::Property = Regexp::Expression::UnicodeProperty -# source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#6 +# source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#8 class Regexp::Expression::Quantifier include ::Regexp::Expression::Shared extend ::Regexp::Expression::Shared::ClassMethods - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#11 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#13 def initialize(*args); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def conditional_level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def conditional_level=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def custom_to_s_handling; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def custom_to_s_handling=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#33 def greedy?; end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#33 def lazy?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def level=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#42 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#44 def max; end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#38 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#40 def min; end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#46 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#48 def mode; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#16 def nesting_level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def options; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def options=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def parent; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def parent=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#33 def possessive?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def pre_quantifier_decorations; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def pre_quantifier_decorations=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#14 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#16 def quantifier; end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#31 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#33 def reluctant?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def set_level; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def set_level=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def te; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def te=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def text; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def text=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#19 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#21 def to_h; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def token; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def token=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def ts; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def ts=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def type; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def type=(_arg0); end private - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#52 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#54 def deprecated_old_init(token, text, _min, _max, _mode = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#64 + # source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#66 def derived_data; end end -# source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#9 +# source://regexp_parser//lib/regexp_parser/expression/quantifier.rb#11 Regexp::Expression::Quantifier::MODES = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#4 module Regexp::Expression::ReferencedExpressions - # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#7 def referenced_expression; end - # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#5 def referenced_expressions; end - # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#5 def referenced_expressions=(_arg0); end private - # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/methods/referenced_expressions.rb#11 def initialize_copy(orig); end end -# source://regexp_parser//lib/regexp_parser/expression/classes/root.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/root.rb#4 class Regexp::Expression::Root < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#41 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#43 def human_name; end class << self - # source://regexp_parser//lib/regexp_parser/expression/classes/root.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/classes/root.rb#5 def build(options = T.unsafe(nil)); end end end -# source://regexp_parser//lib/regexp_parser/expression/sequence.rb#8 +# source://regexp_parser//lib/regexp_parser/expression/sequence.rb#10 class Regexp::Expression::Sequence < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/sequence.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/sequence.rb#29 def quantify(token, *args); end - # source://regexp_parser//lib/regexp_parser/expression/sequence.rb#23 + # source://regexp_parser//lib/regexp_parser/expression/sequence.rb#25 def ts; end class << self - # source://regexp_parser//lib/regexp_parser/expression/sequence.rb#10 + # source://regexp_parser//lib/regexp_parser/expression/sequence.rb#12 def add_to(exp, params = T.unsafe(nil), active_opts = T.unsafe(nil)); end end end -# source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#5 class Regexp::Expression::SequenceOperation < ::Regexp::Expression::Subexpression - # source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#12 + # source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#14 def <<(exp); end - # source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#16 + # source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#18 def add_sequence(active_opts = T.unsafe(nil), params = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#7 def operands; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#11 def operator; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#22 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#24 def parts; end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#7 def sequences; end - # source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/sequence_operation.rb#10 def ts; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#22 +# source://regexp_parser//lib/regexp_parser/expression/classes/character_set.rb#24 Regexp::Expression::Set = Regexp::Expression::CharacterSet -# source://regexp_parser//lib/regexp_parser/expression/shared.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/shared.rb#4 module Regexp::Expression::Shared mixes_in_class_methods ::Regexp::Expression::Shared::ClassMethods - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#101 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#103 def ==(other); end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#101 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#103 def ===(other); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#51 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#53 def base_length; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#124 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#126 def capturing?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#96 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#99 def coded_offset; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#128 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#130 def comment?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#133 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#135 def decorative?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#47 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#49 def ends_at(include_quantifier = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#101 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#103 def eql?(other); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#55 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#57 def full_length; end - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#6 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/printing.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/printing.rb#5 def inspect; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#36 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#38 def is?(test_token, test_type = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#10 def negated?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#3 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#5 def negative?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#100 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#103 def nesting_level=(lvl); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#92 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#95 def offset; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#75 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#77 def one_of?(scope, top = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#111 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#113 def optional?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#6 def parts; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#84 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#87 def pre_quantifier_decoration(expression_format = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/printing.rb#12 + # source://regexp_parser//lib/regexp_parser/expression/methods/printing.rb#14 def pretty_print(q); end - # source://regexp_parser//lib/regexp_parser/expression/methods/printing.rb#17 + # source://regexp_parser//lib/regexp_parser/expression/methods/printing.rb#19 def pretty_print_instance_variables; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#115 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#117 def quantified?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#106 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#109 def quantifier=(qtf); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#88 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#91 def quantifier_affix(expression_format = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#138 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#140 def referential?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#43 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#45 def starts_at; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#120 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#122 def terminal?; end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#72 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#74 def to_s(format = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#72 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#74 def to_str(format = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#37 + # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#39 def token_class; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#13 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#15 def type?(test_type); end private - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#18 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#20 def init_from_token_and_options(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#32 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#34 def initialize_copy(orig); end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#10 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#12 def intersperse(expressions, separator); end class << self - # source://regexp_parser//lib/regexp_parser/expression/shared.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/shared.rb#7 def included(mod); end end end -# source://regexp_parser//lib/regexp_parser/expression/shared.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/shared.rb#5 module Regexp::Expression::Shared::ClassMethods - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#125 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#127 def capturing?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#129 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#131 def comment?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#7 def construct(params = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#15 + # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#17 def construct_defaults; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#134 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#136 def decorative?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#139 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#141 def referential?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#121 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#123 def terminal?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#25 + # source://regexp_parser//lib/regexp_parser/expression/methods/construct.rb#27 def token_class; end end -# source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#4 class Regexp::Expression::Subexpression < ::Regexp::Expression::Base include ::Enumerable - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#7 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#9 def initialize(token, options = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#20 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#22 def <<(exp); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def [](*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def at(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#33 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#35 def dig(*indices); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def each(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#10 def each_expression(include_self = T.unsafe(nil), &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def empty?(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#7 def expressions; end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#5 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#7 def expressions=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#50 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#52 def extract_quantifier_target(quantifier_description); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def fetch(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#56 + # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#58 def flat_map(include_self = T.unsafe(nil), &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def index(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#118 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#120 def inner_match_length; end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def join(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def last(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def length(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#111 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#113 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#21 + # source://regexp_parser//lib/regexp_parser/expression/methods/parts.rb#23 def parts; end - # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#102 + # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#104 def strfre_tree(format = T.unsafe(nil), include_self = T.unsafe(nil), separator = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#102 + # source://regexp_parser//lib/regexp_parser/expression/methods/strfregexp.rb#104 def strfregexp_tree(format = T.unsafe(nil), include_self = T.unsafe(nil), separator = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#39 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#41 def te; end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#43 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#45 def to_h; end - # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#32 + # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#34 def traverse(include_self = T.unsafe(nil), &block); end - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#27 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#29 def values_at(*args, &block); end - # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#32 + # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#34 def walk(include_self = T.unsafe(nil), &block); end protected - # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#66 + # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#68 def each_expression_with_index(&block); end - # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#73 + # source://regexp_parser//lib/regexp_parser/expression/methods/traverse.rb#75 def each_expression_without_index(&block); end private - # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#13 + # source://regexp_parser//lib/regexp_parser/expression/subexpression.rb#15 def initialize_copy(orig); end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#122 + # source://regexp_parser//lib/regexp_parser/expression/methods/tests.rb#124 def terminal?; end end end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#2 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#4 module Regexp::Expression::UnicodeProperty; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#108 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#110 class Regexp::Expression::UnicodeProperty::Age < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#13 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#15 class Regexp::Expression::UnicodeProperty::Alnum < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#14 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#16 class Regexp::Expression::UnicodeProperty::Alpha < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#31 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#33 class Regexp::Expression::UnicodeProperty::Any < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#15 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#17 class Regexp::Expression::UnicodeProperty::Ascii < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#32 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#34 class Regexp::Expression::UnicodeProperty::Assigned < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#3 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#5 class Regexp::Expression::UnicodeProperty::Base < ::Regexp::Expression::Base - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#98 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#100 def match_length; end - # source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#6 def name; end - # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#19 + # source://regexp_parser//lib/regexp_parser/expression/methods/negative.rb#21 def negative?; end - # source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#8 + # source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#10 def shortcut; end end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#16 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#18 class Regexp::Expression::UnicodeProperty::Blank < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#109 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#111 class Regexp::Expression::UnicodeProperty::Block < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#17 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#19 class Regexp::Expression::UnicodeProperty::Cntrl < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#97 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#99 module Regexp::Expression::UnicodeProperty::Codepoint; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#100 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#102 class Regexp::Expression::UnicodeProperty::Codepoint::Any < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#98 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#100 class Regexp::Expression::UnicodeProperty::Codepoint::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#101 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#103 class Regexp::Expression::UnicodeProperty::Codepoint::Control < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#102 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#104 class Regexp::Expression::UnicodeProperty::Codepoint::Format < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#104 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#106 class Regexp::Expression::UnicodeProperty::Codepoint::PrivateUse < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#103 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#105 class Regexp::Expression::UnicodeProperty::Codepoint::Surrogate < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#105 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#107 class Regexp::Expression::UnicodeProperty::Codepoint::Unassigned < ::Regexp::Expression::UnicodeProperty::Codepoint::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#110 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#112 class Regexp::Expression::UnicodeProperty::Derived < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#18 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#20 class Regexp::Expression::UnicodeProperty::Digit < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#111 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#113 class Regexp::Expression::UnicodeProperty::Emoji < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#112 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#114 class Regexp::Expression::UnicodeProperty::Enumerated < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#19 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#21 class Regexp::Expression::UnicodeProperty::Graph < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#34 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#36 module Regexp::Expression::UnicodeProperty::Letter; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#37 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#39 class Regexp::Expression::UnicodeProperty::Letter::Any < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#35 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#37 class Regexp::Expression::UnicodeProperty::Letter::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#38 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#40 class Regexp::Expression::UnicodeProperty::Letter::Cased < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#40 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#42 class Regexp::Expression::UnicodeProperty::Letter::Lowercase < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#42 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#44 class Regexp::Expression::UnicodeProperty::Letter::Modifier < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#43 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#45 class Regexp::Expression::UnicodeProperty::Letter::Other < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#41 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#43 class Regexp::Expression::UnicodeProperty::Letter::Titlecase < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#39 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#41 class Regexp::Expression::UnicodeProperty::Letter::Uppercase < ::Regexp::Expression::UnicodeProperty::Letter::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#20 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#22 class Regexp::Expression::UnicodeProperty::Lower < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#46 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#48 module Regexp::Expression::UnicodeProperty::Mark; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#49 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#51 class Regexp::Expression::UnicodeProperty::Mark::Any < ::Regexp::Expression::UnicodeProperty::Mark::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#47 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#49 class Regexp::Expression::UnicodeProperty::Mark::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#50 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#52 class Regexp::Expression::UnicodeProperty::Mark::Combining < ::Regexp::Expression::UnicodeProperty::Mark::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#53 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#55 class Regexp::Expression::UnicodeProperty::Mark::Enclosing < ::Regexp::Expression::UnicodeProperty::Mark::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#51 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#53 class Regexp::Expression::UnicodeProperty::Mark::Nonspacing < ::Regexp::Expression::UnicodeProperty::Mark::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#52 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#54 class Regexp::Expression::UnicodeProperty::Mark::Spacing < ::Regexp::Expression::UnicodeProperty::Mark::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#29 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#31 class Regexp::Expression::UnicodeProperty::Newline < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#56 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#58 module Regexp::Expression::UnicodeProperty::Number; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#59 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#61 class Regexp::Expression::UnicodeProperty::Number::Any < ::Regexp::Expression::UnicodeProperty::Number::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#57 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#59 class Regexp::Expression::UnicodeProperty::Number::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#60 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#62 class Regexp::Expression::UnicodeProperty::Number::Decimal < ::Regexp::Expression::UnicodeProperty::Number::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#61 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#63 class Regexp::Expression::UnicodeProperty::Number::Letter < ::Regexp::Expression::UnicodeProperty::Number::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#62 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#64 class Regexp::Expression::UnicodeProperty::Number::Other < ::Regexp::Expression::UnicodeProperty::Number::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#21 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#23 class Regexp::Expression::UnicodeProperty::Print < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#22 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#24 class Regexp::Expression::UnicodeProperty::Punct < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#65 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#67 module Regexp::Expression::UnicodeProperty::Punctuation; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#68 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#70 class Regexp::Expression::UnicodeProperty::Punctuation::Any < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#66 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#68 class Regexp::Expression::UnicodeProperty::Punctuation::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#72 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#74 class Regexp::Expression::UnicodeProperty::Punctuation::Close < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#69 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#71 class Regexp::Expression::UnicodeProperty::Punctuation::Connector < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#70 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#72 class Regexp::Expression::UnicodeProperty::Punctuation::Dash < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#74 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#76 class Regexp::Expression::UnicodeProperty::Punctuation::Final < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#73 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#75 class Regexp::Expression::UnicodeProperty::Punctuation::Initial < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#71 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#73 class Regexp::Expression::UnicodeProperty::Punctuation::Open < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#75 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#77 class Regexp::Expression::UnicodeProperty::Punctuation::Other < ::Regexp::Expression::UnicodeProperty::Punctuation::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#113 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#115 class Regexp::Expression::UnicodeProperty::Script < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#78 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#80 module Regexp::Expression::UnicodeProperty::Separator; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#81 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#83 class Regexp::Expression::UnicodeProperty::Separator::Any < ::Regexp::Expression::UnicodeProperty::Separator::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#79 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#81 class Regexp::Expression::UnicodeProperty::Separator::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#83 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#85 class Regexp::Expression::UnicodeProperty::Separator::Line < ::Regexp::Expression::UnicodeProperty::Separator::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#84 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#86 class Regexp::Expression::UnicodeProperty::Separator::Paragraph < ::Regexp::Expression::UnicodeProperty::Separator::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#82 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#84 class Regexp::Expression::UnicodeProperty::Separator::Space < ::Regexp::Expression::UnicodeProperty::Separator::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#23 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#25 class Regexp::Expression::UnicodeProperty::Space < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#87 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#89 module Regexp::Expression::UnicodeProperty::Symbol; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#90 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#92 class Regexp::Expression::UnicodeProperty::Symbol::Any < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#88 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#90 class Regexp::Expression::UnicodeProperty::Symbol::Base < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#92 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#94 class Regexp::Expression::UnicodeProperty::Symbol::Currency < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#91 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#93 class Regexp::Expression::UnicodeProperty::Symbol::Math < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#93 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#95 class Regexp::Expression::UnicodeProperty::Symbol::Modifier < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#94 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#96 class Regexp::Expression::UnicodeProperty::Symbol::Other < ::Regexp::Expression::UnicodeProperty::Symbol::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#24 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#26 class Regexp::Expression::UnicodeProperty::Upper < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#25 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#27 class Regexp::Expression::UnicodeProperty::Word < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#27 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#29 class Regexp::Expression::UnicodeProperty::XPosixPunct < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#26 +# source://regexp_parser//lib/regexp_parser/expression/classes/unicode_property.rb#28 class Regexp::Expression::UnicodeProperty::Xdigit < ::Regexp::Expression::UnicodeProperty::Base; end -# source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#11 +# source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#13 class Regexp::Expression::WhiteSpace < ::Regexp::Expression::FreeSpace - # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#42 + # source://regexp_parser//lib/regexp_parser/expression/methods/human_name.rb#44 def human_name; end - # source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#12 + # source://regexp_parser//lib/regexp_parser/expression/classes/free_space.rb#14 def merge(exp); end end -# source://regexp_parser//lib/regexp_parser/lexer.rb#5 +# source://regexp_parser//lib/regexp_parser/lexer.rb#7 class Regexp::Lexer - # source://regexp_parser//lib/regexp_parser/lexer.rb#71 + # source://regexp_parser//lib/regexp_parser/lexer.rb#73 def emit(token); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#20 + # source://regexp_parser//lib/regexp_parser/lexer.rb#22 def lex(input, syntax = T.unsafe(nil), options: T.unsafe(nil), collect_tokens: T.unsafe(nil), &block); end private - # source://regexp_parser//lib/regexp_parser/lexer.rb#91 + # source://regexp_parser//lib/regexp_parser/lexer.rb#93 def ascend(type, token); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def block; end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def block=(_arg0); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#143 + # source://regexp_parser//lib/regexp_parser/lexer.rb#145 def break_codepoint_list(token); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#123 + # source://regexp_parser//lib/regexp_parser/lexer.rb#125 def break_literal(token); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def collect_tokens; end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def collect_tokens=(_arg0); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def conditional_nesting; end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def conditional_nesting=(_arg0); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#106 + # source://regexp_parser//lib/regexp_parser/lexer.rb#108 def descend(type, token); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#162 + # source://regexp_parser//lib/regexp_parser/lexer.rb#164 def merge_condition(current, last); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def nesting; end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def nesting=(_arg0); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def preprev_token; end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def preprev_token=(_arg0); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def prev_token; end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def prev_token=(_arg0); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def set_nesting; end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def set_nesting=(_arg0); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def shift; end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def shift=(_arg0); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def tokens; end - # source://regexp_parser//lib/regexp_parser/lexer.rb#87 + # source://regexp_parser//lib/regexp_parser/lexer.rb#89 def tokens=(_arg0); end class << self - # source://regexp_parser//lib/regexp_parser/lexer.rb#16 + # source://regexp_parser//lib/regexp_parser/lexer.rb#18 def lex(input, syntax = T.unsafe(nil), options: T.unsafe(nil), collect_tokens: T.unsafe(nil), &block); end - # source://regexp_parser//lib/regexp_parser/lexer.rb#16 + # source://regexp_parser//lib/regexp_parser/lexer.rb#18 def scan(input, syntax = T.unsafe(nil), options: T.unsafe(nil), collect_tokens: T.unsafe(nil), &block); end end end -# source://regexp_parser//lib/regexp_parser/lexer.rb#12 +# source://regexp_parser//lib/regexp_parser/lexer.rb#14 Regexp::Lexer::CLOSING_TOKENS = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/lexer.rb#14 +# source://regexp_parser//lib/regexp_parser/lexer.rb#16 Regexp::Lexer::CONDITION_TOKENS = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/lexer.rb#7 +# source://regexp_parser//lib/regexp_parser/lexer.rb#9 Regexp::Lexer::OPENING_TOKENS = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#1 +# source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#3 class Regexp::MatchLength include ::Enumerable - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#9 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#11 def initialize(exp, opts = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#24 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#26 def each(opts = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#35 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#37 def endless_each; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#44 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#46 def fixed?; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#40 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#42 def include?(length); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#60 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#62 def inspect; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#52 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#54 def max; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#48 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#50 def min; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#56 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#58 def minmax; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#65 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#67 def to_re; end private - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def base_max; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def base_max=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def base_min; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def base_min=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def exp_class; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def exp_class=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def max_rep; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def max_rep=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def min_rep; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def min_rep=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def reify; end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#71 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#73 def reify=(_arg0); end - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#74 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#76 def test_regexp; end class << self - # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#4 + # source://regexp_parser//lib/regexp_parser/expression/methods/match_length.rb#6 def of(obj); end end end -# source://regexp_parser//lib/regexp_parser/version.rb#2 +# source://regexp_parser//lib/regexp_parser/version.rb#4 class Regexp::Parser include ::Regexp::Expression - # source://regexp_parser//lib/regexp_parser/parser.rb#25 + # source://regexp_parser//lib/regexp_parser/parser.rb#27 def parse(input, syntax = T.unsafe(nil), options: T.unsafe(nil), &block); end private - # source://regexp_parser//lib/regexp_parser/parser.rb#574 + # source://regexp_parser//lib/regexp_parser/parser.rb#577 def active_opts; end - # source://regexp_parser//lib/regexp_parser/parser.rb#99 + # source://regexp_parser//lib/regexp_parser/parser.rb#101 def anchor(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#262 + # source://regexp_parser//lib/regexp_parser/parser.rb#264 def assign_effective_number(exp); end - # source://regexp_parser//lib/regexp_parser/parser.rb#581 + # source://regexp_parser//lib/regexp_parser/parser.rb#584 def assign_referenced_expressions; end - # source://regexp_parser//lib/regexp_parser/parser.rb#227 + # source://regexp_parser//lib/regexp_parser/parser.rb#229 def backref(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#202 + # source://regexp_parser//lib/regexp_parser/parser.rb#204 def captured_group_count_at_level; end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def captured_group_counts; end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def captured_group_counts=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#570 + # source://regexp_parser//lib/regexp_parser/parser.rb#573 def close_completed_character_set_range; end - # source://regexp_parser//lib/regexp_parser/parser.rb#210 + # source://regexp_parser//lib/regexp_parser/parser.rb#212 def close_group; end - # source://regexp_parser//lib/regexp_parser/parser.rb#538 + # source://regexp_parser//lib/regexp_parser/parser.rb#541 def close_set; end - # source://regexp_parser//lib/regexp_parser/parser.rb#269 + # source://regexp_parser//lib/regexp_parser/parser.rb#271 def conditional(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def conditional_nesting; end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def conditional_nesting=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#206 + # source://regexp_parser//lib/regexp_parser/parser.rb#208 def count_captured_group; end - # source://regexp_parser//lib/regexp_parser/parser.rb#216 + # source://regexp_parser//lib/regexp_parser/parser.rb#218 def decrease_nesting; end - # source://regexp_parser//lib/regexp_parser/parser.rb#305 + # source://regexp_parser//lib/regexp_parser/parser.rb#307 def escape(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#60 + # source://regexp_parser//lib/regexp_parser/parser.rb#62 def extract_options(input, options); end - # source://regexp_parser//lib/regexp_parser/parser.rb#349 + # source://regexp_parser//lib/regexp_parser/parser.rb#352 def free_space(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#114 + # source://regexp_parser//lib/regexp_parser/parser.rb#116 def group(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#509 + # source://regexp_parser//lib/regexp_parser/parser.rb#512 def increase_group_level(exp); end - # source://regexp_parser//lib/regexp_parser/parser.rb#549 + # source://regexp_parser//lib/regexp_parser/parser.rb#552 def intersection(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#360 + # source://regexp_parser//lib/regexp_parser/parser.rb#363 def keep(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#364 + # source://regexp_parser//lib/regexp_parser/parser.rb#367 def literal(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#368 + # source://regexp_parser//lib/regexp_parser/parser.rb#371 def meta(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#534 + # source://regexp_parser//lib/regexp_parser/parser.rb#537 def negate_set; end - # source://regexp_parser//lib/regexp_parser/parser.rb#299 + # source://regexp_parser//lib/regexp_parser/parser.rb#301 def nest(exp); end - # source://regexp_parser//lib/regexp_parser/parser.rb#294 + # source://regexp_parser//lib/regexp_parser/parser.rb#296 def nest_conditional(exp); end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def nesting; end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def nesting=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def node; end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def node=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#165 + # source://regexp_parser//lib/regexp_parser/parser.rb#167 def open_group(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#527 + # source://regexp_parser//lib/regexp_parser/parser.rb#530 def open_set(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#130 + # source://regexp_parser//lib/regexp_parser/parser.rb#132 def options_group(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def options_stack; end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def options_stack=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#76 + # source://regexp_parser//lib/regexp_parser/parser.rb#78 def parse_token(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#390 + # source://regexp_parser//lib/regexp_parser/parser.rb#393 def posixclass(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#397 + # source://regexp_parser//lib/regexp_parser/parser.rb#400 def property(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#479 + # source://regexp_parser//lib/regexp_parser/parser.rb#482 def quantifier(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#542 + # source://regexp_parser//lib/regexp_parser/parser.rb#545 def range(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def root; end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def root=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#379 + # source://regexp_parser//lib/regexp_parser/parser.rb#382 def sequence_operation(klass, token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#515 + # source://regexp_parser//lib/regexp_parser/parser.rb#518 def set(token); end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def switching_options; end - # source://regexp_parser//lib/regexp_parser/parser.rb#56 + # source://regexp_parser//lib/regexp_parser/parser.rb#58 def switching_options=(_arg0); end - # source://regexp_parser//lib/regexp_parser/parser.rb#198 + # source://regexp_parser//lib/regexp_parser/parser.rb#200 def total_captured_group_count; end - # source://regexp_parser//lib/regexp_parser/parser.rb#553 + # source://regexp_parser//lib/regexp_parser/parser.rb#556 def type(token); end class << self - # source://regexp_parser//lib/regexp_parser/parser.rb#21 + # source://regexp_parser//lib/regexp_parser/parser.rb#23 def parse(input, syntax = T.unsafe(nil), options: T.unsafe(nil), &block); end end end -# source://regexp_parser//lib/regexp_parser/parser.rb#128 +# source://regexp_parser//lib/regexp_parser/parser.rb#130 Regexp::Parser::ENC_FLAGS = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/error.rb#3 +# source://regexp_parser//lib/regexp_parser/error.rb#5 class Regexp::Parser::Error < ::StandardError; end -# source://regexp_parser//lib/regexp_parser/parser.rb#127 +# source://regexp_parser//lib/regexp_parser/parser.rb#129 Regexp::Parser::MOD_FLAGS = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/parser.rb#7 +# source://regexp_parser//lib/regexp_parser/parser.rb#9 class Regexp::Parser::ParserError < ::Regexp::Parser::Error; end -# source://regexp_parser//lib/regexp_parser/parser.rb#394 +# source://regexp_parser//lib/regexp_parser/parser.rb#397 Regexp::Parser::UP = Regexp::Expression::UnicodeProperty -# source://regexp_parser//lib/regexp_parser/parser.rb#395 +# source://regexp_parser//lib/regexp_parser/parser.rb#398 Regexp::Parser::UPTokens = Regexp::Syntax::Token::UnicodeProperty -# source://regexp_parser//lib/regexp_parser/parser.rb#15 +# source://regexp_parser//lib/regexp_parser/parser.rb#17 class Regexp::Parser::UnknownTokenError < ::Regexp::Parser::ParserError - # source://regexp_parser//lib/regexp_parser/parser.rb#16 + # source://regexp_parser//lib/regexp_parser/parser.rb#18 def initialize(type, token); end end -# source://regexp_parser//lib/regexp_parser/parser.rb#9 +# source://regexp_parser//lib/regexp_parser/parser.rb#11 class Regexp::Parser::UnknownTokenTypeError < ::Regexp::Parser::ParserError - # source://regexp_parser//lib/regexp_parser/parser.rb#10 + # source://regexp_parser//lib/regexp_parser/parser.rb#12 def initialize(type, token); end end -# source://regexp_parser//lib/regexp_parser/version.rb#3 +# source://regexp_parser//lib/regexp_parser/version.rb#5 Regexp::Parser::VERSION = T.let(T.unsafe(nil), String) -# source://regexp_parser//lib/regexp_parser/scanner/errors/scanner_error.rb#3 +# source://regexp_parser//lib/regexp_parser/scanner/errors/scanner_error.rb#5 class Regexp::Scanner - # source://regexp_parser//lib/regexp_parser/scanner.rb#2363 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2509 + def capturing_group_count; end + + # source://regexp_parser//lib/regexp_parser/scanner.rb#2509 + def capturing_group_count=(_arg0); end + + # source://regexp_parser//lib/regexp_parser/scanner.rb#2484 def emit(type, token, text); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2388 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2509 def literal_run; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2388 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2509 def literal_run=(_arg0); end # source://regexp_parser//lib/regexp_parser/scanner.rb#24 @@ -2027,938 +2039,962 @@ class Regexp::Scanner private - # source://regexp_parser//lib/regexp_parser/scanner.rb#2425 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2555 def append_literal(data, ts, te); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def block; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def block=(_arg0); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def char_pos; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def char_pos=(_arg0); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def collect_tokens; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def collect_tokens=(_arg0); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def conditional_stack; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def conditional_stack=(_arg0); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2419 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2549 def copy(data, ts, te); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2430 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2560 def emit_literal; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2465 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2595 def emit_meta_control_sequence(data, ts, te, token); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2436 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2566 def emit_options(text); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2520 + def extract_encoding(input_object, options); end + + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def free_spacing; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def free_spacing=(_arg0); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2398 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2528 def free_spacing?(input_object, options); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def group_depth; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def group_depth=(_arg0); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2410 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2540 def in_group?; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2414 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2544 def in_set?; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def prev_token; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def prev_token=(_arg0); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 + def regexp_encoding; end + + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 + def regexp_encoding=(_arg0); end + + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def set_depth; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def set_depth=(_arg0); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def spacing_stack; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def spacing_stack=(_arg0); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def tokens; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2392 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2513 def tokens=(_arg0); end class << self - # source://regexp_parser//lib/regexp_parser/scanner.rb#2349 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2469 def long_prop_map; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2353 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2473 def parse_prop_map(name); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2357 - def posix_classes; end - # source://regexp_parser//lib/regexp_parser/scanner.rb#20 def scan(input_object, options: T.unsafe(nil), collect_tokens: T.unsafe(nil), &block); end - # source://regexp_parser//lib/regexp_parser/scanner.rb#2345 + # source://regexp_parser//lib/regexp_parser/scanner.rb#2465 def short_prop_map; end end end -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#44 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#46 class Regexp::Scanner::InvalidBackrefError < ::Regexp::Scanner::ValidationError - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#45 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#47 def initialize(what, reason); end end -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#29 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#31 class Regexp::Scanner::InvalidGroupError < ::Regexp::Scanner::ValidationError - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#30 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#32 def initialize(what, reason); end end -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#37 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#39 class Regexp::Scanner::InvalidGroupOption < ::Regexp::Scanner::ValidationError - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#38 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#40 def initialize(option, text); end end -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#22 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#24 class Regexp::Scanner::InvalidSequenceError < ::Regexp::Scanner::ValidationError - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#23 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#25 def initialize(what = T.unsafe(nil), where = T.unsafe(nil)); end end -# source://regexp_parser//lib/regexp_parser/scanner/errors/premature_end_error.rb#3 +# source://regexp_parser//lib/regexp_parser/scanner.rb#2478 +Regexp::Scanner::POSIX_CLASSES = T.let(T.unsafe(nil), Hash) + +# source://regexp_parser//lib/regexp_parser/scanner/errors/premature_end_error.rb#5 class Regexp::Scanner::PrematureEndError < ::Regexp::Scanner::ScannerError - # source://regexp_parser//lib/regexp_parser/scanner/errors/premature_end_error.rb#4 + # source://regexp_parser//lib/regexp_parser/scanner/errors/premature_end_error.rb#6 def initialize(where = T.unsafe(nil)); end end -# source://regexp_parser//lib/regexp_parser/scanner/errors/scanner_error.rb#5 +# source://regexp_parser//lib/regexp_parser/scanner/errors/scanner_error.rb#7 class Regexp::Scanner::ScannerError < ::Regexp::Parser::Error; end -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#58 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#60 class Regexp::Scanner::UnknownPosixClassError < ::Regexp::Scanner::ValidationError - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#59 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#61 def initialize(text, _); end end -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#51 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#53 class Regexp::Scanner::UnknownUnicodePropertyError < ::Regexp::Scanner::ValidationError - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#52 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#54 def initialize(name, _); end end -# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#3 +# source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#5 class Regexp::Scanner::ValidationError < ::Regexp::Scanner::ScannerError class << self - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#5 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#7 def for(type, problem, reason = T.unsafe(nil)); end - # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#9 + # source://regexp_parser//lib/regexp_parser/scanner/errors/validation_error.rb#11 def types; end end end -# source://regexp_parser//lib/regexp_parser/syntax.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax.rb#5 module Regexp::Syntax private - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#61 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#63 def comparable(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#44 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#46 def const_missing(const_name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#51 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#53 def fallback_version_class(version); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#22 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#24 def for(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#26 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#28 def new(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#57 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#59 def specified_versions; end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#32 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#34 def supported?(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#36 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#38 def version_class(version); end class << self - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#61 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#63 def comparable(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#44 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#46 def const_missing(const_name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#51 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#53 def fallback_version_class(version); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#22 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#24 def for(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#26 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#28 def new(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#57 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#59 def specified_versions; end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#32 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#34 def supported?(name); end - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#36 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#38 def version_class(version); end end end -# source://regexp_parser//lib/regexp_parser/syntax/any.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/any.rb#7 class Regexp::Syntax::Any < ::Regexp::Syntax::Base class << self - # source://regexp_parser//lib/regexp_parser/syntax/any.rb#8 + # source://regexp_parser//lib/regexp_parser/syntax/any.rb#10 def implements?(_type, _token); end end end -# source://regexp_parser//lib/regexp_parser/syntax/base.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/base.rb#11 class Regexp::Syntax::Base include ::Regexp::Syntax::Token - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#99 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#101 def initialize; end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#104 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#106 def method_missing(name, *args); end private - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#115 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#117 def respond_to_missing?(name, include_private = T.unsafe(nil)); end class << self - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#46 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#48 def added_features; end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#40 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#42 def check!(type, token); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#31 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#33 def check?(type, token); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#26 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#28 def excludes(type, tokens); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#13 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#15 def features; end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#13 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#15 def features=(_arg0); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#36 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#38 def implementations(type); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#21 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#23 def implements(type, tokens); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#40 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#42 def implements!(type, token); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#31 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#33 def implements?(type, token); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#16 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#18 def inherited(subclass); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#54 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#56 def normalize(type, token); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#74 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#76 def normalize_backref(type, token); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#65 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#67 def normalize_group(type, token); end - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#50 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#52 def removed_features; end end end -# source://regexp_parser//lib/regexp_parser/syntax/versions.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/versions.rb#10 Regexp::Syntax::CURRENT = Regexp::Syntax::V3_2_0 -# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#8 class Regexp::Syntax::InvalidVersionNameError < ::Regexp::Syntax::SyntaxError - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#7 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#9 def initialize(name); end end -# source://regexp_parser//lib/regexp_parser/syntax/base.rb#2 +# source://regexp_parser//lib/regexp_parser/syntax/base.rb#4 class Regexp::Syntax::NotImplementedError < ::Regexp::Syntax::SyntaxError - # source://regexp_parser//lib/regexp_parser/syntax/base.rb#3 + # source://regexp_parser//lib/regexp_parser/syntax/base.rb#5 def initialize(syntax, type, token); end end -# source://regexp_parser//lib/regexp_parser/syntax.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax.rb#6 class Regexp::Syntax::SyntaxError < ::Regexp::Parser::Error; end -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#5 module Regexp::Syntax::Token; end -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#42 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#44 Regexp::Syntax::Token::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#15 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#17 module Regexp::Syntax::Token::Alternation; end -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#16 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#18 Regexp::Syntax::Token::Alternation::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#17 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#19 Regexp::Syntax::Token::Alternation::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#5 module Regexp::Syntax::Token::Anchor; end -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#11 Regexp::Syntax::Token::Anchor::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#6 Regexp::Syntax::Token::Anchor::Basic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#7 Regexp::Syntax::Token::Anchor::Extended = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#9 Regexp::Syntax::Token::Anchor::MatchStart = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#8 Regexp::Syntax::Token::Anchor::String = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#10 +# source://regexp_parser//lib/regexp_parser/syntax/token/anchor.rb#12 Regexp::Syntax::Token::Anchor::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#5 module Regexp::Syntax::Token::Assertion; end -# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#9 Regexp::Syntax::Token::Assertion::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#6 Regexp::Syntax::Token::Assertion::Lookahead = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#7 Regexp::Syntax::Token::Assertion::Lookbehind = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token/assertion.rb#10 Regexp::Syntax::Token::Assertion::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#31 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#33 Regexp::Syntax::Token::Backref = Regexp::Syntax::Token::Backreference -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#5 module Regexp::Syntax::Token::Backreference; end -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#15 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#17 Regexp::Syntax::Token::Backreference::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#9 Regexp::Syntax::Token::Backreference::Name = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#8 Regexp::Syntax::Token::Backreference::Number = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#7 Regexp::Syntax::Token::Backreference::NumberRef = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#6 Regexp::Syntax::Token::Backreference::Plain = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#11 Regexp::Syntax::Token::Backreference::RecursionLevel = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#16 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#18 Regexp::Syntax::Token::Backreference::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#13 Regexp::Syntax::Token::Backreference::V1_8_6 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#13 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#15 Regexp::Syntax::Token::Backreference::V1_9_1 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#5 module Regexp::Syntax::Token::CharacterSet; end -# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#9 Regexp::Syntax::Token::CharacterSet::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#6 Regexp::Syntax::Token::CharacterSet::Basic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#7 Regexp::Syntax::Token::CharacterSet::Extended = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#10 Regexp::Syntax::Token::CharacterSet::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#5 module Regexp::Syntax::Token::CharacterType; end -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#10 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#12 Regexp::Syntax::Token::CharacterType::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#6 Regexp::Syntax::Token::CharacterType::Basic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#10 Regexp::Syntax::Token::CharacterType::Clustered = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#7 Regexp::Syntax::Token::CharacterType::Extended = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#8 Regexp::Syntax::Token::CharacterType::Hex = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_type.rb#13 Regexp::Syntax::Token::CharacterType::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#5 module Regexp::Syntax::Token::Conditional; end -# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#11 Regexp::Syntax::Token::Conditional::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#8 Regexp::Syntax::Token::Conditional::Condition = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#6 Regexp::Syntax::Token::Conditional::Delimiters = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#9 Regexp::Syntax::Token::Conditional::Separator = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token/conditional.rb#13 Regexp::Syntax::Token::Conditional::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#5 module Regexp::Syntax::Token::Escape; end -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#10 Regexp::Syntax::Token::Escape::ASCII = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#24 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#26 Regexp::Syntax::Token::Escape::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#6 Regexp::Syntax::Token::Escape::Basic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#8 Regexp::Syntax::Token::Escape::Control = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#20 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#22 Regexp::Syntax::Token::Escape::Hex = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#13 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#15 Regexp::Syntax::Token::Escape::Meta = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#22 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#24 Regexp::Syntax::Token::Escape::Octal = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#25 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#27 Regexp::Syntax::Token::Escape::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#13 Regexp::Syntax::Token::Escape::Unicode = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#31 +# source://regexp_parser//lib/regexp_parser/syntax/token/escape.rb#33 Regexp::Syntax::Token::EscapeSequence = Regexp::Syntax::Token::Escape -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#13 module Regexp::Syntax::Token::FreeSpace; end -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#12 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#14 Regexp::Syntax::Token::FreeSpace::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#13 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#15 Regexp::Syntax::Token::FreeSpace::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#5 module Regexp::Syntax::Token::Group; end -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#17 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#19 Regexp::Syntax::Token::Group::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#10 Regexp::Syntax::Token::Group::Atomic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#6 Regexp::Syntax::Token::Group::Basic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#10 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#12 Regexp::Syntax::Token::Group::Comment = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#7 Regexp::Syntax::Token::Group::Extended = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#9 Regexp::Syntax::Token::Group::Named = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#11 Regexp::Syntax::Token::Group::Passive = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#18 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#20 Regexp::Syntax::Token::Group::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#12 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#14 Regexp::Syntax::Token::Group::V1_8_6 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#15 +# source://regexp_parser//lib/regexp_parser/syntax/token/group.rb#17 Regexp::Syntax::Token::Group::V2_4_1 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#5 module Regexp::Syntax::Token::Keep; end -# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#8 Regexp::Syntax::Token::Keep::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#6 Regexp::Syntax::Token::Keep::Mark = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/keep.rb#9 Regexp::Syntax::Token::Keep::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#8 module Regexp::Syntax::Token::Literal; end -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#9 Regexp::Syntax::Token::Literal::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#10 Regexp::Syntax::Token::Literal::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#6 Regexp::Syntax::Token::Map = T.let(T.unsafe(nil), Hash) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#5 module Regexp::Syntax::Token::Meta; end -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#8 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#10 Regexp::Syntax::Token::Meta::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#5 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#7 Regexp::Syntax::Token::Meta::Alternation = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#6 Regexp::Syntax::Token::Meta::Basic = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#8 Regexp::Syntax::Token::Meta::Extended = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/meta.rb#11 Regexp::Syntax::Token::Meta::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#5 module Regexp::Syntax::Token::PosixClass; end -# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#11 Regexp::Syntax::Token::PosixClass::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#7 +# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#9 Regexp::Syntax::Token::PosixClass::Extensions = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#13 Regexp::Syntax::Token::PosixClass::NonType = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#6 Regexp::Syntax::Token::PosixClass::Standard = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#10 +# source://regexp_parser//lib/regexp_parser/syntax/token/posix_class.rb#12 Regexp::Syntax::Token::PosixClass::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#749 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#764 Regexp::Syntax::Token::Property = Regexp::Syntax::Token::UnicodeProperty -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#5 module Regexp::Syntax::Token::Quantifier; end -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#29 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#31 Regexp::Syntax::Token::Quantifier::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#6 Regexp::Syntax::Token::Quantifier::Greedy = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#22 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#24 Regexp::Syntax::Token::Quantifier::Interval = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#26 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#28 Regexp::Syntax::Token::Quantifier::IntervalAll = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#24 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#26 Regexp::Syntax::Token::Quantifier::IntervalPossessive = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#23 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#25 Regexp::Syntax::Token::Quantifier::IntervalReluctant = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#16 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#18 Regexp::Syntax::Token::Quantifier::Possessive = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#10 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#12 Regexp::Syntax::Token::Quantifier::Reluctant = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#30 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#32 Regexp::Syntax::Token::Quantifier::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#28 +# source://regexp_parser//lib/regexp_parser/syntax/token/quantifier.rb#30 Regexp::Syntax::Token::Quantifier::V1_8_6 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#14 +# source://regexp_parser//lib/regexp_parser/syntax/token/character_set.rb#16 Regexp::Syntax::Token::Set = Regexp::Syntax::Token::CharacterSet -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#20 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#22 module Regexp::Syntax::Token::SubexpressionCall; end -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#24 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#26 Regexp::Syntax::Token::SubexpressionCall::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#21 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#23 Regexp::Syntax::Token::SubexpressionCall::Name = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#22 +# source://regexp_parser//lib/regexp_parser/syntax/token/backreference.rb#24 Regexp::Syntax::Token::SubexpressionCall::Number = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token.rb#43 +# source://regexp_parser//lib/regexp_parser/syntax/token.rb#45 Regexp::Syntax::Token::Types = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#5 module Regexp::Syntax::Token::UnicodeProperty; end -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#64 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#68 Regexp::Syntax::Token::UnicodeProperty::Age = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#40 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#42 Regexp::Syntax::Token::UnicodeProperty::Age_V1_9_3 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#44 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#46 Regexp::Syntax::Token::UnicodeProperty::Age_V2_0_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#46 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#48 Regexp::Syntax::Token::UnicodeProperty::Age_V2_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#48 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#50 Regexp::Syntax::Token::UnicodeProperty::Age_V2_3_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#50 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#52 Regexp::Syntax::Token::UnicodeProperty::Age_V2_4_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#52 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#54 Regexp::Syntax::Token::UnicodeProperty::Age_V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#54 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#56 Regexp::Syntax::Token::UnicodeProperty::Age_V2_6_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#56 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#58 Regexp::Syntax::Token::UnicodeProperty::Age_V2_6_2 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#58 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#60 Regexp::Syntax::Token::UnicodeProperty::Age_V2_6_3 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#60 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#62 Regexp::Syntax::Token::UnicodeProperty::Age_V3_1_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#62 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#64 Regexp::Syntax::Token::UnicodeProperty::Age_V3_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#739 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#66 +Regexp::Syntax::Token::UnicodeProperty::Age_V3_5_0 = T.let(T.unsafe(nil), Array) + +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#754 Regexp::Syntax::Token::UnicodeProperty::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#13 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#15 module Regexp::Syntax::Token::UnicodeProperty::Category; end -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#36 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#38 Regexp::Syntax::Token::UnicodeProperty::Category::All = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#33 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#35 Regexp::Syntax::Token::UnicodeProperty::Category::Codepoint = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#14 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#16 Regexp::Syntax::Token::UnicodeProperty::Category::Letter = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#17 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#19 Regexp::Syntax::Token::UnicodeProperty::Category::Mark = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#20 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#22 Regexp::Syntax::Token::UnicodeProperty::Category::Number = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#23 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#25 Regexp::Syntax::Token::UnicodeProperty::Category::Punctuation = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#30 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#32 Regexp::Syntax::Token::UnicodeProperty::Category::Separator = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#27 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#29 Regexp::Syntax::Token::UnicodeProperty::Category::Symbol = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#6 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#8 Regexp::Syntax::Token::UnicodeProperty::CharType_V1_9_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#9 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#11 Regexp::Syntax::Token::UnicodeProperty::CharType_V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#133 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#143 Regexp::Syntax::Token::UnicodeProperty::Derived = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#66 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#70 Regexp::Syntax::Token::UnicodeProperty::Derived_V1_9_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#120 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#124 Regexp::Syntax::Token::UnicodeProperty::Derived_V2_0_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#125 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#129 Regexp::Syntax::Token::UnicodeProperty::Derived_V2_4_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#129 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#133 Regexp::Syntax::Token::UnicodeProperty::Derived_V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#724 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#137 +Regexp::Syntax::Token::UnicodeProperty::Derived_V3_5_0 = T.let(T.unsafe(nil), Array) + +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#738 Regexp::Syntax::Token::UnicodeProperty::Emoji = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#694 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#708 Regexp::Syntax::Token::UnicodeProperty::Emoji_V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#702 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#716 Regexp::Syntax::Token::UnicodeProperty::Emoji_V2_6_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#722 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#736 Regexp::Syntax::Token::UnicodeProperty::Enumerated = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#706 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#720 Regexp::Syntax::Token::UnicodeProperty::Enumerated_V2_4_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#742 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#757 Regexp::Syntax::Token::UnicodeProperty::NonType = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#11 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#13 Regexp::Syntax::Token::UnicodeProperty::POSIX = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#332 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#342 Regexp::Syntax::Token::UnicodeProperty::Script = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#135 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#145 Regexp::Syntax::Token::UnicodeProperty::Script_V1_9_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#231 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#241 Regexp::Syntax::Token::UnicodeProperty::Script_V1_9_3 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#237 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#247 Regexp::Syntax::Token::UnicodeProperty::Script_V2_0_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#247 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#257 Regexp::Syntax::Token::UnicodeProperty::Script_V2_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#273 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#283 Regexp::Syntax::Token::UnicodeProperty::Script_V2_3_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#282 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#292 Regexp::Syntax::Token::UnicodeProperty::Script_V2_4_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#291 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#301 Regexp::Syntax::Token::UnicodeProperty::Script_V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#298 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#308 Regexp::Syntax::Token::UnicodeProperty::Script_V2_6_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#308 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#318 Regexp::Syntax::Token::UnicodeProperty::Script_V2_6_2 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#315 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#325 Regexp::Syntax::Token::UnicodeProperty::Script_V3_1_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#322 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#332 Regexp::Syntax::Token::UnicodeProperty::Script_V3_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#741 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#756 Regexp::Syntax::Token::UnicodeProperty::Type = T.let(T.unsafe(nil), Symbol) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#692 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#706 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#334 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#344 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V1_9_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#433 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#443 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_0_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#561 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#571 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#596 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#606 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_3_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#609 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#619 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_4_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#623 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#633 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#633 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#643 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_6_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#647 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#657 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V2_6_2 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#659 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#669 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V3_1_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#670 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#680 Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V3_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#726 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#702 +Regexp::Syntax::Token::UnicodeProperty::UnicodeBlock_V3_5_0 = T.let(T.unsafe(nil), Array) + +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#740 Regexp::Syntax::Token::UnicodeProperty::V1_9_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#727 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#741 Regexp::Syntax::Token::UnicodeProperty::V1_9_3 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#728 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#742 Regexp::Syntax::Token::UnicodeProperty::V2_0_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#729 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#743 Regexp::Syntax::Token::UnicodeProperty::V2_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#730 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#744 Regexp::Syntax::Token::UnicodeProperty::V2_3_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#731 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#745 Regexp::Syntax::Token::UnicodeProperty::V2_4_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#732 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#746 Regexp::Syntax::Token::UnicodeProperty::V2_5_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#733 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#747 Regexp::Syntax::Token::UnicodeProperty::V2_6_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#734 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#748 Regexp::Syntax::Token::UnicodeProperty::V2_6_2 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#735 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#749 Regexp::Syntax::Token::UnicodeProperty::V2_6_3 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#736 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#750 Regexp::Syntax::Token::UnicodeProperty::V3_1_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#737 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#751 Regexp::Syntax::Token::UnicodeProperty::V3_2_0 = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#12 +# source://regexp_parser//lib/regexp_parser/syntax/token/unicode_property.rb#752 +Regexp::Syntax::Token::UnicodeProperty::V3_5_0 = T.let(T.unsafe(nil), Array) + +# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#14 class Regexp::Syntax::UnknownSyntaxNameError < ::Regexp::Syntax::SyntaxError - # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#13 + # source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#15 def initialize(name); end end -# source://regexp_parser//lib/regexp_parser/syntax/versions/1.8.6.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/1.8.6.rb#3 class Regexp::Syntax::V1_8_6 < ::Regexp::Syntax::Base; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/1.9.1.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/1.9.1.rb#3 class Regexp::Syntax::V1_9_1 < ::Regexp::Syntax::V1_8_6; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/1.9.3.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/1.9.3.rb#3 class Regexp::Syntax::V1_9_3 < ::Regexp::Syntax::V1_9_1; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.0.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.0.0.rb#3 class Regexp::Syntax::V2_0_0 < ::Regexp::Syntax::V1_9_3; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.2.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.2.0.rb#3 class Regexp::Syntax::V2_2_0 < ::Regexp::Syntax::V2_0_0; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.3.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.3.0.rb#3 class Regexp::Syntax::V2_3_0 < ::Regexp::Syntax::V2_2_0; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.4.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.4.0.rb#3 class Regexp::Syntax::V2_4_0 < ::Regexp::Syntax::V2_3_0; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.4.1.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.4.1.rb#3 class Regexp::Syntax::V2_4_1 < ::Regexp::Syntax::V2_4_0; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.5.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.5.0.rb#3 class Regexp::Syntax::V2_5_0 < ::Regexp::Syntax::V2_4_1; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.6.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.6.0.rb#3 class Regexp::Syntax::V2_6_0 < ::Regexp::Syntax::V2_5_0; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.6.2.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.6.2.rb#3 class Regexp::Syntax::V2_6_2 < ::Regexp::Syntax::V2_6_0; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/2.6.3.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/2.6.3.rb#3 class Regexp::Syntax::V2_6_3 < ::Regexp::Syntax::V2_6_2; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/3.1.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/3.1.0.rb#3 class Regexp::Syntax::V3_1_0 < ::Regexp::Syntax::V2_6_3; end -# source://regexp_parser//lib/regexp_parser/syntax/versions/3.2.0.rb#1 +# source://regexp_parser//lib/regexp_parser/syntax/versions/3.2.0.rb#3 class Regexp::Syntax::V3_2_0 < ::Regexp::Syntax::V3_1_0; end -# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#4 +# source://regexp_parser//lib/regexp_parser/syntax/versions/3.5.0.rb#1 +class Regexp::Syntax::V3_5_0 < ::Regexp::Syntax::V3_2_0; end + +# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#6 Regexp::Syntax::VERSION_CONST_REGEXP = T.let(T.unsafe(nil), Regexp) -# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#2 +# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#4 Regexp::Syntax::VERSION_FORMAT = T.let(T.unsafe(nil), String) -# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#3 +# source://regexp_parser//lib/regexp_parser/syntax/version_lookup.rb#5 Regexp::Syntax::VERSION_REGEXP = T.let(T.unsafe(nil), Regexp) -# source://regexp_parser//lib/regexp_parser/token.rb#2 +# source://regexp_parser//lib/regexp_parser/token.rb#4 Regexp::TOKEN_KEYS = T.let(T.unsafe(nil), Array) -# source://regexp_parser//lib/regexp_parser/token.rb#13 +# source://regexp_parser//lib/regexp_parser/token.rb#15 class Regexp::Token < ::Struct def conditional_level; end def conditional_level=(_); end - # source://regexp_parser//lib/regexp_parser/token.rb#20 + # source://regexp_parser//lib/regexp_parser/token.rb#22 def length; end def level; end def level=(_); end - # source://regexp_parser//lib/regexp_parser/token.rb#14 + # source://regexp_parser//lib/regexp_parser/token.rb#16 def next; end - # source://regexp_parser//lib/regexp_parser/token.rb#14 + # source://regexp_parser//lib/regexp_parser/token.rb#16 def next=(_arg0); end - # source://regexp_parser//lib/regexp_parser/token.rb#16 + # source://regexp_parser//lib/regexp_parser/token.rb#18 def offset; end - # source://regexp_parser//lib/regexp_parser/token.rb#14 + # source://regexp_parser//lib/regexp_parser/token.rb#16 def previous; end - # source://regexp_parser//lib/regexp_parser/token.rb#14 + # source://regexp_parser//lib/regexp_parser/token.rb#16 def previous=(_arg0); end def set_level; end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/rexml@3.4.1.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/rexml@3.4.4.rbi similarity index 76% rename from tools/ruby-gems/udb/sorbet/rbi/gems/rexml@3.4.1.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/rexml@3.4.4.rbi index 9fc5eba808..702d8b27e8 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/rexml@3.4.1.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/rexml@3.4.4.rbi @@ -43,103 +43,106 @@ class REXML::Attribute # source://rexml//lib/rexml/attribute.rb#106 def ==(other); end - # source://rexml//lib/rexml/attribute.rb#164 + # source://rexml//lib/rexml/attribute.rb#161 def clone; end # source://rexml//lib/rexml/attribute.rb#132 def doctype; end + # source://rexml//lib/rexml/attribute.rb#205 + def document; end + # source://rexml//lib/rexml/attribute.rb#15 def element; end - # source://rexml//lib/rexml/attribute.rb#172 + # source://rexml//lib/rexml/attribute.rb#169 def element=(element); end # source://rexml//lib/rexml/attribute.rb#111 def hash; end - # source://rexml//lib/rexml/attribute.rb#198 + # source://rexml//lib/rexml/attribute.rb#195 def inspect; end # source://rexml//lib/rexml/attribute.rb#95 def namespace(arg = T.unsafe(nil)); end - # source://rexml//lib/rexml/attribute.rb#194 + # source://rexml//lib/rexml/attribute.rb#191 def node_type; end - # source://rexml//lib/rexml/attribute.rb#158 + # source://rexml//lib/rexml/attribute.rb#155 def normalized=(new_normalized); end # source://rexml//lib/rexml/attribute.rb#70 def prefix; end - # source://rexml//lib/rexml/attribute.rb#185 + # source://rexml//lib/rexml/attribute.rb#182 def remove; end - # source://rexml//lib/rexml/attribute.rb#140 + # source://rexml//lib/rexml/attribute.rb#137 def to_s; end # source://rexml//lib/rexml/attribute.rb#121 def to_string; end - # source://rexml//lib/rexml/attribute.rb#149 + # source://rexml//lib/rexml/attribute.rb#146 def value; end - # source://rexml//lib/rexml/attribute.rb#190 + # source://rexml//lib/rexml/attribute.rb#187 def write(output, indent = T.unsafe(nil)); end - # source://rexml//lib/rexml/attribute.rb#204 + # source://rexml//lib/rexml/attribute.rb#201 def xpath; end end -# source://rexml//lib/rexml/element.rb#2137 +# source://rexml//lib/rexml/element.rb#2131 class REXML::Attributes < ::Hash - # source://rexml//lib/rexml/element.rb#2156 + # source://rexml//lib/rexml/element.rb#2150 def initialize(element); end - # source://rexml//lib/rexml/element.rb#2522 + # source://rexml//lib/rexml/element.rb#2516 def <<(attribute); end - # source://rexml//lib/rexml/element.rb#2181 + # source://rexml//lib/rexml/element.rb#2175 def [](name); end - # source://rexml//lib/rexml/element.rb#2365 + # source://rexml//lib/rexml/element.rb#2358 def []=(name, value); end - # source://rexml//lib/rexml/element.rb#2522 + # source://rexml//lib/rexml/element.rb#2516 def add(attribute); end - # source://rexml//lib/rexml/element.rb#2475 + # source://rexml//lib/rexml/element.rb#2471 def delete(attribute); end - # source://rexml//lib/rexml/element.rb#2544 + # source://rexml//lib/rexml/element.rb#2538 def delete_all(name); end - # source://rexml//lib/rexml/element.rb#2283 + # source://rexml//lib/rexml/element.rb#2276 def each; end - # source://rexml//lib/rexml/element.rb#2250 + # source://rexml//lib/rexml/element.rb#2243 def each_attribute; end - # source://rexml//lib/rexml/element.rb#2309 + # source://rexml//lib/rexml/element.rb#2302 def get_attribute(name); end - # source://rexml//lib/rexml/element.rb#2570 + # source://rexml//lib/rexml/element.rb#2564 def get_attribute_ns(namespace, name); end - # source://rexml//lib/rexml/element.rb#2221 + # source://rexml//lib/rexml/element.rb#2214 def length; end - # source://rexml//lib/rexml/element.rb#2431 + # source://rexml//lib/rexml/element.rb#2426 def namespaces; end - # source://rexml//lib/rexml/element.rb#2406 + # source://rexml//lib/rexml/element.rb#2400 def prefixes; end - # source://rexml//lib/rexml/element.rb#2221 + # source://rexml//lib/rexml/element.rb#2214 def size; end - # source://rexml//lib/rexml/element.rb#2203 + # source://rexml//lib/rexml/element.rb#2196 def to_a; end end @@ -168,7 +171,7 @@ class REXML::Child # source://rexml//lib/rexml/child.rb#18 def initialize(parent = T.unsafe(nil)); end - # source://rexml//lib/rexml/child.rb#91 + # source://rexml//lib/rexml/child.rb#90 def bytes; end # source://rexml//lib/rexml/child.rb#85 @@ -234,15 +237,15 @@ end # source://rexml//lib/rexml/xpath_parser.rb#11 module REXML::DClonable; end -# source://rexml//lib/rexml/doctype.rb#242 +# source://rexml//lib/rexml/doctype.rb#238 class REXML::Declaration < ::REXML::Child - # source://rexml//lib/rexml/doctype.rb#243 + # source://rexml//lib/rexml/doctype.rb#239 def initialize(src); end - # source://rexml//lib/rexml/doctype.rb#248 + # source://rexml//lib/rexml/doctype.rb#244 def to_s; end - # source://rexml//lib/rexml/doctype.rb#255 + # source://rexml//lib/rexml/doctype.rb#251 def write(output, indent); end end @@ -253,7 +256,7 @@ class REXML::DocType < ::REXML::Parent # source://rexml//lib/rexml/doctype.rb#80 def initialize(first, parent = T.unsafe(nil)); end - # source://rexml//lib/rexml/doctype.rb#185 + # source://rexml//lib/rexml/doctype.rb#181 def add(child); end # source://rexml//lib/rexml/doctype.rb#125 @@ -271,7 +274,7 @@ class REXML::DocType < ::REXML::Parent # source://rexml//lib/rexml/doctype.rb#66 def entities; end - # source://rexml//lib/rexml/doctype.rb#181 + # source://rexml//lib/rexml/doctype.rb#177 def entity(name); end # source://rexml//lib/rexml/doctype.rb#66 @@ -286,16 +289,16 @@ class REXML::DocType < ::REXML::Parent # source://rexml//lib/rexml/doctype.rb#111 def node_type; end - # source://rexml//lib/rexml/doctype.rb#229 + # source://rexml//lib/rexml/doctype.rb#225 def notation(name); end - # source://rexml//lib/rexml/doctype.rb#221 + # source://rexml//lib/rexml/doctype.rb#217 def notations; end - # source://rexml//lib/rexml/doctype.rb#195 + # source://rexml//lib/rexml/doctype.rb#191 def public; end - # source://rexml//lib/rexml/doctype.rb#207 + # source://rexml//lib/rexml/doctype.rb#203 def system; end # source://rexml//lib/rexml/doctype.rb#149 @@ -307,85 +310,94 @@ class REXML::Document < ::REXML::Element # source://rexml//lib/rexml/document.rb#92 def initialize(source = T.unsafe(nil), context = T.unsafe(nil)); end - # source://rexml//lib/rexml/document.rb#172 + # source://rexml//lib/rexml/document.rb#174 def <<(child); end - # source://rexml//lib/rexml/document.rb#172 + # source://rexml//lib/rexml/document.rb#174 def add(child); end - # source://rexml//lib/rexml/document.rb#211 + # source://rexml//lib/rexml/document.rb#213 def add_element(arg = T.unsafe(nil), arg2 = T.unsafe(nil)); end - # source://rexml//lib/rexml/document.rb#122 + # source://rexml//lib/rexml/document.rb#124 def clone; end - # source://rexml//lib/rexml/document.rb#243 + # source://rexml//lib/rexml/document.rb#245 def doctype; end - # source://rexml//lib/rexml/document.rb#446 + # source://rexml//lib/rexml/document.rb#448 def document; end - # source://rexml//lib/rexml/document.rb#292 + # source://rexml//lib/rexml/document.rb#294 def encoding; end - # source://rexml//lib/rexml/document.rb#435 + # source://rexml//lib/rexml/document.rb#437 def entity_expansion_count; end - # source://rexml//lib/rexml/document.rb#436 + # source://rexml//lib/rexml/document.rb#438 def entity_expansion_limit=(_arg0); end - # source://rexml//lib/rexml/document.rb#437 + # source://rexml//lib/rexml/document.rb#439 def entity_expansion_text_limit; end - # source://rexml//lib/rexml/document.rb#437 + # source://rexml//lib/rexml/document.rb#439 def entity_expansion_text_limit=(_arg0); end - # source://rexml//lib/rexml/document.rb#131 + # source://rexml//lib/rexml/document.rb#133 def expanded_name; end - # source://rexml//lib/rexml/document.rb#131 + # source://rexml//lib/rexml/document.rb#133 def name; end - # source://rexml//lib/rexml/document.rb#112 + # source://rexml//lib/rexml/document.rb#114 def node_type; end - # source://rexml//lib/rexml/document.rb#439 + # source://rexml//lib/rexml/document.rb#441 def record_entity_expansion; end - # source://rexml//lib/rexml/document.rb#227 + # source://rexml//lib/rexml/document.rb#229 def root; end - # source://rexml//lib/rexml/document.rb#307 + # source://rexml//lib/rexml/document.rb#309 def stand_alone?; end - # source://rexml//lib/rexml/document.rb#277 + # source://rexml//lib/rexml/document.rb#279 def version; end - # source://rexml//lib/rexml/document.rb#367 + # source://rexml//lib/rexml/document.rb#369 def write(*arguments); end - # source://rexml//lib/rexml/document.rb#260 + # source://rexml//lib/rexml/document.rb#262 def xml_decl; end private - # source://rexml//lib/rexml/document.rb#451 + # source://rexml//lib/rexml/document.rb#467 def build(source); end + # source://rexml//lib/rexml/document.rb#458 + def enable_cache; end + + # source://rexml//lib/rexml/document.rb#454 + def namespaces_cache; end + + # source://rexml//lib/rexml/document.rb#454 + def namespaces_cache=(_arg0); end + class << self - # source://rexml//lib/rexml/document.rb#417 + # source://rexml//lib/rexml/document.rb#419 def entity_expansion_limit; end - # source://rexml//lib/rexml/document.rb#410 + # source://rexml//lib/rexml/document.rb#412 def entity_expansion_limit=(val); end - # source://rexml//lib/rexml/document.rb#431 + # source://rexml//lib/rexml/document.rb#433 def entity_expansion_text_limit; end - # source://rexml//lib/rexml/document.rb#424 + # source://rexml//lib/rexml/document.rb#426 def entity_expansion_text_limit=(val); end - # source://rexml//lib/rexml/document.rb#403 + # source://rexml//lib/rexml/document.rb#405 def parse_stream(source, listener); end end end @@ -398,37 +410,37 @@ class REXML::Element < ::REXML::Parent # source://rexml//lib/rexml/element.rb#319 def initialize(arg = T.unsafe(nil), parent = T.unsafe(nil), context = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#1246 + # source://rexml//lib/rexml/element.rb#1238 def [](name_or_index); end - # source://rexml//lib/rexml/element.rb#1345 + # source://rexml//lib/rexml/element.rb#1336 def add_attribute(key, value = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#1376 + # source://rexml//lib/rexml/element.rb#1367 def add_attributes(hash); end - # source://rexml//lib/rexml/element.rb#732 + # source://rexml//lib/rexml/element.rb#725 def add_element(element, attrs = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#655 + # source://rexml//lib/rexml/element.rb#648 def add_namespace(prefix, uri = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#1147 + # source://rexml//lib/rexml/element.rb#1139 def add_text(text); end - # source://rexml//lib/rexml/element.rb#1287 + # source://rexml//lib/rexml/element.rb#1279 def attribute(name, namespace = T.unsafe(nil)); end # source://rexml//lib/rexml/element.rb#278 def attributes; end - # source://rexml//lib/rexml/element.rb#1420 + # source://rexml//lib/rexml/element.rb#1411 def cdatas; end # source://rexml//lib/rexml/element.rb#383 def clone; end - # source://rexml//lib/rexml/element.rb#1441 + # source://rexml//lib/rexml/element.rb#1432 def comments; end # source://rexml//lib/rexml/element.rb#281 @@ -437,73 +449,73 @@ class REXML::Element < ::REXML::Parent # source://rexml//lib/rexml/element.rb#281 def context=(_arg0); end - # source://rexml//lib/rexml/element.rb#1395 + # source://rexml//lib/rexml/element.rb#1386 def delete_attribute(key); end - # source://rexml//lib/rexml/element.rb#778 + # source://rexml//lib/rexml/element.rb#771 def delete_element(element); end - # source://rexml//lib/rexml/element.rb#687 + # source://rexml//lib/rexml/element.rb#680 def delete_namespace(namespace = T.unsafe(nil)); end # source://rexml//lib/rexml/element.rb#475 def document; end - # source://rexml//lib/rexml/element.rb#930 + # source://rexml//lib/rexml/element.rb#923 def each_element(xpath = T.unsafe(nil), &block); end - # source://rexml//lib/rexml/element.rb#847 + # source://rexml//lib/rexml/element.rb#840 def each_element_with_attribute(key, value = T.unsafe(nil), max = T.unsafe(nil), name = T.unsafe(nil), &block); end - # source://rexml//lib/rexml/element.rb#904 + # source://rexml//lib/rexml/element.rb#897 def each_element_with_text(text = T.unsafe(nil), max = T.unsafe(nil), name = T.unsafe(nil), &block); end # source://rexml//lib/rexml/element.rb#278 def elements; end - # source://rexml//lib/rexml/element.rb#949 + # source://rexml//lib/rexml/element.rb#942 def get_elements(xpath); end - # source://rexml//lib/rexml/element.rb#1053 + # source://rexml//lib/rexml/element.rb#1045 def get_text(path = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#1315 + # source://rexml//lib/rexml/element.rb#1306 def has_attributes?; end - # source://rexml//lib/rexml/element.rb#794 + # source://rexml//lib/rexml/element.rb#787 def has_elements?; end - # source://rexml//lib/rexml/element.rb#1002 + # source://rexml//lib/rexml/element.rb#995 def has_text?; end - # source://rexml//lib/rexml/element.rb#513 + # source://rexml//lib/rexml/element.rb#512 def ignore_whitespace_nodes; end # source://rexml//lib/rexml/element.rb#358 def inspect; end - # source://rexml//lib/rexml/element.rb#1462 + # source://rexml//lib/rexml/element.rb#1453 def instructions; end - # source://rexml//lib/rexml/element.rb#618 + # source://rexml//lib/rexml/element.rb#619 def namespace(prefix = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#591 + # source://rexml//lib/rexml/element.rb#590 def namespaces; end - # source://rexml//lib/rexml/element.rb#963 + # source://rexml//lib/rexml/element.rb#956 def next_element; end - # source://rexml//lib/rexml/element.rb#1168 + # source://rexml//lib/rexml/element.rb#1160 def node_type; end - # source://rexml//lib/rexml/element.rb#565 + # source://rexml//lib/rexml/element.rb#564 def prefixes; end - # source://rexml//lib/rexml/element.rb#979 + # source://rexml//lib/rexml/element.rb#972 def previous_element; end - # source://rexml//lib/rexml/element.rb#533 + # source://rexml//lib/rexml/element.rb#532 def raw; end # source://rexml//lib/rexml/element.rb#443 @@ -512,100 +524,103 @@ class REXML::Element < ::REXML::Parent # source://rexml//lib/rexml/element.rb#422 def root_node; end - # source://rexml//lib/rexml/element.rb#1030 + # source://rexml//lib/rexml/element.rb#1023 def text(path = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#1089 + # source://rexml//lib/rexml/element.rb#1081 def text=(text); end - # source://rexml//lib/rexml/element.rb#1478 + # source://rexml//lib/rexml/element.rb#1469 def texts; end - # source://rexml//lib/rexml/element.rb#490 + # source://rexml//lib/rexml/element.rb#489 def whitespace; end - # source://rexml//lib/rexml/element.rb#1504 + # source://rexml//lib/rexml/element.rb#1495 def write(output = T.unsafe(nil), indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#1192 + # source://rexml//lib/rexml/element.rb#1184 def xpath; end private - # source://rexml//lib/rexml/element.rb#1521 + # source://rexml//lib/rexml/element.rb#1519 def __to_xpath_helper(node); end - # source://rexml//lib/rexml/element.rb#1536 + # source://rexml//lib/rexml/element.rb#1511 + def calculate_namespaces; end + + # source://rexml//lib/rexml/element.rb#1534 def each_with_something(test, max = T.unsafe(nil), name = T.unsafe(nil)); end end -# source://rexml//lib/rexml/doctype.rb#261 +# source://rexml//lib/rexml/doctype.rb#257 class REXML::ElementDecl < ::REXML::Declaration - # source://rexml//lib/rexml/doctype.rb#262 + # source://rexml//lib/rexml/doctype.rb#258 def initialize(src); end end -# source://rexml//lib/rexml/element.rb#1591 +# source://rexml//lib/rexml/element.rb#1589 class REXML::Elements include ::Enumerable - # source://rexml//lib/rexml/element.rb#1604 + # source://rexml//lib/rexml/element.rb#1602 def initialize(parent); end - # source://rexml//lib/rexml/element.rb#1921 + # source://rexml//lib/rexml/element.rb#1915 def <<(element = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#1676 + # source://rexml//lib/rexml/element.rb#1674 def [](index, name = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#1731 + # source://rexml//lib/rexml/element.rb#1725 def []=(index, element); end - # source://rexml//lib/rexml/element.rb#1921 + # source://rexml//lib/rexml/element.rb#1915 def add(element = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#1984 + # source://rexml//lib/rexml/element.rb#1978 def collect(xpath = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#1821 + # source://rexml//lib/rexml/element.rb#1815 def delete(element); end - # source://rexml//lib/rexml/element.rb#1847 + # source://rexml//lib/rexml/element.rb#1841 def delete_all(xpath); end - # source://rexml//lib/rexml/element.rb#1963 + # source://rexml//lib/rexml/element.rb#1957 def each(xpath = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#1751 + # source://rexml//lib/rexml/element.rb#1745 def empty?; end - # source://rexml//lib/rexml/element.rb#1769 + # source://rexml//lib/rexml/element.rb#1763 def index(element); end - # source://rexml//lib/rexml/element.rb#2069 + # source://rexml//lib/rexml/element.rb#2063 def inject(xpath = T.unsafe(nil), initial = T.unsafe(nil)); end - # source://rexml//lib/rexml/element.rb#1619 + # source://rexml//lib/rexml/element.rb#1617 def parent; end - # source://rexml//lib/rexml/element.rb#2093 + # source://rexml//lib/rexml/element.rb#2087 def size; end - # source://rexml//lib/rexml/element.rb#2117 + # source://rexml//lib/rexml/element.rb#2111 def to_a(xpath = T.unsafe(nil)); end private - # source://rexml//lib/rexml/element.rb#2125 + # source://rexml//lib/rexml/element.rb#2119 def literalize(name); end end # source://rexml//lib/rexml/encoding.rb#4 module REXML::Encoding - # source://rexml//lib/rexml/encoding.rb#29 + # source://rexml//lib/rexml/encoding.rb#26 def decode(string); end - # source://rexml//lib/rexml/encoding.rb#25 + # source://rexml//lib/rexml/encoding.rb#22 def encode(string); end # source://rexml//lib/rexml/encoding.rb#6 @@ -616,7 +631,7 @@ module REXML::Encoding private - # source://rexml//lib/rexml/encoding.rb#34 + # source://rexml//lib/rexml/encoding.rb#31 def find_encoding(name); end end @@ -663,15 +678,15 @@ class REXML::Entity < ::REXML::Child end end -# source://rexml//lib/rexml/doctype.rb#267 +# source://rexml//lib/rexml/doctype.rb#263 class REXML::ExternalEntity < ::REXML::Child - # source://rexml//lib/rexml/doctype.rb#268 + # source://rexml//lib/rexml/doctype.rb#264 def initialize(src); end - # source://rexml//lib/rexml/doctype.rb#272 + # source://rexml//lib/rexml/doctype.rb#268 def to_s; end - # source://rexml//lib/rexml/doctype.rb#275 + # source://rexml//lib/rexml/doctype.rb#271 def write(output, indent); end end @@ -869,38 +884,38 @@ module REXML::Functions end end -# source://rexml//lib/rexml/source.rb#215 +# source://rexml//lib/rexml/source.rb#220 class REXML::IOSource < ::REXML::Source - # source://rexml//lib/rexml/source.rb#219 + # source://rexml//lib/rexml/source.rb#224 def initialize(arg, block_size = T.unsafe(nil), encoding = T.unsafe(nil)); end - # source://rexml//lib/rexml/source.rb#324 + # source://rexml//lib/rexml/source.rb#329 def current_line; end - # source://rexml//lib/rexml/source.rb#319 + # source://rexml//lib/rexml/source.rb#324 def empty?; end - # source://rexml//lib/rexml/source.rb#279 + # source://rexml//lib/rexml/source.rb#284 def ensure_buffer; end - # source://rexml//lib/rexml/source.rb#283 + # source://rexml//lib/rexml/source.rb#288 def match(pattern, cons = T.unsafe(nil)); end - # source://rexml//lib/rexml/source.rb#302 + # source://rexml//lib/rexml/source.rb#307 def match?(pattern, cons = T.unsafe(nil)); end - # source://rexml//lib/rexml/source.rb#240 + # source://rexml//lib/rexml/source.rb#245 def read(term = T.unsafe(nil), min_bytes = T.unsafe(nil)); end - # source://rexml//lib/rexml/source.rb#261 + # source://rexml//lib/rexml/source.rb#266 def read_until(term); end private - # source://rexml//lib/rexml/source.rb#371 + # source://rexml//lib/rexml/source.rb#376 def encoding_updated; end - # source://rexml//lib/rexml/source.rb#346 + # source://rexml//lib/rexml/source.rb#351 def readline(term = T.unsafe(nil)); end end @@ -993,30 +1008,30 @@ module REXML::Node def to_s(indent = T.unsafe(nil)); end end -# source://rexml//lib/rexml/doctype.rb#280 +# source://rexml//lib/rexml/doctype.rb#276 class REXML::NotationDecl < ::REXML::Child - # source://rexml//lib/rexml/doctype.rb#282 + # source://rexml//lib/rexml/doctype.rb#278 def initialize(name, middle, pub, sys); end - # source://rexml//lib/rexml/doctype.rb#307 + # source://rexml//lib/rexml/doctype.rb#302 def name; end - # source://rexml//lib/rexml/doctype.rb#281 + # source://rexml//lib/rexml/doctype.rb#277 def public; end - # source://rexml//lib/rexml/doctype.rb#281 + # source://rexml//lib/rexml/doctype.rb#277 def public=(_arg0); end - # source://rexml//lib/rexml/doctype.rb#281 + # source://rexml//lib/rexml/doctype.rb#277 def system; end - # source://rexml//lib/rexml/doctype.rb#281 + # source://rexml//lib/rexml/doctype.rb#277 def system=(_arg0); end - # source://rexml//lib/rexml/doctype.rb#290 + # source://rexml//lib/rexml/doctype.rb#286 def to_s; end - # source://rexml//lib/rexml/doctype.rb#300 + # source://rexml//lib/rexml/doctype.rb#295 def write(output, indent = T.unsafe(nil)); end end @@ -1149,94 +1164,106 @@ end # source://rexml//lib/rexml/parsers/baseparser.rb#57 class REXML::Parsers::BaseParser - # source://rexml//lib/rexml/parsers/baseparser.rb#163 + # source://rexml//lib/rexml/parsers/baseparser.rb#164 def initialize(source); end - # source://rexml//lib/rexml/parsers/baseparser.rb#173 + # source://rexml//lib/rexml/parsers/baseparser.rb#175 def add_listener(listener); end - # source://rexml//lib/rexml/parsers/baseparser.rb#208 + # source://rexml//lib/rexml/parsers/baseparser.rb#210 def empty?; end - # source://rexml//lib/rexml/parsers/baseparser.rb#543 + # source://rexml//lib/rexml/parsers/baseparser.rb#537 def entity(reference, entities); end - # source://rexml//lib/rexml/parsers/baseparser.rb#178 + # source://rexml//lib/rexml/parsers/baseparser.rb#180 def entity_expansion_count; end - # source://rexml//lib/rexml/parsers/baseparser.rb#179 + # source://rexml//lib/rexml/parsers/baseparser.rb#181 def entity_expansion_limit=(_arg0); end - # source://rexml//lib/rexml/parsers/baseparser.rb#180 + # source://rexml//lib/rexml/parsers/baseparser.rb#182 def entity_expansion_text_limit=(_arg0); end - # source://rexml//lib/rexml/parsers/baseparser.rb#213 + # source://rexml//lib/rexml/parsers/baseparser.rb#215 def has_next?; end - # source://rexml//lib/rexml/parsers/baseparser.rb#554 + # source://rexml//lib/rexml/parsers/baseparser.rb#548 def normalize(input, entities = T.unsafe(nil), entity_filter = T.unsafe(nil)); end - # source://rexml//lib/rexml/parsers/baseparser.rb#229 + # source://rexml//lib/rexml/parsers/baseparser.rb#231 def peek(depth = T.unsafe(nil)); end - # source://rexml//lib/rexml/parsers/baseparser.rb#198 + # source://rexml//lib/rexml/parsers/baseparser.rb#200 def position; end - # source://rexml//lib/rexml/parsers/baseparser.rb#244 + # source://rexml//lib/rexml/parsers/baseparser.rb#246 def pull; end - # source://rexml//lib/rexml/parsers/baseparser.rb#187 + # source://rexml//lib/rexml/parsers/baseparser.rb#189 def reset; end - # source://rexml//lib/rexml/parsers/baseparser.rb#177 + # source://rexml//lib/rexml/parsers/baseparser.rb#179 def source; end - # source://rexml//lib/rexml/parsers/baseparser.rb#182 + # source://rexml//lib/rexml/parsers/baseparser.rb#184 def stream=(source); end - # source://rexml//lib/rexml/parsers/baseparser.rb#570 + # source://rexml//lib/rexml/parsers/baseparser.rb#564 def unnormalize(string, entities = T.unsafe(nil), filter = T.unsafe(nil)); end - # source://rexml//lib/rexml/parsers/baseparser.rb#219 + # source://rexml//lib/rexml/parsers/baseparser.rb#221 def unshift(token); end private - # source://rexml//lib/rexml/parsers/baseparser.rb#619 + # source://rexml//lib/rexml/parsers/baseparser.rb#613 def add_namespace(prefix, uri); end - # source://rexml//lib/rexml/parsers/baseparser.rb#652 + # source://rexml//lib/rexml/parsers/baseparser.rb#646 def need_source_encoding_update?(xml_declaration_encoding); end - # source://rexml//lib/rexml/parsers/baseparser.rb#791 + # source://rexml//lib/rexml/parsers/baseparser.rb#652 + def normalize_xml_declaration_encoding(xml_declaration_encoding); end + + # source://rexml//lib/rexml/parsers/baseparser.rb#849 + def parse_attribute_value_with_equal(name); end + + # source://rexml//lib/rexml/parsers/baseparser.rb#868 def parse_attributes(prefixes); end - # source://rexml//lib/rexml/parsers/baseparser.rb#671 + # source://rexml//lib/rexml/parsers/baseparser.rb#669 def parse_id(base_error_message, accept_external_id:, accept_public_id:); end - # source://rexml//lib/rexml/parsers/baseparser.rb#699 + # source://rexml//lib/rexml/parsers/baseparser.rb#697 def parse_id_invalid_details(accept_external_id:, accept_public_id:); end - # source://rexml//lib/rexml/parsers/baseparser.rb#658 + # source://rexml//lib/rexml/parsers/baseparser.rb#656 def parse_name(base_error_message); end - # source://rexml//lib/rexml/parsers/baseparser.rb#634 + # source://rexml//lib/rexml/parsers/baseparser.rb#628 def pop_namespaces_restore; end - # source://rexml//lib/rexml/parsers/baseparser.rb#737 + # source://rexml//lib/rexml/parsers/baseparser.rb#735 + def process_comment; end + + # source://rexml//lib/rexml/parsers/baseparser.rb#747 def process_instruction; end - # source://rexml//lib/rexml/parsers/baseparser.rb#254 + # source://rexml//lib/rexml/parsers/baseparser.rb#256 def pull_event; end - # source://rexml//lib/rexml/parsers/baseparser.rb#628 + # source://rexml//lib/rexml/parsers/baseparser.rb#622 def push_namespaces_restore; end - # source://rexml//lib/rexml/parsers/baseparser.rb#645 + # source://rexml//lib/rexml/parsers/baseparser.rb#639 def record_entity_expansion(delta = T.unsafe(nil)); end - # source://rexml//lib/rexml/parsers/baseparser.rb#773 + # source://rexml//lib/rexml/parsers/baseparser.rb#831 def scan_quote; end + + # source://rexml//lib/rexml/parsers/baseparser.rb#769 + def xml_declaration; end end # source://rexml//lib/rexml/parsers/baseparser.rb#130 @@ -1251,31 +1278,34 @@ REXML::Parsers::BaseParser::PUBLIC_ID = T.let(T.unsafe(nil), Regexp) # source://rexml//lib/rexml/parsers/baseparser.rb#143 module REXML::Parsers::BaseParser::Private; end -# source://rexml//lib/rexml/parsers/baseparser.rb#147 +# source://rexml//lib/rexml/parsers/baseparser.rb#148 REXML::Parsers::BaseParser::Private::ATTLISTDECL_END = T.let(T.unsafe(nil), Regexp) -# source://rexml//lib/rexml/parsers/baseparser.rb#152 +# source://rexml//lib/rexml/parsers/baseparser.rb#153 REXML::Parsers::BaseParser::Private::CARRIAGE_RETURN_NEWLINE_PATTERN = T.let(T.unsafe(nil), Regexp) -# source://rexml//lib/rexml/parsers/baseparser.rb#153 +# source://rexml//lib/rexml/parsers/baseparser.rb#154 REXML::Parsers::BaseParser::Private::CHARACTER_REFERENCES = T.let(T.unsafe(nil), Regexp) # source://rexml//lib/rexml/parsers/baseparser.rb#146 REXML::Parsers::BaseParser::Private::CLOSE_PATTERN = T.let(T.unsafe(nil), Regexp) -# source://rexml//lib/rexml/parsers/baseparser.rb#154 +# source://rexml//lib/rexml/parsers/baseparser.rb#155 REXML::Parsers::BaseParser::Private::DEFAULT_ENTITIES_PATTERNS = T.let(T.unsafe(nil), Hash) -# source://rexml//lib/rexml/parsers/baseparser.rb#151 +# source://rexml//lib/rexml/parsers/baseparser.rb#152 REXML::Parsers::BaseParser::Private::ENTITYDECL_PATTERN = T.let(T.unsafe(nil), Regexp) -# source://rexml//lib/rexml/parsers/baseparser.rb#149 +# source://rexml//lib/rexml/parsers/baseparser.rb#147 +REXML::Parsers::BaseParser::Private::EQUAL_PATTERN = T.let(T.unsafe(nil), Regexp) + +# source://rexml//lib/rexml/parsers/baseparser.rb#150 REXML::Parsers::BaseParser::Private::GEDECL_PATTERN = T.let(T.unsafe(nil), String) -# source://rexml//lib/rexml/parsers/baseparser.rb#148 +# source://rexml//lib/rexml/parsers/baseparser.rb#149 REXML::Parsers::BaseParser::Private::NAME_PATTERN = T.let(T.unsafe(nil), Regexp) -# source://rexml//lib/rexml/parsers/baseparser.rb#150 +# source://rexml//lib/rexml/parsers/baseparser.rb#151 REXML::Parsers::BaseParser::Private::PEDECL_PATTERN = T.let(T.unsafe(nil), String) # source://rexml//lib/rexml/parsers/baseparser.rb#144 @@ -1284,7 +1314,7 @@ REXML::Parsers::BaseParser::Private::PEREFERENCE_PATTERN = T.let(T.unsafe(nil), # source://rexml//lib/rexml/parsers/baseparser.rb#145 REXML::Parsers::BaseParser::Private::TAG_PATTERN = T.let(T.unsafe(nil), Regexp) -# source://rexml//lib/rexml/parsers/baseparser.rb#159 +# source://rexml//lib/rexml/parsers/baseparser.rb#160 REXML::Parsers::BaseParser::Private::XML_PREFIXED_NAMESPACE = T.let(T.unsafe(nil), String) # source://rexml//lib/rexml/parsers/baseparser.rb#66 @@ -1450,78 +1480,84 @@ end class REXML::Source include ::REXML::Encoding - # source://rexml//lib/rexml/source.rb#87 + # source://rexml//lib/rexml/source.rb#88 def initialize(arg, encoding = T.unsafe(nil)); end - # source://rexml//lib/rexml/source.rb#100 + # source://rexml//lib/rexml/source.rb#101 def buffer; end - # source://rexml//lib/rexml/source.rb#110 + # source://rexml//lib/rexml/source.rb#111 def buffer_encoding=(encoding); end - # source://rexml//lib/rexml/source.rb#175 + # source://rexml//lib/rexml/source.rb#180 def current_line; end - # source://rexml//lib/rexml/source.rb#104 + # source://rexml//lib/rexml/source.rb#105 def drop_parsed_content; end - # source://rexml//lib/rexml/source.rb#170 + # source://rexml//lib/rexml/source.rb#175 def empty?; end # source://rexml//lib/rexml/source.rb#65 def encoding; end - # source://rexml//lib/rexml/source.rb#116 + # source://rexml//lib/rexml/source.rb#117 def encoding=(enc); end - # source://rexml//lib/rexml/source.rb#134 + # source://rexml//lib/rexml/source.rb#135 def ensure_buffer; end # source://rexml//lib/rexml/source.rb#64 def line; end - # source://rexml//lib/rexml/source.rb#137 + # source://rexml//lib/rexml/source.rb#138 def match(pattern, cons = T.unsafe(nil)); end - # source://rexml//lib/rexml/source.rb#145 + # source://rexml//lib/rexml/source.rb#146 def match?(pattern, cons = T.unsafe(nil)); end - # source://rexml//lib/rexml/source.rb#161 + # source://rexml//lib/rexml/source.rb#166 def peek_byte; end - # source://rexml//lib/rexml/source.rb#153 + # source://rexml//lib/rexml/source.rb#158 def position; end - # source://rexml//lib/rexml/source.rb#157 + # source://rexml//lib/rexml/source.rb#162 def position=(pos); end - # source://rexml//lib/rexml/source.rb#121 + # source://rexml//lib/rexml/source.rb#122 def read(term = T.unsafe(nil)); end - # source://rexml//lib/rexml/source.rb#124 + # source://rexml//lib/rexml/source.rb#125 def read_until(term); end - # source://rexml//lib/rexml/source.rb#165 + # source://rexml//lib/rexml/source.rb#170 def scan_byte; end + # source://rexml//lib/rexml/source.rb#154 + def skip_spaces; end + private - # source://rexml//lib/rexml/source.rb#184 + # source://rexml//lib/rexml/source.rb#189 def detect_encoding; end - # source://rexml//lib/rexml/source.rb#202 + # source://rexml//lib/rexml/source.rb#207 def encoding_updated; end end # source://rexml//lib/rexml/source.rb#67 module REXML::Source::Private; end -# source://rexml//lib/rexml/source.rb#69 +# source://rexml//lib/rexml/source.rb#70 REXML::Source::Private::PRE_DEFINED_TERM_PATTERNS = T.let(T.unsafe(nil), Hash) -# source://rexml//lib/rexml/source.rb#68 +# source://rexml//lib/rexml/source.rb#69 REXML::Source::Private::SCANNER_RESET_SIZE = T.let(T.unsafe(nil), Integer) +# source://rexml//lib/rexml/source.rb#68 +REXML::Source::Private::SPACES_PATTERN = T.let(T.unsafe(nil), Regexp) + # source://rexml//lib/rexml/source.rb#38 class REXML::SourceFactory class << self @@ -1552,10 +1588,10 @@ class REXML::Text < ::REXML::Child # source://rexml//lib/rexml/text.rb#174 def empty?; end - # source://rexml//lib/rexml/text.rb#274 + # source://rexml//lib/rexml/text.rb#271 def indent_text(string, level = T.unsafe(nil), style = T.unsafe(nil), indentfirstline = T.unsafe(nil)); end - # source://rexml//lib/rexml/text.rb#228 + # source://rexml//lib/rexml/text.rb#225 def inspect; end # source://rexml//lib/rexml/text.rb#170 @@ -1570,46 +1606,46 @@ class REXML::Text < ::REXML::Child # source://rexml//lib/rexml/text.rb#21 def raw=(_arg0); end - # source://rexml//lib/rexml/text.rb#223 + # source://rexml//lib/rexml/text.rb#220 def to_s; end - # source://rexml//lib/rexml/text.rb#245 + # source://rexml//lib/rexml/text.rb#242 def value; end - # source://rexml//lib/rexml/text.rb#257 + # source://rexml//lib/rexml/text.rb#254 def value=(val); end - # source://rexml//lib/rexml/text.rb#263 + # source://rexml//lib/rexml/text.rb#260 def wrap(string, width, addnewline = T.unsafe(nil)); end - # source://rexml//lib/rexml/text.rb#289 + # source://rexml//lib/rexml/text.rb#288 def write(writer, indent = T.unsafe(nil), transitive = T.unsafe(nil), ie_hack = T.unsafe(nil)); end - # source://rexml//lib/rexml/text.rb#321 + # source://rexml//lib/rexml/text.rb#318 def write_with_substitution(out, input); end - # source://rexml//lib/rexml/text.rb#301 + # source://rexml//lib/rexml/text.rb#300 def xpath; end private - # source://rexml//lib/rexml/text.rb#334 + # source://rexml//lib/rexml/text.rb#331 def clear_cache; end class << self # source://rexml//lib/rexml/text.rb#116 - def check(string, pattern, doctype); end + def check(string, pattern, doctype = T.unsafe(nil)); end - # source://rexml//lib/rexml/text.rb#404 + # source://rexml//lib/rexml/text.rb#401 def expand(ref, doctype, filter); end - # source://rexml//lib/rexml/text.rb#366 + # source://rexml//lib/rexml/text.rb#363 def normalize(input, doctype = T.unsafe(nil), entity_filter = T.unsafe(nil)); end - # source://rexml//lib/rexml/text.rb#340 + # source://rexml//lib/rexml/text.rb#337 def read_with_substitution(input, illegal = T.unsafe(nil)); end - # source://rexml//lib/rexml/text.rb#390 + # source://rexml//lib/rexml/text.rb#387 def unnormalize(string, doctype = T.unsafe(nil), filter = T.unsafe(nil), illegal = T.unsafe(nil), entity_expansion_text_limit: T.unsafe(nil)); end end end @@ -1700,29 +1736,29 @@ class REXML::XPath include ::REXML::Functions class << self - # source://rexml//lib/rexml/xpath.rb#60 + # source://rexml//lib/rexml/xpath.rb#55 def each(element, path = T.unsafe(nil), namespaces = T.unsafe(nil), variables = T.unsafe(nil), options = T.unsafe(nil), &block); end # source://rexml//lib/rexml/xpath.rb#31 def first(element, path = T.unsafe(nil), namespaces = T.unsafe(nil), variables = T.unsafe(nil), options = T.unsafe(nil)); end - # source://rexml//lib/rexml/xpath.rb#72 + # source://rexml//lib/rexml/xpath.rb#62 def match(element, path = T.unsafe(nil), namespaces = T.unsafe(nil), variables = T.unsafe(nil), options = T.unsafe(nil)); end end end -# source://rexml//lib/rexml/xpath_parser.rb#963 +# source://rexml//lib/rexml/xpath_parser.rb#965 class REXML::XPathNode - # source://rexml//lib/rexml/xpath_parser.rb#965 + # source://rexml//lib/rexml/xpath_parser.rb#967 def initialize(node, context = T.unsafe(nil)); end - # source://rexml//lib/rexml/xpath_parser.rb#964 + # source://rexml//lib/rexml/xpath_parser.rb#966 def context; end - # source://rexml//lib/rexml/xpath_parser.rb#974 + # source://rexml//lib/rexml/xpath_parser.rb#976 def position; end - # source://rexml//lib/rexml/xpath_parser.rb#964 + # source://rexml//lib/rexml/xpath_parser.rb#966 def raw_node; end end @@ -1733,108 +1769,108 @@ class REXML::XPathParser # source://rexml//lib/rexml/xpath_parser.rb#60 def initialize(strict: T.unsafe(nil)); end - # source://rexml//lib/rexml/xpath_parser.rb#94 + # source://rexml//lib/rexml/xpath_parser.rb#107 def []=(variable_name, value); end - # source://rexml//lib/rexml/xpath_parser.rb#103 + # source://rexml//lib/rexml/xpath_parser.rb#116 def first(path_stack, node); end - # source://rexml//lib/rexml/xpath_parser.rb#84 - def get_first(path, nodeset); end + # source://rexml//lib/rexml/xpath_parser.rb#97 + def get_first(path, node); end - # source://rexml//lib/rexml/xpath_parser.rb#139 - def match(path_stack, nodeset); end + # source://rexml//lib/rexml/xpath_parser.rb#153 + def match(path_stack, node); end # source://rexml//lib/rexml/xpath_parser.rb#69 def namespaces=(namespaces = T.unsafe(nil)); end # source://rexml//lib/rexml/xpath_parser.rb#79 - def parse(path, nodeset); end + def parse(path, node); end - # source://rexml//lib/rexml/xpath_parser.rb#89 - def predicate(path, nodeset); end + # source://rexml//lib/rexml/xpath_parser.rb#102 + def predicate(path, node); end # source://rexml//lib/rexml/xpath_parser.rb#74 def variables=(vars = T.unsafe(nil)); end private - # source://rexml//lib/rexml/xpath_parser.rb#779 + # source://rexml//lib/rexml/xpath_parser.rb#781 def child(nodeset); end - # source://rexml//lib/rexml/xpath_parser.rb#920 + # source://rexml//lib/rexml/xpath_parser.rb#922 def compare(a, operator, b); end - # source://rexml//lib/rexml/xpath_parser.rb#682 + # source://rexml//lib/rexml/xpath_parser.rb#687 def descendant(nodeset, include_self); end - # source://rexml//lib/rexml/xpath_parser.rb#693 + # source://rexml//lib/rexml/xpath_parser.rb#698 def descendant_recursive(raw_node, new_nodeset, new_nodes, include_self); end - # source://rexml//lib/rexml/xpath_parser.rb#942 + # source://rexml//lib/rexml/xpath_parser.rb#944 def each_unnode(nodeset); end - # source://rexml//lib/rexml/xpath_parser.rb#641 + # source://rexml//lib/rexml/xpath_parser.rb#646 def enter(tag, *args); end - # source://rexml//lib/rexml/xpath_parser.rb#819 + # source://rexml//lib/rexml/xpath_parser.rb#821 def equality_relational_compare(set1, op, set2); end - # source://rexml//lib/rexml/xpath_parser.rb#591 + # source://rexml//lib/rexml/xpath_parser.rb#596 def evaluate_predicate(expression, nodesets); end - # source://rexml//lib/rexml/xpath_parser.rb#175 + # source://rexml//lib/rexml/xpath_parser.rb#186 def expr(path_stack, nodeset, context = T.unsafe(nil)); end - # source://rexml//lib/rexml/xpath_parser.rb#582 + # source://rexml//lib/rexml/xpath_parser.rb#587 def filter_nodeset(nodeset); end - # source://rexml//lib/rexml/xpath_parser.rb#749 + # source://rexml//lib/rexml/xpath_parser.rb#754 def following(node); end - # source://rexml//lib/rexml/xpath_parser.rb#760 + # source://rexml//lib/rexml/xpath_parser.rb#765 def following_node_of(node); end - # source://rexml//lib/rexml/xpath_parser.rb#163 + # source://rexml//lib/rexml/xpath_parser.rb#174 def get_namespace(node, prefix); end - # source://rexml//lib/rexml/xpath_parser.rb#646 + # source://rexml//lib/rexml/xpath_parser.rb#651 def leave(tag, *args); end - # source://rexml//lib/rexml/xpath_parser.rb#767 + # source://rexml//lib/rexml/xpath_parser.rb#771 def next_sibling_node(node); end - # source://rexml//lib/rexml/xpath_parser.rb#477 + # source://rexml//lib/rexml/xpath_parser.rb#488 def node_test(path_stack, nodesets, any_type: T.unsafe(nil)); end - # source://rexml//lib/rexml/xpath_parser.rb#806 + # source://rexml//lib/rexml/xpath_parser.rb#808 def norm(b); end - # source://rexml//lib/rexml/xpath_parser.rb#894 + # source://rexml//lib/rexml/xpath_parser.rb#896 def normalize_compare_values(a, operator, b); end - # source://rexml//lib/rexml/xpath_parser.rb#712 + # source://rexml//lib/rexml/xpath_parser.rb#717 def preceding(node); end - # source://rexml//lib/rexml/xpath_parser.rb#734 + # source://rexml//lib/rexml/xpath_parser.rb#739 def preceding_node_of(node); end - # source://rexml//lib/rexml/xpath_parser.rb#659 + # source://rexml//lib/rexml/xpath_parser.rb#664 def sort(array_of_nodes, order); end - # source://rexml//lib/rexml/xpath_parser.rb#441 + # source://rexml//lib/rexml/xpath_parser.rb#452 def step(path_stack, any_type: T.unsafe(nil), order: T.unsafe(nil)); end - # source://rexml//lib/rexml/xpath_parser.rb#154 + # source://rexml//lib/rexml/xpath_parser.rb#165 def strict?; end - # source://rexml//lib/rexml/xpath_parser.rb#634 + # source://rexml//lib/rexml/xpath_parser.rb#639 def trace(*args); end - # source://rexml//lib/rexml/xpath_parser.rb#954 + # source://rexml//lib/rexml/xpath_parser.rb#956 def unnode(nodeset); end - # source://rexml//lib/rexml/xpath_parser.rb#881 + # source://rexml//lib/rexml/xpath_parser.rb#883 def value_type(value); end end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-ast@1.45.1.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-ast@1.47.1.rbi similarity index 86% rename from tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-ast@1.45.1.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-ast@1.47.1.rbi index 6b9c3bd2f1..5af1cb001f 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-ast@1.45.1.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-ast@1.47.1.rbi @@ -194,22 +194,22 @@ class RuboCop::AST::BreakNode < ::RuboCop::AST::Node include ::RuboCop::AST::ParameterizedNode::WrappedArguments end -# source://rubocop-ast//lib/rubocop/ast/builder.rb#128 +# source://rubocop-ast//lib/rubocop/ast/builder.rb#129 class RuboCop::AST::Builder < ::Parser::Builders::Default include ::RuboCop::AST::BuilderExtensions end # source://rubocop-ast//lib/rubocop/ast/builder.rb#7 module RuboCop::AST::BuilderExtensions - # source://rubocop-ast//lib/rubocop/ast/builder.rb#100 + # source://rubocop-ast//lib/rubocop/ast/builder.rb#101 def n(type, children, source_map); end - # source://rubocop-ast//lib/rubocop/ast/builder.rb#106 + # source://rubocop-ast//lib/rubocop/ast/builder.rb#107 def string_value(token); end private - # source://rubocop-ast//lib/rubocop/ast/builder.rb#112 + # source://rubocop-ast//lib/rubocop/ast/builder.rb#113 def node_klass(type); end class << self @@ -683,12 +683,18 @@ module RuboCop::AST::CollectionNode # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def to_ary(*_arg0, **_arg1, &_arg2); end + # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 + def to_figures(*_arg0, **_arg1, &_arg2); end + # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def to_h(*_arg0, **_arg1, &_arg2); end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def to_set(*_arg0, **_arg1, &_arg2); end + # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 + def to_words(*_arg0, **_arg1, &_arg2); end + # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def transpose(*_arg0, **_arg1, &_arg2); end @@ -717,6 +723,12 @@ end # source://rubocop-ast//lib/rubocop/ast/node/mixin/collection_node.rb#9 RuboCop::AST::CollectionNode::ARRAY_METHODS = T.let(T.unsafe(nil), Array) +# source://rubocop-ast//lib/rubocop/ast/node/complex_node.rb#8 +class RuboCop::AST::ComplexNode < ::RuboCop::AST::Node + include ::RuboCop::AST::BasicLiteralNode + include ::RuboCop::AST::NumericNode +end + # source://rubocop-ast//lib/rubocop/ast/node/mixin/conditional_node.rb#9 module RuboCop::AST::ConditionalNode # source://rubocop-ast//lib/rubocop/ast/node/mixin/conditional_node.rb#40 @@ -1420,689 +1432,695 @@ class RuboCop::AST::Node < ::Parser::AST::Node include ::RuboCop::AST::Descendence extend ::RuboCop::AST::NodePattern::Macros - # source://rubocop-ast//lib/rubocop/ast/node.rb#148 + # source://rubocop-ast//lib/rubocop/ast/node.rb#155 def initialize(type, children = T.unsafe(nil), properties = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def __ENCODING___type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def __FILE___type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def __LINE___type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def alias_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#313 + # source://rubocop-ast//lib/rubocop/ast/node.rb#320 def ancestors; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def and_asgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def and_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#542 + # source://rubocop-ast//lib/rubocop/ast/node.rb#549 def any_block_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#522 + # source://rubocop-ast//lib/rubocop/ast/node.rb#529 def any_def_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#546 + # source://rubocop-ast//lib/rubocop/ast/node.rb#553 def any_match_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#557 + def any_str_type?; end + + # source://rubocop-ast//lib/rubocop/ast/node.rb#561 + def any_sym_type?; end + + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def arg_expr_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def arg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def args_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#518 + # source://rubocop-ast//lib/rubocop/ast/node.rb#525 def argument?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#526 + # source://rubocop-ast//lib/rubocop/ast/node.rb#533 def argument_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def array_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def array_pattern_with_tail_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def array_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#470 + # source://rubocop-ast//lib/rubocop/ast/node.rb#477 def assignment?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#420 + # source://rubocop-ast//lib/rubocop/ast/node.rb#427 def assignment_or_similar?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def back_ref_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#474 + # source://rubocop-ast//lib/rubocop/ast/node.rb#481 def basic_conditional?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#428 + # source://rubocop-ast//lib/rubocop/ast/node.rb#435 def basic_literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def begin_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def block_pass_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def block_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def blockarg_expr_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def blockarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#530 + # source://rubocop-ast//lib/rubocop/ast/node.rb#537 def boolean_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def break_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#510 + # source://rubocop-ast//lib/rubocop/ast/node.rb#517 def call_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def case_match_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def case_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def casgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def cbase_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#514 + # source://rubocop-ast//lib/rubocop/ast/node.rb#521 def chained?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#594 + # source://rubocop-ast//lib/rubocop/ast/node.rb#609 def class_constructor?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#612 + # source://rubocop-ast//lib/rubocop/ast/node.rb#627 def class_definition?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def class_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#210 + # source://rubocop-ast//lib/rubocop/ast/node.rb#217 def complete!; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#215 + # source://rubocop-ast//lib/rubocop/ast/node.rb#222 def complete?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def complex_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#478 + # source://rubocop-ast//lib/rubocop/ast/node.rb#485 def conditional?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#359 + # source://rubocop-ast//lib/rubocop/ast/node.rb#366 def const_name; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def const_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def const_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def csend_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def cvar_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def cvasgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def def_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#379 + # source://rubocop-ast//lib/rubocop/ast/node.rb#386 def defined_module; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#384 + # source://rubocop-ast//lib/rubocop/ast/node.rb#391 def defined_module_name; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def defined_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def defs_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def dstr_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def dsym_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#301 + # source://rubocop-ast//lib/rubocop/ast/node.rb#308 def each_ancestor(*types, &block); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def eflipflop_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def empty_else_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#414 + # source://rubocop-ast//lib/rubocop/ast/node.rb#421 def empty_source?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def ensure_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#462 + # source://rubocop-ast//lib/rubocop/ast/node.rb#469 def equals_asgn?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def erange_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def false_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#436 + # source://rubocop-ast//lib/rubocop/ast/node.rb#443 def falsey_literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def find_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#327 + # source://rubocop-ast//lib/rubocop/ast/node.rb#334 def first_line; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def float_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def for_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def forward_arg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def forward_args_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def forwarded_args_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def forwarded_kwrestarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def forwarded_restarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#591 + # source://rubocop-ast//lib/rubocop/ast/node.rb#606 def global_const?(param0 = T.unsafe(nil), param1); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#550 + # source://rubocop-ast//lib/rubocop/ast/node.rb#565 def guard_clause?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def gvar_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def gvasgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def hash_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def hash_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def ident_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def if_guard_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def if_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def iflipflop_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#444 + # source://rubocop-ast//lib/rubocop/ast/node.rb#451 def immutable_literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def in_match_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def in_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def index_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def indexasgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def int_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def irange_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def itarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def itblock_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def ivar_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def ivasgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#491 + # source://rubocop-ast//lib/rubocop/ast/node.rb#498 def keyword?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwargs_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwbegin_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwnilarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwoptarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwrestarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def kwsplat_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#585 + # source://rubocop-ast//lib/rubocop/ast/node.rb#600 def lambda?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#588 + # source://rubocop-ast//lib/rubocop/ast/node.rb#603 def lambda_or_proc?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def lambda_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#331 + # source://rubocop-ast//lib/rubocop/ast/node.rb#338 def last_line; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#253 + # source://rubocop-ast//lib/rubocop/ast/node.rb#260 def left_sibling; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#263 + # source://rubocop-ast//lib/rubocop/ast/node.rb#270 def left_siblings; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#335 + # source://rubocop-ast//lib/rubocop/ast/node.rb#342 def line_count; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#424 + # source://rubocop-ast//lib/rubocop/ast/node.rb#431 def literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#558 + # source://rubocop-ast//lib/rubocop/ast/node.rb#573 def loc?(which_loc); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#566 + # source://rubocop-ast//lib/rubocop/ast/node.rb#581 def loc_is?(which_loc, str); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#487 + # source://rubocop-ast//lib/rubocop/ast/node.rb#494 def loop_keyword?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def lvar_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def lvasgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def masgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_alt_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_as_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_current_line_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#573 + # source://rubocop-ast//lib/rubocop/ast/node.rb#588 def match_guard_clause?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_nil_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_pattern_p_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_pattern_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_rest_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_var_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_with_lvasgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def match_with_trailing_comma_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def mlhs_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#619 + # source://rubocop-ast//lib/rubocop/ast/node.rb#634 def module_definition?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def module_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#406 + # source://rubocop-ast//lib/rubocop/ast/node.rb#413 def multiline?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#440 + # source://rubocop-ast//lib/rubocop/ast/node.rb#447 def mutable_literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#750 + # source://rubocop-ast//lib/rubocop/ast/node.rb#765 def new_class_or_module_block?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def next_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def nil_type?; end # source://ast/2.4.3/lib/ast/node.rb#56 def node_parts; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#341 + # source://rubocop-ast//lib/rubocop/ast/node.rb#348 def nonempty_line_count; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def not_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def nth_ref_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def numargs_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def numblock_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#534 + # source://rubocop-ast//lib/rubocop/ast/node.rb#541 def numeric_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def objc_kwarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def objc_restarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def objc_varargs_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def op_asgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#502 + # source://rubocop-ast//lib/rubocop/ast/node.rb#509 def operator_keyword?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def optarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def or_asgn_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def or_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def pair_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#192 + # source://rubocop-ast//lib/rubocop/ast/node.rb#199 def parent; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#201 + # source://rubocop-ast//lib/rubocop/ast/node.rb#208 def parent?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#390 + # source://rubocop-ast//lib/rubocop/ast/node.rb#397 def parent_module_name; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#506 + # source://rubocop-ast//lib/rubocop/ast/node.rb#513 def parenthesized_call?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def pin_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#482 + # source://rubocop-ast//lib/rubocop/ast/node.rb#489 def post_condition_loop?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def postexe_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def preexe_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#578 + # source://rubocop-ast//lib/rubocop/ast/node.rb#593 def proc?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def procarg0_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#662 + # source://rubocop-ast//lib/rubocop/ast/node.rb#677 def pure?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#538 + # source://rubocop-ast//lib/rubocop/ast/node.rb#545 def range_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def rational_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#352 + # source://rubocop-ast//lib/rubocop/ast/node.rb#359 def receiver(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#132 + # source://rubocop-ast//lib/rubocop/ast/node.rb#139 def recursive_basic_literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#132 + # source://rubocop-ast//lib/rubocop/ast/node.rb#139 def recursive_literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def redo_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#458 + # source://rubocop-ast//lib/rubocop/ast/node.rb#465 def reference?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def regexp_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def regopt_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def resbody_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def rescue_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def restarg_expr_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def restarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def retry_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def return_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#244 + # source://rubocop-ast//lib/rubocop/ast/node.rb#251 def right_sibling; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#272 + # source://rubocop-ast//lib/rubocop/ast/node.rb#279 def right_siblings; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#206 + # source://rubocop-ast//lib/rubocop/ast/node.rb#213 def root?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def sclass_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def self_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#185 + # source://rubocop-ast//lib/rubocop/ast/node.rb#192 def send_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def shadowarg_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#466 + # source://rubocop-ast//lib/rubocop/ast/node.rb#473 def shorthand_asgn?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#237 + # source://rubocop-ast//lib/rubocop/ast/node.rb#244 def sibling_index; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#410 + # source://rubocop-ast//lib/rubocop/ast/node.rb#417 def single_line?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#319 + # source://rubocop-ast//lib/rubocop/ast/node.rb#326 def source; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#345 + # source://rubocop-ast//lib/rubocop/ast/node.rb#352 def source_length; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#323 + # source://rubocop-ast//lib/rubocop/ast/node.rb#330 def source_range; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#498 + # source://rubocop-ast//lib/rubocop/ast/node.rb#505 def special_keyword?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def splat_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#357 + # source://rubocop-ast//lib/rubocop/ast/node.rb#364 def str_content(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def str_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#607 + # source://rubocop-ast//lib/rubocop/ast/node.rb#622 def struct_constructor?(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def super_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def sym_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def true_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#432 + # source://rubocop-ast//lib/rubocop/ast/node.rb#439 def truthy_literal?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#167 + # source://rubocop-ast//lib/rubocop/ast/node.rb#174 def type?(*types); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def undef_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def unless_guard_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def until_post_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def until_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#226 + # source://rubocop-ast//lib/rubocop/ast/node.rb#233 def updated(type = T.unsafe(nil), children = T.unsafe(nil), properties = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#632 + # source://rubocop-ast//lib/rubocop/ast/node.rb#647 def value_used?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#454 + # source://rubocop-ast//lib/rubocop/ast/node.rb#461 def variable?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def when_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def while_post_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def while_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def xstr_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def yield_type?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#177 + # source://rubocop-ast//lib/rubocop/ast/node.rb#184 def zsuper_type?; end protected - # source://rubocop-ast//lib/rubocop/ast/node.rb#196 + # source://rubocop-ast//lib/rubocop/ast/node.rb#203 def parent=(node); end private - # source://rubocop-ast//lib/rubocop/ast/node.rb#689 + # source://rubocop-ast//lib/rubocop/ast/node.rb#704 def begin_value_used?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#700 + # source://rubocop-ast//lib/rubocop/ast/node.rb#715 def case_if_value_used?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#370 + # source://rubocop-ast//lib/rubocop/ast/node.rb#377 def defined_module0(param0 = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#694 + # source://rubocop-ast//lib/rubocop/ast/node.rb#709 def for_value_used?; end - # source://rubocop-ast//lib/rubocop/ast/node.rb#736 + # source://rubocop-ast//lib/rubocop/ast/node.rb#751 def parent_module_name_for_block(ancestor); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#724 + # source://rubocop-ast//lib/rubocop/ast/node.rb#739 def parent_module_name_for_sclass(sclass_node); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#711 + # source://rubocop-ast//lib/rubocop/ast/node.rb#726 def parent_module_name_part(node); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#680 + # source://rubocop-ast//lib/rubocop/ast/node.rb#695 def visit_ancestors(types); end - # source://rubocop-ast//lib/rubocop/ast/node.rb#706 + # source://rubocop-ast//lib/rubocop/ast/node.rb#721 def while_until_value_used?; end class << self private - # source://rubocop-ast//lib/rubocop/ast/node.rb#127 + # source://rubocop-ast//lib/rubocop/ast/node.rb#134 def def_recursive_literal_predicate(kind); end end end @@ -2187,59 +2205,59 @@ class RuboCop::AST::NodePattern include ::RuboCop::AST::NodePattern::MethodDefiner extend ::RuboCop::SimpleForwardable - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#77 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#78 def initialize(str, compiler: T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#90 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#91 def ==(other); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#107 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#108 def as_json(_options = T.unsafe(nil)); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#73 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#74 def ast; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def captures(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#111 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#112 def encode_with(coder); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#90 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#91 def eql?(other); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#119 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#120 def freeze; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#115 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#116 def init_with(coder); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#103 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#104 def marshal_dump; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#99 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#100 def marshal_load(pattern); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#85 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#86 def match(*args, **rest, &block); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#73 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#74 def match_code; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def named_parameters(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#73 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#74 def pattern; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def positional_parameters(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#95 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#96 def to_s; end class << self - # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#59 + # source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#60 def descend(element, &block); end end end @@ -2304,60 +2322,60 @@ end class RuboCop::AST::NodePattern::Compiler extend ::RuboCop::SimpleForwardable - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#15 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#16 def initialize; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def bind(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#13 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#14 def binding; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#13 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#14 def captures; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#42 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#43 def compile_as_atom(node); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#46 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#47 def compile_as_node_pattern(node, **options); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#50 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#51 def compile_sequence(sequence, var:); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#38 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#39 def each_union(enum, &block); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#74 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#75 def freeze; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#31 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#32 def named_parameter(name); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#13 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#14 def named_parameters; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#70 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#71 def next_capture; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#54 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#55 def parser; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#26 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#27 def positional_parameter(number); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#13 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#14 def positional_parameters; end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#60 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#61 def with_temp_variables(*names, &block); end private - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#81 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#82 def enforce_same_captures(enum); end - # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#96 + # source://rubocop-ast//lib/rubocop/ast/node_pattern/compiler.rb#97 def new_capture; end end @@ -2763,7 +2781,7 @@ class RuboCop::AST::NodePattern::Compiler::Subcompiler end end -# source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#53 +# source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#54 class RuboCop::AST::NodePattern::Invalid < ::StandardError; end # source://rubocop-ast//lib/rubocop/ast/node_pattern/lexer.rb#18 @@ -3365,6 +3383,9 @@ RuboCop::AST::NodePattern::Sets::SET_ALL_ANY_CLASS_OF_ETC = T.let(T.unsafe(nil), # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_ANY_EMPTY_NONE_ETC = T.let(T.unsafe(nil), Set) +# source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 +RuboCop::AST::NodePattern::Sets::SET_ANY_NONE = T.let(T.unsafe(nil), Set) + # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_ARRAY_HASH = T.let(T.unsafe(nil), Set) @@ -3425,6 +3446,9 @@ RuboCop::AST::NodePattern::Sets::SET_ESCAPE_ENCODE_UNESCAPE_DECODE = T.let(T.uns # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_EXIST_EXISTS = T.let(T.unsafe(nil), Set) +# source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 +RuboCop::AST::NodePattern::Sets::SET_EXTEND_INCLUDE = T.let(T.unsafe(nil), Set) + # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_FILETEST_FILE_DIR_SHELL = T.let(T.unsafe(nil), Set) @@ -3608,12 +3632,6 @@ RuboCop::AST::NodePattern::Sets::SET_SPAWN_SYSTEM = T.let(T.unsafe(nil), Set) # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_SPRINTF_FORMAT = T.let(T.unsafe(nil), Set) -# source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 -RuboCop::AST::NodePattern::Sets::SET_START_WITH_END_WITH = T.let(T.unsafe(nil), Set) - -# source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 -RuboCop::AST::NodePattern::Sets::SET_START_WITH_STARTS_WITH_END_WITH_ENDS_WITH = T.let(T.unsafe(nil), Set) - # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_STRUCT_CLASS = T.let(T.unsafe(nil), Set) @@ -3713,7 +3731,7 @@ RuboCop::AST::NodePattern::Sets::SET____ETC_4 = T.let(T.unsafe(nil), Set) # source://rubocop-ast//lib/rubocop/ast/node_pattern/sets.rb#10 RuboCop::AST::NodePattern::Sets::SET_____2 = T.let(T.unsafe(nil), Set) -# source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#55 +# source://rubocop-ast//lib/rubocop/ast/node_pattern.rb#56 RuboCop::AST::NodePattern::VAR = T.let(T.unsafe(nil), String) # source://rubocop-ast//lib/rubocop/ast/node/mixin/numeric_node.rb#6 @@ -3823,31 +3841,31 @@ module RuboCop::AST::ParameterizedNode def splat_argument?; end end -# source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#83 +# source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#84 module RuboCop::AST::ParameterizedNode::RestArguments include ::RuboCop::AST::ParameterizedNode - # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#89 + # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#90 def arguments; end - # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#119 + # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#120 def arguments?; end - # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#103 + # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#104 def first_argument; end - # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#112 + # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#113 def last_argument; end end -# source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#86 +# source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#87 RuboCop::AST::ParameterizedNode::RestArguments::EMPTY_ARGUMENTS = T.let(T.unsafe(nil), Array) # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#66 module RuboCop::AST::ParameterizedNode::WrappedArguments include ::RuboCop::AST::ParameterizedNode - # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#69 + # source://rubocop-ast//lib/rubocop/ast/node/mixin/parameterized_node.rb#70 def arguments; end end @@ -4358,397 +4376,397 @@ RuboCop::AST::Token::LEFT_PAREN_TYPES = T.let(T.unsafe(nil), Array) module RuboCop::AST::Traversal extend ::RuboCop::AST::Traversal::CallbackCompiler - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#183 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#184 def on_(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on___ENCODING__(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on___FILE__(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on___LINE__(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_alias(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_and(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_and_asgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_arg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_arg_expr(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_args(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_array(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_array_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_array_pattern_with_tail(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_back_ref(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_begin(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#160 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#161 def on_block(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#139 def on_block_pass(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_blockarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_break(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_case(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_case_match(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#155 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#156 def on_casgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_cbase(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#156 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#157 def on_class(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_complex(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#154 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#155 def on_const(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_const_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#165 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#166 def on_csend(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_cvar(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#140 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#141 def on_cvasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#157 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#158 def on_def(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_defined?(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#163 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#164 def on_defs(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_dstr(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_dsym(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_eflipflop(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_empty_else(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_ensure(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_erange(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_false(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_find_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_float(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_for(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_forward_arg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_forward_args(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_forwarded_args(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_forwarded_kwrestarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_forwarded_restarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_gvar(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#140 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#141 def on_gvasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_hash(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_hash_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#159 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#160 def on_if(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_if_guard(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_iflipflop(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_in_match(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_in_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_index(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_indexasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_int(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_irange(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#162 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#163 def on_itblock(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_ivar(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#140 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#141 def on_ivasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_kwarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_kwargs(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_kwbegin(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_kwnilarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#141 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#142 def on_kwoptarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#134 def on_kwrestarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#134 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#135 def on_kwsplat(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_lambda(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_lvar(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#140 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#141 def on_lvasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_masgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_match_alt(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_match_as(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_match_current_line(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_match_nil_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_match_pattern(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_match_pattern_p(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#134 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#135 def on_match_rest(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_match_var(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_match_with_lvasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_match_with_trailing_comma(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_mlhs(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#142 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#143 def on_module(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_mrasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_next(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_nil(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_not(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_nth_ref(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#161 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#162 def on_numblock(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#158 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#159 def on_op_asgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#141 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#142 def on_optarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_or(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_or_asgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_pair(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_pin(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#139 def on_postexe(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#139 def on_preexe(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_procarg0(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_rasgn(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_rational(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_redo(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_regexp(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#144 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 def on_regopt(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_resbody(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_rescue(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#134 def on_restarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_retry(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_return(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#142 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#143 def on_sclass(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_self(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#165 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#166 def on_send(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_shadowarg(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#134 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#135 def on_splat(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_str(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_super(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#136 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 def on_sym(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_true(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_undef(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#137 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#138 def on_unless_guard(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#142 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#143 def on_until(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_until_post(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#148 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#149 def on_when(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#142 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#143 def on_while(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_while_post(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_xstr(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#145 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#146 def on_yield(node); end - # source://rubocop-ast//lib/rubocop/ast/traversal.rb#132 + # source://rubocop-ast//lib/rubocop/ast/traversal.rb#133 def on_zsuper(node); end # source://rubocop-ast//lib/rubocop/ast/traversal.rb#17 @@ -4776,7 +4794,7 @@ RuboCop::AST::Traversal::CallbackCompiler::TEMPLATE = T.let(T.unsafe(nil), Hash) # source://rubocop-ast//lib/rubocop/ast/traversal.rb#12 class RuboCop::AST::Traversal::DebugError < ::RuntimeError; end -# source://rubocop-ast//lib/rubocop/ast/traversal.rb#109 +# source://rubocop-ast//lib/rubocop/ast/traversal.rb#110 RuboCop::AST::Traversal::NO_CHILD_NODES = T.let(T.unsafe(nil), Set) # source://rubocop-ast//lib/rubocop/ast/traversal.rb#15 @@ -4856,28 +4874,28 @@ class RuboCop::AST::YieldNode < ::RuboCop::AST::Node end class RuboCop::CommentConfig - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#34 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#34 def initialize(processed_source); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#63 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#63 def comment_only_line?(line_number); end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def config(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#51 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#51 def cop_disabled_line_ranges; end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#39 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#39 def cop_enabled_at_line?(cop, line_number); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#47 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#47 def cop_opted_in?(cop); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#55 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#55 def extra_enabled_comments; end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#30 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#30 def processed_source; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -4885,51 +4903,51 @@ class RuboCop::CommentConfig private - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#96 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#96 def analyze; end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#124 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#124 def analyze_cop(analysis, directive); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#144 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#144 def analyze_disabled(analysis, directive); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#155 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#155 def analyze_rest(analysis, directive); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#135 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#135 def analyze_single_line(analysis, directive); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#164 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#164 def cop_line_ranges(analysis); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#170 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#170 def each_directive; end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#69 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#69 def extra_enabled_comments_with_names(extras:, names:); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#190 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#190 def handle_enable_all(directive, names, extras); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#204 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#204 def handle_switch(directive, names, extras); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#115 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#115 def inject_disabled_cops_directives(analyses); end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#183 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#183 def non_comment_token_line_numbers; end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#83 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#83 def opt_in_cops; end - # source://rubocop/1.76.2/lib/rubocop/comment_config.rb#179 + # source://rubocop/1.81.1/lib/rubocop/comment_config.rb#179 def qualified_cop_name(cop_name); end end class RuboCop::Config - # source://rubocop/1.76.2/lib/rubocop/config.rb#31 + # source://rubocop/1.81.1/lib/rubocop/config.rb#31 def initialize(hash = T.unsafe(nil), loaded_path = T.unsafe(nil)); end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -4938,40 +4956,40 @@ class RuboCop::Config # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def []=(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#212 + # source://rubocop/1.81.1/lib/rubocop/config.rb#212 def active_support_extensions_enabled?; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#127 + # source://rubocop/1.81.1/lib/rubocop/config.rb#127 def add_excludes_from_higher_level(highest_config); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#239 + # source://rubocop/1.81.1/lib/rubocop/config.rb#239 def allowed_camel_case_file?(file); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#283 + # source://rubocop/1.81.1/lib/rubocop/config.rb#283 def base_dir_for_path_parameters; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#313 + # source://rubocop/1.81.1/lib/rubocop/config.rb#313 def bundler_lock_file_path; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#85 + # source://rubocop/1.81.1/lib/rubocop/config.rb#85 def check; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#180 + # source://rubocop/1.81.1/lib/rubocop/config.rb#180 def clusivity_config_for_badge?(badge); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#200 + # source://rubocop/1.81.1/lib/rubocop/config.rb#200 def cop_enabled?(name); end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def delete(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#139 + # source://rubocop/1.81.1/lib/rubocop/config.rb#139 def deprecation_check; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def dig(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#204 + # source://rubocop/1.81.1/lib/rubocop/config.rb#204 def disabled_new_cops?; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -4980,40 +4998,40 @@ class RuboCop::Config # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def each_key(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#208 + # source://rubocop/1.81.1/lib/rubocop/config.rb#208 def enabled_new_cops?; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def fetch(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#261 + # source://rubocop/1.81.1/lib/rubocop/config.rb#261 def file_to_exclude?(file); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#220 + # source://rubocop/1.81.1/lib/rubocop/config.rb#220 def file_to_include?(file); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#196 + # source://rubocop/1.81.1/lib/rubocop/config.rb#196 def for_all_cops; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#166 + # source://rubocop/1.81.1/lib/rubocop/config.rb#166 def for_badge(badge); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#153 + # source://rubocop/1.81.1/lib/rubocop/config.rb#153 def for_cop(cop); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#191 + # source://rubocop/1.81.1/lib/rubocop/config.rb#191 def for_department(department_name); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#160 + # source://rubocop/1.81.1/lib/rubocop/config.rb#160 def for_enabled_cop(cop); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#338 + # source://rubocop/1.81.1/lib/rubocop/config.rb#338 def gem_versions_in_target; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#342 + # source://rubocop/1.81.1/lib/rubocop/config.rb#342 def inspect; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#110 + # source://rubocop/1.81.1/lib/rubocop/config.rb#110 def internal?; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -5022,16 +5040,16 @@ class RuboCop::Config # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def keys(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#81 + # source://rubocop/1.81.1/lib/rubocop/config.rb#81 def loaded_features; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#21 + # source://rubocop/1.81.1/lib/rubocop/config.rb#21 def loaded_path; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#77 + # source://rubocop/1.81.1/lib/rubocop/config.rb#77 def loaded_plugins; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#115 + # source://rubocop/1.81.1/lib/rubocop/config.rb#115 def make_excludes_absolute; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -5040,37 +5058,37 @@ class RuboCop::Config # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def merge(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#293 + # source://rubocop/1.81.1/lib/rubocop/config.rb#293 def parser_engine; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#274 + # source://rubocop/1.81.1/lib/rubocop/config.rb#274 def path_relative_to_config(path); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#270 + # source://rubocop/1.81.1/lib/rubocop/config.rb#270 def patterns_to_exclude; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#266 + # source://rubocop/1.81.1/lib/rubocop/config.rb#266 def patterns_to_include; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#324 + # source://rubocop/1.81.1/lib/rubocop/config.rb#324 def pending_cops; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#253 + # source://rubocop/1.81.1/lib/rubocop/config.rb#253 def possibly_include_hidden?; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def replace(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#105 + # source://rubocop/1.81.1/lib/rubocop/config.rb#105 def signature; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#308 + # source://rubocop/1.81.1/lib/rubocop/config.rb#308 def smart_loaded_path; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#216 + # source://rubocop/1.81.1/lib/rubocop/config.rb#216 def string_literals_frozen_by_default?; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#297 + # source://rubocop/1.81.1/lib/rubocop/config.rb#297 def target_rails_version; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -5082,7 +5100,7 @@ class RuboCop::Config # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def to_hash(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#101 + # source://rubocop/1.81.1/lib/rubocop/config.rb#101 def to_s; end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -5091,37 +5109,37 @@ class RuboCop::Config # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def validate(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#92 + # source://rubocop/1.81.1/lib/rubocop/config.rb#92 def validate_after_resolution; end private - # source://rubocop/1.76.2/lib/rubocop/config.rb#392 + # source://rubocop/1.81.1/lib/rubocop/config.rb#392 def department_of(qualified_cop_name); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#380 + # source://rubocop/1.81.1/lib/rubocop/config.rb#380 def enable_cop?(qualified_cop_name, cop_options); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#367 + # source://rubocop/1.81.1/lib/rubocop/config.rb#367 def gem_version_to_major_minor_float(gem_version); end - # source://rubocop/1.76.2/lib/rubocop/config.rb#373 + # source://rubocop/1.81.1/lib/rubocop/config.rb#373 def read_gem_versions_from_target_lockfile; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#354 + # source://rubocop/1.81.1/lib/rubocop/config.rb#354 def read_rails_version_from_bundler_lock_file; end - # source://rubocop/1.76.2/lib/rubocop/config.rb#349 + # source://rubocop/1.81.1/lib/rubocop/config.rb#349 def target_rails_version_from_bundler_lock_file; end class << self - # source://rubocop/1.76.2/lib/rubocop/config.rb#23 + # source://rubocop/1.81.1/lib/rubocop/config.rb#23 def create(hash, path, check: T.unsafe(nil)); end end end class RuboCop::ConfigValidator - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#28 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#28 def initialize(config); end # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 @@ -5130,66 +5148,66 @@ class RuboCop::ConfigValidator # source://rubocop-ast//lib/rubocop/ast/utilities/simple_forwardable.rb#19 def smart_loaded_path(*_arg0, **_arg1, &_arg2); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#65 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#65 def target_ruby_version; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#34 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#34 def validate; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#61 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#61 def validate_after_resolution; end private - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#100 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#100 def alert_about_unrecognized_cops(invalid_cop_names); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#263 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#263 def check_cop_config_value(hash, parent = T.unsafe(nil)); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#73 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#73 def check_obsoletions; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#80 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#80 def check_target_ruby; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#205 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#205 def each_invalid_parameter(cop_name); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#116 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#116 def list_unknown_cops(invalid_cop_names); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#284 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#284 def param_error_message(parent, key, value, supposed_values); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#252 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#252 def reject_conflicting_safe_settings; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#243 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#243 def reject_mutually_exclusive_defaults; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#139 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#139 def suggestion(name); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#71 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#71 def target_ruby; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#217 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#217 def validate_enforced_styles(valid_cop_names); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#166 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#166 def validate_new_cops_parameter; end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#191 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#191 def validate_parameter_names(valid_cop_names); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#177 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#177 def validate_parameter_shape(valid_cop_names); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#237 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#237 def validate_support_and_has_list(name, formats, valid); end - # source://rubocop/1.76.2/lib/rubocop/config_validator.rb#155 + # source://rubocop/1.81.1/lib/rubocop/config_validator.rb#155 def validate_syntax_cop; end end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-minitest@0.38.1.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-minitest@0.38.2.rbi similarity index 99% rename from tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-minitest@0.38.1.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-minitest@0.38.2.rbi index 9292aa3584..a8dfc8a022 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-minitest@0.38.1.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-minitest@0.38.2.rbi @@ -697,7 +697,7 @@ class RuboCop::Cop::Minitest::MultipleAssertions < ::RuboCop::Cop::Base include ::RuboCop::Cop::DefNode include ::RuboCop::Cop::MinitestExplorationHelpers - # source://rubocop/1.76.2/lib/rubocop/cop/exclude_limit.rb#11 + # source://rubocop/1.81.1/lib/rubocop/cop/exclude_limit.rb#11 def max=(value); end # source://rubocop-minitest//lib/rubocop/cop/minitest/multiple_assertions.rb#37 @@ -1367,9 +1367,12 @@ module RuboCop::Cop::MinitestExplorationHelpers private - # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#118 + # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#117 def assertion_method?(node); end + # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#129 + def assertion_prefix_method?(node); end + # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#97 def assertions(def_node); end @@ -1379,7 +1382,7 @@ module RuboCop::Cop::MinitestExplorationHelpers # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#82 def class_def_nodes(class_node); end - # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#130 + # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#125 def lifecycle_hook_method?(node); end # source://rubocop-minitest//lib/rubocop/cop/mixin/minitest_exploration_helpers.rb#77 diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-performance@1.25.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-performance@1.26.0.rbi similarity index 96% rename from tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-performance@1.25.0.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-performance@1.26.0.rbi index 1a5b744754..3277a973fd 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-performance@1.25.0.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-performance@1.26.0.rbi @@ -14,35 +14,79 @@ module RuboCop::Cop; end module RuboCop::Cop::Lint; end class RuboCop::Cop::Lint::UnusedMethodArgument < ::RuboCop::Cop::Base - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#75 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#75 def not_implemented?(param0 = T.unsafe(nil)); end private - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#128 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#128 def allowed_exception_class?(node); end - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#90 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#90 def autocorrect(corrector, node); end - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#94 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#94 def check_argument(variable); end - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#102 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#102 def ignored_method?(body); end - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#107 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#107 def message(variable); end class << self - # source://rubocop-performance//lib/rubocop-performance.rb#12 + # source://rubocop-performance//lib/rubocop-performance.rb#11 def autocorrect_incompatible_with; end - # source://rubocop/1.76.2/lib/rubocop/cop/lint/unused_method_argument.rb#84 + # source://rubocop/1.81.1/lib/rubocop/cop/lint/unused_method_argument.rb#84 def joining_forces; end end end +module RuboCop::Cop::Naming; end + +class RuboCop::Cop::Naming::BlockForwarding < ::RuboCop::Cop::Base + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#68 + def on_def(node); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#68 + def on_defs(node); end + + private + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#118 + def anonymous_block_argument?(node); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#101 + def block_argument_name_matched?(block_pass_node, last_argument); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#150 + def block_forwarding_name; end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#91 + def expected_block_forwarding_style?(node, last_argument); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#122 + def explicit_block_argument?(node); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#110 + def invalidates_syntax?(block_pass_node); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#126 + def register_offense(block_argument, node); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#142 + def use_block_argument_as_local_variable?(node, last_argument); end + + # source://rubocop/1.81.1/lib/rubocop/cop/naming/block_forwarding.rb#114 + def use_kwarg_in_method_definition?(node); end + + class << self + # source://rubocop-performance//lib/rubocop-performance.rb#11 + def autocorrect_incompatible_with; end + end +end + # source://rubocop-performance//lib/rubocop/cop/performance/ancestors_include.rb#5 module RuboCop::Cop::Performance; end @@ -505,22 +549,22 @@ class RuboCop::Cop::Performance::Count < ::RuboCop::Cop::Base # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#89 def eligible_node?(node); end - # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#132 + # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#134 def negate_block_pass_as_inline_block(node); end - # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#111 + # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#113 def negate_block_pass_reject(corrector, node); end - # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#118 + # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#120 def negate_block_reject(corrector, node); end - # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#128 + # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#130 def negate_expression(node); end - # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#103 + # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#105 def negate_reject(corrector, node); end - # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#93 + # source://rubocop-performance//lib/rubocop/cop/performance/count.rb#95 def source_starting_at(node); end end @@ -635,38 +679,50 @@ RuboCop::Cop::Performance::Detect::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array # source://rubocop-performance//lib/rubocop/cop/performance/detect.rb#36 RuboCop::Cop::Performance::Detect::REVERSE_MSG = T.let(T.unsafe(nil), String) -# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#41 +# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#43 class RuboCop::Cop::Performance::DoubleStartEndWith < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#96 - def check_with_active_support_aliases(param0 = T.unsafe(nil)); end + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#57 + def on_and(node); end - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#46 + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#51 def on_or(node); end - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#90 - def two_start_end_with_calls(param0 = T.unsafe(nil)); end + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#108 + def two_start_end_with_calls(param0 = T.unsafe(nil), methods_to_check:); end + + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#114 + def two_start_end_with_calls_negated(param0 = T.unsafe(nil), methods_to_check:); end private - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#60 + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#75 def autocorrect(corrector, first_call_args, second_call_args, combined_args); end - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#86 + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#65 + def check(node, receiver, method, first_call_args, second_call_args); end + + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#104 def check_for_active_support_aliases?; end - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#82 + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#100 def combine_args(first_call_args, second_call_args); end - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#76 - def message(node, receiver, first_call_args, method, combined_args); end + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#91 + def message(node, receiver, method, combined_args); end - # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#68 - def process_source(node); end + # source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#83 + def methods; end end -# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#44 +# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#48 +RuboCop::Cop::Performance::DoubleStartEndWith::METHODS = T.let(T.unsafe(nil), Set) + +# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#49 +RuboCop::Cop::Performance::DoubleStartEndWith::METHODS_WITH_ACTIVE_SUPPORT = T.let(T.unsafe(nil), Set) + +# source://rubocop-performance//lib/rubocop/cop/performance/double_start_end_with.rb#46 RuboCop::Cop::Performance::DoubleStartEndWith::MSG = T.let(T.unsafe(nil), String) # source://rubocop-performance//lib/rubocop/cop/performance/end_with.rb#49 @@ -806,7 +862,7 @@ class RuboCop::Cop::Performance::InefficientHashSearch < ::RuboCop::Cop::Base def replacement(node); end # source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#86 - def use_long_method; end + def use_long_method?; end end # source://rubocop-performance//lib/rubocop/cop/performance/inefficient_hash_search.rb#45 diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-rails@2.32.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-rails@2.33.4.rbi similarity index 100% rename from tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-rails@2.32.0.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-rails@2.33.4.rbi diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-sorbet@0.10.4.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-sorbet@0.11.0.rbi similarity index 86% rename from tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-sorbet@0.10.4.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-sorbet@0.11.0.rbi index 300f073d83..4b6cebcd24 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-sorbet@0.10.4.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop-sorbet@0.11.0.rbi @@ -297,27 +297,27 @@ RuboCop::Cop::Sorbet::EnforceSigilOrder::MAGIC_REGEX = T.let(T.unsafe(nil), Rege # source://rubocop-sorbet//lib/rubocop/cop/sorbet/sigils/enforce_sigil_order.rb#50 RuboCop::Cop::Sorbet::EnforceSigilOrder::PREFERRED_ORDER = T.let(T.unsafe(nil), Hash) -# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#27 +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#26 class RuboCop::Cop::Sorbet::EnforceSignatures < ::RuboCop::Cop::Base include ::RuboCop::Cop::Sorbet::SignatureHelp extend ::RuboCop::Cop::AutoCorrector # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#33 - def initialize(config = T.unsafe(nil), options = T.unsafe(nil)); end - - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#39 def accessor?(param0 = T.unsafe(nil)); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#43 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#37 def on_def(node); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#47 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#41 def on_defs(node); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#51 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#53 + def on_new_investigation; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#45 def on_send(node); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#55 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#49 def on_signature(node); end # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#59 @@ -325,57 +325,159 @@ class RuboCop::Cop::Sorbet::EnforceSignatures < ::RuboCop::Cop::Base private - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#97 - def autocorrect(corrector, node); end + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#154 + def add_accessor_parameter_if_needed(suggest, symbol, method); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#176 + def allow_rbs?; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#113 + def autocorrect_with_signature_type(corrector, node, type); end # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#68 def check_node(node); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#81 - def has_rbs_comment?(node); end + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#119 + def create_signature_suggestion(node, type); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#114 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#168 def param_type_placeholder; end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#93 - def preceeding_comments(node); end + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#146 + def populate_accessor_suggestion(suggest, node); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#118 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#136 + def populate_method_definition_suggestion(suggest, node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#128 + def populate_signature_suggestion(suggest, node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#109 + def rbs_checker; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#172 def return_type_placeholder; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#160 + def set_void_return_for_writer(suggest, method); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#105 + def sig_checker; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#180 + def signature_style; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#164 + def writer_or_accessor?(method); end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#209 +class RuboCop::Cop::Sorbet::EnforceSignatures::RBSSignatureChecker < ::RuboCop::Cop::Sorbet::EnforceSignatures::SignatureChecker + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#212 + def signature_node(node); end + + private + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#225 + def find_non_send_ancestor(node); end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#210 +RuboCop::Cop::Sorbet::EnforceSignatures::RBSSignatureChecker::RBS_COMMENT_REGEX = T.let(T.unsafe(nil), Regexp) + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#285 +class RuboCop::Cop::Sorbet::EnforceSignatures::RBSSuggestion + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#288 + def initialize(indent); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#286 + def has_block; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#286 + def has_block=(_arg0); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#286 + def params; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#286 + def params=(_arg0); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#286 + def returns; end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#286 + def returns=(_arg0); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#295 + def to_autocorrect; end + + private + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#301 + def generate_signature; end end -# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#31 -RuboCop::Cop::Sorbet::EnforceSignatures::RBS_COMMENT_REGEX = T.let(T.unsafe(nil), Regexp) +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#231 +class RuboCop::Cop::Sorbet::EnforceSignatures::SigSignatureChecker < ::RuboCop::Cop::Sorbet::EnforceSignatures::SignatureChecker + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#232 + def initialize(processed_source); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#245 + def clear_signature(scope); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#241 + def on_signature(node, scope); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#237 + def signature_node(scope); end +end -# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#122 +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#250 class RuboCop::Cop::Sorbet::EnforceSignatures::SigSuggestion - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#125 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#253 def initialize(indent, param_placeholder, return_placeholder); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#123 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#251 def params; end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#123 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#251 def params=(_arg0); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#123 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#251 def returns; end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#123 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#251 def returns=(_arg0); end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#133 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#261 def to_autocorrect; end private - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#145 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#267 def generate_params; end - # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#157 + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#274 def generate_return; end end +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#195 +class RuboCop::Cop::Sorbet::EnforceSignatures::SignatureChecker + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#196 + def initialize(processed_source); end + + protected + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#204 + def preceding_comments(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#202 + def processed_source; end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/signatures/enforce_signatures.rb#30 +RuboCop::Cop::Sorbet::EnforceSignatures::VALID_STYLES = T.let(T.unsafe(nil), Array) + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/sigils/enforce_single_sigil.rb#26 class RuboCop::Cop::Sorbet::EnforceSingleSigil < ::RuboCop::Cop::Sorbet::ValidSigil include ::RuboCop::Cop::RangeHelp @@ -553,6 +655,34 @@ RuboCop::Cop::Sorbet::ForbidTAbsurd::MSG = T.let(T.unsafe(nil), String) # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_absurd.rb#19 RuboCop::Cop::Sorbet::ForbidTAbsurd::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#19 +class RuboCop::Cop::Sorbet::ForbidTAnyWithNil < ::RuboCop::Cop::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#31 + def nil_const_node?(param0 = T.unsafe(nil)); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#35 + def on_csend(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#35 + def on_send(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#26 + def t_any_call?(param0 = T.unsafe(nil)); end + + private + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#52 + def build_replacement(non_nil_args); end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#22 +RuboCop::Cop::Sorbet::ForbidTAnyWithNil::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_any_with_nil.rb#23 +RuboCop::Cop::Sorbet::ForbidTAnyWithNil::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_bind.rb#17 class RuboCop::Cop::Sorbet::ForbidTBind < ::RuboCop::Cop::Base # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_bind.rb#24 @@ -601,6 +731,24 @@ end # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_enum.rb#27 RuboCop::Cop::Sorbet::ForbidTEnum::MSG = T.let(T.unsafe(nil), String) +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_helpers.rb#26 +class RuboCop::Cop::Sorbet::ForbidTHelpers < ::RuboCop::Cop::Base + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_helpers.rb#35 + def on_csend(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_helpers.rb#35 + def on_send(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_helpers.rb#31 + def t_helpers?(param0 = T.unsafe(nil)); end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_helpers.rb#27 +RuboCop::Cop::Sorbet::ForbidTHelpers::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_helpers.rb#28 +RuboCop::Cop::Sorbet::ForbidTHelpers::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_let.rb#17 class RuboCop::Cop::Sorbet::ForbidTLet < ::RuboCop::Cop::Base # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_let.rb#24 @@ -637,6 +785,24 @@ RuboCop::Cop::Sorbet::ForbidTMust::MSG = T.let(T.unsafe(nil), String) # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_must.rb#19 RuboCop::Cop::Sorbet::ForbidTMust::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_sig.rb#26 +class RuboCop::Cop::Sorbet::ForbidTSig < ::RuboCop::Cop::Base + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_sig.rb#35 + def on_csend(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_sig.rb#35 + def on_send(node); end + + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_sig.rb#31 + def t_sig?(param0 = T.unsafe(nil)); end +end + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_sig.rb#27 +RuboCop::Cop::Sorbet::ForbidTSig::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_sig.rb#28 +RuboCop::Cop::Sorbet::ForbidTSig::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + # source://rubocop-sorbet//lib/rubocop/cop/sorbet/forbid_t_struct.rb#38 class RuboCop::Cop::Sorbet::ForbidTStruct < ::RuboCop::Cop::Base include ::RuboCop::Cop::Alignment @@ -1255,15 +1421,15 @@ module RuboCop::Sorbet; end # source://rubocop-sorbet//lib/rubocop/sorbet.rb#11 class RuboCop::Sorbet::Error < ::StandardError; end -# source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#15 +# source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#10 class RuboCop::Sorbet::Plugin < ::LintRoller::Plugin - # source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#16 + # source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#11 def about; end - # source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#29 + # source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#24 def rules(_context); end - # source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#25 + # source://rubocop-sorbet//lib/rubocop/sorbet/plugin.rb#20 def supported?(context); end end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop@1.76.2.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop@1.81.1.rbi similarity index 96% rename from tools/ruby-gems/udb/sorbet/rbi/gems/rubocop@1.76.2.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/rubocop@1.81.1.rbi index 7e89aa5a17..839c0f159b 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop@1.76.2.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/rubocop@1.81.1.rbi @@ -68,40 +68,46 @@ class RuboCop::CLI private - # source://rubocop//lib/rubocop/cli.rb#156 + # source://rubocop//lib/rubocop/cli.rb#162 def act_on_options; end - # source://rubocop//lib/rubocop/cli.rb#198 + # source://rubocop//lib/rubocop/cli.rb#209 def apply_default_formatter; end - # source://rubocop//lib/rubocop/cli.rb#125 + # source://rubocop//lib/rubocop/cli.rb#131 def execute_runners; end - # source://rubocop//lib/rubocop/cli.rb#182 + # source://rubocop//lib/rubocop/cli.rb#193 def handle_editor_mode; end - # source://rubocop//lib/rubocop/cli.rb#187 + # source://rubocop//lib/rubocop/cli.rb#198 def handle_exiting_options; end - # source://rubocop//lib/rubocop/cli.rb#144 + # source://rubocop//lib/rubocop/cli.rb#150 def parallel_by_default!; end - # source://rubocop//lib/rubocop/cli.rb#80 + # source://rubocop//lib/rubocop/cli.rb#86 def profile_if_needed; end - # source://rubocop//lib/rubocop/cli.rb#113 + # source://rubocop//lib/rubocop/cli.rb#223 + def report_pending_cops; end + + # source://rubocop//lib/rubocop/cli.rb#119 def require_gem(name); end - # source://rubocop//lib/rubocop/cli.rb#121 + # source://rubocop//lib/rubocop/cli.rb#127 def run_command(name); end - # source://rubocop//lib/rubocop/cli.rb#174 + # source://rubocop//lib/rubocop/cli.rb#180 def set_options_to_config_loader; end - # source://rubocop//lib/rubocop/cli.rb#133 + # source://rubocop//lib/rubocop/cli.rb#188 + def set_options_to_pending_cops_reporter; end + + # source://rubocop//lib/rubocop/cli.rb#139 def suggest_extensions; end - # source://rubocop//lib/rubocop/cli.rb#137 + # source://rubocop//lib/rubocop/cli.rb#143 def validate_options_vs_config; end end @@ -504,7 +510,7 @@ class RuboCop::CommentConfig # source://rubocop//lib/rubocop/comment_config.rb#63 def comment_only_line?(line_number); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def config(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/comment_config.rb#51 @@ -522,7 +528,7 @@ class RuboCop::CommentConfig # source://rubocop//lib/rubocop/comment_config.rb#30 def processed_source; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def registry(*_arg0, **_arg1, &_arg2); end private @@ -643,10 +649,10 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#31 def initialize(hash = T.unsafe(nil), loaded_path = T.unsafe(nil)); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def [](*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def []=(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#212 @@ -673,28 +679,28 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#200 def cop_enabled?(name); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def delete(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#139 def deprecation_check; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def dig(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#204 def disabled_new_cops?; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def each(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def each_key(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#208 def enabled_new_cops?; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def fetch(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#261 @@ -727,10 +733,10 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#110 def internal?; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def key?(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def keys(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#81 @@ -745,10 +751,10 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#115 def make_excludes_absolute; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def map(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def merge(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#293 @@ -769,7 +775,7 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#253 def possibly_include_hidden?; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def replace(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#105 @@ -784,22 +790,22 @@ class RuboCop::Config # source://rubocop//lib/rubocop/config.rb#297 def target_rails_version; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def target_ruby_version(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def to_h(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def to_hash(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#101 def to_s; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def transform_values(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def validate(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config.rb#92 @@ -906,123 +912,111 @@ class RuboCop::ConfigLoader extend ::RuboCop::FileFinder class << self - # source://rubocop//lib/rubocop/config_loader.rb#152 + # source://rubocop//lib/rubocop/config_loader.rb#132 def add_excludes_from_files(config, config_file); end - # source://rubocop//lib/rubocop/config_loader.rb#241 + # source://rubocop//lib/rubocop/config_loader.rb#206 def add_loaded_features(loaded_features); end - # source://rubocop//lib/rubocop/config_loader.rb#234 + # source://rubocop//lib/rubocop/config_loader.rb#199 def add_loaded_plugins(loaded_plugins); end - # source://rubocop//lib/rubocop/config_loader.rb#91 + # source://rubocop//lib/rubocop/config_loader.rb#85 def add_missing_namespaces(path, hash); end - # source://rubocop//lib/rubocop/config_loader.rb#41 + # source://rubocop//lib/rubocop/config_loader.rb#33 def clear_options; end - # source://rubocop//lib/rubocop/config_loader.rb#119 + # source://rubocop//lib/rubocop/config_loader.rb#113 def configuration_file_for(target_dir); end - # source://rubocop//lib/rubocop/config_loader.rb#123 + # source://rubocop//lib/rubocop/config_loader.rb#117 def configuration_from_file(config_file, check: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def debug; end - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def debug=(_arg0); end - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def debug?; end - # source://rubocop//lib/rubocop/config_loader.rb#162 + # source://rubocop//lib/rubocop/config_loader.rb#142 def default_configuration; end - # source://rubocop//lib/rubocop/config_loader.rb#35 + # source://rubocop//lib/rubocop/config_loader.rb#27 def default_configuration=(_arg0); end - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def disable_pending_cops; end - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def disable_pending_cops=(_arg0); end - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def enable_pending_cops; end - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def enable_pending_cops=(_arg0); end - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def ignore_parent_exclusion; end - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def ignore_parent_exclusion=(_arg0); end - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def ignore_parent_exclusion?; end - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def ignore_unrecognized_cops; end - # source://rubocop//lib/rubocop/config_loader.rb#33 + # source://rubocop//lib/rubocop/config_loader.rb#25 def ignore_unrecognized_cops=(_arg0); end - # source://rubocop//lib/rubocop/config_loader.rb#174 + # source://rubocop//lib/rubocop/config_loader.rb#154 def inject_defaults!(config_yml_path); end - # source://rubocop//lib/rubocop/config_loader.rb#53 + # source://rubocop//lib/rubocop/config_loader.rb#45 def load_file(file, check: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/config_loader.rb#78 + # source://rubocop//lib/rubocop/config_loader.rb#70 def load_yaml_configuration(absolute_path); end - # source://rubocop//lib/rubocop/config_loader.rb#36 + # source://rubocop//lib/rubocop/config_loader.rb#28 def loaded_features; end - # source://rubocop//lib/rubocop/config_loader.rb#36 + # source://rubocop//lib/rubocop/config_loader.rb#28 def loaded_plugins; end - # source://rubocop//lib/rubocop/config_loader.rb#110 + # source://rubocop//lib/rubocop/config_loader.rb#104 def merge(base_hash, derived_hash); end - # source://rubocop//lib/rubocop/config_loader.rb#227 + # source://rubocop//lib/rubocop/config_loader.rb#192 def merge_with_default(config, config_file, unset_nil: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/config_loader.rb#143 - def pending_cops_only_qualified(pending_cops); end - - # source://rubocop//lib/rubocop/config_loader.rb#147 - def possible_new_cops?(config); end - - # source://rubocop//lib/rubocop/config_loader.rb#202 + # source://rubocop//lib/rubocop/config_loader.rb#182 def project_root; end - # source://rubocop//lib/rubocop/config_loader.rb#211 - def warn_on_pending_cops(pending_cops); end - - # source://rubocop//lib/rubocop/config_loader.rb#219 - def warn_pending_cop(cop); end - private - # source://rubocop//lib/rubocop/config_loader.rb#255 + # source://rubocop//lib/rubocop/config_loader.rb#220 def check_duplication(yaml_code, absolute_path); end - # source://rubocop//lib/rubocop/config_loader.rb#247 + # source://rubocop//lib/rubocop/config_loader.rb#212 def file_path(file); end - # source://rubocop//lib/rubocop/config_loader.rb#275 + # source://rubocop//lib/rubocop/config_loader.rb#240 def read_file(absolute_path); end - # source://rubocop//lib/rubocop/config_loader.rb#251 + # source://rubocop//lib/rubocop/config_loader.rb#216 def resolver; end - # source://rubocop//lib/rubocop/config_loader.rb#281 + # source://rubocop//lib/rubocop/config_loader.rb#246 def yaml_tree_to_hash(yaml_tree); end - # source://rubocop//lib/rubocop/config_loader.rb#291 + # source://rubocop//lib/rubocop/config_loader.rb#256 def yaml_tree_to_hash!(yaml_tree); end end end @@ -1432,25 +1426,28 @@ class RuboCop::ConfigStore # source://rubocop//lib/rubocop/config_store.rb#10 def initialize; end - # source://rubocop//lib/rubocop/config_store.rb#52 + # source://rubocop//lib/rubocop/config_store.rb#28 + def apply_options!(options); end + + # source://rubocop//lib/rubocop/config_store.rb#57 def for(file_or_dir); end - # source://rubocop//lib/rubocop/config_store.rb#61 + # source://rubocop//lib/rubocop/config_store.rb#66 def for_dir(dir); end - # source://rubocop//lib/rubocop/config_store.rb#42 + # source://rubocop//lib/rubocop/config_store.rb#47 def for_file(file); end - # source://rubocop//lib/rubocop/config_store.rb#46 + # source://rubocop//lib/rubocop/config_store.rb#51 def for_pwd; end - # source://rubocop//lib/rubocop/config_store.rb#33 + # source://rubocop//lib/rubocop/config_store.rb#38 def force_default_config!; end - # source://rubocop//lib/rubocop/config_store.rb#28 + # source://rubocop//lib/rubocop/config_store.rb#33 def options_config=(options_config); end - # source://rubocop//lib/rubocop/config_store.rb#37 + # source://rubocop//lib/rubocop/config_store.rb#42 def unvalidated; end # source://rubocop//lib/rubocop/config_store.rb#7 @@ -1467,10 +1464,10 @@ class RuboCop::ConfigValidator # source://rubocop//lib/rubocop/config_validator.rb#28 def initialize(config); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def for_all_cops(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def smart_loaded_path(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/config_validator.rb#65 @@ -1612,31 +1609,31 @@ class RuboCop::Cop::AlignmentCorrector private - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#113 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#116 def alignment_column(align_to); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#40 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#43 def autocorrect_line(corrector, line_begin_pos, expr, column_delta, taboo_ranges); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#81 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#84 def block_comment_within?(expr); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#87 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#90 def calculate_range(expr, line_begin_pos, column_delta); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#75 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#78 def delimited_string_literal?(node); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#99 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#102 def each_line(expr); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#60 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#63 def inside_string_range(node); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#54 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#57 def inside_string_ranges(node); end - # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#107 + # source://rubocop//lib/rubocop/cop/correctors/alignment_corrector.rb#110 def whitespace_range(node); end end end @@ -3334,7 +3331,7 @@ class RuboCop::Cop::Corrector < ::Parser::Source::TreeRewriter # source://rubocop//lib/rubocop/cop/corrector.rb#75 def remove_trailing(node_or_range, size); end - # source://parser/3.3.8.0/lib/parser/source/tree_rewriter.rb#252 + # source://parser/3.3.9.0/lib/parser/source/tree_rewriter.rb#252 def rewrite; end # source://rubocop//lib/rubocop/cop/corrector.rb#85 @@ -3552,10 +3549,7 @@ module RuboCop::Cop::EndKeywordAlignment private - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#60 - def accept_end_kw_alignment?(end_loc); end - - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#50 + # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#49 def add_offense_for_misalignment(node, align_with); end # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#19 @@ -3564,19 +3558,19 @@ module RuboCop::Cop::EndKeywordAlignment # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#15 def check_end_kw_in_node(node); end - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#75 + # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#69 def line_break_before_keyword?(whole_expression, rhs); end - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#35 + # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#34 def matching_ranges(end_loc, align_ranges); end - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#41 + # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#40 def start_line_range(node); end - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#65 + # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#59 def style_parameter_name; end - # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#69 + # source://rubocop//lib/rubocop/cop/mixin/end_keyword_alignment.rb#63 def variable_alignment?(whole_expression, rhs, end_alignment_style); end end @@ -3640,28 +3634,28 @@ class RuboCop::Cop::ForToEachCorrector private - # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#57 + # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#62 def collection_end; end # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#25 def collection_node; end - # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#31 + # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#36 def collection_source; end # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#27 def correction; end - # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#45 + # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#50 def end_range; end # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#25 def for_node; end - # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#53 + # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#58 def keyword_begin; end - # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#39 + # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#44 def requires_parentheses?; end # source://rubocop//lib/rubocop/cop/correctors/for_to_each_corrector.rb#25 @@ -3801,6 +3795,25 @@ RuboCop::Cop::Gemspec::AddRuntimeDependency::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/gemspec/add_runtime_dependency.rb#26 RuboCop::Cop::Gemspec::AddRuntimeDependency::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) +# source://rubocop//lib/rubocop/cop/gemspec/attribute_assignment.rb#57 +class RuboCop::Cop::Gemspec::AttributeAssignment < ::RuboCop::Cop::Base + include ::RuboCop::Cop::GemspecHelp + + # source://rubocop//lib/rubocop/cop/gemspec/attribute_assignment.rb#62 + def on_new_investigation; end + + private + + # source://rubocop//lib/rubocop/cop/gemspec/attribute_assignment.rb#77 + def source_assignments(ast); end + + # source://rubocop//lib/rubocop/cop/gemspec/attribute_assignment.rb#84 + def source_indexed_assignments(ast); end +end + +# source://rubocop//lib/rubocop/cop/gemspec/attribute_assignment.rb#60 +RuboCop::Cop::Gemspec::AttributeAssignment::MSG = T.let(T.unsafe(nil), String) + # source://rubocop//lib/rubocop/cop/gemspec/dependency_version.rb#53 class RuboCop::Cop::Gemspec::DependencyVersion < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle @@ -3928,33 +3941,24 @@ class RuboCop::Cop::Gemspec::DuplicatedAssignment < ::RuboCop::Cop::Base include ::RuboCop::Cop::RangeHelp include ::RuboCop::Cop::GemspecHelp - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#58 - def assignment_method_declarations(param0); end - - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#64 - def indexed_assignment_method_declarations(param0); end - - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#73 + # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#57 def on_new_investigation; end private - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#105 + # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#83 def duplicated_assignment_method_nodes; end - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#113 + # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#91 def duplicated_indexed_assignment_method_nodes; end - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#99 - def match_block_variable_name?(receiver_name); end - - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#82 + # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#66 def process_assignment_method_nodes; end - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#90 + # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#74 def process_indexed_assignment_method_nodes; end - # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#120 + # source://rubocop//lib/rubocop/cop/gemspec/duplicated_assignment.rb#98 def register_offense(node, assignment, line_of_first_occurrence); end end @@ -3992,30 +3996,33 @@ class RuboCop::Cop::Gemspec::RequireMFA < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#70 def metadata(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#87 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#78 + def metadata_assignment(param0); end + + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#95 def on_block(node); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#78 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#86 def rubygems_mfa_required(param0); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#83 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#91 def true_string?(param0 = T.unsafe(nil)); end private - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#115 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#123 def autocorrect(corrector, node, block_var, metadata); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#139 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#153 def change_value(corrector, value); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#125 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#133 def correct_metadata(corrector, metadata); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#133 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#141 def insert_mfa_required(corrector, node, block_var); end - # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#108 + # source://rubocop//lib/rubocop/cop/gemspec/require_mfa.rb#116 def mfa_value(metadata_value); end end @@ -4080,11 +4087,20 @@ RuboCop::Cop::Gemspec::RubyVersionGlobalsUsage::MSG = T.let(T.unsafe(nil), Strin module RuboCop::Cop::GemspecHelp extend ::RuboCop::AST::NodePattern::Macros + # source://rubocop//lib/rubocop/cop/mixin/gemspec_help.rb#30 + def assignment_method_declarations(param0); end + # source://rubocop//lib/rubocop/cop/mixin/gemspec_help.rb#20 def gem_specification(param0); end # source://rubocop//lib/rubocop/cop/mixin/gemspec_help.rb#10 def gem_specification?(param0 = T.unsafe(nil)); end + + # source://rubocop//lib/rubocop/cop/mixin/gemspec_help.rb#36 + def indexed_assignment_method_declarations(param0); end + + # source://rubocop//lib/rubocop/cop/mixin/gemspec_help.rb#45 + def match_block_variable_name?(receiver_name); end end # source://rubocop//lib/rubocop/cop/generator.rb#10 @@ -5719,95 +5735,95 @@ end # source://rubocop//lib/rubocop/cop/layout/empty_line_after_multiline_condition.rb#58 RuboCop::Cop::Layout::EmptyLineAfterMultilineCondition::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#102 +# source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#114 class RuboCop::Cop::Layout::EmptyLineBetweenDefs < ::RuboCop::Cop::Base include ::RuboCop::Cop::RangeHelp extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#139 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#151 def autocorrect(corrector, prev_def, node, count); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#124 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#136 def check_defs(nodes); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#117 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#129 def on_begin(node); end private - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#287 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#305 def allowance_range?; end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#269 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#287 def autocorrect_insert_lines(corrector, newline_pos, count); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#262 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#280 def autocorrect_remove_lines(corrector, newline_pos, count); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#222 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#242 def blank_lines_count_between(first_def_node, second_def_node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#166 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#180 def candidate?(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#186 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#206 def class_candidate?(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#250 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#272 def def_end(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#158 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#170 def def_location(correction_node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#242 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#262 def def_start(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#173 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#187 def empty_line_between_macros; end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#254 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#276 def end_loc(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#200 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#220 def expected_lines; end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#218 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#238 def line_count_allowed?(count); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#234 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#254 def lines_between_defs(first_def_node, second_def_node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#177 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#191 def macro_candidate?(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#230 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#250 def maximum_empty_lines; end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#194 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#214 def message(node, count: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#182 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#202 def method_candidate?(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#226 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#246 def minimum_empty_lines; end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#190 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#210 def module_candidate?(node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#209 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#229 def multiple_blank_lines_groups?(first_def_node, second_def_node); end - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#276 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#294 def node_type(node); end class << self - # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#108 + # source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#120 def autocorrect_incompatible_with; end end end -# source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#106 +# source://rubocop//lib/rubocop/cop/layout/empty_line_between_defs.rb#118 RuboCop::Cop::Layout::EmptyLineBetweenDefs::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/layout/empty_lines.rb#21 @@ -5836,6 +5852,47 @@ RuboCop::Cop::Layout::EmptyLines::LINE_OFFSET = T.let(T.unsafe(nil), Integer) # source://rubocop//lib/rubocop/cop/layout/empty_lines.rb#25 RuboCop::Cop::Layout::EmptyLines::MSG = T.let(T.unsafe(nil), String) +# source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#30 +class RuboCop::Cop::Layout::EmptyLinesAfterModuleInclusion < ::RuboCop::Cop::Base + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#40 + def on_send(node); end + + private + + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#85 + def allowed_method?(node); end + + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#54 + def autocorrect(corrector, node); end + + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#69 + def enable_directive_comment?(line); end + + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#75 + def line_empty?(line); end + + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#65 + def next_line_empty_or_enable_directive_comment?(line); end + + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#93 + def next_line_node(node); end + + # source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#79 + def require_empty_line?(node); end +end + +# source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#36 +RuboCop::Cop::Layout::EmptyLinesAfterModuleInclusion::MODULE_INCLUSION_METHODS = T.let(T.unsafe(nil), Array) + +# source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#34 +RuboCop::Cop::Layout::EmptyLinesAfterModuleInclusion::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop//lib/rubocop/cop/layout/empty_lines_after_module_inclusion.rb#38 +RuboCop::Cop::Layout::EmptyLinesAfterModuleInclusion::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_access_modifier.rb#43 class RuboCop::Cop::Layout::EmptyLinesAroundAccessModifier < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle @@ -5954,23 +6011,11 @@ class RuboCop::Cop::Layout::EmptyLinesAroundArguments < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#65 - def empty_lines(node); end - - # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#71 - def extra_lines(node); end - - # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#93 - def inner_lines(node); end - - # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#84 - def line_numbers(node); end - - # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#97 - def outer_lines(node); end + # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#73 + def empty_range_for_starting_point(start); end - # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#78 - def processed_lines(node); end + # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#65 + def extra_lines(node, &block); end # source://rubocop//lib/rubocop/cop/layout/empty_lines_around_arguments.rb#61 def receiver_and_method_call_on_different_lines?(node); end @@ -7448,25 +7493,28 @@ class RuboCop::Cop::Layout::LineLength < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#309 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#310 def allow_heredoc?; end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#317 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#318 def allow_string_split?; end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#313 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#385 + def allowed_combination?(line, uri_range, qualified_name_range); end + + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#314 def allowed_heredoc; end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#266 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#267 def allowed_line?(line, line_index); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#181 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#182 def breakable_block_range(block_node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#368 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#397 def breakable_dstr?(node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#230 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#231 def breakable_dstr_begin_position(node); end # source://rubocop//lib/rubocop/cop/layout/line_length.rb#112 @@ -7475,31 +7523,31 @@ class RuboCop::Cop::Layout::LineLength < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/layout/line_length.rb#112 def breakable_range=(_arg0); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#189 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#190 def breakable_range_after_semicolon(semicolon_token); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#235 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#236 def breakable_range_by_line_index; end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#172 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#173 def breakable_string?(node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#239 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#240 def breakable_string_delimiters; end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#202 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#203 def breakable_string_position(node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#214 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#215 def breakable_string_range(node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#344 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#352 def check_directive_line(line, line_index); end # source://rubocop//lib/rubocop/cop/layout/line_length.rb#135 def check_for_breakable_block(block_node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#157 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#158 def check_for_breakable_dstr(node); end # source://rubocop//lib/rubocop/cop/layout/line_length.rb#114 @@ -7508,46 +7556,52 @@ class RuboCop::Cop::Layout::LineLength < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/layout/line_length.rb#127 def check_for_breakable_semicolons(processed_source); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#145 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#146 def check_for_breakable_str(node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#254 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#255 def check_line(line, line_index); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#361 - def check_uri_line(line, line_index); end + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#369 + def check_line_for_exemptions(line, line_index); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#294 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#295 def excess_range(uri_range, line, line_index); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#321 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#322 def extract_heredocs(ast); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#243 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#244 def heredocs; end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#247 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#248 def highlight_start(line); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#384 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#413 def largest_possible_string(node); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#340 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#341 def line_in_heredoc?(line_number); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#331 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#332 def line_in_permitted_heredoc?(line_number); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#305 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#306 def max; end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#276 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#379 + def range_if_applicable(line, type); end + + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#345 + def receiver_contains_heredoc?(node); end + + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#277 def register_offense(loc, line, line_index, length: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#272 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#273 def shebang?(line, line_index); end - # source://rubocop//lib/rubocop/cop/layout/line_length.rb#373 + # source://rubocop//lib/rubocop/cop/layout/line_length.rb#402 def string_delimiter(node); end end @@ -7902,43 +7956,43 @@ end # source://rubocop//lib/rubocop/cop/layout/multiline_method_parameter_line_breaks.rb#61 RuboCop::Cop::Layout::MultilineMethodParameterLineBreaks::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#43 +# source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#45 class RuboCop::Cop::Layout::MultilineOperationIndentation < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle include ::RuboCop::Cop::Alignment include ::RuboCop::Cop::MultilineExpressionIndentation extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#49 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#51 def on_and(node); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#53 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#55 def on_or(node); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#57 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#59 def validate_config; end private - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#68 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#70 def autocorrect(corrector, node); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#78 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#80 def check_and_or(node); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#109 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#113 def message(node, lhs, rhs); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#83 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#85 def offending_range(node, lhs, rhs, given_style); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#72 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#74 def relevant_node?(node); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#120 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#124 def right_hand_side(send_node); end - # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#96 + # source://rubocop//lib/rubocop/cop/layout/multiline_operation_indentation.rb#98 def should_align?(node, rhs, given_style); end end @@ -8076,7 +8130,7 @@ class RuboCop::Cop::Layout::RescueEnsureAlignment < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/layout/rescue_ensure_alignment.rb#72 def autocorrect(corrector, node, alignment_location); end - # source://rubocop//lib/rubocop/cop/layout/rescue_ensure_alignment.rb#202 + # source://rubocop//lib/rubocop/cop/layout/rescue_ensure_alignment.rb#210 def begin_end_alignment_style; end # source://rubocop//lib/rubocop/cop/layout/rescue_ensure_alignment.rb#56 @@ -8314,167 +8368,167 @@ end # source://rubocop//lib/rubocop/cop/layout/space_around_equals_in_parameter_default.rb#36 RuboCop::Cop::Layout::SpaceAroundEqualsInParameterDefault::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#27 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#32 class RuboCop::Cop::Layout::SpaceAroundKeyword < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#41 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#46 def on_and(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#45 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#50 def on_block(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#49 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#54 def on_break(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#53 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#58 def on_case(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#57 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#62 def on_case_match(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#157 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#162 def on_defined?(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#61 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#66 def on_ensure(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#65 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#70 def on_for(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#69 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#74 def on_if(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#73 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#78 def on_if_guard(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#77 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#82 def on_in_pattern(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#81 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#86 def on_kwbegin(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#86 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#91 def on_match_pattern(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#93 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#98 def on_match_pattern_p(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#97 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#102 def on_next(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#101 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#106 def on_or(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#105 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#110 def on_postexe(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#109 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#114 def on_preexe(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#113 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#118 def on_resbody(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#117 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#122 def on_rescue(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#121 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#126 def on_return(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#125 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#130 def on_send(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#129 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#134 def on_super(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#137 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#142 def on_unless_guard(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#141 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#146 def on_until(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#145 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#150 def on_when(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#149 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#154 def on_while(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#153 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#158 def on_yield(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#133 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#138 def on_zsuper(node); end private - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#236 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#241 def accept_left_parenthesis?(range); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#240 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#245 def accept_left_square_bracket?(range); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#244 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#249 def accept_namespace_operator?(range); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#229 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#234 def accepted_opening_delimiter?(range, char); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#163 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#168 def check(node, locations, begin_keyword = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#178 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#183 def check_begin(node, range, begin_keyword); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#184 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#189 def check_end(node, range, begin_keyword); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#197 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#202 def check_keyword(node, range); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#193 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#198 def do?(node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#252 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#257 def namespace_operator?(range, pos); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#256 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#261 def preceded_by_operator?(node, _range); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#248 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#253 def safe_navigation_call?(range, pos); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#218 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#223 def space_after_missing?(range); end - # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#211 + # source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#216 def space_before_missing?(range); end end -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#36 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#41 RuboCop::Cop::Layout::SpaceAroundKeyword::ACCEPT_LEFT_PAREN = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#37 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#42 RuboCop::Cop::Layout::SpaceAroundKeyword::ACCEPT_LEFT_SQUARE_BRACKET = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#38 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#43 RuboCop::Cop::Layout::SpaceAroundKeyword::ACCEPT_NAMESPACE_OPERATOR = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#33 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#38 RuboCop::Cop::Layout::SpaceAroundKeyword::DO = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#31 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#36 RuboCop::Cop::Layout::SpaceAroundKeyword::MSG_AFTER = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#30 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#35 RuboCop::Cop::Layout::SpaceAroundKeyword::MSG_BEFORE = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#35 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#40 RuboCop::Cop::Layout::SpaceAroundKeyword::NAMESPACE_OPERATOR = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#39 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#44 RuboCop::Cop::Layout::SpaceAroundKeyword::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#34 +# source://rubocop//lib/rubocop/cop/layout/space_around_keyword.rb#39 RuboCop::Cop::Layout::SpaceAroundKeyword::SAFE_NAVIGATION = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/layout/space_around_method_call_operator.rb#37 @@ -8555,6 +8609,12 @@ class RuboCop::Cop::Layout::SpaceAroundOperators < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#115 def on_masgn(node); end + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#154 + def on_match_alt(node); end + + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#158 + def on_match_as(node); end + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#148 def on_match_pattern(node); end @@ -8584,49 +8644,49 @@ class RuboCop::Cop::Layout::SpaceAroundOperators < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#258 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#266 def align_hash_cop_config; end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#197 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#205 def autocorrect(corrector, range, right_operand); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#178 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#186 def check_operator(type, operator, right_operand); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#211 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#219 def enclose_operator_with_space(corrector, range); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#238 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#246 def excess_leading_space?(type, operator, with_space); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#253 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#261 def excess_trailing_space?(right_operand, with_space); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#279 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#287 def force_equal_sign_alignment?; end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#262 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#270 def hash_table_style?; end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#192 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#200 def offense(type, operator, with_space, right_operand); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#224 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#232 def offense_message(type, operator, with_space, right_operand); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#174 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#182 def operator_with_regular_syntax?(send_node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#168 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#176 def regular_operator?(send_node); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#283 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#291 def should_not_have_surrounding_space?(operator, right_operand); end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#269 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#277 def space_around_exponent_operator?; end - # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#273 + # source://rubocop//lib/rubocop/cop/layout/space_around_operators.rb#281 def space_around_slash_operator?(right_operand); end class << self @@ -8707,11 +8767,6 @@ class RuboCop::Cop::Layout::SpaceBeforeBrackets < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/layout/space_before_brackets.rb#24 def on_send(node); end - - private - - # source://rubocop//lib/rubocop/cop/layout/space_before_brackets.rb#39 - def dot_before_brackets?(node, receiver_end_pos, selector_begin_pos); end end # source://rubocop//lib/rubocop/cop/layout/space_before_brackets.rb#21 @@ -8831,52 +8886,55 @@ class RuboCop::Cop::Layout::SpaceInsideArrayLiteralBrackets < ::RuboCop::Cop::Ba private - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#119 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#124 def array_brackets(node); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#105 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#110 def autocorrect(corrector, node); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#227 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#232 def compact(corrector, bracket, side); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#213 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#218 def compact_corrections(corrector, node, left, right); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#205 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#210 def compact_offense(node, token, side: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#167 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#172 def compact_offenses(node, left, right, start_ok, end_ok); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#128 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#133 def empty_config; end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#136 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#141 def end_has_own_line?(token); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#143 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#106 + def find_node_with_brackets(node); end + + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#148 def index_for(node, token); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#151 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#156 def issue_offenses(node, left, right, start_ok, end_ok); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#147 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#152 def line_and_column_for(token); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#188 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#193 def multi_dimensional_array?(node, token, side: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#199 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#204 def next_to_bracket?(token, side: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#163 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#168 def next_to_comment?(node, token); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#132 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#137 def next_to_newline?(node, token); end - # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#180 + # source://rubocop//lib/rubocop/cop/layout/space_inside_array_literal_brackets.rb#185 def qualifies_for_compact?(node, token, side: T.unsafe(nil)); end end @@ -9351,43 +9409,52 @@ module RuboCop::Cop::LineLengthHelp private + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#28 + def allow_qualified_name?; end + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#24 def allow_uri?; end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#28 - def allowed_uri_position?(line, uri_range); end + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#32 + def allowed_position?(line, range); end # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#15 def directive_on_source_line?(line_index); end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#73 - def extend_uri_end_position(line, end_position); end + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#85 + def extend_end_position(line, end_position); end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#36 - def find_excessive_uri_range(line); end + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#40 + def find_excessive_range(line, type); end # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#11 def ignore_cop_directives?; end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#60 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#72 def indentation_difference(line); end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#32 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#36 def line_length(line); end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#111 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#127 def line_length_without_directive(line); end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#52 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#64 + def match_qualified_names(string); end + + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#56 def match_uris(string); end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#89 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#116 + def qualified_name_regexp; end + + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#101 def tab_indentation_width; end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#94 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#106 def uri_regexp; end - # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#104 + # source://rubocop//lib/rubocop/cop/mixin/line_length_help.rb#120 def valid_uri?(uri_ish_string); end end @@ -10015,7 +10082,7 @@ class RuboCop::Cop::Lint::DeprecatedOpenSSLConstant < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb#66 def autocorrect(corrector, node); end - # source://rubocop//lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb#130 + # source://rubocop//lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb#133 def build_cipher_arguments(node, algorithm_name, no_arguments); end # source://rubocop//lib/rubocop/cop/lint/deprecated_open_ssl_constant.rb#93 @@ -10184,90 +10251,90 @@ end # source://rubocop//lib/rubocop/cop/lint/duplicate_match_pattern.rb#93 RuboCop::Cop::Lint::DuplicateMatchPattern::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#84 +# source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#100 class RuboCop::Cop::Lint::DuplicateMethods < ::RuboCop::Cop::Base - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#89 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#105 def initialize(config = T.unsafe(nil), options = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#127 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#145 def alias_method?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#132 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#150 def delegate_method?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#115 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#131 def method_alias?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#119 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#135 def on_alias(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#95 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#111 def on_def(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#103 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#119 def on_defs(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#142 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#160 def on_send(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#140 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#158 def sym_name(param0 = T.unsafe(nil)); end private - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#158 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#179 def check_const_receiver(node, name, const_name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#165 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#186 def check_self_receiver(node, name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#187 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#208 def delegate_prefix(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#275 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#296 def found_attr(node, args, readable: T.unsafe(nil), writable: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#203 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#224 def found_instance_method(node, name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#226 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#247 def found_method(node, method_name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#216 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#237 def found_sclass_method(node, name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#199 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#220 def hash_value(node, key); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#253 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#274 def location(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#285 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#306 def lookup_constant(node, const_name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#172 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#193 def message_for_dup(node, method_name, key); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#245 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#266 def method_key(node, method_name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#261 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#282 def on_attr(node, attr_name, args); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#177 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#198 def on_delegate(node, method_names); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#303 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#324 def qualified_name(enclosing, namespace, mod_name); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#317 + # source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#338 def source_location(node); end end -# source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#85 +# source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#101 RuboCop::Cop::Lint::DuplicateMethods::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#86 +# source://rubocop//lib/rubocop/cop/lint/duplicate_methods.rb#102 RuboCop::Cop::Lint::DuplicateMethods::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#21 @@ -10275,45 +10342,30 @@ class RuboCop::Cop::Lint::DuplicateRegexpCharacterClassElement < ::RuboCop::Cop: include ::RuboCop::Cop::RangeHelp extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#37 + # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#35 def each_repeated_character_class_element_loc(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#29 + # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#27 def on_regexp(node); end private - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#102 - def escaped_octal?(string); end - - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#54 + # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#52 def group_expressions(node, expressions); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#110 + # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#73 def interpolation_locs(node); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#106 - def octal?(char); end - - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#71 - def pop_octal_digits(current_child, expressions); end - - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#89 + # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#60 def skip_expression?(expr); end - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#80 - def source_range(children); end - - # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#96 + # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#67 def within_interpolation?(node, child); end end # source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#25 RuboCop::Cop::Lint::DuplicateRegexpCharacterClassElement::MSG_REPEATED_ELEMENT = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/duplicate_regexp_character_class_element.rb#27 -RuboCop::Cop::Lint::DuplicateRegexpCharacterClassElement::OCTAL_DIGITS_AFTER_ESCAPE = T.let(T.unsafe(nil), Integer) - # source://rubocop//lib/rubocop/cop/lint/duplicate_require.rb#26 class RuboCop::Cop::Lint::DuplicateRequire < ::RuboCop::Cop::Base include ::RuboCop::Cop::RangeHelp @@ -10650,17 +10702,17 @@ class RuboCop::Cop::Lint::FloatComparison < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#122 - def check_numeric_returning_method(node); end - - # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#111 - def check_send(node); end - # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#90 def float?(node); end + # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#111 + def float_send?(node); end + # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#105 def literal_safe?(node); end + + # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#122 + def numeric_returning_method?(node); end end # source://rubocop//lib/rubocop/cop/lint/float_comparison.rb#59 @@ -11093,66 +11145,69 @@ class RuboCop::Cop::Lint::LiteralAsCondition < ::RuboCop::Cop::Base include ::RuboCop::Cop::RangeHelp extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#160 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#174 def message(node); end # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#45 def on_and(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#125 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#137 def on_case(case_node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#140 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#154 def on_case_match(case_match_node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#57 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#69 def on_if(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#154 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#57 + def on_or(node); end + + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#168 def on_send(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#95 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#107 def on_until(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#110 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#122 def on_until_post(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#65 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#77 def on_while(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#80 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#92 def on_while_post(node); end private - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#175 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#189 def basic_literal?(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#207 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#221 def check_case(case_node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#166 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#180 def check_for_literal(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#187 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#201 def check_node(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#216 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#230 def condition(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#231 - def condition_evaluation(node, cond); end + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#245 + def condition_evaluation?(node, cond); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#240 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#254 def correct_if_node(node, cond); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#197 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#211 def handle_node(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#183 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#197 def primitive_array?(node); end - # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#224 + # source://rubocop//lib/rubocop/cop/lint/literal_as_condition.rb#238 def when_conditions_range(when_node); end end @@ -11289,19 +11344,19 @@ class RuboCop::Cop::Lint::MissingCopEnableDirective < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#70 + # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#69 def acceptable_range?(cop, line_range); end - # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#104 + # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#103 def department_enabled?(cop, comment); end - # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#64 + # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#63 def each_missing_enable; end - # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#87 + # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#86 def max_range; end - # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#91 + # source://rubocop//lib/rubocop/cop/lint/missing_cop_enable_directive.rb#90 def message(cop, comment, type = T.unsafe(nil)); end end @@ -11779,31 +11834,31 @@ RuboCop::Cop::Lint::NumberedParameterAssignment::NUM_PARAM_MSG = T.let(T.unsafe( class RuboCop::Cop::Lint::NumericOperationWithConstantResult < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#56 + # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#57 def abbreviated_assignment_with_constant_result?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#59 + # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#60 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#69 + # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#70 def on_op_asgn(node); end - # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#59 + # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#60 def on_send(node); end - # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#52 + # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#53 def operation_with_constant_result?(param0 = T.unsafe(nil)); end private - # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#80 + # source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#81 def constant_result?(lhs, operation, rhs); end end -# source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#48 +# source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#49 RuboCop::Cop::Lint::NumericOperationWithConstantResult::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#49 +# source://rubocop//lib/rubocop/cop/lint/numeric_operation_with_constant_result.rb#50 RuboCop::Cop::Lint::NumericOperationWithConstantResult::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # source://rubocop//lib/rubocop/cop/lint/or_assignment_to_constant.rb#24 @@ -12296,45 +12351,60 @@ RuboCop::Cop::Lint::RedundantRequireStatement::RESTRICT_ON_SEND = T.let(T.unsafe # source://rubocop//lib/rubocop/cop/lint/redundant_require_statement.rb#39 RuboCop::Cop::Lint::RedundantRequireStatement::RUBY_22_LOADED_FEATURES = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#84 +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#145 class RuboCop::Cop::Lint::RedundantSafeNavigation < ::RuboCop::Cop::Base include ::RuboCop::Cop::AllowedMethods extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#101 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#166 def conversion_with_default?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#113 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#178 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#123 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#200 def on_or(node); end - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#96 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#161 def respond_to_nil_specific_method?(param0 = T.unsafe(nil)); end private - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#139 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#252 + def additional_nil_methods; end + + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#216 def assume_receiver_instance_exists?(receiver); end - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#145 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#233 def check?(node); end - # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#154 + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#244 def condition?(parent, node); end + + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#222 + def guaranteed_instance?(node); end + + # source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#248 + def infer_non_nil_receiver?; end end -# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#88 +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#158 +RuboCop::Cop::Lint::RedundantSafeNavigation::GUARANTEED_INSTANCE_METHODS = T.let(T.unsafe(nil), Array) + +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#149 RuboCop::Cop::Lint::RedundantSafeNavigation::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#89 +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#150 RuboCop::Cop::Lint::RedundantSafeNavigation::MSG_LITERAL = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#91 +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#151 +RuboCop::Cop::Lint::RedundantSafeNavigation::MSG_NON_NIL = T.let(T.unsafe(nil), String) + +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#154 RuboCop::Cop::Lint::RedundantSafeNavigation::NIL_SPECIFIC_METHODS = T.let(T.unsafe(nil), Set) -# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#93 +# source://rubocop//lib/rubocop/cop/lint/redundant_safe_navigation.rb#156 RuboCop::Cop::Lint::RedundantSafeNavigation::SNAKE_CASE = T.let(T.unsafe(nil), Regexp) # source://rubocop//lib/rubocop/cop/lint/redundant_splat_expansion.rb#71 @@ -12849,57 +12919,63 @@ RuboCop::Cop::Lint::ScriptPermission::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/lint/script_permission.rb#37 RuboCop::Cop::Lint::ScriptPermission::SHEBANG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#26 +# source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#34 class RuboCop::Cop::Lint::SelfAssignment < ::RuboCop::Cop::Base - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#67 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#82 def on_and_asgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#56 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#67 def on_casgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#36 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#44 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#45 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#55 def on_cvasgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#45 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#55 def on_gvasgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#45 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#55 def on_ivasgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#45 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#55 def on_lvasgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#63 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#75 def on_masgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#67 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#82 def on_or_asgn(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#36 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#44 def on_send(node); end private - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#101 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#134 + def allow_rbs_inline_annotation?; end + + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#119 def handle_attribute_assignment(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#90 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#107 def handle_key_assignment(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#74 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#91 def multiple_self_assignment?(node); end - # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#85 + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#130 + def rbs_inline_annotation?(node); end + + # source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#102 def rhs_matches_lhs?(rhs, lhs); end end -# source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#29 +# source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#37 RuboCop::Cop::Lint::SelfAssignment::ASSIGNMENT_TYPE_TO_RHS_TYPE = T.let(T.unsafe(nil), Hash) -# source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#27 +# source://rubocop//lib/rubocop/cop/lint/self_assignment.rb#35 RuboCop::Cop::Lint::SelfAssignment::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/lint/send_with_mixin_argument.rb#36 @@ -12956,12 +13032,12 @@ class RuboCop::Cop::Lint::ShadowedArgument < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/lint/shadowed_argument.rb#82 def check_argument(argument); end + # source://rubocop//lib/rubocop/cop/lint/shadowed_argument.rb#152 + def conditional_assignment?(node, stop_search_node); end + # source://rubocop//lib/rubocop/cop/lint/shadowed_argument.rb#171 def ignore_implicit_references?; end - # source://rubocop//lib/rubocop/cop/lint/shadowed_argument.rb#152 - def node_within_block_or_conditional?(node, stop_search_node); end - # source://rubocop//lib/rubocop/cop/lint/shadowed_argument.rb#144 def reference_pos(node); end @@ -13669,7 +13745,7 @@ class RuboCop::Cop::Lint::UnusedMethodArgument < ::RuboCop::Cop::Base def message(variable); end class << self - # source://rubocop-performance/1.25.0/lib/rubocop-performance.rb#12 + # source://rubocop-performance/1.26.0/lib/rubocop-performance.rb#11 def autocorrect_incompatible_with; end # source://rubocop//lib/rubocop/cop/lint/unused_method_argument.rb#84 @@ -13677,28 +13753,28 @@ class RuboCop::Cop::Lint::UnusedMethodArgument < ::RuboCop::Cop::Base end end -# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#32 +# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#34 class RuboCop::Cop::Lint::UriEscapeUnescape < ::RuboCop::Cop::Base - # source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#57 + # source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#59 def on_send(node); end - # source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#51 + # source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#53 def uri_escape_unescape?(param0 = T.unsafe(nil)); end end -# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#33 +# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#35 RuboCop::Cop::Lint::UriEscapeUnescape::ALTERNATE_METHODS_OF_URI_ESCAPE = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#38 +# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#40 RuboCop::Cop::Lint::UriEscapeUnescape::ALTERNATE_METHODS_OF_URI_UNESCAPE = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#47 +# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#49 RuboCop::Cop::Lint::UriEscapeUnescape::METHOD_NAMES = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#44 +# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#46 RuboCop::Cop::Lint::UriEscapeUnescape::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#48 +# source://rubocop//lib/rubocop/cop/lint/uri_escape_unescape.rb#50 RuboCop::Cop::Lint::UriEscapeUnescape::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # source://rubocop//lib/rubocop/cop/lint/uri_regexp.rb#29 @@ -13758,7 +13834,7 @@ class RuboCop::Cop::Lint::UselessAccessModifier < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#200 def access_modifier?(node); end - # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#298 + # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#302 def any_context_creating_methods?(child); end # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#275 @@ -13782,7 +13858,7 @@ class RuboCop::Cop::Lint::UselessAccessModifier < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#233 def check_send_node(node, cur_vis, unused); end - # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#292 + # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#296 def eval_call?(child); end # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#265 @@ -13791,7 +13867,7 @@ class RuboCop::Cop::Lint::UselessAccessModifier < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#269 def method_definition?(child); end - # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#288 + # source://rubocop//lib/rubocop/cop/lint/useless_access_modifier.rb#292 def start_of_new_scope?(child); end end @@ -13967,31 +14043,31 @@ RuboCop::Cop::Lint::UselessMethodDefinition::MSG = T.let(T.unsafe(nil), String) class RuboCop::Cop::Lint::UselessNumericOperation < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#43 + # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#44 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#55 + # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#56 def on_op_asgn(node); end - # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#43 + # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#44 def on_send(node); end - # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#41 + # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#42 def useless_abbreviated_assignment?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#38 + # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#39 def useless_operation?(param0 = T.unsafe(nil)); end private - # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#68 + # source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#69 def useless?(operation, number); end end -# source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#34 +# source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#35 RuboCop::Cop::Lint::UselessNumericOperation::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#35 +# source://rubocop//lib/rubocop/cop/lint/useless_numeric_operation.rb#36 RuboCop::Cop::Lint::UselessNumericOperation::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # source://rubocop//lib/rubocop/cop/lint/useless_or.rb#66 @@ -14045,7 +14121,7 @@ class RuboCop::Cop::Lint::UselessRuby2Keywords < ::RuboCop::Cop::Base private # source://rubocop//lib/rubocop/cop/lint/useless_ruby2_keywords.rb#118 - def allowed_arguments(arguments); end + def allowed_arguments?(arguments); end # source://rubocop//lib/rubocop/cop/lint/useless_ruby2_keywords.rb#109 def find_method_definition(node, method_name); end @@ -14165,117 +14241,149 @@ RuboCop::Cop::Lint::UselessTimes::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/lint/useless_times.rb#29 RuboCop::Cop::Lint::UselessTimes::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#53 +# source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#6 +module RuboCop::Cop::Lint::Utils; end + +# source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#8 +class RuboCop::Cop::Lint::Utils::NilReceiverChecker + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#11 + def initialize(receiver, additional_nil_methods); end + + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#17 + def cant_be_nil?; end + + private + + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#24 + def _cant_be_nil?(node, receiver); end + + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#108 + def else_branch?(node); end + + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#112 + def find_top_if(node); end + + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#81 + def non_nil_method?(method_name); end + + # source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#86 + def sole_condition_of_parent_if?(node); end +end + +# source://rubocop//lib/rubocop/cop/lint/utils/nil_receiver_checker.rb#9 +RuboCop::Cop::Lint::Utils::NilReceiverChecker::NIL_METHODS = T.let(T.unsafe(nil), Set) + +# source://rubocop//lib/rubocop/cop/lint/void.rb#59 class RuboCop::Cop::Lint::Void < ::RuboCop::Cop::Base include ::RuboCop::Cop::RangeHelp extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/lint/void.rb#91 + # source://rubocop//lib/rubocop/cop/lint/void.rb#97 def on_begin(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#81 + # source://rubocop//lib/rubocop/cop/lint/void.rb#87 def on_block(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#96 + # source://rubocop//lib/rubocop/cop/lint/void.rb#102 def on_ensure(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#81 + # source://rubocop//lib/rubocop/cop/lint/void.rb#87 def on_itblock(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#91 + # source://rubocop//lib/rubocop/cop/lint/void.rb#97 def on_kwbegin(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#81 + # source://rubocop//lib/rubocop/cop/lint/void.rb#87 def on_numblock(node); end private - # source://rubocop//lib/rubocop/cop/lint/void.rb#262 + # source://rubocop//lib/rubocop/cop/lint/void.rb#269 def all_keys_entirely_literal?(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#266 + # source://rubocop//lib/rubocop/cop/lint/void.rb#273 def all_values_entirely_literal?(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#240 + # source://rubocop//lib/rubocop/cop/lint/void.rb#247 def autocorrect_nonmutating_send(corrector, node, suggestion); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#234 + # source://rubocop//lib/rubocop/cop/lint/void.rb#240 def autocorrect_void_expression(corrector, node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#221 + # source://rubocop//lib/rubocop/cop/lint/void.rb#227 def autocorrect_void_op(corrector, node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#102 + # source://rubocop//lib/rubocop/cop/lint/void.rb#108 def check_begin(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#206 + # source://rubocop//lib/rubocop/cop/lint/void.rb#212 def check_ensure(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#116 + # source://rubocop//lib/rubocop/cop/lint/void.rb#122 def check_expression(expr); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#164 + # source://rubocop//lib/rubocop/cop/lint/void.rb#170 def check_literal(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#188 + # source://rubocop//lib/rubocop/cop/lint/void.rb#194 def check_nonmutating(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#172 + # source://rubocop//lib/rubocop/cop/lint/void.rb#178 def check_self(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#146 + # source://rubocop//lib/rubocop/cop/lint/void.rb#152 def check_var(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#180 + # source://rubocop//lib/rubocop/cop/lint/void.rb#186 def check_void_expression(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#130 + # source://rubocop//lib/rubocop/cop/lint/void.rb#136 def check_void_op(node, &block); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#249 + # source://rubocop//lib/rubocop/cop/lint/void.rb#256 def entirely_literal?(node); end - # source://rubocop//lib/rubocop/cop/lint/void.rb#214 + # source://rubocop//lib/rubocop/cop/lint/void.rb#220 def in_void_context?(node); end end -# source://rubocop//lib/rubocop/cop/lint/void.rb#66 +# source://rubocop//lib/rubocop/cop/lint/void.rb#72 RuboCop::Cop::Lint::Void::BINARY_OPERATORS = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#60 +# source://rubocop//lib/rubocop/cop/lint/void.rb#66 RuboCop::Cop::Lint::Void::CONST_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/void.rb#63 +# source://rubocop//lib/rubocop/cop/lint/void.rb#69 RuboCop::Cop::Lint::Void::EXPRESSION_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/void.rb#61 +# source://rubocop//lib/rubocop/cop/lint/void.rb#67 RuboCop::Cop::Lint::Void::LIT_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/void.rb#76 +# source://rubocop//lib/rubocop/cop/lint/void.rb#82 RuboCop::Cop::Lint::Void::METHODS_REPLACEABLE_BY_EACH = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#78 +# source://rubocop//lib/rubocop/cop/lint/void.rb#84 RuboCop::Cop::Lint::Void::NONMUTATING_METHODS = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#69 +# source://rubocop//lib/rubocop/cop/lint/void.rb#75 RuboCop::Cop::Lint::Void::NONMUTATING_METHODS_WITH_BANG_VERSION = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#64 +# source://rubocop//lib/rubocop/cop/lint/void.rb#70 RuboCop::Cop::Lint::Void::NONMUTATING_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/void.rb#68 +# source://rubocop//lib/rubocop/cop/lint/void.rb#74 RuboCop::Cop::Lint::Void::OPERATORS = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#58 +# source://rubocop//lib/rubocop/cop/lint/void.rb#64 RuboCop::Cop::Lint::Void::OP_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/void.rb#62 +# source://rubocop//lib/rubocop/cop/lint/void.rb#68 RuboCop::Cop::Lint::Void::SELF_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/lint/void.rb#67 +# source://rubocop//lib/rubocop/cop/lint/void.rb#73 RuboCop::Cop::Lint::Void::UNARY_OPERATORS = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/lint/void.rb#59 +# source://rubocop//lib/rubocop/cop/lint/void.rb#65 RuboCop::Cop::Lint::Void::VAR_MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/mixin/match_range.rb#6 @@ -14950,24 +15058,24 @@ class RuboCop::Cop::Minitest::MultipleAssertions < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/exclude_limit.rb#11 def max=(value); end - # source://rubocop-minitest/0.38.1/lib/rubocop/cop/minitest/multiple_assertions.rb#37 + # source://rubocop-minitest/0.38.2/lib/rubocop/cop/minitest/multiple_assertions.rb#37 def on_class(class_node); end private - # source://rubocop-minitest/0.38.1/lib/rubocop/cop/minitest/multiple_assertions.rb#54 + # source://rubocop-minitest/0.38.2/lib/rubocop/cop/minitest/multiple_assertions.rb#54 def assertions_count(node); end - # source://rubocop-minitest/0.38.1/lib/rubocop/cop/minitest/multiple_assertions.rb#62 + # source://rubocop-minitest/0.38.2/lib/rubocop/cop/minitest/multiple_assertions.rb#62 def assertions_count_based_on_type(node); end - # source://rubocop-minitest/0.38.1/lib/rubocop/cop/minitest/multiple_assertions.rb#77 + # source://rubocop-minitest/0.38.2/lib/rubocop/cop/minitest/multiple_assertions.rb#77 def assertions_count_in_assignment(node); end - # source://rubocop-minitest/0.38.1/lib/rubocop/cop/minitest/multiple_assertions.rb#99 + # source://rubocop-minitest/0.38.2/lib/rubocop/cop/minitest/multiple_assertions.rb#99 def assertions_count_in_branches(branches); end - # source://rubocop-minitest/0.38.1/lib/rubocop/cop/minitest/multiple_assertions.rb#103 + # source://rubocop-minitest/0.38.2/lib/rubocop/cop/minitest/multiple_assertions.rb#103 def max_assertions; end end @@ -15336,7 +15444,7 @@ class RuboCop::Cop::Naming::BlockForwarding < ::RuboCop::Cop::Base def use_kwarg_in_method_definition?(node); end class << self - # source://rubocop//lib/rubocop/cop/naming/block_forwarding.rb#64 + # source://rubocop-performance/1.26.0/lib/rubocop-performance.rb#11 def autocorrect_incompatible_with; end end end @@ -15445,15 +15553,15 @@ class RuboCop::Cop::Naming::FileName < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/naming/file_name.rb#204 def match_acronym?(expected, name); end - # source://rubocop//lib/rubocop/cop/naming/file_name.rb#172 - def match_namespace(node, namespace, expected); end - # source://rubocop//lib/rubocop/cop/naming/file_name.rb#90 def matching_class?(file_name); end # source://rubocop//lib/rubocop/cop/naming/file_name.rb#86 def matching_definition?(file_path); end + # source://rubocop//lib/rubocop/cop/naming/file_name.rb#172 + def namespace_matches?(node, namespace, expected); end + # source://rubocop//lib/rubocop/cop/naming/file_name.rb#98 def no_definition_message(basename, file_path); end @@ -15686,7 +15794,7 @@ RuboCop::Cop::Naming::MemoizedInstanceVariableName::MSG = T.let(T.unsafe(nil), S # source://rubocop//lib/rubocop/cop/naming/memoized_instance_variable_name.rb#155 RuboCop::Cop::Naming::MemoizedInstanceVariableName::UNDERSCORE_REQUIRED = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/naming/method_name.rb#59 +# source://rubocop//lib/rubocop/cop/naming/method_name.rb#99 class RuboCop::Cop::Naming::MethodName < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle include ::RuboCop::Cop::ConfigurableFormatting @@ -15696,45 +15804,75 @@ class RuboCop::Cop::Naming::MethodName < ::RuboCop::Cop::Base include ::RuboCop::Cop::ForbiddenIdentifiers include ::RuboCop::Cop::ForbiddenPattern - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#90 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#122 + def define_data?(param0 = T.unsafe(nil)); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#119 + def new_struct?(param0 = T.unsafe(nil)); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#149 + def on_alias(node); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#138 def on_def(node); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#90 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#138 def on_defs(node); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#75 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#124 def on_send(node); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#73 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#116 def str_name(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#70 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#113 def sym_name(param0 = T.unsafe(nil)); end private - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#120 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#230 def attr_name(name_item); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#103 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#206 def forbidden_name?(name); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#131 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#174 + def handle_alias_method(node); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#181 + def handle_attr_accessor(node); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#168 + def handle_define_data(node); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#155 + def handle_define_method(node); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#196 + def handle_method_name(node, name); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#161 + def handle_new_struct(node); end + + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#245 def message(style); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#124 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#234 def range_position(node); end - # source://rubocop//lib/rubocop/cop/naming/method_name.rb#107 + # source://rubocop//lib/rubocop/cop/naming/method_name.rb#211 def register_forbidden_name(node); end end -# source://rubocop//lib/rubocop/cop/naming/method_name.rb#66 +# source://rubocop//lib/rubocop/cop/naming/method_name.rb#106 RuboCop::Cop::Naming::MethodName::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/naming/method_name.rb#67 +# source://rubocop//lib/rubocop/cop/naming/method_name.rb#107 RuboCop::Cop::Naming::MethodName::MSG_FORBIDDEN = T.let(T.unsafe(nil), String) +# source://rubocop//lib/rubocop/cop/naming/method_name.rb#109 +RuboCop::Cop::Naming::MethodName::OPERATOR_METHODS = T.let(T.unsafe(nil), Set) + # source://rubocop//lib/rubocop/cop/naming/method_parameter_name.rb#46 class RuboCop::Cop::Naming::MethodParameterName < ::RuboCop::Cop::Base include ::RuboCop::Cop::UncommunicativeName @@ -15746,72 +15884,81 @@ class RuboCop::Cop::Naming::MethodParameterName < ::RuboCop::Cop::Base def on_defs(node); end end -# source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#92 +# source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#140 class RuboCop::Cop::Naming::PredicateMethod < ::RuboCop::Cop::Base include ::RuboCop::Cop::AllowedMethods include ::RuboCop::Cop::AllowedPattern - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#99 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#147 def on_def(node); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#99 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#147 def on_defs(node); end private - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#123 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#172 def acceptable?(return_values); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#151 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#202 def all_return_values_boolean?(return_values); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#239 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#302 def allow_bang_methods?; end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#115 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#163 def allowed?(node); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#233 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#296 def allowed_bang_method?(node); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#206 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#266 def and_or?(node); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#158 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#209 def boolean_return?(value); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#229 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#292 def conservative?; end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#210 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#270 def extract_and_or_clauses(node); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#217 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#277 def extract_conditional_branches(node); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#176 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#236 def extract_return_value(node); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#189 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#249 def last_value(node); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#133 - def non_comparison_call?(value); end + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#215 + def method_returning_boolean?(value); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#162 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#222 def potential_non_predicate?(return_values); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#194 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#254 def process_return_values(return_values); end - # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#137 + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#188 def return_values(node); end + + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#182 + def unknown_method_call?(value); end + + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#309 + def wayward_predicate?(name); end + + # source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#313 + def wayward_predicates; end end -# source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#97 +# source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#145 RuboCop::Cop::Naming::PredicateMethod::MSG_NON_PREDICATE = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#96 +# source://rubocop//lib/rubocop/cop/naming/predicate_method.rb#144 RuboCop::Cop::Naming::PredicateMethod::MSG_PREDICATE = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/naming/predicate_prefix.rb#103 @@ -15851,7 +15998,7 @@ class RuboCop::Cop::Naming::PredicatePrefix < ::RuboCop::Cop::Base def message(method_name, new_name); end # source://rubocop//lib/rubocop/cop/naming/predicate_prefix.rb#198 - def method_definition_macros(macro_name); end + def method_definition_macro?(macro_name); end # source://rubocop//lib/rubocop/cop/naming/predicate_prefix.rb#190 def predicate_prefixes; end @@ -16247,28 +16394,28 @@ class RuboCop::Cop::ParenthesesCorrector private - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#74 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#77 def add_heredoc_comma(corrector, node); end - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#64 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#67 def extend_range_for_heredoc(node, range); end - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#41 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#44 def handle_orphaned_comma(corrector, node); end - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#80 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#83 def heredoc?(node); end - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#28 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#31 def next_char_is_question_mark?(node); end - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#32 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#35 def only_closing_paren_before_comma?(node); end - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#51 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#54 def parens_range(node); end - # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#24 + # source://rubocop//lib/rubocop/cop/correctors/parentheses_corrector.rb#27 def ternary_condition?(node); end end end @@ -16833,19 +16980,19 @@ RuboCop::Cop::Security::CompoundHash::REDUNDANT_HASH_MSG = T.let(T.unsafe(nil), # source://rubocop//lib/rubocop/cop/security/compound_hash.rb#35 RuboCop::Cop::Security::CompoundHash::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/security/eval.rb#14 +# source://rubocop//lib/rubocop/cop/security/eval.rb#15 class RuboCop::Cop::Security::Eval < ::RuboCop::Cop::Base - # source://rubocop//lib/rubocop/cop/security/eval.rb#19 + # source://rubocop//lib/rubocop/cop/security/eval.rb#20 def eval?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/security/eval.rb#23 + # source://rubocop//lib/rubocop/cop/security/eval.rb#24 def on_send(node); end end -# source://rubocop//lib/rubocop/cop/security/eval.rb#15 +# source://rubocop//lib/rubocop/cop/security/eval.rb#16 RuboCop::Cop::Security::Eval::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/security/eval.rb#16 +# source://rubocop//lib/rubocop/cop/security/eval.rb#17 RuboCop::Cop::Security::Eval::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # source://rubocop//lib/rubocop/cop/security/io_methods.rb#30 @@ -16894,39 +17041,39 @@ RuboCop::Cop::Security::MarshalLoad::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/security/marshal_load.rb#23 RuboCop::Cop::Security::MarshalLoad::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/security/open.rb#37 +# source://rubocop//lib/rubocop/cop/security/open.rb#38 class RuboCop::Cop::Security::Open < ::RuboCop::Cop::Base - # source://rubocop//lib/rubocop/cop/security/open.rb#46 + # source://rubocop//lib/rubocop/cop/security/open.rb#47 def on_send(node); end - # source://rubocop//lib/rubocop/cop/security/open.rb#42 + # source://rubocop//lib/rubocop/cop/security/open.rb#43 def open?(param0 = T.unsafe(nil)); end private - # source://rubocop//lib/rubocop/cop/security/open.rb#75 + # source://rubocop//lib/rubocop/cop/security/open.rb#76 def composite_string?(node); end - # source://rubocop//lib/rubocop/cop/security/open.rb#83 + # source://rubocop//lib/rubocop/cop/security/open.rb#84 def concatenated_string?(node); end - # source://rubocop//lib/rubocop/cop/security/open.rb#79 + # source://rubocop//lib/rubocop/cop/security/open.rb#80 def interpolated_string?(node); end - # source://rubocop//lib/rubocop/cop/security/open.rb#57 + # source://rubocop//lib/rubocop/cop/security/open.rb#58 def safe?(node); end - # source://rubocop//lib/rubocop/cop/security/open.rb#67 + # source://rubocop//lib/rubocop/cop/security/open.rb#68 def safe_argument?(argument); end - # source://rubocop//lib/rubocop/cop/security/open.rb#71 + # source://rubocop//lib/rubocop/cop/security/open.rb#72 def simple_string?(node); end end -# source://rubocop//lib/rubocop/cop/security/open.rb#38 +# source://rubocop//lib/rubocop/cop/security/open.rb#39 RuboCop::Cop::Security::Open::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/security/open.rb#39 +# source://rubocop//lib/rubocop/cop/security/open.rb#40 RuboCop::Cop::Security::Open::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # source://rubocop//lib/rubocop/cop/security/yaml_load.rb#26 @@ -17285,40 +17432,43 @@ class RuboCop::Cop::Style::AccessorGrouping < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#74 def check(send_node); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#122 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#125 def class_send_elements(class_node); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#179 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#182 def group_accessors(node, accessors); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#99 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#102 def groupable_accessor?(node); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#142 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#145 def groupable_sibling_accessor?(node, sibling); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#149 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#152 def groupable_sibling_accessors(send_node); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#134 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#137 def grouped_style?; end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#155 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#158 def message(send_node); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#160 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#163 def preferred_accessors(node); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#94 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#97 def previous_line_comment?(node); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#185 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#203 + def range_with_trailing_argument_comment(node); end + + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#188 def separate_accessors(node); end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#138 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#141 def separated_style?; end - # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#174 + # source://rubocop//lib/rubocop/cop/style/accessor_grouping.rb#177 def skip_for_grouping?(node); end end @@ -17481,189 +17631,189 @@ class RuboCop::Cop::Style::ArgumentsForwarding < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector extend ::RuboCop::Cop::TargetRubyVersion - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#160 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#159 def on_def(node); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#160 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#159 def on_defs(node); end private - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#202 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#201 def add_forward_all_offenses(node, send_classifications, forwardable_args); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#385 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#379 def add_parens_if_missing(node, corrector); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#227 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#230 def add_post_ruby_32_offenses(def_node, send_classifications, forwardable_args); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#309 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#312 def all_forwarding_offenses_correctable?(send_classifications); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#320 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#323 def allow_anonymous_forwarding_in_block?(node); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#377 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#371 def allow_only_rest_arguments?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#365 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#367 def arguments_range(node, first_node); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#277 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#280 def classification_and_forwards(def_node, send_node, referenced_lvars, forwardable_args); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#262 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#265 def classify_send_nodes(def_node, send_nodes, referenced_lvars, forwardable_args); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#564 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#558 def explicit_block_name?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#184 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#183 def extract_forwardable_args(args); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#252 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#225 + def forward_all_first_argument(node); end + + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#255 def non_splat_or_block_pass_lvar_references(body); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#196 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#195 def only_forwards_all?(send_classifications); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#188 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#187 def redundant_forwardable_named_args(restarg, kwrestarg, blockarg); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#296 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#299 def redundant_named_arg(arg, config_name, keyword); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#354 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#357 def register_forward_all_offense(def_or_send, send_or_arguments, rest_or_splat); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#327 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#330 def register_forward_args_offense(def_arguments_or_send, rest_arg_or_splat); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#343 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#346 def register_forward_block_arg_offense(add_parens, def_arguments_or_send, block_arg); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#335 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#338 def register_forward_kwargs_offense(add_parens, def_arguments_or_send, kwrest_arg_or_splat); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#381 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#375 def use_anonymous_forwarding?; end class << self - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#156 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#155 def autocorrect_incompatible_with; end end end -# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#149 -RuboCop::Cop::Style::ArgumentsForwarding::ADDITIONAL_ARG_TYPES = T.let(T.unsafe(nil), Array) - -# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#152 +# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#151 RuboCop::Cop::Style::ArgumentsForwarding::ARGS_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#154 +# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#153 RuboCop::Cop::Style::ArgumentsForwarding::BLOCK_MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#148 RuboCop::Cop::Style::ArgumentsForwarding::FORWARDING_LVAR_TYPES = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#151 +# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#150 RuboCop::Cop::Style::ArgumentsForwarding::FORWARDING_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#153 +# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#152 RuboCop::Cop::Style::ArgumentsForwarding::KWARGS_MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#393 +# source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#387 class RuboCop::Cop::Style::ArgumentsForwarding::SendNodeClassifier extend ::RuboCop::AST::NodePattern::Macros - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#422 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#416 def initialize(def_node, send_node, referenced_lvars, forwardable_args, **config); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#450 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#444 def classification; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#406 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#400 def def_all_anonymous_args?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#400 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#394 def extract_forwarded_kwrest_arg(param0 = T.unsafe(nil), param1); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#444 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#438 def forwarded_block_arg; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#403 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#397 def forwarded_block_arg?(param0 = T.unsafe(nil), param1); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#438 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#432 def forwarded_kwrest_arg; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#432 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#426 def forwarded_rest_arg; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#397 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#391 def forwarded_rest_arg?(param0 = T.unsafe(nil), param1); end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#415 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#409 def send_all_anonymous_args?(param0 = T.unsafe(nil)); end private - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#535 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#529 def additional_kwargs?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#531 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#525 def additional_kwargs_or_forwarded_kwargs?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#545 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#539 def allow_offense_for_no_block?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#516 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#510 def any_arg_referenced?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#500 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#494 def arguments; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#465 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#459 def can_forward_all?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#539 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#533 def forward_additional_kwargs?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#496 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#490 def forwarded_rest_and_kwrest_args; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#558 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#552 def missing_rest_arg_or_kwrest_arg?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#549 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#543 def no_additional_args?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#524 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#518 def no_post_splat_args?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#492 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#486 def offensive_block_forwarding?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#512 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#506 def referenced_block_arg?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#508 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#502 def referenced_kwrest_arg?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#504 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#498 def referenced_rest_arg?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#477 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#471 def ruby_30_or_lower_optarg?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#481 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#475 def ruby_32_only_anonymous_forwarding?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#488 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#482 def ruby_32_or_higher_missing_rest_or_kwest?; end - # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#520 + # source://rubocop//lib/rubocop/cop/style/arguments_forwarding.rb#514 def target_ruby_version; end end @@ -17721,50 +17871,91 @@ RuboCop::Cop::Style::ArrayFirstLast::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/style/array_first_last.rb#32 RuboCop::Cop::Style::ArrayFirstLast::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#60 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#82 class RuboCop::Cop::Style::ArrayIntersect < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector extend ::RuboCop::Cop::TargetRubyVersion - # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#70 + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#119 + def any_none_block_intersection(param0 = T.unsafe(nil)); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#94 def bad_intersection_check?(param0 = T.unsafe(nil), param1); end - # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#86 + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#105 + def intersection_size_check?(param0 = T.unsafe(nil)); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#154 + def on_block(node); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#142 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#86 + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#154 + def on_itblock(node); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#154 + def on_numblock(node); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#142 def on_send(node); end private - # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#103 + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#168 def bad_intersection?(node); end - # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#117 - def message(receiver, argument, method_name, dot, existing); end + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#173 + def bad_intersection_predicates; end + + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#185 + def register_offense(node, replacement); end - # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#113 + # source://rubocop//lib/rubocop/cop/style/array_intersect.rb#181 def straight?(method_name); end end -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#67 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#89 RuboCop::Cop::Style::ArrayIntersect::ACTIVE_SUPPORT_PREDICATES = T.let(T.unsafe(nil), Set) -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#80 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#91 +RuboCop::Cop::Style::ArrayIntersect::ARRAY_SIZE_METHODS = T.let(T.unsafe(nil), Set) + +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#137 RuboCop::Cop::Style::ArrayIntersect::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#83 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#139 RuboCop::Cop::Style::ArrayIntersect::NEGATED_METHODS = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#66 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#88 RuboCop::Cop::Style::ArrayIntersect::PREDICATES = T.let(T.unsafe(nil), Set) -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#84 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#140 RuboCop::Cop::Style::ArrayIntersect::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#82 +# source://rubocop//lib/rubocop/cop/style/array_intersect.rb#138 RuboCop::Cop::Style::ArrayIntersect::STRAIGHT_METHODS = T.let(T.unsafe(nil), Array) +# source://rubocop//lib/rubocop/cop/style/array_intersect_with_single_element.rb#17 +class RuboCop::Cop::Style::ArrayIntersectWithSingleElement < ::RuboCop::Cop::Base + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop//lib/rubocop/cop/style/array_intersect_with_single_element.rb#29 + def on_csend(node); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect_with_single_element.rb#29 + def on_send(node); end + + # source://rubocop//lib/rubocop/cop/style/array_intersect_with_single_element.rb#25 + def single_element(param0 = T.unsafe(nil)); end +end + +# source://rubocop//lib/rubocop/cop/style/array_intersect_with_single_element.rb#20 +RuboCop::Cop::Style::ArrayIntersectWithSingleElement::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop//lib/rubocop/cop/style/array_intersect_with_single_element.rb#22 +RuboCop::Cop::Style::ArrayIntersectWithSingleElement::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + # source://rubocop//lib/rubocop/cop/style/array_join.rb#20 class RuboCop::Cop::Style::ArrayJoin < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector @@ -18010,12 +18201,12 @@ class RuboCop::Cop::Style::BitwisePredicate < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/bitwise_predicate.rb#60 def nobits?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/bitwise_predicate.rb#73 + # source://rubocop//lib/rubocop/cop/style/bitwise_predicate.rb#74 def on_send(node); end private - # source://rubocop//lib/rubocop/cop/style/bitwise_predicate.rb#88 + # source://rubocop//lib/rubocop/cop/style/bitwise_predicate.rb#95 def preferred_method(node); end end @@ -18674,6 +18865,38 @@ end # source://rubocop//lib/rubocop/cop/style/collection_methods.rb#47 RuboCop::Cop::Style::CollectionMethods::MSG = T.let(T.unsafe(nil), String) +# source://rubocop//lib/rubocop/cop/style/collection_querying.rb#96 +class RuboCop::Cop::Style::CollectionQuerying < ::RuboCop::Cop::Base + include ::RuboCop::Cop::RangeHelp + extend ::RuboCop::Cop::AutoCorrector + + # source://rubocop//lib/rubocop/cop/style/collection_querying.rb#115 + def count_predicate(param0 = T.unsafe(nil)); end + + # source://rubocop//lib/rubocop/cop/style/collection_querying.rb#132 + def on_send(node); end + + private + + # source://rubocop//lib/rubocop/cop/style/collection_querying.rb#159 + def removal_range(node); end + + # source://rubocop//lib/rubocop/cop/style/collection_querying.rb#149 + def replacement_method(node); end + + # source://rubocop//lib/rubocop/cop/style/collection_querying.rb#153 + def replacement_supported?(method_name); end +end + +# source://rubocop//lib/rubocop/cop/style/collection_querying.rb#100 +RuboCop::Cop::Style::CollectionQuerying::MSG = T.let(T.unsafe(nil), String) + +# source://rubocop//lib/rubocop/cop/style/collection_querying.rb#104 +RuboCop::Cop::Style::CollectionQuerying::REPLACEMENTS = T.let(T.unsafe(nil), Hash) + +# source://rubocop//lib/rubocop/cop/style/collection_querying.rb#102 +RuboCop::Cop::Style::CollectionQuerying::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) + # source://rubocop//lib/rubocop/cop/style/colon_method_call.rb#20 class RuboCop::Cop::Style::ColonMethodCall < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector @@ -20396,80 +20619,89 @@ RuboCop::Cop::Style::ExplicitBlockArgument::MSG = T.let(T.unsafe(nil), String) class RuboCop::Cop::Style::ExponentialNotation < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle - # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#68 + # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#69 def on_float(node); end private - # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#79 + # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#80 def engineering?(node); end - # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#90 - def integral(node); end + # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#91 + def integral?(node); end - # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#110 + # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#111 def message(_node); end - # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#95 + # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#96 def offense?(node); end - # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#74 + # source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#75 def scientific?(node); end end -# source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#62 +# source://rubocop//lib/rubocop/cop/style/exponential_notation.rb#63 RuboCop::Cop::Style::ExponentialNotation::MESSAGES = T.let(T.unsafe(nil), Hash) -# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#25 +# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#38 class RuboCop::Cop::Style::FetchEnvVar < ::RuboCop::Cop::Base extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#32 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#46 def env_with_bracket?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#36 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#50 def on_send(node); end private - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#106 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#128 def allowable_use?(node); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#49 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#71 def allowed_var?(node); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#114 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#136 def assigned?(node); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#90 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#63 + def default_to_nil?; end + + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#112 def message_chained_with_dot?(node); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#127 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#149 def new_code(name_node); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#85 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#67 + def offense_message; end + + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#107 def offensive?(node); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#121 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#143 def or_lhs?(node); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#81 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#103 def partial_matched?(node, condition); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#54 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#76 def used_as_flag?(node); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#61 - def used_if_condition_in_body(node); end + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#83 + def used_if_condition_in_body?(node); end - # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#70 + # source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#92 def used_in_condition?(node, condition); end end -# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#28 -RuboCop::Cop::Style::FetchEnvVar::MSG = T.let(T.unsafe(nil), String) +# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#42 +RuboCop::Cop::Style::FetchEnvVar::MSG_WITHOUT_NIL = T.let(T.unsafe(nil), String) + +# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#41 +RuboCop::Cop::Style::FetchEnvVar::MSG_WITH_NIL = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#29 +# source://rubocop//lib/rubocop/cop/style/fetch_env_var.rb#43 RuboCop::Cop::Style::FetchEnvVar::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) # source://rubocop//lib/rubocop/cop/style/file_empty.rb#27 @@ -21078,28 +21310,28 @@ class RuboCop::Cop::Style::HashConversion < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#137 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#145 def allowed_splat_argument?; end - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#130 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#138 def args_to_hash(args); end - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#117 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#123 def multi_argument(node); end - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#94 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#95 def register_offense_for_hash(node, hash_argument); end - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#103 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#104 def register_offense_for_zip_method(node, zip_method); end - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#113 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#114 def requires_parens?(node); end - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#71 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#72 def single_argument(node); end - # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#88 + # source://rubocop//lib/rubocop/cop/style/hash_conversion.rb#89 def use_zip_method_without_argument?(first_argument); end end @@ -21552,13 +21784,13 @@ class RuboCop::Cop::Style::IfUnlessModifier < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#189 def allowed_patterns; end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#249 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#258 def another_statement_on_same_line?(node); end # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#150 def autocorrect(corrector, node); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#303 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#312 def comment_on_node_line(node); end # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#124 @@ -21570,43 +21802,43 @@ class RuboCop::Cop::Style::IfUnlessModifier < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#112 def endless_method?(body); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#290 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#299 def extract_heredoc_from(last_argument); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#233 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#242 def line_length_enabled_at_line?(line); end # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#142 def message(node); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#237 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#246 def named_capture_in_condition?(node); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#241 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#250 def non_eligible_node?(node); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#245 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#254 def non_simple_if_unless?(node); end # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#134 def pattern_matching_nodes(condition); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#307 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#316 def remove_comment(corrector, _node, comment); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#297 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#306 def remove_heredoc(corrector, heredoc); end # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#159 def replacement_for_modifier_form(corrector, node); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#283 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#292 def to_modifier_form_with_move_comment(node, indentation, comment); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#263 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#272 def to_normal_form(node, indentation); end - # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#271 + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#280 def to_normal_form_with_heredoc(node, indentation, heredoc); end # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#183 @@ -21615,6 +21847,9 @@ class RuboCop::Cop::Style::IfUnlessModifier < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#178 def too_long_due_to_modifier?(node); end + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#233 + def too_long_line_based_on_allow_qualified_name?(line); end + # source://rubocop//lib/rubocop/cop/style/if_unless_modifier.rb#224 def too_long_line_based_on_allow_uri?(line); end @@ -22023,13 +22258,34 @@ RuboCop::Cop::Style::IpAddresses::IPV6_MAX_SIZE = T.let(T.unsafe(nil), Integer) # source://rubocop//lib/rubocop/cop/style/ip_addresses.rb#25 RuboCop::Cop::Style::IpAddresses::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/it_assignment.rb#24 +# source://rubocop//lib/rubocop/cop/style/it_assignment.rb#75 class RuboCop::Cop::Style::ItAssignment < ::RuboCop::Cop::Base - # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#27 + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_arg(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_blockarg(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_kwarg(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_kwoptarg(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_kwrestarg(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 def on_lvasgn(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_optarg(node); end + + # source://rubocop//lib/rubocop/cop/style/it_assignment.rb#78 + def on_restarg(node); end end -# source://rubocop//lib/rubocop/cop/style/it_assignment.rb#25 +# source://rubocop//lib/rubocop/cop/style/it_assignment.rb#76 RuboCop::Cop::Style::ItAssignment::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/style/it_block_parameter.rb#53 @@ -22328,10 +22584,10 @@ class RuboCop::Cop::Style::MagicCommentFormat::CommentRange # source://rubocop//lib/rubocop/cop/style/magic_comment_format.rb#125 def directives; end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def loc(*_arg0, **_arg1, &_arg2); end - # source://rubocop-ast/1.45.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 + # source://rubocop-ast/1.47.1/lib/rubocop/ast/utilities/simple_forwardable.rb#19 def text(*_arg0, **_arg1, &_arg2); end # source://rubocop//lib/rubocop/cop/style/magic_comment_format.rb#141 @@ -22498,7 +22754,7 @@ class RuboCop::Cop::Style::MapToHash < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/map_to_hash.rb#73 + # source://rubocop//lib/rubocop/cop/style/map_to_hash.rb#71 def autocorrect(corrector, to_h, map); end class << self @@ -22529,7 +22785,7 @@ class RuboCop::Cop::Style::MapToSet < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/map_to_set.rb#56 + # source://rubocop//lib/rubocop/cop/style/map_to_set.rb#54 def autocorrect(corrector, to_set, map); end end @@ -22539,7 +22795,7 @@ RuboCop::Cop::Style::MapToSet::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/style/map_to_set.rb#31 RuboCop::Cop::Style::MapToSet::RESTRICT_ON_SEND = T.let(T.unsafe(nil), Array) -# source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#204 +# source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#220 class RuboCop::Cop::Style::MethodCallWithArgsParentheses < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle include ::RuboCop::Cop::AllowedMethods @@ -22549,28 +22805,28 @@ class RuboCop::Cop::Style::MethodCallWithArgsParentheses < ::RuboCop::Cop::Base include ::RuboCop::Cop::Style::MethodCallWithArgsParentheses::OmitParentheses extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#219 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#235 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#219 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#235 def on_send(node); end - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#219 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#235 def on_yield(node); end private - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#227 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#243 def args_begin(node); end - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#235 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#251 def args_end(node); end - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#239 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#255 def args_parenthesized?(node); end class << self - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#215 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses.rb#231 def autocorrect_incompatible_with; end end end @@ -22599,10 +22855,10 @@ module RuboCop::Cop::Style::MethodCallWithArgsParentheses::OmitParentheses # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#180 def ambiguous_range_argument?(node); end - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#232 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#230 def assigned_before?(node, target); end - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#240 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#238 def assignment_in_condition?(node); end # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#34 @@ -22635,7 +22891,7 @@ module RuboCop::Cop::Style::MethodCallWithArgsParentheses::OmitParentheses # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#151 def call_with_braced_block?(node); end - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#250 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#248 def forwards_anonymous_rest_arguments?(node); end # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#216 @@ -22647,7 +22903,7 @@ module RuboCop::Cop::Style::MethodCallWithArgsParentheses::OmitParentheses # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#50 def inside_endless_method_def?(node); end - # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#236 + # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#234 def inside_string_interpolation?(node); end # source://rubocop//lib/rubocop/cop/style/method_call_with_args_parentheses/omit_parentheses.rb#64 @@ -23335,7 +23591,7 @@ class RuboCop::Cop::Style::MutableConstant < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle extend ::RuboCop::Cop::AutoCorrector - # source://rubocop-sorbet/0.10.4/lib/rubocop/cop/sorbet/mutable_constant_sorbet_aware_behaviour.rb#18 + # source://rubocop-sorbet/0.11.0/lib/rubocop/cop/sorbet/mutable_constant_sorbet_aware_behaviour.rb#18 def on_assignment(value); end # source://rubocop//lib/rubocop/cop/style/mutable_constant.rb#127 @@ -23350,7 +23606,7 @@ class RuboCop::Cop::Style::MutableConstant < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/mutable_constant.rb#216 def splat_value(param0 = T.unsafe(nil)); end - # source://rubocop-sorbet/0.10.4/lib/rubocop/cop/sorbet/mutable_constant_sorbet_aware_behaviour.rb#12 + # source://rubocop-sorbet/0.11.0/lib/rubocop/cop/sorbet/mutable_constant_sorbet_aware_behaviour.rb#12 def t_let(param0 = T.unsafe(nil)); end private @@ -23759,18 +24015,18 @@ class RuboCop::Cop::Style::NilComparison < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#41 def nil_comparison?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#46 + # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#47 def on_send(node); end private - # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#67 + # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#69 def message(_node); end - # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#79 + # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#81 def prefer_comparison?; end - # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#71 + # source://rubocop//lib/rubocop/cop/style/nil_comparison.rb#73 def style_check?(node, &block); end end @@ -24351,147 +24607,146 @@ end # source://rubocop//lib/rubocop/cop/style/or_assignment.rb#32 RuboCop::Cop::Style::OrAssignment::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#25 +# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#23 class RuboCop::Cop::Style::ParallelAssignment < ::RuboCop::Cop::Base include ::RuboCop::Cop::RescueNode extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#115 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#110 def implicit_self_getter?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#31 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#29 def on_masgn(node); end private - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#108 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#103 def add_self_to_getters(right_elements); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#61 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#62 def allowed_lhs?(elements); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#55 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#56 def allowed_masign?(lhs_elements, rhs_elements); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#67 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#68 def allowed_rhs?(node); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#75 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#76 def assignment_corrector(node, rhs, order); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#48 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#49 def autocorrect(corrector, node, rhs); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#91 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#92 def find_valid_order(left_elements, right_elements); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#174 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#186 def modifier_statement?(node); end end -# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#119 +# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#114 class RuboCop::Cop::Style::ParallelAssignment::AssignmentSorter - include ::TSort extend ::RuboCop::AST::NodePattern::Macros - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#132 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#126 def initialize(assignments); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#161 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#173 def accesses?(rhs, lhs); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#154 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#152 + def dependencies_for_assignment(assignment); end + + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#166 def dependency?(lhs, rhs); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#130 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#124 def matching_calls(param0, param1, param2); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#140 - def tsort_each_child(assignment); end - - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#136 - def tsort_each_node(*_arg0, **_arg1, &_arg2); end + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#130 + def tsort; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#127 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#121 def uses_var?(param0, param1); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#124 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#118 def var_name(param0 = T.unsafe(nil)); end end -# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#181 +# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#193 class RuboCop::Cop::Style::ParallelAssignment::GenericCorrector include ::RuboCop::Cop::Alignment - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#186 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#198 def initialize(node, rhs, modifier, config, new_elements); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#184 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#196 def config; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#194 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#206 def correction; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#198 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#210 def correction_range; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#184 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#196 def node; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#184 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#196 def rescue_result; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#184 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#196 def rhs; end protected - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#204 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#216 def assignment; end private - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#225 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#237 def cop_config; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#221 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#233 def extract_sources(node); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#210 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#222 def source(node, loc); end end -# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#29 +# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#27 RuboCop::Cop::Style::ParallelAssignment::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#267 +# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#279 class RuboCop::Cop::Style::ParallelAssignment::ModifierCorrector < ::RuboCop::Cop::Style::ParallelAssignment::GenericCorrector - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#268 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#280 def correction; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#277 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#289 def correction_range; end private - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#283 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#295 def modifier_range(node); end end -# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#232 +# source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#244 class RuboCop::Cop::Style::ParallelAssignment::RescueCorrector < ::RuboCop::Cop::Style::ParallelAssignment::GenericCorrector - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#233 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#245 def correction; end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#244 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#256 def correction_range; end private - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#255 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#267 def begin_correction(rescue_result); end - # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#250 + # source://rubocop//lib/rubocop/cop/style/parallel_assignment.rb#262 def def_correction(rescue_result); end end @@ -24979,9 +25234,15 @@ class RuboCop::Cop::Style::RedundantBegin < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#76 def offensive_kwbegins(param0); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#88 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#111 def on_block(node); end + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#94 + def on_case(node); end + + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#94 + def on_case_match(node); end + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#80 def on_def(node); end @@ -24989,53 +25250,65 @@ class RuboCop::Cop::Style::RedundantBegin < ::RuboCop::Cop::Base def on_defs(node); end # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#88 + def on_if(node); end + + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#111 def on_itblock(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#100 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#123 def on_kwbegin(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#88 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#111 def on_numblock(node); end + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#99 + def on_until(node); end + + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#99 + def on_while(node); end + private - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#108 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#131 def allowable_kwbegin?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#182 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#205 def begin_block_has_multiline_statements?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#174 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#197 def condition_range(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#186 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#211 def contain_rescue_or_ensure?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#167 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#190 def correct_modifier_form_after_multiline_begin_block(corrector, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#178 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#201 def empty_begin?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#115 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#228 + def inspect_branches(node); end + + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#138 def register_offense(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#144 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#167 def remove_begin(corrector, offense_range, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#132 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#155 def replace_begin_with_statement(corrector, offense_range, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#154 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#177 def restore_removed_comments(corrector, offense_range, node, first_child); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#161 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#184 def use_modifier_form_after_multiline_begin_block?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#199 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#224 def valid_begin_assignment?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#192 + # source://rubocop//lib/rubocop/cop/style/redundant_begin.rb#217 def valid_context_using_only_begin?(node); end class << self @@ -25392,7 +25665,7 @@ class RuboCop::Cop::Style::RedundantFetchBlock < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#55 def on_block(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#89 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#81 def rails_cache?(param0 = T.unsafe(nil)); end # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#48 @@ -25400,28 +25673,22 @@ class RuboCop::Cop::Style::RedundantFetchBlock < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#74 - def basic_literal?(node); end - - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#104 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#96 def build_bad_method(send, body); end - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#97 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#89 def build_good_method(send, body); end - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#111 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#103 def check_for_constant?; end - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#115 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#107 def check_for_string?; end - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#78 - def const_type?(node); end - - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#93 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#85 def fetch_range(send, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#82 + # source://rubocop//lib/rubocop/cop/style/redundant_fetch_block.rb#74 def should_not_check?(send, body); end end @@ -25512,53 +25779,56 @@ class RuboCop::Cop::Style::RedundantFormat < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#137 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#138 def all_fields_literal?(string, arguments); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#224 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#239 def argument_value(argument); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#220 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#235 def argument_values(arguments); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#256 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#271 def complex_value(complex_node); end # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#109 def detect_unnecessary_fields(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#242 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#257 def dsym_value(dsym_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#155 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#168 def find_argument(sequence, arguments, hash); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#196 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#211 def float?(argument); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#246 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#261 def hash_value(hash_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#192 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#207 def integer?(argument); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#168 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#183 def matching_argument?(sequence, argument); end # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#105 def message(node, prefer); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#186 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#201 def numeric?(argument); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#202 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#217 def quote(string, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#252 + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#267 def rational_value(rational_node); end # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#121 def register_all_fields_literal(node, string, arguments); end + + # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#160 + def unknown_variable_width?(sequence, arguments); end end # source://rubocop//lib/rubocop/cop/style/redundant_format.rb#60 @@ -25804,28 +26074,25 @@ class RuboCop::Cop::Style::RedundantParentheses < ::RuboCop::Cop::Base include ::RuboCop::Cop::Parentheses extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#34 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#31 def allowed_pin_operator?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#311 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#332 def first_send_argument?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#316 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#337 def first_super_argument?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#321 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#342 def first_yield_argument?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#192 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#190 def interpolation?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#28 - def method_node_and_args(param0 = T.unsafe(nil)); end - - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#36 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#33 def on_begin(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#31 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#28 def rescue?(param0 = T.unsafe(nil)); end # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#23 @@ -25833,103 +26100,112 @@ class RuboCop::Cop::Style::RedundantParentheses < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#209 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#216 def allow_in_multiline_conditions?; end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#71 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#68 def allowed_ancestor?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#64 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#61 def allowed_expression?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#76 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#73 def allowed_multiple_expression?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#85 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#82 def allowed_ternary?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#194 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#192 def argument_of_parenthesized_method_call?(begin_node, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#325 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#346 def call_chain_starts_with_int?(begin_node, send_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#141 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#220 + def call_node?(node); end + + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#138 def check(begin_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#213 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#224 def check_send(begin_node, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#223 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#236 def check_unary(begin_node, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#247 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#259 def disallowed_literal?(begin_node, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#257 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#269 def disallowed_one_line_pattern_matching?(begin_node, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#331 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#352 def do_end_block_in_method_chain?(begin_node, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#112 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#109 def empty_parentheses?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#156 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#153 def find_offense_message(begin_node, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#117 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#114 def first_arg_begins_with_hash_literal?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#300 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#321 def first_argument?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#57 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#54 def ignore_syntax?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#126 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#123 def in_pattern_matching_in_method_argument?(begin_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#243 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#255 def keyword_ancestor?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#274 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#289 def keyword_with_redundant_parentheses?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#98 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#95 def like_method_argument_parentheses?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#203 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#210 def method_call_parentheses_required?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#287 - def method_call_with_redundant_parentheses?(node); end + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#302 + def method_call_with_redundant_parentheses?(begin_node, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#133 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#130 def method_chain_begins_with_hash_literal(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#105 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#102 def multiline_control_flow_statements?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#233 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#245 def offense(node, msg); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#296 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#201 + def oneline_rescue_parentheses_required?(begin_node, node); end + + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#317 def only_begin_arg?(args); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#48 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#45 def parens_allowed?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#263 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#278 def raised_to_power_negative_numeric?(begin_node, node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#239 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#310 + def singular_parenthesized_parent?(begin_node); end + + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#251 def suspect_unary?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#91 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#88 def ternary_parentheses_required?; end - # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#44 + # source://rubocop//lib/rubocop/cop/style/redundant_parentheses.rb#41 def variable?(node); end end @@ -26016,10 +26292,10 @@ class RuboCop::Cop::Style::RedundantRegexpArgument < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/redundant_regexp_argument.rb#65 def determinist_regexp?(regexp_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_argument.rb#69 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_argument.rb#70 def preferred_argument(regexp_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_argument.rb#88 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_argument.rb#92 def replacement(regexp_node); end end @@ -26100,25 +26376,28 @@ class RuboCop::Cop::Style::RedundantRegexpEscape < ::RuboCop::Cop::Base include ::RuboCop::Cop::RangeHelp extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#45 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#46 def on_regexp(node); end private - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#60 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#61 def allowed_escape?(node, char, index, within_character_class); end - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#76 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#78 def char_class_begins_or_ends_with_escaped_hyphen?(node, index); end - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#92 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#94 def delimiter?(node, char); end - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#98 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#106 def each_escape(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#110 + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#118 def escape_range_at_index(node, index); end + + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#100 + def requires_escape_to_avoid_interpolation?(char_before_escape, escaped_char); end end # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#41 @@ -26130,6 +26409,9 @@ RuboCop::Cop::Style::RedundantRegexpEscape::ALLOWED_OUTSIDE_CHAR_CLASS_METACHAR_ # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#42 RuboCop::Cop::Style::RedundantRegexpEscape::ALLOWED_WITHIN_CHAR_CLASS_METACHAR_ESCAPES = T.let(T.unsafe(nil), Array) +# source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#44 +RuboCop::Cop::Style::RedundantRegexpEscape::INTERPOLATION_SIGILS = T.let(T.unsafe(nil), Array) + # source://rubocop//lib/rubocop/cop/style/redundant_regexp_escape.rb#39 RuboCop::Cop::Style::RedundantRegexpEscape::MSG_REDUNDANT_ESCAPE = T.let(T.unsafe(nil), String) @@ -26217,81 +26499,81 @@ class RuboCop::Cop::Style::RedundantSelf < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#68 def on_and_asgn(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#84 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#87 def on_args(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#116 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#119 def on_block(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#88 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#91 def on_blockarg(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#79 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#82 def on_def(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#79 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#82 def on_defs(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#123 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#126 def on_if(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#100 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#103 def on_in_pattern(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#116 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#119 def on_itblock(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#96 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#99 def on_lvasgn(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#92 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#95 def on_masgn(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#116 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#119 def on_numblock(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#73 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#76 def on_op_asgn(node); end # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#68 def on_or_asgn(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#104 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#107 def on_send(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#123 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#126 def on_until(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#123 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#126 def on_while(node); end private - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#190 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#193 def add_lhs_to_local_variables_scopes(rhs, lhs); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#198 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#201 def add_masgn_lhs_variables(rhs, lhs); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#204 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#207 def add_match_var_scopes(in_pattern_node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#139 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#142 def add_scope(node, local_variables = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#184 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#187 def allow_self(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#145 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#148 def allowed_send_node?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#160 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#163 def it_method_in_block?(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#176 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#179 def on_argument(node); end - # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#168 + # source://rubocop//lib/rubocop/cop/style/redundant_self.rb#171 def regular_method_call?(node); end class << self @@ -26824,10 +27106,10 @@ class RuboCop::Cop::Style::SafeNavigation < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#137 def not_nil_check?(param0 = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#162 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#165 def on_and(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#145 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#146 def on_if(node); end # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#143 @@ -26838,85 +27120,88 @@ class RuboCop::Cop::Style::SafeNavigation < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#389 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#408 def add_safe_nav_to_all_methods_in_chain(corrector, start_method, method_chain); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#293 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#304 def allowed_if_condition?(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#232 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#235 def and_parts(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#381 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#400 def begin_range(node, method_call); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#340 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#359 def chain_length(method_chain, method); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#214 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#217 def collect_and_clauses(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#274 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#285 def comments(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#226 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#229 def concat_nodes(nodes, and_node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#261 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#264 def dotless_operator_call?(method_call); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#385 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#272 + def dotless_operator_method?(method_call); end + + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#404 def end_range(node, method_call); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#312 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#323 def extract_common_parts(method_chain, checked_variable); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#253 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#256 def extract_if_body(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#297 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#308 def extract_parts_from_if(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#320 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#331 def find_matching_receiver_invocation(method_chain, checked_variable); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#208 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#211 def find_method_chain(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#267 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#278 def handle_comments(corrector, node, method_call); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#334 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#345 def matching_call_nodes?(left, right); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#330 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#341 def matching_nodes?(left, right); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#402 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#421 def max_chain_length; end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#377 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#396 def method_called?(send_node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#369 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#388 def negated?(send_node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#239 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#242 def offending_node?(node, lhs_receiver, rhs, rhs_receiver); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#280 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#291 def relevant_comment_ranges(node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#191 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#194 def report_offense(node, rhs, rhs_receiver, *removal_ranges, offense_range: T.unsafe(nil)); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#360 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#379 def unsafe_method?(node, send_node); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#348 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#367 def unsafe_method_used?(node, method_chain, method); end - # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#249 + # source://rubocop//lib/rubocop/cop/style/safe_navigation.rb#252 def use_var_only_in_unless_modifier?(node, variable); end end @@ -27394,7 +27679,7 @@ class RuboCop::Cop::Style::SingleLineMethods < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/single_line_methods.rb#74 def correct_to_multiline(corrector, node); end - # source://rubocop//lib/rubocop/cop/style/single_line_methods.rb#136 + # source://rubocop//lib/rubocop/cop/style/single_line_methods.rb#139 def disallow_endless_method_style?; end # source://rubocop//lib/rubocop/cop/style/single_line_methods.rb#104 @@ -27479,37 +27764,40 @@ class RuboCop::Cop::Style::SoleNestedConditional < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#187 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#190 def add_parentheses?(node); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#168 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#169 def add_parentheses_if_needed(condition); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#201 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#231 def allow_modifier?; end # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#81 def assigned_variables(condition); end + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#198 + def assignment_in_and?(node); end + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#98 def autocorrect(corrector, node, if_branch); end # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#106 def autocorrect_outer_condition_basic(corrector, node, if_branch); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#142 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#143 def autocorrect_outer_condition_modify_form(corrector, node, if_branch); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#160 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#161 def chainable_condition(node); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#131 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#132 def correct_for_basic_condition_style(corrector, node, if_branch); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#151 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#152 def correct_for_comment(corrector, node, if_branch); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#122 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#123 def correct_for_guard_condition_style(corrector, node, if_branch); end # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#117 @@ -27518,10 +27806,16 @@ class RuboCop::Cop::Style::SoleNestedConditional < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#89 def offending_branch?(node, branch); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#182 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#185 def parenthesize_method?(node); end - # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#194 + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#211 + def parenthesized_and(node); end + + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#221 + def parenthesized_and_clause(node); end + + # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#204 def parenthesized_method_arguments(node); end # source://rubocop//lib/rubocop/cop/style/sole_nested_conditional.rb#74 @@ -27751,8 +28045,8 @@ class RuboCop::Cop::Style::StringConcatenation < ::RuboCop::Cop::Base private - # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#158 - def adjust_str(node); end + # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#149 + def adjust_str(part); end # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#114 def collect_parts(node, parts = T.unsafe(nil)); end @@ -27763,7 +28057,7 @@ class RuboCop::Cop::Style::StringConcatenation < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#106 def find_topmost_plus_node(node); end - # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#162 + # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#166 def handle_quotes(parts); end # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#133 @@ -27772,7 +28066,7 @@ class RuboCop::Cop::Style::StringConcatenation < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#96 def line_end_concatenation?(node); end - # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#172 + # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#176 def mode; end # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#125 @@ -27784,7 +28078,7 @@ class RuboCop::Cop::Style::StringConcatenation < ::RuboCop::Cop::Base # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#143 def replacement(parts); end - # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#168 + # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#172 def single_quoted?(str_node); end # source://rubocop//lib/rubocop/cop/style/string_concatenation.rb#129 @@ -28415,21 +28709,21 @@ end # source://rubocop//lib/rubocop/cop/style/trailing_body_on_module.rb#23 RuboCop::Cop::Style::TrailingBodyOnModule::MSG = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#96 +# source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#141 class RuboCop::Cop::Style::TrailingCommaInArguments < ::RuboCop::Cop::Base include ::RuboCop::Cop::ConfigurableEnforcedStyle include ::RuboCop::Cop::RangeHelp include ::RuboCop::Cop::TrailingComma extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#104 + # source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#149 def on_csend(node); end - # source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#104 + # source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#149 def on_send(node); end class << self - # source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#100 + # source://rubocop//lib/rubocop/cop/style/trailing_comma_in_arguments.rb#145 def autocorrect_incompatible_with; end end end @@ -28642,20 +28936,19 @@ RuboCop::Cop::Style::TrivialAccessors::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/style/unless_else.rb#22 class RuboCop::Cop::Style::UnlessElse < ::RuboCop::Cop::Base - include ::RuboCop::Cop::RangeHelp extend ::RuboCop::Cop::AutoCorrector - # source://rubocop//lib/rubocop/cop/style/unless_else.rb#28 + # source://rubocop//lib/rubocop/cop/style/unless_else.rb#27 def on_if(node); end - # source://rubocop//lib/rubocop/cop/style/unless_else.rb#45 - def range_between_condition_and_else(node, condition); end + # source://rubocop//lib/rubocop/cop/style/unless_else.rb#44 + def range_between_condition_and_else(node); end - # source://rubocop//lib/rubocop/cop/style/unless_else.rb#49 + # source://rubocop//lib/rubocop/cop/style/unless_else.rb#50 def range_between_else_and_end(node); end end -# source://rubocop//lib/rubocop/cop/style/unless_else.rb#26 +# source://rubocop//lib/rubocop/cop/style/unless_else.rb#25 RuboCop::Cop::Style::UnlessElse::MSG = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/cop/style/unless_logical_operators.rb#50 @@ -29531,27 +29824,27 @@ module RuboCop::Cop::Utils; end # source://rubocop//lib/rubocop/cop/utils/format_string.rb#7 class RuboCop::Cop::Utils::FormatString - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#94 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#104 def initialize(string); end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#98 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#108 def format_sequences; end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#110 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#120 def max_digit_dollar_num; end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#106 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#116 def named_interpolation?; end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#102 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#112 def valid?; end private - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#122 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#132 def mixed_formats?; end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#116 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#126 def parse; end end @@ -29572,7 +29865,7 @@ class RuboCop::Cop::Utils::FormatString::FormatSequence # source://rubocop//lib/rubocop/cop/utils/format_string.rb#48 def arg_number; end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#75 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#85 def arity; end # source://rubocop//lib/rubocop/cop/utils/format_string.rb#48 @@ -29584,7 +29877,7 @@ class RuboCop::Cop::Utils::FormatString::FormatSequence # source://rubocop//lib/rubocop/cop/utils/format_string.rb#48 def flags; end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#79 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#89 def max_digit_dollar_num; end # source://rubocop//lib/rubocop/cop/utils/format_string.rb#48 @@ -29596,7 +29889,7 @@ class RuboCop::Cop::Utils::FormatString::FormatSequence # source://rubocop//lib/rubocop/cop/utils/format_string.rb#48 def precision; end - # source://rubocop//lib/rubocop/cop/utils/format_string.rb#83 + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#93 def style; end # source://rubocop//lib/rubocop/cop/utils/format_string.rb#70 @@ -29605,6 +29898,12 @@ class RuboCop::Cop::Utils::FormatString::FormatSequence # source://rubocop//lib/rubocop/cop/utils/format_string.rb#48 def type; end + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#74 + def variable_width?; end + + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#78 + def variable_width_argument_number; end + # source://rubocop//lib/rubocop/cop/utils/format_string.rb#48 def width; end end @@ -29638,105 +29937,108 @@ RuboCop::Cop::Utils::FormatString::WIDTH = T.let(T.unsafe(nil), Regexp) # source://rubocop//lib/rubocop/cop/variable_force.rb#27 class RuboCop::Cop::VariableForce < ::RuboCop::Cop::Force - # source://rubocop//lib/rubocop/cop/variable_force.rb#79 + # source://rubocop//lib/rubocop/cop/variable_force.rb#81 def investigate(processed_source); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#88 + # source://rubocop//lib/rubocop/cop/variable_force.rb#90 def process_node(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#74 + # source://rubocop//lib/rubocop/cop/variable_force.rb#76 def variable_table; end private - # source://rubocop//lib/rubocop/cop/variable_force.rb#374 + # source://rubocop//lib/rubocop/cop/variable_force.rb#391 def after_declaring_variable(arg); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#374 + # source://rubocop//lib/rubocop/cop/variable_force.rb#391 def after_entering_scope(arg); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#374 + # source://rubocop//lib/rubocop/cop/variable_force.rb#391 def after_leaving_scope(arg); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#374 + # source://rubocop//lib/rubocop/cop/variable_force.rb#391 def before_declaring_variable(arg); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#374 + # source://rubocop//lib/rubocop/cop/variable_force.rb#391 def before_entering_scope(arg); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#374 + # source://rubocop//lib/rubocop/cop/variable_force.rb#391 def before_leaving_scope(arg); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#346 + # source://rubocop//lib/rubocop/cop/variable_force.rb#352 def descendant_reference(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#336 + # source://rubocop//lib/rubocop/cop/variable_force.rb#342 def each_descendant_reference(loop_node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#321 + # source://rubocop//lib/rubocop/cop/variable_force.rb#327 def find_variables_in_loop(loop_node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#97 + # source://rubocop//lib/rubocop/cop/variable_force.rb#99 def inspect_variables_in_scope(scope_node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#302 + # source://rubocop//lib/rubocop/cop/variable_force.rb#309 def mark_assignments_as_referenced_in_loop(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#130 + # source://rubocop//lib/rubocop/cop/variable_force.rb#132 def node_handler_method_name(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#103 + # source://rubocop//lib/rubocop/cop/variable_force.rb#105 def process_children(origin_node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#238 + # source://rubocop//lib/rubocop/cop/variable_force.rb#240 def process_loop(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#182 + # source://rubocop//lib/rubocop/cop/variable_force.rb#184 def process_pattern_match_variable(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#164 + # source://rubocop//lib/rubocop/cop/variable_force.rb#166 def process_regexp_named_captures(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#253 + # source://rubocop//lib/rubocop/cop/variable_force.rb#260 def process_rescue(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#272 + # source://rubocop//lib/rubocop/cop/variable_force.rb#279 def process_scope(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#291 + # source://rubocop//lib/rubocop/cop/variable_force.rb#298 def process_send(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#146 + # source://rubocop//lib/rubocop/cop/variable_force.rb#148 def process_variable_assignment(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#134 + # source://rubocop//lib/rubocop/cop/variable_force.rb#136 def process_variable_declaration(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#226 + # source://rubocop//lib/rubocop/cop/variable_force.rb#228 def process_variable_multiple_assignment(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#196 + # source://rubocop//lib/rubocop/cop/variable_force.rb#198 def process_variable_operator_assignment(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#233 + # source://rubocop//lib/rubocop/cop/variable_force.rb#235 def process_variable_referencing(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#264 + # source://rubocop//lib/rubocop/cop/variable_force.rb#271 def process_zero_arity_super(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#190 + # source://rubocop//lib/rubocop/cop/variable_force.rb#363 + def reference_assignments(loop_assignments, loop_node); end + + # source://rubocop//lib/rubocop/cop/variable_force.rb#192 def regexp_captured_names(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#357 + # source://rubocop//lib/rubocop/cop/variable_force.rb#374 def scanned_node?(node); end - # source://rubocop//lib/rubocop/cop/variable_force.rb#361 + # source://rubocop//lib/rubocop/cop/variable_force.rb#378 def scanned_nodes; end - # source://rubocop//lib/rubocop/cop/variable_force.rb#111 + # source://rubocop//lib/rubocop/cop/variable_force.rb#113 def skip_children!; end - # source://rubocop//lib/rubocop/cop/variable_force.rb#285 + # source://rubocop//lib/rubocop/cop/variable_force.rb#292 def twisted_nodes(node); end end @@ -29848,6 +30150,9 @@ class RuboCop::Cop::VariableForce::AssignmentReference < ::Struct end end +# source://rubocop//lib/rubocop/cop/variable_force.rb#74 +RuboCop::Cop::VariableForce::BRANCH_NODES = T.let(T.unsafe(nil), Array) + # source://rubocop//lib/rubocop/cop/variable_force/branch.rb#7 module RuboCop::Cop::VariableForce::Branch class << self @@ -30125,7 +30430,7 @@ RuboCop::Cop::VariableForce::LOOP_TYPES = T.let(T.unsafe(nil), Array) # source://rubocop//lib/rubocop/cop/variable_force.rb#45 RuboCop::Cop::VariableForce::MULTIPLE_ASSIGNMENT_TYPE = T.let(T.unsafe(nil), Symbol) -# source://rubocop//lib/rubocop/cop/variable_force.rb#115 +# source://rubocop//lib/rubocop/cop/variable_force.rb#117 RuboCop::Cop::VariableForce::NODE_HANDLER_METHOD_NAMES = T.let(T.unsafe(nil), Hash) # source://rubocop//lib/rubocop/cop/variable_force.rb#43 @@ -30864,110 +31169,113 @@ end class RuboCop::Formatter::DisabledConfigFormatter < ::RuboCop::Formatter::BaseFormatter include ::RuboCop::PathUtil - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#27 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#43 def initialize(output, options = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#40 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#56 def file_finished(file, offenses); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#33 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#49 def file_started(_file, options); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#48 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#64 def finished(_inspected_files); end private - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#69 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#85 def auto_gen_enforced_style?; end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#73 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#89 def command; end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#165 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#181 def cop_config_params(default_cfg, cfg); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#186 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#199 def default_config(cop_name); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#230 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#243 def excludes(offending_files, cop_name, parent); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#201 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#214 def filtered_config(cfg); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#278 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#291 def include_or_match?(arr, elm); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#251 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#264 def merge_mode_for_exclude?(cfg); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#272 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#285 def no_exclude_limit?; end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#102 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#118 def output_cop(cop_name, offense_count); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#137 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#153 def output_cop_comments(output_buffer, cfg, cop_name, offense_count); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#190 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#203 def output_cop_config(output_buffer, cfg, cop_name); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#172 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#185 def output_cop_param_comments(output_buffer, params, default_cfg); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#220 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#233 def output_exclude_list(output_buffer, offending_files, cop_name); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#255 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#268 def output_exclude_path(output_buffer, exclude_path, parent); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#209 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#222 def output_offending_files(output_buffer, cfg, cop_name); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#96 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#112 def output_offenses; end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#268 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#281 def safe_autocorrect?(config); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#116 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#132 def set_max(cfg, cop_name); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#125 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#141 def should_set_max?(cop_name); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#65 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#81 def show_offense_counts?; end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#61 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#77 def show_timestamp?; end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#157 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#173 def supports_safe_autocorrect?(cop_class, default_cfg); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#161 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#177 def supports_unsafe_autocorrect?(cop_class, default_cfg); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#92 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#108 def timestamp; end class << self - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#24 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#40 def config_to_allow_offenses; end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#24 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#40 def config_to_allow_offenses=(_arg0); end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#24 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#40 def detected_styles; end - # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#24 + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#40 def detected_styles=(_arg0); end end end +# source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#20 +RuboCop::Formatter::DisabledConfigFormatter::EXCLUDED_CONFIG_KEYS = T.let(T.unsafe(nil), Array) + # source://rubocop//lib/rubocop/formatter/disabled_config_formatter.rb#10 RuboCop::Formatter::DisabledConfigFormatter::HEADING = T.let(T.unsafe(nil), String) @@ -31341,42 +31649,42 @@ class RuboCop::Formatter::MarkdownFormatter < ::RuboCop::Formatter::BaseFormatte include ::RuboCop::Formatter::TextUtil include ::RuboCop::PathUtil - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#11 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#12 def initialize(output, options = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#21 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#22 def file_finished(file, offenses); end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#9 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#10 def files; end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#26 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#27 def finished(inspected_files); end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#17 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#18 def started(target_files); end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#9 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#10 def summary; end private - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#73 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#74 def possible_ellipses(location); end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#33 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#34 def render_markdown; end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#67 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#68 def write_code(offense); end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#61 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#62 def write_context(offense); end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#42 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#43 def write_file_messages; end - # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#54 + # source://rubocop//lib/rubocop/formatter/markdown_formatter.rb#55 def write_heading(file); end end @@ -31411,50 +31719,50 @@ end class RuboCop::Formatter::PacmanFormatter < ::RuboCop::Formatter::ClangStyleFormatter include ::RuboCop::Formatter::TextUtil - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#19 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#20 def initialize(output, options = T.unsafe(nil)); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#50 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#51 def cols; end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#37 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#38 def file_finished(file, offenses); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#33 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#34 def file_started(_file, _options); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#43 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#44 def next_step(offenses); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#64 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#65 def pacdots(number); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#12 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#13 def progress_line; end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#12 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#13 def progress_line=(_arg0); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#26 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#27 def started(target_files); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#68 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#69 def step(character); end - # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#57 + # source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#58 def update_progress_line; end end -# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#14 +# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#15 RuboCop::Formatter::PacmanFormatter::FALLBACK_TERMINAL_WIDTH = T.let(T.unsafe(nil), Integer) -# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#15 +# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#16 RuboCop::Formatter::PacmanFormatter::GHOST = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#17 +# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#18 RuboCop::Formatter::PacmanFormatter::PACDOT = T.let(T.unsafe(nil), Rainbow::Presenter) -# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#16 +# source://rubocop//lib/rubocop/formatter/pacman_formatter.rb#17 RuboCop::Formatter::PacmanFormatter::PACMAN = T.let(T.unsafe(nil), Rainbow::Presenter) # source://rubocop//lib/rubocop/formatter/progress_formatter.rb#8 @@ -32093,6 +32401,40 @@ RuboCop::PathUtil::HIDDEN_FILE_PATTERN = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/path_util.rb#35 RuboCop::PathUtil::SMART_PATH_CACHE = T.let(T.unsafe(nil), Hash) +# source://rubocop//lib/rubocop/pending_cops_reporter.rb#10 +class RuboCop::PendingCopsReporter + class << self + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#20 + def disable_pending_cops; end + + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#20 + def disable_pending_cops=(_arg0); end + + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#20 + def enable_pending_cops; end + + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#20 + def enable_pending_cops=(_arg0); end + + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#22 + def warn_if_needed(config); end + + private + + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#31 + def pending_cops_only_qualified(pending_cops); end + + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#35 + def possible_new_cops?(config); end + + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#40 + def warn_on_pending_cops(pending_cops); end + + # source://rubocop//lib/rubocop/pending_cops_reporter.rb#48 + def warn_pending_cop(cop); end + end +end + # source://rubocop//lib/rubocop/platform.rb#6 module RuboCop::Platform class << self @@ -32276,7 +32618,7 @@ class RuboCop::ResultCache # source://rubocop//lib/rubocop/result_cache.rb#146 def any_symlink?(path); end - # source://rubocop//lib/rubocop/result_cache.rb#229 + # source://rubocop//lib/rubocop/result_cache.rb#231 def context_checksum(team, options); end # source://rubocop//lib/rubocop/result_cache.rb#189 @@ -32285,7 +32627,7 @@ class RuboCop::ResultCache # source://rubocop//lib/rubocop/result_cache.rb#157 def file_checksum(file, config_store); end - # source://rubocop//lib/rubocop/result_cache.rb#220 + # source://rubocop//lib/rubocop/result_cache.rb#222 def relevant_options_digest(options); end # source://rubocop//lib/rubocop/result_cache.rb#174 @@ -32375,16 +32717,16 @@ class RuboCop::Runner # source://rubocop//lib/rubocop/runner.rb#253 def cached_run?; end - # source://rubocop//lib/rubocop/runner.rb#331 + # source://rubocop//lib/rubocop/runner.rb#333 def check_for_infinite_loop(processed_source, offenses_by_iteration); end # source://rubocop//lib/rubocop/runner.rb#225 def check_for_redundant_disables?(source); end - # source://rubocop//lib/rubocop/runner.rb#433 + # source://rubocop//lib/rubocop/runner.rb#435 def considered_failure?(offense); end - # source://rubocop//lib/rubocop/runner.rb#470 + # source://rubocop//lib/rubocop/runner.rb#472 def default_config(cop_name); end # source://rubocop//lib/rubocop/runner.rb#275 @@ -32396,7 +32738,7 @@ class RuboCop::Runner # source://rubocop//lib/rubocop/runner.rb#239 def except_redundant_cop_disable_directive?; end - # source://rubocop//lib/rubocop/runner.rb#360 + # source://rubocop//lib/rubocop/runner.rb#362 def extract_ruby_sources(processed_source); end # source://rubocop//lib/rubocop/runner.rb#248 @@ -32411,52 +32753,52 @@ class RuboCop::Runner # source://rubocop//lib/rubocop/runner.rb#243 def file_started(file); end - # source://rubocop//lib/rubocop/runner.rb#413 + # source://rubocop//lib/rubocop/runner.rb#415 def filter_cop_classes(cop_classes, config); end # source://rubocop//lib/rubocop/runner.rb#104 def find_target_files(paths); end - # source://rubocop//lib/rubocop/runner.rb#424 + # source://rubocop//lib/rubocop/runner.rb#426 def formatter_set; end - # source://rubocop//lib/rubocop/runner.rb#485 - def get_processed_source(file); end + # source://rubocop//lib/rubocop/runner.rb#487 + def get_processed_source(file, prism_result); end - # source://rubocop//lib/rubocop/runner.rb#345 + # source://rubocop//lib/rubocop/runner.rb#347 def inspect_file(processed_source, team = T.unsafe(nil)); end # source://rubocop//lib/rubocop/runner.rb#115 def inspect_files(files); end - # source://rubocop//lib/rubocop/runner.rb#306 + # source://rubocop//lib/rubocop/runner.rb#308 def iterate_until_no_changes(source, offenses_by_iteration); end # source://rubocop//lib/rubocop/runner.rb#148 def list_files(paths); end - # source://rubocop//lib/rubocop/runner.rb#466 + # source://rubocop//lib/rubocop/runner.rb#468 def mark_as_safe_by_config?(config); end - # source://rubocop//lib/rubocop/runner.rb#474 + # source://rubocop//lib/rubocop/runner.rb#476 def minimum_severity_to_fail; end - # source://rubocop//lib/rubocop/runner.rb#374 + # source://rubocop//lib/rubocop/runner.rb#376 def mobilize_team(processed_source); end - # source://rubocop//lib/rubocop/runner.rb#379 + # source://rubocop//lib/rubocop/runner.rb#381 def mobilized_cop_classes(config); end - # source://rubocop//lib/rubocop/runner.rb#442 + # source://rubocop//lib/rubocop/runner.rb#444 def offense_displayed?(offense); end - # source://rubocop//lib/rubocop/runner.rb#454 + # source://rubocop//lib/rubocop/runner.rb#456 def offenses_to_report(offenses); end # source://rubocop//lib/rubocop/runner.rb#152 def process_file(file); end - # source://rubocop//lib/rubocop/runner.rb#403 + # source://rubocop//lib/rubocop/runner.rb#405 def qualify_option_cop_names; end # source://rubocop//lib/rubocop/runner.rb#231 @@ -32465,13 +32807,13 @@ class RuboCop::Runner # source://rubocop//lib/rubocop/runner.rb#265 def save_in_cache(cache, offenses); end - # source://rubocop//lib/rubocop/runner.rb#517 + # source://rubocop//lib/rubocop/runner.rb#519 def standby_team(config); end - # source://rubocop//lib/rubocop/runner.rb#420 + # source://rubocop//lib/rubocop/runner.rb#422 def style_guide_cops_only?(config); end - # source://rubocop//lib/rubocop/runner.rb#458 + # source://rubocop//lib/rubocop/runner.rb#460 def supports_safe_autocorrect?(offense); end # source://rubocop//lib/rubocop/runner.rb#214 @@ -32542,7 +32884,7 @@ class RuboCop::TargetFinder # source://rubocop//lib/rubocop/target_finder.rb#17 def find(args, mode); end - # source://rubocop//lib/rubocop/target_finder.rb#62 + # source://rubocop//lib/rubocop/target_finder.rb#60 def find_files(base_dir, flags); end # source://rubocop//lib/rubocop/target_finder.rb#41 @@ -32568,6 +32910,9 @@ class RuboCop::TargetFinder # source://rubocop//lib/rubocop/target_finder.rb#205 def force_exclusion?; end + # source://rubocop//lib/rubocop/target_finder.rb#82 + def hidden_path?(path); end + # source://rubocop//lib/rubocop/target_finder.rb#209 def ignore_parent_exclusion?; end @@ -32607,8 +32952,8 @@ class RuboCop::TargetFinder # source://rubocop//lib/rubocop/target_finder.rb#102 def symlink_excluded_or_infinite_loop?(base_dir, current_dir, exclude_pattern, flags); end - # source://rubocop//lib/rubocop/target_finder.rb#77 - def to_inspect?(file, hidden_files, base_dir_config); end + # source://rubocop//lib/rubocop/target_finder.rb#75 + def to_inspect?(file, base_dir_config); end # source://rubocop//lib/rubocop/target_finder.rb#86 def wanted_dir_patterns(base_dir, exclude_pattern, flags); end @@ -32622,52 +32967,52 @@ RuboCop::TargetFinder::HIDDEN_PATH_SUBSTRING = T.let(T.unsafe(nil), String) # source://rubocop//lib/rubocop/target_ruby.rb#6 class RuboCop::TargetRuby - # source://rubocop//lib/rubocop/target_ruby.rb#273 + # source://rubocop//lib/rubocop/target_ruby.rb#282 def initialize(config); end - # source://rubocop//lib/rubocop/target_ruby.rb#289 + # source://rubocop//lib/rubocop/target_ruby.rb#298 def rubocop_version_with_support; end - # source://rubocop//lib/rubocop/target_ruby.rb#277 + # source://rubocop//lib/rubocop/target_ruby.rb#286 def source; end - # source://rubocop//lib/rubocop/target_ruby.rb#285 + # source://rubocop//lib/rubocop/target_ruby.rb#294 def supported?; end - # source://rubocop//lib/rubocop/target_ruby.rb#281 + # source://rubocop//lib/rubocop/target_ruby.rb#290 def version; end class << self - # source://rubocop//lib/rubocop/target_ruby.rb#258 + # source://rubocop//lib/rubocop/target_ruby.rb#267 def supported_versions; end end end -# source://rubocop//lib/rubocop/target_ruby.rb#205 +# source://rubocop//lib/rubocop/target_ruby.rb#214 class RuboCop::TargetRuby::BundlerLockFile < ::RuboCop::TargetRuby::Source - # source://rubocop//lib/rubocop/target_ruby.rb#206 + # source://rubocop//lib/rubocop/target_ruby.rb#215 def name; end private - # source://rubocop//lib/rubocop/target_ruby.rb#239 + # source://rubocop//lib/rubocop/target_ruby.rb#248 def bundler_lock_file_path; end - # source://rubocop//lib/rubocop/target_ruby.rb#212 + # source://rubocop//lib/rubocop/target_ruby.rb#221 def find_version; end end # source://rubocop//lib/rubocop/target_ruby.rb#8 RuboCop::TargetRuby::DEFAULT_VERSION = T.let(T.unsafe(nil), Float) -# source://rubocop//lib/rubocop/target_ruby.rb#246 +# source://rubocop//lib/rubocop/target_ruby.rb#255 class RuboCop::TargetRuby::Default < ::RuboCop::TargetRuby::Source - # source://rubocop//lib/rubocop/target_ruby.rb#247 + # source://rubocop//lib/rubocop/target_ruby.rb#256 def name; end private - # source://rubocop//lib/rubocop/target_ruby.rb#253 + # source://rubocop//lib/rubocop/target_ruby.rb#262 def find_version; end end @@ -32686,7 +33031,7 @@ class RuboCop::TargetRuby::GemspecFile < ::RuboCop::TargetRuby::Source private - # source://rubocop//lib/rubocop/target_ruby.rb#137 + # source://rubocop//lib/rubocop/target_ruby.rb#146 def find_minimal_known_ruby(right_hand_side); end # source://rubocop//lib/rubocop/target_ruby.rb#88 @@ -32695,13 +33040,13 @@ class RuboCop::TargetRuby::GemspecFile < ::RuboCop::TargetRuby::Source # source://rubocop//lib/rubocop/target_ruby.rb#98 def gemspec_filepath; end - # source://rubocop//lib/rubocop/target_ruby.rb#133 + # source://rubocop//lib/rubocop/target_ruby.rb#142 def version_from_array(array); end # source://rubocop//lib/rubocop/target_ruby.rb#112 def version_from_gemspec_file(file); end - # source://rubocop//lib/rubocop/target_ruby.rb#121 + # source://rubocop//lib/rubocop/target_ruby.rb#130 def version_from_right_hand_side(right_hand_side); end end @@ -32733,33 +33078,33 @@ class RuboCop::TargetRuby::RuboCopEnvVar < ::RuboCop::TargetRuby::Source def find_version; end end -# source://rubocop//lib/rubocop/target_ruby.rb#151 +# source://rubocop//lib/rubocop/target_ruby.rb#160 class RuboCop::TargetRuby::RubyVersionFile < ::RuboCop::TargetRuby::Source - # source://rubocop//lib/rubocop/target_ruby.rb#155 + # source://rubocop//lib/rubocop/target_ruby.rb#164 def name; end private - # source://rubocop//lib/rubocop/target_ruby.rb#161 + # source://rubocop//lib/rubocop/target_ruby.rb#170 def filename; end - # source://rubocop//lib/rubocop/target_ruby.rb#169 + # source://rubocop//lib/rubocop/target_ruby.rb#178 def find_version; end - # source://rubocop//lib/rubocop/target_ruby.rb#165 + # source://rubocop//lib/rubocop/target_ruby.rb#174 def pattern; end - # source://rubocop//lib/rubocop/target_ruby.rb#176 + # source://rubocop//lib/rubocop/target_ruby.rb#185 def version_file; end end -# source://rubocop//lib/rubocop/target_ruby.rb#152 +# source://rubocop//lib/rubocop/target_ruby.rb#161 RuboCop::TargetRuby::RubyVersionFile::RUBY_VERSION_FILENAME = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/target_ruby.rb#153 +# source://rubocop//lib/rubocop/target_ruby.rb#162 RuboCop::TargetRuby::RubyVersionFile::RUBY_VERSION_PATTERN = T.let(T.unsafe(nil), Regexp) -# source://rubocop//lib/rubocop/target_ruby.rb#262 +# source://rubocop//lib/rubocop/target_ruby.rb#271 RuboCop::TargetRuby::SOURCES = T.let(T.unsafe(nil), Array) # source://rubocop//lib/rubocop/target_ruby.rb#24 @@ -32777,24 +33122,24 @@ class RuboCop::TargetRuby::Source def version; end end -# source://rubocop//lib/rubocop/target_ruby.rb#184 +# source://rubocop//lib/rubocop/target_ruby.rb#193 class RuboCop::TargetRuby::ToolVersionsFile < ::RuboCop::TargetRuby::RubyVersionFile - # source://rubocop//lib/rubocop/target_ruby.rb#188 + # source://rubocop//lib/rubocop/target_ruby.rb#197 def name; end private - # source://rubocop//lib/rubocop/target_ruby.rb#194 + # source://rubocop//lib/rubocop/target_ruby.rb#203 def filename; end - # source://rubocop//lib/rubocop/target_ruby.rb#198 + # source://rubocop//lib/rubocop/target_ruby.rb#207 def pattern; end end -# source://rubocop//lib/rubocop/target_ruby.rb#185 +# source://rubocop//lib/rubocop/target_ruby.rb#194 RuboCop::TargetRuby::ToolVersionsFile::TOOL_VERSIONS_FILENAME = T.let(T.unsafe(nil), String) -# source://rubocop//lib/rubocop/target_ruby.rb#186 +# source://rubocop//lib/rubocop/target_ruby.rb#195 RuboCop::TargetRuby::ToolVersionsFile::TOOL_VERSIONS_PATTERN = T.let(T.unsafe(nil), Regexp) # source://rubocop//lib/rubocop/ast_aliases.rb#7 diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/ruby-minisat@2.2.0.3.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/ruby-minisat@2.2.0.3.rbi new file mode 100644 index 0000000000..a1f364dd3f --- /dev/null +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/ruby-minisat@2.2.0.3.rbi @@ -0,0 +1,62 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `ruby-minisat` gem. +# Please instead update this file by running `bin/tapioca gem ruby-minisat`. + + +# THIS IS AN EMPTY RBI FILE. +# see https://github.com/Shopify/tapioca#manually-requiring-parts-of-a-gem + + +module MiniSat + class Literal + end + class Variable + sig { returns(Literal) } + def +@; end + + sig { returns(Literal) } + def -@; end + + sig { returns(T::Boolean) } + def value; end + end + class Solver + sig { params(term: T.any(Variable, Literal, T::Array[T.any(Variable, Literal)])).returns(Solver) } + def <<(term); end + + sig { returns(Variable) } + def new_var; end + + sig { params(v: T.any(Variable, Literal)).returns(Solver) } + def add_clause(*v); end + + sig { params(v: Variable).returns(T::Boolean) } + def [](v); end + + sig { returns(T::Boolean) } + def solve; end + + sig { returns(T::Boolean) } + def simplify; end + + sig { returns(T::Boolean) } + def simplify_db; end + + sig { returns(Integer) } + def var_size; end + + sig { returns(Integer) } + def clause_size; end + + sig { override.returns(String) } + def to_s; end + + sig { returns(T::Boolean) } + def solved?; end + + sig { returns(T::Boolean) } + def satisfied?; end + end +end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/simplecov-cobertura@3.1.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/simplecov-cobertura@3.1.0.rbi new file mode 100644 index 0000000000..772ea5b33c --- /dev/null +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/simplecov-cobertura@3.1.0.rbi @@ -0,0 +1,191 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `simplecov-cobertura` gem. +# Please instead update this file by running `bin/tapioca gem simplecov-cobertura`. + + +# source://simplecov-cobertura//lib/simplecov-cobertura/version.rb#1 +module SimpleCov + class << self + # source://simplecov/0.22.0/lib/simplecov.rb#174 + def at_exit_behavior; end + + # source://simplecov/0.22.0/lib/simplecov.rb#170 + def clear_result; end + + # source://simplecov/0.22.0/lib/simplecov.rb#86 + def collate(result_filenames, profile = T.unsafe(nil), ignore_timeout: T.unsafe(nil), &block); end + + # source://simplecov/0.22.0/lib/simplecov.rb#223 + def exit_and_report_previous_error(exit_status); end + + # source://simplecov/0.22.0/lib/simplecov.rb#200 + def exit_status_from_exception; end + + # source://simplecov/0.22.0/lib/simplecov.rb#28 + def external_at_exit; end + + # source://simplecov/0.22.0/lib/simplecov.rb#28 + def external_at_exit=(_arg0); end + + # source://simplecov/0.22.0/lib/simplecov.rb#28 + def external_at_exit?; end + + # source://simplecov/0.22.0/lib/simplecov.rb#131 + def filtered(files); end + + # source://simplecov/0.22.0/lib/simplecov.rb#268 + def final_result_process?; end + + # source://simplecov/0.22.0/lib/simplecov.rb#142 + def grouped(files); end + + # source://simplecov/0.22.0/lib/simplecov.rb#162 + def load_adapter(name); end + + # source://simplecov/0.22.0/lib/simplecov.rb#158 + def load_profile(name); end + + # source://simplecov/0.22.0/lib/simplecov.rb#24 + def pid; end + + # source://simplecov/0.22.0/lib/simplecov.rb#24 + def pid=(_arg0); end + + # source://simplecov/0.22.0/lib/simplecov.rb#213 + def previous_error?(error_exit_status); end + + # source://simplecov/0.22.0/lib/simplecov.rb#248 + def process_result(result); end + + # source://simplecov/0.22.0/lib/simplecov.rb#233 + def process_results_and_report_error; end + + # source://simplecov/0.22.0/lib/simplecov.rb#229 + def ready_to_process_results?; end + + # source://simplecov/0.22.0/lib/simplecov.rb#101 + def result; end + + # source://simplecov/0.22.0/lib/simplecov.rb#124 + def result?; end + + # source://simplecov/0.22.0/lib/simplecov.rb#256 + def result_exit_status(result); end + + # source://simplecov/0.22.0/lib/simplecov.rb#296 + def round_coverage(coverage); end + + # source://simplecov/0.22.0/lib/simplecov.rb#186 + def run_exit_tasks!; end + + # source://simplecov/0.22.0/lib/simplecov.rb#24 + def running; end + + # source://simplecov/0.22.0/lib/simplecov.rb#24 + def running=(_arg0); end + + # source://simplecov/0.22.0/lib/simplecov.rb#48 + def start(profile = T.unsafe(nil), &block); end + + # source://simplecov/0.22.0/lib/simplecov.rb#276 + def wait_for_other_processes; end + + # source://simplecov/0.22.0/lib/simplecov.rb#285 + def write_last_run(result); end + + private + + # source://simplecov/0.22.0/lib/simplecov.rb#399 + def adapt_coverage_result; end + + # source://simplecov/0.22.0/lib/simplecov.rb#371 + def add_not_loaded_files(result); end + + # source://simplecov/0.22.0/lib/simplecov.rb#302 + def initial_setup(profile, &block); end + + # source://simplecov/0.22.0/lib/simplecov.rb#363 + def lookup_corresponding_ruby_coverage_name(criterion); end + + # source://simplecov/0.22.0/lib/simplecov.rb#425 + def make_parallel_tests_available; end + + # source://simplecov/0.22.0/lib/simplecov.rb#434 + def probably_running_parallel_tests?; end + + # source://simplecov/0.22.0/lib/simplecov.rb#388 + def process_coverage_result; end + + # source://simplecov/0.22.0/lib/simplecov.rb#410 + def remove_useless_results; end + + # source://simplecov/0.22.0/lib/simplecov.rb#420 + def result_with_not_loaded_files; end + + # source://simplecov/0.22.0/lib/simplecov.rb#314 + def start_coverage_measurement; end + + # source://simplecov/0.22.0/lib/simplecov.rb#349 + def start_coverage_with_criteria; end + end +end + +# source://simplecov-cobertura//lib/simplecov-cobertura/version.rb#2 +module SimpleCov::Formatter + class << self + # source://simplecov/0.22.0/lib/simplecov/default_formatter.rb#7 + def from_env(env); end + end +end + +# source://simplecov-cobertura//lib/simplecov-cobertura/version.rb#3 +class SimpleCov::Formatter::CoberturaFormatter + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#13 + def initialize(result_file_name: T.unsafe(nil)); end + + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#17 + def format(result); end + + private + + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#158 + def extract_rate(percent); end + + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#147 + def output_message(result, output_path); end + + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#162 + def project_root; end + + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#154 + def resolve_filename(filename); end + + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#35 + def result_to_xml(result); end + + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#136 + def set_branch_attributes(line, file_line, branched_lines, branched_lines_covered); end + + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#117 + def set_class_attributes(class_, file); end + + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#88 + def set_coverage_attributes(coverage, result); end + + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#131 + def set_line_attributes(line, file_line); end + + # source://simplecov-cobertura//lib/simplecov-cobertura.rb#105 + def set_package_attributes(package, name, result); end +end + +# source://simplecov-cobertura//lib/simplecov-cobertura.rb#11 +SimpleCov::Formatter::CoberturaFormatter::DTD_URL = T.let(T.unsafe(nil), String) + +# source://simplecov-cobertura//lib/simplecov-cobertura.rb#10 +SimpleCov::Formatter::CoberturaFormatter::RESULT_FILE_NAME = T.let(T.unsafe(nil), String) + +# source://simplecov-cobertura//lib/simplecov-cobertura/version.rb#4 +SimpleCov::Formatter::CoberturaFormatter::VERSION = T.let(T.unsafe(nil), String) diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/simplecov-html@0.13.1.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/simplecov-html@0.13.2.rbi similarity index 83% rename from tools/ruby-gems/udb/sorbet/rbi/gems/simplecov-html@0.13.1.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/simplecov-html@0.13.2.rbi index 3fdc78073d..353f37e954 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/simplecov-html@0.13.1.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/simplecov-html@0.13.2.rbi @@ -5,7 +5,7 @@ # Please instead update this file by running `bin/tapioca gem simplecov-html`. -# source://simplecov-html//lib/simplecov-html.rb#16 +# source://simplecov-html//lib/simplecov-html.rb#15 module SimpleCov class << self # source://simplecov/0.22.0/lib/simplecov.rb#174 @@ -132,7 +132,7 @@ module SimpleCov end end -# source://simplecov-html//lib/simplecov-html.rb#17 +# source://simplecov-html//lib/simplecov-html.rb#16 module SimpleCov::Formatter class << self # source://simplecov/0.22.0/lib/simplecov/default_formatter.rb#7 @@ -140,69 +140,69 @@ module SimpleCov::Formatter end end -# source://simplecov-html//lib/simplecov-html.rb#18 +# source://simplecov-html//lib/simplecov-html.rb#17 class SimpleCov::Formatter::HTMLFormatter - # source://simplecov-html//lib/simplecov-html.rb#19 + # source://simplecov-html//lib/simplecov-html.rb#26 def initialize; end - # source://simplecov-html//lib/simplecov-html.rb#26 + # source://simplecov-html//lib/simplecov-html.rb#33 def format(result); end private - # source://simplecov-html//lib/simplecov-html.rb#94 + # source://simplecov-html//lib/simplecov-html.rb#93 def asset_inline(name); end - # source://simplecov-html//lib/simplecov-html.rb#72 + # source://simplecov-html//lib/simplecov-html.rb#79 def asset_output_path; end - # source://simplecov-html//lib/simplecov-html.rb#80 + # source://simplecov-html//lib/simplecov-html.rb#87 def assets_path(name); end - # source://simplecov-html//lib/simplecov-html.rb#41 + # source://simplecov-html//lib/simplecov-html.rb#48 def branchable_result?; end - # source://simplecov-html//lib/simplecov-html.rb#125 + # source://simplecov-html//lib/simplecov-html.rb#124 def coverage_css_class(covered_percent); end - # source://simplecov-html//lib/simplecov-html.rb#121 + # source://simplecov-html//lib/simplecov-html.rb#120 def covered_percent(percent); end - # source://simplecov-html//lib/simplecov-html.rb#112 + # source://simplecov-html//lib/simplecov-html.rb#111 def formatted_file_list(title, source_files); end - # source://simplecov-html//lib/simplecov-html.rb#105 + # source://simplecov-html//lib/simplecov-html.rb#104 def formatted_source_file(source_file); end - # source://simplecov-html//lib/simplecov-html.rb#146 + # source://simplecov-html//lib/simplecov-html.rb#145 def id(source_file); end - # source://simplecov-html//lib/simplecov-html.rb#48 + # source://simplecov-html//lib/simplecov-html.rb#55 def line_status?(source_file, line); end - # source://simplecov-html//lib/simplecov-html.rb#158 + # source://simplecov-html//lib/simplecov-html.rb#157 def link_to_source_file(source_file); end - # source://simplecov-html//lib/simplecov-html.rb#56 + # source://simplecov-html//lib/simplecov-html.rb#63 def output_message(result); end - # source://simplecov-html//lib/simplecov-html.rb#68 + # source://simplecov-html//lib/simplecov-html.rb#75 def output_path; end - # source://simplecov-html//lib/simplecov-html.rb#154 + # source://simplecov-html//lib/simplecov-html.rb#153 def shortened_filename(source_file); end - # source://simplecov-html//lib/simplecov-html.rb#135 + # source://simplecov-html//lib/simplecov-html.rb#134 def strength_css_class(covered_strength); end - # source://simplecov-html//lib/simplecov-html.rb#64 + # source://simplecov-html//lib/simplecov-html.rb#71 def template(name); end - # source://simplecov-html//lib/simplecov-html.rb#150 + # source://simplecov-html//lib/simplecov-html.rb#149 def timeago(time); end end -# source://simplecov-html//lib/simplecov-html.rb#87 +# source://simplecov-html//lib/simplecov-html.rb#19 SimpleCov::Formatter::HTMLFormatter::CONTENT_TYPES = T.let(T.unsafe(nil), Hash) # source://simplecov-html//lib/simplecov-html/version.rb#6 diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/spoom@1.6.3.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/spoom@1.6.3.rbi index a9f1829ede..5235fd09d3 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/spoom@1.6.3.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/spoom@1.6.3.rbi @@ -128,13 +128,13 @@ class Spoom::Cli::Main < ::Thor # source://spoom//lib/spoom/cli.rb#64 def coverage(*args); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def deadcode(*args); end # source://spoom//lib/spoom/cli.rb#74 def lsp(*args); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def srb(*args); end # source://spoom//lib/spoom/cli.rb#93 @@ -268,24 +268,24 @@ end # source://spoom//lib/spoom/cli/srb.rb#14 class Spoom::Cli::Srb::Main < ::Thor - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def assertions(*args); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def bump(*args); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def coverage(*args); end def help(command = T.unsafe(nil), subcommand = T.unsafe(nil)); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def lsp(*args); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def sigs(*args); end - # source://thor/1.3.2/lib/thor.rb#334 + # source://thor/1.4.0/lib/thor.rb#334 def tc(*args); end end @@ -899,7 +899,7 @@ class Spoom::Coverage::D3::ColorPalette < ::T::Struct prop :strong, ::String class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -1227,7 +1227,7 @@ class Spoom::Coverage::Snapshot < ::T::Struct sig { params(obj: T::Hash[::String, T.untyped]).returns(::Spoom::Coverage::Snapshot) } def from_obj(obj); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -1349,7 +1349,7 @@ class Spoom::Deadcode::Definition < ::T::Struct def to_json(*args); end class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -2043,7 +2043,7 @@ class Spoom::Deadcode::Send < ::T::Struct def each_arg_assoc(&block); end class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -2063,7 +2063,7 @@ class Spoom::ExecResult < ::T::Struct def to_s; end class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -2224,7 +2224,7 @@ class Spoom::FileTree::Node < ::T::Struct def path; end class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -2282,7 +2282,7 @@ class Spoom::Git::Commit < ::T::Struct def timestamp; end class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end # source://spoom//lib/spoom/context/git.rb#10 @@ -2386,7 +2386,7 @@ class Spoom::LSP::Diagnostic < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Diagnostic) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -2419,7 +2419,7 @@ class Spoom::LSP::DocumentSymbol < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::DocumentSymbol) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -2477,7 +2477,7 @@ class Spoom::LSP::Hover < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Hover) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -2502,7 +2502,7 @@ class Spoom::LSP::Location < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Location) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -2557,7 +2557,7 @@ class Spoom::LSP::Position < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Position) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -2591,7 +2591,7 @@ class Spoom::LSP::Range < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::Range) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -2653,7 +2653,7 @@ class Spoom::LSP::SignatureHelp < ::T::Struct sig { params(json: T::Hash[T.untyped, T.untyped]).returns(::Spoom::LSP::SignatureHelp) } def from_json(json); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -3043,7 +3043,7 @@ class Spoom::Model::Reference < ::T::Struct sig { params(name: ::String, location: ::Spoom::Location).returns(::Spoom::Model::Reference) } def constant(name, location); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end # source://spoom//lib/spoom/model/reference.rb#25 diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/strings-ansi@0.2.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/strings-ansi@0.2.0.rbi new file mode 100644 index 0000000000..b75029048e --- /dev/null +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/strings-ansi@0.2.0.rbi @@ -0,0 +1,46 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `strings-ansi` gem. +# Please instead update this file by running `bin/tapioca gem strings-ansi`. + + +# source://strings-ansi//lib/strings/ansi/version.rb#3 +module Strings; end + +# source://strings-ansi//lib/strings/ansi/version.rb#4 +module Strings::ANSI + private + + # source://strings-ansi//lib/strings/ansi.rb#45 + def ansi?(string); end + + # source://strings-ansi//lib/strings/ansi.rb#65 + def only_ansi?(string); end + + # source://strings-ansi//lib/strings/ansi.rb#28 + def sanitize(string); end + + class << self + # source://strings-ansi//lib/strings/ansi.rb#45 + def ansi?(string); end + + # source://strings-ansi//lib/strings/ansi.rb#65 + def only_ansi?(string); end + + # source://strings-ansi//lib/strings/ansi.rb#28 + def sanitize(string); end + end +end + +# source://strings-ansi//lib/strings/ansi.rb#15 +Strings::ANSI::ANSI_MATCHER = T.let(T.unsafe(nil), String) + +# source://strings-ansi//lib/strings/ansi.rb#9 +Strings::ANSI::CSI = T.let(T.unsafe(nil), String) + +# source://strings-ansi//lib/strings/ansi.rb#12 +Strings::ANSI::RESET = T.let(T.unsafe(nil), String) + +# source://strings-ansi//lib/strings/ansi/version.rb#5 +Strings::ANSI::VERSION = T.let(T.unsafe(nil), String) diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/tapioca@0.16.11.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/tapioca@0.16.11.rbi index 8934aa8bd6..bd07fe6575 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/tapioca@0.16.11.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/tapioca@0.16.11.rbi @@ -48,16 +48,16 @@ module RBI; end # source://tapioca//lib/tapioca/rbi_ext/model.rb#5 class RBI::Tree < ::RBI::NodeWithComments - # source://rbi/0.3.6/lib/rbi/model.rb#113 + # source://rbi/0.3.7/lib/rbi/model.rb#113 def initialize(loc: T.unsafe(nil), comments: T.unsafe(nil), &block); end - # source://rbi/0.3.6/lib/rbi/model.rb#120 + # source://rbi/0.3.7/lib/rbi/model.rb#120 def <<(node); end - # source://rbi/0.3.6/lib/rbi/rewriters/add_sig_templates.rb#63 + # source://rbi/0.3.7/lib/rbi/rewriters/add_sig_templates.rb#63 def add_sig_templates!(with_todo_comment: T.unsafe(nil)); end - # source://rbi/0.3.6/lib/rbi/rewriters/annotate.rb#46 + # source://rbi/0.3.7/lib/rbi/rewriters/annotate.rb#46 def annotate!(annotation, annotate_scopes: T.unsafe(nil), annotate_properties: T.unsafe(nil)); end # source://tapioca//lib/tapioca/rbi_ext/model.rb#38 @@ -121,49 +121,49 @@ class RBI::Tree < ::RBI::NodeWithComments end def create_type_variable(name, type:, variance: T.unsafe(nil), fixed: T.unsafe(nil), upper: T.unsafe(nil), lower: T.unsafe(nil)); end - # source://rbi/0.3.6/lib/rbi/rewriters/deannotate.rb#38 + # source://rbi/0.3.7/lib/rbi/rewriters/deannotate.rb#38 def deannotate!(annotation); end - # source://rbi/0.3.6/lib/rbi/model.rb#126 + # source://rbi/0.3.7/lib/rbi/model.rb#126 def empty?; end - # source://rbi/0.3.6/lib/rbi/rewriters/filter_versions.rb#113 + # source://rbi/0.3.7/lib/rbi/rewriters/filter_versions.rb#113 def filter_versions!(version); end - # source://rbi/0.3.6/lib/rbi/rewriters/flatten_singleton_methods.rb#58 + # source://rbi/0.3.7/lib/rbi/rewriters/flatten_singleton_methods.rb#58 def flatten_singleton_methods!; end - # source://rbi/0.3.6/lib/rbi/rewriters/flatten_visibilities.rb#57 + # source://rbi/0.3.7/lib/rbi/rewriters/flatten_visibilities.rb#57 def flatten_visibilities!; end - # source://rbi/0.3.6/lib/rbi/rewriters/group_nodes.rb#78 + # source://rbi/0.3.7/lib/rbi/rewriters/group_nodes.rb#78 def group_nodes!; end - # source://rbi/0.3.6/lib/rbi/index.rb#62 + # source://rbi/0.3.7/lib/rbi/index.rb#62 def index; end - # source://rbi/0.3.6/lib/rbi/rewriters/merge_trees.rb#323 + # source://rbi/0.3.7/lib/rbi/rewriters/merge_trees.rb#323 def merge(other, left_name: T.unsafe(nil), right_name: T.unsafe(nil), keep: T.unsafe(nil)); end - # source://rbi/0.3.6/lib/rbi/rewriters/nest_non_public_members.rb#43 + # source://rbi/0.3.7/lib/rbi/rewriters/nest_non_public_members.rb#43 def nest_non_public_members!; end - # source://rbi/0.3.6/lib/rbi/rewriters/nest_singleton_methods.rb#33 + # source://rbi/0.3.7/lib/rbi/rewriters/nest_singleton_methods.rb#33 def nest_singleton_methods!; end - # source://rbi/0.3.6/lib/rbi/rewriters/nest_top_level_members.rb#60 + # source://rbi/0.3.7/lib/rbi/rewriters/nest_top_level_members.rb#60 def nest_top_level_members!; end - # source://rbi/0.3.6/lib/rbi/model.rb#110 + # source://rbi/0.3.7/lib/rbi/model.rb#110 def nodes; end - # source://rbi/0.3.6/lib/rbi/rewriters/attr_to_methods.rb#50 + # source://rbi/0.3.7/lib/rbi/rewriters/attr_to_methods.rb#50 def replace_attributes_with_methods!; end - # source://rbi/0.3.6/lib/rbi/rewriters/sort_nodes.rb#118 + # source://rbi/0.3.7/lib/rbi/rewriters/sort_nodes.rb#118 def sort_nodes!; end - # source://rbi/0.3.6/lib/rbi/rewriters/translate_rbs_sigs.rb#82 + # source://rbi/0.3.7/lib/rbi/rewriters/translate_rbs_sigs.rb#82 def translate_rbs_sigs!; end private @@ -183,7 +183,7 @@ class RBI::TypedParam < ::T::Struct const :type, ::String class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -843,7 +843,7 @@ class Tapioca::Commands::Command sig { void } def initialize; end - # source://thor/1.3.2/lib/thor/base.rb#155 + # source://thor/1.4.0/lib/thor/base.rb#155 sig { returns(::Thor::Actions) } def file_writer; end @@ -1114,7 +1114,7 @@ class Tapioca::ConfigHelper::ConfigError < ::T::Struct const :message_parts, T::Array[::Tapioca::ConfigHelper::ConfigErrorMessagePart] class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -1125,7 +1125,7 @@ class Tapioca::ConfigHelper::ConfigErrorMessagePart < ::T::Struct const :colors, T::Array[::Symbol] class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end @@ -2148,7 +2148,7 @@ class Tapioca::GemInfo < ::T::Struct sig { params(spec: ::Bundler::LazySpecification).returns(::Tapioca::GemInfo) } def from_spec(spec); end - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/thor@1.3.2.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/thor@1.4.0.rbi similarity index 98% rename from tools/ruby-gems/udb/sorbet/rbi/gems/thor@1.3.2.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/thor@1.4.0.rbi index 76cfa96cab..aea609e5ce 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/thor@1.3.2.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/thor@1.4.0.rbi @@ -236,7 +236,7 @@ module Thor::Actions # source://thor//lib/thor/actions/file_manipulation.rb#145 def chmod(path, mode, config = T.unsafe(nil)); end - # source://thor//lib/thor/actions/file_manipulation.rb#308 + # source://thor//lib/thor/actions/file_manipulation.rb#333 def comment_lines(path, flag, *args); end # source://thor//lib/thor/actions/file_manipulation.rb#20 @@ -266,9 +266,12 @@ module Thor::Actions # source://thor//lib/thor/actions/file_manipulation.rb#81 def get(source, *args, &block); end - # source://thor//lib/thor/actions/file_manipulation.rb#262 + # source://thor//lib/thor/actions/file_manipulation.rb#291 def gsub_file(path, flag, *args, &block); end + # source://thor//lib/thor/actions/file_manipulation.rb#263 + def gsub_file!(path, flag, *args, &block); end + # source://thor//lib/thor/actions.rb#200 def in_root; end @@ -299,10 +302,10 @@ module Thor::Actions # source://thor//lib/thor/actions.rb#114 def relative_to_original_destination_root(path, remove_dot = T.unsafe(nil)); end - # source://thor//lib/thor/actions/file_manipulation.rb#325 + # source://thor//lib/thor/actions/file_manipulation.rb#350 def remove_dir(path, config = T.unsafe(nil)); end - # source://thor//lib/thor/actions/file_manipulation.rb#325 + # source://thor//lib/thor/actions/file_manipulation.rb#350 def remove_file(path, config = T.unsafe(nil)); end # source://thor//lib/thor/actions.rb#248 @@ -320,7 +323,7 @@ module Thor::Actions # source://thor//lib/thor/actions.rb#308 def thor(command, *args); end - # source://thor//lib/thor/actions/file_manipulation.rb#289 + # source://thor//lib/thor/actions/file_manipulation.rb#314 def uncomment_lines(path, flag, *args); end protected @@ -333,19 +336,22 @@ module Thor::Actions private - # source://thor//lib/thor/actions/file_manipulation.rb#346 + # source://thor//lib/thor/actions/file_manipulation.rb#385 + def actually_gsub_file(path, flag, args, error_on_no_change, &block); end + + # source://thor//lib/thor/actions/file_manipulation.rb#371 def capture(*args); end - # source://thor//lib/thor/actions/file_manipulation.rb#342 + # source://thor//lib/thor/actions/file_manipulation.rb#367 def concat(string); end - # source://thor//lib/thor/actions/file_manipulation.rb#337 + # source://thor//lib/thor/actions/file_manipulation.rb#362 def output_buffer; end - # source://thor//lib/thor/actions/file_manipulation.rb#337 + # source://thor//lib/thor/actions/file_manipulation.rb#362 def output_buffer=(_arg0); end - # source://thor//lib/thor/actions/file_manipulation.rb#350 + # source://thor//lib/thor/actions/file_manipulation.rb#375 def with_output_buffer(buf = T.unsafe(nil)); end class << self @@ -354,9 +360,9 @@ module Thor::Actions end end -# source://thor//lib/thor/actions/file_manipulation.rb#362 +# source://thor//lib/thor/actions/file_manipulation.rb#398 class Thor::Actions::CapturableERB < ::ERB - # source://thor//lib/thor/actions/file_manipulation.rb#363 + # source://thor//lib/thor/actions/file_manipulation.rb#399 def set_eoutvar(compiler, eoutvar = T.unsafe(nil)); end end @@ -1620,9 +1626,6 @@ class Thor::Shell::Basic # source://thor//lib/thor/shell/basic.rb#296 def file_collision_help(block_given); end - # source://thor//lib/thor/shell/basic.rb#383 - def git_merge_tool; end - # source://thor//lib/thor/shell/basic.rb#286 def is?(value); end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/tilt@2.6.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/tilt@2.6.1.rbi similarity index 94% rename from tools/ruby-gems/udb/sorbet/rbi/gems/tilt@2.6.0.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/tilt@2.6.1.rbi index 1d1ee619d6..06f2d952e7 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/tilt@2.6.0.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/tilt@2.6.1.rbi @@ -268,32 +268,32 @@ class Tilt::RDocTemplate < ::Tilt::StaticTemplate def _prepare_output; end end -# source://tilt//lib/tilt/template.rb#563 +# source://tilt//lib/tilt/template.rb#568 class Tilt::StaticTemplate < ::Tilt::Template - # source://tilt//lib/tilt/template.rb#586 + # source://tilt//lib/tilt/template.rb#591 def allows_script?; end - # source://tilt//lib/tilt/template.rb#581 + # source://tilt//lib/tilt/template.rb#586 def compiled_method(locals_keys, scope_class = T.unsafe(nil)); end - # source://tilt//lib/tilt/template.rb#575 + # source://tilt//lib/tilt/template.rb#580 def render(scope = T.unsafe(nil), locals = T.unsafe(nil)); end protected - # source://tilt//lib/tilt/template.rb#592 + # source://tilt//lib/tilt/template.rb#597 def prepare; end private - # source://tilt//lib/tilt/template.rb#599 + # source://tilt//lib/tilt/template.rb#604 def set_compiled_method_cache; end - # source://tilt//lib/tilt/template.rb#603 + # source://tilt//lib/tilt/template.rb#608 def set_fixed_locals; end class << self - # source://tilt//lib/tilt/template.rb#564 + # source://tilt//lib/tilt/template.rb#569 def subclass(mime_type: T.unsafe(nil), &block); end end end @@ -391,7 +391,7 @@ class Tilt::Template # source://tilt//lib/tilt/template.rb#325 def _dup_string_if_frozen(string); end - # source://tilt//lib/tilt/template.rb#544 + # source://tilt//lib/tilt/template.rb#549 def binary(string); end # source://tilt//lib/tilt/template.rb#442 @@ -406,16 +406,16 @@ class Tilt::Template # source://tilt//lib/tilt/template.rb#390 def evaluate_method(method, scope, locals, &block); end - # source://tilt//lib/tilt/template.rb#523 + # source://tilt//lib/tilt/template.rb#528 def extract_encoding(script, &block); end - # source://tilt//lib/tilt/template.rb#517 + # source://tilt//lib/tilt/template.rb#522 def extract_fixed_locals; end - # source://tilt//lib/tilt/template.rb#527 + # source://tilt//lib/tilt/template.rb#532 def extract_magic_comment(script); end - # source://tilt//lib/tilt/template.rb#540 + # source://tilt//lib/tilt/template.rb#545 def freeze_string_literals?; end # source://tilt//lib/tilt/template.rb#475 @@ -433,10 +433,10 @@ class Tilt::Template # source://tilt//lib/tilt/template.rb#359 def set_compiled_method_cache; end - # source://tilt//lib/tilt/template.rb#491 + # source://tilt//lib/tilt/template.rb#496 def set_fixed_locals; end - # source://tilt//lib/tilt/template.rb#483 + # source://tilt//lib/tilt/template.rb#488 def unbind_compiled_method(method_name); end class << self diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/treetop@1.6.12.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/treetop@1.6.12.rbi index 6e2abc9a7a..722fe507ea 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/treetop@1.6.12.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/treetop@1.6.12.rbi @@ -1629,10 +1629,10 @@ class Treetop::Runtime::CompiledParser # source://treetop//lib/treetop/runtime/compiled_parser.rb#6 def input; end - # source://idlc/0.1.0/lib/idlc.rb#17 + # source://idlc/0.1.0/lib/idlc.rb#18 def input_file; end - # source://idlc/0.1.0/lib/idlc.rb#28 + # source://idlc/0.1.0/lib/idlc.rb#29 def instantiate_node(node_type, *args); end # source://treetop//lib/treetop/runtime/compiled_parser.rb#6 @@ -1644,7 +1644,7 @@ class Treetop::Runtime::CompiledParser # source://treetop//lib/treetop/runtime/compiled_parser.rb#7 def root=(_arg0); end - # source://idlc/0.1.0/lib/idlc.rb#19 + # source://idlc/0.1.0/lib/idlc.rb#20 def set_input_file(filename, starting_line = T.unsafe(nil)); end # source://treetop//lib/treetop/runtime/compiled_parser.rb#54 diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/tty-color@0.6.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/tty-color@0.6.0.rbi new file mode 100644 index 0000000000..4a49713a55 --- /dev/null +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/tty-color@0.6.0.rbi @@ -0,0 +1,131 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `tty-color` gem. +# Please instead update this file by running `bin/tapioca gem tty-color`. + + +# source://tty-color//lib/tty/color/mode.rb#3 +module TTY; end + +# source://tty-color//lib/tty/color/mode.rb#4 +module TTY::Color + extend ::TTY::Color + + # source://tty-color//lib/tty/color.rb#27 + def color?; end + + # source://tty-color//lib/tty/color.rb#67 + def command?(cmd); end + + # source://tty-color//lib/tty/color.rb#40 + def disabled?; end + + # source://tty-color//lib/tty/color.rb#49 + def mode; end + + # source://tty-color//lib/tty/color.rb#20 + def output; end + + # source://tty-color//lib/tty/color.rb#20 + def output=(_arg0); end + + # source://tty-color//lib/tty/color.rb#27 + def support?; end + + # source://tty-color//lib/tty/color.rb#27 + def supports?; end + + # source://tty-color//lib/tty/color.rb#27 + def supports_color?; end + + # source://tty-color//lib/tty/color.rb#58 + def tty?; end + + # source://tty-color//lib/tty/color.rb#20 + def verbose; end + + # source://tty-color//lib/tty/color.rb#20 + def verbose=(_arg0); end + + # source://tty-color//lib/tty/color.rb#76 + def windows?; end +end + +# source://tty-color//lib/tty/color/mode.rb#5 +class TTY::Color::Mode + # source://tty-color//lib/tty/color/mode.rb#31 + def initialize(env); end + + # source://tty-color//lib/tty/color/mode.rb#57 + def from_term; end + + # source://tty-color//lib/tty/color/mode.rb#77 + def from_tput; end + + # source://tty-color//lib/tty/color/mode.rb#41 + def mode; end +end + +# source://tty-color//lib/tty/color/mode.rb#29 +TTY::Color::Mode::METHODS = T.let(T.unsafe(nil), Array) + +# source://tty-color//lib/tty/color/mode.rb#18 +TTY::Color::Mode::TERM_16 = T.let(T.unsafe(nil), Regexp) + +# source://tty-color//lib/tty/color/mode.rb#6 +TTY::Color::Mode::TERM_24BIT = T.let(T.unsafe(nil), Regexp) + +# source://tty-color//lib/tty/color/mode.rb#9 +TTY::Color::Mode::TERM_256 = T.let(T.unsafe(nil), Regexp) + +# source://tty-color//lib/tty/color/mode.rb#16 +TTY::Color::Mode::TERM_52 = T.let(T.unsafe(nil), Regexp) + +# source://tty-color//lib/tty/color/mode.rb#13 +TTY::Color::Mode::TERM_64 = T.let(T.unsafe(nil), Regexp) + +# source://tty-color//lib/tty/color/mode.rb#27 +TTY::Color::Mode::TERM_8 = T.let(T.unsafe(nil), Regexp) + +# source://tty-color//lib/tty/color/mode.rb#7 +TTY::Color::Mode::TRUECOLORS = T.let(T.unsafe(nil), Integer) + +# source://tty-color//lib/tty/color.rb#14 +module TTY::Color::NoValue; end + +# source://tty-color//lib/tty/color/support.rb#5 +class TTY::Color::Support + # source://tty-color//lib/tty/color/support.rb#30 + def initialize(env, verbose: T.unsafe(nil)); end + + # source://tty-color//lib/tty/color/support.rb#58 + def disabled?; end + + # source://tty-color//lib/tty/color/support.rb#97 + def from_curses(curses_class = T.unsafe(nil)); end + + # source://tty-color//lib/tty/color/support.rb#88 + def from_env; end + + # source://tty-color//lib/tty/color/support.rb#66 + def from_term; end + + # source://tty-color//lib/tty/color/support.rb#77 + def from_tput; end + + # source://tty-color//lib/tty/color/support.rb#41 + def support?; end +end + +# source://tty-color//lib/tty/color/support.rb#7 +TTY::Color::Support::ENV_VARS = T.let(T.unsafe(nil), Array) + +# source://tty-color//lib/tty/color/support.rb#6 +TTY::Color::Support::SOURCES = T.let(T.unsafe(nil), Array) + +# source://tty-color//lib/tty/color/support.rb#9 +TTY::Color::Support::TERM_REGEX = T.let(T.unsafe(nil), Regexp) + +# source://tty-color//lib/tty/color/version.rb#5 +TTY::Color::VERSION = T.let(T.unsafe(nil), String) diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/tty-cursor@0.7.1.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/tty-cursor@0.7.1.rbi new file mode 100644 index 0000000000..6f7d34866a --- /dev/null +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/tty-cursor@0.7.1.rbi @@ -0,0 +1,205 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `tty-cursor` gem. +# Please instead update this file by running `bin/tapioca gem tty-cursor`. + + +# source://tty-cursor//lib/tty/cursor/version.rb#3 +module TTY; end + +# source://tty-cursor//lib/tty/cursor/version.rb#4 +module TTY::Cursor + private + + # source://tty-cursor//lib/tty/cursor.rb#94 + def backward(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#137 + def clear_char(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#143 + def clear_line; end + + # source://tty-cursor//lib/tty/cursor.rb#157 + def clear_line_after; end + + # source://tty-cursor//lib/tty/cursor.rb#150 + def clear_line_before; end + + # source://tty-cursor//lib/tty/cursor.rb#169 + def clear_lines(n, direction = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#169 + def clear_rows(n, direction = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#191 + def clear_screen; end + + # source://tty-cursor//lib/tty/cursor.rb#179 + def clear_screen_down; end + + # source://tty-cursor//lib/tty/cursor.rb#185 + def clear_screen_up; end + + # source://tty-cursor//lib/tty/cursor.rb#111 + def column(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#51 + def current; end + + # source://tty-cursor//lib/tty/cursor.rb#94 + def cursor_backward(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#86 + def cursor_down(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#102 + def cursor_forward(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#78 + def cursor_up(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#86 + def down(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#102 + def forward(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#24 + def hide; end + + # source://tty-cursor//lib/tty/cursor.rb#30 + def invisible(stream = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#70 + def move(x, y); end + + # source://tty-cursor//lib/tty/cursor.rb#59 + def move_to(row = T.unsafe(nil), column = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#125 + def next_line; end + + # source://tty-cursor//lib/tty/cursor.rb#131 + def prev_line; end + + # source://tty-cursor//lib/tty/cursor.rb#45 + def restore; end + + # source://tty-cursor//lib/tty/cursor.rb#119 + def row(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#39 + def save; end + + # source://tty-cursor//lib/tty/cursor.rb#203 + def scroll_down; end + + # source://tty-cursor//lib/tty/cursor.rb#197 + def scroll_up; end + + # source://tty-cursor//lib/tty/cursor.rb#18 + def show; end + + # source://tty-cursor//lib/tty/cursor.rb#78 + def up(n = T.unsafe(nil)); end + + class << self + # source://tty-cursor//lib/tty/cursor.rb#94 + def backward(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#137 + def clear_char(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#143 + def clear_line; end + + # source://tty-cursor//lib/tty/cursor.rb#157 + def clear_line_after; end + + # source://tty-cursor//lib/tty/cursor.rb#150 + def clear_line_before; end + + # source://tty-cursor//lib/tty/cursor.rb#169 + def clear_lines(n, direction = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#191 + def clear_screen; end + + # source://tty-cursor//lib/tty/cursor.rb#179 + def clear_screen_down; end + + # source://tty-cursor//lib/tty/cursor.rb#185 + def clear_screen_up; end + + # source://tty-cursor//lib/tty/cursor.rb#111 + def column(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#51 + def current; end + + # source://tty-cursor//lib/tty/cursor.rb#86 + def down(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#102 + def forward(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#24 + def hide; end + + # source://tty-cursor//lib/tty/cursor.rb#30 + def invisible(stream = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#70 + def move(x, y); end + + # source://tty-cursor//lib/tty/cursor.rb#59 + def move_to(row = T.unsafe(nil), column = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#125 + def next_line; end + + # source://tty-cursor//lib/tty/cursor.rb#131 + def prev_line; end + + # source://tty-cursor//lib/tty/cursor.rb#45 + def restore; end + + # source://tty-cursor//lib/tty/cursor.rb#119 + def row(n = T.unsafe(nil)); end + + # source://tty-cursor//lib/tty/cursor.rb#39 + def save; end + + # source://tty-cursor//lib/tty/cursor.rb#203 + def scroll_down; end + + # source://tty-cursor//lib/tty/cursor.rb#197 + def scroll_up; end + + # source://tty-cursor//lib/tty/cursor.rb#18 + def show; end + + # source://tty-cursor//lib/tty/cursor.rb#78 + def up(n = T.unsafe(nil)); end + end +end + +# source://tty-cursor//lib/tty/cursor.rb#11 +TTY::Cursor::CSI = T.let(T.unsafe(nil), String) + +# source://tty-cursor//lib/tty/cursor.rb#12 +TTY::Cursor::DEC_RST = T.let(T.unsafe(nil), String) + +# source://tty-cursor//lib/tty/cursor.rb#13 +TTY::Cursor::DEC_SET = T.let(T.unsafe(nil), String) + +# source://tty-cursor//lib/tty/cursor.rb#14 +TTY::Cursor::DEC_TCEM = T.let(T.unsafe(nil), String) + +# source://tty-cursor//lib/tty/cursor.rb#10 +TTY::Cursor::ESC = T.let(T.unsafe(nil), String) + +# source://tty-cursor//lib/tty/cursor/version.rb#5 +TTY::Cursor::VERSION = T.let(T.unsafe(nil), String) diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/tty-logger@0.6.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/tty-logger@0.6.0.rbi new file mode 100644 index 0000000000..06d8e41daa --- /dev/null +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/tty-logger@0.6.0.rbi @@ -0,0 +1,513 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `tty-logger` gem. +# Please instead update this file by running `bin/tapioca gem tty-logger`. + + +# source://tty-logger//lib/tty/logger/handlers/base.rb#3 +module TTY; end + +# source://tty-logger//lib/tty/logger/handlers/base.rb#4 +class TTY::Logger + include ::TTY::Logger::Levels + + # source://tty-logger//lib/tty/logger.rb#91 + def initialize(output: T.unsafe(nil), fields: T.unsafe(nil)); end + + # source://tty-logger//lib/tty/logger.rb#233 + def <<(*msg); end + + # source://tty-logger//lib/tty/logger.rb#147 + def add_handler(handler, **options); end + + # source://tty-logger//lib/tty/logger.rb#123 + def add_type(name, log_level); end + + # source://tty-logger//lib/tty/logger.rb#178 + def coerce_handler(name); end + + # source://tty-logger//lib/tty/logger.rb#75 + def configure; end + + # source://tty-logger//lib/tty/logger.rb#209 + def copy(new_fields); end + + # source://tty-logger//lib/tty/logger.rb#333 + def copy_error(error, message, backtrace = T.unsafe(nil)); end + + # source://tty-logger//lib/tty/logger.rb#44 + def debug(*msg, &block); end + + # source://tty-logger//lib/tty/logger.rb#44 + def error(*msg, &block); end + + # source://tty-logger//lib/tty/logger.rb#44 + def fatal(*msg, &block); end + + # source://tty-logger//lib/tty/logger.rb#312 + def filter(*objects); end + + # source://tty-logger//lib/tty/logger.rb#44 + def info(*msg, &block); end + + # source://tty-logger//lib/tty/logger.rb#253 + def log(current_level, *msg); end + + # source://tty-logger//lib/tty/logger.rb#223 + def log?(level, other_level); end + + # source://tty-logger//lib/tty/logger.rb#296 + def log_at(tmp_level, &block); end + + # source://tty-logger//lib/tty/logger.rb#194 + def raise_handler_error; end + + # source://tty-logger//lib/tty/logger.rb#162 + def remove_handler(handler); end + + # source://tty-logger//lib/tty/logger.rb#44 + def success(*msg, &block); end + + # source://tty-logger//lib/tty/logger.rb#344 + def swap_filtered(obj); end + + # source://tty-logger//lib/tty/logger.rb#44 + def wait(*msg, &block); end + + # source://tty-logger//lib/tty/logger.rb#44 + def warn(*msg, &block); end + + # source://tty-logger//lib/tty/logger.rb#233 + def write(*msg); end + + class << self + # source://tty-logger//lib/tty/logger.rb#61 + def config; end + + # source://tty-logger//lib/tty/logger.rb#68 + def configure; end + + # source://tty-logger//lib/tty/logger.rb#34 + def define_level(name, log_level = T.unsafe(nil)); end + end +end + +# source://tty-logger//lib/tty/logger/config.rb#7 +class TTY::Logger::Config + # source://tty-logger//lib/tty/logger/config.rb#43 + def initialize(**options); end + + # source://tty-logger//lib/tty/logger/config.rb#11 + def date_format; end + + # source://tty-logger//lib/tty/logger/config.rb#11 + def date_format=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#79 + def filters; end + + # source://tty-logger//lib/tty/logger/config.rb#84 + def filters=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#17 + def formatter; end + + # source://tty-logger//lib/tty/logger/config.rb#17 + def formatter=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#20 + def handlers; end + + # source://tty-logger//lib/tty/logger/config.rb#20 + def handlers=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#23 + def level; end + + # source://tty-logger//lib/tty/logger/config.rb#23 + def level=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#26 + def max_bytes; end + + # source://tty-logger//lib/tty/logger/config.rb#26 + def max_bytes=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#29 + def max_depth; end + + # source://tty-logger//lib/tty/logger/config.rb#29 + def max_depth=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#32 + def metadata; end + + # source://tty-logger//lib/tty/logger/config.rb#32 + def metadata=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#35 + def output; end + + # source://tty-logger//lib/tty/logger/config.rb#35 + def output=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#14 + def time_format; end + + # source://tty-logger//lib/tty/logger/config.rb#14 + def time_format=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#111 + def to_h; end + + # source://tty-logger//lib/tty/logger/config.rb#89 + def to_proc; end + + # source://tty-logger//lib/tty/logger/config.rb#38 + def types; end + + # source://tty-logger//lib/tty/logger/config.rb#38 + def types=(_arg0); end +end + +# source://tty-logger//lib/tty/logger/config.rb#8 +TTY::Logger::Config::FILTERED = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/config.rb#56 +class TTY::Logger::Config::FiltersProvider + # source://tty-logger//lib/tty/logger/config.rb#59 + def initialize; end + + # source://tty-logger//lib/tty/logger/config.rb#57 + def data; end + + # source://tty-logger//lib/tty/logger/config.rb#57 + def data=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#57 + def mask; end + + # source://tty-logger//lib/tty/logger/config.rb#57 + def mask=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#57 + def message; end + + # source://tty-logger//lib/tty/logger/config.rb#57 + def message=(_arg0); end + + # source://tty-logger//lib/tty/logger/config.rb#65 + def to_h; end + + # source://tty-logger//lib/tty/logger/config.rb#69 + def to_s; end +end + +# source://tty-logger//lib/tty/logger/data_filter.rb#5 +class TTY::Logger::DataFilter + # source://tty-logger//lib/tty/logger/data_filter.rb#20 + def initialize(filters = T.unsafe(nil), mask: T.unsafe(nil)); end + + # source://tty-logger//lib/tty/logger/data_filter.rb#9 + def compiled_filters; end + + # source://tty-logger//lib/tty/logger/data_filter.rb#37 + def filter(obj); end + + # source://tty-logger//lib/tty/logger/data_filter.rb#9 + def filters; end + + # source://tty-logger//lib/tty/logger/data_filter.rb#9 + def mask; end + + private + + # source://tty-logger//lib/tty/logger/data_filter.rb#47 + def compile(filters); end + + # source://tty-logger//lib/tty/logger/data_filter.rb#111 + def filter_arr(key, obj, composite); end + + # source://tty-logger//lib/tty/logger/data_filter.rb#105 + def filter_obj(_key, obj, composite); end + + # source://tty-logger//lib/tty/logger/data_filter.rb#87 + def filter_val(key, val, composite = T.unsafe(nil)); end + + # source://tty-logger//lib/tty/logger/data_filter.rb#97 + def filtered?(key, composite); end +end + +# source://tty-logger//lib/tty/logger/data_filter.rb#7 +TTY::Logger::DataFilter::DOT = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/data_filter.rb#6 +TTY::Logger::DataFilter::FILTERED = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger.rb#19 +class TTY::Logger::Error < ::StandardError; end + +# source://tty-logger//lib/tty/logger/event.rb#5 +class TTY::Logger::Event + # source://tty-logger//lib/tty/logger/event.rb#14 + def initialize(message, fields = T.unsafe(nil), metadata = T.unsafe(nil)); end + + # source://tty-logger//lib/tty/logger/event.rb#12 + def backtrace; end + + # source://tty-logger//lib/tty/logger/event.rb#8 + def fields; end + + # source://tty-logger//lib/tty/logger/event.rb#6 + def message; end + + # source://tty-logger//lib/tty/logger/event.rb#10 + def metadata; end + + private + + # source://tty-logger//lib/tty/logger/event.rb#28 + def evaluate_message; end +end + +# source://tty-logger//lib/tty/logger/formatters/json.rb#7 +module TTY::Logger::Formatters; end + +# source://tty-logger//lib/tty/logger/formatters/json.rb#9 +class TTY::Logger::Formatters::JSON + # source://tty-logger//lib/tty/logger/formatters/json.rb#20 + def dump(obj, max_bytes: T.unsafe(nil), max_depth: T.unsafe(nil)); end + + private + + # source://tty-logger//lib/tty/logger/formatters/json.rb#40 + def dump_val(val, depth); end + + # source://tty-logger//lib/tty/logger/formatters/json.rb#55 + def enc_arr(obj, depth); end + + # source://tty-logger//lib/tty/logger/formatters/json.rb#49 + def enc_obj(obj, depth); end +end + +# source://tty-logger//lib/tty/logger/formatters/json.rb#10 +TTY::Logger::Formatters::JSON::ELLIPSIS = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#7 +class TTY::Logger::Formatters::Text + # source://tty-logger//lib/tty/logger/formatters/text.rb#32 + def dump(obj, max_bytes: T.unsafe(nil), max_depth: T.unsafe(nil)); end + + private + + # source://tty-logger//lib/tty/logger/formatters/text.rb#56 + def dump_key(key); end + + # source://tty-logger//lib/tty/logger/formatters/text.rb#68 + def dump_val(val, depth); end + + # source://tty-logger//lib/tty/logger/formatters/text.rb#93 + def enc_arr(array, depth); end + + # source://tty-logger//lib/tty/logger/formatters/text.rb#99 + def enc_cpx(val); end + + # source://tty-logger//lib/tty/logger/formatters/text.rb#103 + def enc_float(val); end + + # source://tty-logger//lib/tty/logger/formatters/text.rb#107 + def enc_num(val); end + + # source://tty-logger//lib/tty/logger/formatters/text.rb#85 + def enc_obj(obj, depth); end + + # source://tty-logger//lib/tty/logger/formatters/text.rb#111 + def enc_str(str); end + + # source://tty-logger//lib/tty/logger/formatters/text.rb#124 + def enc_time(time); end +end + +# source://tty-logger//lib/tty/logger/formatters/text.rb#15 +TTY::Logger::Formatters::Text::ELLIPSIS = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#20 +TTY::Logger::Formatters::Text::ESCAPE_DOUBLE_QUOTE = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#21 +TTY::Logger::Formatters::Text::ESCAPE_STR_REGEX = T.let(T.unsafe(nil), Regexp) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#11 +TTY::Logger::Formatters::Text::LBRACE = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#13 +TTY::Logger::Formatters::Text::LBRACKET = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#17 +TTY::Logger::Formatters::Text::LITERAL_FALSE = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#18 +TTY::Logger::Formatters::Text::LITERAL_NIL = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#16 +TTY::Logger::Formatters::Text::LITERAL_TRUE = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#9 +TTY::Logger::Formatters::Text::LPAREN = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#22 +TTY::Logger::Formatters::Text::NUM_REGEX = T.let(T.unsafe(nil), Regexp) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#12 +TTY::Logger::Formatters::Text::RBRACE = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#14 +TTY::Logger::Formatters::Text::RBRACKET = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#10 +TTY::Logger::Formatters::Text::RPAREN = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#19 +TTY::Logger::Formatters::Text::SINGLE_QUOTE_REGEX = T.let(T.unsafe(nil), Regexp) + +# source://tty-logger//lib/tty/logger/formatters/text.rb#8 +TTY::Logger::Formatters::Text::SPACE = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/handlers/base.rb#5 +module TTY::Logger::Handlers; end + +# source://tty-logger//lib/tty/logger/handlers/base.rb#6 +module TTY::Logger::Handlers::Base + # source://tty-logger//lib/tty/logger/handlers/base.rb#23 + def coerce_formatter(name); end + + # source://tty-logger//lib/tty/logger/handlers/base.rb#66 + def format_filepath(event); end + + # source://tty-logger//lib/tty/logger/handlers/base.rb#13 + def log_at(tmp_level); end + + # source://tty-logger//lib/tty/logger/handlers/base.rb#53 + def metadata; end + + # source://tty-logger//lib/tty/logger/handlers/base.rb#44 + def raise_formatter_error(name); end +end + +# source://tty-logger//lib/tty/logger/handlers/console.rb#10 +class TTY::Logger::Handlers::Console + include ::TTY::Logger::Handlers::Base + + # source://tty-logger//lib/tty/logger/handlers/console.rb#84 + def initialize(output: T.unsafe(nil), formatter: T.unsafe(nil), config: T.unsafe(nil), level: T.unsafe(nil), styles: T.unsafe(nil), enable_color: T.unsafe(nil), message_format: T.unsafe(nil)); end + + # source://tty-logger//lib/tty/logger/handlers/console.rb#104 + def call(event); end + + # source://tty-logger//lib/tty/logger/handlers/console.rb#74 + def config; end + + # source://tty-logger//lib/tty/logger/handlers/console.rb#78 + def level; end + + # source://tty-logger//lib/tty/logger/handlers/console.rb#82 + def message_format; end + + # source://tty-logger//lib/tty/logger/handlers/console.rb#70 + def output; end + + private + + # source://tty-logger//lib/tty/logger/handlers/console.rb#171 + def configure_color(style); end + + # source://tty-logger//lib/tty/logger/handlers/console.rb#163 + def configure_styles(event); end + + # source://tty-logger//lib/tty/logger/handlers/console.rb#150 + def format_backtrace(event); end +end + +# source://tty-logger//lib/tty/logger/handlers/console.rb#13 +TTY::Logger::Handlers::Console::ARROW = T.let(T.unsafe(nil), String) + +# source://tty-logger//lib/tty/logger/handlers/console.rb#63 +TTY::Logger::Handlers::Console::COLOR_PATTERNS = T.let(T.unsafe(nil), Hash) + +# source://tty-logger//lib/tty/logger/handlers/console.rb#61 +TTY::Logger::Handlers::Console::JSON_REGEXP = T.let(T.unsafe(nil), Regexp) + +# source://tty-logger//lib/tty/logger/handlers/console.rb#15 +TTY::Logger::Handlers::Console::STYLES = T.let(T.unsafe(nil), Hash) + +# source://tty-logger//lib/tty/logger/handlers/console.rb#60 +TTY::Logger::Handlers::Console::TEXT_REGEXP = T.let(T.unsafe(nil), Regexp) + +# source://tty-logger//lib/tty/logger/handlers/null.rb#6 +class TTY::Logger::Handlers::Null + # source://tty-logger//lib/tty/logger/handlers/null.rb#7 + def initialize(*_arg0); end + + # source://tty-logger//lib/tty/logger/handlers/null.rb#10 + def call(*_arg0); end +end + +# source://tty-logger//lib/tty/logger/handlers/stream.rb#8 +class TTY::Logger::Handlers::Stream + include ::TTY::Logger::Handlers::Base + + # source://tty-logger//lib/tty/logger/handlers/stream.rb#17 + def initialize(output: T.unsafe(nil), formatter: T.unsafe(nil), config: T.unsafe(nil), level: T.unsafe(nil)); end + + # source://tty-logger//lib/tty/logger/handlers/stream.rb#26 + def call(event); end + + # source://tty-logger//lib/tty/logger/handlers/stream.rb#13 + def config; end + + # source://tty-logger//lib/tty/logger/handlers/stream.rb#15 + def level; end + + # source://tty-logger//lib/tty/logger/handlers/stream.rb#11 + def output; end +end + +# source://tty-logger//lib/tty/logger.rb#21 +TTY::Logger::LOG_TYPES = T.let(T.unsafe(nil), Hash) + +# source://tty-logger//lib/tty/logger/levels.rb#5 +module TTY::Logger::Levels + # source://tty-logger//lib/tty/logger/levels.rb#58 + def compare_levels(left, right); end + + # source://tty-logger//lib/tty/logger/levels.rb#25 + def level_names; end + + # source://tty-logger//lib/tty/logger/levels.rb#36 + def level_to_number(level); end + + # source://tty-logger//lib/tty/logger/levels.rb#48 + def number_to_level(number); end +end + +# source://tty-logger//lib/tty/logger/levels.rb#6 +TTY::Logger::Levels::DEBUG_LEVEL = T.let(T.unsafe(nil), Integer) + +# source://tty-logger//lib/tty/logger/levels.rb#9 +TTY::Logger::Levels::ERROR_LEVEL = T.let(T.unsafe(nil), Integer) + +# source://tty-logger//lib/tty/logger/levels.rb#10 +TTY::Logger::Levels::FATAL_LEVEL = T.let(T.unsafe(nil), Integer) + +# source://tty-logger//lib/tty/logger/levels.rb#7 +TTY::Logger::Levels::INFO_LEVEL = T.let(T.unsafe(nil), Integer) + +# source://tty-logger//lib/tty/logger/levels.rb#12 +TTY::Logger::Levels::LEVEL_NAMES = T.let(T.unsafe(nil), Hash) + +# source://tty-logger//lib/tty/logger/levels.rb#8 +TTY::Logger::Levels::WARN_LEVEL = T.let(T.unsafe(nil), Integer) + +# source://tty-logger//lib/tty/logger/version.rb#5 +TTY::Logger::VERSION = T.let(T.unsafe(nil), String) diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/tty-progressbar@0.18.3.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/tty-progressbar@0.18.3.rbi new file mode 100644 index 0000000000..e91b2d731a --- /dev/null +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/tty-progressbar@0.18.3.rbi @@ -0,0 +1,631 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `tty-progressbar` gem. +# Please instead update this file by running `bin/tapioca gem tty-progressbar`. + + +# source://tty-progressbar//lib/tty/progressbar/timer.rb#3 +module TTY; end + +# source://tty-progressbar//lib/tty/progressbar/timer.rb#4 +class TTY::ProgressBar + include ::MonitorMixin + extend ::Forwardable + + # source://tty-progressbar//lib/tty/progressbar.rb#106 + def initialize(format, options = T.unsafe(nil)); end + + # source://tty-progressbar//lib/tty/progressbar.rb#205 + def advance(progress = T.unsafe(nil), tokens = T.unsafe(nil)); end + + # source://tty-progressbar//lib/tty/progressbar.rb#170 + def attach_to(multibar); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def bar_format(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def clear(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def clear_head(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#489 + def clear_line; end + + # source://forwardable/1.3.3/forwardable.rb#231 + def complete(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#499 + def complete?; end + + # source://tty-progressbar//lib/tty/progressbar.rb#151 + def configure; end + + # source://tty-progressbar//lib/tty/progressbar.rb#33 + def current; end + + # source://tty-progressbar//lib/tty/progressbar.rb#292 + def current=(value); end + + # source://tty-progressbar//lib/tty/progressbar.rb#526 + def done?; end + + # source://forwardable/1.3.3/forwardable.rb#231 + def elapsed_time(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#424 + def finish; end + + # source://tty-progressbar//lib/tty/progressbar.rb#31 + def format; end + + # source://tty-progressbar//lib/tty/progressbar.rb#31 + def format=(_arg0); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def frequency(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def head(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def hide_cursor(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def incomplete(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#160 + def indeterminate?; end + + # source://forwardable/1.3.3/forwardable.rb#231 + def inset(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#577 + def inspect; end + + # source://forwardable/1.3.3/forwardable.rb#231 + def interval(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#259 + def iterate(collection, progress = T.unsafe(nil), &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#551 + def log(message); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def mean_rate(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#367 + def move_to_row; end + + # source://tty-progressbar//lib/tty/progressbar.rb#538 + def on(name, &callback); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def output(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#478 + def pause; end + + # source://tty-progressbar//lib/tty/progressbar.rb#517 + def paused?; end + + # source://forwardable/1.3.3/forwardable.rb#231 + def rate(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#323 + def ratio; end + + # source://tty-progressbar//lib/tty/progressbar.rb#309 + def ratio=(value); end + + # source://tty-progressbar//lib/tty/progressbar.rb#337 + def render; end + + # source://tty-progressbar//lib/tty/progressbar.rb#132 + def reset; end + + # source://tty-progressbar//lib/tty/progressbar.rb#410 + def resize(new_width = T.unsafe(nil)); end + + # source://tty-progressbar//lib/tty/progressbar.rb#446 + def resume; end + + # source://tty-progressbar//lib/tty/progressbar.rb#35 + def row; end + + # source://tty-progressbar//lib/tty/progressbar.rb#191 + def start; end + + # source://forwardable/1.3.3/forwardable.rb#231 + def start_time(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#457 + def stop; end + + # source://tty-progressbar//lib/tty/progressbar.rb#508 + def stopped?; end + + # source://tty-progressbar//lib/tty/progressbar.rb#568 + def to_s; end + + # source://forwardable/1.3.3/forwardable.rb#231 + def total(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def unknown(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#276 + def update(options = T.unsafe(nil)); end + + # source://tty-progressbar//lib/tty/progressbar.rb#180 + def use(formatter_class); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def width(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def width=(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar.rb#393 + def write(data, clear_first = T.unsafe(nil)); end + + private + + # source://tty-progressbar//lib/tty/progressbar.rb#611 + def emit(name, *args); end + + # source://tty-progressbar//lib/tty/progressbar.rb#595 + def padout(message); end + + # source://tty-progressbar//lib/tty/progressbar.rb#622 + def tty?; end + + class << self + # source://tty-progressbar//lib/tty/progressbar.rb#62 + def display_columns(value); end + + # source://tty-progressbar//lib/tty/progressbar.rb#50 + def max_columns; end + end +end + +# source://tty-progressbar//lib/tty/progressbar/formatter/bar.rb#10 +class TTY::ProgressBar::BarFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/bar.rb#19 + def call(value); end + + private + + # source://tty-progressbar//lib/tty/progressbar/formatter/bar.rb#65 + def format_determinate(value, width); end + + # source://tty-progressbar//lib/tty/progressbar/formatter/bar.rb#40 + def format_indeterminate(value, width); end +end + +# source://tty-progressbar//lib/tty/progressbar/formatter/current_byte.rb#11 +class TTY::ProgressBar::ByteFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/current_byte.rb#20 + def call(value); end +end + +# source://tty-progressbar//lib/tty/progressbar/formatter/byte_rate.rb#11 +class TTY::ProgressBar::ByteRateFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/byte_rate.rb#20 + def call(value); end +end + +# source://tty-progressbar//lib/tty/progressbar.rb#29 +TTY::ProgressBar::CURSOR_LOCK = T.let(T.unsafe(nil), Monitor) + +# source://tty-progressbar//lib/tty/progressbar/configuration.rb#7 +class TTY::ProgressBar::Configuration + include ::TTY::ProgressBar::Formats + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#66 + def initialize(options); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#40 + def bar_format; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#40 + def bar_format=(_arg0); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#60 + def clear; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#60 + def clear=(_arg0); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#64 + def clear_head; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#64 + def clear_head=(_arg0); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#20 + def complete; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#88 + def complete=(value); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#48 + def frequency; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#48 + def frequency=(_arg0); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#28 + def head; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#28 + def head=(_arg0); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#56 + def hide_cursor; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#56 + def hide_cursor=(_arg0); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#24 + def incomplete; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#99 + def incomplete=(value); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#36 + def inset; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#36 + def inset=(_arg0); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#52 + def interval; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#52 + def interval=(_arg0); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#44 + def output; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#44 + def output=(_arg0); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#12 + def total; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#121 + def total=(value); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#32 + def unknown; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#110 + def unknown=(value); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#16 + def width; end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#16 + def width=(_arg0); end + + private + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#134 + def fetch_char(name, property); end + + # source://tty-progressbar//lib/tty/progressbar/configuration.rb#149 + def raise_if_empty(name, value); end +end + +# source://tty-progressbar//lib/tty/progressbar/converter.rb#8 +module TTY::ProgressBar::Converter + private + + # source://tty-progressbar//lib/tty/progressbar/converter.rb#68 + def to_bytes(value, decimals: T.unsafe(nil), separator: T.unsafe(nil), unit_separator: T.unsafe(nil)); end + + # source://tty-progressbar//lib/tty/progressbar/converter.rb#46 + def to_seconds(seconds, precision: T.unsafe(nil)); end + + # source://tty-progressbar//lib/tty/progressbar/converter.rb#17 + def to_time(seconds); end + + class << self + # source://tty-progressbar//lib/tty/progressbar/converter.rb#68 + def to_bytes(value, decimals: T.unsafe(nil), separator: T.unsafe(nil), unit_separator: T.unsafe(nil)); end + + # source://tty-progressbar//lib/tty/progressbar/converter.rb#46 + def to_seconds(seconds, precision: T.unsafe(nil)); end + + # source://tty-progressbar//lib/tty/progressbar/converter.rb#17 + def to_time(seconds); end + end +end + +# source://tty-progressbar//lib/tty/progressbar/converter.rb#52 +TTY::ProgressBar::Converter::BYTE_UNITS = T.let(T.unsafe(nil), Array) + +# source://tty-progressbar//lib/tty/progressbar/converter.rb#9 +TTY::ProgressBar::Converter::HOURSECONDS = T.let(T.unsafe(nil), Integer) + +# source://tty-progressbar//lib/tty/progressbar/formatter/current.rb#8 +class TTY::ProgressBar::CurrentFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/current.rb#17 + def call(value); end +end + +# source://tty-progressbar//lib/tty/progressbar.rb#25 +TTY::ProgressBar::ECMA_CSI = T.let(T.unsafe(nil), String) + +# source://tty-progressbar//lib/tty/progressbar/formatter/elapsed.rb#11 +class TTY::ProgressBar::ElapsedFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/elapsed.rb#20 + def call(value); end +end + +# source://tty-progressbar//lib/tty/progressbar/formatter/estimated.rb#11 +class TTY::ProgressBar::EstimatedFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/estimated.rb#20 + def call(value); end +end + +# source://tty-progressbar//lib/tty/progressbar/formatter/estimated_time.rb#8 +class TTY::ProgressBar::EstimatedTimeFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/estimated_time.rb#17 + def call(value); end +end + +# source://tty-progressbar//lib/tty/progressbar/formats.rb#5 +module TTY::ProgressBar::Formats; end + +# source://tty-progressbar//lib/tty/progressbar/formats.rb#6 +TTY::ProgressBar::Formats::FORMATS = T.let(T.unsafe(nil), Hash) + +# source://tty-progressbar//lib/tty/progressbar/formatter.rb#5 +class TTY::ProgressBar::Formatter < ::Module + # source://tty-progressbar//lib/tty/progressbar/formatter.rb#19 + def initialize(token_match); end + + class << self + # source://tty-progressbar//lib/tty/progressbar/formatter.rb#9 + def [](token_match); end + end +end + +# source://tty-progressbar//lib/tty/progressbar/formatters.rb#23 +class TTY::ProgressBar::Formatters + extend ::Forwardable + + # source://tty-progressbar//lib/tty/progressbar/formatters.rb#29 + def initialize(pipeline = T.unsafe(nil)); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def decorate(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar/formatters.rb#36 + def load(progress); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def use(*args, **_arg1, &block); end +end + +# source://tty-progressbar//lib/tty/progressbar/formatter/mean_byte.rb#11 +class TTY::ProgressBar::MeanByteFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/mean_byte.rb#20 + def call(value); end +end + +# source://tty-progressbar//lib/tty/progressbar/formatter/mean_rate.rb#11 +class TTY::ProgressBar::MeanRateFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/mean_rate.rb#20 + def call(value); end +end + +# source://tty-progressbar//lib/tty/progressbar/meter.rb#9 +class TTY::ProgressBar::Meter + # source://tty-progressbar//lib/tty/progressbar/meter.rb#16 + def initialize(interval); end + + # source://tty-progressbar//lib/tty/progressbar/meter.rb#98 + def avg_rate; end + + # source://tty-progressbar//lib/tty/progressbar/meter.rb#111 + def clear; end + + # source://tty-progressbar//lib/tty/progressbar/meter.rb#98 + def mean_rate; end + + # source://tty-progressbar//lib/tty/progressbar/meter.rb#51 + def prune_samples(at); end + + # source://tty-progressbar//lib/tty/progressbar/meter.rb#75 + def rate; end + + # source://tty-progressbar//lib/tty/progressbar/meter.rb#88 + def rates; end + + # source://tty-progressbar//lib/tty/progressbar/meter.rb#41 + def sample(at, value); end + + # source://tty-progressbar//lib/tty/progressbar/meter.rb#62 + def save_rate(at); end + + # source://tty-progressbar//lib/tty/progressbar/meter.rb#24 + def start; end +end + +# source://tty-progressbar//lib/tty/progressbar/multi.rb#13 +class TTY::ProgressBar::Multi + include ::Enumerable + include ::MonitorMixin + extend ::Forwardable + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#46 + def initialize(*args); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def [](*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#165 + def complete?; end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#154 + def current; end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#187 + def done?; end + + # source://forwardable/1.3.3/forwardable.rb#231 + def each(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def empty?(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#214 + def finish; end + + # source://forwardable/1.3.3/forwardable.rb#231 + def length(*args, **_arg1, &block); end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#242 + def line_inset(bar); end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#94 + def next_row; end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#106 + def observe(bar); end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#261 + def on(name, &callback); end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#221 + def pause; end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#198 + def paused?; end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#116 + def progress_handler; end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#73 + def register(format, options = T.unsafe(nil)); end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#228 + def resume; end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#30 + def rows; end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#132 + def start; end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#207 + def stop; end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#176 + def stopped?; end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#126 + def top_bar; end + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#143 + def total; end + + # source://forwardable/1.3.3/forwardable.rb#231 + def width(*args, **_arg1, &block); end + + # source://forwardable/1.3.3/forwardable.rb#231 + def width=(*args, **_arg1, &block); end + + private + + # source://tty-progressbar//lib/tty/progressbar/multi.rb#276 + def emit(name, *args); end +end + +# source://tty-progressbar//lib/tty/progressbar/multi.rb#23 +TTY::ProgressBar::Multi::DEFAULT_INSET = T.let(T.unsafe(nil), Hash) + +# source://tty-progressbar//lib/tty/progressbar.rb#27 +TTY::ProgressBar::NEWLINE = T.let(T.unsafe(nil), String) + +# source://tty-progressbar//lib/tty/progressbar/formatter/percent.rb#10 +class TTY::ProgressBar::PercentFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/percent.rb#19 + def call(value); end +end + +# source://tty-progressbar//lib/tty/progressbar/pipeline.rb#8 +class TTY::ProgressBar::Pipeline + include ::Enumerable + + # source://tty-progressbar//lib/tty/progressbar/pipeline.rb#14 + def initialize(formatters = T.unsafe(nil)); end + + # source://tty-progressbar//lib/tty/progressbar/pipeline.rb#40 + def decorate(tokenized); end + + # source://tty-progressbar//lib/tty/progressbar/pipeline.rb#54 + def each(&block); end + + # source://tty-progressbar//lib/tty/progressbar/pipeline.rb#25 + def use(formatter); end + + protected + + # source://tty-progressbar//lib/tty/progressbar/pipeline.rb#60 + def formatters; end +end + +# source://tty-progressbar//lib/tty/progressbar/formatter/rate.rb#11 +class TTY::ProgressBar::RateFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/rate.rb#20 + def call(value); end +end + +# source://tty-progressbar//lib/tty/progressbar/timer.rb#8 +class TTY::ProgressBar::Timer + # source://tty-progressbar//lib/tty/progressbar/timer.rb#14 + def initialize; end + + # source://tty-progressbar//lib/tty/progressbar/timer.rb#42 + def elapsed_time; end + + # source://tty-progressbar//lib/tty/progressbar/timer.rb#53 + def elapsed_until_now; end + + # source://tty-progressbar//lib/tty/progressbar/timer.rb#21 + def reset; end + + # source://tty-progressbar//lib/tty/progressbar/timer.rb#32 + def running?; end + + # source://tty-progressbar//lib/tty/progressbar/timer.rb#65 + def start; end + + # source://tty-progressbar//lib/tty/progressbar/timer.rb#9 + def start_time; end + + # source://tty-progressbar//lib/tty/progressbar/timer.rb#78 + def stop; end +end + +# source://tty-progressbar//lib/tty/progressbar/formatter/total_byte.rb#11 +class TTY::ProgressBar::TotalByteFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/total_byte.rb#20 + def call(value); end +end + +# source://tty-progressbar//lib/tty/progressbar/formatter/total.rb#10 +class TTY::ProgressBar::TotalFormatter + # source://tty-progressbar//lib/tty/progressbar/formatter/total.rb#19 + def call(value); end +end + +# source://tty-progressbar//lib/tty/progressbar/version.rb#5 +TTY::ProgressBar::VERSION = T.let(T.unsafe(nil), String) diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/tty-screen@0.8.2.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/tty-screen@0.8.2.rbi new file mode 100644 index 0000000000..aae48d4473 --- /dev/null +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/tty-screen@0.8.2.rbi @@ -0,0 +1,195 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `tty-screen` gem. +# Please instead update this file by running `bin/tapioca gem tty-screen`. + + +# source://tty-screen//lib/tty/screen/version.rb#3 +module TTY; end + +# source://tty-screen//lib/tty/screen/version.rb#4 +module TTY::Screen + private + + # source://tty-screen//lib/tty/screen.rb#128 + def cols; end + + # source://tty-screen//lib/tty/screen.rb#128 + def columns; end + + # source://tty-screen//lib/tty/screen.rb#442 + def command_exist?(command); end + + # source://tty-screen//lib/tty/screen.rb#146 + def height; end + + # source://tty-screen//lib/tty/screen.rb#331 + def ioctl?(control, buf); end + + # source://tty-screen//lib/tty/screen.rb#55 + def jruby?; end + + # source://tty-screen//lib/tty/screen.rb#146 + def lines; end + + # source://tty-screen//lib/tty/screen.rb#476 + def nonzero_column?(column); end + + # source://tty-screen//lib/tty/screen.rb#146 + def rows; end + + # source://tty-screen//lib/tty/screen.rb#461 + def run_command(*args); end + + # source://tty-screen//lib/tty/screen.rb#106 + def size(verbose: T.unsafe(nil)); end + + # source://tty-screen//lib/tty/screen.rb#426 + def size_from_ansicon; end + + # source://tty-screen//lib/tty/screen.rb#161 + def size_from_default; end + + # source://tty-screen//lib/tty/screen.rb#412 + def size_from_env; end + + # source://tty-screen//lib/tty/screen.rb#249 + def size_from_io_console(verbose: T.unsafe(nil)); end + + # source://tty-screen//lib/tty/screen.rb#308 + def size_from_ioctl; end + + # source://tty-screen//lib/tty/screen.rb#232 + def size_from_java(verbose: T.unsafe(nil)); end + + # source://tty-screen//lib/tty/screen.rb#353 + def size_from_readline(verbose: T.unsafe(nil)); end + + # source://tty-screen//lib/tty/screen.rb#390 + def size_from_stty; end + + # source://tty-screen//lib/tty/screen.rb#373 + def size_from_tput; end + + # source://tty-screen//lib/tty/screen.rb#207 + def size_from_win_api(verbose: T.unsafe(nil)); end + + # source://tty-screen//lib/tty/screen.rb#128 + def width; end + + # source://tty-screen//lib/tty/screen.rb#42 + def windows?; end + + class << self + # source://tty-screen//lib/tty/screen.rb#128 + def cols; end + + # source://tty-screen//lib/tty/screen.rb#128 + def columns; end + + # source://tty-screen//lib/tty/screen.rb#81 + def env; end + + # source://tty-screen//lib/tty/screen.rb#81 + def env=(_arg0); end + + # source://tty-screen//lib/tty/screen.rb#146 + def height; end + + # source://tty-screen//lib/tty/screen.rb#331 + def ioctl?(control, buf); end + + # source://tty-screen//lib/tty/screen.rb#55 + def jruby?; end + + # source://tty-screen//lib/tty/screen.rb#146 + def lines; end + + # source://tty-screen//lib/tty/screen.rb#94 + def output; end + + # source://tty-screen//lib/tty/screen.rb#94 + def output=(_arg0); end + + # source://tty-screen//lib/tty/screen.rb#28 + def private_module_function(name); end + + # source://tty-screen//lib/tty/screen.rb#146 + def rows; end + + # source://tty-screen//lib/tty/screen.rb#106 + def size(verbose: T.unsafe(nil)); end + + # source://tty-screen//lib/tty/screen.rb#426 + def size_from_ansicon; end + + # source://tty-screen//lib/tty/screen.rb#161 + def size_from_default; end + + # source://tty-screen//lib/tty/screen.rb#412 + def size_from_env; end + + # source://tty-screen//lib/tty/screen.rb#249 + def size_from_io_console(verbose: T.unsafe(nil)); end + + # source://tty-screen//lib/tty/screen.rb#308 + def size_from_ioctl; end + + # source://tty-screen//lib/tty/screen.rb#232 + def size_from_java(verbose: T.unsafe(nil)); end + + # source://tty-screen//lib/tty/screen.rb#353 + def size_from_readline(verbose: T.unsafe(nil)); end + + # source://tty-screen//lib/tty/screen.rb#390 + def size_from_stty; end + + # source://tty-screen//lib/tty/screen.rb#373 + def size_from_tput; end + + # source://tty-screen//lib/tty/screen.rb#207 + def size_from_win_api(verbose: T.unsafe(nil)); end + + # source://tty-screen//lib/tty/screen.rb#128 + def width; end + + # source://tty-screen//lib/tty/screen.rb#42 + def windows?; end + + private + + # source://tty-screen//lib/tty/screen.rb#442 + def command_exist?(command); end + + # source://tty-screen//lib/tty/screen.rb#476 + def nonzero_column?(column); end + + # source://tty-screen//lib/tty/screen.rb#461 + def run_command(*args); end + end +end + +# source://tty-screen//lib/tty/screen.rb#64 +TTY::Screen::DEFAULT_SIZE = T.let(T.unsafe(nil), Array) + +# source://tty-screen//lib/tty/screen.rb#20 +TTY::Screen::RUBY_CONFIG = T.let(T.unsafe(nil), Hash) + +# source://tty-screen//lib/tty/screen.rb#270 +TTY::Screen::TIOCGWINSZ = T.let(T.unsafe(nil), Integer) + +# source://tty-screen//lib/tty/screen.rb#291 +TTY::Screen::TIOCGWINSZ_BUF_FMT = T.let(T.unsafe(nil), String) + +# source://tty-screen//lib/tty/screen.rb#299 +TTY::Screen::TIOCGWINSZ_BUF_LEN = T.let(T.unsafe(nil), Integer) + +# source://tty-screen//lib/tty/screen.rb#277 +TTY::Screen::TIOCGWINSZ_PPC = T.let(T.unsafe(nil), Integer) + +# source://tty-screen//lib/tty/screen.rb#284 +TTY::Screen::TIOCGWINSZ_SOL = T.let(T.unsafe(nil), Integer) + +# source://tty-screen//lib/tty/screen/version.rb#5 +TTY::Screen::VERSION = T.let(T.unsafe(nil), String) diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/udb_helpers@0.1.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/udb_helpers@0.1.0.rbi index c6ba3575a0..d9725cf96a 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/udb_helpers@0.1.0.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/udb_helpers@0.1.0.rbi @@ -20,18 +20,18 @@ module Udb::Helpers end end -# source://udb_helpers//lib/udb_helpers/backend_helpers.rb#318 +# source://udb_helpers//lib/udb_helpers/backend_helpers.rb#324 module Udb::Helpers::AntoraUtils class << self - # source://udb_helpers//lib/udb_helpers/backend_helpers.rb#340 + # source://udb_helpers//lib/udb_helpers/backend_helpers.rb#346 def resolve_links(path_or_str); end end end -# source://udb_helpers//lib/udb_helpers/backend_helpers.rb#249 +# source://udb_helpers//lib/udb_helpers/backend_helpers.rb#255 module Udb::Helpers::AsciidocUtils class << self - # source://udb_helpers//lib/udb_helpers/backend_helpers.rb#261 + # source://udb_helpers//lib/udb_helpers/backend_helpers.rb#267 def resolve_links(path_or_str); end end end @@ -40,6 +40,9 @@ end module Udb::Helpers::TemplateHelpers include ::Udb::Helpers::WavedromUtil + # source://udb_helpers//lib/udb_helpers/backend_helpers.rb#233 + def anchor_for_non_isa_spec(name); end + # source://udb_helpers//lib/udb_helpers/backend_helpers.rb#226 def anchor_for_udb_doc_cov_pt(org, id); end @@ -61,7 +64,7 @@ module Udb::Helpers::TemplateHelpers # source://udb_helpers//lib/udb_helpers/backend_helpers.rb#199 def anchor_for_udb_doc_inst(name); end - # source://udb_helpers//lib/udb_helpers/backend_helpers.rb#234 + # source://udb_helpers//lib/udb_helpers/backend_helpers.rb#240 def anchor_inside_idl_inst_code(inst_name, id); end # source://udb_helpers//lib/udb_helpers/backend_helpers.rb#174 @@ -93,7 +96,7 @@ module Udb::Helpers::TemplateHelpers private - # source://udb_helpers//lib/udb_helpers/backend_helpers.rb#240 + # source://udb_helpers//lib/udb_helpers/backend_helpers.rb#246 def check_no_periods(s); end end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/unicode-display_width@2.6.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/unicode-display_width@2.6.0.rbi new file mode 100644 index 0000000000..1976b235fb --- /dev/null +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/unicode-display_width@2.6.0.rbi @@ -0,0 +1,62 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `unicode-display_width` gem. +# Please instead update this file by running `bin/tapioca gem unicode-display_width`. + + +# source://unicode-display_width//lib/unicode/display_width/constants.rb#3 +module Unicode; end + +# source://unicode-display_width//lib/unicode/display_width/constants.rb#4 +class Unicode::DisplayWidth + # source://unicode-display_width//lib/unicode/display_width.rb#104 + def initialize(ambiguous: T.unsafe(nil), overwrite: T.unsafe(nil), emoji: T.unsafe(nil)); end + + # source://unicode-display_width//lib/unicode/display_width.rb#110 + def get_config(**kwargs); end + + # source://unicode-display_width//lib/unicode/display_width.rb#118 + def of(string, **kwargs); end + + class << self + # source://unicode-display_width//lib/unicode/display_width/index.rb#14 + def decompress_index(index, level); end + + # source://unicode-display_width//lib/unicode/display_width.rb#86 + def emoji_extra_width_of(string, ambiguous = T.unsafe(nil), overwrite = T.unsafe(nil), _ = T.unsafe(nil)); end + + # source://unicode-display_width//lib/unicode/display_width.rb#12 + def of(string, ambiguous = T.unsafe(nil), overwrite = T.unsafe(nil), options = T.unsafe(nil)); end + + # source://unicode-display_width//lib/unicode/display_width.rb#57 + def width_all_features(string, ambiguous, overwrite, options); end + + # source://unicode-display_width//lib/unicode/display_width.rb#30 + def width_no_overwrite(string, ambiguous, options = T.unsafe(nil)); end + end +end + +# source://unicode-display_width//lib/unicode/display_width.rb#9 +Unicode::DisplayWidth::ASCII_NON_ZERO_REGEX = T.let(T.unsafe(nil), Regexp) + +# source://unicode-display_width//lib/unicode/display_width/constants.rb#7 +Unicode::DisplayWidth::DATA_DIRECTORY = T.let(T.unsafe(nil), String) + +# source://unicode-display_width//lib/unicode/display_width.rb#10 +Unicode::DisplayWidth::FIRST_4096 = T.let(T.unsafe(nil), Array) + +# source://unicode-display_width//lib/unicode/display_width/index.rb#11 +Unicode::DisplayWidth::INDEX = T.let(T.unsafe(nil), Array) + +# source://unicode-display_width//lib/unicode/display_width/constants.rb#8 +Unicode::DisplayWidth::INDEX_FILENAME = T.let(T.unsafe(nil), String) + +# source://unicode-display_width//lib/unicode/display_width.rb#8 +Unicode::DisplayWidth::INITIAL_DEPTH = T.let(T.unsafe(nil), Integer) + +# source://unicode-display_width//lib/unicode/display_width/constants.rb#6 +Unicode::DisplayWidth::UNICODE_VERSION = T.let(T.unsafe(nil), String) + +# source://unicode-display_width//lib/unicode/display_width/constants.rb#5 +Unicode::DisplayWidth::VERSION = T.let(T.unsafe(nil), String) diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi deleted file mode 100644 index de6e75664b..0000000000 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/unicode-display_width@3.1.4.rbi +++ /dev/null @@ -1,106 +0,0 @@ -# typed: true - -# DO NOT EDIT MANUALLY -# This is an autogenerated file for types exported from the `unicode-display_width` gem. -# Please instead update this file by running `bin/tapioca gem unicode-display_width`. - - -# source://unicode-display_width//lib/unicode/display_width/constants.rb#3 -module Unicode; end - -# source://unicode-display_width//lib/unicode/display_width/constants.rb#4 -class Unicode::DisplayWidth - # source://unicode-display_width//lib/unicode/display_width.rb#229 - def initialize(ambiguous: T.unsafe(nil), overwrite: T.unsafe(nil), emoji: T.unsafe(nil)); end - - # source://unicode-display_width//lib/unicode/display_width.rb#235 - def get_config(**kwargs); end - - # source://unicode-display_width//lib/unicode/display_width.rb#243 - def of(string, **kwargs); end - - class << self - # source://unicode-display_width//lib/unicode/display_width/index.rb#14 - def decompress_index(index, level); end - - # source://unicode-display_width//lib/unicode/display_width.rb#143 - def emoji_width(string, mode = T.unsafe(nil), ambiguous = T.unsafe(nil)); end - - # source://unicode-display_width//lib/unicode/display_width.rb#173 - def emoji_width_via_possible(string, emoji_set_regex, strict_eaw = T.unsafe(nil), ambiguous = T.unsafe(nil)); end - - # source://unicode-display_width//lib/unicode/display_width.rb#201 - def normalize_options(string, ambiguous = T.unsafe(nil), overwrite = T.unsafe(nil), old_options = T.unsafe(nil), **options); end - - # source://unicode-display_width//lib/unicode/display_width.rb#51 - def of(string, ambiguous = T.unsafe(nil), overwrite = T.unsafe(nil), old_options = T.unsafe(nil), **options); end - - # source://unicode-display_width//lib/unicode/display_width.rb#133 - def width_ascii(string); end - - # source://unicode-display_width//lib/unicode/display_width.rb#117 - def width_custom(string, overwrite); end - end -end - -# source://unicode-display_width//lib/unicode/display_width.rb#16 -Unicode::DisplayWidth::AMBIGUOUS_MAP = T.let(T.unsafe(nil), Hash) - -# source://unicode-display_width//lib/unicode/display_width.rb#15 -Unicode::DisplayWidth::ASCII_BACKSPACE = T.let(T.unsafe(nil), String) - -# source://unicode-display_width//lib/unicode/display_width.rb#13 -Unicode::DisplayWidth::ASCII_NON_ZERO_REGEX = T.let(T.unsafe(nil), Regexp) - -# source://unicode-display_width//lib/unicode/display_width.rb#14 -Unicode::DisplayWidth::ASCII_NON_ZERO_STRING = T.let(T.unsafe(nil), String) - -# source://unicode-display_width//lib/unicode/display_width/constants.rb#7 -Unicode::DisplayWidth::DATA_DIRECTORY = T.let(T.unsafe(nil), String) - -# source://unicode-display_width//lib/unicode/display_width.rb#11 -Unicode::DisplayWidth::DEFAULT_AMBIGUOUS = T.let(T.unsafe(nil), Integer) - -# source://unicode-display_width//lib/unicode/display_width.rb#32 -Unicode::DisplayWidth::EMOJI_SEQUENCES_REGEX_MAPPING = T.let(T.unsafe(nil), Hash) - -# source://unicode-display_width//lib/unicode/display_width/emoji_support.rb#6 -module Unicode::DisplayWidth::EmojiSupport - class << self - # source://unicode-display_width//lib/unicode/display_width/emoji_support.rb#15 - def recommended; end - end -end - -# source://unicode-display_width//lib/unicode/display_width.rb#28 -Unicode::DisplayWidth::FIRST_4096 = T.let(T.unsafe(nil), Hash) - -# source://unicode-display_width//lib/unicode/display_width.rb#20 -Unicode::DisplayWidth::FIRST_AMBIGUOUS = T.let(T.unsafe(nil), Hash) - -# source://unicode-display_width//lib/unicode/display_width/index.rb#11 -Unicode::DisplayWidth::INDEX = T.let(T.unsafe(nil), Hash) - -# source://unicode-display_width//lib/unicode/display_width/constants.rb#8 -Unicode::DisplayWidth::INDEX_FILENAME = T.let(T.unsafe(nil), String) - -# source://unicode-display_width//lib/unicode/display_width.rb#12 -Unicode::DisplayWidth::INITIAL_DEPTH = T.let(T.unsafe(nil), Integer) - -# source://unicode-display_width//lib/unicode/display_width.rb#24 -Unicode::DisplayWidth::NOT_COMMON_NARROW_REGEX = T.let(T.unsafe(nil), Hash) - -# source://unicode-display_width//lib/unicode/display_width.rb#47 -Unicode::DisplayWidth::REGEX_EMOJI_ALL_SEQUENCES = T.let(T.unsafe(nil), Regexp) - -# source://unicode-display_width//lib/unicode/display_width.rb#48 -Unicode::DisplayWidth::REGEX_EMOJI_ALL_SEQUENCES_AND_VS16 = T.let(T.unsafe(nil), Regexp) - -# source://unicode-display_width//lib/unicode/display_width.rb#37 -Unicode::DisplayWidth::REGEX_EMOJI_VS16 = T.let(T.unsafe(nil), Regexp) - -# source://unicode-display_width//lib/unicode/display_width/constants.rb#6 -Unicode::DisplayWidth::UNICODE_VERSION = T.let(T.unsafe(nil), String) - -# source://unicode-display_width//lib/unicode/display_width/constants.rb#5 -Unicode::DisplayWidth::VERSION = T.let(T.unsafe(nil), String) diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi deleted file mode 100644 index 7a21f1de73..0000000000 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/unicode-emoji@4.0.4.rbi +++ /dev/null @@ -1,178 +0,0 @@ -# typed: true - -# DO NOT EDIT MANUALLY -# This is an autogenerated file for types exported from the `unicode-emoji` gem. -# Please instead update this file by running `bin/tapioca gem unicode-emoji`. - - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#3 -module Unicode; end - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#4 -module Unicode::Emoji - class << self - # source://unicode-emoji//lib/unicode/emoji.rb#80 - def list(key = T.unsafe(nil), sub_key = T.unsafe(nil)); end - - # source://unicode-emoji//lib/unicode/emoji.rb#68 - def properties(char); end - - private - - # source://unicode-emoji//lib/unicode/emoji.rb#88 - def get_codepoint_value(char); end - end -end - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#31 -Unicode::Emoji::CANCEL_TAG = T.let(T.unsafe(nil), Integer) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#7 -Unicode::Emoji::CLDR_VERSION = T.let(T.unsafe(nil), String) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#8 -Unicode::Emoji::DATA_DIRECTORY = T.let(T.unsafe(nil), String) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#8 -Unicode::Emoji::EMOJI_CHAR = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#21 -Unicode::Emoji::EMOJI_COMPONENT = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#42 -Unicode::Emoji::EMOJI_KEYCAPS = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#37 -Unicode::Emoji::EMOJI_KEYCAP_SUFFIX = T.let(T.unsafe(nil), Integer) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#31 -Unicode::Emoji::EMOJI_MODIFIERS = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#26 -Unicode::Emoji::EMOJI_MODIFIER_BASES = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#13 -Unicode::Emoji::EMOJI_PRESENTATION = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#28 -Unicode::Emoji::EMOJI_TAG_BASE_FLAG = T.let(T.unsafe(nil), Integer) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#22 -Unicode::Emoji::EMOJI_VARIATION_SELECTOR = T.let(T.unsafe(nil), Integer) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#6 -Unicode::Emoji::EMOJI_VERSION = T.let(T.unsafe(nil), String) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#36 -Unicode::Emoji::EXTENDED_PICTOGRAPHIC = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#39 -Unicode::Emoji::EXTENDED_PICTOGRAPHIC_NO_EMOJI = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/index.rb#11 -Unicode::Emoji::INDEX = T.let(T.unsafe(nil), Hash) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#9 -Unicode::Emoji::INDEX_FILENAME = T.let(T.unsafe(nil), String) - -# source://unicode-emoji//lib/unicode/emoji/list.rb#6 -Unicode::Emoji::LIST = T.let(T.unsafe(nil), Hash) - -# source://unicode-emoji//lib/unicode/emoji/list.rb#9 -Unicode::Emoji::LIST_REMOVED_KEYS = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#12 -Unicode::Emoji::PROPERTY_NAMES = T.let(T.unsafe(nil), Hash) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#51 -Unicode::Emoji::RECOMMENDED_SUBDIVISION_FLAGS = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#54 -Unicode::Emoji::RECOMMENDED_ZWJ_SEQUENCES = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex.rb#6 -Unicode::Emoji::REGEX = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_basic.rb#6 -Unicode::Emoji::REGEX_BASIC = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_emoji_keycap.rb#6 -Unicode::Emoji::REGEX_EMOJI_KEYCAP = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_include_mqe.rb#6 -Unicode::Emoji::REGEX_INCLUDE_MQE = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_include_mqe_uqe.rb#6 -Unicode::Emoji::REGEX_INCLUDE_MQE_UQE = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_include_text.rb#6 -Unicode::Emoji::REGEX_INCLUDE_TEXT = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_picto.rb#6 -Unicode::Emoji::REGEX_PICTO = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_picto_no_emoji.rb#6 -Unicode::Emoji::REGEX_PICTO_NO_EMOJI = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_possible.rb#6 -Unicode::Emoji::REGEX_POSSIBLE = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_prop_component.rb#6 -Unicode::Emoji::REGEX_PROP_COMPONENT = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_prop_emoji.rb#6 -Unicode::Emoji::REGEX_PROP_EMOJI = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_prop_modifier.rb#6 -Unicode::Emoji::REGEX_PROP_MODIFIER = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_prop_modifier_base.rb#6 -Unicode::Emoji::REGEX_PROP_MODIFIER_BASE = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_prop_presentation.rb#6 -Unicode::Emoji::REGEX_PROP_PRESENTATION = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_text.rb#6 -Unicode::Emoji::REGEX_TEXT = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_text_presentation.rb#6 -Unicode::Emoji::REGEX_TEXT_PRESENTATION = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_valid.rb#6 -Unicode::Emoji::REGEX_VALID = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_valid_include_text.rb#6 -Unicode::Emoji::REGEX_VALID_INCLUDE_TEXT = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_well_formed.rb#6 -Unicode::Emoji::REGEX_WELL_FORMED = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/generated/regex_well_formed_include_text.rb#6 -Unicode::Emoji::REGEX_WELL_FORMED_INCLUDE_TEXT = T.let(T.unsafe(nil), Regexp) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#43 -Unicode::Emoji::REGIONAL_INDICATORS = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#34 -Unicode::Emoji::SPEC_TAGS = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#16 -Unicode::Emoji::TEXT_PRESENTATION = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#25 -Unicode::Emoji::TEXT_VARIATION_SELECTOR = T.let(T.unsafe(nil), Integer) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#45 -Unicode::Emoji::VALID_REGION_FLAGS = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/lazy_constants.rb#48 -Unicode::Emoji::VALID_SUBDIVISIONS = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#5 -Unicode::Emoji::VERSION = T.let(T.unsafe(nil), String) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#47 -Unicode::Emoji::VISUAL_COMPONENT = T.let(T.unsafe(nil), Array) - -# source://unicode-emoji//lib/unicode/emoji/constants.rb#40 -Unicode::Emoji::ZWJ = T.let(T.unsafe(nil), Integer) diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/uri@1.0.3.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/uri@1.0.4.rbi similarity index 87% rename from tools/ruby-gems/udb/sorbet/rbi/gems/uri@1.0.3.rbi rename to tools/ruby-gems/udb/sorbet/rbi/gems/uri@1.0.4.rbi index 036587ec15..5b01ff8592 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/uri@1.0.3.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/uri@1.0.4.rbi @@ -164,85 +164,88 @@ class URI::Generic # source://uri//lib/uri/generic.rb#169 def initialize(scheme, userinfo, host, port, registry, path, opaque, query, fragment, parser = T.unsafe(nil), arg_check = T.unsafe(nil)); end - # source://uri//lib/uri/generic.rb#1109 + # source://uri//lib/uri/generic.rb#1124 def +(oth); end - # source://uri//lib/uri/generic.rb#1261 + # source://uri//lib/uri/generic.rb#1274 def -(oth); end - # source://uri//lib/uri/generic.rb#1386 + # source://uri//lib/uri/generic.rb#1399 def ==(oth); end - # source://uri//lib/uri/generic.rb#972 + # source://uri//lib/uri/generic.rb#987 def absolute; end - # source://uri//lib/uri/generic.rb#972 + # source://uri//lib/uri/generic.rb#987 def absolute?; end - # source://uri//lib/uri/generic.rb#1465 + # source://uri//lib/uri/generic.rb#579 + def authority; end + + # source://uri//lib/uri/generic.rb#1478 def coerce(oth); end # source://uri//lib/uri/generic.rb#313 def component; end - # source://uri//lib/uri/generic.rb#583 + # source://uri//lib/uri/generic.rb#589 def decoded_password; end - # source://uri//lib/uri/generic.rb#578 + # source://uri//lib/uri/generic.rb#584 def decoded_user; end # source://uri//lib/uri/generic.rb#39 def default_port; end - # source://uri//lib/uri/generic.rb#1400 + # source://uri//lib/uri/generic.rb#1413 def eql?(oth); end - # source://uri//lib/uri/generic.rb#1491 + # source://uri//lib/uri/generic.rb#1504 def find_proxy(env = T.unsafe(nil)); end # source://uri//lib/uri/generic.rb#283 def fragment; end - # source://uri//lib/uri/generic.rb#929 + # source://uri//lib/uri/generic.rb#944 def fragment=(v); end - # source://uri//lib/uri/generic.rb#1395 + # source://uri//lib/uri/generic.rb#1408 def hash; end - # source://uri//lib/uri/generic.rb#961 + # source://uri//lib/uri/generic.rb#976 def hierarchical?; end # source://uri//lib/uri/generic.rb#243 def host; end - # source://uri//lib/uri/generic.rb#639 + # source://uri//lib/uri/generic.rb#652 def host=(v); end - # source://uri//lib/uri/generic.rb#654 + # source://uri//lib/uri/generic.rb#668 def hostname; end - # source://uri//lib/uri/generic.rb#671 + # source://uri//lib/uri/generic.rb#685 def hostname=(v); end - # source://uri//lib/uri/generic.rb#1442 + # source://uri//lib/uri/generic.rb#1455 def inspect; end - # source://uri//lib/uri/generic.rb#1109 + # source://uri//lib/uri/generic.rb#1124 def merge(oth); end - # source://uri//lib/uri/generic.rb#1081 + # source://uri//lib/uri/generic.rb#1096 def merge!(oth); end - # source://uri//lib/uri/generic.rb#1318 + # source://uri//lib/uri/generic.rb#1331 def normalize; end - # source://uri//lib/uri/generic.rb#1327 + # source://uri//lib/uri/generic.rb#1340 def normalize!; end # source://uri//lib/uri/generic.rb#277 def opaque; end - # source://uri//lib/uri/generic.rb#901 + # source://uri//lib/uri/generic.rb#916 def opaque=(v); end # source://uri//lib/uri/generic.rb#289 @@ -257,34 +260,34 @@ class URI::Generic # source://uri//lib/uri/generic.rb#260 def path; end - # source://uri//lib/uri/generic.rb#815 + # source://uri//lib/uri/generic.rb#830 def path=(v); end # source://uri//lib/uri/generic.rb#250 def port; end - # source://uri//lib/uri/generic.rb#729 + # source://uri//lib/uri/generic.rb#743 def port=(v); end # source://uri//lib/uri/generic.rb#266 def query; end - # source://uri//lib/uri/generic.rb#839 + # source://uri//lib/uri/generic.rb#854 def query=(v); end # source://uri//lib/uri/generic.rb#252 def registry; end - # source://uri//lib/uri/generic.rb#745 + # source://uri//lib/uri/generic.rb#760 def registry=(v); end - # source://uri//lib/uri/generic.rb#984 + # source://uri//lib/uri/generic.rb#999 def relative?; end - # source://uri//lib/uri/generic.rb#1261 + # source://uri//lib/uri/generic.rb#1274 def route_from(oth); end - # source://uri//lib/uri/generic.rb#1301 + # source://uri//lib/uri/generic.rb#1314 def route_to(oth); end # source://uri//lib/uri/generic.rb#221 @@ -293,13 +296,13 @@ class URI::Generic # source://uri//lib/uri/generic.rb#360 def scheme=(v); end - # source://uri//lib/uri/generic.rb#1431 + # source://uri//lib/uri/generic.rb#1444 def select(*components); end - # source://uri//lib/uri/generic.rb#1342 + # source://uri//lib/uri/generic.rb#1355 def to_s; end - # source://uri//lib/uri/generic.rb#1342 + # source://uri//lib/uri/generic.rb#1355 def to_str; end # source://uri//lib/uri/generic.rb#568 @@ -316,25 +319,28 @@ class URI::Generic protected - # source://uri//lib/uri/generic.rb#1407 + # source://uri//lib/uri/generic.rb#1420 def component_ary; end - # source://uri//lib/uri/generic.rb#613 + # source://uri//lib/uri/generic.rb#627 + def set_authority(user, password, host, port = T.unsafe(nil)); end + + # source://uri//lib/uri/generic.rb#619 def set_host(v); end - # source://uri//lib/uri/generic.rb#883 + # source://uri//lib/uri/generic.rb#898 def set_opaque(v); end # source://uri//lib/uri/generic.rb#534 def set_password(v); end - # source://uri//lib/uri/generic.rb#789 + # source://uri//lib/uri/generic.rb#804 def set_path(v); end - # source://uri//lib/uri/generic.rb#702 + # source://uri//lib/uri/generic.rb#716 def set_port(v); end - # source://uri//lib/uri/generic.rb#740 + # source://uri//lib/uri/generic.rb#755 def set_registry(v); end # source://uri//lib/uri/generic.rb#334 @@ -348,22 +354,22 @@ class URI::Generic private - # source://uri//lib/uri/generic.rb#594 + # source://uri//lib/uri/generic.rb#600 def check_host(v); end - # source://uri//lib/uri/generic.rb#861 + # source://uri//lib/uri/generic.rb#876 def check_opaque(v); end # source://uri//lib/uri/generic.rb#417 def check_password(v, user = T.unsafe(nil)); end - # source://uri//lib/uri/generic.rb#757 + # source://uri//lib/uri/generic.rb#772 def check_path(v); end - # source://uri//lib/uri/generic.rb#683 + # source://uri//lib/uri/generic.rb#697 def check_port(v); end - # source://uri//lib/uri/generic.rb#735 + # source://uri//lib/uri/generic.rb#750 def check_registry(v); end # source://uri//lib/uri/generic.rb#320 @@ -378,19 +384,19 @@ class URI::Generic # source://uri//lib/uri/generic.rb#551 def escape_userpass(v); end - # source://uri//lib/uri/generic.rb#1000 + # source://uri//lib/uri/generic.rb#1015 def merge_path(base, rel); end # source://uri//lib/uri/generic.rb#299 def replace!(oth); end - # source://uri//lib/uri/generic.rb#1193 + # source://uri//lib/uri/generic.rb#1206 def route_from0(oth); end - # source://uri//lib/uri/generic.rb#1154 + # source://uri//lib/uri/generic.rb#1167 def route_from_path(src, dst); end - # source://uri//lib/uri/generic.rb#991 + # source://uri//lib/uri/generic.rb#1006 def split_path(path); end # source://uri//lib/uri/generic.rb#542 @@ -409,7 +415,7 @@ class URI::Generic # source://uri//lib/uri/generic.rb#32 def default_port; end - # source://uri//lib/uri/generic.rb#1557 + # source://uri//lib/uri/generic.rb#1570 def use_proxy?(hostname, addr, port, no_proxy); end # source://uri//lib/uri/generic.rb#63 diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi index 3704f88caf..52dd8ead9f 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi @@ -306,7 +306,7 @@ class YARDSorbet::TStructProp < ::T::Struct const :types, T::Array[::String] class << self - # source://sorbet-runtime/0.5.12189/lib/types/struct.rb#13 + # source://sorbet-runtime/0.6.12645/lib/types/struct.rb#13 def inherited(s); end end end diff --git a/tools/ruby-gems/udb/sorbet/rbi/gems/yard@0.9.37.rbi b/tools/ruby-gems/udb/sorbet/rbi/gems/yard@0.9.37.rbi index 4805ffee16..15478fc4d2 100644 --- a/tools/ruby-gems/udb/sorbet/rbi/gems/yard@0.9.37.rbi +++ b/tools/ruby-gems/udb/sorbet/rbi/gems/yard@0.9.37.rbi @@ -254,6 +254,7 @@ end class Object < ::BasicObject include ::Kernel include ::PP::ObjectMixin + include ::Udb::Helpers::WavedromUtil private diff --git a/tools/ruby-gems/udb/sorbet/tapioca/require.rb b/tools/ruby-gems/udb/sorbet/tapioca/require.rb index a40173b8a9..4f076b48b1 100644 --- a/tools/ruby-gems/udb/sorbet/tapioca/require.rb +++ b/tools/ruby-gems/udb/sorbet/tapioca/require.rb @@ -32,3 +32,4 @@ require "udb/architecture" require "udb_helpers/backend_helpers" require "yaml" +require "minisat" diff --git a/tools/ruby-gems/udb/test/boolean_expressions.json b/tools/ruby-gems/udb/test/boolean_expressions.json new file mode 100644 index 0000000000..e326bb357f --- /dev/null +++ b/tools/ruby-gems/udb/test/boolean_expressions.json @@ -0,0 +1,17513 @@ +[ + [":XOR", ["a"], ["b"]], + [ + ":NOT", + [ + ":XOR", + [":NOT", [":AND", ["a"], [":OR", ["a"], [":NOT", [":NOT", ["a"]]]]]], + ["a"] + ] + ], + [ + ":XOR", + ["a"], + [ + ":AND", + [":NOT", [":OR", ["e"], [":IMPLIES", ["d"], ["b"]]]], + [ + ":AND", + [ + ":IMPLIES", + [":IMPLIES", ["e"], ["e"]], + [":XOR", [":XOR", ["e"], ["e"]], [":OR", [":NOT", ["f"]], ["c"]]] + ], + ["f"] + ] + ] + ], + [":XOR", ["e"], ["c"]], + [ + ":XOR", + [":NOT", ["c"]], + [ + ":XOR", + [":OR", [":NOT", [":AND", ["d"], ["c"]]], [":AND", ["g"], ["c"]]], + ["b"] + ] + ], + [":XOR", [":XOR", ["e"], ["e"]], [":IMPLIES", ["a"], ["d"]]], + [ + ":OR", + ["c"], + [ + ":XOR", + [ + ":AND", + [ + ":AND", + [ + ":IMPLIES", + ["a"], + [ + ":AND", + ["b"], + [ + ":AND", + [":IMPLIES", ["c"], [":IMPLIES", [":NOT", ["a"]], ["b"]]], + [ + ":AND", + [":OR", ["a"], ["a"]], + [ + ":IMPLIES", + ["a"], + [":OR", [":AND", [":XOR", ["c"], ["c"]], ["b"]], ["c"]] + ] + ] + ] + ] + ], + ["c"] + ], + ["c"] + ], + [ + ":OR", + ["c"], + [ + ":NOT", + [ + ":NOT", + [ + ":IMPLIES", + [":AND", [":XOR", ["b"], [":IMPLIES", ["b"], ["a"]]], ["a"]], + [ + ":OR", + ["c"], + [ + ":AND", + [ + ":XOR", + [":IMPLIES", ["c"], [":XOR", ["a"], [":OR", ["c"], ["b"]]]], + ["c"] + ], + ["a"] + ] + ] + ] + ] + ] + ] + ] + ], + [":NOT", [":IMPLIES", ["c"], ["b"]]], + [ + ":XOR", + ["d"], + [ + ":IMPLIES", + [":OR", ["d"], ["b"]], + [ + ":AND", + [":AND", [":OR", ["f"], ["c"]], ["e"]], + [":OR", [":XOR", [":NOT", ["d"]], ["c"]], ["e"]] + ] + ] + ], + [ + ":IMPLIES", + [":OR", [":NOT", ["b"]], ["b"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":OR", + [":IMPLIES", ["b"], ["a"]], + [":OR", ["b"], [":NOT", [":OR", ["c"], ["c"]]]] + ], + ["c"] + ], + ["b"] + ] + ], + [":IMPLIES", ["f"], ["c"]], + [":XOR", ["j"], ["i"]], + [":NOT", ["a"]], + [":IMPLIES", ["b"], ["a"]], + [":AND", ["b"], ["b"]], + [":IMPLIES", [":AND", [":NOT", ["c"]], ["c"]], ["b"]], + [":NOT", [":NOT", ["c"]]], + [":AND", ["b"], ["a"]], + [ + ":AND", + [ + ":NOT", + [ + ":IMPLIES", + [":XOR", [":IMPLIES", ["b"], ["b"]], ["e"]], + [ + ":XOR", + [":XOR", ["e"], ["a"]], + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + ["a"], + [ + ":AND", + [":NOT", [":AND", [":OR", ["b"], ["e"]], ["c"]]], + ["c"] + ] + ] + ] + ] + ] + ] + ], + [ + ":XOR", + [":NOT", ["f"]], + [ + ":AND", + [ + ":IMPLIES", + ["d"], + [ + ":OR", + ["d"], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":OR", + [ + ":OR", + ["b"], + [":XOR", [":AND", [":OR", ["e"], ["f"]], ["f"]], ["a"]] + ], + [":NOT", [":OR", ["c"], ["c"]]] + ] + ], + ["a"] + ] + ] + ], + [ + ":AND", + [":OR", [":OR", ["d"], ["b"]], [":IMPLIES", ["b"], ["f"]]], + [":OR", ["f"], ["a"]] + ] + ] + ] + ], + [":XOR", ["d"], ["a"]], + [ + ":OR", + [ + ":NOT", + [ + ":OR", + [ + ":OR", + ["a"], + [ + ":NOT", + [ + ":XOR", + ["a"], + [ + ":XOR", + [ + ":XOR", + [":IMPLIES", ["b"], ["b"]], + [":AND", ["c"], [":NOT", [":IMPLIES", ["b"], ["a"]]]] + ], + ["c"] + ] + ] + ] + ], + [":IMPLIES", [":IMPLIES", [":AND", ["b"], ["b"]], ["b"]], ["a"]] + ] + ], + ["c"] + ], + [ + ":NOT", + [ + ":OR", + ["e"], + [ + ":OR", + [":NOT", ["d"]], + [ + ":OR", + [ + ":AND", + [ + ":XOR", + [ + ":OR", + [":XOR", ["f"], [":AND", ["j"], ["d"]]], + [":AND", ["g"], [":XOR", ["i"], ["i"]]] + ], + ["h"] + ], + ["b"] + ], + ["e"] + ] + ] + ] + ], + [ + ":NOT", + [ + ":OR", + ["f"], + [ + ":XOR", + [":IMPLIES", ["c"], ["f"]], + [ + ":OR", + [ + ":OR", + [ + ":XOR", + [":AND", [":OR", [":OR", ["d"], [":NOT", ["d"]]], ["f"]], ["f"]], + [":NOT", ["f"]] + ], + ["d"] + ], + ["d"] + ] + ] + ] + ], + [":NOT", [":XOR", [":XOR", ["d"], ["d"]], ["f"]]], + [":IMPLIES", ["b"], [":XOR", ["i"], ["c"]]], + [":NOT", ["h"]], + [":IMPLIES", [":IMPLIES", ["b"], ["b"]], ["a"]], + [ + ":IMPLIES", + [":NOT", [":AND", [":XOR", [":IMPLIES", ["a"], ["d"]], ["e"]], ["b"]]], + ["i"] + ], + [ + ":AND", + ["b"], + [ + ":XOR", + [":AND", [":OR", ["a"], [":XOR", ["a"], [":OR", ["c"], ["e"]]]], ["c"]], + [ + ":IMPLIES", + [":XOR", ["i"], [":IMPLIES", [":XOR", ["g"], [":NOT", ["a"]]], ["g"]]], + ["h"] + ] + ] + ], + [":OR", [":NOT", ["g"]], ["c"]], + [":IMPLIES", ["d"], [":NOT", [":NOT", [":XOR", ["d"], ["d"]]]]], + [ + ":NOT", + [ + ":AND", + ["b"], + [ + ":OR", + [ + ":AND", + [":OR", [":OR", [":OR", ["b"], ["a"]], [":NOT", ["a"]]], ["a"]], + ["b"] + ], + ["a"] + ] + ] + ], + [ + ":XOR", + [ + ":OR", + [ + ":IMPLIES", + ["b"], + [":AND", [":XOR", [":XOR", ["e"], ["d"]], ["c"]], ["f"]] + ], + ["e"] + ], + ["e"] + ], + [":XOR", ["f"], ["j"]], + [":IMPLIES", ["a"], [":OR", ["a"], ["b"]]], + [":OR", ["d"], ["d"]], + [ + ":NOT", + [":XOR", [":IMPLIES", [":AND", ["e"], [":OR", ["f"], ["e"]]], ["d"]], ["g"]] + ], + [ + ":XOR", + [ + ":NOT", + [ + ":OR", + [ + ":NOT", + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + [ + ":OR", + [ + ":OR", + ["d"], + [ + ":AND", + [ + ":IMPLIES", + [":NOT", ["e"]], + [ + ":AND", + [ + ":OR", + [":IMPLIES", ["f"], ["e"]], + [ + ":NOT", + [ + ":AND", + [":IMPLIES", [":XOR", ["f"], ["a"]], ["d"]], + ["a"] + ] + ] + ], + ["a"] + ] + ], + [":AND", [":OR", ["g"], ["e"]], ["f"]] + ] + ], + ["d"] + ], + [ + ":XOR", + ["a"], + [":XOR", [":IMPLIES", [":XOR", ["e"], ["e"]], ["b"]], ["e"]] + ] + ] + ] + ] + ], + [":XOR", ["b"], ["e"]] + ] + ], + [":NOT", ["e"]] + ], + [":IMPLIES", ["c"], ["a"]], + [":NOT", ["a"]], + [":NOT", ["a"]], + [":IMPLIES", ["a"], ["b"]], + [ + ":OR", + [ + ":OR", + [":IMPLIES", [":XOR", [":NOT", ["a"]], [":AND", ["a"], ["a"]]], ["a"]], + [":AND", ["a"], [":NOT", ["a"]]] + ], + ["a"] + ], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":OR", + [":NOT", [":OR", ["b"], [":XOR", ["d"], ["a"]]]], + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [":OR", ["f"], [":OR", [":AND", ["g"], ["h"]], ["g"]]], + [ + ":OR", + ["b"], + [ + ":OR", + [":OR", ["c"], [":IMPLIES", ["a"], [":NOT", ["c"]]]], + ["h"] + ] + ] + ], + [":NOT", ["f"]] + ], + ["a"] + ] + ] + ], + [":NOT", ["b"]] + ], + [ + ":IMPLIES", + [":XOR", ["a"], ["b"]], + [":OR", [":NOT", ["c"]], [":NOT", [":OR", [":NOT", ["b"]], ["c"]]]] + ], + [":XOR", ["j"], ["b"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + [":AND", ["a"], [":IMPLIES", ["e"], ["d"]]], + [":IMPLIES", [":OR", ["f"], [":XOR", ["d"], ["f"]]], [":NOT", ["a"]]] + ], + ["c"] + ], + [":XOR", [":AND", ["g"], ["c"]], ["g"]], + [":OR", [":XOR", ["f"], ["d"]], ["b"]], + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["a"], + [ + ":NOT", + [ + ":AND", + ["h"], + [":NOT", [":XOR", ["a"], [":IMPLIES", ["e"], ["d"]]]] + ] + ] + ], + ["e"] + ], + [":OR", ["b"], ["c"]] + ], + ["g"] + ], + [":IMPLIES", ["b"], [":XOR", ["c"], ["c"]]], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["c"], + [ + ":OR", + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":AND", + [":OR", [":XOR", ["g"], ["f"]], ["b"]], + [ + ":IMPLIES", + ["f"], + [":OR", ["d"], [":IMPLIES", ["h"], ["b"]]] + ] + ], + [":XOR", ["c"], ["g"]] + ], + [":NOT", [":XOR", ["c"], ["f"]]] + ], + [ + ":NOT", + [ + ":AND", + [ + ":AND", + [ + ":AND", + [ + ":OR", + [ + ":AND", + ["c"], + [ + ":AND", + ["c"], + [ + ":AND", + [ + ":AND", + ["h"], + [ + ":IMPLIES", + ["i"], + [":NOT", [":NOT", [":NOT", ["b"]]]] + ] + ], + ["f"] + ] + ] + ], + ["d"] + ], + [":XOR", ["b"], ["c"]] + ], + [ + ":OR", + [ + ":OR", + [ + ":OR", + ["h"], + [":OR", [":XOR", ["g"], [":NOT", ["i"]]], ["i"]] + ], + [":OR", ["b"], [":AND", ["g"], ["b"]]] + ], + [":XOR", ["c"], [":NOT", [":NOT", [":OR", ["i"], ["g"]]]]] + ] + ], + [":AND", [":IMPLIES", ["h"], ["g"]], ["g"]] + ] + ] + ] + ], + [":NOT", ["i"]] + ] + ], + ["h"] + ], + [":OR", ["b"], [":IMPLIES", ["b"], ["b"]]], + [":XOR", [":AND", ["d"], ["i"]], [":AND", ["f"], ["f"]]], + [":OR", ["e"], ["d"]], + [":OR", ["g"], ["f"]], + [ + ":IMPLIES", + [ + ":OR", + [":NOT", ["a"]], + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [":AND", ["a"], [":NOT", [":XOR", ["a"], ["a"]]]], + [":NOT", ["a"]] + ] + ] + ] + ], + ["a"] + ], + [ + ":XOR", + [":NOT", ["a"]], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + [":OR", [":NOT", [":XOR", ["b"], [":XOR", ["e"], ["a"]]]], ["e"]], + [":OR", ["b"], ["a"]] + ] + ], + ["b"] + ] + ], + [ + ":NOT", + [ + ":AND", + ["a"], + [ + ":NOT", + [ + ":XOR", + ["a"], + [":NOT", [":IMPLIES", ["a"], [":IMPLIES", ["a"], ["a"]]]] + ] + ] + ] + ], + [":NOT", [":XOR", ["b"], ["d"]]], + [":NOT", ["b"]], + [":IMPLIES", ["a"], ["f"]], + [":NOT", [":NOT", ["c"]]], + [ + ":OR", + [ + ":IMPLIES", + [ + ":XOR", + [":AND", [":XOR", ["e"], ["b"]], ["b"]], + [ + ":AND", + [ + ":XOR", + ["f"], + [ + ":IMPLIES", + [ + ":AND", + [ + ":AND", + [":OR", ["c"], [":IMPLIES", ["a"], ["b"]]], + [ + ":XOR", + ["c"], + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + [":NOT", ["e"]], + [":XOR", ["d"], ["e"]] + ] + ], + ["a"] + ], + ["e"] + ] + ] + ] + ], + [":NOT", ["d"]] + ], + ["c"] + ] + ], + [":AND", ["b"], ["a"]] + ] + ], + [":IMPLIES", [":NOT", ["f"]], ["f"]] + ], + ["d"] + ], + [":IMPLIES", ["a"], ["d"]], + [":AND", ["a"], ["a"]], + [":NOT", ["g"]], + [":AND", ["a"], ["a"]], + [":XOR", [":XOR", [":NOT", ["b"]], ["e"]], ["a"]], + [ + ":AND", + [":XOR", [":IMPLIES", ["b"], ["b"]], ["e"]], + [":IMPLIES", ["d"], ["c"]] + ], + [ + ":IMPLIES", + [":OR", [":NOT", [":NOT", [":XOR", [":NOT", ["b"]], ["e"]]]], ["d"]], + [":AND", [":AND", [":NOT", [":NOT", ["b"]]], ["d"]], ["b"]] + ], + [":IMPLIES", [":AND", ["f"], ["g"]], ["a"]], + [":OR", ["f"], ["c"]], + [":XOR", ["c"], ["h"]], + [":AND", ["c"], [":OR", ["b"], [":XOR", ["i"], ["c"]]]], + [ + ":AND", + [ + ":IMPLIES", + ["b"], + [ + ":OR", + [":NOT", ["a"]], + [ + ":XOR", + ["b"], + [":AND", [":IMPLIES", ["b"], [":IMPLIES", ["a"], ["a"]]], ["b"]] + ] + ] + ], + [":AND", ["a"], ["b"]] + ], + [":NOT", ["b"]], + [":OR", [":IMPLIES", [":OR", ["b"], [":AND", ["c"], ["a"]]], ["c"]], ["a"]], + [":XOR", ["c"], ["d"]], + [ + ":OR", + ["a"], + [ + ":IMPLIES", + [":NOT", ["c"]], + [ + ":OR", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":NOT", ["b"]], + [ + ":NOT", + [ + ":AND", + ["c"], + [":OR", [":AND", [":XOR", ["a"], ["a"]], ["c"]], ["a"]] + ] + ] + ], + [":NOT", ["a"]] + ], + [":NOT", [":OR", [":AND", [":OR", ["a"], ["a"]], ["a"]], ["a"]]] + ] + ] + ], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + [ + ":OR", + [":OR", ["b"], [":IMPLIES", ["b"], ["b"]]], + [ + ":OR", + [ + ":OR", + [":IMPLIES", [":XOR", ["c"], ["b"]], ["c"]], + [ + ":IMPLIES", + [ + ":OR", + [ + ":AND", + [":IMPLIES", ["b"], ["c"]], + [ + ":NOT", + [ + ":XOR", + [":XOR", [":XOR", ["b"], ["a"]], ["a"]], + [":OR", ["c"], [":NOT", ["a"]]] + ] + ] + ], + [":NOT", [":OR", ["c"], ["a"]]] + ], + [ + ":XOR", + [":NOT", [":AND", [":IMPLIES", ["b"], ["a"]], ["b"]]], + ["a"] + ] + ] + ], + [ + ":AND", + ["b"], + [ + ":IMPLIES", + ["a"], + [ + ":AND", + ["c"], + [":AND", [":OR", ["b"], [":NOT", ["c"]]], ["b"]] + ] + ] + ] + ] + ], + ["b"] + ], + ["c"] + ] + ], + [ + ":NOT", + [ + ":OR", + [":OR", ["d"], ["b"]], + [ + ":NOT", + [ + ":AND", + ["a"], + [ + ":OR", + [ + ":OR", + ["d"], + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":OR", + [":OR", ["e"], [":OR", [":NOT", ["d"]], ["e"]]], + [ + ":AND", + ["a"], + [ + ":XOR", + [ + ":OR", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":OR", + [":AND", ["c"], ["c"]], + [":AND", ["c"], ["e"]] + ], + [ + ":AND", + [":AND", ["e"], ["c"]], + [":XOR", ["a"], [":NOT", ["d"]]] + ] + ] + ], + ["d"] + ], + [ + ":AND", + ["b"], + [":AND", ["e"], [":XOR", ["b"], ["a"]]] + ] + ] + ] + ], + ["e"] + ], + ["d"] + ], + ["b"] + ] + ], + ["b"] + ] + ] + ] + ] + ], + [ + ":AND", + ["a"], + [":IMPLIES", [":IMPLIES", ["f"], [":OR", ["d"], [":NOT", ["e"]]]], ["h"]] + ], + [":NOT", ["a"]], + [":IMPLIES", ["a"], ["c"]], + [":XOR", ["g"], [":XOR", ["e"], [":NOT", ["d"]]]], + [ + ":AND", + [ + ":AND", + ["c"], + [ + ":IMPLIES", + [ + ":OR", + [ + ":AND", + [":OR", [":IMPLIES", ["c"], ["f"]], ["a"]], + [":AND", ["c"], ["c"]] + ], + ["b"] + ], + [":NOT", ["a"]] + ] + ], + [":NOT", ["b"]] + ], + [":IMPLIES", ["a"], ["b"]], + [":XOR", ["a"], ["d"]], + [":IMPLIES", [":IMPLIES", [":AND", ["b"], ["b"]], ["b"]], ["a"]], + [":NOT", ["c"]], + [":OR", ["b"], ["d"]], + [ + ":XOR", + [ + ":XOR", + [":XOR", ["c"], ["d"]], + [ + ":AND", + [":XOR", ["d"], ["c"]], + [":AND", [":XOR", ["e"], [":NOT", [":OR", ["a"], ["c"]]]], ["e"]] + ] + ], + [":NOT", ["e"]] + ], + [ + ":NOT", + [ + ":AND", + ["f"], + [ + ":NOT", + [":OR", [":NOT", [":IMPLIES", ["e"], [":AND", ["d"], ["a"]]]], ["e"]] + ] + ] + ], + [ + ":IMPLIES", + [":XOR", [":AND", ["b"], [":IMPLIES", ["c"], [":NOT", ["a"]]]], ["d"]], + [ + ":XOR", + [":IMPLIES", ["a"], ["f"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["e"], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["d"], + [ + ":NOT", + [ + ":IMPLIES", + ["d"], + [ + ":IMPLIES", + [ + ":AND", + ["b"], + [ + ":IMPLIES", + [":NOT", [":XOR", ["a"], [":OR", ["f"], ["a"]]]], + ["d"] + ] + ], + ["d"] + ] + ] + ] + ], + ["a"] + ] + ] + ], + ["c"] + ] + ] + ], + [":IMPLIES", ["d"], ["g"]], + [":IMPLIES", ["a"], ["c"]], + [":NOT", ["a"]], + [":NOT", ["a"]], + [":OR", [":XOR", ["e"], ["e"]], [":NOT", ["b"]]], + [":NOT", [":OR", ["f"], ["c"]]], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":XOR", + [":AND", [":IMPLIES", [":NOT", [":XOR", ["b"], ["e"]]], ["e"]], ["e"]], + [":NOT", ["d"]] + ], + [ + ":NOT", + [ + ":XOR", + [ + ":OR", + [":AND", [":OR", ["d"], ["a"]], ["a"]], + [":XOR", ["g"], ["a"]] + ], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":OR", + [":IMPLIES", ["g"], [":IMPLIES", ["e"], ["a"]]], + [":OR", ["c"], ["b"]] + ], + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + [":NOT", ["b"]], + [ + ":OR", + [ + ":AND", + [":OR", [":OR", ["g"], ["a"]], ["d"]], + [ + ":AND", + [":XOR", ["b"], ["g"]], + [ + ":OR", + ["d"], + [":OR", [":AND", [":NOT", ["b"]], ["b"]], ["e"]] + ] + ] + ], + ["a"] + ] + ], + ["b"] + ] + ] + ] + ], + [ + ":NOT", + [ + ":OR", + [":OR", ["b"], ["e"]], + [":XOR", ["c"], [":OR", ["b"], ["e"]]] + ] + ] + ] + ] + ] + ], + ["c"] + ], + [":XOR", [":AND", ["b"], [":NOT", ["e"]]], ["b"]], + [":AND", [":OR", ["e"], [":AND", [":AND", ["e"], ["b"]], ["g"]]], ["a"]], + [":XOR", [":IMPLIES", ["c"], [":IMPLIES", ["d"], [":NOT", ["d"]]]], ["b"]], + [ + ":IMPLIES", + [":OR", ["a"], ["h"]], + [":IMPLIES", ["d"], [":NOT", [":AND", ["f"], ["c"]]]] + ], + [ + ":AND", + [":OR", ["i"], [":IMPLIES", ["a"], [":XOR", ["g"], [":NOT", ["f"]]]]], + ["g"] + ], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":NOT", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + [ + ":XOR", + ["f"], + [":IMPLIES", ["g"], [":XOR", [":IMPLIES", ["b"], ["f"]], ["g"]]] + ], + ["f"] + ], + [":OR", ["d"], [":NOT", [":NOT", ["e"]]]] + ] + ] + ] + ], + ["d"] + ], + [":XOR", ["c"], ["d"]], + [":OR", ["b"], ["b"]], + [ + ":AND", + [":NOT", [":IMPLIES", ["b"], ["b"]]], + [ + ":XOR", + [ + ":AND", + ["b"], + [ + ":OR", + [":IMPLIES", ["a"], [":XOR", ["b"], ["a"]]], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + [ + ":AND", + ["b"], + [ + ":XOR", + [ + ":XOR", + [":XOR", ["a"], ["b"]], + [":AND", [":AND", ["a"], [":NOT", ["a"]]], ["b"]] + ], + ["b"] + ] + ], + [ + ":AND", + ["b"], + [ + ":XOR", + ["b"], + [ + ":XOR", + [ + ":XOR", + ["a"], + [ + ":AND", + [":XOR", [":NOT", ["a"]], ["a"]], + [":XOR", ["b"], ["a"]] + ] + ], + ["b"] + ] + ] + ] + ], + ["a"] + ] + ] + ] + ], + [ + ":XOR", + ["a"], + [ + ":AND", + [ + ":AND", + [":IMPLIES", [":IMPLIES", ["a"], ["b"]], ["a"]], + [":IMPLIES", ["b"], ["a"]] + ], + [":NOT", ["b"]] + ] + ] + ] + ], + [ + ":XOR", + ["f"], + [":AND", [":XOR", ["c"], [":OR", ["c"], [":IMPLIES", ["b"], ["d"]]]], ["d"]] + ], + [ + ":IMPLIES", + ["b"], + [ + ":AND", + ["f"], + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [":NOT", [":NOT", [":XOR", [":AND", ["j"], ["f"]], ["g"]]]], + ["b"] + ], + [":IMPLIES", ["h"], ["c"]] + ], + [":NOT", ["e"]] + ] + ] + ], + [":NOT", ["f"]], + [":NOT", [":OR", ["a"], ["a"]]], + [ + ":AND", + ["a"], + [ + ":AND", + [ + ":OR", + ["b"], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + [":AND", ["b"], [":AND", ["b"], [":XOR", ["a"], ["b"]]]], + [":AND", [":OR", ["b"], ["b"]], [":XOR", [":NOT", ["b"]], ["a"]]] + ] + ] + ], + [ + ":XOR", + [":AND", [":IMPLIES", [":AND", ["b"], ["b"]], [":NOT", ["a"]]], ["b"]], + ["a"] + ] + ] + ], + [":NOT", [":OR", ["a"], [":OR", ["j"], ["a"]]]], + [":NOT", ["b"]], + [":NOT", ["a"]], + [":IMPLIES", ["b"], [":AND", [":XOR", ["j"], ["f"]], ["b"]]], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":AND", + ["a"], + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":AND", + [":IMPLIES", ["a"], ["a"]], + [":AND", [":OR", [":NOT", ["a"]], ["a"]], ["a"]] + ], + [ + ":AND", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":AND", + [ + ":IMPLIES", + [":OR", ["a"], ["a"]], + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + [ + ":AND", + ["a"], + [":IMPLIES", ["a"], ["a"]] + ], + [ + ":IMPLIES", + [ + ":IMPLIES", + [":AND", ["a"], ["a"]], + [ + ":AND", + ["a"], + [ + ":IMPLIES", + [ + ":OR", + [":NOT", ["a"]], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + [ + ":IMPLIES", + [ + ":AND", + [ + ":AND", + ["a"], + ["a"] + ], + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + ["a"], + ["a"] + ], + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + [ + ":NOT", + [ + ":NOT", + ["a"] + ] + ], + [ + ":IMPLIES", + [ + ":OR", + [ + ":AND", + [ + "a" + ], + [ + ":OR", + [ + "a" + ], + [ + ":OR", + [ + ":XOR", + [ + "a" + ], + [ + "a" + ] + ], + [ + ":XOR", + [ + "a" + ], + [ + ":XOR", + [ + ":XOR", + [ + "a" + ], + [ + ":OR", + [ + "a" + ], + [ + ":NOT", + [ + "a" + ] + ] + ] + ], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + [ + ":NOT", + [ + "a" + ] + ], + [ + ":NOT", + [ + ":NOT", + [ + "a" + ] + ] + ] + ] + ] + ], + [ + ":NOT", + [ + ":NOT", + [ + ":XOR", + [ + ":AND", + [ + "a" + ], + [ + "a" + ] + ], + [ + "a" + ] + ] + ] + ] + ] + ] + ] + ] + ] + ], + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + [ + ":OR", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":OR", + [ + "a" + ], + [ + ":NOT", + [ + ":NOT", + [ + "a" + ] + ] + ] + ], + [ + ":NOT", + [ + ":OR", + [ + "a" + ], + [ + "a" + ] + ] + ] + ], + [ + "a" + ] + ], + [ + "a" + ] + ], + [ + "a" + ] + ] + ] + ] + ], + ["a"] + ] + ], + ["a"] + ], + ["a"] + ] + ], + ["a"] + ] + ], + [ + ":IMPLIES", + ["a"], + ["a"] + ] + ], + ["a"] + ] + ] + ], + ["a"] + ] + ] + ], + ["a"] + ] + ] + ] + ], + [ + ":IMPLIES", + ["a"], + [":AND", [":AND", ["a"], ["a"]], ["a"]] + ] + ], + [ + ":OR", + [ + ":XOR", + [ + ":NOT", + [ + ":OR", + ["a"], + [ + ":NOT", + [ + ":AND", + ["a"], + [ + ":AND", + [ + ":AND", + ["a"], + [ + ":IMPLIES", + ["a"], + [":NOT", [":NOT", ["a"]]] + ] + ], + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [ + ":OR", + ["a"], + [":XOR", ["a"], ["a"]] + ], + [":XOR", ["a"], ["a"]] + ] + ] + ] + ] + ] + ] + ], + [":OR", ["a"], ["a"]] + ], + [ + ":OR", + [ + ":XOR", + [":OR", ["a"], [":NOT", ["a"]]], + [ + ":AND", + ["a"], + [ + ":AND", + ["a"], + [":OR", ["a"], [":NOT", ["a"]]] + ] + ] + ], + [":IMPLIES", ["a"], ["a"]] + ] + ] + ], + ["a"] + ] + ], + ["a"] + ], + [":NOT", [":NOT", [":AND", ["a"], ["a"]]]] + ], + [":IMPLIES", ["a"], ["a"]] + ], + [":AND", ["a"], ["a"]] + ] + ], + [ + ":XOR", + ["a"], + [":XOR", [":XOR", [":IMPLIES", ["a"], ["a"]], ["a"]], ["a"]] + ] + ], + ["a"] + ], + [":XOR", ["a"], ["a"]] + ] + ], + ["a"] + ], + [":NOT", ["a"]] + ], + ["a"] + ] + ], + [":NOT", ["e"]], + [ + ":XOR", + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [ + ":XOR", + ["c"], + [ + ":IMPLIES", + [ + ":OR", + [":OR", ["h"], [":XOR", ["a"], ["h"]]], + [ + ":OR", + ["i"], + [ + ":OR", + [":XOR", ["h"], [":XOR", [":NOT", [":NOT", ["i"]]], ["d"]]], + [":IMPLIES", ["a"], ["e"]] + ] + ] + ], + ["i"] + ] + ], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + [ + ":XOR", + [":XOR", ["h"], ["f"]], + [ + ":IMPLIES", + [ + ":OR", + ["d"], + [ + ":OR", + [ + ":OR", + [ + ":OR", + [ + ":IMPLIES", + [ + ":AND", + ["a"], + [ + ":OR", + [ + ":XOR", + [":NOT", [":IMPLIES", ["h"], ["f"]]], + ["f"] + ], + ["c"] + ] + ], + ["a"] + ], + ["j"] + ], + ["c"] + ], + [ + ":OR", + [":NOT", ["a"]], + [":OR", [":XOR", ["c"], ["a"]], ["g"]] + ] + ] + ], + ["d"] + ] + ], + ["c"] + ], + ["d"] + ], + ["j"] + ], + ["f"] + ], + ["a"] + ] + ], + ["b"] + ], + [":NOT", [":XOR", ["a"], ["e"]]] + ], + [":AND", [":XOR", ["a"], [":OR", ["a"], ["c"]]], ["h"]] + ], + [":AND", [":AND", ["c"], ["d"]], [":AND", ["d"], [":NOT", ["f"]]]], + [":IMPLIES", ["a"], ["a"]], + [":OR", ["b"], ["b"]], + [":NOT", ["i"]], + [ + ":IMPLIES", + [":NOT", ["b"]], + [ + ":NOT", + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + ["a"], + [":AND", ["c"], [":OR", ["c"], [":IMPLIES", ["b"], ["c"]]]] + ], + ["c"] + ] + ] + ] + ] + ], + [ + ":OR", + [ + ":AND", + [ + ":AND", + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":OR", + ["b"], + [ + ":AND", + ["a"], + [ + ":IMPLIES", + ["a"], + [":OR", [":NOT", [":AND", ["a"], ["a"]]], ["a"]] + ] + ] + ], + [":IMPLIES", [":IMPLIES", ["b"], [":AND", ["b"], ["a"]]], ["b"]] + ], + ["b"] + ], + [":XOR", ["a"], ["b"]] + ], + [":IMPLIES", ["a"], [":NOT", ["b"]]] + ], + ["a"] + ], + ["b"] + ], + [":AND", [":NOT", ["a"]], [":XOR", ["b"], ["a"]]], + [":AND", [":IMPLIES", ["a"], [":OR", ["b"], ["b"]]], ["b"]], + [":NOT", ["d"]], + [":IMPLIES", ["b"], ["b"]], + [":IMPLIES", ["a"], ["a"]], + [":XOR", ["a"], [":NOT", ["c"]]], + [ + ":AND", + [ + ":IMPLIES", + [":AND", [":IMPLIES", [":AND", ["b"], ["b"]], ["a"]], ["a"]], + [":AND", ["b"], ["b"]] + ], + [ + ":OR", + [":AND", ["a"], [":IMPLIES", [":OR", ["a"], [":NOT", ["b"]]], ["b"]]], + ["a"] + ] + ], + [ + ":IMPLIES", + [ + ":XOR", + [":NOT", [":OR", [":XOR", ["c"], ["c"]], [":OR", ["d"], ["c"]]]], + ["b"] + ], + ["b"] + ], + [":AND", ["c"], ["b"]], + [":NOT", [":IMPLIES", ["g"], [":AND", ["d"], [":OR", ["a"], ["a"]]]]], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":NOT", + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [":XOR", ["a"], ["a"]], + [ + ":AND", + [":XOR", ["a"], [":AND", ["a"], [":AND", ["a"], ["a"]]]], + ["a"] + ] + ] + ] + ], + ["a"] + ], + ["a"] + ], + [":IMPLIES", [":AND", ["c"], [":AND", ["f"], ["e"]]], ["b"]], + [ + ":IMPLIES", + [":XOR", [":XOR", [":XOR", ["d"], [":AND", ["f"], ["d"]]], ["c"]], ["c"]], + ["d"] + ], + [":NOT", ["c"]], + [ + ":OR", + [":NOT", ["a"]], + [ + ":XOR", + [ + ":IMPLIES", + ["a"], + [":OR", [":OR", ["a"], [":XOR", ["a"], ["a"]]], ["a"]] + ], + ["a"] + ] + ], + [":IMPLIES", ["a"], [":NOT", [":NOT", ["b"]]]], + [ + ":AND", + [ + ":IMPLIES", + [ + ":XOR", + ["f"], + [ + ":IMPLIES", + [ + ":XOR", + [":AND", [":NOT", [":AND", ["b"], [":XOR", ["c"], ["f"]]]], ["f"]], + ["f"] + ], + ["i"] + ] + ], + ["f"] + ], + ["f"] + ], + [":AND", [":NOT", [":NOT", ["d"]]], ["a"]], + [ + ":OR", + [":AND", ["b"], [":NOT", ["b"]]], + [":OR", [":OR", ["a"], ["b"]], [":IMPLIES", ["a"], ["a"]]] + ], + [ + ":OR", + [ + ":OR", + [ + ":IMPLIES", + [ + ":AND", + ["d"], + [":AND", [":NOT", [":OR", [":AND", ["f"], ["e"]], ["c"]]], ["e"]] + ], + ["c"] + ], + [":XOR", ["e"], ["b"]] + ], + [":OR", ["c"], [":AND", ["f"], ["f"]]] + ], + [ + ":OR", + [ + ":NOT", + [ + ":OR", + [":NOT", [":AND", [":IMPLIES", ["a"], ["f"]], ["b"]]], + [":XOR", [":XOR", ["g"], ["b"]], ["d"]] + ] + ], + ["b"] + ], + [":NOT", ["a"]], + [":AND", [":AND", ["b"], [":IMPLIES", ["d"], ["d"]]], ["d"]], + [":NOT", ["f"]], + [ + ":OR", + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + ["b"], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":IMPLIES", + ["b"], + [ + ":AND", + [ + ":NOT", + [ + ":OR", + [":NOT", ["c"]], + [":OR", [":OR", ["a"], [":OR", ["c"], ["c"]]], ["d"]] + ] + ], + [":OR", [":NOT", ["c"]], [":AND", ["c"], ["c"]]] + ] + ], + [ + ":NOT", + [":OR", ["b"], [":AND", ["a"], [":IMPLIES", ["a"], ["a"]]]] + ] + ], + ["a"] + ], + [":IMPLIES", ["d"], ["a"]] + ] + ], + [ + ":OR", + [":XOR", ["d"], [":AND", ["a"], [":NOT", [":OR", ["c"], ["c"]]]]], + ["b"] + ] + ], + [":XOR", ["b"], ["a"]] + ], + [":OR", [":OR", ["b"], ["c"]], ["c"]] + ], + [ + ":NOT", + [ + ":OR", + ["a"], + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + ["a"], + [ + ":OR", + [ + ":OR", + [":XOR", [":XOR", ["a"], [":NOT", ["a"]]], ["a"]], + [":AND", [":AND", ["a"], [":AND", ["a"], ["a"]]], ["a"]] + ], + [ + ":OR", + [ + ":OR", + ["a"], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + [":IMPLIES", ["a"], [":AND", ["a"], ["a"]]], + ["a"] + ], + ["a"] + ] + ], + [":XOR", [":NOT", ["a"]], ["a"]] + ] + ] + ], + [":OR", ["a"], ["a"]] + ] + ] + ], + ["a"] + ], + [ + ":AND", + [ + ":OR", + [ + ":OR", + [":OR", [":AND", ["a"], ["a"]], ["a"]], + [":AND", [":NOT", ["a"]], ["a"]] + ], + [ + ":NOT", + [ + ":AND", + ["a"], + [ + ":AND", + [ + ":AND", + [ + ":IMPLIES", + [":IMPLIES", ["a"], ["a"]], + [ + ":NOT", + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + ["a"], + [":OR", ["a"], [":AND", [":NOT", ["a"]], ["a"]]] + ], + ["a"] + ], + ["a"] + ] + ] + ], + ["a"] + ], + [":IMPLIES", ["a"], ["a"]] + ] + ] + ] + ], + [":IMPLIES", ["a"], [":OR", [":NOT", ["a"]], ["a"]]] + ] + ] + ] + ], + [":NOT", ["f"]], + [ + ":AND", + [ + ":XOR", + ["a"], + [ + ":NOT", + [ + ":AND", + [ + ":AND", + [ + ":AND", + [ + ":OR", + [":NOT", ["a"]], + [ + ":OR", + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + ["a"], + [":IMPLIES", [":XOR", ["a"], ["a"]], ["a"]] + ], + [":IMPLIES", ["a"], [":NOT", ["a"]]] + ] + ], + ["a"] + ] + ], + ["a"] + ], + ["a"] + ], + ["a"] + ] + ] + ], + ["a"] + ], + [":OR", [":XOR", ["a"], ["b"]], [":IMPLIES", ["e"], ["a"]]], + [ + ":IMPLIES", + [ + ":AND", + ["c"], + [ + ":NOT", + [ + ":XOR", + ["c"], + [ + ":AND", + ["c"], + [ + ":IMPLIES", + ["c"], + [ + ":OR", + [ + ":AND", + [ + ":NOT", + [ + ":XOR", + ["a"], + [ + ":OR", + ["c"], + [":XOR", ["b"], [":OR", [":NOT", ["b"]], ["c"]]] + ] + ] + ], + ["b"] + ], + ["c"] + ] + ] + ] + ] + ] + ], + ["a"] + ], + [":OR", ["d"], ["h"]], + [":XOR", ["b"], [":XOR", ["b"], ["a"]]], + [ + ":IMPLIES", + [":AND", ["c"], ["i"]], + [ + ":IMPLIES", + ["i"], + [ + ":XOR", + ["d"], + [":IMPLIES", [":AND", [":AND", [":NOT", ["f"]], ["d"]], ["h"]], ["e"]] + ] + ] + ], + [ + ":NOT", + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + [":OR", ["b"], [":IMPLIES", [":XOR", ["a"], ["b"]], ["b"]]], + [ + ":OR", + ["b"], + [ + ":XOR", + [ + ":IMPLIES", + [":NOT", [":XOR", ["b"], ["a"]]], + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":OR", + [ + ":AND", + [ + ":IMPLIES", + [ + ":OR", + ["b"], + [ + ":AND", + ["a"], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":NOT", + [ + ":NOT", + [ + ":XOR", + [":OR", ["b"], ["a"]], + [ + ":IMPLIES", + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":AND", + [ + ":AND", + ["a"], + ["a"] + ], + [ + ":NOT", + [":NOT", ["a"]] + ] + ], + [":AND", ["a"], ["b"]] + ], + ["b"] + ], + ["b"] + ], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + ["b"], + [":NOT", ["b"]] + ], + ["a"] + ], + [ + ":NOT", + [ + ":IMPLIES", + ["a"], + [ + ":AND", + ["a"], + [ + ":OR", + [ + ":OR", + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + [ + ":XOR", + ["b"], + [ + ":NOT", + [ + ":IMPLIES", + ["b"], + ["b"] + ] + ] + ], + ["a"] + ] + ] + ], + [":NOT", ["a"]] + ], + ["a"] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ], + ["a"] + ] + ] + ], + [ + ":XOR", + ["b"], + [ + ":AND", + [ + ":OR", + ["b"], + [ + ":IMPLIES", + ["b"], + [ + ":XOR", + [ + ":OR", + ["a"], + [ + ":AND", + [ + ":OR", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["b"], + [ + ":NOT", + [ + ":AND", + [":NOT", ["a"]], + ["b"] + ] + ] + ], + ["a"] + ], + ["a"] + ], + [ + ":OR", + [ + ":OR", + [":XOR", ["a"], ["b"]], + ["b"] + ], + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":AND", + [ + ":XOR", + [ + ":NOT", + [":NOT", ["b"]] + ], + [ + ":OR", + [ + ":IMPLIES", + ["b"], + ["a"] + ], + ["a"] + ] + ], + ["b"] + ], + [ + ":IMPLIES", + ["a"], + ["a"] + ] + ], + ["a"] + ], + ["a"] + ] + ] + ] + ] + ], + ["a"] + ] + ] + ], + ["b"] + ] + ] + ], + ["a"] + ], + [":XOR", ["a"], ["a"]] + ], + [":NOT", ["b"]] + ], + [ + ":OR", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":OR", + [":OR", ["a"], ["a"]], + [ + ":XOR", + [":XOR", [":XOR", ["b"], ["b"]], ["b"]], + ["b"] + ] + ] + ], + ["a"] + ] + ], + [ + ":XOR", + [":IMPLIES", ["b"], ["a"]], + [":NOT", [":XOR", ["b"], ["b"]]] + ] + ] + ], + [ + ":IMPLIES", + [":IMPLIES", ["a"], ["b"]], + [":NOT", ["b"]] + ] + ], + ["b"] + ], + [ + ":NOT", + [ + ":AND", + [ + ":OR", + [":XOR", [":IMPLIES", ["a"], ["b"]], [":NOT", ["b"]]], + [ + ":IMPLIES", + ["b"], + [ + ":AND", + ["b"], + [":XOR", [":NOT", ["b"]], [":NOT", ["b"]]] + ] + ] + ], + [ + ":IMPLIES", + ["b"], + [ + ":XOR", + ["b"], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":IMPLIES", + [":AND", [":NOT", ["a"]], ["a"]], + ["a"] + ], + [":AND", ["a"], ["b"]] + ], + [ + ":NOT", + [ + ":IMPLIES", + ["b"], + [":OR", [":NOT", [":NOT", ["b"]]], ["a"]] + ] + ] + ] + ] + ] + ] + ] + ], + [":AND", ["a"], ["b"]] + ] + ], + ["b"] + ] + ] + ], + ["a"] + ], + [ + ":OR", + ["a"], + [ + ":XOR", + [":NOT", ["b"]], + [ + ":OR", + ["b"], + [ + ":AND", + ["a"], + [":AND", ["a"], [":XOR", [":NOT", ["a"]], [":XOR", ["b"], ["a"]]]] + ] + ] + ] + ] + ] + ], + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [":IMPLIES", [":XOR", ["b"], [":XOR", ["b"], ["a"]]], ["a"]], + [":IMPLIES", ["a"], ["a"]] + ], + ["b"] + ], + ["b"] + ], + [":XOR", ["a"], ["a"]], + [ + ":IMPLIES", + ["a"], + [ + ":NOT", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["b"], + [ + ":AND", + [ + ":OR", + [":IMPLIES", ["b"], [":NOT", ["b"]]], + [ + ":XOR", + ["b"], + [ + ":NOT", + [ + ":OR", + [":AND", [":XOR", ["a"], [":AND", ["b"], ["a"]]], ["a"]], + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + [":IMPLIES", ["a"], ["b"]], + [ + ":XOR", + [ + ":AND", + [ + ":IMPLIES", + [":NOT", ["a"]], + [ + ":AND", + [":OR", [":XOR", ["b"], ["a"]], ["b"]], + [ + ":XOR", + ["a"], + [ + ":AND", + [ + ":NOT", + [ + ":OR", + [ + ":OR", + ["b"], + [ + ":IMPLIES", + [ + ":OR", + ["a"], + [":OR", ["a"], ["b"]] + ], + ["a"] + ] + ], + ["a"] + ] + ], + ["a"] + ] + ] + ] + ], + ["a"] + ], + ["a"] + ] + ], + [ + ":AND", + [ + ":AND", + [ + ":OR", + [ + ":NOT", + [ + ":AND", + ["b"], + [ + ":IMPLIES", + [":XOR", [":XOR", ["a"], ["a"]], ["a"]], + ["a"] + ] + ] + ], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":NOT", + [ + ":AND", + [ + ":AND", + [":AND", ["b"], ["a"]], + [ + ":XOR", + [":IMPLIES", ["a"], ["a"]], + [":NOT", ["b"]] + ] + ], + ["b"] + ] + ], + [":OR", ["b"], ["a"]] + ], + [ + ":OR", + ["a"], + [ + ":NOT", + [":XOR", [":XOR", ["a"], ["a"]], ["b"]] + ] + ] + ] + ], + ["a"] + ], + ["a"] + ] + ] + ] + ] + ] + ] + ], + ["a"] + ] + ], + ["b"] + ], + [":NOT", [":AND", [":AND", ["a"], [":IMPLIES", ["a"], ["b"]]], ["b"]]] + ] + ] + ], + [":NOT", ["c"]], + [":NOT", ["b"]], + [ + ":AND", + [":IMPLIES", ["b"], [":XOR", ["b"], ["a"]]], + [ + ":OR", + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + ["a"], + [ + ":AND", + [":NOT", [":IMPLIES", ["a"], ["b"]]], + [ + ":IMPLIES", + [":AND", [":IMPLIES", ["b"], [":NOT", ["b"]]], ["a"]], + [ + ":XOR", + [":AND", ["b"], [":OR", [":OR", ["a"], ["a"]], ["b"]]], + ["b"] + ] + ] + ] + ], + [":OR", [":AND", ["a"], ["b"]], ["a"]] + ], + [ + ":AND", + [ + ":OR", + [ + ":XOR", + [ + ":OR", + [":IMPLIES", ["b"], ["a"]], + [ + ":XOR", + [ + ":OR", + [":AND", ["a"], ["b"]], + [ + ":AND", + ["a"], + [":OR", [":IMPLIES", ["b"], ["a"]], ["b"]] + ] + ], + ["b"] + ] + ], + ["b"] + ], + ["b"] + ], + [ + ":XOR", + [":OR", ["a"], ["b"]], + [":OR", ["b"], [":OR", ["b"], ["b"]]] + ] + ] + ], + ["b"] + ], + ["b"] + ] + ], + [ + ":IMPLIES", + [":IMPLIES", ["c"], [":XOR", ["c"], [":AND", ["c"], ["a"]]]], + [":AND", ["b"], ["a"]] + ], + [":XOR", ["a"], ["e"]], + [":NOT", ["c"]], + [ + ":IMPLIES", + ["e"], + [ + ":AND", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":XOR", + [ + ":IMPLIES", + [":OR", [":IMPLIES", ["f"], ["e"]], ["d"]], + [ + ":XOR", + [":NOT", [":IMPLIES", ["e"], ["a"]]], + [":OR", [":XOR", ["e"], ["b"]], ["b"]] + ] + ], + ["f"] + ], + ["d"] + ], + [":NOT", ["f"]] + ] + ], + [":AND", ["d"], ["e"]] + ] + ], + [":OR", ["g"], ["b"]], + [":OR", ["a"], ["a"]], + [ + ":OR", + [":AND", [":IMPLIES", ["a"], ["a"]], ["a"]], + [":IMPLIES", [":OR", ["b"], ["b"]], ["b"]] + ], + [":NOT", [":IMPLIES", ["a"], [":XOR", ["a"], [":IMPLIES", ["a"], ["a"]]]]], + [":AND", [":NOT", [":IMPLIES", ["c"], ["b"]]], ["b"]], + [ + ":XOR", + ["a"], + [ + ":NOT", + [ + ":OR", + [":AND", [":AND", [":IMPLIES", ["a"], ["a"]], ["a"]], ["a"]], + [ + ":OR", + ["a"], + [ + ":NOT", + [ + ":NOT", + [":XOR", [":IMPLIES", ["a"], ["a"]], [":OR", ["a"], ["a"]]] + ] + ] + ] + ] + ] + ], + [":OR", [":IMPLIES", [":IMPLIES", ["e"], ["c"]], ["d"]], ["d"]], + [ + ":OR", + [":XOR", [":NOT", [":XOR", ["e"], ["e"]]], ["e"]], + [ + ":OR", + [":IMPLIES", [":IMPLIES", ["c"], ["d"]], ["b"]], + [":OR", [":XOR", ["a"], [":IMPLIES", ["b"], ["c"]]], ["d"]] + ] + ], + [":NOT", ["h"]], + [ + ":OR", + [":NOT", [":OR", ["a"], [":NOT", [":NOT", ["c"]]]]], + [":XOR", ["c"], ["b"]] + ], + [":OR", ["a"], [":NOT", ["a"]]], + [ + ":XOR", + [":NOT", [":NOT", [":OR", ["c"], ["b"]]]], + [":AND", ["b"], [":OR", ["d"], ["a"]]] + ], + [":XOR", [":IMPLIES", ["b"], ["e"]], [":AND", ["e"], ["e"]]], + [":NOT", ["b"]], + [":OR", [":AND", ["h"], [":OR", ["a"], ["d"]]], ["h"]], + [":IMPLIES", [":IMPLIES", ["a"], ["a"]], [":NOT", ["a"]]], + [":IMPLIES", ["a"], ["a"]], + [ + ":IMPLIES", + ["a"], + [":NOT", [":NOT", [":OR", ["a"], [":IMPLIES", ["a"], [":NOT", ["a"]]]]]] + ], + [ + ":XOR", + [":IMPLIES", ["a"], [":NOT", [":XOR", [":OR", ["a"], ["c"]], ["f"]]]], + ["e"] + ], + [":AND", ["a"], [":NOT", [":NOT", ["a"]]]], + [":IMPLIES", ["a"], [":AND", [":NOT", ["a"]], ["e"]]], + [ + ":XOR", + ["e"], + [ + ":NOT", + [":OR", ["c"], [":NOT", [":IMPLIES", [":AND", ["g"], ["d"]], ["f"]]]] + ] + ], + [":AND", ["f"], ["a"]], + [ + ":OR", + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [ + ":AND", + [":IMPLIES", [":XOR", [":NOT", ["e"]], [":NOT", ["d"]]], ["b"]], + [ + ":IMPLIES", + [":OR", ["b"], ["b"]], + [":IMPLIES", ["d"], [":AND", ["a"], ["d"]]] + ] + ], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + [":XOR", ["b"], [":XOR", [":XOR", ["c"], ["c"]], ["b"]]], + ["d"] + ], + ["e"] + ], + ["e"] + ] + ] + ] + ], + [":AND", [":AND", ["d"], [":OR", ["c"], ["d"]]], ["d"]] + ], + [":NOT", ["a"]], + [":IMPLIES", ["b"], ["a"]], + [":AND", ["f"], ["d"]], + [":XOR", ["d"], ["c"]], + [ + ":AND", + [":XOR", ["e"], ["b"]], + [ + ":AND", + ["e"], + [ + ":AND", + [ + ":XOR", + ["e"], + [ + ":NOT", + [":OR", ["e"], [":NOT", [":NOT", [":AND", [":NOT", ["d"]], ["b"]]]]] + ] + ], + ["d"] + ] + ] + ], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + [":IMPLIES", [":AND", ["b"], ["a"]], ["b"]], + [":NOT", [":AND", ["b"], ["b"]]] + ], + [ + ":AND", + ["b"], + [ + ":XOR", + [ + ":XOR", + [":IMPLIES", ["a"], ["a"]], + [":AND", [":NOT", ["a"]], ["b"]] + ], + ["a"] + ] + ] + ], + ["b"] + ], + ["a"] + ], + [":XOR", ["g"], [":IMPLIES", ["f"], ["c"]]], + [":XOR", ["g"], [":XOR", ["f"], ["e"]]], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":OR", [":OR", ["h"], [":OR", ["a"], ["f"]]], ["d"]], + ["d"] + ], + [":IMPLIES", ["b"], ["c"]] + ], + [ + ":NOT", + [ + ":XOR", + [":OR", ["g"], [":NOT", [":AND", ["f"], ["f"]]]], + [ + ":AND", + [":IMPLIES", ["a"], ["a"]], + [":AND", [":NOT", ["f"]], [":IMPLIES", ["b"], ["b"]]] + ] + ] + ] + ], + [":XOR", ["g"], [":NOT", [":IMPLIES", ["e"], ["e"]]]], + [ + ":IMPLIES", + ["d"], + [ + ":AND", + [ + ":OR", + [":OR", [":NOT", [":AND", ["d"], ["e"]]], ["g"]], + [":IMPLIES", ["c"], ["f"]] + ], + [":AND", ["b"], ["d"]] + ] + ], + [":OR", ["e"], ["a"]], + [":XOR", ["c"], ["d"]], + [":XOR", [":NOT", [":OR", ["e"], ["e"]]], ["d"]], + [":XOR", [":AND", ["b"], ["a"]], ["c"]], + [ + ":AND", + [":OR", [":OR", ["f"], ["c"]], [":XOR", ["d"], ["c"]]], + [":NOT", ["e"]] + ], + [":NOT", ["b"]], + [":AND", ["b"], ["d"]], + [":OR", ["c"], [":OR", ["b"], [":AND", ["f"], ["g"]]]], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + ["f"], + [":IMPLIES", ["c"], [":IMPLIES", ["e"], [":IMPLIES", ["e"], ["f"]]]] + ], + [ + ":OR", + [":OR", ["d"], ["d"]], + [ + ":OR", + [ + ":OR", + [":NOT", ["d"]], + [ + ":XOR", + [":NOT", ["b"]], + [ + ":AND", + ["e"], + [ + ":IMPLIES", + [ + ":OR", + ["f"], + [ + ":IMPLIES", + ["a"], + [":AND", [":NOT", ["f"]], [":IMPLIES", ["c"], ["e"]]] + ] + ], + ["d"] + ] + ] + ] + ], + ["d"] + ] + ] + ], + [ + ":IMPLIES", + [":AND", ["e"], [":AND", ["e"], ["a"]]], + [ + ":OR", + ["d"], + [ + ":XOR", + ["c"], + [ + ":XOR", + [ + ":NOT", + [":IMPLIES", ["b"], [":XOR", ["d"], [":OR", ["d"], ["d"]]]] + ], + [ + ":NOT", + [ + ":OR", + [":XOR", [":XOR", ["e"], [":NOT", ["d"]]], ["d"]], + ["e"] + ] + ] + ] + ] + ] + ] + ] + ], + ["d"] + ], + [ + ":AND", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":XOR", + [":XOR", ["f"], ["b"]], + [ + ":NOT", + [ + ":AND", + [ + ":OR", + [ + ":AND", + ["e"], + [ + ":OR", + [":OR", [":NOT", [":OR", ["i"], ["h"]]], ["d"]], + ["j"] + ] + ], + [":NOT", ["g"]] + ], + ["f"] + ] + ] + ], + [":XOR", ["d"], ["b"]] + ], + [":IMPLIES", ["h"], ["c"]] + ], + [ + ":XOR", + [ + ":OR", + [ + ":AND", + [ + ":OR", + [":OR", [":IMPLIES", ["b"], ["i"]], ["c"]], + [":NOT", ["e"]] + ], + ["a"] + ], + ["f"] + ], + [":NOT", ["j"]] + ] + ], + ["g"] + ], + ["g"] + ], + [":NOT", ["a"]], + [ + ":AND", + [":IMPLIES", ["f"], ["a"]], + [ + ":AND", + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [":IMPLIES", ["c"], [":NOT", ["g"]]], + [ + ":AND", + [ + ":AND", + [ + ":OR", + [ + ":NOT", + [ + ":IMPLIES", + [":IMPLIES", ["a"], ["f"]], + [":XOR", ["c"], ["e"]] + ] + ], + [ + ":AND", + [ + ":XOR", + [":OR", ["d"], ["f"]], + [":IMPLIES", ["f"], [":OR", [":NOT", ["g"]], ["e"]]] + ], + [ + ":OR", + [ + ":IMPLIES", + ["d"], + [ + ":AND", + ["g"], + [ + ":IMPLIES", + ["e"], + [ + ":XOR", + ["f"], + [ + ":OR", + [ + ":XOR", + ["a"], + [":XOR", ["f"], [":AND", ["b"], ["c"]]] + ], + ["d"] + ] + ] + ] + ] + ], + [ + ":OR", + ["e"], + [ + ":IMPLIES", + [":NOT", [":OR", [":NOT", ["b"]], ["e"]]], + ["b"] + ] + ] + ] + ] + ], + ["d"] + ], + ["b"] + ] + ], + [":OR", [":NOT", ["c"]], ["g"]] + ], + [ + ":OR", + ["c"], + [ + ":OR", + [ + ":OR", + ["f"], + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + ["c"], + [ + ":IMPLIES", + [ + ":OR", + [":NOT", [":IMPLIES", [":AND", ["d"], ["g"]], ["g"]]], + ["b"] + ], + [":NOT", ["b"]] + ] + ], + [ + ":NOT", + [ + ":XOR", + [ + ":OR", + ["d"], + [ + ":NOT", + [ + ":XOR", + [ + ":NOT", + [ + ":XOR", + [ + ":AND", + [ + ":XOR", + [ + ":OR", + [ + ":XOR", + [ + ":XOR", + ["e"], + [ + ":OR", + [ + ":AND", + [ + ":AND", + [ + ":AND", + [":AND", ["d"], ["a"]], + ["b"] + ], + ["e"] + ], + [ + ":AND", + [ + ":AND", + [ + ":OR", + [":AND", ["d"], ["f"]], + [ + ":IMPLIES", + [":XOR", ["g"], ["b"]], + [ + ":IMPLIES", + ["f"], + ["g"] + ] + ] + ], + ["a"] + ], + ["g"] + ] + ], + [":IMPLIES", ["g"], ["b"]] + ] + ], + [":NOT", [":XOR", ["f"], ["f"]]] + ], + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + [ + ":OR", + ["b"], + [ + ":XOR", + ["d"], + [ + ":XOR", + [":NOT", ["c"]], + [ + ":XOR", + [":NOT", ["c"]], + ["e"] + ] + ] + ] + ], + ["b"] + ], + [ + ":IMPLIES", + ["a"], + [ + ":NOT", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + ["b"], + [":NOT", ["g"]] + ], + ["a"] + ] + ] + ] + ] + ], + [ + ":XOR", + ["b"], + [":IMPLIES", ["a"], ["b"]] + ] + ], + [ + ":OR", + [ + ":AND", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":XOR", + ["a"], + [ + ":OR", + ["g"], + [ + ":NOT", + [":XOR", ["c"], ["f"]] + ] + ] + ] + ], + ["g"] + ], + ["e"] + ], + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [":NOT", ["a"]], + ["f"] + ], + ["b"] + ], + [ + ":AND", + [ + ":OR", + ["g"], + [ + ":IMPLIES", + [ + ":XOR", + ["a"], + [ + ":AND", + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + ["a"], + ["b"] + ], + [":NOT", ["e"]] + ] + ] + ], + [ + ":OR", + [ + ":XOR", + [ + ":IMPLIES", + ["g"], + [ + ":AND", + [ + ":XOR", + ["e"], + ["g"] + ], + ["c"] + ] + ], + [ + ":XOR", + ["g"], + ["a"] + ] + ], + ["d"] + ] + ] + ], + ["f"] + ] + ], + ["e"] + ] + ] + ] + ] + ], + [ + ":XOR", + [":OR", ["c"], ["a"]], + [ + ":AND", + [":AND", ["c"], ["g"]], + [":NOT", ["g"]] + ] + ] + ], + ["f"] + ], + [ + ":IMPLIES", + [ + ":XOR", + ["g"], + [ + ":OR", + [ + ":XOR", + ["a"], + [ + ":OR", + [":NOT", ["a"]], + [ + ":IMPLIES", + ["d"], + [ + ":XOR", + ["d"], + [":XOR", ["a"], ["b"]] + ] + ] + ] + ], + ["d"] + ] + ], + ["c"] + ] + ] + ], + ["b"] + ] + ] + ], + [ + ":XOR", + [":NOT", ["a"]], + [":IMPLIES", [":NOT", ["g"]], ["d"]] + ] + ] + ] + ], + [":AND", [":AND", [":OR", ["c"], ["a"]], ["d"]], ["d"]] + ] + ], + [ + ":AND", + [":OR", ["g"], ["g"]], + [ + ":XOR", + [":AND", ["a"], [":NOT", [":XOR", ["e"], ["a"]]]], + [":XOR", ["a"], ["g"]] + ] + ] + ] + ] + ] + ], + ["b"] + ] + ], + [":OR", [":IMPLIES", ["c"], ["c"]], [":XOR", ["f"], [":OR", ["c"], ["c"]]]], + [":XOR", ["a"], ["b"]], + [ + ":XOR", + [":IMPLIES", [":OR", [":AND", ["a"], ["b"]], ["c"]], ["h"]], + [ + ":IMPLIES", + [ + ":XOR", + [":IMPLIES", [":NOT", ["f"]], [":IMPLIES", ["e"], ["e"]]], + ["a"] + ], + [ + ":AND", + ["c"], + [":OR", ["h"], [":OR", [":AND", ["f"], [":NOT", ["a"]]], ["g"]]] + ] + ] + ], + [":AND", ["e"], ["c"]], + [":AND", ["b"], [":OR", [":NOT", ["a"]], ["c"]]], + [ + ":AND", + [ + ":AND", + ["b"], + [ + ":XOR", + ["b"], + [ + ":OR", + [ + ":AND", + [ + ":OR", + ["c"], + [ + ":OR", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":XOR", ["b"], ["c"]], + [ + ":AND", + [":XOR", ["a"], [":OR", ["d"], ["b"]]], + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + [":AND", ["a"], ["b"]], + [":NOT", ["a"]] + ], + [":NOT", ["b"]] + ], + ["d"] + ] + ] + ] + ], + ["d"] + ], + [":OR", ["a"], ["a"]] + ] + ], + [":NOT", ["b"]] + ], + ["b"] + ] + ] + ], + ["a"] + ], + [":IMPLIES", ["a"], ["c"]], + [":XOR", [":NOT", ["a"]], [":OR", ["a"], [":IMPLIES", ["a"], ["a"]]]], + [ + ":OR", + [ + ":AND", + [ + ":AND", + [ + ":OR", + ["b"], + [ + ":OR", + [ + ":AND", + ["b"], + [ + ":OR", + [ + ":IMPLIES", + [":NOT", ["a"]], + [ + ":IMPLIES", + [":XOR", [":IMPLIES", ["b"], [":OR", ["a"], ["b"]]], ["b"]], + ["a"] + ] + ], + [":XOR", ["b"], ["a"]] + ] + ], + ["a"] + ] + ], + ["a"] + ], + [ + ":AND", + [ + ":OR", + [":NOT", ["a"]], + [":AND", [":OR", ["a"], ["a"]], [":OR", ["a"], ["a"]]] + ], + ["a"] + ] + ], + ["a"] + ], + [":NOT", [":NOT", ["f"]]], + [ + ":OR", + [ + ":OR", + ["a"], + [ + ":XOR", + ["e"], + [ + ":OR", + ["f"], + [":OR", [":NOT", [":AND", ["a"], [":NOT", ["b"]]]], ["b"]] + ] + ] + ], + ["e"] + ], + [":XOR", ["c"], ["b"]], + [":AND", ["c"], ["d"]], + [ + ":NOT", + [ + ":NOT", + [ + ":IMPLIES", + [":NOT", ["c"]], + [ + ":NOT", + [ + ":AND", + [":NOT", [":OR", ["c"], [":XOR", ["a"], ["e"]]]], + [ + ":AND", + [ + ":IMPLIES", + ["f"], + [ + ":OR", + ["a"], + [":AND", [":AND", ["e"], ["g"]], [":IMPLIES", ["e"], ["a"]]] + ] + ], + ["d"] + ] + ] + ] + ] + ] + ], + [ + ":OR", + [":OR", ["c"], ["a"]], + [":AND", [":NOT", [":AND", [":NOT", ["e"]], ["e"]]], ["c"]] + ], + [ + ":XOR", + ["e"], + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["h"], + [":OR", [":AND", ["b"], ["d"]], [":IMPLIES", ["c"], ["e"]]] + ], + ["a"] + ], + [ + ":OR", + [":OR", ["f"], [":XOR", [":XOR", ["a"], ["a"]], ["f"]]], + [":IMPLIES", ["d"], ["d"]] + ] + ] + ] + ] + ], + [ + ":IMPLIES", + [":XOR", [":NOT", ["c"]], ["b"]], + [ + ":OR", + [ + ":NOT", + [ + ":XOR", + [ + ":XOR", + [":XOR", ["c"], [":NOT", [":NOT", [":OR", ["b"], ["c"]]]]], + [ + ":AND", + ["c"], + [ + ":XOR", + [":AND", ["b"], ["a"]], + [":OR", [":OR", ["c"], ["a"]], ["a"]] + ] + ] + ], + ["b"] + ] + ], + [":NOT", ["b"]] + ] + ], + [":AND", ["a"], [":IMPLIES", ["d"], ["d"]]], + [":AND", ["g"], [":NOT", ["c"]]], + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + [":XOR", ["b"], ["a"]], + [ + ":IMPLIES", + [ + ":AND", + ["a"], + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + ["b"], + [ + ":OR", + ["a"], + [ + ":IMPLIES", + [ + ":AND", + ["b"], + [ + ":AND", + ["b"], + [ + ":AND", + ["a"], + [ + ":OR", + [ + ":AND", + [ + ":AND", + ["a"], + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [":AND", ["a"], ["b"]], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":XOR", + [":XOR", ["a"], ["a"]], + ["a"] + ], + ["b"] + ], + [ + ":AND", + [ + ":OR", + [ + ":OR", + [ + ":NOT", + [ + ":IMPLIES", + ["b"], + [ + ":OR", + ["b"], + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + [ + ":XOR", + [ + ":OR", + ["b"], + ["a"] + ], + ["a"] + ], + [ + ":AND", + [ + ":OR", + [ + ":AND", + ["a"], + ["b"] + ], + [ + ":NOT", + [ + ":AND", + [ + ":OR", + [ + ":OR", + [ + ":AND", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":AND", + [ + ":AND", + [ + ":IMPLIES", + [ + "a" + ], + [ + "b" + ] + ], + [ + ":XOR", + [ + "a" + ], + [ + ":NOT", + [ + ":NOT", + [ + "b" + ] + ] + ] + ] + ], + [ + "a" + ] + ], + [ + "a" + ] + ], + [ + "a" + ] + ], + [ + ":IMPLIES", + [ + "b" + ], + [ + ":XOR", + [ + "b" + ], + [ + ":IMPLIES", + [ + "b" + ], + [ + "a" + ] + ] + ] + ] + ], + ["a"] + ], + [ + ":NOT", + [ + ":XOR", + [ + "a" + ], + [ + ":NOT", + [ + "a" + ] + ] + ] + ] + ], + [ + ":AND", + ["b"], + [ + ":XOR", + ["a"], + ["b"] + ] + ] + ] + ] + ], + [ + ":NOT", + [ + ":NOT", + ["a"] + ] + ] + ] + ] + ] + ] + ] + ] + ], + [":OR", ["b"], ["a"]] + ], + ["a"] + ], + ["a"] + ] + ] + ] + ] + ], + [":NOT", ["a"]] + ], + ["a"] + ] + ] + ] + ], + [":AND", ["a"], [":NOT", ["a"]]] + ] + ] + ], + ["a"] + ], + ["b"] + ] + ], + ["b"] + ] + ] + ], + ["b"] + ], + ["a"] + ] + ], + [":AND", ["c"], ["e"]], + [ + ":XOR", + [":AND", ["c"], ["e"]], + [":XOR", ["a"], [":AND", [":NOT", ["a"]], ["c"]]] + ], + [":NOT", ["a"]], + [":IMPLIES", [":NOT", [":IMPLIES", ["e"], [":AND", ["e"], ["f"]]]], ["f"]], + [":OR", ["e"], ["c"]], + [ + ":IMPLIES", + [":NOT", [":XOR", ["g"], [":AND", ["d"], ["e"]]]], + [ + ":OR", + ["d"], + [ + ":XOR", + [ + ":AND", + ["b"], + [ + ":XOR", + ["d"], + [ + ":OR", + ["c"], + [":OR", ["e"], [":IMPLIES", [":IMPLIES", ["a"], ["g"]], ["b"]]] + ] + ] + ], + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + [":XOR", ["d"], ["e"]], + [ + ":OR", + [ + ":AND", + ["b"], + [ + ":IMPLIES", + [ + ":AND", + [ + ":XOR", + [ + ":AND", + ["g"], + [ + ":NOT", + [ + ":AND", + [":AND", ["d"], [":XOR", ["b"], ["e"]]], + ["f"] + ] + ] + ], + ["c"] + ], + [":XOR", [":XOR", ["d"], ["a"]], ["e"]] + ], + ["a"] + ] + ], + [":AND", ["d"], ["a"]] + ] + ], + ["g"] + ] + ] + ] + ] + ], + [ + ":AND", + [ + ":AND", + ["a"], + [":IMPLIES", [":AND", ["a"], [":NOT", ["a"]]], [":OR", ["a"], ["a"]]] + ], + ["a"] + ], + [":AND", ["b"], ["b"]], + [":AND", ["a"], [":NOT", ["a"]]], + [":XOR", ["g"], ["c"]], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":IMPLIES", ["b"], ["i"]], + [":AND", [":IMPLIES", [":NOT", ["a"]], ["f"]], ["b"]] + ], + ["c"] + ], + ["f"] + ], + [ + ":IMPLIES", + [":OR", ["b"], ["b"]], + [":IMPLIES", [":OR", [":NOT", ["b"]], ["b"]], ["b"]] + ], + [ + ":AND", + [ + ":NOT", + [":AND", [":IMPLIES", [":NOT", ["a"]], ["d"]], [":IMPLIES", ["d"], ["e"]]] + ], + [":NOT", ["a"]] + ], + [":XOR", [":OR", ["a"], ["a"]], ["a"]], + [":AND", ["e"], [":XOR", [":OR", ["g"], ["g"]], ["d"]]], + [ + ":AND", + ["i"], + [ + ":XOR", + [ + ":NOT", + [ + ":IMPLIES", + ["b"], + [ + ":XOR", + [ + ":OR", + [":IMPLIES", ["j"], ["g"]], + [":OR", ["j"], [":OR", ["e"], ["f"]]] + ], + [ + ":XOR", + [":AND", [":OR", ["e"], [":OR", ["b"], ["i"]]], ["j"]], + ["b"] + ] + ] + ] + ], + ["j"] + ] + ], + [ + ":OR", + ["a"], + [ + ":IMPLIES", + [":NOT", [":AND", ["a"], ["a"]]], + [ + ":AND", + [ + ":OR", + [":NOT", [":NOT", [":XOR", [":XOR", ["b"], ["a"]], ["b"]]]], + [":OR", [":OR", ["b"], ["a"]], ["b"]] + ], + [ + ":NOT", + [ + ":OR", + ["a"], + [ + ":XOR", + ["b"], + [ + ":OR", + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + [":IMPLIES", ["a"], ["b"]], + [ + ":OR", + [":NOT", [":IMPLIES", ["b"], [":AND", ["a"], ["b"]]]], + ["a"] + ] + ], + [ + ":OR", + [":NOT", [":AND", [":OR", ["b"], ["b"]], ["a"]]], + [":IMPLIES", ["a"], ["b"]] + ] + ] + ], + ["a"] + ] + ] + ] + ] + ] + ] + ], + [":OR", [":AND", ["b"], ["e"]], ["c"]], + [":NOT", ["f"]], + [ + ":NOT", + [ + ":NOT", + [ + ":XOR", + ["c"], + [ + ":IMPLIES", + ["c"], + [ + ":IMPLIES", + [ + ":AND", + [ + ":NOT", + [ + ":XOR", + ["d"], + [ + ":AND", + [ + ":OR", + [":AND", [":OR", ["c"], ["a"]], [":NOT", ["b"]]], + ["b"] + ], + ["b"] + ] + ] + ], + ["a"] + ], + [ + ":IMPLIES", + [":OR", ["a"], [":NOT", ["b"]]], + [ + ":AND", + ["b"], + [ + ":IMPLIES", + [":OR", [":OR", ["d"], ["c"]], ["a"]], + [":NOT", ["b"]] + ] + ] + ] + ] + ] + ] + ] + ], + [":AND", ["g"], ["h"]], + [":NOT", ["d"]], + [":AND", ["b"], ["a"]], + [":NOT", [":XOR", ["g"], [":OR", [":XOR", ["c"], ["h"]], ["e"]]]], + [":AND", ["d"], ["g"]], + [":NOT", [":NOT", ["f"]]], + [":XOR", [":NOT", ["f"]], [":NOT", [":NOT", ["a"]]]], + [ + ":AND", + [ + ":AND", + ["f"], + [":IMPLIES", ["d"], [":XOR", [":AND", ["f"], ["b"]], [":NOT", ["g"]]]] + ], + [ + ":AND", + [ + ":XOR", + [":XOR", [":NOT", ["g"]], ["g"]], + [":XOR", ["c"], [":NOT", ["b"]]] + ], + ["b"] + ] + ], + [":NOT", ["a"]], + [ + ":NOT", + [ + ":AND", + [":OR", [":NOT", ["b"]], [":AND", ["c"], ["d"]]], + [":OR", ["a"], [":OR", ["a"], [":NOT", ["a"]]]] + ] + ], + [":AND", ["a"], ["a"]], + [":IMPLIES", ["b"], [":XOR", ["e"], [":AND", ["f"], ["b"]]]], + [":XOR", ["b"], ["b"]], + [":IMPLIES", ["b"], ["c"]], + [":AND", ["c"], ["f"]], + [":OR", [":AND", ["a"], ["b"]], [":OR", ["b"], ["b"]]], + [ + ":XOR", + [ + ":OR", + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + ["a"], + [":IMPLIES", [":OR", ["b"], ["a"]], [":NOT", ["d"]]] + ], + [ + ":AND", + [ + ":XOR", + ["a"], + [ + ":XOR", + ["c"], + [ + ":XOR", + [ + ":OR", + ["a"], + [ + ":XOR", + ["c"], + [ + ":AND", + ["b"], + [ + ":XOR", + [ + ":AND", + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + [":OR", [":XOR", ["e"], ["c"]], ["c"]], + ["c"] + ] + ] + ], + [ + ":NOT", + [":XOR", [":IMPLIES", ["d"], ["b"]], ["c"]] + ] + ], + ["d"] + ] + ] + ] + ], + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [ + ":AND", + [":AND", ["b"], ["b"]], + [ + ":AND", + [ + ":AND", + ["b"], + [ + ":XOR", + [":OR", ["b"], ["c"]], + [":IMPLIES", [":IMPLIES", ["b"], ["e"]], ["b"]] + ] + ], + [":OR", ["b"], ["c"]] + ] + ], + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + [":NOT", ["a"]], + [":OR", [":NOT", ["b"]], ["d"]] + ], + [ + ":NOT", + [":XOR", [":XOR", ["a"], [":NOT", ["e"]]], ["a"]] + ] + ] + ] + ], + ["b"] + ], + [":XOR", ["c"], ["a"]] + ] + ] + ] + ], + [":AND", ["b"], ["d"]] + ] + ], + [":XOR", ["c"], ["d"]] + ], + [":IMPLIES", ["a"], ["c"]] + ], + [":IMPLIES", ["a"], ["c"]] + ], + [ + ":XOR", + [":AND", [":AND", ["a"], ["b"]], [":IMPLIES", [":NOT", ["d"]], ["b"]]], + ["d"] + ], + [":AND", [":XOR", ["a"], [":IMPLIES", [":NOT", ["a"]], ["a"]]], ["a"]], + [":NOT", ["a"]], + [ + ":AND", + ["a"], + [ + ":OR", + [ + ":OR", + [ + ":XOR", + ["b"], + [ + ":XOR", + ["b"], + [ + ":OR", + [ + ":OR", + [ + ":OR", + [":NOT", [":OR", [":OR", ["b"], ["b"]], ["b"]]], + [ + ":OR", + [":OR", [":AND", ["a"], [":OR", ["b"], ["b"]]], ["a"]], + [ + ":OR", + [ + ":OR", + ["b"], + [ + ":AND", + [ + ":AND", + ["b"], + [ + ":OR", + [ + ":IMPLIES", + ["b"], + [ + ":OR", + [":NOT", [":XOR", ["b"], ["a"]]], + [ + ":IMPLIES", + [":IMPLIES", ["b"], ["b"]], + [":NOT", ["a"]] + ] + ] + ], + ["a"] + ] + ], + ["b"] + ] + ], + [":NOT", ["b"]] + ] + ] + ], + ["a"] + ], + [":AND", ["a"], ["a"]] + ] + ] + ], + [":XOR", ["b"], [":XOR", ["a"], ["b"]]] + ], + ["a"] + ] + ], + [":XOR", ["b"], ["b"]], + [":OR", ["h"], ["b"]], + [":XOR", [":XOR", ["c"], ["a"]], [":XOR", [":AND", ["c"], ["b"]], ["c"]]], + [ + ":XOR", + [ + ":NOT", + [ + ":IMPLIES", + ["d"], + [ + ":IMPLIES", + ["e"], + [ + ":OR", + [ + ":OR", + [ + ":OR", + [":XOR", [":XOR", ["b"], ["c"]], ["g"]], + [":AND", ["i"], ["a"]] + ], + [ + ":AND", + ["c"], + [ + ":XOR", + [ + ":NOT", + [ + ":OR", + [ + ":OR", + [ + ":OR", + [":OR", ["c"], ["f"]], + [ + ":XOR", + [":NOT", [":OR", ["f"], [":NOT", ["h"]]]], + ["h"] + ] + ], + ["g"] + ], + [ + ":NOT", + [ + ":OR", + [ + ":AND", + ["d"], + [":IMPLIES", ["h"], [":OR", ["b"], ["c"]]] + ], + [ + ":XOR", + [":IMPLIES", ["f"], ["a"]], + [":IMPLIES", [":NOT", ["b"]], ["i"]] + ] + ] + ] + ] + ], + ["a"] + ] + ] + ], + ["f"] + ] + ] + ] + ], + ["g"] + ], + [ + ":OR", + [":XOR", [":XOR", ["b"], ["b"]], [":XOR", [":NOT", ["a"]], ["a"]]], + [":AND", [":XOR", ["b"], ["a"]], [":XOR", ["a"], [":NOT", ["b"]]]] + ], + [":OR", ["e"], [":OR", ["a"], ["c"]]], + [":OR", [":IMPLIES", ["e"], ["a"]], ["c"]], + [ + ":XOR", + [":OR", ["d"], ["d"]], + [ + ":NOT", + [ + ":XOR", + [":OR", ["d"], [":AND", [":AND", ["c"], [":NOT", ["a"]]], ["c"]]], + [":IMPLIES", ["c"], [":NOT", ["a"]]] + ] + ] + ], + [":OR", ["a"], ["a"]], + [":IMPLIES", ["b"], ["b"]], + [":XOR", ["b"], [":NOT", [":IMPLIES", ["b"], ["a"]]]], + [":XOR", [":OR", ["f"], ["c"]], [":OR", [":NOT", ["d"]], ["a"]]], + [":XOR", ["a"], ["a"]], + [":NOT", ["d"]], + [":XOR", ["b"], ["a"]], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + [ + ":OR", + [":AND", ["c"], ["b"]], + [ + ":OR", + [ + ":OR", + [":OR", ["b"], ["b"]], + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + [ + ":NOT", + [":IMPLIES", [":IMPLIES", ["a"], [":NOT", ["c"]]], ["b"]] + ], + ["b"] + ] + ] + ], + ["b"] + ] + ], + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + [":AND", [":AND", [":NOT", ["a"]], ["b"]], [":NOT", ["c"]]], + ["b"] + ], + [":XOR", ["b"], ["c"]] + ], + [":IMPLIES", [":OR", ["c"], ["b"]], ["b"]] + ] + ], + ["a"] + ] + ], + [ + ":AND", + [ + ":XOR", + ["h"], + [ + ":AND", + ["f"], + [ + ":IMPLIES", + [ + ":OR", + [":IMPLIES", ["e"], [":NOT", ["e"]]], + [ + ":AND", + [":XOR", ["b"], ["c"]], + [ + ":AND", + [ + ":IMPLIES", + ["g"], + [ + ":OR", + [ + ":OR", + ["g"], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":AND", + [":NOT", [":IMPLIES", ["d"], ["e"]]], + [ + ":OR", + [ + ":AND", + [":OR", [":XOR", ["b"], ["c"]], ["j"]], + ["g"] + ], + [":NOT", ["a"]] + ] + ], + ["a"] + ], + [":IMPLIES", ["d"], ["j"]] + ] + ], + ["b"] + ] + ], + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [":IMPLIES", ["h"], ["a"]], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + [":OR", ["g"], [":IMPLIES", ["a"], ["e"]]], + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + ["a"], + [":NOT", [":NOT", ["e"]]] + ], + ["d"] + ], + ["b"] + ] + ], + [":NOT", ["d"]] + ], + ["c"] + ], + ["a"] + ], + ["i"] + ], + [":OR", [":XOR", ["j"], ["i"]], ["g"]] + ] + ], + ["e"] + ], + ["g"] + ] + ] + ] + ], + ["g"] + ] + ] + ], + [":NOT", ["d"]] + ], + [ + ":XOR", + [":XOR", ["b"], ["a"]], + [ + ":OR", + [ + ":NOT", + [ + ":XOR", + [ + ":XOR", + [ + ":AND", + [ + ":IMPLIES", + ["b"], + [ + ":IMPLIES", + [ + ":XOR", + ["c"], + [ + ":XOR", + [ + ":OR", + [":NOT", ["b"]], + [":NOT", [":XOR", ["c"], ["a"]]] + ], + ["a"] + ] + ], + [":NOT", ["b"]] + ] + ], + [ + ":AND", + ["c"], + [ + ":AND", + ["b"], + [ + ":OR", + [":AND", [":OR", ["a"], ["a"]], [":XOR", ["a"], ["c"]]], + ["a"] + ] + ] + ] + ], + [":NOT", [":OR", [":NOT", ["a"]], ["c"]]] + ], + ["b"] + ] + ], + [ + ":AND", + [":XOR", [":NOT", ["b"]], ["b"]], + [":NOT", [":AND", [":IMPLIES", ["c"], ["a"]], ["a"]]] + ] + ] + ], + [ + ":IMPLIES", + ["i"], + [ + ":IMPLIES", + [":OR", [":NOT", ["h"]], ["e"]], + [ + ":IMPLIES", + ["c"], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + ["d"], + [ + ":AND", + [ + ":IMPLIES", + [":OR", ["e"], [":OR", [":XOR", ["b"], ["a"]], ["f"]]], + ["g"] + ], + [":AND", ["g"], [":OR", ["a"], ["f"]]] + ] + ] + ], + ["f"] + ], + ["f"] + ] + ] + ] + ], + [":IMPLIES", ["a"], [":IMPLIES", ["a"], [":NOT", ["a"]]]], + [ + ":AND", + ["c"], + [ + ":OR", + ["b"], + [ + ":IMPLIES", + ["a"], + [":IMPLIES", ["c"], [":IMPLIES", [":XOR", ["d"], ["b"]], ["a"]]] + ] + ] + ], + [":AND", [":IMPLIES", ["c"], ["c"]], ["c"]], + [":NOT", [":OR", ["a"], [":IMPLIES", ["a"], ["a"]]]], + [":OR", [":AND", ["b"], [":IMPLIES", ["b"], ["b"]]], [":XOR", ["a"], ["b"]]], + [ + ":XOR", + [ + ":IMPLIES", + ["f"], + [":NOT", [":XOR", [":IMPLIES", [":NOT", ["g"]], ["d"]], ["e"]]] + ], + ["g"] + ], + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + [":OR", ["a"], [":NOT", ["e"]]], + [":OR", ["b"], [":OR", [":AND", ["a"], ["c"]], ["a"]]] + ] + ], + [":OR", ["a"], ["a"]], + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + ["c"], + [ + ":XOR", + [ + ":XOR", + [ + ":XOR", + [ + ":NOT", + [ + ":XOR", + [ + ":NOT", + [ + ":AND", + [":OR", ["f"], [":AND", ["f"], ["i"]]], + [ + ":IMPLIES", + [":OR", ["c"], ["i"]], + [ + ":XOR", + [":NOT", ["c"]], + [ + ":OR", + [ + ":XOR", + [":XOR", ["h"], [":XOR", [":NOT", ["i"]], ["b"]]], + [ + ":XOR", + [ + ":IMPLIES", + ["d"], + [ + ":IMPLIES", + [":NOT", ["f"]], + [ + ":XOR", + [":OR", ["c"], ["e"]], + [ + ":XOR", + ["c"], + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [ + ":XOR", + ["f"], + [":XOR", ["g"], [":NOT", ["i"]]] + ], + [":NOT", [":NOT", ["i"]]] + ] + ] + ] + ] + ] + ] + ], + [":AND", ["h"], ["d"]] + ] + ], + [":IMPLIES", ["i"], ["c"]] + ] + ] + ] + ] + ], + ["g"] + ] + ], + [":OR", ["c"], ["h"]] + ], + [ + ":IMPLIES", + ["c"], + [":OR", ["h"], [":NOT", [":XOR", ["b"], ["b"]]]] + ] + ], + ["e"] + ] + ], + ["a"] + ], + ["e"] + ], + [":NOT", [":XOR", [":OR", ["b"], [":OR", ["b"], ["a"]]], ["b"]]], + [":OR", ["b"], ["b"]], + [":IMPLIES", ["g"], ["a"]], + [ + ":IMPLIES", + ["a"], + [ + ":AND", + ["b"], + [ + ":XOR", + [":NOT", ["b"]], + [":NOT", [":AND", [":XOR", ["a"], ["b"]], ["b"]]] + ] + ] + ], + [ + ":AND", + [":NOT", ["c"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + [":IMPLIES", ["a"], ["b"]], + [":AND", [":NOT", [":AND", [":XOR", ["d"], ["b"]], ["b"]]], ["b"]] + ], + ["a"] + ], + ["d"] + ] + ], + [":AND", [":IMPLIES", ["c"], ["b"]], ["c"]], + [ + ":XOR", + [ + ":IMPLIES", + ["a"], + [ + ":NOT", + [ + ":IMPLIES", + [":IMPLIES", [":NOT", ["a"]], ["a"]], + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [":OR", ["a"], ["a"]], + [ + ":OR", + [":OR", ["a"], [":OR", ["a"], ["a"]]], + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [":AND", [":IMPLIES", ["a"], ["a"]], ["a"]], + [":XOR", [":NOT", ["a"]], ["a"]] + ], + ["a"] + ], + ["a"] + ] + ] + ] + ] + ] + ] + ], + ["a"] + ], + [":NOT", ["c"]], + [ + ":IMPLIES", + [ + ":XOR", + [":AND", ["i"], ["j"]], + [ + ":IMPLIES", + [":XOR", ["j"], [":NOT", [":XOR", ["g"], [":NOT", ["e"]]]]], + ["g"] + ] + ], + [":NOT", ["j"]] + ], + [ + ":OR", + [ + ":OR", + ["b"], + [ + ":XOR", + [":OR", [":NOT", ["a"]], [":NOT", ["b"]]], + [ + ":IMPLIES", + [":AND", ["a"], [":IMPLIES", ["a"], [":AND", ["b"], ["a"]]]], + [ + ":OR", + ["a"], + [ + ":NOT", + [ + ":AND", + [ + ":OR", + ["a"], + [ + ":AND", + [ + ":NOT", + [":IMPLIES", [":NOT", [":XOR", ["a"], ["b"]]], ["a"]] + ], + ["b"] + ] + ], + [":XOR", ["b"], ["a"]] + ] + ] + ] + ] + ] + ], + [":XOR", ["b"], [":IMPLIES", ["b"], ["a"]]] + ], + [":XOR", ["d"], [":NOT", [":NOT", [":NOT", ["c"]]]]], + [":AND", [":XOR", ["j"], ["c"]], ["j"]], + [":IMPLIES", [":NOT", [":OR", ["a"], ["a"]]], ["a"]], + [ + ":XOR", + [ + ":NOT", + [ + ":XOR", + ["b"], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + [ + ":XOR", + [":IMPLIES", ["b"], ["a"]], + [":OR", ["b"], [":AND", ["a"], [":OR", ["b"], ["a"]]]] + ], + [":AND", ["b"], ["b"]] + ] + ] + ] + ], + [":NOT", [":NOT", ["b"]]] + ], + [":XOR", [":NOT", ["a"]], ["f"]], + [":OR", ["b"], [":XOR", ["a"], [":IMPLIES", ["b"], [":NOT", ["b"]]]]], + [":XOR", [":XOR", ["a"], ["a"]], ["a"]], + [":XOR", [":XOR", ["b"], [":AND", ["b"], ["a"]]], ["b"]], + [":XOR", ["b"], ["a"]], + [":NOT", [":NOT", ["g"]]], + [":XOR", ["a"], ["b"]], + [ + ":AND", + [ + ":XOR", + [ + ":OR", + [ + ":OR", + [ + ":IMPLIES", + [":NOT", [":AND", ["a"], ["a"]]], + [ + ":AND", + [ + ":AND", + ["b"], + [":AND", ["d"], [":IMPLIES", [":OR", ["b"], ["d"]], ["c"]]] + ], + [ + ":XOR", + ["c"], + [ + ":IMPLIES", + ["b"], + [ + ":OR", + [ + ":OR", + [":IMPLIES", [":XOR", ["c"], ["e"]], ["b"]], + [":NOT", ["a"]] + ], + [":NOT", ["b"]] + ] + ] + ] + ] + ], + ["c"] + ], + ["a"] + ], + ["d"] + ], + [":XOR", ["b"], [":AND", ["e"], ["a"]]] + ], + [ + ":XOR", + [ + ":AND", + [":XOR", [":AND", ["a"], [":IMPLIES", ["b"], ["b"]]], ["b"]], + [":IMPLIES", [":XOR", ["b"], ["b"]], ["b"]] + ], + ["a"] + ], + [":NOT", ["a"]], + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + [ + ":OR", + ["f"], + [ + ":IMPLIES", + [":AND", [":OR", ["g"], ["g"]], ["j"]], + [":OR", ["i"], ["e"]] + ] + ], + ["c"] + ], + ["j"] + ] + ] + ], + [ + ":XOR", + [ + ":XOR", + [ + ":NOT", + [ + ":AND", + ["h"], + [ + ":XOR", + [":IMPLIES", [":IMPLIES", ["f"], ["c"]], [":AND", ["f"], ["b"]]], + [ + ":XOR", + [":OR", [":AND", ["c"], ["d"]], [":OR", ["c"], ["g"]]], + [":NOT", [":NOT", [":IMPLIES", ["c"], ["g"]]]] + ] + ] + ] + ], + ["e"] + ], + [":IMPLIES", ["d"], ["a"]] + ], + [ + ":XOR", + ["a"], + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [ + ":AND", + [ + ":OR", + [ + ":XOR", + ["g"], + [ + ":AND", + [ + ":OR", + [":NOT", [":IMPLIES", [":IMPLIES", ["b"], ["c"]], ["d"]]], + [ + ":IMPLIES", + [":NOT", [":NOT", [":OR", ["e"], ["i"]]]], + [ + ":IMPLIES", + [":XOR", ["d"], ["d"]], + [ + ":IMPLIES", + [ + ":XOR", + ["j"], + [ + ":AND", + [ + ":AND", + [ + ":IMPLIES", + [ + ":OR", + ["c"], + [ + ":OR", + [ + ":IMPLIES", + ["f"], + [":NOT", [":AND", ["c"], ["c"]]] + ], + [ + ":IMPLIES", + [":XOR", ["b"], ["e"]], + ["f"] + ] + ] + ], + [":NOT", [":OR", ["f"], ["c"]]] + ], + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [ + ":AND", + ["j"], + [ + ":XOR", + [ + ":AND", + ["j"], + [ + ":AND", + [":OR", ["d"], ["b"]], + ["a"] + ] + ], + ["c"] + ] + ], + ["b"] + ], + [":XOR", ["i"], ["j"]] + ], + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + ["j"], + [":OR", ["e"], [":OR", ["f"], ["h"]]] + ], + ["h"] + ], + ["e"] + ] + ] + ], + ["c"] + ] + ], + [":NOT", [":OR", [":IMPLIES", ["i"], ["i"]], ["e"]]] + ] + ] + ] + ], + [":OR", ["a"], [":IMPLIES", ["j"], ["e"]]] + ] + ], + ["f"] + ], + ["i"] + ], + ["j"] + ], + ["j"] + ], + [ + ":XOR", + [ + ":OR", + [ + ":IMPLIES", + [":NOT", ["d"]], + [ + ":AND", + [":XOR", ["f"], [":IMPLIES", ["a"], ["c"]]], + [":NOT", ["c"]] + ] + ], + ["b"] + ], + ["f"] + ] + ] + ] + ], + [ + ":AND", + ["h"], + [ + ":IMPLIES", + [":NOT", [":IMPLIES", ["a"], ["e"]]], + [ + ":OR", + [ + ":AND", + ["g"], + [":NOT", [":NOT", [":AND", [":IMPLIES", ["d"], ["g"]], ["a"]]]] + ], + ["f"] + ] + ] + ], + [":AND", [":IMPLIES", [":NOT", [":NOT", ["b"]]], ["e"]], ["c"]], + [":IMPLIES", ["a"], ["e"]], + [":AND", ["c"], ["c"]], + [":OR", ["f"], ["d"]], + [":XOR", [":XOR", ["g"], [":XOR", ["a"], ["d"]]], [":NOT", ["e"]]], + [ + ":XOR", + [":IMPLIES", ["b"], ["g"]], + [":IMPLIES", [":AND", ["e"], [":IMPLIES", ["h"], ["e"]]], [":NOT", ["b"]]] + ], + [":AND", [":NOT", ["f"]], [":XOR", ["a"], ["a"]]], + [ + ":AND", + [":NOT", [":AND", ["d"], [":NOT", [":IMPLIES", ["f"], ["a"]]]]], + ["f"] + ], + [":OR", [":NOT", ["b"]], [":AND", ["j"], [":NOT", ["j"]]]], + [":XOR", ["e"], [":OR", ["a"], ["c"]]], + [":NOT", ["f"]], + [":XOR", ["c"], [":XOR", ["f"], ["f"]]], + [ + ":AND", + ["c"], + [ + ":OR", + ["d"], + [ + ":AND", + [":AND", ["a"], ["e"]], + [ + ":XOR", + [ + ":AND", + ["a"], + [ + ":AND", + [ + ":IMPLIES", + [":AND", ["a"], [":XOR", ["a"], ["a"]]], + [":NOT", ["b"]] + ], + ["e"] + ] + ], + ["c"] + ] + ] + ] + ], + [ + ":IMPLIES", + ["e"], + [ + ":XOR", + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["c"], + [ + ":OR", + ["c"], + [ + ":IMPLIES", + ["d"], + [ + ":XOR", + [ + ":AND", + [":OR", [":IMPLIES", ["e"], ["b"]], ["d"]], + [":OR", ["a"], [":NOT", [":IMPLIES", ["e"], ["d"]]]] + ], + ["d"] + ] + ] + ] + ], + ["a"] + ], + ["a"] + ], + ["e"] + ], + [":IMPLIES", ["c"], ["a"]] + ] + ], + [":NOT", ["a"]], + [":XOR", [":AND", ["a"], ["b"]], ["a"]], + [":OR", ["e"], ["c"]], + [":NOT", ["f"]], + [ + ":OR", + [":IMPLIES", [":IMPLIES", ["e"], ["c"]], ["d"]], + [":OR", ["c"], [":XOR", ["b"], [":XOR", [":XOR", ["e"], ["c"]], ["b"]]]] + ], + [ + ":XOR", + [":AND", ["d"], ["a"]], + [":AND", [":AND", [":AND", ["f"], ["c"]], [":NOT", ["f"]]], ["f"]] + ], + [":IMPLIES", [":IMPLIES", ["a"], [":NOT", ["b"]]], [":NOT", ["a"]]], + [ + ":OR", + [ + ":XOR", + [":AND", ["b"], [":NOT", [":OR", ["a"], ["a"]]]], + [ + ":OR", + [ + ":XOR", + [":NOT", [":XOR", ["b"], [":AND", ["b"], ["b"]]]], + [ + ":XOR", + ["b"], + [ + ":AND", + [ + ":OR", + ["a"], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":OR", + [":OR", ["c"], [":AND", ["c"], [":AND", ["a"], ["a"]]]], + [ + ":IMPLIES", + ["b"], + [":NOT", [":IMPLIES", ["c"], ["c"]]] + ] + ], + ["c"] + ] + ], + [":NOT", [":OR", ["c"], ["a"]]] + ] + ], + [":NOT", ["b"]] + ] + ] + ], + [ + ":XOR", + [ + ":IMPLIES", + [":IMPLIES", ["a"], ["b"]], + [ + ":AND", + [ + ":OR", + ["b"], + [ + ":XOR", + [ + ":NOT", + [":OR", ["c"], [":XOR", ["c"], [":OR", ["a"], ["a"]]]] + ], + ["b"] + ] + ], + [":NOT", ["b"]] + ] + ], + [ + ":IMPLIES", + [":OR", [":NOT", ["a"]], [":NOT", [":NOT", ["a"]]]], + ["b"] + ] + ] + ] + ], + ["a"] + ], + [":NOT", ["a"]], + [ + ":NOT", + [ + ":IMPLIES", + [":AND", ["a"], [":OR", [":NOT", ["b"]], ["b"]]], + [ + ":IMPLIES", + [ + ":IMPLIES", + [":OR", [":OR", ["a"], ["a"]], ["b"]], + [ + ":AND", + ["b"], + [ + ":AND", + [":XOR", [":OR", ["a"], ["a"]], ["a"]], + [":OR", ["b"], ["b"]] + ] + ] + ], + ["b"] + ] + ] + ], + [ + ":XOR", + ["b"], + [":IMPLIES", [":NOT", ["e"]], [":OR", ["e"], [":OR", ["i"], ["d"]]]] + ], + [":OR", ["b"], [":NOT", ["a"]]], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":OR", + [":NOT", [":XOR", ["c"], [":XOR", ["c"], ["i"]]]], + [ + ":OR", + [":AND", [":XOR", [":AND", ["i"], ["a"]], ["g"]], ["a"]], + ["e"] + ] + ], + ["j"] + ], + [":XOR", [":NOT", ["e"]], ["h"]] + ], + ["j"] + ], + [ + ":OR", + [ + ":IMPLIES", + [ + ":AND", + [":AND", ["c"], [":AND", [":AND", ["e"], ["e"]], ["h"]]], + [":NOT", [":OR", ["d"], ["h"]]] + ], + ["b"] + ], + ["b"] + ], + [ + ":OR", + ["f"], + [ + ":IMPLIES", + [":IMPLIES", ["e"], ["e"]], + [":XOR", ["d"], [":AND", ["a"], ["e"]]] + ] + ], + [ + ":AND", + [ + ":XOR", + [":AND", [":NOT", [":XOR", ["a"], ["c"]]], ["a"]], + [":AND", [":NOT", ["c"]], [":IMPLIES", ["e"], ["d"]]] + ], + [ + ":OR", + [ + ":XOR", + ["d"], + [ + ":IMPLIES", + [ + ":XOR", + ["b"], + [ + ":NOT", + [ + ":OR", + ["e"], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":XOR", + ["c"], + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + [ + ":AND", + [":NOT", ["d"]], + [":IMPLIES", ["a"], [":IMPLIES", ["b"], ["b"]]] + ], + ["c"] + ], + ["a"] + ], + ["c"] + ] + ], + [":XOR", ["a"], ["e"]] + ] + ] + ] + ] + ], + ["d"] + ] + ], + ["d"] + ] + ], + [ + ":OR", + [ + ":NOT", + [ + ":IMPLIES", + [":XOR", [":NOT", ["b"]], [":XOR", ["f"], ["g"]]], + [":NOT", [":NOT", ["g"]]] + ] + ], + [":IMPLIES", ["b"], [":NOT", [":NOT", ["f"]]]] + ], + [ + ":IMPLIES", + [":AND", [":OR", ["g"], ["d"]], [":NOT", ["a"]]], + [ + ":NOT", + [ + ":XOR", + [ + ":XOR", + ["d"], + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + [ + ":XOR", + [ + ":XOR", + ["g"], + [ + ":NOT", + [ + ":NOT", + [ + ":IMPLIES", + [":AND", ["e"], [":AND", ["a"], ["f"]]], + [":NOT", [":NOT", ["h"]]] + ] + ] + ] + ], + [":IMPLIES", ["g"], ["e"]] + ], + ["f"] + ] + ] + ], + ["i"] + ] + ] + ], + [":XOR", ["c"], [":NOT", ["c"]]], + [":OR", [":IMPLIES", ["b"], [":XOR", [":AND", ["e"], ["f"]], ["c"]]], ["e"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["b"], + [ + ":IMPLIES", + ["d"], + [ + ":NOT", + [ + ":NOT", + [ + ":IMPLIES", + ["d"], + [ + ":IMPLIES", + [":AND", [":OR", ["a"], [":IMPLIES", ["b"], ["a"]]], ["c"]], + ["b"] + ] + ] + ] + ] + ] + ], + ["d"] + ], + [":XOR", ["i"], ["d"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":AND", + [":OR", ["e"], ["h"]], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":IMPLIES", + [":NOT", ["f"]], + [":NOT", [":IMPLIES", ["c"], ["b"]]] + ], + ["e"] + ], + ["f"] + ] + ] + ], + [":NOT", [":NOT", [":NOT", [":IMPLIES", ["e"], ["e"]]]]] + ], + [":IMPLIES", ["f"], ["h"]] + ], + [ + ":AND", + ["d"], + [":XOR", ["e"], [":OR", [":XOR", [":AND", ["c"], ["e"]], ["a"]], ["c"]]] + ], + [":AND", ["a"], ["a"]], + [":OR", ["a"], ["a"]], + [":AND", [":IMPLIES", [":XOR", ["d"], ["a"]], ["e"]], ["a"]], + [":AND", [":NOT", [":NOT", ["b"]]], [":AND", ["a"], ["b"]]], + [ + ":OR", + [ + ":IMPLIES", + [":OR", [":AND", ["b"], ["b"]], [":NOT", [":IMPLIES", ["b"], ["b"]]]], + [":NOT", ["b"]] + ], + ["a"] + ], + [":OR", [":AND", ["b"], ["c"]], ["b"]], + [":OR", ["b"], [":AND", [":NOT", ["c"]], ["c"]]], + [":AND", ["g"], [":IMPLIES", ["h"], [":AND", ["j"], ["c"]]]], + [":NOT", ["b"]], + [":IMPLIES", ["d"], ["b"]], + [ + ":AND", + [":OR", ["a"], [":NOT", ["e"]]], + [":OR", [":AND", ["a"], ["b"]], [":XOR", ["c"], ["f"]]] + ], + [ + ":AND", + [ + ":IMPLIES", + ["a"], + [":AND", [":AND", [":OR", ["a"], [":NOT", ["a"]]], ["a"]], ["a"]] + ], + ["a"] + ], + [":OR", ["b"], ["c"]], + [":NOT", ["e"]], + [ + ":NOT", + [ + ":AND", + [ + ":OR", + [ + ":NOT", + [ + ":XOR", + [":AND", ["f"], ["f"]], + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + [ + ":XOR", + [ + ":OR", + [":NOT", ["g"]], + [":OR", [":NOT", [":NOT", ["d"]]], ["f"]] + ], + [ + ":OR", + [ + ":NOT", + [ + ":XOR", + [":NOT", [":OR", [":NOT", ["g"]], ["b"]]], + [":XOR", ["e"], ["f"]] + ] + ], + [ + ":XOR", + [ + ":OR", + [ + ":XOR", + [ + ":OR", + [":XOR", [":OR", ["g"], ["c"]], ["c"]], + ["b"] + ], + ["f"] + ], + [":NOT", ["b"]] + ], + ["f"] + ] + ] + ], + ["f"] + ], + [":IMPLIES", [":NOT", ["a"]], ["b"]] + ], + ["c"] + ] + ] + ], + ["b"] + ], + ["e"] + ] + ], + [":XOR", ["a"], ["a"]], + [":OR", ["f"], [":IMPLIES", ["b"], ["g"]]], + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [":OR", ["a"], [":AND", [":AND", ["b"], ["c"]], ["h"]]], + [ + ":AND", + [":NOT", ["b"]], + [ + ":AND", + [ + ":XOR", + [":OR", ["g"], ["d"]], + [ + ":IMPLIES", + [":IMPLIES", [":IMPLIES", ["d"], ["h"]], ["g"]], + ["b"] + ] + ], + ["b"] + ] + ] + ], + [":NOT", ["g"]] + ], + ["f"] + ], + [":XOR", ["g"], ["g"]], + [":XOR", ["b"], ["c"]], + [ + ":AND", + ["d"], + [":OR", [":OR", ["b"], [":XOR", ["e"], [":NOT", ["d"]]]], [":NOT", ["d"]]] + ], + [":OR", ["d"], ["c"]], + [":XOR", [":OR", ["b"], [":IMPLIES", ["a"], ["a"]]], ["a"]], + [":IMPLIES", [":NOT", ["c"]], ["e"]], + [":AND", ["a"], ["a"]], + [":NOT", ["a"]], + [":NOT", [":IMPLIES", ["b"], ["j"]]], + [":OR", [":NOT", ["a"]], ["c"]], + [ + ":XOR", + ["a"], + [ + ":AND", + [":OR", [":AND", ["d"], ["a"]], [":OR", ["c"], [":NOT", ["c"]]]], + [":NOT", ["b"]] + ] + ], + [ + ":AND", + [ + ":OR", + [":NOT", ["f"]], + [ + ":AND", + [":IMPLIES", [":IMPLIES", ["f"], ["e"]], ["c"]], + [":XOR", ["a"], ["d"]] + ] + ], + ["a"] + ], + [":XOR", [":XOR", ["a"], ["c"]], ["f"]], + [ + ":OR", + ["b"], + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + ["b"], + [ + ":XOR", + [ + ":AND", + ["d"], + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [ + ":OR", + [ + ":IMPLIES", + [":NOT", ["a"]], + [ + ":NOT", + [":XOR", ["e"], [":NOT", [":AND", ["e"], ["e"]]]] + ] + ], + [":XOR", ["f"], ["d"]] + ], + [":NOT", ["e"]] + ], + ["a"] + ], + ["a"] + ] + ], + ["c"] + ] + ] + ] + ] + ], + [":OR", ["a"], [":NOT", [":NOT", [":NOT", ["a"]]]]], + [":XOR", ["b"], [":XOR", ["a"], ["b"]]], + [":NOT", [":AND", [":NOT", ["a"]], ["i"]]], + [":IMPLIES", ["f"], ["e"]], + [":NOT", ["f"]], + [ + ":OR", + ["g"], + [ + ":XOR", + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + [ + ":AND", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":IMPLIES", + [":OR", ["h"], ["g"]], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":OR", + [ + ":NOT", + [ + ":AND", + [":NOT", ["e"]], + [ + ":XOR", + [":NOT", ["i"]], + [":IMPLIES", ["a"], ["e"]] + ] + ] + ], + ["a"] + ], + ["a"] + ], + [ + ":OR", + [":XOR", ["c"], [":XOR", ["j"], ["h"]]], + [ + ":OR", + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + ["h"], + [ + ":AND", + [":IMPLIES", ["g"], ["g"]], + ["b"] + ] + ], + [ + ":XOR", + [ + ":OR", + [ + ":AND", + [":XOR", [":NOT", ["b"]], ["a"]], + ["i"] + ], + [":XOR", ["g"], ["d"]] + ], + ["b"] + ] + ], + ["c"] + ], + [ + ":XOR", + [ + ":AND", + [":OR", [":AND", ["a"], ["a"]], ["g"]], + ["e"] + ], + ["j"] + ] + ] + ] + ] + ], + [":IMPLIES", ["c"], [":XOR", ["g"], ["a"]]] + ], + [":NOT", ["b"]] + ], + [":NOT", ["b"]] + ], + ["g"] + ], + ["j"] + ], + ["h"] + ], + ["i"] + ] + ] + ], + ["f"] + ] + ], + [ + ":OR", + [ + ":OR", + ["a"], + [":OR", ["a"], [":NOT", [":AND", ["a"], [":AND", ["a"], ["a"]]]]] + ], + [":IMPLIES", ["a"], ["a"]] + ], + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + ["c"], + [":XOR", ["e"], [":OR", ["e"], [":XOR", ["c"], [":OR", ["b"], ["c"]]]]] + ] + ], + [ + ":AND", + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + ["b"], + [":XOR", [":AND", [":NOT", ["a"]], ["a"]], [":XOR", ["b"], ["b"]]] + ] + ], + ["b"] + ], + [":AND", ["a"], [":OR", ["e"], [":XOR", ["c"], ["b"]]]], + [":AND", [":IMPLIES", ["c"], [":XOR", ["e"], ["e"]]], [":NOT", ["c"]]], + [":OR", [":AND", ["b"], ["e"]], ["c"]], + [":OR", [":OR", ["d"], ["f"]], [":NOT", ["c"]]], + [":OR", ["e"], [":IMPLIES", ["b"], ["a"]]], + [":IMPLIES", ["e"], ["f"]], + [":AND", [":NOT", [":XOR", ["i"], ["b"]]], ["a"]], + [ + ":NOT", + [ + ":AND", + ["h"], + [ + ":OR", + ["c"], + [ + ":OR", + [ + ":AND", + [ + ":NOT", + [ + ":XOR", + [":OR", ["c"], [":NOT", [":IMPLIES", ["h"], ["e"]]]], + ["e"] + ] + ], + [ + ":OR", + [ + ":IMPLIES", + [ + ":XOR", + ["g"], + [ + ":OR", + ["h"], + [ + ":AND", + [":AND", [":OR", ["h"], ["f"]], ["f"]], + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + ["h"], + [ + ":AND", + [ + ":XOR", + [ + ":OR", + [ + ":AND", + [ + ":AND", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":OR", + ["c"], + [ + ":XOR", + ["b"], + [ + ":XOR", + [ + ":IMPLIES", + [":XOR", ["j"], ["j"]], + ["j"] + ], + ["d"] + ] + ] + ], + [":AND", ["h"], [":NOT", ["e"]]] + ] + ], + ["b"] + ], + [ + ":XOR", + [ + ":IMPLIES", + ["b"], + [":NOT", [":NOT", ["f"]]] + ], + ["e"] + ] + ], + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":AND", + [ + ":IMPLIES", + [":NOT", ["c"]], + ["b"] + ], + ["a"] + ], + ["e"] + ], + ["a"] + ], + ["i"] + ], + ["b"] + ] + ], + [":IMPLIES", [":AND", ["c"], ["j"]], ["j"]] + ], + [":AND", ["f"], ["e"]] + ], + ["b"] + ], + ["b"] + ] + ] + ] + ] + ] + ], + [":AND", [":XOR", ["h"], [":NOT", ["b"]]], ["e"]] + ], + [":AND", ["d"], ["e"]] + ] + ], + ["d"] + ] + ] + ] + ], + [":NOT", ["b"]], + [ + ":IMPLIES", + ["b"], + [ + ":OR", + ["a"], + [ + ":AND", + [":IMPLIES", ["b"], ["b"]], + [ + ":OR", + [ + ":OR", + [":NOT", ["a"]], + [ + ":OR", + [ + ":OR", + [ + ":AND", + [":XOR", ["a"], ["a"]], + [":OR", ["a"], [":IMPLIES", ["a"], ["a"]]] + ], + ["a"] + ], + [ + ":IMPLIES", + [ + ":OR", + ["a"], + [ + ":IMPLIES", + ["b"], + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":OR", + ["b"], + [ + ":OR", + [ + ":NOT", + [ + ":XOR", + [ + ":XOR", + [":XOR", ["b"], [":NOT", ["b"]]], + ["b"] + ], + [ + ":OR", + [ + ":IMPLIES", + [":XOR", ["a"], ["a"]], + ["b"] + ], + [":OR", ["b"], ["a"]] + ] + ] + ], + [":NOT", [":XOR", [":NOT", ["a"]], ["b"]]] + ] + ], + ["a"] + ], + ["b"] + ], + [ + ":OR", + ["b"], + [ + ":IMPLIES", + [":IMPLIES", ["a"], [":AND", ["a"], ["a"]]], + ["b"] + ] + ] + ], + ["b"] + ] + ] + ], + ["a"] + ] + ] + ], + ["a"] + ] + ] + ] + ], + [":OR", ["a"], ["a"]], + [":AND", ["b"], ["c"]], + [":NOT", [":IMPLIES", ["d"], ["h"]]], + [ + ":IMPLIES", + ["c"], + [":AND", ["a"], [":IMPLIES", [":AND", ["c"], ["a"]], ["b"]]] + ], + [":IMPLIES", ["a"], [":OR", ["e"], [":XOR", ["b"], ["c"]]]], + [":NOT", [":AND", [":IMPLIES", [":NOT", ["a"]], ["d"]], [":NOT", ["d"]]]], + [ + ":AND", + [":AND", ["a"], ["a"]], + [ + ":AND", + [ + ":XOR", + [ + ":OR", + [":OR", ["a"], ["a"]], + [ + ":OR", + [ + ":XOR", + ["a"], + [ + ":OR", + [ + ":OR", + ["a"], + [ + ":XOR", + [":NOT", [":OR", [":IMPLIES", ["a"], ["a"]], ["a"]]], + ["a"] + ] + ], + ["a"] + ] + ], + [":OR", ["a"], ["a"]] + ] + ], + [":NOT", ["a"]] + ], + ["a"] + ] + ], + [":AND", ["e"], ["h"]], + [ + ":IMPLIES", + [":XOR", ["e"], ["i"]], + [ + ":IMPLIES", + [ + ":XOR", + [":NOT", ["c"]], + [":AND", [":XOR", [":NOT", ["b"]], [":NOT", ["a"]]], ["i"]] + ], + ["a"] + ] + ], + [":OR", [":IMPLIES", ["h"], [":NOT", ["d"]]], ["h"]], + [":IMPLIES", [":AND", ["d"], ["b"]], ["g"]], + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [":NOT", [":OR", [":OR", ["a"], ["a"]], [":OR", ["a"], ["a"]]]], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":OR", + [ + ":OR", + ["a"], + [ + ":AND", + ["a"], + [ + ":XOR", + [ + ":XOR", + [ + ":XOR", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + [ + ":NOT", + [ + ":OR", + [":NOT", ["a"]], + [":XOR", ["a"], ["a"]] + ] + ], + [":XOR", ["a"], ["a"]] + ] + ] + ], + ["a"] + ], + ["a"] + ], + ["a"] + ], + [ + ":OR", + [":OR", ["a"], [":IMPLIES", ["a"], ["a"]]], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":AND", + [":AND", ["a"], ["a"]], + [":NOT", ["a"]] + ] + ], + ["a"] + ] + ] + ], + ["a"] + ], + ["a"] + ] + ] + ], + [":AND", ["a"], ["a"]] + ], + [":OR", ["a"], ["a"]] + ], + [ + ":IMPLIES", + [":OR", ["a"], [":AND", [":IMPLIES", ["a"], ["a"]], ["a"]]], + [ + ":OR", + [ + ":OR", + [ + ":AND", + [":XOR", ["a"], [":IMPLIES", ["a"], ["a"]]], + [ + ":XOR", + [ + ":NOT", + [ + ":XOR", + [ + ":OR", + [ + ":OR", + ["a"], + [ + ":AND", + [ + ":AND", + [ + ":AND", + [ + ":IMPLIES", + ["a"], + [ + ":NOT", + [ + ":IMPLIES", + ["a"], + [ + ":NOT", + [ + ":XOR", + [ + ":NOT", + [ + ":OR", + [ + ":IMPLIES", + [":AND", ["a"], ["a"]], + ["a"] + ], + [ + ":XOR", + [ + ":OR", + [":XOR", ["a"], ["a"]], + ["a"] + ], + [ + ":AND", + [ + ":XOR", + [":NOT", ["a"]], + [ + ":AND", + [ + ":XOR", + [ + ":OR", + ["a"], + ["a"] + ], + [ + ":IMPLIES", + ["a"], + ["a"] + ] + ], + [ + ":OR", + [":NOT", ["a"]], + [ + ":AND", + ["a"], + ["a"] + ] + ] + ] + ], + ["a"] + ] + ] + ] + ], + [ + ":XOR", + [ + ":XOR", + ["a"], + [ + ":NOT", + [ + ":AND", + [ + ":AND", + ["a"], + [":OR", ["a"], ["a"]] + ], + [ + ":OR", + [ + ":OR", + [ + ":AND", + ["a"], + [":NOT", ["a"]] + ], + [ + ":XOR", + ["a"], + ["a"] + ] + ], + [":XOR", ["a"], ["a"]] + ] + ] + ] + ], + ["a"] + ] + ] + ] + ] + ] + ], + ["a"] + ], + ["a"] + ], + ["a"] + ] + ], + ["a"] + ], + ["a"] + ] + ], + [ + ":OR", + ["a"], + [ + ":XOR", + [":NOT", [":NOT", [":NOT", ["a"]]]], + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + [":NOT", ["a"]], + [ + ":IMPLIES", + ["a"], + [":IMPLIES", ["a"], [":NOT", ["a"]]] + ] + ] + ] + ] + ] + ] + ], + [":IMPLIES", ["a"], [":AND", ["a"], ["a"]]] + ], + ["a"] + ] + ] + ] + ], + [ + ":IMPLIES", + [":NOT", [":XOR", ["a"], ["a"]]], + [ + ":AND", + [":AND", [":NOT", ["a"]], ["a"]], + [ + ":NOT", + [ + ":IMPLIES", + [":AND", ["a"], ["a"]], + [ + ":OR", + ["a"], + [ + ":IMPLIES", + [ + ":XOR", + [":XOR", ["a"], [":NOT", [":IMPLIES", ["a"], ["a"]]]], + [":NOT", [":NOT", [":OR", ["a"], ["a"]]]] + ], + [":IMPLIES", [":OR", ["a"], [":NOT", ["a"]]], ["a"]] + ] + ] + ] + ] + ] + ] + ], + [":NOT", ["a"]] + ], + ["a"] + ], + [ + ":XOR", + ["a"], + [ + ":AND", + ["a"], + [ + ":AND", + [ + ":AND", + [":AND", [":AND", [":OR", ["a"], ["a"]], ["a"]], ["a"]], + ["a"] + ], + [ + ":OR", + [ + ":AND", + ["a"], + [ + ":AND", + [":XOR", [":XOR", ["a"], ["a"]], [":IMPLIES", ["a"], ["a"]]], + ["a"] + ] + ], + ["a"] + ] + ] + ] + ] + ], + [ + ":OR", + [ + ":XOR", + [ + ":OR", + ["b"], + [":OR", [":NOT", ["c"]], [":NOT", [":NOT", [":NOT", ["d"]]]]] + ], + [":XOR", [":AND", ["c"], [":NOT", ["d"]]], ["a"]] + ], + ["c"] + ], + [":AND", ["a"], [":NOT", ["b"]]], + [":IMPLIES", ["a"], ["a"]], + [":IMPLIES", ["g"], ["a"]], + [":NOT", [":OR", ["f"], ["c"]]], + [":IMPLIES", ["b"], ["b"]], + [ + ":XOR", + [ + ":IMPLIES", + ["a"], + [ + ":NOT", + [ + ":OR", + ["a"], + [ + ":AND", + ["a"], + [":AND", [":AND", [":NOT", [":OR", ["a"], ["a"]]], ["a"]], ["a"]] + ] + ] + ] + ], + ["a"] + ], + [":AND", ["b"], ["h"]], + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + [":IMPLIES", [":NOT", [":IMPLIES", ["d"], ["h"]]], [":NOT", ["b"]]], + [":IMPLIES", ["b"], ["h"]] + ], + [":NOT", ["i"]] + ], + [ + ":IMPLIES", + [":AND", ["c"], ["f"]], + [ + ":IMPLIES", + ["a"], + [":NOT", [":XOR", ["e"], [":IMPLIES", ["g"], ["g"]]]] + ] + ] + ], + ["g"] + ], + [ + ":NOT", + [ + ":AND", + ["b"], + [ + ":IMPLIES", + [ + ":AND", + [ + ":AND", + [":NOT", [":AND", [":OR", ["a"], ["c"]], ["b"]]], + [":OR", [":AND", ["b"], ["c"]], ["c"]] + ], + ["b"] + ], + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + [ + ":OR", + [":IMPLIES", ["a"], [":NOT", ["a"]]], + [ + ":XOR", + [ + ":IMPLIES", + ["c"], + [ + ":IMPLIES", + [":XOR", ["c"], [":AND", ["b"], ["b"]]], + [":OR", ["c"], ["b"]] + ] + ], + [ + ":OR", + ["a"], + [ + ":XOR", + [ + ":OR", + [":AND", ["a"], ["b"]], + [ + ":IMPLIES", + ["c"], + [ + ":OR", + [ + ":OR", + [":AND", ["a"], [":NOT", ["c"]]], + [ + ":XOR", + [ + ":OR", + [ + ":OR", + ["c"], + [ + ":XOR", + [ + ":OR", + ["c"], + [ + ":AND", + [ + ":AND", + [ + ":AND", + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + ["a"], + [ + ":AND", + ["c"], + ["c"] + ] + ], + ["c"] + ], + ["a"] + ], + ["c"] + ], + [ + ":AND", + [ + ":OR", + [ + ":OR", + ["b"], + [ + ":AND", + [ + ":OR", + [ + ":OR", + ["b"], + [ + ":OR", + ["b"], + [ + ":OR", + [ + ":AND", + ["b"], + [ + ":AND", + [ + ":NOT", + [ + ":AND", + [ + "c" + ], + [ + ":OR", + [ + "b" + ], + [ + "c" + ] + ] + ] + ], + [ + ":OR", + ["a"], + [ + ":XOR", + [ + ":NOT", + [ + "c" + ] + ], + [ + "b" + ] + ] + ] + ] + ], + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + ["a"], + ["a"] + ], + [ + ":AND", + ["a"], + ["a"] + ] + ], + ["c"] + ] + ] + ] + ], + ["a"] + ], + [ + ":AND", + [ + ":XOR", + ["b"], + [ + ":AND", + [ + ":IMPLIES", + ["b"], + [ + ":IMPLIES", + ["b"], + ["c"] + ] + ], + ["a"] + ] + ], + ["b"] + ] + ] + ], + ["c"] + ], + [":OR", ["b"], ["c"]] + ] + ], + ["a"] + ], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":AND", + ["b"], + [":OR", ["a"], ["c"]] + ], + ["b"] + ], + ["b"] + ], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":OR", + [ + ":OR", + [ + ":OR", + ["c"], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["c"], + [ + ":AND", + ["c"], + ["a"] + ] + ], + [ + ":OR", + ["b"], + ["b"] + ] + ] + ], + ["a"] + ], + ["b"] + ], + [ + ":OR", + ["b"], + [ + ":AND", + [ + ":OR", + ["a"], + [ + ":XOR", + ["a"], + ["b"] + ] + ], + ["a"] + ] + ] + ], + ["c"] + ] + ] + ], + [ + ":OR", + ["a"], + [ + ":OR", + [ + ":AND", + [ + ":AND", + [ + ":IMPLIES", + [":NOT", ["a"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["b"], + ["a"] + ], + [":AND", ["c"], ["b"]] + ] + ], + [":XOR", ["c"], ["b"]] + ], + [ + ":IMPLIES", + ["b"], + [ + ":OR", + [ + ":OR", + [ + ":AND", + ["b"], + ["b"] + ], + ["a"] + ], + ["a"] + ] + ] + ], + [ + ":AND", + [":NOT", ["a"]], + ["c"] + ] + ] + ] + ] + ], + [":NOT", ["c"]] + ] + ], + [":IMPLIES", ["c"], ["b"]] + ], + ["c"] + ] + ], + ["c"] + ] + ] + ], + [ + ":XOR", + [ + ":AND", + [":OR", [":NOT", [":NOT", ["a"]]], ["a"]], + ["c"] + ], + [":NOT", ["b"]] + ] + ] + ] + ] + ], + ["c"] + ], + [":XOR", [":NOT", ["c"]], ["b"]] + ], + [ + ":NOT", + [ + ":XOR", + [ + ":OR", + ["c"], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + [":NOT", [":IMPLIES", [":NOT", ["a"]], ["a"]]], + ["b"] + ] + ] + ], + ["b"] + ] + ], + [":NOT", [":NOT", ["c"]]] + ] + ] + ], + ["a"] + ], + ["a"] + ] + ] + ] + ], + [ + ":OR", + ["b"], + [ + ":XOR", + ["e"], + [ + ":IMPLIES", + [ + ":OR", + [ + ":NOT", + [ + ":OR", + ["d"], + [ + ":OR", + [ + ":AND", + [":OR", ["c"], ["e"]], + [":NOT", [":OR", ["d"], ["e"]]] + ], + ["d"] + ] + ] + ], + ["c"] + ], + ["b"] + ] + ] + ], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":XOR", + [":AND", [":IMPLIES", ["b"], ["a"]], [":OR", ["b"], ["c"]]], + [":XOR", ["b"], ["d"]] + ], + ["d"] + ], + [":XOR", ["a"], ["d"]] + ], + [":XOR", [":OR", ["a"], [":OR", [":OR", ["a"], ["a"]], ["a"]]], ["a"]], + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + [ + ":OR", + ["a"], + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [":XOR", ["a"], [":AND", ["a"], [":AND", ["a"], ["a"]]]], + [ + ":OR", + [ + ":NOT", + [ + ":OR", + [ + ":OR", + [ + ":NOT", + [":IMPLIES", [":NOT", [":XOR", ["a"], ["a"]]], ["a"]] + ], + ["a"] + ], + [ + ":OR", + [ + ":OR", + ["a"], + [ + ":OR", + [":XOR", ["a"], ["a"]], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + ["a"], + [":IMPLIES", [":XOR", ["a"], ["a"]], ["a"]] + ] + ] + ] + ], + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + ["a"], + [ + ":XOR", + ["a"], + [ + ":XOR", + [":AND", ["a"], [":IMPLIES", ["a"], ["a"]]], + ["a"] + ] + ] + ] + ] + ] + ] + ], + ["a"] + ] + ] + ] + ] + ], + ["a"] + ] + ], + [ + ":IMPLIES", + [ + ":IMPLIES", + [":NOT", [":AND", ["g"], [":XOR", ["g"], [":NOT", ["h"]]]]], + [":OR", ["c"], ["f"]] + ], + ["b"] + ], + [":AND", [":AND", ["c"], ["h"]], ["d"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["d"], + [":AND", ["d"], [":IMPLIES", [":XOR", ["c"], ["a"]], ["d"]]] + ], + ["d"] + ], + [":NOT", [":IMPLIES", [":NOT", ["c"]], ["g"]]], + [ + ":IMPLIES", + [":AND", [":IMPLIES", ["h"], ["f"]], ["f"]], + [":AND", [":NOT", ["a"]], [":AND", [":OR", ["c"], [":NOT", ["h"]]], ["e"]]] + ], + [":NOT", ["b"]], + [":AND", [":XOR", ["b"], [":AND", [":NOT", ["c"]], ["c"]]], [":NOT", ["a"]]], + [ + ":IMPLIES", + [ + ":OR", + ["a"], + [ + ":XOR", + [":OR", [":XOR", ["c"], ["c"]], ["c"]], + [":XOR", ["c"], [":NOT", ["a"]]] + ] + ], + [":XOR", ["c"], [":NOT", [":NOT", ["c"]]]] + ], + [ + ":OR", + ["f"], + [ + ":XOR", + [":AND", ["b"], [":AND", ["g"], ["g"]]], + [ + ":OR", + [ + ":OR", + ["e"], + [ + ":AND", + ["e"], + [ + ":IMPLIES", + [ + ":AND", + [ + ":OR", + [":OR", ["e"], ["c"]], + [ + ":OR", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":XOR", + ["d"], + [ + ":AND", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [":OR", [":XOR", ["d"], ["b"]], ["e"]], + [":NOT", [":OR", [":NOT", ["a"]], ["d"]]] + ] + ], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + [ + ":AND", + ["d"], + [ + ":IMPLIES", + [ + ":AND", + ["e"], + [ + ":AND", + ["c"], + [ + ":OR", + [ + ":OR", + ["f"], + [ + ":XOR", + [ + ":AND", + [ + ":OR", + ["e"], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":XOR", + [ + ":XOR", + ["e"], + [ + ":AND", + [ + ":OR", + [ + ":AND", + ["g"], + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + ["a"], + ["e"] + ] + ] + ], + [ + ":XOR", + ["g"], + [ + ":XOR", + ["a"], + [ + ":OR", + [ + ":NOT", + [ + "b" + ] + ], + ["b"] + ] + ] + ] + ], + ["g"] + ] + ], + ["d"] + ], + [ + ":IMPLIES", + [":NOT", ["f"]], + [ + ":AND", + [ + ":XOR", + [ + ":AND", + ["a"], + ["f"] + ], + [ + ":XOR", + [ + ":IMPLIES", + ["c"], + [ + ":AND", + [ + ":IMPLIES", + ["a"], + ["a"] + ], + ["b"] + ] + ], + [ + ":NOT", + ["g"] + ] + ] + ], + ["f"] + ] + ] + ], + ["f"] + ] + ], + [ + ":IMPLIES", + [":XOR", ["d"], ["c"]], + ["g"] + ] + ], + [ + ":XOR", + [":XOR", ["b"], ["c"]], + [":IMPLIES", ["g"], ["b"]] + ] + ] + ], + ["e"] + ] + ] + ], + [ + ":AND", + [":IMPLIES", ["c"], ["d"]], + [ + ":AND", + [":NOT", ["b"]], + [ + ":OR", + [ + ":IMPLIES", + [":NOT", ["g"]], + ["f"] + ], + [":OR", ["d"], ["d"]] + ] + ] + ] + ] + ], + [":IMPLIES", [":NOT", ["b"]], ["d"]] + ] + ] + ], + [ + ":XOR", + [":NOT", ["d"]], + [":IMPLIES", ["d"], ["a"]] + ] + ] + ], + [":NOT", ["a"]] + ] + ], + ["b"] + ], + [":OR", ["d"], [":NOT", ["c"]]] + ], + [":OR", ["c"], ["d"]] + ] + ], + ["c"] + ], + ["c"] + ] + ] + ], + [ + ":XOR", + [":XOR", [":IMPLIES", ["a"], ["b"]], [":OR", ["g"], ["e"]]], + [":XOR", ["f"], ["c"]] + ] + ] + ] + ], + [ + ":XOR", + [ + ":OR", + ["a"], + [ + ":OR", + [ + ":AND", + ["a"], + [ + ":IMPLIES", + [ + ":OR", + ["a"], + [ + ":OR", + ["a"], + [ + ":NOT", + [ + ":AND", + [":OR", ["a"], ["a"]], + [":NOT", [":OR", ["a"], ["a"]]] + ] + ] + ] + ], + [":IMPLIES", ["a"], ["a"]] + ] + ], + ["a"] + ] + ], + ["a"] + ], + [ + ":IMPLIES", + [ + ":AND", + ["f"], + [ + ":OR", + ["e"], + [ + ":OR", + [":AND", ["b"], ["e"]], + [ + ":IMPLIES", + [ + ":XOR", + ["d"], + [ + ":XOR", + [ + ":OR", + [ + ":IMPLIES", + [":AND", ["a"], [":AND", [":NOT", ["i"]], ["g"]]], + ["g"] + ], + ["e"] + ], + [":OR", ["b"], ["j"]] + ] + ], + ["f"] + ] + ] + ] + ], + [":OR", [":NOT", ["f"]], ["b"]] + ], + [":OR", ["h"], ["b"]], + [":XOR", [":OR", ["a"], ["e"]], ["h"]], + [":XOR", [":AND", [":OR", ["a"], ["a"]], ["b"]], [":IMPLIES", ["a"], ["a"]]], + [":OR", ["a"], [":OR", [":IMPLIES", [":XOR", ["d"], ["g"]], ["b"]], ["d"]]], + [":NOT", ["c"]], + [":OR", [":XOR", ["i"], ["b"]], [":NOT", ["e"]]], + [":XOR", ["a"], ["c"]], + [":NOT", ["g"]], + [":XOR", ["d"], [":OR", [":XOR", [":NOT", [":NOT", ["b"]]], ["d"]], ["d"]]], + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + [":OR", ["a"], ["c"]], + [ + ":XOR", + [ + ":IMPLIES", + ["c"], + [ + ":XOR", + [":IMPLIES", ["c"], ["b"]], + [ + ":NOT", + [ + ":OR", + [":AND", ["d"], [":IMPLIES", ["c"], [":NOT", ["a"]]]], + [":NOT", ["d"]] + ] + ] + ] + ], + [ + ":XOR", + ["a"], + [ + ":OR", + ["a"], + [ + ":AND", + [ + ":AND", + [ + ":IMPLIES", + [ + ":XOR", + [":OR", [":OR", ["c"], [":NOT", ["c"]]], ["b"]], + ["c"] + ], + ["a"] + ], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":XOR", + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + [ + ":OR", + [":NOT", ["c"]], + [":NOT", [":XOR", ["d"], ["c"]]] + ], + ["b"] + ] + ], + ["d"] + ], + [ + ":OR", + [ + ":XOR", + [":XOR", ["a"], [":NOT", [":XOR", ["a"], ["b"]]]], + ["a"] + ], + ["d"] + ] + ], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + [ + ":XOR", + ["d"], + [":NOT", [":OR", [":NOT", ["a"]], ["b"]]] + ], + ["a"] + ] + ] + ] + ], + [ + ":XOR", + [":NOT", ["d"]], + [":XOR", [":OR", ["b"], [":XOR", ["d"], ["b"]]], ["d"]] + ] + ] + ] + ] + ] + ], + ["c"] + ], + ["b"] + ], + [":AND", ["a"], ["d"]], + [":IMPLIES", ["c"], ["b"]], + [ + ":OR", + [ + ":IMPLIES", + [ + ":AND", + [":AND", [":IMPLIES", [":NOT", ["b"]], ["b"]], [":OR", ["a"], ["b"]]], + ["a"] + ], + [":OR", ["b"], [":OR", ["b"], ["b"]]] + ], + [":NOT", ["b"]] + ], + [":NOT", ["d"]], + [":AND", ["c"], ["c"]], + [":AND", [":NOT", ["c"]], [":NOT", ["h"]]], + [ + ":AND", + [ + ":AND", + ["b"], + [ + ":NOT", + [ + ":OR", + ["c"], + [ + ":AND", + [":OR", [":NOT", ["e"]], [":OR", [":NOT", ["b"]], ["b"]]], + ["e"] + ] + ] + ] + ], + ["c"] + ], + [ + ":AND", + [":NOT", [":AND", [":OR", ["b"], [":OR", ["a"], ["a"]]], ["a"]]], + ["a"] + ], + [":AND", [":XOR", ["b"], [":NOT", ["d"]]], [":IMPLIES", ["a"], ["d"]]], + [ + ":IMPLIES", + [":IMPLIES", ["a"], ["a"]], + [":NOT", [":OR", [":OR", ["a"], ["a"]], [":XOR", ["a"], ["a"]]]] + ], + [ + ":OR", + ["d"], + [ + ":AND", + [":IMPLIES", ["d"], [":IMPLIES", [":NOT", ["c"]], ["b"]]], + [ + ":OR", + [ + ":XOR", + [":NOT", ["b"]], + [ + ":IMPLIES", + [":NOT", ["c"]], + [ + ":AND", + [ + ":AND", + ["d"], + [ + ":NOT", + [ + ":XOR", + [ + ":XOR", + [ + ":OR", + ["g"], + [ + ":XOR", + [":NOT", [":NOT", ["a"]]], + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + ["e"], + [ + ":XOR", + ["c"], + [ + ":IMPLIES", + [ + ":AND", + ["g"], + [ + ":OR", + [ + ":OR", + [ + ":AND", + [ + ":OR", + ["f"], + [ + ":OR", + [":IMPLIES", ["a"], ["d"]], + [ + ":IMPLIES", + [ + ":XOR", + ["a"], + [":NOT", ["f"]] + ], + ["g"] + ] + ] + ], + ["c"] + ], + [ + ":XOR", + ["a"], + [":XOR", ["g"], ["f"]] + ] + ], + ["a"] + ] + ], + [":XOR", [":XOR", ["d"], ["d"]], ["f"]] + ] + ] + ], + ["c"] + ] + ] + ] + ], + ["d"] + ], + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + [":XOR", ["a"], [":XOR", ["a"], ["e"]]], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + ["b"], + [":OR", ["a"], [":OR", ["e"], ["e"]]] + ] + ] + ], + [":XOR", ["a"], ["a"]] + ], + [ + ":AND", + [ + ":IMPLIES", + ["b"], + [ + ":XOR", + ["g"], + [":XOR", [":OR", ["f"], ["f"]], ["e"]] + ] + ], + [ + ":OR", + ["a"], + [ + ":IMPLIES", + [":NOT", ["e"]], + [ + ":OR", + [ + ":AND", + [ + ":AND", + [ + ":AND", + [ + ":XOR", + ["f"], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":OR", + ["g"], + [ + ":XOR", + [ + ":NOT", + [ + ":OR", + ["a"], + [ + ":NOT", + [ + ":IMPLIES", + ["c"], + [ + ":AND", + [ + ":AND", + [ + ":NOT", + [ + ":XOR", + [ + ":XOR", + ["d"], + [ + ":OR", + ["e"], + [ + ":XOR", + [ + "g" + ], + [ + "g" + ] + ] + ] + ], + [ + ":IMPLIES", + [ + ":OR", + ["g"], + ["a"] + ], + ["f"] + ] + ] + ], + ["g"] + ], + [ + ":XOR", + [ + ":AND", + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + ["d"], + [ + ":OR", + [ + "c" + ], + [ + "a" + ] + ] + ] + ] + ], + ["g"] + ], + ["a"] + ] + ] + ] + ] + ] + ], + [ + ":XOR", + [":NOT", ["e"]], + [ + ":OR", + [ + ":OR", + ["a"], + [ + ":NOT", + [ + ":OR", + ["c"], + ["c"] + ] + ] + ], + ["a"] + ] + ] + ] + ] + ], + [":OR", ["g"], ["b"]] + ] + ], + [":IMPLIES", ["b"], ["g"]] + ], + ["d"] + ], + ["g"] + ], + [ + ":IMPLIES", + [":AND", ["g"], ["e"]], + ["g"] + ] + ] + ] + ] + ] + ], + [":OR", ["b"], ["b"]] + ] + ] + ] + ] + ] + ] + ], + [ + ":XOR", + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + [ + ":AND", + [ + ":XOR", + [":AND", [":AND", ["b"], [":NOT", ["g"]]], ["e"]], + ["g"] + ], + [":NOT", ["d"]] + ], + [ + ":IMPLIES", + ["g"], + [ + ":NOT", + [ + ":AND", + ["c"], + [ + ":IMPLIES", + [":XOR", ["a"], ["a"]], + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + [ + ":OR", + ["e"], + [ + ":OR", + [":NOT", ["e"]], + [ + ":XOR", + ["g"], + [":XOR", ["f"], ["e"]] + ] + ] + ], + ["c"] + ] + ] + ] + ] + ] + ] + ] + ] + ], + [":IMPLIES", ["a"], ["e"]] + ], + ["c"] + ] + ], + ["e"] + ] + ] + ] + ], + [ + ":OR", + [ + ":OR", + ["g"], + [":OR", [":XOR", ["e"], ["b"]], [":OR", ["e"], ["f"]]] + ], + ["d"] + ] + ] + ] + ], + [":XOR", ["c"], [":IMPLIES", ["c"], [":AND", ["c"], ["b"]]]], + [ + ":AND", + ["b"], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["b"], + [":IMPLIES", [":OR", [":AND", ["c"], ["a"]], ["c"]], ["a"]] + ], + ["b"] + ] + ], + [":XOR", ["a"], [":NOT", ["d"]]], + [":AND", ["c"], ["d"]], + [ + ":XOR", + [ + ":OR", + ["a"], + [ + ":AND", + ["a"], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + [":OR", ["a"], [":NOT", [":IMPLIES", ["a"], ["a"]]]], + ["a"] + ] + ], + [ + ":IMPLIES", + [ + ":OR", + ["a"], + [ + ":XOR", + [ + ":NOT", + [ + ":XOR", + [":NOT", [":OR", [":IMPLIES", ["a"], ["a"]], ["a"]]], + ["a"] + ] + ], + ["a"] + ] + ], + [":NOT", ["a"]] + ] + ] + ] + ], + [":IMPLIES", ["a"], ["a"]] + ], + [ + ":OR", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["g"], + [ + ":OR", + [ + ":OR", + [":XOR", [":NOT", [":OR", ["j"], ["c"]]], ["a"]], + [ + ":IMPLIES", + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [ + ":AND", + ["d"], + [":AND", [":NOT", ["i"]], [":IMPLIES", ["i"], ["e"]]] + ], + [":NOT", ["e"]] + ], + [":AND", ["i"], ["a"]] + ], + ["e"] + ], + [":AND", [":NOT", ["j"]], ["f"]] + ] + ], + [ + ":XOR", + [ + ":IMPLIES", + ["b"], + [ + ":OR", + [ + ":OR", + [ + ":XOR", + [ + ":OR", + [":IMPLIES", [":OR", ["j"], ["d"]], ["h"]], + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":XOR", + [":AND", [":AND", ["j"], ["g"]], ["c"]], + [":IMPLIES", ["c"], ["e"]] + ], + [":NOT", ["h"]] + ], + ["d"] + ], + [":IMPLIES", [":IMPLIES", ["c"], ["g"]], ["a"]] + ], + ["b"] + ] + ], + ["i"] + ], + [":AND", ["a"], [":OR", ["f"], ["c"]]] + ], + [ + ":IMPLIES", + [":NOT", ["a"]], + [":IMPLIES", ["e"], [":IMPLIES", ["j"], ["b"]]] + ] + ] + ], + ["a"] + ] + ] + ], + [":NOT", ["j"]] + ], + ["b"] + ], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + [":AND", [":XOR", ["b"], ["b"]], [":AND", ["b"], ["a"]]], + [":OR", ["a"], ["a"]] + ] + ], + ["d"] + ], + [":NOT", [":OR", [":XOR", ["c"], [":XOR", ["b"], ["a"]]], ["a"]]], + [":IMPLIES", [":XOR", [":XOR", ["b"], ["b"]], ["a"]], ["a"]], + [":IMPLIES", ["d"], ["c"]], + [":XOR", ["b"], ["a"]], + [":NOT", ["c"]], + [":OR", [":XOR", ["a"], [":NOT", ["d"]]], ["a"]], + [":AND", ["e"], [":AND", ["b"], ["a"]]], + [":IMPLIES", [":NOT", ["c"]], [":NOT", ["c"]]], + [":XOR", ["a"], ["a"]], + [":IMPLIES", ["d"], ["a"]], + [":IMPLIES", ["c"], ["a"]], + [":OR", ["a"], [":NOT", [":XOR", ["c"], ["e"]]]], + [ + ":IMPLIES", + [":NOT", [":OR", ["b"], [":XOR", ["b"], [":IMPLIES", ["a"], ["d"]]]]], + [":NOT", [":NOT", [":IMPLIES", ["e"], [":NOT", ["d"]]]]] + ], + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + [":AND", ["b"], [":OR", ["c"], [":OR", ["c"], ["a"]]]], + [ + ":AND", + [ + ":IMPLIES", + ["b"], + [ + ":XOR", + [":XOR", [":AND", ["a"], [":AND", ["a"], ["c"]]], ["c"]], + ["b"] + ] + ], + ["a"] + ] + ] + ], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":AND", + [":XOR", ["f"], ["e"]], + [":IMPLIES", [":NOT", ["a"]], ["e"]] + ], + ["j"] + ], + ["f"] + ], + ["f"] + ], + [ + ":IMPLIES", + [ + ":XOR", + ["c"], + [ + ":OR", + [":NOT", ["e"]], + [ + ":NOT", + [ + ":NOT", + [":XOR", [":IMPLIES", ["i"], ["j"]], [":IMPLIES", ["i"], ["d"]]] + ] + ] + ] + ], + ["f"] + ] + ] + ], + [":NOT", [":AND", ["h"], ["f"]]], + [ + ":NOT", + [ + ":OR", + [ + ":OR", + [ + ":XOR", + [ + ":OR", + [ + ":OR", + [ + ":AND", + [":AND", ["g"], ["b"]], + [":XOR", ["d"], [":NOT", ["b"]]] + ], + ["i"] + ], + ["f"] + ], + [ + ":OR", + [ + ":IMPLIES", + [":AND", ["g"], ["d"]], + [ + ":IMPLIES", + [ + ":AND", + ["e"], + [":AND", ["b"], [":OR", [":OR", ["b"], ["c"]], ["i"]]] + ], + ["c"] + ] + ], + ["c"] + ] + ], + [ + ":AND", + [":XOR", [":IMPLIES", ["d"], ["d"]], [":XOR", ["i"], ["b"]]], + [ + ":IMPLIES", + [":OR", ["h"], ["f"]], + [ + ":NOT", + [ + ":OR", + [ + ":OR", + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + ["a"], + [ + ":XOR", + [ + ":XOR", + [ + ":IMPLIES", + ["a"], + [ + ":NOT", + [":NOT", [":AND", [":NOT", ["f"]], ["c"]]] + ] + ], + ["b"] + ], + [ + ":OR", + ["i"], + [ + ":AND", + ["i"], + [ + ":AND", + ["g"], + [":IMPLIES", ["c"], [":XOR", ["b"], ["h"]]] + ] + ] + ] + ] + ], + [":XOR", ["h"], [":NOT", [":XOR", ["a"], ["c"]]]] + ], + [":AND", ["b"], ["f"]] + ], + ["b"] + ], + ["d"] + ] + ] + ] + ] + ], + ["h"] + ] + ], + [":IMPLIES", [":IMPLIES", ["c"], ["b"]], ["a"]], + [":XOR", [":OR", ["e"], ["a"]], ["a"]], + [":NOT", ["a"]], + [":IMPLIES", ["c"], ["a"]], + [ + ":OR", + [":IMPLIES", ["a"], [":IMPLIES", ["a"], [":NOT", [":NOT", ["a"]]]]], + [ + ":XOR", + [ + ":IMPLIES", + [":AND", ["b"], [":IMPLIES", ["a"], ["b"]]], + [ + ":IMPLIES", + ["b"], + [ + ":IMPLIES", + ["b"], + [ + ":AND", + ["b"], + [ + ":AND", + [ + ":NOT", + [ + ":NOT", + [ + ":IMPLIES", + ["b"], + [ + ":NOT", + [ + ":IMPLIES", + [":NOT", ["b"]], + [ + ":NOT", + [":IMPLIES", [":OR", ["a"], ["b"]], [":NOT", ["b"]]] + ] + ] + ] + ] + ] + ], + [":IMPLIES", [":XOR", ["b"], ["b"]], ["b"]] + ] + ] + ] + ] + ], + [ + ":OR", + ["b"], + [":OR", [":NOT", [":IMPLIES", ["b"], ["a"]]], [":OR", ["b"], ["a"]]] + ] + ] + ], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":OR", + ["f"], + [":NOT", [":OR", ["f"], [":OR", [":AND", ["b"], ["a"]], ["d"]]]] + ], + ["a"] + ], + ["e"] + ], + ["e"] + ] + ], + [ + ":XOR", + [":NOT", [":OR", [":IMPLIES", ["d"], ["b"]], [":IMPLIES", ["a"], ["a"]]]], + ["c"] + ], + [":NOT", [":IMPLIES", ["b"], ["b"]]], + [ + ":AND", + [ + ":OR", + ["a"], + [ + ":XOR", + [ + ":OR", + [":NOT", [":XOR", [":XOR", [":XOR", ["a"], ["a"]], ["a"]], ["a"]]], + [":NOT", [":XOR", [":AND", ["c"], ["a"]], ["b"]]] + ], + [ + ":AND", + [":NOT", ["d"]], + [ + ":IMPLIES", + [ + ":XOR", + ["b"], + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + [":NOT", [":IMPLIES", ["c"], [":NOT", ["b"]]]], + ["a"] + ], + ["a"] + ], + ["c"] + ] + ], + ["b"] + ] + ] + ] + ], + ["b"] + ], + [":NOT", ["a"]], + [ + ":OR", + ["d"], + [ + ":OR", + ["c"], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + [ + ":AND", + [ + ":OR", + [ + ":XOR", + ["e"], + [ + ":XOR", + ["e"], + [ + ":NOT", + [ + ":NOT", + [ + ":XOR", + [ + ":XOR", + ["e"], + [":OR", [":OR", ["d"], [":NOT", ["b"]]], ["c"]] + ], + ["d"] + ] + ] + ] + ] + ], + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + [":XOR", ["d"], ["a"]], + [":OR", [":NOT", ["b"]], ["e"]] + ] + ] + ] + ], + ["a"] + ], + ["c"] + ], + ["b"] + ] + ] + ] + ], + [":AND", [":IMPLIES", ["d"], ["d"]], ["d"]], + [ + ":AND", + [ + ":AND", + [ + ":AND", + [":OR", [":NOT", [":IMPLIES", [":NOT", ["b"]], ["b"]]], ["a"]], + ["a"] + ], + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [ + ":OR", + [ + ":OR", + [ + ":AND", + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + ["b"], + [ + ":XOR", + [ + ":NOT", + [":OR", ["b"], [":IMPLIES", ["a"], ["b"]]] + ], + [":NOT", ["a"]] + ] + ], + [ + ":IMPLIES", + ["a"], + [":NOT", [":OR", ["b"], [":AND", ["b"], ["b"]]]] + ] + ], + [":IMPLIES", ["b"], ["a"]] + ], + [":IMPLIES", ["b"], [":IMPLIES", ["b"], ["b"]]] + ], + ["a"] + ], + ["b"] + ], + ["a"] + ], + ["a"] + ], + [":NOT", ["a"]] + ], + ["b"] + ] + ], + ["a"] + ], + [ + ":OR", + ["e"], + [ + ":OR", + ["e"], + [ + ":XOR", + [ + ":AND", + ["d"], + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + ["c"], + [":OR", ["e"], [":AND", [":NOT", [":XOR", ["c"], ["a"]]], ["a"]]] + ] + ] + ], + ["a"] + ] + ] + ], + [":OR", ["d"], ["a"]], + [ + ":XOR", + [ + ":IMPLIES", + ["c"], + [":OR", [":AND", ["a"], ["e"]], [":XOR", ["c"], ["a"]]] + ], + [":AND", ["c"], ["d"]] + ], + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [":NOT", ["d"]], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":XOR", + [":IMPLIES", [":AND", ["a"], ["f"]], ["b"]], + [":XOR", [":XOR", ["d"], ["a"]], [":NOT", ["e"]]] + ], + ["a"] + ] + ] + ] + ], + [":IMPLIES", ["a"], ["c"]], + [ + ":IMPLIES", + ["f"], + [ + ":IMPLIES", + ["h"], + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + [":NOT", ["d"]], + [ + ":NOT", + [ + ":NOT", + [ + ":XOR", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":OR", + [ + ":NOT", + [ + ":AND", + [":IMPLIES", ["b"], ["a"]], + [ + ":XOR", + ["a"], + [ + ":XOR", + [ + ":XOR", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":OR", ["c"], ["a"]], + ["d"] + ], + [":IMPLIES", ["h"], ["a"]] + ], + [ + ":AND", + ["e"], + [ + ":XOR", + [":XOR", ["e"], ["c"]], + [ + ":OR", + [":IMPLIES", ["e"], ["b"]], + ["g"] + ] + ] + ] + ], + ["h"] + ], + ["e"] + ] + ] + ] + ], + ["f"] + ], + [":IMPLIES", ["c"], ["c"]] + ], + [":OR", [":AND", ["c"], ["g"]], ["g"]] + ] + ], + [ + ":IMPLIES", + [":NOT", [":XOR", [":NOT", ["b"]], ["g"]]], + [":XOR", ["f"], [":AND", [":OR", ["c"], ["d"]], ["h"]]] + ] + ] + ] + ] + ], + [":OR", ["b"], ["b"]] + ], + [":AND", [":IMPLIES", ["a"], ["d"]], ["a"]] + ] + ] + ], + [":XOR", ["g"], ["a"]], + [":OR", ["d"], [":AND", ["e"], [":OR", ["e"], ["b"]]]], + [":XOR", ["d"], ["a"]], + [":NOT", [":NOT", ["h"]]], + [ + ":XOR", + [ + ":AND", + [":NOT", [":NOT", ["c"]]], + [":IMPLIES", ["a"], [":IMPLIES", [":IMPLIES", ["c"], ["b"]], ["c"]]] + ], + [":IMPLIES", [":IMPLIES", ["a"], ["a"]], ["b"]] + ], + [":XOR", ["b"], [":OR", ["d"], [":XOR", [":AND", ["e"], ["c"]], ["c"]]]], + [ + ":OR", + [":IMPLIES", ["d"], ["f"]], + [ + ":AND", + [ + ":AND", + ["e"], + [ + ":IMPLIES", + [ + ":XOR", + ["b"], + [ + ":NOT", + [ + ":XOR", + ["d"], + [ + ":OR", + ["a"], + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + [":IMPLIES", ["c"], ["a"]], + [ + ":AND", + [ + ":XOR", + ["d"], + [ + ":NOT", + [ + ":OR", + [":OR", ["g"], ["b"]], + [ + ":OR", + [ + ":AND", + ["e"], + [ + ":AND", + ["b"], + [":OR", [":NOT", ["d"]], ["d"]] + ] + ], + ["a"] + ] + ] + ] + ], + [":IMPLIES", [":IMPLIES", ["f"], ["d"]], ["a"]] + ] + ], + [ + ":IMPLIES", + [ + ":OR", + [":XOR", ["a"], [":AND", ["f"], ["c"]]], + [ + ":OR", + [":AND", ["f"], ["g"]], + [":OR", ["c"], ["e"]] + ] + ], + [ + ":AND", + [ + ":NOT", + [ + ":OR", + [":IMPLIES", ["b"], [":NOT", ["d"]]], + ["a"] + ] + ], + [ + ":XOR", + [ + ":XOR", + ["e"], + [ + ":AND", + [":IMPLIES", ["a"], ["b"]], + [ + ":OR", + ["e"], + [ + ":XOR", + [":AND", ["f"], ["c"]], + [":XOR", [":NOT", ["f"]], ["g"]] + ] + ] + ] + ], + [ + ":NOT", + [ + ":AND", + [ + ":AND", + [":XOR", ["g"], ["c"]], + [":NOT", ["e"]] + ], + [":NOT", [":IMPLIES", ["c"], ["b"]]] + ] + ] + ] + ] + ] + ], + ["e"] + ], + [ + ":NOT", + [ + ":IMPLIES", + ["f"], + [":AND", ["a"], [":OR", ["g"], ["c"]]] + ] + ] + ] + ] + ] + ] + ], + [":AND", ["b"], ["f"]] + ] + ], + ["c"] + ] + ], + [":XOR", ["e"], ["b"]], + [ + ":AND", + [ + ":XOR", + [":NOT", [":XOR", [":OR", [":IMPLIES", ["e"], ["c"]], ["a"]], ["b"]]], + [":OR", ["d"], [":OR", ["e"], [":AND", [":AND", ["h"], ["b"]], ["d"]]]] + ], + ["f"] + ], + [ + ":IMPLIES", + [":XOR", [":NOT", ["b"]], [":XOR", [":IMPLIES", ["b"], ["b"]], ["d"]]], + ["a"] + ], + [":OR", ["g"], ["j"]], + [":IMPLIES", ["a"], ["b"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":AND", + ["b"], + [ + ":XOR", + [ + ":XOR", + ["c"], + [":AND", [":IMPLIES", ["c"], [":NOT", ["d"]]], ["a"]] + ], + [ + ":OR", + [ + ":AND", + [ + ":OR", + ["a"], + [ + ":IMPLIES", + [ + ":AND", + [ + ":XOR", + ["b"], + [":AND", [":XOR", ["a"], [":NOT", ["b"]]], ["d"]] + ], + [":IMPLIES", [":OR", ["a"], [":NOT", ["d"]]], ["c"]] + ], + [":OR", ["c"], [":NOT", ["a"]]] + ] + ], + ["b"] + ], + ["b"] + ] + ] + ], + [":OR", ["c"], ["d"]] + ], + ["c"] + ] + ], + ["a"] + ], + [":OR", [":NOT", ["a"]], ["a"]], + [":IMPLIES", ["d"], ["a"]], + [":AND", ["d"], ["a"]], + [":IMPLIES", ["c"], ["a"]], + [":AND", ["e"], ["e"]], + [ + ":OR", + [":IMPLIES", [":OR", ["a"], ["b"]], ["b"]], + [":AND", [":XOR", ["b"], [":NOT", ["b"]]], [":IMPLIES", ["b"], ["a"]]] + ], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + [":IMPLIES", [":OR", ["a"], ["a"]], ["a"]], + [":XOR", ["a"], ["a"]] + ], + [ + ":AND", + [ + ":AND", + [":OR", ["a"], [":IMPLIES", ["a"], [":XOR", ["a"], ["a"]]]], + ["a"] + ], + [ + ":IMPLIES", + [":XOR", [":OR", [":OR", ["a"], ["a"]], ["a"]], ["a"]], + ["a"] + ] + ] + ] + ], + [":OR", [":NOT", ["e"]], ["e"]], + [ + ":AND", + [":NOT", ["a"]], + [ + ":NOT", + [ + ":IMPLIES", + [":OR", [":XOR", ["a"], [":NOT", ["g"]]], ["a"]], + [ + ":OR", + ["d"], + [ + ":XOR", + ["h"], + [ + ":AND", + [ + ":NOT", + [ + ":XOR", + [":AND", ["f"], ["g"]], + [ + ":NOT", + [":AND", [":OR", ["a"], [":AND", ["a"], ["e"]]], ["f"]] + ] + ] + ], + ["h"] + ] + ] + ] + ] + ] + ], + [ + ":NOT", + [ + ":OR", + ["a"], + [ + ":OR", + [ + ":AND", + [":XOR", ["a"], ["a"]], + [ + ":OR", + [ + ":OR", + ["b"], + [ + ":XOR", + ["b"], + [ + ":OR", + [ + ":OR", + [":IMPLIES", [":NOT", [":NOT", ["b"]]], ["a"]], + [ + ":AND", + [":NOT", ["b"]], + [ + ":OR", + ["b"], + [ + ":NOT", + [ + ":IMPLIES", + [":IMPLIES", ["b"], [":NOT", ["b"]]], + ["b"] + ] + ] + ] + ] + ], + ["b"] + ] + ] + ], + ["b"] + ] + ], + ["b"] + ] + ] + ], + [":OR", ["a"], ["a"]], + [":OR", ["e"], ["b"]], + [":NOT", ["d"]], + [":XOR", ["d"], [":XOR", [":NOT", ["b"]], ["h"]]], + [":NOT", [":XOR", ["e"], [":NOT", ["h"]]]], + [":IMPLIES", ["b"], [":XOR", ["d"], ["a"]]], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":AND", + [ + ":XOR", + [":OR", ["a"], ["b"]], + [ + ":IMPLIES", + ["b"], + [ + ":NOT", + [ + ":OR", + [ + ":NOT", + [":IMPLIES", ["a"], [":OR", [":OR", ["d"], ["c"]], ["a"]]] + ], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + [ + ":AND", + [ + ":NOT", + [ + ":AND", + ["d"], + [ + ":AND", + ["b"], + [ + ":AND", + [ + ":XOR", + [":NOT", [":OR", ["d"], ["c"]]], + [ + ":IMPLIES", + [":IMPLIES", ["d"], ["d"]], + [ + ":IMPLIES", + ["d"], + [":AND", [":XOR", ["b"], ["a"]], ["d"]] + ] + ] + ], + ["a"] + ] + ] + ] + ], + ["c"] + ], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + ["d"], + [ + ":OR", + ["d"], + [ + ":OR", + [ + ":AND", + [":OR", ["d"], [":IMPLIES", ["c"], ["c"]]], + [":IMPLIES", ["d"], ["a"]] + ], + [ + ":XOR", + [":NOT", ["c"]], + [ + ":XOR", + [ + ":OR", + [ + ":NOT", + [ + ":XOR", + [ + ":XOR", + ["d"], + [ + ":XOR", + ["a"], + [ + ":XOR", + [ + ":IMPLIES", + [":XOR", ["a"], ["b"]], + ["b"] + ], + ["c"] + ] + ] + ], + ["b"] + ] + ], + [ + ":IMPLIES", + [":NOT", ["d"]], + [ + ":IMPLIES", + ["d"], + [ + ":OR", + [ + ":OR", + ["c"], + [ + ":XOR", + [ + ":OR", + ["a"], + [ + ":XOR", + [":XOR", ["c"], ["c"]], + [ + ":AND", + ["a"], + [ + ":XOR", + [ + ":XOR", + [":AND", ["b"], ["c"]], + [":XOR", ["b"], ["a"]] + ], + ["c"] + ] + ] + ] + ], + ["b"] + ] + ], + ["b"] + ] + ] + ] + ], + ["d"] + ] + ] + ] + ] + ] + ], + ["a"] + ] + ] + ] + ] + ] + ] + ], + [ + ":NOT", + [ + ":OR", + [ + ":OR", + ["c"], + [ + ":IMPLIES", + [ + ":OR", + ["d"], + [ + ":NOT", + [ + ":XOR", + [":OR", [":NOT", ["d"]], ["a"]], + [":IMPLIES", [":AND", ["b"], ["a"]], ["c"]] + ] + ] + ], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["c"], + [ + ":AND", + [":XOR", [":XOR", [":NOT", ["b"]], ["b"]], ["b"]], + [":OR", ["c"], ["c"]] + ] + ], + [ + ":AND", + [":IMPLIES", [":AND", ["d"], [":NOT", ["a"]]], ["b"]], + [":NOT", [":NOT", ["b"]]] + ] + ] + ] + ], + ["d"] + ] + ] + ], + [ + ":XOR", + [ + ":OR", + ["d"], + [ + ":OR", + [":NOT", ["c"]], + [ + ":XOR", + [":XOR", [":NOT", ["a"]], [":OR", ["b"], ["b"]]], + [":AND", ["c"], ["a"]] + ] + ] + ], + ["d"] + ] + ], + ["a"] + ], + [ + ":XOR", + ["a"], + [ + ":OR", + [ + ":IMPLIES", + [":IMPLIES", ["a"], [":XOR", ["a"], [":AND", ["a"], [":NOT", ["a"]]]]], + ["a"] + ], + [":AND", ["a"], ["a"]] + ] + ], + [":AND", ["d"], [":AND", ["c"], ["e"]]], + [ + ":OR", + [ + ":NOT", + [ + ":OR", + ["d"], + [ + ":IMPLIES", + [":XOR", [":AND", ["a"], ["a"]], [":NOT", [":NOT", ["d"]]]], + ["h"] + ] + ] + ], + ["f"] + ], + [ + ":IMPLIES", + [":IMPLIES", [":XOR", ["c"], [":NOT", ["d"]]], ["b"]], + [":AND", [":NOT", [":NOT", ["a"]]], [":NOT", [":NOT", ["c"]]]] + ], + [":AND", ["b"], [":AND", ["c"], [":AND", ["d"], ["g"]]]], + [":NOT", [":NOT", [":IMPLIES", ["a"], ["a"]]]], + [":NOT", ["d"]], + [":OR", [":IMPLIES", [":OR", ["c"], ["c"]], ["f"]], [":AND", ["c"], ["a"]]], + [":AND", ["a"], ["d"]], + [":XOR", ["g"], [":IMPLIES", ["g"], ["f"]]], + [":NOT", [":XOR", [":IMPLIES", ["e"], ["b"]], ["b"]]], + [ + ":AND", + [":OR", [":OR", ["a"], [":OR", ["a"], ["a"]]], ["a"]], + [":AND", ["a"], [":NOT", ["a"]]] + ], + [":XOR", ["c"], ["e"]], + [ + ":OR", + [":AND", ["c"], ["b"]], + [":AND", [":AND", ["b"], [":AND", ["d"], ["a"]]], ["e"]] + ], + [":NOT", [":IMPLIES", [":AND", [":IMPLIES", ["g"], ["e"]], ["e"]], ["b"]]], + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + ["b"], + [ + ":IMPLIES", + [":IMPLIES", [":NOT", [":XOR", ["c"], ["b"]]], ["a"]], + ["c"] + ] + ], + [":NOT", ["a"]] + ] + ], + [":XOR", ["c"], ["b"]], + [":OR", ["a"], [":AND", [":XOR", ["a"], ["d"]], ["b"]]], + [ + ":AND", + [":OR", ["a"], [":AND", [":XOR", ["b"], ["b"]], ["b"]]], + [ + ":OR", + [":OR", ["b"], ["b"]], + [ + ":XOR", + [":IMPLIES", [":AND", ["a"], [":NOT", ["b"]]], ["a"]], + [":AND", ["a"], [":IMPLIES", ["b"], ["a"]]] + ] + ] + ], + [ + ":OR", + [":AND", ["a"], ["c"]], + [":NOT", [":XOR", [":OR", ["a"], ["b"]], ["b"]]] + ], + [ + ":XOR", + [ + ":OR", + [ + ":XOR", + ["a"], + [ + ":OR", + [ + ":XOR", + [ + ":OR", + [ + ":AND", + ["a"], + [ + ":XOR", + [ + ":OR", + [":XOR", [":IMPLIES", ["b"], ["a"]], ["a"]], + [":XOR", [":NOT", ["a"]], ["b"]] + ], + ["b"] + ] + ], + [":AND", ["b"], ["a"]] + ], + [":XOR", ["c"], ["a"]] + ], + ["c"] + ] + ], + [":NOT", ["a"]] + ], + [":OR", ["a"], ["a"]] + ], + [":AND", [":OR", ["b"], [":OR", ["d"], [":XOR", ["a"], ["b"]]]], ["f"]], + [":IMPLIES", ["b"], ["c"]], + [ + ":OR", + [":NOT", [":IMPLIES", [":NOT", ["a"]], ["b"]]], + [":XOR", ["b"], ["a"]] + ], + [":NOT", [":AND", ["a"], ["c"]]], + [ + ":XOR", + ["c"], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["b"], + [ + ":NOT", + [ + ":OR", + [ + ":OR", + ["f"], + [ + ":NOT", + [ + ":OR", + [ + ":NOT", + [ + ":XOR", + ["j"], + [ + ":XOR", + [":OR", ["g"], ["d"]], + [":AND", [":AND", ["b"], ["j"]], ["f"]] + ] + ] + ], + ["c"] + ] + ] + ], + [":OR", ["e"], ["a"]] + ] + ] + ], + [":NOT", [":NOT", ["c"]]] + ] + ], + [ + ":AND", + [ + ":XOR", + [":AND", ["b"], ["e"]], + [ + ":AND", + [ + ":IMPLIES", + ["h"], + [ + ":XOR", + [":IMPLIES", ["e"], ["c"]], + [ + ":AND", + ["i"], + [":OR", [":AND", ["f"], ["g"]], [":XOR", ["a"], ["a"]]] + ] + ] + ], + [":OR", ["i"], ["a"]] + ] + ], + [":XOR", ["h"], ["b"]] + ], + [ + ":OR", + [ + ":IMPLIES", + [":NOT", ["a"]], + [ + ":AND", + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + [ + ":AND", + ["a"], + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + [":NOT", [":IMPLIES", ["a"], [":NOT", ["a"]]]], + [ + ":AND", + [ + ":AND", + ["a"], + [ + ":IMPLIES", + [ + ":OR", + [ + ":OR", + ["a"], + [ + ":AND", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + ["a"], + [ + ":AND", + ["a"], + [ + ":OR", + ["a"], + [":IMPLIES", ["a"], ["a"]] + ] + ] + ] + ], + [ + ":AND", + [ + ":OR", + [":XOR", [":NOT", ["a"]], ["a"]], + [ + ":OR", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":OR", + ["a"], + [ + ":NOT", + [ + ":AND", + [ + ":AND", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + ["a"], + ["a"] + ], + ["a"] + ] + ], + [ + ":IMPLIES", + ["a"], + ["a"] + ] + ], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["a"], + ["a"] + ], + [ + ":IMPLIES", + ["a"], + ["a"] + ] + ], + ["a"] + ] + ] + ] + ], + [":IMPLIES", ["a"], ["a"]] + ], + [ + ":AND", + [":XOR", ["a"], ["a"]], + ["a"] + ] + ], + ["a"] + ] + ], + [":IMPLIES", ["a"], ["a"]] + ] + ], + ["a"] + ], + ["a"] + ], + [":AND", [":OR", ["a"], ["a"]], ["a"]] + ] + ], + ["a"] + ], + [":NOT", [":IMPLIES", ["a"], ["a"]]] + ] + ], + [":OR", ["a"], ["a"]] + ] + ] + ] + ], + ["a"] + ] + ] + ], + ["a"] + ] + ], + ["a"] + ], + [":XOR", [":IMPLIES", ["a"], ["c"]], ["a"]], + [":NOT", ["a"]], + [ + ":NOT", + [ + ":XOR", + ["b"], + [ + ":XOR", + ["b"], + [ + ":OR", + [ + ":OR", + [ + ":XOR", + ["b"], + [":AND", ["a"], [":NOT", [":IMPLIES", ["a"], ["b"]]]] + ], + ["a"] + ], + ["b"] + ] + ] + ] + ], + [ + ":NOT", + [":IMPLIES", [":IMPLIES", ["a"], [":XOR", [":NOT", ["b"]], ["g"]]], ["g"]] + ], + [":OR", ["b"], ["c"]], + [":XOR", ["f"], ["b"]], + [":AND", [":IMPLIES", [":AND", ["e"], ["c"]], ["d"]], ["e"]], + [ + ":NOT", + [ + ":AND", + [ + ":OR", + ["b"], + [ + ":IMPLIES", + [ + ":AND", + [ + ":OR", + ["b"], + [ + ":OR", + [":IMPLIES", [":NOT", ["a"]], ["b"]], + [":NOT", [":XOR", ["c"], ["b"]]] + ] + ], + ["c"] + ], + ["b"] + ] + ], + ["b"] + ] + ], + [":XOR", [":NOT", [":NOT", [":XOR", ["e"], ["e"]]]], ["e"]], + [ + ":AND", + [":NOT", [":NOT", ["i"]]], + [":IMPLIES", ["c"], [":IMPLIES", ["e"], [":AND", ["f"], ["g"]]]] + ], + [ + ":AND", + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [ + ":AND", + ["f"], + [ + ":XOR", + [ + ":AND", + [":AND", [":OR", [":AND", ["a"], ["e"]], ["d"]], ["c"]], + [ + ":AND", + [":NOT", ["g"]], + [ + ":AND", + [":OR", ["c"], [":NOT", ["d"]]], + [":XOR", [":XOR", ["e"], ["a"]], ["f"]] + ] + ] + ], + [ + ":OR", + [ + ":XOR", + ["e"], + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":XOR", + ["d"], + [ + ":NOT", + [ + ":AND", + ["c"], + [":OR", [":OR", ["g"], ["d"]], ["g"]] + ] + ] + ], + ["g"] + ], + [":OR", ["b"], ["c"]] + ], + [":OR", ["g"], ["c"]] + ] + ] + ], + ["a"] + ] + ] + ], + [":AND", [":AND", [":OR", ["c"], ["b"]], ["c"]], ["b"]] + ], + [ + ":IMPLIES", + [ + ":AND", + [ + ":OR", + [ + ":IMPLIES", + ["f"], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":OR", + [":NOT", ["f"]], + [ + ":XOR", + [":OR", [":AND", ["f"], ["d"]], [":NOT", ["g"]]], + [":NOT", ["c"]] + ] + ], + ["c"] + ], + ["d"] + ] + ], + ["a"] + ], + ["g"] + ], + [":IMPLIES", [":XOR", ["d"], [":XOR", ["e"], ["c"]]], ["f"]] + ] + ], + [":XOR", ["c"], [":IMPLIES", [":NOT", ["f"]], ["d"]]] + ], + [":OR", [":NOT", ["f"]], ["a"]] + ], + [ + ":AND", + [":AND", ["a"], ["a"]], + [ + ":IMPLIES", + ["e"], + [ + ":NOT", + [ + ":XOR", + [":OR", ["e"], ["e"]], + [ + ":AND", + [ + ":OR", + ["e"], + [":AND", [":NOT", [":IMPLIES", ["e"], ["f"]]], ["c"]] + ], + ["f"] + ] + ] + ] + ] + ], + [ + ":IMPLIES", + [":NOT", ["d"]], + [ + ":IMPLIES", + [":AND", ["c"], [":IMPLIES", ["d"], ["b"]]], + [":IMPLIES", [":IMPLIES", ["d"], ["d"]], ["c"]] + ] + ], + [":IMPLIES", [":AND", [":OR", ["d"], ["d"]], ["a"]], ["d"]], + [":NOT", ["c"]], + [ + ":XOR", + [":NOT", [":AND", [":NOT", ["b"]], [":XOR", ["b"], ["b"]]]], + [ + ":IMPLIES", + [":XOR", ["a"], [":XOR", ["a"], [":IMPLIES", ["b"], ["a"]]]], + ["b"] + ] + ], + [":XOR", ["i"], [":NOT", [":XOR", ["c"], ["f"]]]], + [":NOT", ["h"]], + [ + ":AND", + [":AND", ["a"], [":XOR", ["h"], [":NOT", ["c"]]]], + [ + ":OR", + [":IMPLIES", ["a"], [":AND", [":XOR", ["d"], ["c"]], ["f"]]], + [":OR", ["d"], ["a"]] + ] + ], + [ + ":XOR", + [":XOR", [":NOT", ["b"]], [":OR", ["d"], ["a"]]], + [":XOR", [":OR", ["g"], ["a"]], ["e"]] + ], + [":NOT", [":NOT", ["i"]]], + [":XOR", [":AND", ["a"], ["d"]], ["c"]], + [":NOT", [":OR", ["a"], ["a"]]], + [ + ":AND", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":OR", + ["d"], + [ + ":AND", + [ + ":OR", + [ + ":XOR", + [ + ":OR", + ["c"], + [ + ":NOT", + [ + ":AND", + ["d"], + [ + ":OR", + [ + ":IMPLIES", + [":NOT", [":NOT", [":OR", ["d"], ["b"]]]], + ["b"] + ], + [ + ":IMPLIES", + [":NOT", ["e"]], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":XOR", [":NOT", ["b"]], ["c"]], + [":NOT", [":AND", ["e"], ["d"]]] + ], + ["a"] + ], + [ + ":IMPLIES", + ["c"], + [ + ":OR", + [":NOT", ["e"]], + [ + ":XOR", + [":NOT", [":IMPLIES", ["a"], ["b"]]], + ["d"] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ], + ["a"] + ], + ["c"] + ], + [ + ":IMPLIES", + [":AND", [":NOT", ["a"]], [":XOR", ["e"], ["e"]]], + ["a"] + ] + ] + ], + [":NOT", [":NOT", ["d"]]] + ], + [ + ":NOT", + [ + ":OR", + [ + ":XOR", + [ + ":OR", + ["c"], + [ + ":IMPLIES", + [ + ":OR", + [":NOT", ["d"]], + [":OR", [":IMPLIES", ["c"], ["e"]], ["a"]] + ], + [":OR", ["c"], [":NOT", ["b"]]] + ] + ], + ["d"] + ], + ["a"] + ] + ] + ] + ], + ["d"] + ], + ["a"] + ], + [ + ":XOR", + [ + ":OR", + [ + ":XOR", + ["d"], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":OR", + [ + ":XOR", + [":AND", [":NOT", ["c"]], ["e"]], + [ + ":OR", + ["c"], + [":XOR", ["d"], [":OR", ["a"], [":NOT", ["d"]]]] + ] + ], + [":OR", ["b"], ["e"]] + ], + [":AND", [":AND", ["e"], ["e"]], [":NOT", ["d"]]] + ], + [":OR", ["e"], ["d"]] + ] + ], + ["c"] + ], + ["c"] + ] + ], + [":NOT", ["a"]], + [":IMPLIES", [":AND", [":AND", [":AND", ["d"], ["c"]], ["c"]], ["e"]], ["d"]], + [ + ":OR", + [":IMPLIES", [":AND", ["a"], ["a"]], ["b"]], + [":XOR", [":OR", ["b"], [":XOR", ["a"], ["b"]]], [":AND", ["b"], ["a"]]] + ], + [":XOR", [":IMPLIES", ["i"], [":NOT", [":IMPLIES", ["d"], ["i"]]]], ["j"]], + [":AND", ["h"], ["g"]], + [":XOR", ["b"], [":XOR", ["c"], ["a"]]], + [ + ":NOT", + [ + ":IMPLIES", + ["c"], + [ + ":OR", + [ + ":XOR", + [ + ":XOR", + ["a"], + [ + ":AND", + ["b"], + [ + ":NOT", + [ + ":OR", + [":AND", ["b"], ["a"]], + [ + ":IMPLIES", + [ + ":OR", + [ + ":OR", + [ + ":AND", + [ + ":AND", + [ + ":IMPLIES", + [":OR", ["c"], ["c"]], + [":AND", ["b"], ["b"]] + ], + ["b"] + ], + ["c"] + ], + ["b"] + ], + ["a"] + ], + ["a"] + ] + ] + ] + ] + ], + [":XOR", ["a"], [":IMPLIES", ["c"], ["a"]]] + ], + ["b"] + ] + ] + ], + [":AND", ["j"], ["i"]], + [ + ":AND", + ["d"], + [ + ":IMPLIES", + [ + ":AND", + ["a"], + [ + ":XOR", + [ + ":OR", + [":AND", [":IMPLIES", ["d"], ["e"]], ["c"]], + [":AND", ["a"], ["e"]] + ], + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + [":AND", ["e"], ["a"]], + [ + ":XOR", + [ + ":XOR", + ["d"], + [":XOR", [":OR", ["d"], ["c"]], [":IMPLIES", ["a"], ["e"]]] + ], + ["e"] + ] + ], + [":NOT", [":IMPLIES", ["b"], ["b"]]] + ], + ["e"] + ] + ] + ], + ["e"] + ] + ], + [ + ":XOR", + [ + ":OR", + ["a"], + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":AND", + [ + ":OR", + ["a"], + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + [":IMPLIES", [":NOT", ["a"]], ["a"]], + [":OR", [":NOT", ["a"]], ["a"]] + ] + ] + ], + [":NOT", [":OR", ["a"], [":AND", ["a"], ["a"]]]] + ] + ], + [ + ":NOT", + [ + ":AND", + [":XOR", ["a"], [":OR", ["a"], [":OR", ["a"], ["a"]]]], + [ + ":OR", + [ + ":IMPLIES", + ["a"], + [":AND", [":NOT", ["a"]], [":OR", ["a"], ["a"]]] + ], + ["a"] + ] + ] + ] + ] + ] + ] + ], + ["a"] + ], + [":NOT", ["b"]], + [":NOT", ["e"]], + [ + ":XOR", + [":XOR", ["f"], [":XOR", ["d"], [":OR", [":OR", ["e"], ["g"]], ["c"]]]], + [ + ":XOR", + [":NOT", ["g"]], + [ + ":IMPLIES", + [":AND", ["f"], ["b"]], + [ + ":XOR", + [ + ":AND", + [ + ":NOT", + [":NOT", [":XOR", ["a"], [":OR", ["f"], [":AND", ["f"], ["b"]]]]] + ], + [":XOR", ["b"], ["b"]] + ], + [":IMPLIES", [":XOR", [":NOT", ["f"]], ["b"]], [":XOR", ["d"], ["b"]]] + ] + ] + ] + ], + [":NOT", ["f"]], + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + [":OR", ["a"], ["a"]], + [":OR", ["a"], [":NOT", [":XOR", ["a"], [":AND", ["a"], ["a"]]]]] + ], + [":NOT", ["a"]] + ], + [":XOR", [":IMPLIES", [":XOR", [":NOT", ["a"]], ["a"]], ["a"]], ["a"]] + ], + [":OR", ["a"], ["a"]], + [ + ":XOR", + ["b"], + [ + ":XOR", + [ + ":OR", + [ + ":OR", + ["f"], + [ + ":XOR", + ["d"], + [ + ":AND", + [ + ":XOR", + [":NOT", [":NOT", ["b"]]], + [":XOR", [":IMPLIES", ["e"], [":AND", ["c"], ["e"]]], ["b"]] + ], + ["d"] + ] + ] + ], + ["b"] + ], + ["f"] + ] + ], + [ + ":IMPLIES", + [ + ":IMPLIES", + [":XOR", ["c"], ["f"]], + [ + ":XOR", + [":NOT", [":OR", [":AND", [":AND", ["b"], ["f"]], ["c"]], ["f"]]], + ["f"] + ] + ], + [":XOR", ["b"], [":XOR", [":XOR", [":NOT", ["e"]], ["e"]], [":NOT", ["c"]]]] + ], + [":AND", ["a"], ["a"]], + [":AND", ["h"], ["g"]], + [ + ":NOT", + [ + ":XOR", + ["b"], + [ + ":IMPLIES", + ["a"], + [ + ":NOT", + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + ["a"], + [ + ":OR", + [ + ":IMPLIES", + [":XOR", ["a"], ["b"]], + [":NOT", [":NOT", ["a"]]] + ], + ["a"] + ] + ], + ["a"] + ], + [":NOT", ["a"]] + ] + ] + ] + ] + ] + ], + [":XOR", ["j"], ["d"]], + [":IMPLIES", ["d"], ["f"]], + [":OR", [":NOT", ["c"]], ["e"]], + [ + ":AND", + ["d"], + [":NOT", [":XOR", [":AND", ["c"], ["a"]], [":AND", ["d"], ["b"]]]] + ], + [ + ":XOR", + ["e"], + [ + ":NOT", + [ + ":OR", + [ + ":OR", + ["e"], + [ + ":NOT", + [ + ":IMPLIES", + ["c"], + [ + ":XOR", + ["f"], + [ + ":OR", + [ + ":IMPLIES", + [":OR", ["e"], [":AND", ["a"], ["d"]]], + [ + ":IMPLIES", + ["c"], + [ + ":NOT", + [ + ":OR", + ["b"], + [ + ":AND", + [ + ":NOT", + [ + ":OR", + ["a"], + [ + ":IMPLIES", + ["d"], + [ + ":OR", + ["a"], + [":AND", [":XOR", ["f"], ["e"]], ["f"]] + ] + ] + ] + ], + [":NOT", ["e"]] + ] + ] + ] + ] + ], + ["f"] + ] + ] + ] + ] + ], + [":OR", ["b"], [":OR", ["b"], ["e"]]] + ] + ] + ], + [ + ":XOR", + ["i"], + [ + ":IMPLIES", + ["f"], + [":AND", [":OR", ["b"], [":OR", [":XOR", ["g"], ["g"]], ["c"]]], ["c"]] + ] + ], + [ + ":OR", + [ + ":IMPLIES", + [":NOT", [":XOR", [":XOR", ["g"], [":XOR", ["c"], ["f"]]], ["c"]]], + ["g"] + ], + ["c"] + ], + [":AND", ["e"], [":NOT", ["e"]]], + [ + ":NOT", + [ + ":IMPLIES", + [":XOR", ["b"], [":AND", [":XOR", ["e"], [":AND", ["e"], ["c"]]], ["d"]]], + ["j"] + ] + ], + [":XOR", ["f"], [":AND", ["f"], ["b"]]], + [ + ":IMPLIES", + ["a"], + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + [ + ":OR", + ["e"], + [ + ":IMPLIES", + [":XOR", ["a"], [":NOT", [":NOT", [":NOT", ["a"]]]]], + [":XOR", ["d"], ["h"]] + ] + ], + ["a"] + ], + [":NOT", ["b"]] + ] + ] + ], + [":OR", ["h"], ["h"]], + [":OR", [":XOR", ["a"], [":AND", ["a"], ["a"]]], ["a"]], + [ + ":IMPLIES", + ["f"], + [":XOR", ["e"], [":AND", ["g"], [":AND", [":NOT", ["c"]], ["g"]]]] + ], + [":AND", ["c"], [":AND", ["a"], [":AND", ["b"], ["a"]]]], + [":XOR", ["f"], [":IMPLIES", ["a"], ["b"]]], + [ + ":XOR", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + [":AND", [":IMPLIES", ["c"], [":AND", ["b"], ["b"]]], ["b"]], + [ + ":IMPLIES", + ["b"], + [ + ":OR", + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + ["c"], + [":AND", ["d"], [":XOR", [":OR", ["a"], ["b"]], ["a"]]] + ], + ["a"] + ], + [ + ":IMPLIES", + [ + ":OR", + ["c"], + [":IMPLIES", ["d"], [":NOT", [":XOR", ["c"], ["a"]]]] + ], + [ + ":OR", + ["d"], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":XOR", + [":NOT", [":AND", [":AND", ["c"], ["a"]], ["b"]]], + ["a"] + ], + ["c"] + ], + [ + ":XOR", + [ + ":XOR", + ["a"], + [ + ":OR", + ["b"], + [ + ":OR", + [ + ":OR", + [":AND", [":NOT", ["d"]], ["c"]], + [":AND", [":NOT", ["c"]], ["c"]] + ], + ["c"] + ] + ] + ], + [ + ":NOT", + [ + ":AND", + [":AND", ["a"], [":AND", ["a"], ["b"]]], + ["a"] + ] + ] + ] + ] + ] + ] + ], + ["c"] + ] + ] + ], + ["a"] + ] + ], + ["c"] + ], + [":NOT", [":OR", ["e"], [":OR", ["c"], [":NOT", ["a"]]]]], + [":XOR", ["a"], ["d"]], + [":NOT", ["e"]], + [ + ":OR", + [":XOR", [":NOT", [":OR", ["c"], ["c"]]], [":NOT", ["a"]]], + [":IMPLIES", [":XOR", ["b"], [":NOT", [":NOT", ["a"]]]], ["b"]] + ], + [":IMPLIES", ["a"], ["a"]], + [ + ":OR", + [":XOR", [":NOT", [":IMPLIES", [":XOR", ["a"], ["c"]], ["e"]]], ["g"]], + ["g"] + ], + [":AND", [":NOT", [":IMPLIES", ["a"], ["c"]]], [":XOR", ["a"], ["d"]]], + [":IMPLIES", ["a"], ["a"]], + [":OR", ["c"], [":IMPLIES", ["c"], ["c"]]], + [ + ":IMPLIES", + [":NOT", [":IMPLIES", [":AND", ["b"], ["a"]], [":XOR", ["d"], ["f"]]]], + ["c"] + ], + [":NOT", [":NOT", [":OR", ["b"], [":NOT", ["e"]]]]], + [":XOR", ["c"], [":XOR", [":OR", ["b"], ["d"]], ["d"]]], + [ + ":XOR", + [":OR", [":IMPLIES", ["c"], [":NOT", [":NOT", ["d"]]]], ["e"]], + ["d"] + ], + [":NOT", ["e"]], + [ + ":OR", + ["d"], + [ + ":OR", + [ + ":AND", + ["d"], + [ + ":IMPLIES", + ["c"], + [":XOR", ["a"], [":AND", [":AND", ["d"], ["b"]], ["a"]]] + ] + ], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [":AND", [":IMPLIES", ["a"], ["a"]], ["d"]], + [":IMPLIES", ["a"], ["c"]] + ], + ["c"] + ], + ["c"] + ], + [ + ":OR", + [":NOT", ["c"]], + [ + ":AND", + [ + ":XOR", + [":NOT", ["c"]], + [ + ":OR", + [ + ":IMPLIES", + [ + ":AND", + ["b"], + [ + ":AND", + [ + ":XOR", + [":AND", [":XOR", ["d"], ["b"]], [":NOT", ["d"]]], + ["a"] + ], + [":IMPLIES", ["a"], [":NOT", ["d"]]] + ] + ], + [ + ":OR", + [ + ":NOT", + [ + ":IMPLIES", + [":NOT", [":OR", ["b"], [":OR", ["a"], ["c"]]]], + ["d"] + ] + ], + ["a"] + ] + ], + ["a"] + ] + ], + [ + ":AND", + [":IMPLIES", ["c"], [":NOT", [":IMPLIES", ["d"], ["d"]]]], + ["c"] + ] + ] + ] + ], + [":OR", ["b"], [":XOR", ["b"], ["d"]]] + ] + ] + ], + [ + ":AND", + [ + ":AND", + [ + ":XOR", + ["c"], + [ + ":AND", + [":IMPLIES", ["c"], [":NOT", ["b"]]], + [":IMPLIES", [":IMPLIES", [":IMPLIES", ["d"], ["a"]], ["d"]], ["e"]] + ] + ], + ["d"] + ], + ["a"] + ], + [ + ":XOR", + [ + ":XOR", + [":OR", ["a"], [":AND", ["d"], ["e"]]], + [":NOT", [":AND", ["d"], [":IMPLIES", [":IMPLIES", ["c"], ["c"]], ["c"]]]] + ], + ["f"] + ], + [":AND", ["g"], ["g"]], + [ + ":IMPLIES", + [ + ":XOR", + [":AND", ["c"], ["f"]], + [ + ":NOT", + [ + ":OR", + [":NOT", ["e"]], + [ + ":OR", + [ + ":XOR", + [":XOR", ["f"], [":OR", ["e"], [":IMPLIES", ["d"], ["c"]]]], + [":OR", ["a"], [":AND", ["c"], [":NOT", ["a"]]]] + ], + [":IMPLIES", [":OR", ["c"], ["c"]], ["c"]] + ] + ] + ] + ], + [ + ":OR", + [ + ":XOR", + [ + ":IMPLIES", + [":NOT", [":XOR", [":XOR", ["g"], ["c"]], ["a"]]], + [ + ":XOR", + [ + ":IMPLIES", + ["c"], + [ + ":AND", + [ + ":AND", + [ + ":XOR", + [ + ":AND", + ["f"], + [ + ":AND", + [":NOT", [":IMPLIES", ["f"], ["g"]]], + [ + ":OR", + ["g"], + [ + ":OR", + [ + ":IMPLIES", + [":XOR", ["e"], [":XOR", ["a"], ["d"]]], + [ + ":AND", + [ + ":OR", + ["f"], + [ + ":XOR", + [ + ":AND", + [ + ":NOT", + [ + ":XOR", + [":AND", ["f"], ["c"]], + [ + ":NOT", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":AND", + [ + ":NOT", + [ + ":XOR", + ["b"], + [ + ":OR", + ["a"], + [ + ":XOR", + [ + ":XOR", + [ + ":AND", + ["a"], + [ + ":OR", + ["e"], + [ + ":AND", + ["g"], + [ + ":NOT", + ["b"] + ] + ] + ] + ], + ["e"] + ], + [ + ":AND", + [ + ":OR", + ["g"], + [ + ":XOR", + ["a"], + ["b"] + ] + ], + ["b"] + ] + ] + ] + ] + ], + ["b"] + ], + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["c"], + [":NOT", ["g"]] + ], + ["f"] + ], + [ + ":AND", + [":NOT", ["b"]], + ["f"] + ] + ] + ] + ], + [":AND", ["e"], ["g"]] + ] + ] + ] + ] + ], + ["b"] + ], + ["f"] + ] + ], + [":IMPLIES", ["f"], [":NOT", [":NOT", ["g"]]]] + ] + ], + ["e"] + ] + ] + ] + ], + [ + ":OR", + ["e"], + [ + ":AND", + ["d"], + [ + ":OR", + [ + ":XOR", + [ + ":IMPLIES", + ["d"], + [":NOT", [":NOT", [":NOT", ["f"]]]] + ], + ["c"] + ], + ["f"] + ] + ] + ] + ], + ["b"] + ], + [ + ":AND", + ["g"], + [ + ":IMPLIES", + ["g"], + [ + ":NOT", + [ + ":IMPLIES", + [":OR", ["e"], ["g"]], + [ + ":OR", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["g"], + [ + ":OR", + [":XOR", ["a"], ["b"]], + [":XOR", ["a"], ["a"]] + ] + ], + ["e"] + ], + ["a"] + ] + ] + ] + ] + ] + ] + ], + ["e"] + ] + ], + [":XOR", ["c"], [":NOT", [":XOR", [":OR", ["d"], ["g"]], ["b"]]]] + ], + ["d"] + ] + ], + [ + ":XOR", + [ + ":XOR", + [":AND", ["b"], [":XOR", [":OR", ["a"], [":OR", ["b"], ["d"]]], ["a"]]], + ["c"] + ], + ["c"] + ], + [":AND", [":OR", ["a"], [":AND", ["a"], ["a"]]], ["a"]], + [ + ":AND", + [ + ":AND", + [ + ":AND", + [ + ":AND", + [":XOR", ["f"], [":IMPLIES", [":IMPLIES", ["b"], ["d"]], ["a"]]], + ["g"] + ], + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + [":IMPLIES", [":AND", [":OR", ["d"], ["g"]], ["a"]], ["a"]], + ["d"] + ], + ["g"] + ], + ["b"] + ] + ], + ["a"] + ], + [":XOR", [":IMPLIES", ["i"], ["b"]], ["g"]] + ], + [":IMPLIES", ["a"], ["a"]], + [":AND", ["c"], ["a"]], + [":IMPLIES", ["d"], ["a"]], + [":IMPLIES", ["e"], ["d"]], + [ + ":AND", + [ + ":AND", + ["e"], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["b"], + [ + ":IMPLIES", + [":OR", [":NOT", [":AND", ["c"], ["a"]]], [":NOT", ["c"]]], + ["a"] + ] + ], + [ + ":NOT", + [ + ":AND", + [ + ":OR", + ["d"], + [ + ":IMPLIES", + [":OR", [":XOR", ["c"], [":NOT", ["e"]]], ["e"]], + [":OR", ["f"], ["d"]] + ] + ], + ["c"] + ] + ] + ] + ], + [ + ":OR", + ["f"], + [ + ":AND", + ["a"], + [":IMPLIES", [":OR", [":XOR", ["b"], ["c"]], ["c"]], ["f"]] + ] + ] + ], + [":IMPLIES", ["a"], ["e"]], + [ + ":OR", + ["c"], + [ + ":OR", + ["b"], + [ + ":AND", + [":NOT", [":AND", ["c"], [":OR", ["f"], ["a"]]]], + [":XOR", ["c"], ["a"]] + ] + ] + ], + [":AND", ["a"], [":OR", ["a"], ["a"]]], + [ + ":IMPLIES", + ["c"], + [":OR", [":OR", [":OR", [":IMPLIES", ["d"], ["a"]], ["c"]], ["a"]], ["d"]] + ], + [ + ":IMPLIES", + [ + ":AND", + [":IMPLIES", ["h"], [":OR", ["a"], ["e"]]], + [ + ":AND", + [ + ":AND", + [":IMPLIES", ["i"], ["h"]], + [":IMPLIES", [":XOR", [":NOT", ["e"]], ["c"]], [":NOT", ["a"]]] + ], + [":NOT", ["g"]] + ] + ], + ["g"] + ], + [":NOT", ["d"]], + [ + ":IMPLIES", + [":IMPLIES", [":NOT", [":OR", ["b"], ["a"]]], [":OR", ["c"], ["d"]]], + [ + ":OR", + [":OR", ["b"], ["c"]], + [ + ":AND", + [":IMPLIES", [":OR", [":AND", [":NOT", ["c"]], ["c"]], ["a"]], ["c"]], + [ + ":OR", + [":NOT", [":AND", ["b"], [":OR", [":IMPLIES", ["b"], ["e"]], ["c"]]]], + ["e"] + ] + ] + ] + ], + [":NOT", ["b"]], + [ + ":IMPLIES", + [ + ":AND", + [ + ":AND", + [":NOT", [":IMPLIES", [":AND", [":AND", ["a"], ["b"]], ["f"]], ["d"]]], + ["c"] + ], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":XOR", + [":IMPLIES", ["e"], ["e"]], + [":OR", ["a"], [":XOR", ["c"], [":NOT", [":AND", ["e"], ["f"]]]]] + ], + [ + ":XOR", + [ + ":IMPLIES", + [":AND", ["e"], [":IMPLIES", ["d"], ["b"]]], + [ + ":NOT", + [ + ":NOT", + [ + ":XOR", + [ + ":AND", + ["a"], + [ + ":OR", + [":IMPLIES", ["e"], [":NOT", ["f"]]], + [ + ":AND", + [":NOT", ["b"]], + [":IMPLIES", [":IMPLIES", ["e"], ["d"]], ["f"]] + ] + ] + ], + ["f"] + ] + ] + ] + ], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + [ + ":OR", + ["b"], + [ + ":IMPLIES", + [ + ":XOR", + [":IMPLIES", ["c"], ["f"]], + [ + ":IMPLIES", + [":OR", [":OR", ["e"], [":OR", ["d"], ["f"]]], ["f"]], + [":AND", [":IMPLIES", ["e"], ["d"]], ["c"]] + ] + ], + [":IMPLIES", ["a"], ["c"]] + ] + ], + [ + ":XOR", + [ + ":AND", + [":OR", ["f"], [":AND", ["e"], [":AND", ["c"], ["b"]]]], + [ + ":AND", + ["d"], + [ + ":XOR", + ["e"], + [ + ":XOR", + [ + ":AND", + [ + ":AND", + [ + ":NOT", + [ + ":AND", + [":XOR", ["e"], [":OR", ["e"], ["e"]]], + [ + ":OR", + [":IMPLIES", ["d"], ["a"]], + [ + ":XOR", + ["b"], + [ + ":XOR", + [ + ":AND", + ["b"], + [":IMPLIES", ["a"], ["d"]] + ], + [":XOR", ["a"], ["f"]] + ] + ] + ] + ] + ], + ["a"] + ], + [":AND", ["a"], ["b"]] + ], + ["e"] + ] + ] + ] + ], + ["f"] + ] + ], + ["e"] + ] + ] + ] + ] + ] + ], + ["f"] + ], + [":IMPLIES", [":XOR", [":NOT", ["d"]], ["b"]], [":NOT", [":NOT", ["a"]]]], + [ + ":AND", + [ + ":AND", + ["g"], + [ + ":IMPLIES", + [":XOR", ["c"], [":NOT", [":OR", ["f"], ["f"]]]], + [ + ":OR", + ["h"], + [ + ":AND", + [ + ":OR", + ["c"], + [ + ":XOR", + [ + ":XOR", + [ + ":IMPLIES", + [":OR", [":AND", [":NOT", ["c"]], ["c"]], ["b"]], + ["h"] + ], + ["b"] + ], + [":NOT", ["e"]] + ] + ], + [":IMPLIES", ["f"], ["f"]] + ] + ] + ] + ], + ["g"] + ], + [":OR", [":OR", ["e"], ["e"]], ["d"]], + [":OR", [":NOT", ["a"]], [":NOT", ["b"]]], + [ + ":OR", + [ + ":OR", + [ + ":OR", + ["h"], + [ + ":IMPLIES", + [ + ":IMPLIES", + [":IMPLIES", [":AND", [":NOT", ["b"]], ["a"]], ["a"]], + [":XOR", ["a"], ["g"]] + ], + [ + ":AND", + ["d"], + [ + ":OR", + ["f"], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["d"], + [ + ":OR", + [":AND", [":NOT", ["b"]], ["g"]], + [ + ":OR", + [ + ":XOR", + [ + ":AND", + [":IMPLIES", [":NOT", [":AND", ["a"], ["h"]]], ["d"]], + [ + ":AND", + ["f"], + [ + ":OR", + ["b"], + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + ["e"], + [ + ":OR", + [":NOT", ["g"]], + [":AND", ["b"], ["b"]] + ] + ], + ["d"] + ], + ["f"] + ] + ] + ] + ], + [":XOR", ["b"], [":XOR", ["b"], [":XOR", ["b"], ["b"]]]] + ], + [":XOR", ["e"], ["d"]] + ] + ] + ], + [":IMPLIES", ["c"], [":OR", ["d"], ["d"]]] + ] + ] + ] + ] + ], + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + ["b"], + [":AND", [":OR", ["b"], ["c"]], [":NOT", [":NOT", ["e"]]]] + ], + ["f"] + ], + [":NOT", ["f"]] + ] + ], + ["a"] + ], + [ + ":NOT", + [ + ":OR", + [ + ":XOR", + [ + ":AND", + [":OR", ["a"], ["c"]], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":OR", + [ + ":AND", + [ + ":XOR", + ["a"], + [ + ":AND", + ["c"], + [ + ":OR", + [":OR", ["d"], ["d"]], + [ + ":AND", + [":OR", ["b"], [":XOR", ["b"], ["c"]]], + [":XOR", [":AND", ["d"], ["b"]], ["c"]] + ] + ] + ] + ], + [ + ":AND", + [":XOR", ["d"], [":OR", ["d"], [":IMPLIES", ["a"], ["b"]]]], + [ + ":AND", + [ + ":AND", + [":AND", ["c"], ["a"]], + [ + ":IMPLIES", + [ + ":AND", + [ + ":OR", + ["a"], + [ + ":XOR", + ["b"], + [ + ":OR", + ["b"], + [ + ":AND", + ["b"], + [ + ":IMPLIES", + [":AND", ["d"], ["d"]], + [ + ":NOT", + [ + ":XOR", + [ + ":XOR", + [":NOT", ["c"]], + [":NOT", ["d"]] + ], + ["d"] + ] + ] + ] + ] + ] + ] + ], + [":AND", ["a"], ["c"]] + ], + ["a"] + ] + ], + ["d"] + ] + ] + ], + [":IMPLIES", ["b"], ["b"]] + ], + ["a"] + ], + ["a"] + ] + ], + ["d"] + ], + ["b"] + ] + ], + [ + ":IMPLIES", + [":AND", ["a"], [":OR", [":NOT", [":AND", ["a"], ["a"]]], ["b"]]], + [":NOT", [":AND", ["a"], [":IMPLIES", ["a"], [":XOR", ["b"], ["a"]]]]] + ], + [":XOR", ["c"], ["c"]], + [ + ":AND", + [":NOT", [":OR", ["a"], ["e"]]], + [ + ":IMPLIES", + [ + ":IMPLIES", + [":AND", [":NOT", ["e"]], [":NOT", [":OR", ["e"], ["a"]]]], + [":OR", ["b"], ["d"]] + ], + [":XOR", [":NOT", ["d"]], [":AND", ["b"], ["b"]]] + ] + ], + [":OR", ["a"], [":OR", ["a"], [":OR", ["a"], [":XOR", ["a"], ["a"]]]]], + [ + ":XOR", + [":OR", ["g"], [":AND", ["f"], ["e"]]], + [":XOR", [":XOR", ["d"], [":NOT", ["f"]]], ["c"]] + ], + [":AND", ["e"], ["g"]], + [":IMPLIES", ["d"], ["h"]], + [":NOT", ["d"]], + [":XOR", [":IMPLIES", ["b"], [":XOR", ["b"], ["b"]]], ["a"]], + [":XOR", [":XOR", ["a"], ["a"]], [":NOT", ["a"]]], + [ + ":AND", + [ + ":IMPLIES", + ["b"], + [ + ":OR", + ["b"], + [ + ":XOR", + ["b"], + [ + ":NOT", + [ + ":OR", + ["c"], + [ + ":IMPLIES", + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + ["c"], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + ["b"], + [ + ":AND", + [":XOR", [":NOT", ["b"]], ["b"]], + [ + ":AND", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + [":NOT", [":XOR", ["a"], ["b"]]], + [ + ":XOR", + [ + ":AND", + ["c"], + [":IMPLIES", [":NOT", ["a"]], ["b"]] + ], + ["b"] + ] + ] + ], + ["b"] + ], + [ + ":NOT", + [ + ":OR", + [ + ":OR", + [ + ":XOR", + ["b"], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + [ + ":OR", + [ + ":IMPLIES", + ["b"], + [ + ":AND", + [":NOT", ["c"]], + [ + ":XOR", + ["b"], + [ + ":OR", + [ + ":XOR", + ["c"], + [ + ":OR", + [ + ":AND", + ["c"], + ["b"] + ], + ["c"] + ] + ], + [ + ":IMPLIES", + [ + ":OR", + ["a"], + [ + ":IMPLIES", + ["a"], + ["c"] + ] + ], + [ + ":OR", + [ + ":IMPLIES", + ["a"], + ["b"] + ], + [ + ":OR", + [ + ":OR", + ["b"], + ["c"] + ], + [ + ":AND", + ["a"], + [ + ":XOR", + [":NOT", ["b"]], + ["b"] + ] + ] + ] + ] + ] + ] + ] + ] + ], + ["b"] + ], + [ + ":OR", + [ + ":AND", + [ + ":XOR", + [":AND", ["c"], ["b"]], + [":NOT", ["a"]] + ], + ["a"] + ], + ["c"] + ] + ] + ] + ], + [":OR", ["a"], ["a"]] + ], + ["a"] + ] + ] + ] + ] + ], + ["a"] + ], + [ + ":XOR", + ["b"], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":OR", + [":NOT", ["c"]], + [":AND", [":AND", ["b"], ["a"]], ["b"]] + ] + ], + ["c"] + ], + [":OR", ["b"], ["a"]] + ] + ] + ], + ["a"] + ] + ] + ], + ["c"] + ] + ] + ] + ] + ] + ], + [":XOR", [":NOT", [":IMPLIES", ["a"], ["b"]]], ["b"]] + ], + [ + ":XOR", + ["c"], + [ + ":AND", + [":NOT", ["b"]], + [ + ":AND", + [ + ":AND", + [":XOR", ["d"], ["b"]], + [":OR", [":AND", ["b"], [":OR", [":NOT", ["c"]], ["c"]]], ["d"]] + ], + ["e"] + ] + ] + ], + [":OR", [":OR", ["a"], ["g"]], [":IMPLIES", ["f"], ["g"]]], + [":XOR", [":IMPLIES", ["e"], ["f"]], ["c"]], + [":IMPLIES", [":AND", ["d"], [":IMPLIES", ["g"], ["e"]]], ["e"]], + [":NOT", [":AND", ["a"], [":NOT", ["c"]]]], + [":NOT", ["a"]], + [":AND", [":XOR", ["g"], ["h"]], ["f"]], + [ + ":AND", + [ + ":OR", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":AND", + ["b"], + [ + ":OR", + [ + ":XOR", + [":IMPLIES", [":AND", ["c"], ["a"]], [":NOT", ["a"]]], + [":AND", ["b"], ["a"]] + ], + [":OR", ["c"], ["c"]] + ] + ], + ["c"] + ], + ["d"] + ], + ["a"] + ], + [ + ":OR", + ["a"], + [ + ":IMPLIES", + [ + ":OR", + [":IMPLIES", [":OR", [":NOT", ["b"]], ["b"]], ["d"]], + [":NOT", ["c"]] + ], + [ + ":AND", + [ + ":AND", + [ + ":OR", + [":NOT", ["a"]], + [":OR", [":IMPLIES", ["d"], [":NOT", ["d"]]], ["b"]] + ], + [ + ":XOR", + [ + ":XOR", + ["a"], + [ + ":NOT", + [ + ":XOR", + [ + ":OR", + ["a"], + [ + ":OR", + ["b"], + [ + ":XOR", + ["d"], + [ + ":XOR", + ["d"], + [ + ":IMPLIES", + [ + ":OR", + [":IMPLIES", ["b"], ["d"]], + [":NOT", ["a"]] + ], + ["c"] + ] + ] + ] + ] + ], + [":AND", ["c"], ["d"]] + ] + ] + ], + ["a"] + ] + ], + [":IMPLIES", ["b"], [":NOT", ["c"]]] + ] + ] + ] + ], + [ + ":OR", + [ + ":AND", + [":AND", [":AND", ["b"], ["e"]], ["c"]], + [ + ":IMPLIES", + [ + ":OR", + [ + ":NOT", + [ + ":OR", + [":IMPLIES", ["d"], ["b"]], + [ + ":OR", + [":IMPLIES", ["b"], ["c"]], + [ + ":AND", + ["e"], + [ + ":AND", + [":AND", [":NOT", ["a"]], [":OR", ["a"], ["d"]]], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":OR", + [ + ":OR", + ["e"], + [ + ":OR", + ["b"], + [":AND", ["d"], [":XOR", ["a"], ["a"]]] + ] + ], + ["c"] + ] + ], + ["b"] + ], + ["e"] + ] + ] + ] + ] + ] + ], + [ + ":AND", + ["a"], + [ + ":XOR", + ["d"], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["b"], + [ + ":AND", + [ + ":AND", + ["b"], + [ + ":OR", + [":OR", [":NOT", ["d"]], [":NOT", ["a"]]], + [":AND", ["b"], [":NOT", ["d"]]] + ] + ], + [ + ":OR", + [ + ":AND", + [ + ":AND", + [":NOT", ["c"]], + [ + ":XOR", + [ + ":IMPLIES", + ["b"], + [":AND", ["e"], [":NOT", [":OR", ["e"], ["e"]]]] + ], + ["a"] + ] + ], + ["d"] + ], + [":IMPLIES", ["c"], ["c"]] + ] + ] + ], + ["d"] + ] + ] + ] + ], + [":NOT", [":NOT", ["d"]]] + ] + ], + [":NOT", ["a"]] + ], + [":OR", ["a"], ["a"]], + [":NOT", [":NOT", ["h"]]], + [":OR", ["b"], ["g"]], + [":NOT", ["d"]], + [":XOR", ["e"], ["a"]], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":OR", + ["b"], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":AND", + [":NOT", [":XOR", ["c"], [":OR", [":AND", ["a"], ["c"]], ["g"]]]], + [":NOT", [":XOR", [":XOR", ["a"], ["c"]], ["f"]]] + ] + ], + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + [ + ":XOR", + [":OR", ["e"], [":AND", ["g"], [":IMPLIES", ["c"], ["e"]]]], + ["e"] + ], + ["d"] + ], + ["d"] + ], + [":AND", ["g"], [":IMPLIES", ["b"], ["a"]]] + ], + ["e"] + ] + ] + ], + ["g"] + ], + [ + ":IMPLIES", + ["e"], + [ + ":NOT", + [ + ":XOR", + [":OR", [":NOT", ["e"]], ["e"]], + [":OR", ["f"], [":AND", ["a"], [":OR", ["b"], [":NOT", ["d"]]]]] + ] + ] + ] + ], + [":XOR", ["b"], ["a"]], + [ + ":NOT", + [ + ":XOR", + [ + ":IMPLIES", + [":OR", ["a"], [":NOT", ["a"]]], + [ + ":NOT", + [ + ":XOR", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + ["b"], + [ + ":AND", + [ + ":NOT", + [ + ":AND", + ["c"], + [ + ":AND", + [ + ":AND", + [":AND", ["b"], [":XOR", ["a"], ["a"]]], + [ + ":IMPLIES", + ["c"], + [ + ":AND", + [":OR", [":OR", ["c"], ["a"]], ["b"]], + [":IMPLIES", ["b"], [":NOT", ["c"]]] + ] + ] + ], + ["a"] + ] + ] + ], + ["c"] + ] + ], + ["c"] + ] + ], + ["a"] + ] + ] + ], + ["c"] + ] + ], + [":AND", [":AND", [":OR", [":NOT", ["a"]], ["a"]], ["b"]], ["c"]], + [":XOR", [":AND", ["b"], ["b"]], [":NOT", ["a"]]], + [ + ":AND", + ["b"], + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + [":XOR", [":AND", ["a"], ["b"]], ["a"]], + [":XOR", [":OR", ["b"], ["a"]], [":IMPLIES", ["a"], ["b"]]] + ], + ["a"] + ], + ["b"] + ] + ], + [":NOT", [":AND", ["a"], [":IMPLIES", [":OR", ["a"], ["a"]], ["a"]]]], + [":IMPLIES", ["c"], [":XOR", ["e"], [":NOT", ["c"]]]], + [":XOR", ["a"], ["c"]], + [":OR", ["a"], [":NOT", [":IMPLIES", ["a"], ["a"]]]], + [":XOR", [":OR", [":OR", [":XOR", ["b"], ["e"]], ["c"]], ["e"]], ["f"]], + [":NOT", ["e"]], + [":NOT", [":OR", ["b"], ["a"]]], + [ + ":XOR", + ["d"], + [ + ":OR", + [":AND", ["i"], ["h"]], + [ + ":OR", + ["a"], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":OR", + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [":OR", ["i"], [":AND", ["h"], ["h"]]], + [ + ":AND", + ["b"], + [ + ":XOR", + [":XOR", [":NOT", ["i"]], ["b"]], + [":NOT", [":NOT", [":NOT", [":IMPLIES", ["f"], ["c"]]]]] + ] + ] + ], + [ + ":AND", + [":IMPLIES", ["c"], ["c"]], + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + [":XOR", ["d"], ["e"]], + [ + ":XOR", + [":NOT", ["c"]], + [ + ":NOT", + [ + ":AND", + ["b"], + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + [":IMPLIES", ["d"], ["f"]], + ["i"] + ], + [":OR", ["e"], [":NOT", ["a"]]] + ] + ] + ] + ] + ] + ], + [":NOT", [":NOT", ["d"]]] + ], + ["d"] + ] + ] + ], + [ + ":OR", + ["i"], + [ + ":NOT", + [ + ":IMPLIES", + ["h"], + [ + ":AND", + [ + ":AND", + ["f"], + [ + ":XOR", + ["f"], + [ + ":AND", + [ + ":XOR", + [":XOR", ["g"], [":XOR", ["h"], ["f"]]], + ["i"] + ], + [":NOT", ["i"]] + ] + ] + ], + [ + ":OR", + ["i"], + [ + ":NOT", + [ + ":AND", + [ + ":OR", + [":OR", ["g"], ["g"]], + [":OR", ["e"], ["a"]] + ], + [ + ":XOR", + ["g"], + [":XOR", [":AND", ["h"], ["a"]], ["b"]] + ] + ] + ] + ] + ] + ] + ] + ] + ], + ["h"] + ], + [ + ":IMPLIES", + [ + ":AND", + [ + ":AND", + ["i"], + [ + ":XOR", + [ + ":IMPLIES", + ["a"], + [":NOT", [":AND", ["i"], [":NOT", ["b"]]]] + ], + ["c"] + ] + ], + ["h"] + ], + ["g"] + ] + ], + [":IMPLIES", ["d"], [":OR", ["g"], [":AND", ["i"], ["b"]]]] + ] + ] + ] + ], + [":NOT", ["g"]], + [":NOT", ["a"]], + [":AND", [":NOT", [":AND", ["b"], ["c"]]], ["f"]], + [ + ":XOR", + [":AND", ["d"], [":NOT", ["d"]]], + [ + ":AND", + ["c"], + [":IMPLIES", ["c"], [":IMPLIES", [":OR", ["d"], ["d"]], ["d"]]] + ] + ], + [ + ":XOR", + [":IMPLIES", [":AND", ["d"], ["b"]], ["a"]], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + ["d"], + [ + ":XOR", + ["c"], + [ + ":OR", + ["b"], + [ + ":AND", + [ + ":XOR", + [ + ":OR", + ["c"], + [ + ":AND", + [ + ":OR", + ["a"], + [ + ":OR", + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [ + ":OR", + [":NOT", [":AND", ["b"], ["d"]]], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":AND", ["b"], ["d"]], + [":XOR", ["c"], [":NOT", ["d"]]] + ], + ["d"] + ], + ["c"] + ] + ], + [ + ":NOT", + [ + ":AND", + [ + ":NOT", + [ + ":IMPLIES", + [":IMPLIES", ["a"], ["a"]], + ["b"] + ] + ], + ["d"] + ] + ] + ] + ], + ["c"] + ], + [ + ":XOR", + [ + ":XOR", + [":OR", ["d"], ["c"]], + [ + ":AND", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":NOT", ["b"]], + [":OR", [":XOR", ["b"], ["d"]], ["c"]] + ], + [":AND", ["c"], ["a"]] + ], + ["c"] + ] + ], + ["b"] + ] + ], + ["d"] + ], + [":NOT", ["c"]] + ] + ], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":AND", + [ + ":OR", + [ + ":AND", + [ + ":XOR", + ["b"], + [ + ":OR", + [":NOT", ["b"]], + [ + ":XOR", + ["d"], + [ + ":OR", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":AND", ["a"], ["c"]], + [":NOT", ["c"]] + ], + [ + ":XOR", + [ + ":XOR", + [ + ":AND", + [":IMPLIES", ["a"], ["a"]], + ["a"] + ], + ["b"] + ], + [":XOR", [":NOT", ["b"]], ["c"]] + ] + ] + ], + ["c"] + ] + ] + ] + ], + ["d"] + ], + ["c"] + ], + [":XOR", ["a"], ["a"]] + ] + ], + ["d"] + ] + ] + ], + [ + ":OR", + [":NOT", ["b"]], + [":OR", ["a"], [":IMPLIES", ["c"], ["a"]]] + ] + ], + [ + ":NOT", + [ + ":OR", + [":NOT", [":NOT", [":NOT", ["c"]]]], + [":AND", ["d"], ["d"]] + ] + ] + ] + ] + ] + ] + ], + [":NOT", ["b"]] + ] + ], + [":AND", ["c"], ["d"]], + [":OR", ["e"], ["c"]], + [":IMPLIES", ["d"], ["d"]], + [ + ":AND", + [ + ":AND", + [ + ":OR", + [":NOT", ["a"]], + [ + ":OR", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + ["b"], + [ + ":XOR", + [":OR", [":NOT", ["a"]], ["a"]], + [":OR", [":NOT", ["b"]], ["a"]] + ] + ], + [":XOR", ["a"], [":AND", ["a"], ["b"]]] + ], + ["a"] + ], + [ + ":IMPLIES", + ["b"], + [":IMPLIES", ["a"], [":AND", [":NOT", ["a"]], ["a"]]] + ] + ], + [ + ":AND", + [ + ":OR", + [":OR", [":AND", ["a"], ["b"]], ["b"]], + [ + ":IMPLIES", + [ + ":OR", + [":IMPLIES", [":XOR", ["b"], ["b"]], ["a"]], + [ + ":XOR", + ["a"], + [ + ":AND", + ["a"], + [":OR", [":NOT", [":AND", ["a"], ["b"]]], ["b"]] + ] + ] + ], + ["b"] + ] + ], + [":NOT", ["a"]] + ] + ] + ], + ["b"] + ], + ["b"] + ], + [ + ":IMPLIES", + ["b"], + [ + ":AND", + ["d"], + [ + ":IMPLIES", + ["a"], + [":AND", ["a"], [":NOT", [":XOR", ["b"], [":IMPLIES", ["d"], ["e"]]]]] + ] + ] + ], + [":OR", ["e"], ["d"]], + [":NOT", [":OR", ["c"], [":NOT", [":NOT", ["a"]]]]], + [":OR", ["i"], ["a"]], + [ + ":XOR", + [ + ":XOR", + [":IMPLIES", ["f"], ["g"]], + [ + ":XOR", + [ + ":AND", + [ + ":IMPLIES", + [":NOT", ["d"]], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":XOR", + [ + ":OR", + ["c"], + [ + ":OR", + [ + ":IMPLIES", + [ + ":XOR", + ["e"], + [ + ":XOR", + [ + ":AND", + ["f"], + [ + ":OR", + [":NOT", ["d"]], + [ + ":NOT", + [ + ":OR", + [ + ":AND", + [":NOT", [":OR", ["d"], ["e"]]], + [ + ":OR", + [":NOT", ["d"]], + [ + ":OR", + ["c"], + [":IMPLIES", ["g"], ["a"]] + ] + ] + ], + ["e"] + ] + ] + ] + ], + [":AND", ["a"], ["b"]] + ] + ], + [":IMPLIES", [":OR", ["g"], ["d"]], ["d"]] + ], + [ + ":AND", + [ + ":NOT", + [ + ":XOR", + [ + ":AND", + [ + ":AND", + ["g"], + [":OR", [":AND", ["e"], ["b"]], ["g"]] + ], + ["c"] + ], + ["g"] + ] + ], + ["d"] + ] + ] + ], + ["d"] + ] + ], + [ + ":OR", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":XOR", + [":AND", ["c"], [":OR", [":NOT", ["b"]], ["g"]]], + [ + ":XOR", + [ + ":XOR", + [ + ":NOT", + [ + ":XOR", + ["g"], + [ + ":OR", + ["b"], + [ + ":NOT", + [ + ":OR", + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [":NOT", ["c"]], + [ + ":OR", + ["e"], + [ + ":AND", + [":OR", ["g"], ["a"]], + ["d"] + ] + ] + ], + ["b"] + ], + [ + ":AND", + ["d"], + [ + ":IMPLIES", + [":XOR", ["g"], ["f"]], + ["d"] + ] + ] + ] + ], + ["e"] + ] + ] + ] + ] + ], + ["d"] + ], + [ + ":AND", + [ + ":AND", + [":XOR", [":AND", ["e"], ["e"]], ["g"]], + ["b"] + ], + [":OR", ["c"], ["g"]] + ] + ] + ], + ["f"] + ], + [ + ":NOT", + [ + ":IMPLIES", + ["b"], + [":IMPLIES", [":NOT", ["c"]], ["b"]] + ] + ] + ], + [":OR", ["b"], ["d"]] + ] + ], + ["g"] + ], + ["a"] + ] + ] + ], + ["c"] + ], + ["g"] + ] + ], + ["a"] + ], + [":OR", [":XOR", ["f"], ["d"]], ["e"]], + [":XOR", ["a"], [":NOT", ["b"]]], + [ + ":AND", + [ + ":XOR", + [ + ":OR", + ["f"], + [ + ":OR", + [ + ":OR", + ["d"], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":AND", + [ + ":IMPLIES", + [":XOR", ["c"], ["g"]], + [ + ":AND", + [ + ":IMPLIES", + [":XOR", [":OR", ["e"], ["g"]], ["g"]], + [":AND", ["b"], ["a"]] + ], + [ + ":AND", + [ + ":NOT", + [ + ":XOR", + [":XOR", [":AND", ["g"], ["a"]], ["e"]], + ["b"] + ] + ], + [ + ":AND", + ["d"], + [ + ":XOR", + [ + ":AND", + [ + ":NOT", + [ + ":AND", + ["d"], + [ + ":OR", + ["d"], + [ + ":IMPLIES", + ["d"], + [ + ":AND", + ["a"], + [ + ":IMPLIES", + ["e"], + [ + ":IMPLIES", + [":AND", ["a"], ["c"]], + [":AND", ["d"], ["d"]] + ] + ] + ] + ] + ] + ] + ], + ["c"] + ], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":XOR", + [":XOR", ["b"], ["c"]], + [":XOR", ["g"], [":OR", ["g"], ["a"]]] + ], + [":NOT", ["a"]] + ], + ["b"] + ] + ] + ] + ] + ] + ], + ["b"] + ], + ["e"] + ], + [":XOR", [":NOT", ["a"]], ["e"]] + ], + [":OR", ["c"], [":AND", [":IMPLIES", ["f"], ["b"]], ["d"]]] + ] + ], + [ + ":OR", + [":XOR", ["f"], ["b"]], + [ + ":NOT", + [ + ":XOR", + ["a"], + [ + ":AND", + ["e"], + [":XOR", ["d"], [":NOT", [":XOR", ["d"], ["g"]]]] + ] + ] + ] + ] + ] + ], + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + ["e"], + [ + ":OR", + [":XOR", ["g"], [":NOT", ["d"]]], + [ + ":XOR", + ["c"], + [ + ":OR", + ["g"], + [ + ":OR", + [ + ":NOT", + [ + ":OR", + [":AND", [":XOR", ["a"], ["a"]], [":OR", ["a"], ["a"]]], + ["e"] + ] + ], + ["f"] + ] + ] + ] + ] + ], + [ + ":AND", + [ + ":IMPLIES", + [":IMPLIES", ["b"], ["d"]], + [ + ":XOR", + [":AND", ["c"], ["a"]], + [ + ":AND", + [ + ":OR", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":OR", + [ + ":AND", + [ + ":AND", + [ + ":IMPLIES", + [":NOT", ["a"]], + [":OR", [":XOR", ["e"], ["a"]], ["a"]] + ], + ["a"] + ], + ["f"] + ], + ["f"] + ], + ["d"] + ], + ["e"] + ], + ["d"] + ], + [":XOR", ["c"], [":OR", ["d"], ["g"]]] + ] + ] + ], + ["f"] + ] + ], + ["b"] + ] + ], + [":IMPLIES", [":NOT", [":OR", ["d"], ["a"]]], ["a"]] + ], + [ + ":AND", + [ + ":OR", + [":NOT", ["c"]], + [ + ":OR", + [ + ":IMPLIES", + ["g"], + [ + ":XOR", + ["i"], + [ + ":XOR", + [ + ":AND", + ["e"], + [ + ":IMPLIES", + [ + ":XOR", + [":NOT", ["a"]], + [":AND", ["f"], [":AND", ["g"], ["b"]]] + ], + ["c"] + ] + ], + [":IMPLIES", ["i"], ["e"]] + ] + ] + ], + ["i"] + ] + ], + [":NOT", ["f"]] + ], + [ + ":IMPLIES", + [ + ":AND", + [":NOT", [":AND", ["c"], [":NOT", ["d"]]]], + [ + ":XOR", + [":NOT", ["d"]], + [":OR", [":NOT", [":AND", ["b"], ["b"]]], [":AND", ["b"], ["c"]]] + ] + ], + [ + ":AND", + [":AND", [":IMPLIES", [":IMPLIES", ["c"], ["b"]], ["d"]], ["d"]], + [":IMPLIES", ["d"], [":AND", ["b"], ["d"]]] + ] + ], + [ + ":AND", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":NOT", ["b"]], + [ + ":AND", + ["g"], + [ + ":XOR", + ["g"], + [ + ":XOR", + [":AND", [":XOR", ["d"], ["i"]], ["i"]], + [":OR", ["e"], ["e"]] + ] + ] + ] + ], + [":NOT", ["b"]] + ], + ["d"] + ], + [ + ":XOR", + [":XOR", [":OR", ["d"], [":NOT", ["d"]]], ["d"]], + [":IMPLIES", ["c"], ["d"]] + ], + [":NOT", ["b"]], + [":NOT", ["a"]], + [":NOT", ["a"]], + [":XOR", [":XOR", ["a"], ["a"]], ["a"]], + [":NOT", [":OR", ["d"], ["a"]]], + [ + ":NOT", + [ + ":AND", + ["e"], + [ + ":XOR", + [ + ":IMPLIES", + [":NOT", ["d"]], + [ + ":OR", + [ + ":XOR", + [ + ":AND", + [ + ":XOR", + [ + ":OR", + ["g"], + [ + ":AND", + ["i"], + [ + ":AND", + [ + ":IMPLIES", + ["e"], + [":AND", [":XOR", ["e"], [":NOT", ["g"]]], ["c"]] + ], + ["d"] + ] + ] + ], + [":AND", ["c"], ["i"]] + ], + ["f"] + ], + ["a"] + ], + [":IMPLIES", ["f"], ["h"]] + ] + ], + [":XOR", ["e"], ["h"]] + ] + ] + ], + [":OR", ["e"], [":AND", ["c"], ["c"]]], + [ + ":XOR", + ["a"], + [ + ":AND", + [ + ":XOR", + [":AND", ["b"], [":XOR", ["b"], ["b"]]], + [ + ":OR", + ["b"], + [ + ":AND", + [":AND", ["b"], ["a"]], + [ + ":OR", + ["b"], + [ + ":OR", + ["b"], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + ["a"], + [":OR", ["a"], [":IMPLIES", ["a"], [":AND", ["a"], ["b"]]]] + ] + ] + ] + ] + ] + ] + ], + [":XOR", ["a"], [":AND", ["a"], [":IMPLIES", ["a"], ["a"]]]] + ] + ], + [ + ":IMPLIES", + ["b"], + [":IMPLIES", [":OR", [":NOT", [":NOT", ["a"]]], ["a"]], ["b"]] + ], + [ + ":NOT", + [ + ":OR", + ["b"], + [ + ":NOT", + [ + ":IMPLIES", + [":IMPLIES", ["a"], [":IMPLIES", ["b"], ["g"]]], + [":OR", [":NOT", ["h"]], ["g"]] + ] + ] + ] + ], + [":IMPLIES", ["a"], [":NOT", ["a"]]], + [":AND", ["f"], [":OR", ["c"], [":IMPLIES", ["b"], ["d"]]]], + [":OR", ["a"], ["a"]], + [":OR", ["d"], ["a"]], + [":NOT", ["c"]], + [ + ":NOT", + [ + ":XOR", + [":NOT", ["a"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["b"], + [":NOT", [":XOR", ["a"], [":AND", ["c"], [":NOT", ["a"]]]]] + ], + [ + ":IMPLIES", + [":OR", ["c"], [":IMPLIES", ["c"], ["c"]]], + [":IMPLIES", ["c"], ["c"]] + ] + ] + ] + ], + [":XOR", ["c"], [":NOT", ["d"]]], + [":XOR", ["c"], ["c"]], + [":NOT", ["e"]], + [ + ":AND", + ["i"], + [ + ":IMPLIES", + [ + ":OR", + [":AND", ["f"], [":NOT", [":IMPLIES", ["e"], [":NOT", ["i"]]]]], + [ + ":XOR", + [":OR", [":NOT", [":XOR", [":OR", ["h"], ["b"]], ["h"]]], ["h"]], + [":AND", ["e"], ["a"]] + ] + ], + ["g"] + ] + ], + [ + ":NOT", + [ + ":XOR", + [ + ":OR", + [":AND", [":IMPLIES", ["d"], ["c"]], [":NOT", ["e"]]], + [":XOR", ["h"], ["h"]] + ], + ["c"] + ] + ], + [":OR", ["f"], [":OR", ["a"], ["f"]]], + [":OR", ["f"], ["h"]], + [ + ":IMPLIES", + [":NOT", ["a"]], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":AND", + [ + ":OR", + [ + ":NOT", + [":XOR", [":IMPLIES", ["a"], ["a"]], [":OR", ["a"], ["a"]]] + ], + [ + ":AND", + ["a"], + [ + ":IMPLIES", + [ + ":XOR", + ["a"], + [ + ":AND", + [ + ":AND", + [ + ":IMPLIES", + [":AND", [":XOR", ["a"], [":NOT", ["a"]]], ["a"]], + [ + ":XOR", + [":IMPLIES", ["a"], [":XOR", ["a"], ["a"]]], + ["a"] + ] + ], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + [ + ":XOR", + [":NOT", [":NOT", ["a"]]], + [":OR", ["a"], ["a"]] + ], + ["a"] + ] + ] + ], + [":NOT", ["a"]] + ] + ], + ["a"] + ] + ] + ], + ["a"] + ], + ["a"] + ], + ["a"] + ] + ], + [ + ":IMPLIES", + [":OR", [":OR", ["a"], [":IMPLIES", ["a"], ["b"]]], ["b"]], + [":NOT", ["b"]] + ], + [":XOR", [":AND", ["a"], ["b"]], ["c"]], + [":AND", ["f"], ["e"]], + [ + ":XOR", + [ + ":NOT", + [ + ":IMPLIES", + ["d"], + [ + ":OR", + [":NOT", [":NOT", [":NOT", [":NOT", ["e"]]]]], + [":IMPLIES", ["e"], [":AND", ["b"], ["b"]]] + ] + ] + ], + [ + ":OR", + [ + ":XOR", + [":XOR", [":OR", ["b"], ["a"]], [":XOR", ["c"], [":NOT", ["c"]]]], + [ + ":AND", + [ + ":OR", + ["c"], + [ + ":IMPLIES", + ["b"], + [ + ":IMPLIES", + [":IMPLIES", ["c"], [":XOR", ["f"], ["c"]]], + [ + ":IMPLIES", + ["e"], + [ + ":IMPLIES", + [ + ":XOR", + [":NOT", [":IMPLIES", ["d"], ["d"]]], + [ + ":NOT", + [":NOT", [":AND", ["f"], [":AND", ["b"], ["e"]]]] + ] + ], + ["d"] + ] + ] + ] + ] + ], + [ + ":AND", + [ + ":OR", + [":IMPLIES", [":NOT", ["f"]], [":NOT", ["f"]]], + [":OR", ["d"], [":AND", ["c"], [":NOT", [":NOT", ["e"]]]]] + ], + ["d"] + ] + ] + ], + [":NOT", ["a"]] + ] + ], + [":XOR", ["a"], ["b"]], + [ + ":IMPLIES", + ["e"], + [ + ":AND", + ["c"], + [ + ":XOR", + [":AND", ["g"], ["a"]], + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [":OR", ["e"], ["g"]], + [":OR", [":NOT", ["c"]], [":NOT", ["d"]]] + ], + [":NOT", [":OR", [":AND", ["f"], ["d"]], ["d"]]] + ], + [ + ":OR", + [ + ":IMPLIES", + ["d"], + [ + ":NOT", + [ + ":IMPLIES", + ["c"], + [ + ":AND", + [ + ":AND", + [ + ":XOR", + [":XOR", ["c"], [":IMPLIES", ["d"], ["d"]]], + [ + ":OR", + ["c"], + [ + ":AND", + [":OR", [":IMPLIES", ["a"], ["f"]], ["f"]], + ["f"] + ] + ] + ], + ["a"] + ], + ["c"] + ] + ] + ] + ], + [":NOT", [":OR", [":XOR", ["g"], ["b"]], ["d"]]] + ] + ] + ] + ] + ], + [ + ":OR", + ["e"], + [ + ":AND", + [ + ":OR", + ["a"], + [":OR", [":NOT", ["a"]], [":AND", [":NOT", ["a"]], ["b"]]] + ], + ["b"] + ] + ], + [":IMPLIES", [":IMPLIES", ["d"], ["a"]], ["c"]], + [ + ":AND", + [ + ":AND", + [":AND", [":NOT", ["g"]], [":NOT", ["c"]]], + [":OR", ["c"], [":IMPLIES", ["f"], ["a"]]] + ], + ["h"] + ], + [":IMPLIES", ["e"], [":AND", [":IMPLIES", ["c"], ["e"]], ["c"]]], + [":OR", [":IMPLIES", ["b"], [":OR", [":AND", ["f"], ["d"]], ["b"]]], ["e"]], + [":AND", ["a"], [":XOR", [":AND", [":OR", ["a"], ["a"]], ["a"]], ["a"]]], + [ + ":XOR", + [":IMPLIES", ["b"], ["b"]], + [":NOT", [":OR", [":IMPLIES", ["c"], ["b"]], ["c"]]] + ], + [":NOT", ["f"]], + [ + ":XOR", + [ + ":XOR", + [ + ":AND", + [ + ":XOR", + [ + ":OR", + [ + ":OR", + [ + ":IMPLIES", + [":AND", ["a"], ["d"]], + [ + ":IMPLIES", + [":NOT", [":AND", ["d"], ["a"]]], + [":NOT", [":OR", ["d"], ["a"]]] + ] + ], + ["e"] + ], + ["e"] + ], + ["b"] + ], + ["b"] + ], + [ + ":NOT", + [ + ":XOR", + ["b"], + [ + ":IMPLIES", + [":XOR", ["e"], [":OR", ["a"], [":OR", ["b"], ["d"]]]], + [ + ":XOR", + [":AND", ["b"], ["a"]], + [":XOR", ["c"], [":IMPLIES", ["e"], ["d"]]] + ] + ] + ] + ] + ], + ["c"] + ], + [ + ":AND", + ["c"], + [ + ":XOR", + ["d"], + [ + ":AND", + [ + ":NOT", + [ + ":IMPLIES", + [":XOR", ["a"], ["f"]], + [ + ":OR", + ["h"], + [ + ":XOR", + [ + ":NOT", + [ + ":XOR", + [ + ":XOR", + [":XOR", ["a"], ["a"]], + [":IMPLIES", [":OR", [":OR", ["g"], ["b"]], ["g"]], ["h"]] + ], + ["f"] + ] + ], + [ + ":AND", + ["h"], + [ + ":OR", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":XOR", [":NOT", ["b"]], [":NOT", [":NOT", ["d"]]]], + ["d"] + ], + ["e"] + ], + [":IMPLIES", [":OR", [":NOT", ["c"]], ["d"]], ["h"]] + ] + ] + ] + ] + ] + ], + [":NOT", ["g"]] + ] + ] + ], + [ + ":NOT", + [ + ":OR", + [ + ":XOR", + ["b"], + [ + ":OR", + [":IMPLIES", ["a"], ["e"]], + [ + ":IMPLIES", + ["b"], + [ + ":AND", + [":OR", ["b"], ["a"]], + [ + ":AND", + [ + ":AND", + [":AND", [":NOT", [":AND", ["e"], ["i"]]], ["b"]], + [":OR", [":IMPLIES", ["g"], ["c"]], ["c"]] + ], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":OR", + [":OR", ["i"], ["c"]], + [ + ":NOT", + [ + ":OR", + ["d"], + [ + ":XOR", + [ + ":XOR", + ["e"], + [ + ":OR", + [ + ":IMPLIES", + ["f"], + [ + ":IMPLIES", + [ + ":OR", + [":IMPLIES", ["g"], ["i"]], + [":XOR", ["h"], ["b"]] + ], + [":NOT", ["a"]] + ] + ], + [ + ":AND", + ["g"], + [ + ":NOT", + [ + ":XOR", + [":IMPLIES", ["e"], ["b"]], + [":NOT", [":NOT", ["f"]]] + ] + ] + ] + ] + ], + [ + ":OR", + [ + ":XOR", + [":AND", ["c"], [":IMPLIES", ["d"], ["f"]]], + ["i"] + ], + [ + ":AND", + [ + ":XOR", + ["e"], + [":XOR", [":AND", ["g"], ["i"]], ["a"]] + ], + [":AND", ["g"], ["e"]] + ] + ] + ] + ] + ] + ] + ], + [":NOT", ["e"]] + ] + ] + ] + ] + ] + ], + ["h"] + ] + ], + [":NOT", [":OR", [":NOT", [":XOR", ["a"], [":XOR", ["a"], ["a"]]]], ["a"]]], + [ + ":OR", + [ + ":XOR", + [":IMPLIES", ["b"], [":NOT", [":NOT", ["a"]]]], + [":XOR", ["b"], ["b"]] + ], + [":AND", ["b"], [":XOR", ["a"], ["a"]]] + ], + [":NOT", ["d"]], + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + [":AND", ["a"], ["d"]], + [ + ":OR", + [ + ":OR", + ["b"], + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [":IMPLIES", ["a"], [":OR", ["g"], ["f"]]], + [":XOR", ["b"], ["a"]] + ], + [":AND", [":NOT", ["c"]], [":NOT", [":OR", ["f"], ["f"]]]] + ], + ["f"] + ] + ], + [":AND", [":NOT", [":NOT", ["e"]]], ["d"]] + ] + ] + ] + ], + [":XOR", ["a"], ["c"]], + [ + ":OR", + [":AND", ["a"], ["a"]], + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + [":XOR", ["a"], ["a"]], + [ + ":OR", + [":NOT", ["a"]], + [ + ":OR", + [":XOR", ["a"], [":IMPLIES", ["a"], [":NOT", ["a"]]]], + [":XOR", ["a"], ["a"]] + ] + ] + ] + ] + ], + [ + ":OR", + [":IMPLIES", ["e"], ["d"]], + [ + ":IMPLIES", + ["b"], + [ + ":AND", + ["e"], + [ + ":XOR", + [ + ":AND", + ["f"], + [ + ":OR", + ["d"], + [ + ":AND", + ["h"], + [ + ":IMPLIES", + [":XOR", ["d"], ["e"]], + [ + ":OR", + [ + ":XOR", + [":NOT", ["h"]], + [ + ":AND", + [ + ":XOR", + ["h"], + [ + ":AND", + [":AND", ["i"], [":XOR", ["b"], ["a"]]], + ["h"] + ] + ], + [ + ":AND", + ["g"], + [":IMPLIES", ["g"], [":AND", ["i"], ["b"]]] + ] + ] + ], + ["a"] + ] + ] + ] + ] + ], + [ + ":NOT", + [ + ":OR", + ["a"], + [ + ":IMPLIES", + [":AND", [":OR", ["i"], [":IMPLIES", ["d"], ["a"]]], ["g"]], + ["h"] + ] + ] + ] + ] + ] + ] + ], + [ + ":IMPLIES", + [":IMPLIES", ["f"], [":NOT", ["f"]]], + [ + ":IMPLIES", + [":OR", ["g"], ["h"]], + [ + ":NOT", + [ + ":IMPLIES", + [":XOR", [":XOR", ["h"], ["a"]], ["h"]], + [ + ":XOR", + [ + ":OR", + [":NOT", [":IMPLIES", [":AND", ["g"], ["c"]], ["g"]]], + ["d"] + ], + [":AND", ["a"], ["c"]] + ] + ] + ] + ] + ], + [":XOR", ["a"], ["a"]], + [":OR", [":XOR", [":OR", ["b"], ["b"]], ["a"]], ["b"]], + [":XOR", [":NOT", ["b"]], [":IMPLIES", ["d"], ["f"]]], + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + [ + ":XOR", + ["i"], + [ + ":OR", + ["i"], + [ + ":AND", + ["a"], + [ + ":IMPLIES", + ["i"], + [ + ":NOT", + [ + ":OR", + [ + ":OR", + ["g"], + [ + ":XOR", + [ + ":AND", + [ + ":IMPLIES", + ["e"], + [ + ":XOR", + ["d"], + [ + ":OR", + ["d"], + [ + ":XOR", + ["a"], + [ + ":OR", + [ + ":XOR", + ["h"], + [":XOR", [":OR", ["c"], ["e"]], ["f"]] + ], + ["f"] + ] + ] + ] + ] + ], + ["e"] + ], + ["f"] + ] + ], + [":OR", ["i"], [":IMPLIES", [":NOT", [":NOT", ["g"]]], ["b"]]] + ] + ] + ] + ] + ] + ], + ["g"] + ] + ], + [":AND", ["a"], ["d"]], + [ + ":XOR", + [ + ":IMPLIES", + [":AND", [":OR", [":XOR", ["b"], [":OR", ["a"], ["b"]]], ["b"]], ["a"]], + [":AND", ["a"], ["a"]] + ], + [":OR", ["b"], ["b"]] + ], + [":AND", [":NOT", ["a"]], ["c"]], + [":AND", ["a"], [":XOR", [":AND", ["a"], ["b"]], ["b"]]], + [":AND", ["i"], [":AND", ["a"], ["b"]]], + [":IMPLIES", ["i"], [":NOT", [":IMPLIES", [":XOR", ["h"], ["a"]], ["h"]]]], + [ + ":OR", + [":XOR", ["a"], [":XOR", [":IMPLIES", ["a"], [":NOT", ["a"]]], ["a"]]], + ["a"] + ], + [":NOT", ["d"]], + [":OR", ["b"], [":OR", ["a"], [":NOT", [":NOT", ["a"]]]]], + [":NOT", ["f"]], + [ + ":AND", + ["a"], + [":NOT", [":IMPLIES", ["b"], [":OR", ["b"], [":AND", ["a"], ["a"]]]]] + ], + [":OR", ["a"], ["b"]], + [":OR", ["d"], [":OR", ["c"], [":XOR", ["a"], ["c"]]]], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + [":AND", ["c"], [":OR", ["d"], ["c"]]], + [ + ":AND", + ["b"], + [ + ":OR", + [":IMPLIES", ["a"], [":NOT", ["c"]]], + [ + ":XOR", + [":IMPLIES", [":IMPLIES", [":XOR", ["d"], ["b"]], ["e"]], ["e"]], + ["a"] + ] + ] + ] + ], + ["b"] + ], + ["a"] + ], + [":IMPLIES", ["c"], ["c"]], + [":AND", ["f"], ["a"]], + [ + ":NOT", + [ + ":NOT", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":NOT", + [":IMPLIES", ["b"], [":IMPLIES", ["c"], [":OR", ["b"], ["c"]]]] + ], + [":IMPLIES", [":AND", ["a"], ["b"]], ["b"]] + ], + [":AND", ["c"], [":IMPLIES", ["c"], [":NOT", [":OR", ["c"], ["a"]]]]] + ] + ] + ], + [":NOT", ["b"]], + [ + ":XOR", + [ + ":XOR", + ["d"], + [ + ":XOR", + ["d"], + [ + ":OR", + [ + ":NOT", + [ + ":IMPLIES", + [":NOT", ["d"]], + [ + ":IMPLIES", + [ + ":OR", + [":AND", ["a"], [":NOT", ["a"]]], + [":OR", ["d"], [":NOT", ["c"]]] + ], + [":NOT", [":NOT", ["c"]]] + ] + ] + ], + ["b"] + ] + ] + ], + [":AND", [":IMPLIES", ["d"], ["d"]], ["b"]] + ], + [":NOT", ["d"]], + [":XOR", ["i"], ["d"]], + [":OR", ["a"], [":OR", ["b"], ["a"]]], + [ + ":XOR", + [ + ":OR", + [":NOT", [":OR", ["a"], ["a"]]], + [ + ":OR", + [":NOT", ["a"]], + [ + ":OR", + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + [ + ":XOR", + [ + ":XOR", + [ + ":AND", + [":AND", ["a"], [":AND", ["a"], ["a"]]], + [":XOR", ["a"], [":OR", [":IMPLIES", ["a"], ["a"]], ["a"]]] + ], + ["a"] + ], + ["a"] + ], + ["a"] + ] + ], + [":IMPLIES", ["a"], ["a"]] + ] + ] + ], + ["a"] + ], + [":NOT", [":NOT", ["c"]]], + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [ + ":OR", + ["e"], + [ + ":OR", + [":NOT", [":XOR", ["b"], ["b"]]], + [ + ":OR", + [":IMPLIES", ["d"], [":NOT", ["d"]]], + [":OR", ["e"], [":OR", ["b"], ["b"]]] + ] + ] + ], + [":NOT", [":OR", ["e"], ["e"]]] + ], + [ + ":OR", + [":OR", [":OR", [":XOR", ["c"], ["d"]], [":OR", ["c"], ["d"]]], ["c"]], + ["d"] + ] + ], + ["b"] + ], + [":IMPLIES", ["g"], ["b"]], + [ + ":AND", + [ + ":AND", + [":OR", [":XOR", [":OR", ["c"], [":XOR", ["c"], ["a"]]], ["b"]], ["c"]], + ["d"] + ], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + ["b"], + [ + ":OR", + [ + ":AND", + ["b"], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + ["d"], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":XOR", + [":OR", ["c"], [":XOR", ["b"], ["a"]]], + ["c"] + ], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["b"], + [":NOT", [":NOT", ["d"]]] + ], + ["a"] + ] + ], + [":NOT", ["d"]] + ], + [":XOR", ["a"], ["b"]] + ], + ["b"] + ], + ["b"] + ], + ["b"] + ], + ["c"] + ], + ["d"] + ], + ["c"] + ] + ] + ] + ], + ["a"] + ] + ], + [":OR", [":NOT", [":NOT", ["b"]]], ["d"]] + ] + ], + [ + ":OR", + ["c"], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":OR", + [ + ":OR", + ["c"], + [ + ":IMPLIES", + [ + ":OR", + [ + ":OR", + [ + ":XOR", + ["a"], + [ + ":NOT", + [ + ":XOR", + [ + ":OR", + [":NOT", ["d"]], + [":AND", [":OR", ["a"], ["a"]], ["b"]] + ], + [ + ":IMPLIES", + ["d"], + [":AND", ["a"], [":IMPLIES", ["b"], ["a"]]] + ] + ] + ] + ], + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + [ + ":AND", + ["d"], + [ + ":XOR", + [ + ":AND", + [ + ":IMPLIES", + [":IMPLIES", ["d"], ["d"]], + ["d"] + ], + ["a"] + ], + ["d"] + ] + ], + ["c"] + ] + ] + ] + ], + ["a"] + ], + [":AND", ["c"], ["c"]] + ] + ], + ["d"] + ], + ["a"] + ], + ["b"] + ], + [":XOR", [":NOT", ["c"]], ["c"]] + ] + ] + ] + ], + [":OR", ["a"], [":IMPLIES", ["a"], ["a"]]], + [":NOT", ["a"]], + [":NOT", ["e"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["g"], + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + [":NOT", ["d"]], + [":AND", [":IMPLIES", [":NOT", [":NOT", ["a"]]], ["f"]], ["b"]] + ], + [ + ":AND", + ["b"], + [ + ":XOR", + [ + ":OR", + ["j"], + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + [":AND", [":AND", [":NOT", ["i"]], ["d"]], ["a"]], + ["d"] + ] + ] + ] + ], + ["g"] + ] + ] + ] + ] + ], + [ + ":OR", + ["d"], + [":IMPLIES", [":IMPLIES", ["c"], ["j"]], [":OR", ["b"], ["b"]]] + ] + ], + [":IMPLIES", [":NOT", ["c"]], [":NOT", ["f"]]], + [ + ":AND", + [":XOR", ["a"], [":OR", ["a"], [":XOR", ["b"], ["a"]]]], + [ + ":IMPLIES", + [":OR", [":XOR", ["a"], ["b"]], [":XOR", ["b"], ["b"]]], + [ + ":OR", + ["b"], + [ + ":OR", + [ + ":OR", + [ + ":XOR", + ["b"], + [":OR", [":OR", ["b"], [":XOR", ["b"], ["a"]]], ["b"]] + ], + [ + ":IMPLIES", + ["b"], + [ + ":IMPLIES", + [":IMPLIES", ["b"], [":NOT", [":NOT", [":XOR", ["b"], ["b"]]]]], + ["a"] + ] + ] + ], + ["b"] + ] + ] + ] + ], + [ + ":OR", + ["f"], + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + ["h"], + [":NOT", [":OR", ["a"], [":AND", ["c"], [":IMPLIES", ["d"], ["d"]]]]] + ] + ] + ], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":IMPLIES", + [":NOT", [":OR", [":IMPLIES", ["a"], ["a"]], ["a"]]], + [":AND", [":OR", ["a"], [":OR", ["a"], ["a"]]], ["a"]] + ], + [":OR", [":NOT", [":NOT", [":OR", ["a"], ["a"]]]], ["a"]] + ], + [":IMPLIES", ["a"], ["a"]] + ] + ], + [":IMPLIES", ["a"], ["b"]], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":OR", + [ + ":XOR", + [ + ":NOT", + [ + ":OR", + [ + ":XOR", + [":OR", [":IMPLIES", ["b"], ["a"]], ["a"]], + [":NOT", [":XOR", ["b"], ["c"]]] + ], + [":IMPLIES", ["d"], [":OR", ["d"], ["b"]]] + ] + ], + [":AND", [":XOR", ["d"], ["a"]], ["b"]] + ], + [":OR", ["c"], ["a"]] + ] + ], + ["c"] + ] + ], + [ + ":NOT", + [ + ":NOT", + [":IMPLIES", [":AND", ["f"], [":NOT", [":IMPLIES", ["a"], ["c"]]]], ["a"]] + ] + ], + [":IMPLIES", ["a"], ["e"]], + [":OR", ["b"], ["c"]], + [":NOT", [":NOT", ["d"]]], + [":XOR", ["a"], ["a"]], + [":IMPLIES", [":NOT", ["b"]], ["b"]], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":AND", + [":AND", ["g"], [":NOT", ["d"]]], + [ + ":IMPLIES", + ["d"], + [ + ":OR", + ["f"], + [ + ":IMPLIES", + [ + ":AND", + [":IMPLIES", ["e"], ["h"]], + [ + ":OR", + ["b"], + [":OR", ["f"], [":OR", [":IMPLIES", ["e"], ["h"]], ["e"]]] + ] + ], + [":IMPLIES", ["d"], ["g"]] + ] + ] + ] + ], + [":IMPLIES", ["b"], [":XOR", ["b"], ["f"]]] + ], + [":NOT", ["c"]] + ], + [":XOR", ["a"], ["f"]], + [":IMPLIES", [":AND", ["a"], ["a"]], ["a"]], + [":AND", ["d"], ["f"]], + [":OR", ["c"], ["f"]], + [ + ":IMPLIES", + ["c"], + [ + ":OR", + [ + ":IMPLIES", + [":NOT", ["c"]], + [ + ":IMPLIES", + ["c"], + [ + ":AND", + [ + ":AND", + [":OR", ["c"], ["b"]], + [ + ":AND", + ["c"], + [ + ":AND", + ["b"], + [ + ":OR", + [ + ":OR", + ["b"], + [ + ":XOR", + ["b"], + [ + ":NOT", + [ + ":NOT", + [ + ":XOR", + [":IMPLIES", ["a"], [":NOT", ["c"]]], + ["b"] + ] + ] + ] + ] + ], + ["c"] + ] + ] + ] + ], + [":OR", [":NOT", ["a"]], ["b"]] + ] + ] + ], + ["b"] + ] + ], + [ + ":IMPLIES", + ["a"], + [ + ":NOT", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":OR", + [ + ":OR", + [ + ":IMPLIES", + [":AND", [":IMPLIES", [":NOT", ["b"]], ["b"]], ["a"]], + ["a"] + ], + ["b"] + ], + [":XOR", [":OR", ["b"], [":XOR", ["a"], ["b"]]], ["a"]] + ], + ["a"] + ], + ["b"] + ] + ] + ], + [":XOR", ["i"], [":NOT", [":AND", [":XOR", ["j"], ["j"]], ["h"]]]], + [":OR", [":IMPLIES", ["a"], [":NOT", ["a"]]], ["a"]], + [":NOT", ["g"]], + [ + ":XOR", + [":AND", [":IMPLIES", ["a"], [":XOR", [":NOT", ["f"]], ["a"]]], ["e"]], + [ + ":NOT", + [ + ":OR", + [ + ":XOR", + [":NOT", [":IMPLIES", ["e"], [":NOT", [":AND", ["c"], ["a"]]]]], + [ + ":XOR", + [ + ":OR", + ["c"], + [ + ":OR", + [":XOR", ["a"], [":NOT", [":AND", ["b"], ["f"]]]], + [ + ":XOR", + ["a"], + [ + ":OR", + [ + ":AND", + [ + ":OR", + ["a"], + [ + ":XOR", + ["b"], + [":IMPLIES", [":XOR", [":NOT", ["a"]], ["c"]], ["c"]] + ] + ], + [":OR", ["a"], ["a"]] + ], + [":NOT", ["f"]] + ] + ] + ] + ], + [":OR", ["f"], [":XOR", ["b"], ["e"]]] + ] + ], + [":AND", [":NOT", ["b"]], [":AND", ["f"], [":NOT", ["b"]]]] + ] + ] + ], + [":OR", ["e"], ["a"]], + [ + ":OR", + [ + ":IMPLIES", + ["d"], + [":AND", [":XOR", [":XOR", ["b"], ["f"]], ["j"]], ["e"]] + ], + [ + ":NOT", + [ + ":IMPLIES", + [":IMPLIES", ["i"], [":OR", [":NOT", ["b"]], ["f"]]], + [ + ":AND", + [ + ":AND", + [":IMPLIES", [":OR", [":AND", ["h"], ["a"]], ["h"]], ["d"]], + [ + ":AND", + [":IMPLIES", [":XOR", ["e"], ["d"]], [":NOT", ["f"]]], + ["j"] + ] + ], + [ + ":AND", + [ + ":IMPLIES", + [ + ":OR", + [":IMPLIES", [":NOT", [":NOT", ["i"]]], ["f"]], + [":IMPLIES", ["a"], ["h"]] + ], + [":XOR", ["a"], [":OR", ["a"], ["d"]]] + ], + ["b"] + ] + ] + ] + ] + ], + [ + ":OR", + [ + ":OR", + [ + ":XOR", + ["b"], + [ + ":OR", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":IMPLIES", ["e"], [":NOT", [":OR", ["a"], ["h"]]]], + [ + ":AND", + [":IMPLIES", [":OR", ["e"], ["e"]], ["j"]], + [":XOR", ["g"], [":OR", [":XOR", ["e"], ["h"]], ["g"]]] + ] + ], + [":OR", ["c"], [":NOT", ["e"]]] + ], + ["a"] + ] + ], + [":AND", ["a"], [":IMPLIES", ["f"], ["d"]]] + ], + ["h"] + ], + [ + ":XOR", + [":OR", ["b"], ["c"]], + [":OR", ["b"], [":IMPLIES", ["c"], [":OR", [":NOT", ["c"]], ["b"]]]] + ], + [ + ":IMPLIES", + [ + ":OR", + ["a"], + [ + ":NOT", + [ + ":OR", + [":IMPLIES", [":OR", ["a"], ["a"]], ["a"]], + [":IMPLIES", ["a"], [":AND", [":AND", ["a"], ["a"]], ["a"]]] + ] + ] + ], + [ + ":NOT", + [ + ":AND", + [ + ":AND", + [ + ":AND", + ["a"], + [ + ":XOR", + [":NOT", ["a"]], + [":IMPLIES", [":OR", ["a"], ["a"]], [":IMPLIES", ["a"], ["a"]]] + ] + ], + [ + ":NOT", + [ + ":AND", + [":OR", ["a"], [":OR", ["a"], [":IMPLIES", ["a"], ["a"]]]], + ["a"] + ] + ] + ], + ["a"] + ] + ] + ], + [":NOT", [":AND", ["d"], [":NOT", ["a"]]]], + [ + ":XOR", + [":AND", [":OR", [":IMPLIES", ["c"], ["d"]], ["g"]], ["a"]], + [ + ":OR", + [ + ":XOR", + [ + ":IMPLIES", + [":OR", ["d"], [":XOR", ["d"], [":NOT", [":NOT", ["d"]]]]], + ["e"] + ], + [":XOR", ["i"], ["d"]] + ], + [ + ":XOR", + [":OR", ["b"], [":IMPLIES", ["c"], [":XOR", [":NOT", ["e"]], ["g"]]]], + ["b"] + ] + ] + ], + [":IMPLIES", ["a"], ["b"]], + [ + ":IMPLIES", + [ + ":OR", + [ + ":OR", + ["a"], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + [":OR", [":NOT", ["a"]], ["a"]], + [ + ":IMPLIES", + [ + ":XOR", + [":IMPLIES", ["a"], [":IMPLIES", ["a"], ["a"]]], + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":AND", + [ + ":IMPLIES", + [":OR", ["a"], ["a"]], + [ + ":AND", + ["a"], + [":IMPLIES", [":OR", ["a"], ["a"]], ["a"]] + ] + ], + ["a"] + ], + [ + ":AND", + [ + ":OR", + [ + ":OR", + [":NOT", ["a"]], + [ + ":AND", + ["a"], + [ + ":AND", + ["a"], + [ + ":OR", + [ + ":OR", + ["a"], + [ + ":IMPLIES", + [":AND", [":NOT", ["a"]], ["a"]], + [ + ":AND", + [ + ":XOR", + [":NOT", ["a"]], + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + [":NOT", ["a"]], + [":NOT", ["a"]] + ], + ["a"] + ], + [":IMPLIES", ["a"], ["a"]] + ] + ], + ["a"] + ] + ] + ], + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + ["a"], + [ + ":AND", + ["a"], + [ + ":OR", + [ + ":AND", + [ + ":AND", + [ + ":OR", + ["a"], + [ + ":XOR", + [ + ":OR", + ["a"], + [ + ":XOR", + ["a"], + [ + ":OR", + ["a"], + ["a"] + ] + ] + ], + [ + ":IMPLIES", + ["a"], + ["a"] + ] + ] + ], + ["a"] + ], + ["a"] + ], + ["a"] + ] + ] + ] + ], + ["a"] + ], + ["a"] + ] + ] + ] + ] + ], + [":NOT", [":NOT", ["a"]]] + ], + [ + ":IMPLIES", + [":IMPLIES", ["a"], [":AND", ["a"], ["a"]]], + ["a"] + ] + ] + ], + [":XOR", ["a"], [":IMPLIES", ["a"], ["a"]]] + ], + ["a"] + ] + ] + ] + ], + ["a"] + ] + ] + ] + ], + [":AND", [":XOR", ["a"], [":IMPLIES", ["a"], ["a"]]], ["a"]] + ], + [ + ":XOR", + [ + ":NOT", + [ + ":IMPLIES", + ["a"], + [":OR", ["a"], [":XOR", [":XOR", ["a"], ["a"]], ["a"]]] + ] + ], + [":NOT", ["a"]] + ] + ], + [":NOT", [":NOT", [":NOT", ["i"]]]], + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":OR", + [ + ":OR", + ["h"], + [ + ":NOT", + [ + ":XOR", + [":XOR", ["h"], ["g"]], + [":NOT", [":XOR", ["d"], [":IMPLIES", ["f"], ["d"]]]] + ] + ] + ], + [ + ":OR", + [ + ":OR", + [":IMPLIES", [":NOT", [":NOT", ["g"]]], ["a"]], + [":AND", [":NOT", [":OR", ["d"], ["f"]]], ["f"]] + ], + ["g"] + ] + ] + ], + ["b"] + ], + ["g"] + ] + ], + [ + ":NOT", + [ + ":XOR", + [":NOT", ["b"]], + [ + ":XOR", + [":NOT", ["b"]], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + ["a"], + [ + ":AND", + ["a"], + [ + ":OR", + [ + ":XOR", + ["b"], + [ + ":XOR", + [ + ":IMPLIES", + ["b"], + [ + ":IMPLIES", + [ + ":OR", + [":OR", ["a"], [":AND", ["b"], ["a"]]], + ["b"] + ], + ["b"] + ] + ], + ["b"] + ] + ], + ["b"] + ] + ] + ] + ], + ["a"] + ] + ] + ] + ], + [":XOR", ["a"], ["a"]], + [":IMPLIES", [":NOT", [":AND", ["b"], ["c"]]], ["b"]], + [":AND", ["c"], ["e"]], + [":XOR", ["a"], ["b"]], + [":AND", ["h"], [":XOR", ["h"], ["f"]]], + [ + ":IMPLIES", + [":OR", [":NOT", ["d"]], ["d"]], + [ + ":NOT", + [ + ":IMPLIES", + [":IMPLIES", [":IMPLIES", ["i"], [":NOT", ["i"]]], ["c"]], + ["b"] + ] + ] + ], + [":IMPLIES", [":IMPLIES", ["d"], [":NOT", ["e"]]], ["a"]], + [":NOT", [":XOR", ["d"], ["d"]]], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":OR", + [ + ":AND", + ["b"], + [ + ":AND", + [ + ":AND", + [":AND", [":AND", [":AND", ["d"], ["e"]], ["c"]], ["f"]], + ["f"] + ], + ["f"] + ] + ], + [":NOT", ["d"]] + ] + ], + [":OR", ["d"], [":XOR", ["f"], ["e"]]] + ] + ], + [":IMPLIES", ["a"], ["a"]], + [":AND", ["c"], ["i"]], + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + [":IMPLIES", [":XOR", [":AND", [":NOT", ["a"]], ["a"]], ["b"]], ["a"]], + ["a"] + ] + ] + ], + [":OR", ["b"], ["b"]], + [ + ":OR", + [ + ":AND", + ["a"], + [ + ":AND", + [":NOT", [":OR", ["a"], ["a"]]], + [ + ":OR", + ["a"], + [ + ":OR", + [":XOR", [":NOT", [":AND", ["a"], ["a"]]], ["a"]], + [":AND", ["a"], ["a"]] + ] + ] + ] + ], + ["a"] + ], + [":OR", ["a"], ["a"]], + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [ + ":IMPLIES", + [ + ":AND", + [":OR", ["b"], ["f"]], + [ + ":AND", + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [":OR", ["c"], [":NOT", ["f"]]], + [":OR", ["b"], [":OR", ["c"], [":NOT", ["d"]]]] + ], + ["c"] + ], + [ + ":XOR", + ["b"], + [ + ":IMPLIES", + [":IMPLIES", [":XOR", ["d"], [":NOT", ["d"]]], ["c"]], + ["d"] + ] + ] + ], + [ + ":XOR", + [ + ":XOR", + [ + ":XOR", + [ + ":XOR", + [ + ":AND", + ["e"], + [ + ":NOT", + [ + ":IMPLIES", + ["a"], + [ + ":OR", + ["a"], + [ + ":AND", + ["d"], + [ + ":IMPLIES", + ["c"], + [ + ":AND", + [ + ":IMPLIES", + ["e"], + [ + ":AND", + [":NOT", ["d"]], + [ + ":NOT", + [ + ":NOT", + [":IMPLIES", ["e"], ["d"]] + ] + ] + ] + ], + [":NOT", ["e"]] + ] + ] + ] + ] + ] + ] + ], + ["c"] + ], + ["f"] + ], + ["f"] + ], + [":OR", [":XOR", ["f"], ["b"]], ["a"]] + ] + ] + ], + ["d"] + ], + ["d"] + ] + ], + ["d"] + ], + ["a"] + ], + [":OR", ["c"], [":IMPLIES", ["e"], [":OR", ["c"], ["d"]]]] + ], + [ + ":AND", + ["b"], + [ + ":XOR", + ["b"], + [ + ":IMPLIES", + [":OR", ["d"], ["f"]], + [ + ":XOR", + [":XOR", [":NOT", ["c"]], [":OR", ["f"], ["b"]]], + [ + ":NOT", + [ + ":XOR", + [":OR", [":XOR", ["d"], ["d"]], [":NOT", ["b"]]], + [ + ":NOT", + [ + ":AND", + [ + ":AND", + ["b"], + [ + ":IMPLIES", + [ + ":AND", + [ + ":AND", + [ + ":OR", + [":AND", ["c"], [":NOT", [":XOR", ["f"], ["b"]]]], + [ + ":IMPLIES", + [":XOR", ["f"], [":NOT", ["e"]]], + ["e"] + ] + ], + [ + ":AND", + ["d"], + [ + ":IMPLIES", + [ + ":XOR", + ["b"], + [ + ":NOT", + [ + ":XOR", + [ + ":AND", + [":NOT", ["e"]], + [":OR", ["a"], ["c"]] + ], + ["e"] + ] + ] + ], + [":NOT", [":OR", [":NOT", ["f"]], ["d"]]] + ] + ] + ], + ["b"] + ], + ["d"] + ] + ], + [ + ":IMPLIES", + ["f"], + [ + ":IMPLIES", + [ + ":AND", + [":XOR", [":NOT", ["f"]], ["d"]], + [":OR", ["b"], ["a"]] + ], + [":AND", ["e"], ["b"]] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ] + ], + [":IMPLIES", ["j"], ["h"]], + [ + ":XOR", + [ + ":XOR", + ["c"], + [ + ":XOR", + [":XOR", [":XOR", [":NOT", ["d"]], ["b"]], ["b"]], + [":AND", ["c"], ["b"]] + ] + ], + [":OR", ["a"], [":OR", ["b"], [":XOR", ["c"], [":OR", ["d"], ["b"]]]]] + ], + [":OR", ["b"], [":IMPLIES", ["a"], [":NOT", ["a"]]]], + [":AND", [":NOT", ["d"]], [":OR", [":OR", ["d"], ["e"]], ["e"]]], + [":XOR", [":OR", ["a"], ["a"]], [":AND", ["c"], ["c"]]], + [ + ":IMPLIES", + [ + ":OR", + ["f"], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":AND", + [":OR", [":XOR", [":OR", ["c"], ["g"]], [":NOT", ["i"]]], ["f"]], + ["a"] + ] + ], + ["b"] + ] + ], + ["b"] + ], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + [ + ":NOT", + [ + ":XOR", + [ + ":AND", + [":XOR", ["a"], [":NOT", [":AND", ["j"], ["g"]]]], + [":NOT", [":XOR", ["f"], ["d"]]] + ], + [ + ":OR", + [ + ":IMPLIES", + [":IMPLIES", ["e"], ["d"]], + [":IMPLIES", ["a"], ["c"]] + ], + [":IMPLIES", [":AND", ["g"], ["i"]], [":NOT", [":NOT", ["f"]]]] + ] + ] + ], + [":XOR", ["a"], [":XOR", ["d"], [":XOR", ["i"], ["i"]]]] + ], + [ + ":NOT", + [ + ":AND", + [ + ":AND", + ["f"], + [":IMPLIES", ["d"], [":NOT", [":OR", ["i"], [":NOT", ["f"]]]]] + ], + ["e"] + ] + ] + ], + ["i"] + ] + ], + [":OR", ["a"], ["a"]], + [":AND", ["a"], [":AND", ["a"], [":AND", ["a"], [":NOT", ["a"]]]]], + [ + ":IMPLIES", + ["b"], + [ + ":NOT", + [ + ":XOR", + [":AND", ["b"], ["a"]], + [ + ":AND", + [":OR", ["b"], ["b"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + [":NOT", ["a"]], + [ + ":NOT", + [ + ":AND", + [":XOR", ["a"], ["b"]], + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + ["a"], + [ + ":NOT", + [ + ":XOR", + [ + ":AND", + [ + ":IMPLIES", + [":IMPLIES", ["b"], [":IMPLIES", ["a"], ["a"]]], + ["b"] + ], + [":IMPLIES", ["a"], ["a"]] + ], + ["a"] + ] + ] + ] + ] + ] + ] + ] + ], + ["a"] + ] + ] + ] + ] + ], + [ + ":XOR", + [ + ":IMPLIES", + [":IMPLIES", ["b"], ["c"]], + [ + ":XOR", + ["e"], + [ + ":IMPLIES", + [":IMPLIES", ["d"], [":AND", ["c"], [":XOR", ["e"], ["c"]]]], + [":XOR", ["a"], ["a"]] + ] + ] + ], + [":NOT", ["b"]] + ], + [":OR", ["f"], ["a"]], + [ + ":XOR", + [ + ":IMPLIES", + [":AND", [":IMPLIES", [":OR", ["b"], ["b"]], ["f"]], ["h"]], + ["d"] + ], + ["f"] + ], + [ + ":AND", + [ + ":XOR", + [":NOT", [":XOR", [":NOT", [":XOR", ["c"], ["f"]]], ["f"]]], + ["c"] + ], + [":NOT", [":AND", ["e"], ["e"]]] + ], + [":NOT", ["h"]], + [":NOT", ["g"]], + [":IMPLIES", [":IMPLIES", ["d"], ["e"]], ["d"]], + [":XOR", ["c"], [":AND", ["h"], [":AND", ["e"], ["c"]]]], + [":IMPLIES", ["c"], ["b"]], + [ + ":IMPLIES", + [":NOT", [":XOR", [":IMPLIES", ["b"], ["e"]], ["c"]]], + [ + ":IMPLIES", + [":XOR", ["e"], [":NOT", ["f"]]], + [":AND", [":AND", [":IMPLIES", ["a"], ["c"]], ["e"]], ["e"]] + ] + ], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["f"], + [ + ":OR", + ["c"], + [ + ":AND", + [":NOT", [":XOR", ["e"], ["g"]]], + [":IMPLIES", ["e"], [":OR", ["d"], ["b"]]] + ] + ] + ], + [ + ":IMPLIES", + [ + ":OR", + [":NOT", [":IMPLIES", ["b"], ["d"]]], + [":IMPLIES", ["c"], [":XOR", ["e"], ["a"]]] + ], + [":OR", ["e"], ["f"]] + ] + ] + ], + [":IMPLIES", ["a"], ["a"]], + [ + ":NOT", + [ + ":OR", + [ + ":XOR", + [ + ":IMPLIES", + ["c"], + [ + ":NOT", + [ + ":XOR", + [ + ":XOR", + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + [":OR", ["c"], ["b"]], + [ + ":AND", + [":XOR", ["b"], ["b"]], + [ + ":OR", + [ + ":XOR", + [ + ":AND", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["c"], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":IMPLIES", + [":NOT", [":NOT", ["b"]]], + ["c"] + ], + ["a"] + ], + [ + ":AND", + ["c"], + [ + ":IMPLIES", + [":NOT", ["c"]], + [ + ":NOT", + [ + ":OR", + ["c"], + [ + ":AND", + [":NOT", ["b"]], + [ + ":NOT", + [ + ":IMPLIES", + [":OR", ["b"], ["b"]], + ["c"] + ] + ] + ] + ] + ] + ] + ] + ] + ], + [":NOT", ["a"]] + ] + ], + [":OR", ["a"], ["c"]] + ], + [":AND", ["a"], ["a"]] + ], + [":IMPLIES", ["a"], [":OR", ["a"], ["b"]]] + ] + ] + ], + [":OR", [":OR", ["a"], ["c"]], ["b"]] + ], + ["a"] + ], + [ + ":OR", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["c"], + [":XOR", [":NOT", ["a"]], [":IMPLIES", ["c"], ["a"]]] + ], + [ + ":AND", + [ + ":NOT", + [ + ":IMPLIES", + [":NOT", ["b"]], + [ + ":AND", + [ + ":NOT", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":IMPLIES", + ["b"], + [ + ":XOR", + [":AND", [":NOT", ["a"]], ["a"]], + ["b"] + ] + ], + ["c"] + ], + ["c"] + ] + ], + [ + ":XOR", + [":AND", ["a"], ["a"]], + [ + ":AND", + [":NOT", ["a"]], + [":OR", ["c"], [":XOR", ["b"], ["a"]]] + ] + ] + ] + ] + ], + [ + ":NOT", + [ + ":NOT", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":AND", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":XOR", + ["b"], + [ + ":OR", + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + [":AND", ["a"], ["a"]], + [ + ":XOR", + [ + ":OR", + ["b"], + [ + ":NOT", + [ + ":XOR", + [ + ":OR", + ["c"], + [ + ":XOR", + ["a"], + [ + ":NOT", + [":AND", ["b"], ["a"]] + ] + ] + ], + ["c"] + ] + ] + ], + [ + ":OR", + ["a"], + [ + ":AND", + [ + ":AND", + ["a"], + [":IMPLIES", ["b"], ["a"]] + ], + ["c"] + ] + ] + ] + ] + ], + [ + ":AND", + [ + ":XOR", + [":AND", ["b"], ["c"]], + ["b"] + ], + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + ["b"], + [":OR", ["a"], ["c"]] + ] + ] + ] + ] + ], + ["b"] + ] + ], + ["b"] + ], + ["b"] + ] + ] + ] + ] + ] + ], + ["a"] + ] + ], + ["c"] + ] + ] + ], + [":OR", [":OR", ["a"], ["b"]], ["c"]] + ], + [":OR", ["c"], ["c"]] + ] + ], + [":IMPLIES", [":OR", ["a"], ["a"]], ["a"]], + [":NOT", ["b"]], + [":AND", ["a"], [":NOT", ["b"]]], + [ + ":AND", + ["b"], + [ + ":AND", + [ + ":XOR", + ["c"], + [ + ":AND", + ["c"], + [ + ":XOR", + [":XOR", ["c"], ["a"]], + [ + ":OR", + [":IMPLIES", ["b"], [":IMPLIES", ["a"], ["a"]]], + [ + ":AND", + [ + ":OR", + [ + ":IMPLIES", + [ + ":XOR", + [":OR", ["c"], [":AND", [":NOT", ["c"]], ["c"]]], + [ + ":AND", + [":AND", ["c"], ["b"]], + [":OR", [":OR", ["a"], ["d"]], ["c"]] + ] + ], + ["c"] + ], + ["b"] + ], + [":XOR", [":OR", [":XOR", ["a"], ["d"]], ["c"]], ["c"]] + ] + ] + ] + ] + ], + [ + ":IMPLIES", + [":AND", ["c"], [":XOR", ["a"], ["a"]]], + [ + ":AND", + ["d"], + [ + ":NOT", + [ + ":OR", + ["c"], + [ + ":AND", + [ + ":AND", + ["d"], + [ + ":XOR", + [ + ":AND", + [ + ":OR", + ["d"], + [ + ":AND", + ["d"], + [ + ":OR", + [ + ":AND", + [":IMPLIES", ["d"], [":IMPLIES", ["b"], ["c"]]], + ["a"] + ], + [ + ":XOR", + [ + ":XOR", + [ + ":OR", + [":AND", ["a"], [":IMPLIES", ["c"], ["c"]]], + ["a"] + ], + ["a"] + ], + ["b"] + ] + ] + ] + ], + [":NOT", ["a"]] + ], + ["c"] + ] + ], + [":NOT", ["b"]] + ] + ] + ] + ] + ] + ] + ], + [":NOT", ["g"]], + [":XOR", ["b"], ["a"]], + [ + ":OR", + [ + ":OR", + [":OR", [":NOT", ["a"]], ["a"]], + [ + ":IMPLIES", + [":OR", [":AND", ["a"], ["a"]], [":AND", ["a"], ["a"]]], + ["a"] + ] + ], + [ + ":XOR", + [":IMPLIES", ["a"], ["a"]], + [ + ":AND", + [ + ":AND", + [ + ":NOT", + [ + ":NOT", + [":XOR", ["a"], [":IMPLIES", [":NOT", ["a"]], [":NOT", ["a"]]]] + ] + ], + [":XOR", ["a"], ["a"]] + ], + ["a"] + ] + ] + ], + [":NOT", ["g"]], + [ + ":XOR", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":AND", + [":NOT", ["f"]], + [ + ":AND", + [ + ":NOT", + [ + ":AND", + [":AND", [":OR", [":XOR", ["b"], ["b"]], ["b"]], ["h"]], + [ + ":AND", + [ + ":OR", + [":AND", [":XOR", ["b"], ["d"]], ["f"]], + [":NOT", ["d"]] + ], + ["h"] + ] + ] + ], + ["d"] + ] + ], + [":AND", ["c"], [":XOR", [":XOR", ["f"], ["b"]], ["d"]]] + ], + [ + ":OR", + [ + ":XOR", + [ + ":NOT", + [ + ":NOT", + [ + ":XOR", + ["f"], + [":OR", [":IMPLIES", [":NOT", ["b"]], ["d"]], ["d"]] + ] + ] + ], + ["f"] + ], + [":OR", ["a"], ["h"]] + ] + ], + [ + ":AND", + ["b"], + [ + ":AND", + ["a"], + [ + ":XOR", + [ + ":IMPLIES", + [":NOT", [":XOR", ["g"], ["a"]]], + [":AND", ["a"], ["g"]] + ], + [ + ":AND", + [":OR", [":NOT", [":NOT", [":AND", ["d"], ["h"]]]], ["e"]], + [":AND", ["h"], ["h"]] + ] + ] + ] + ] + ], + [":OR", ["g"], [":IMPLIES", ["g"], ["f"]]] + ], + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + ["f"], + [ + ":XOR", + ["d"], + [":AND", ["g"], [":OR", [":NOT", ["a"]], [":NOT", ["e"]]]] + ] + ] + ] + ], + [ + ":XOR", + ["g"], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":XOR", + ["f"], + [ + ":NOT", + [ + ":IMPLIES", + [ + ":XOR", + ["i"], + [ + ":XOR", + [ + ":IMPLIES", + [":NOT", ["i"]], + [ + ":XOR", + ["g"], + [ + ":NOT", + [ + ":AND", + [ + ":AND", + [":NOT", ["d"]], + [ + ":XOR", + [ + ":AND", + [ + ":XOR", + ["h"], + [ + ":AND", + [":OR", [":NOT", ["d"]], ["i"]], + [":IMPLIES", [":OR", ["e"], ["f"]], ["h"]] + ] + ], + [ + ":AND", + ["g"], + [ + ":XOR", + [ + ":IMPLIES", + ["b"], + [ + ":AND", + [ + ":IMPLIES", + [":OR", ["a"], ["c"]], + [":OR", ["i"], ["a"]] + ], + [":OR", ["g"], ["b"]] + ] + ], + [":NOT", ["i"]] + ] + ] + ], + ["h"] + ] + ], + [":NOT", ["a"]] + ] + ] + ] + ], + [":NOT", ["i"]] + ] + ], + ["a"] + ] + ] + ], + [ + ":NOT", + [ + ":XOR", + ["i"], + [ + ":IMPLIES", + [ + ":AND", + ["f"], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["d"], + [ + ":AND", + [ + ":OR", + [ + ":AND", + [ + ":OR", + [ + ":OR", + [ + ":XOR", + [ + ":AND", + ["b"], + [ + ":IMPLIES", + ["e"], + [":OR", [":NOT", ["e"]], ["c"]] + ] + ], + [":AND", ["f"], ["g"]] + ], + ["i"] + ], + ["i"] + ], + ["c"] + ], + [":XOR", ["d"], ["a"]] + ], + ["g"] + ] + ], + ["c"] + ] + ], + [ + ":AND", + [":AND", ["g"], ["d"]], + [ + ":OR", + ["b"], + [ + ":OR", + [":OR", [":XOR", [":AND", ["b"], ["a"]], ["d"]], ["i"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":IMPLIES", + [ + ":XOR", + [":NOT", ["b"]], + [ + ":AND", + ["d"], + [ + ":AND", + ["e"], + [ + ":NOT", + [ + ":IMPLIES", + ["a"], + [ + ":AND", + [ + ":OR", + [ + ":XOR", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":OR", + [ + ":IMPLIES", + ["g"], + [ + ":AND", + ["h"], + [":XOR", ["i"], ["e"]] + ] + ], + ["e"] + ] + ], + ["a"] + ], + [ + ":IMPLIES", + [":NOT", ["a"]], + ["a"] + ] + ], + ["a"] + ], + [":IMPLIES", ["h"], ["c"]] + ], + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + ["c"], + [ + ":AND", + [ + ":AND", + [ + ":AND", + [ + ":AND", + [":OR", ["i"], ["f"]], + ["a"] + ], + ["e"] + ], + ["c"] + ], + [":XOR", ["b"], ["d"]] + ] + ], + [":NOT", ["f"]] + ], + ["b"] + ] + ] + ] + ] + ] + ] + ], + ["d"] + ], + [":OR", ["e"], ["a"]] + ], + ["g"] + ] + ] + ] + ] + ] + ] + ] + ] + ], + [":IMPLIES", ["b"], [":NOT", ["b"]]] + ] + ], + [":XOR", ["c"], [":IMPLIES", ["a"], [":NOT", ["d"]]]], + [":NOT", [":XOR", ["a"], ["a"]]], + [ + ":AND", + [ + ":XOR", + [":XOR", ["d"], ["g"]], + [ + ":IMPLIES", + [ + ":OR", + ["g"], + [ + ":OR", + [":AND", [":IMPLIES", ["f"], [":NOT", ["c"]]], ["a"]], + [":OR", ["c"], ["f"]] + ] + ], + [ + ":NOT", + [ + ":XOR", + [":AND", [":XOR", ["f"], [":AND", ["c"], ["d"]]], ["e"]], + ["d"] + ] + ] + ] + ], + ["b"] + ], + [":OR", ["c"], ["c"]], + [":AND", ["f"], ["b"]], + [":IMPLIES", ["c"], [":NOT", [":NOT", ["e"]]]], + [ + ":OR", + ["h"], + [ + ":NOT", + [ + ":AND", + [ + ":IMPLIES", + [":XOR", [":OR", ["e"], ["d"]], ["c"]], + [ + ":IMPLIES", + [":AND", [":AND", [":NOT", [":OR", ["c"], ["g"]]], ["a"]], ["h"]], + [":IMPLIES", ["d"], ["d"]] + ] + ], + ["e"] + ] + ] + ], + [":OR", ["a"], [":XOR", [":IMPLIES", ["a"], ["b"]], ["b"]]], + [":AND", ["b"], ["c"]], + [":NOT", ["e"]], + [":NOT", ["b"]], + [ + ":NOT", + [ + ":AND", + [ + ":XOR", + [ + ":OR", + [ + ":IMPLIES", + [":IMPLIES", [":NOT", ["a"]], ["a"]], + [ + ":XOR", + [ + ":XOR", + [ + ":OR", + [":XOR", ["a"], ["a"]], + [ + ":OR", + [":IMPLIES", ["a"], [":OR", ["a"], [":AND", ["a"], ["a"]]]], + ["a"] + ] + ], + ["a"] + ], + [":NOT", ["a"]] + ] + ], + [":IMPLIES", ["a"], [":AND", ["a"], ["a"]]] + ], + [":NOT", [":IMPLIES", ["a"], ["a"]]] + ], + [":NOT", ["a"]] + ] + ], + [":NOT", [":XOR", [":NOT", [":NOT", ["b"]]], ["g"]]], + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + [ + ":XOR", + [":XOR", ["a"], [":IMPLIES", ["a"], ["a"]]], + [":NOT", [":OR", ["a"], [":AND", ["a"], ["a"]]]] + ], + ["a"] + ] + ], + [ + ":OR", + [ + ":IMPLIES", + [ + ":OR", + [ + ":NOT", + [ + ":OR", + [ + ":IMPLIES", + [ + ":AND", + [ + ":XOR", + [":NOT", ["c"]], + [ + ":XOR", + [ + ":NOT", + [ + ":OR", + [ + ":OR", + ["c"], + [ + ":IMPLIES", + [":NOT", ["a"]], + [ + ":AND", + ["b"], + [ + ":NOT", + [":AND", [":NOT", ["b"]], [":OR", ["c"], ["a"]]] + ] + ] + ] + ], + ["b"] + ] + ], + ["c"] + ] + ], + ["c"] + ], + ["c"] + ], + [":IMPLIES", ["b"], ["a"]] + ] + ], + ["a"] + ], + ["b"] + ], + [":NOT", ["c"]] + ], + [":NOT", ["a"]], + [":XOR", ["b"], ["d"]], + [ + ":OR", + [":OR", [":NOT", ["f"]], [":XOR", ["i"], ["a"]]], + [ + ":OR", + [":NOT", [":IMPLIES", ["e"], [":IMPLIES", ["c"], ["b"]]]], + [ + ":XOR", + [":AND", ["h"], [":IMPLIES", [":OR", ["h"], ["a"]], [":NOT", ["e"]]]], + [":NOT", [":XOR", ["g"], ["f"]]] + ] + ] + ], + [":XOR", ["a"], [":AND", ["a"], [":AND", [":NOT", ["a"]], ["a"]]]], + [":XOR", ["a"], ["b"]], + [":OR", [":XOR", ["d"], ["b"]], ["a"]], + [":IMPLIES", [":OR", ["c"], ["a"]], ["g"]], + [":NOT", [":OR", ["e"], [":NOT", ["c"]]]], + [":IMPLIES", ["d"], [":OR", [":XOR", ["b"], [":XOR", ["b"], ["c"]]], ["b"]]], + [ + ":OR", + [":NOT", ["e"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + ["c"], + [":IMPLIES", [":AND", [":OR", ["c"], ["b"]], ["b"]], ["a"]] + ] + ], + ["e"] + ] + ], + [":IMPLIES", ["b"], ["a"]], + [":OR", [":OR", ["a"], ["d"]], [":NOT", ["c"]]], + [":IMPLIES", [":NOT", ["f"]], [":OR", [":NOT", ["b"]], ["d"]]], + [":XOR", [":NOT", ["a"]], ["a"]], + [ + ":XOR", + ["c"], + [ + ":OR", + [ + ":NOT", + [ + ":IMPLIES", + ["a"], + [ + ":XOR", + ["a"], + [":AND", [":XOR", [":IMPLIES", ["c"], ["a"]], ["c"]], ["b"]] + ] + ] + ], + ["c"] + ] + ], + [ + ":NOT", + [ + ":AND", + ["b"], + [ + ":AND", + ["e"], + [ + ":OR", + ["c"], + [ + ":OR", + [":NOT", ["d"]], + [ + ":AND", + ["a"], + [ + ":NOT", + [":IMPLIES", ["f"], [":AND", [":OR", ["d"], ["b"]], ["b"]]] + ] + ] + ] + ] + ] + ] + ], + [":NOT", ["g"]], + [":OR", ["b"], ["h"]], + [ + ":XOR", + ["b"], + [ + ":OR", + ["d"], + [":OR", [":IMPLIES", [":NOT", [":IMPLIES", ["a"], ["d"]]], ["c"]], ["d"]] + ] + ], + [ + ":XOR", + [":OR", [":AND", ["b"], [":NOT", ["c"]]], ["b"]], + [ + ":OR", + [ + ":AND", + [":NOT", [":XOR", ["b"], ["a"]]], + [":AND", ["c"], [":NOT", ["c"]]] + ], + ["b"] + ] + ], + [ + ":IMPLIES", + ["h"], + [ + ":XOR", + [":IMPLIES", ["i"], ["d"]], + [ + ":IMPLIES", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":AND", + [ + ":OR", + [ + ":AND", + ["i"], + [ + ":AND", + [ + ":AND", + [":IMPLIES", ["i"], ["g"]], + [ + ":IMPLIES", + ["e"], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + [":XOR", ["a"], ["f"]], + [ + ":OR", + [":NOT", ["i"]], + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + [ + ":AND", + [ + ":AND", + ["d"], + [ + ":XOR", + [ + ":XOR", + [":AND", ["a"], ["g"]], + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [":XOR", ["f"], ["c"]], + [":AND", ["b"], ["a"]] + ], + ["d"] + ], + ["e"] + ] + ], + [":IMPLIES", ["b"], [":NOT", ["f"]]] + ] + ], + [":AND", ["c"], ["g"]] + ], + ["e"] + ] + ] + ] + ] + ], + ["i"] + ] + ] + ], + [ + ":XOR", + [ + ":XOR", + [":AND", ["i"], ["d"]], + [ + ":IMPLIES", + [":XOR", ["c"], [":NOT", ["a"]]], + [":NOT", [":OR", ["e"], ["h"]]] + ] + ], + ["c"] + ] + ] + ], + ["g"] + ], + ["i"] + ], + ["c"] + ], + [":AND", ["f"], ["a"]] + ], + [ + ":XOR", + ["h"], + [ + ":AND", + [":XOR", ["d"], ["b"]], + [":NOT", [":IMPLIES", ["e"], [":AND", ["d"], ["c"]]]] + ] + ] + ] + ] + ], + [":XOR", [":OR", [":NOT", ["f"]], ["c"]], [":NOT", [":NOT", ["b"]]]], + [":OR", [":XOR", ["d"], ["b"]], ["a"]], + [ + ":XOR", + ["b"], + [ + ":IMPLIES", + ["i"], + [ + ":XOR", + ["b"], + [ + ":AND", + ["a"], + [ + ":XOR", + [ + ":IMPLIES", + ["b"], + [ + ":NOT", + [":NOT", [":OR", ["e"], [":NOT", [":XOR", ["c"], ["f"]]]]] + ] + ], + ["c"] + ] + ] + ] + ] + ], + [":NOT", [":NOT", [":NOT", ["c"]]]], + [":NOT", ["e"]], + [":NOT", [":OR", ["d"], ["b"]]], + [":IMPLIES", ["a"], [":IMPLIES", ["c"], ["f"]]], + [ + ":OR", + [":XOR", ["a"], ["a"]], + [":XOR", ["a"], [":NOT", [":OR", ["a"], ["a"]]]] + ], + [ + ":IMPLIES", + ["c"], + [ + ":IMPLIES", + ["h"], + [":AND", [":IMPLIES", [":IMPLIES", ["h"], ["f"]], ["d"]], ["h"]] + ] + ], + [":IMPLIES", [":OR", ["c"], ["a"]], [":NOT", ["b"]]], + [":XOR", [":NOT", ["a"]], ["b"]], + [ + ":NOT", + [":OR", ["a"], [":NOT", [":XOR", [":IMPLIES", ["c"], ["a"]], ["c"]]]] + ], + [":OR", ["d"], ["g"]], + [":AND", ["b"], ["a"]], + [ + ":OR", + ["d"], + [":NOT", [":XOR", [":IMPLIES", ["b"], [":NOT", ["c"]]], ["d"]]] + ], + [ + ":AND", + [ + ":NOT", + [ + ":AND", + [ + ":AND", + [ + ":NOT", + [ + ":AND", + [":AND", ["c"], [":OR", ["a"], [":OR", [":NOT", ["a"]], ["c"]]]], + ["a"] + ] + ], + ["c"] + ], + [ + ":AND", + [ + ":IMPLIES", + [ + ":IMPLIES", + [":NOT", [":AND", ["b"], [":AND", [":OR", ["a"], ["a"]], ["c"]]]], + [":OR", [":XOR", ["a"], ["b"]], ["b"]] + ], + [ + ":XOR", + [ + ":IMPLIES", + [":IMPLIES", [":AND", ["b"], ["a"]], [":AND", ["c"], ["c"]]], + ["c"] + ], + ["c"] + ] + ], + [":XOR", ["b"], ["c"]] + ] + ] + ], + [":IMPLIES", ["a"], [":NOT", ["c"]]] + ], + [":IMPLIES", ["a"], ["a"]], + [ + ":XOR", + [":XOR", [":NOT", [":NOT", ["g"]]], [":IMPLIES", ["i"], ["e"]]], + [":IMPLIES", ["e"], ["d"]] + ], + [":IMPLIES", [":XOR", ["d"], [":OR", ["d"], ["d"]]], ["f"]], + [":AND", ["a"], ["a"]], + [ + ":AND", + ["b"], + [ + ":AND", + [ + ":OR", + [ + ":NOT", + [ + ":IMPLIES", + ["b"], + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + [ + ":OR", + [ + ":OR", + ["c"], + [ + ":XOR", + ["d"], + [ + ":OR", + ["d"], + [ + ":NOT", + [ + ":XOR", + ["a"], + [ + ":OR", + ["b"], + [ + ":XOR", + [ + ":AND", + ["a"], + [ + ":XOR", + [":OR", ["d"], [":OR", ["a"], ["a"]]], + [ + ":NOT", + [ + ":XOR", + [ + ":OR", + [":NOT", ["d"]], + [ + ":AND", + ["d"], + [ + ":NOT", + [ + ":NOT", + [ + ":AND", + ["d"], + [ + ":XOR", + [":XOR", ["a"], ["a"]], + ["c"] + ] + ] + ] + ] + ] + ], + [ + ":NOT", + [ + ":AND", + [":NOT", [":AND", ["a"], ["c"]]], + ["a"] + ] + ] + ] + ] + ] + ], + [":OR", [":XOR", ["c"], ["a"]], ["c"]] + ] + ] + ] + ] + ] + ] + ], + [ + ":OR", + [ + ":NOT", + [ + ":NOT", + [ + ":OR", + [ + ":AND", + [":IMPLIES", ["a"], ["b"]], + [":NOT", ["a"]] + ], + ["c"] + ] + ] + ], + ["d"] + ] + ], + [":OR", ["c"], ["b"]] + ], + ["d"] + ], + [ + ":NOT", + [ + ":XOR", + [ + ":IMPLIES", + [":NOT", [":IMPLIES", ["c"], ["b"]]], + [":XOR", [":NOT", [":XOR", ["d"], ["a"]]], ["a"]] + ], + ["d"] + ] + ] + ] + ] + ], + ["d"] + ], + [ + ":IMPLIES", + [ + ":AND", + [ + ":NOT", + [ + ":AND", + [":OR", ["c"], ["d"]], + [":AND", [":AND", ["a"], ["d"]], ["d"]] + ] + ], + ["a"] + ], + ["b"] + ] + ] + ], + [":OR", [":XOR", ["a"], ["b"]], [":AND", ["b"], [":OR", ["b"], ["b"]]]], + [ + ":OR", + [":OR", [":NOT", ["b"]], ["b"]], + [ + ":OR", + [ + ":OR", + ["c"], + [ + ":AND", + ["e"], + [ + ":XOR", + [ + ":XOR", + [ + ":IMPLIES", + [":OR", [":NOT", ["c"]], ["d"]], + [ + ":IMPLIES", + [":AND", ["d"], [":AND", ["d"], [":OR", ["b"], ["e"]]]], + ["a"] + ] + ], + ["d"] + ], + [":IMPLIES", ["d"], [":IMPLIES", ["b"], ["c"]]] + ] + ] + ], + [":AND", [":NOT", ["d"]], ["e"]] + ] + ], + [ + ":OR", + [ + ":XOR", + [ + ":OR", + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + [ + ":OR", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":OR", + ["e"], + [ + ":XOR", + [ + ":IMPLIES", + [ + ":XOR", + [ + ":AND", + [":NOT", [":NOT", [":IMPLIES", ["e"], ["f"]]]], + [ + ":AND", + ["e"], + [ + ":OR", + [":AND", ["a"], [":AND", ["i"], ["h"]]], + ["c"] + ] + ] + ], + ["b"] + ], + ["a"] + ], + [":IMPLIES", ["b"], ["g"]] + ] + ], + ["j"] + ], + [ + ":AND", + [ + ":OR", + [ + ":AND", + [ + ":XOR", + [ + ":AND", + [":NOT", ["a"]], + [":IMPLIES", [":NOT", ["b"]], ["h"]] + ], + [ + ":OR", + [ + ":OR", + [ + ":AND", + [ + ":XOR", + [ + ":XOR", + [":NOT", [":NOT", ["b"]]], + [ + ":AND", + [ + ":XOR", + [":OR", ["j"], [":XOR", ["c"], ["g"]]], + ["d"] + ], + ["g"] + ] + ], + [ + ":IMPLIES", + [ + ":XOR", + ["i"], + [ + ":AND", + [":AND", ["a"], [":OR", ["d"], ["b"]]], + ["c"] + ] + ], + ["e"] + ] + ], + ["h"] + ], + ["a"] + ], + ["j"] + ] + ], + ["c"] + ], + [ + ":XOR", + [ + ":XOR", + [ + ":OR", + [ + ":AND", + [ + ":OR", + ["b"], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":OR", + ["h"], + [":OR", [":NOT", ["e"]], ["j"]] + ] + ], + [":XOR", ["d"], ["a"]] + ] + ], + [":OR", [":NOT", ["a"]], ["e"]] + ], + ["h"] + ], + [":AND", ["j"], ["e"]] + ], + [":XOR", [":XOR", [":XOR", ["e"], ["e"]], ["a"]], ["f"]] + ] + ], + ["g"] + ] + ], + ["j"] + ], + [":OR", ["b"], ["g"]] + ] + ], + [":IMPLIES", ["b"], ["a"]] + ], + [":NOT", ["d"]] + ], + ["i"] + ], + [ + ":OR", + ["c"], + [ + ":NOT", + [ + ":IMPLIES", + [":OR", [":NOT", ["b"]], [":AND", ["e"], ["f"]]], + [":OR", [":AND", ["h"], ["j"]], ["g"]] + ] + ] + ] + ], + [ + ":OR", + [ + ":XOR", + [":AND", ["a"], ["a"]], + [ + ":NOT", + [ + ":OR", + [":AND", [":NOT", ["a"]], [":OR", ["a"], [":OR", ["a"], ["a"]]]], + ["a"] + ] + ] + ], + [ + ":AND", + ["a"], + [ + ":XOR", + [ + ":OR", + [ + ":XOR", + [":OR", [":IMPLIES", ["a"], ["a"]], ["a"]], + [ + ":NOT", + [ + ":XOR", + ["a"], + [ + ":IMPLIES", + [":NOT", ["a"]], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + [ + ":AND", + [ + ":IMPLIES", + [ + ":XOR", + [":NOT", ["a"]], + [ + ":IMPLIES", + [ + ":IMPLIES", + ["a"], + [ + ":IMPLIES", + ["a"], + [ + ":OR", + ["a"], + [ + ":NOT", + [":OR", [":NOT", [":NOT", ["a"]]], ["a"]] + ] + ] + ] + ], + ["a"] + ] + ], + ["a"] + ], + [":AND", ["a"], ["a"]] + ], + [":IMPLIES", [":XOR", ["a"], ["a"]], ["a"]] + ] + ] + ] + ] + ] + ], + [ + ":AND", + [ + ":IMPLIES", + [ + ":OR", + [":XOR", ["a"], [":XOR", [":NOT", ["a"]], ["a"]]], + [":NOT", ["a"]] + ], + ["a"] + ], + ["a"] + ] + ], + [ + ":AND", + [ + ":XOR", + [ + ":IMPLIES", + [ + ":OR", + [ + ":OR", + ["a"], + [":OR", [":NOT", ["a"]], [":NOT", [":IMPLIES", ["a"], ["a"]]]] + ], + [":OR", ["a"], ["a"]] + ], + [":IMPLIES", ["a"], ["a"]] + ], + [ + ":NOT", + [ + ":OR", + [ + ":OR", + [":IMPLIES", ["a"], ["a"]], + [":IMPLIES", ["a"], [":XOR", ["a"], ["a"]]] + ], + [":OR", [":NOT", ["a"]], ["a"]] + ] + ] + ], + ["a"] + ] + ] + ] + ], + [":AND", ["c"], ["b"]], + [ + ":OR", + [":NOT", [":AND", ["e"], [":IMPLIES", ["f"], [":NOT", ["e"]]]]], + [":NOT", [":NOT", [":OR", [":XOR", ["c"], ["g"]], [":AND", ["g"], ["e"]]]]] + ], + [":IMPLIES", ["b"], [":OR", [":NOT", [":OR", ["c"], ["c"]]], ["c"]]], + [":NOT", ["j"]], + [":AND", ["a"], ["a"]], + [":NOT", [":NOT", [":NOT", [":AND", ["b"], ["a"]]]]], + [ + ":AND", + ["a"], + [ + ":AND", + ["a"], + [ + ":IMPLIES", + [":OR", ["g"], [":OR", ["g"], [":NOT", [":IMPLIES", ["a"], ["g"]]]]], + ["g"] + ] + ] + ], + [":AND", ["d"], ["b"]], + [ + ":IMPLIES", + [ + ":NOT", + [ + ":IMPLIES", + [":AND", [":IMPLIES", [":AND", ["b"], ["c"]], ["c"]], ["a"]], + ["f"] + ] + ], + [ + ":OR", + [ + ":OR", + [ + ":AND", + [":AND", [":AND", ["b"], ["a"]], ["b"]], + [":XOR", [":OR", ["d"], ["f"]], ["d"]] + ], + [":NOT", [":OR", ["g"], ["a"]]] + ], + ["e"] + ] + ], + [ + ":AND", + ["f"], + [ + ":XOR", + [":IMPLIES", ["d"], [":NOT", ["b"]]], + [":IMPLIES", [":XOR", [":IMPLIES", ["c"], ["c"]], ["f"]], ["b"]] + ] + ], + [":XOR", [":IMPLIES", [":NOT", ["f"]], ["d"]], ["d"]], + [":AND", ["e"], [":OR", ["a"], [":IMPLIES", ["g"], ["b"]]]], + [":AND", ["b"], [":AND", [":AND", ["b"], ["b"]], ["a"]]], + [ + ":AND", + [":NOT", ["d"]], + [":AND", [":IMPLIES", [":OR", ["f"], ["d"]], ["f"]], ["e"]] + ], + [":XOR", ["i"], [":AND", ["a"], [":OR", ["a"], ["j"]]]], + [ + ":XOR", + [":IMPLIES", ["a"], [":NOT", ["g"]]], + [ + ":NOT", + [ + ":AND", + [":AND", [":AND", [":OR", ["a"], ["a"]], ["a"]], ["f"]], + [ + ":XOR", + [":IMPLIES", ["f"], [":IMPLIES", ["c"], [":NOT", ["f"]]]], + [":NOT", [":IMPLIES", [":NOT", ["c"]], ["g"]]] + ] + ] + ] + ] +] diff --git a/tools/ruby-gems/udb/test/run.rb b/tools/ruby-gems/udb/test/coverage.rb similarity index 54% rename from tools/ruby-gems/udb/test/run.rb rename to tools/ruby-gems/udb/test/coverage.rb index 522c50bcc0..0b1acb482f 100644 --- a/tools/ruby-gems/udb/test/run.rb +++ b/tools/ruby-gems/udb/test/coverage.rb @@ -1,17 +1,16 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear +# typed: false # frozen_string_literal: true require "simplecov" +require "simplecov-cobertura" -SimpleCov.start do - enable_coverage :branch -end - -puts "[SimpleCov] Coverage started." - -require "minitest/autorun" +UDB_ROOT = (Pathname.new(__dir__) / "..").realpath +require_relative "test_logic" +require_relative "test_conditions" require_relative "test_cli" require_relative "test_yaml_loader" +require_relative "test_cfg_arch" diff --git a/tools/ruby-gems/udb/test/mock_cfgs/_.yaml b/tools/ruby-gems/udb/test/mock_cfgs/_.yaml new file mode 100644 index 0000000000..6400ee61e4 --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_cfgs/_.yaml @@ -0,0 +1,11 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../schemas/config_schema.json +--- +$schema: config_schema.json# +kind: architecture configuration +type: unconfigured +name: _ +description: | + A completely unconfigured RVI-standard architecture; not even MXLEN is known. diff --git a/tools/ruby-gems/udb/test/mock_cfgs/little_is_better.yaml b/tools/ruby-gems/udb/test/mock_cfgs/little_is_better.yaml new file mode 100644 index 0000000000..6495e6e101 --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_cfgs/little_is_better.yaml @@ -0,0 +1,16 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../schemas/config_schema.json +--- +$schema: config_schema.json# +kind: architecture configuration +type: partially configured +name: little_is_better +description: | + Smaller is better +mandatory_extensions: + - name: A +params: + MXLEN: 32 + LITTLE_IS_BETTER: true diff --git a/tools/ruby-gems/udb/test/mock_cfgs/little_is_not_better.yaml b/tools/ruby-gems/udb/test/mock_cfgs/little_is_not_better.yaml new file mode 100644 index 0000000000..379eac8e5d --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_cfgs/little_is_not_better.yaml @@ -0,0 +1,16 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../schemas/config_schema.json +--- +$schema: config_schema.json# +kind: architecture configuration +type: partially configured +name: little_is_not_better +description: | + Bigger is better +mandatory_extensions: + - name: A +params: + MXLEN: 32 + LITTLE_IS_BETTER: false diff --git a/tools/ruby-gems/udb/test/mock_spec/isa/exception_code/Exception1.yaml b/tools/ruby-gems/udb/test/mock_spec/isa/exception_code/Exception1.yaml new file mode 100644 index 0000000000..8927eb3911 --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_spec/isa/exception_code/Exception1.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: exception_code_schema.json# +kind: exception_code +name: Exception1 +num: 1 +display_name: An exception +definedBy: + extension: + name: A diff --git a/tools/ruby-gems/udb/test/mock_spec/isa/ext/A.yaml b/tools/ruby-gems/udb/test/mock_spec/isa/ext/A.yaml new file mode 100644 index 0000000000..e5726c47c0 --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_spec/isa/ext/A.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/ext_schema.json + +$schema: "ext_schema.json#" +kind: extension +name: A +type: unprivileged +long_name: Mock extension A +versions: + - version: "1.0" + state: ratified + ratification_date: 2019-06 + - version: "2.0" + state: ratified + ratification_date: 2019-06 + changes: + - Change 1 +description: | + Something descriptive diff --git a/tools/ruby-gems/udb/test/mock_spec/isa/ext/B.yaml b/tools/ruby-gems/udb/test/mock_spec/isa/ext/B.yaml new file mode 100644 index 0000000000..d8d8e7c1ae --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_spec/isa/ext/B.yaml @@ -0,0 +1,20 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/ext_schema.json + +$schema: "ext_schema.json#" +kind: extension +name: B +type: unprivileged +long_name: Mock extension B +versions: + - version: "2.1.0" + state: ratified + ratification_date: 2019-06 + requirements: + extension: + name: A + version: = 1.0.0 +description: | + Something descriptive diff --git a/tools/ruby-gems/udb/test/mock_spec/isa/ext/C.yaml b/tools/ruby-gems/udb/test/mock_spec/isa/ext/C.yaml new file mode 100644 index 0000000000..399fe4354a --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_spec/isa/ext/C.yaml @@ -0,0 +1,21 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/ext_schema.json + +$schema: "ext_schema.json#" +kind: extension +name: C +type: unprivileged +long_name: Mock extension C +versions: + - version: "1.0" + state: ratified + ratification_date: 2019-06 + - version: "2.0" + state: ratified + ratification_date: 2019-06 + changes: + - Change 1 +description: | + Something descriptive diff --git a/tools/ruby-gems/udb/test/mock_spec/isa/ext/D.yaml b/tools/ruby-gems/udb/test/mock_spec/isa/ext/D.yaml new file mode 100644 index 0000000000..1427f8c394 --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_spec/isa/ext/D.yaml @@ -0,0 +1,32 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/ext_schema.json + +$schema: "ext_schema.json#" +kind: extension +name: D +type: unprivileged +long_name: Mock extension D +versions: + - version: "1.0" + state: ratified + ratification_date: 2019-06 + - version: "2.0" + state: ratified + ratification_date: 2019-06 + changes: + - Change 1 +requirements: + oneOf: + - extension: + allOf: + - name: A + - name: C + - not: + extension: + name: C + + +description: | + Something descriptive diff --git a/spec/std/isa/inst/mock.yaml b/tools/ruby-gems/udb/test/mock_spec/isa/inst/mock.yaml similarity index 94% rename from spec/std/isa/inst/mock.yaml rename to tools/ruby-gems/udb/test/mock_spec/isa/inst/mock.yaml index be30a92da3..5e9f3e5328 100644 --- a/spec/std/isa/inst/mock.yaml +++ b/tools/ruby-gems/udb/test/mock_spec/isa/inst/mock.yaml @@ -1,7 +1,7 @@ # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear -# yaml-language-server: $schema=../../../schemas/inst_schema.json +# yaml-language-server: $schema=../../../../schemas/inst_schema.json $schema: "inst_schema.json#" kind: instruction @@ -14,7 +14,9 @@ description: | [NOTE] Computing PI to an infinite number of decicial places is impossible, but hey, why not? -definedBy: Xmock +definedBy: + extension: + name: A assembly: xd, xs1, xs2 encoding: # Use custom-0 opcode to avoid conflicts with RISC-V defined instructions. @@ -79,7 +81,7 @@ cert_normative_rules: and `misa.M` is 0. doc_links: - manual:csr:misa:disabling-extension - # - idl:code:inst:mock:illegal-inst-exc-misa-disabled + # - idl:code:inst:mock:illegal-inst-exc-misa-disabled cert_test_procedures: - id: inst.mock.enc_and_basic diff --git a/tools/ruby-gems/udb/test/mock_spec/isa/interrupt_code/Interrupt1.yaml b/tools/ruby-gems/udb/test/mock_spec/isa/interrupt_code/Interrupt1.yaml new file mode 100644 index 0000000000..3ce9527143 --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_spec/isa/interrupt_code/Interrupt1.yaml @@ -0,0 +1,13 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../schemas/interrupt_code_schema.json + +$schema: interrupt_code_schema.json# +kind: interrupt_code +name: Interrupt1 +num: 1 +display_name: An interrupt +definedBy: + extension: + name: A diff --git a/tools/ruby-gems/udb/test/mock_spec/isa/isa/globals.isa b/tools/ruby-gems/udb/test/mock_spec/isa/isa/globals.isa new file mode 100644 index 0000000000..866d3bc4d4 --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_spec/isa/isa/globals.isa @@ -0,0 +1,4 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +%version: 1.0 diff --git a/tools/ruby-gems/udb/test/mock_spec/isa/param/HPM_COUNTER_EN.yaml b/tools/ruby-gems/udb/test/mock_spec/isa/param/HPM_COUNTER_EN.yaml new file mode 100644 index 0000000000..7b6e9f0d3e --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_spec/isa/param/HPM_COUNTER_EN.yaml @@ -0,0 +1,23 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: HPM_COUNTER_EN +long_name: Blah +definedBy: + extension: + name: A +description: Obviously +schema: + type: array + items: + - const: false + - const: false + - const: false + additionalItems: + type: boolean + minItems: 32 + maxItems: 32 diff --git a/tools/ruby-gems/udb/test/mock_spec/isa/param/LITTLE_IS_BETTER.yaml b/tools/ruby-gems/udb/test/mock_spec/isa/param/LITTLE_IS_BETTER.yaml new file mode 100644 index 0000000000..427d6e22f8 --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_spec/isa/param/LITTLE_IS_BETTER.yaml @@ -0,0 +1,15 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: LITTLE_IS_BETTER +long_name: XLEN in machine mode +definedBy: + extension: + name: A +description: Obviously +schema: + type: boolean diff --git a/tools/ruby-gems/udb/test/mock_spec/isa/param/MXLEN.yaml b/tools/ruby-gems/udb/test/mock_spec/isa/param/MXLEN.yaml new file mode 100644 index 0000000000..c108d4aa96 --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_spec/isa/param/MXLEN.yaml @@ -0,0 +1,16 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: MXLEN +long_name: XLEN in machine mode +definedBy: + extension: + name: A +description: XLEN in machine mode, specified in bits +schema: + type: integer + enum: [32, 64] diff --git a/tools/ruby-gems/udb/test/mock_spec/isa/param/SCOUNTENABLE_EN.yaml b/tools/ruby-gems/udb/test/mock_spec/isa/param/SCOUNTENABLE_EN.yaml new file mode 100644 index 0000000000..5f205dad50 --- /dev/null +++ b/tools/ruby-gems/udb/test/mock_spec/isa/param/SCOUNTENABLE_EN.yaml @@ -0,0 +1,26 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# yaml-language-server: $schema=../../../../schemas/param_schema.json + +$schema: param_schema.json# +kind: parameter +name: SCOUNTENABLE_EN +long_name: Blah +definedBy: + extension: + name: A +description: Obviously +schema: + type: array + items: + type: boolean + maxItems: 32 + minItems: 32 + +requirements: + idl(): | + for (U32 i = 3; i < 32; i++) { + !HPM_COUNTER_EN[i] -> !SCOUNTENABLE_EN[i]; + } + reason: When mhpmcounter[i] does not exist, it cannot be enabled. diff --git a/tools/ruby-gems/udb/test/test_cfg.rb b/tools/ruby-gems/udb/test/test_cfg.rb new file mode 100644 index 0000000000..247cdc7530 --- /dev/null +++ b/tools/ruby-gems/udb/test/test_cfg.rb @@ -0,0 +1,42 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: false +# frozen_string_literal: true + +require_relative "test_helper" + +require "fileutils" +require "tmpdir" +require "yaml" + +require "udb/logic" +require "udb/cfg_arch" +require "udb/resolver" + +class TestCfg < Minitest::Test + include Udb + + def setup + @gen_dir = Dir.mktmpdir + @resolver = Udb::Resolver.new( + Udb.repo_root, + gen_path_override: @gen_path + ) + end + + def teardown + FileUtils.rm_rf @gen_dir + end + + # make sure all the configs in the repo are valid + Dir[Udb.repo_root / "cfgs" / "*.yaml"].each do |cfg_path| + define_method "test_cfg_#{File.basename(cfg_path, ".yaml")}_valid" do + cfg_arch = @resolver.cfg_arch_for(Pathname.new cfg_path) + assert cfg_arch.valid?, <<~MSG + Config '#{File.basename(cfg_path, ".yaml")}' is not valid. + To see why, run `./bin/udb validate cfg #{cfg_path}` + MSG + end + end +end diff --git a/tools/ruby-gems/udb/test/test_cfg_arch.rb b/tools/ruby-gems/udb/test/test_cfg_arch.rb new file mode 100644 index 0000000000..7f9ed5c49e --- /dev/null +++ b/tools/ruby-gems/udb/test/test_cfg_arch.rb @@ -0,0 +1,298 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: false +# frozen_string_literal: true + +require_relative "test_helper" + +require "fileutils" +require "tmpdir" +require "yaml" + +require "udb/logic" +require "udb/cfg_arch" +require "udb/resolver" + +class TestCfgArch < Minitest::Test + include Udb + + def setup + @gen_dir = Dir.mktmpdir + @resolver = Udb::Resolver.new( + Udb.repo_root, + gen_path_override: @gen_path + ) + end + + def teardown + FileUtils.rm_rf @gen_dir + end + + def test_invalid_partial_config + cfg = <<~CFG + $schema: config_schema.json# + kind: architecture configuration + type: partially configured + name: rv32 + description: A generic RV32 system; only MXLEN is known + params: + MXLEN: 31 + NOT_A: false + CACHE_BLOCK_SIZE: 64 + + mandatory_extensions: + - name: "I" + version: ">= 0" + - name: "Sm" + version: ">= 0" + - name: Znotanextension + version: ">= 0" + - name: D + version: "= 50" + - name: Zcd + version: ">= 0" + - name: Zcmp + version: ">= 0" + CFG + + Tempfile.create do |f| + f.write cfg + f.flush + + cfg_arch = @resolver.cfg_arch_for(Pathname.new f.path) + result = cfg_arch.valid? + + refute result.valid + assert_includes result.reasons, "Extension requirement can never be met (no match in the database): Znotanextension " + assert_includes result.reasons, "Extension requirement can never be met (no match in the database): D = 50" + assert_includes result.reasons, "Parameter value violates the schema: 'MXLEN' = '31'" + assert_includes result.reasons, "Parameter has no definition: 'NOT_A'" + assert_includes result.reasons, "Parameter is not defined by this config: 'CACHE_BLOCK_SIZE'. Needs (Zicbom>=0 || Zicbop>=0 || Zicboz>=0)" + assert_includes result.reasons, "Mandatory extension requirements conflict: This is not satisfiable: (Zcd=1.0.0 && Zcmp=1.0.0 && (!Zcmp=1.0.0 || !Zcd=1.0.0))" + assert_equal 6, result.reasons.size, <<~MSG + There are unexpected reasons in: + + #{result.reasons.join("\n")} + MSG + end + end + + def test_invalid_full_config + cfg = <<~CFG + $schema: config_schema.json# + kind: architecture configuration + type: fully configured + name: rv32 + description: A generic RV32 system + params: + + # bad params + MXLEN: 31 + NOT_A: false + CACHE_BLOCK_SIZE: 64 + + # good params + TRAP_ON_EBREAK: true + TRAP_ON_ECALL_FROM_M: true + TRAP_ON_ILLEGAL_WLRL: true + TRAP_ON_RESERVED_INSTRUCTION: true + TRAP_ON_UNIMPLEMENTED_CSR: true + TRAP_ON_UNIMPLEMENTED_INSTRUCTION: true + + implemented_extensions: + - [I, "2.1.0"] + - [Sm, "1.13.0"] + - [C, "2.0.0"] + - [Zca, "1.0.0"] + + # should fail; not a real extension + - [Znotanextension, "1.0.0"] + + # should cause validation error: Not a known version of F + - [F, "0.1"] + + # should cause validation error: Zcd requires D + - [Zcd, "1.0.0"] + + # should cause validation error: Zcmp condlicts with Zcd + - [Zcmp, "1.0.0"] + CFG + + Tempfile.create do |f| + f.write cfg + f.flush + + cfg_arch = @resolver.cfg_arch_for(Pathname.new f.path) + result = cfg_arch.valid? + + refute result.valid + assert_includes result.reasons, "Parameter value violates the schema: 'MXLEN' = '31'" + assert_includes result.reasons, "Parameter has no definition: 'NOT_A'" + assert_includes result.reasons, "Parameter is not defined by this config: 'CACHE_BLOCK_SIZE'. Needs: (Zicbom>=0 || Zicbop>=0 || Zicboz>=0)" + assert_includes result.reasons, "Extension requirement is unmet: Zcmp@1.0.0. Needs: (Zca>=0 && !Zcd>=0)" + assert_includes result.reasons, "Parameter is required but missing: 'M_MODE_ENDIANNESS'" + assert_includes result.reasons, "Parameter is required but missing: 'PHYS_ADDR_WIDTH'" + assert_includes result.reasons, "Extension version has no definition: F@0.1.0" + assert_includes result.reasons, "Extension version has no definition: Znotanextension@1.0.0" + # ... and more, which are not being explictly checked ... + end + end + + def test_cfg_arch_properties + cfg = <<~CFG + $schema: config_schema.json# + kind: architecture configuration + type: partially configured + name: rv32 + description: A generic RV32 system; only MXLEN is known + params: + MXLEN: 32 + mandatory_extensions: + - name: "I" + version: ">= 0" + - name: "Sm" + version: ">= 0" + CFG + + Tempfile.create(%w/cfg .yaml/) do |f| + f.write cfg + f.flush + + cfg_arch = @resolver.cfg_arch_for(Pathname.new f.path) + + cfg_arch.type_check(show_progress: true) + + assert_equal cfg_arch.config.param_values.size, cfg_arch.params_with_value.size + + total_params = cfg_arch.params_with_value.size + cfg_arch.params_without_value.size + cfg_arch.out_of_scope_params.size + assert_equal cfg_arch.params.size, total_params + + if cfg_arch.fully_configured? + assert_equal cfg_arch.config.implemented_extensions.size, cfg_arch.explicitly_implemented_extensions.size + assert cfg_arch.config.implemented_extensions.size <= cfg_arch.implemented_extensions.size + assert cfg_arch.config.implemented_extensions.size <= cfg_arch.implemented_extensions.size + elsif cfg_arch.partially_configured? + mandatory = cfg_arch.mandatory_extension_reqs + mandatory.each do |ext_req| + assert ext_req.to_condition.could_be_satisfied_by_cfg_arch?(cfg_arch) + end + end + + possible = cfg_arch.possible_extension_versions + + possible.each do |ext_ver| + assert ext_ver.to_condition.could_be_satisfied_by_cfg_arch?(cfg_arch) + end + + cfg_arch.not_prohibited_extensions.each do |ext| + assert \ + ext.versions.any? do |ext_ver| + ext_ver.to_condition.could_be_satisfied_by_cfg_arch?(cfg_arch) + end + end + + cfg_arch.prohibited_extension_versions.each do |ext_ver| + refute ext_ver.to_condition.could_be_satisfied_by_cfg_arch?(cfg_arch) + assert cfg_arch.prohibited_ext?(ext_ver) + assert cfg_arch.prohibited_ext?(ext_ver.name) + assert cfg_arch.prohibited_ext?(ext_ver.name.to_s) + end + end + end + + def test_transitive + cfg_arch = @resolver.cfg_arch_for("rv64") + + # make sure that RV32-only extensions are not possible + refute_includes cfg_arch.possible_extension_versions.map(&:name), "Zilsd" + refute_includes cfg_arch.possible_extensions.map(&:name), "Zilsd" + refute_includes cfg_arch.possible_extensions.map(&:name), "Zclsd" + + end + + def test_transitive_full + + cfg_arch = @resolver.cfg_arch_for("rv64") + + assert_equal ExtensionVersion.new("C", "2.0.0", cfg_arch), ExtensionVersion.new("C", "2.0.0", cfg_arch) + assert ExtensionVersion.new("C", "2.0.0", cfg_arch).eql?(ExtensionVersion.new("C", "2.0.0", cfg_arch)) + assert_equal ExtensionVersion.new("C", "2.0.0", cfg_arch).hash, ExtensionVersion.new("C", "2.0.0", cfg_arch).hash + + assert_equal \ + [ + ExtensionVersion.new("C", "2.0.0", cfg_arch), + ExtensionVersion.new("Zca", "1.0.0", cfg_arch), + ], + cfg_arch.expand_implemented_extension_list( + [ + ExtensionVersion.new("C", "2.0.0", cfg_arch) + ] + ).sort + + assert_equal \ + [ + ExtensionVersion.new("C", "2.0.0", cfg_arch), + ExtensionVersion.new("F", "2.2.0", cfg_arch), + ExtensionVersion.new("Zca", "1.0.0", cfg_arch), + ExtensionVersion.new("Zcf", "1.0.0", cfg_arch), + ExtensionVersion.new("Zicsr", "2.0.0", cfg_arch) + ], + [ + ExtensionVersion.new("C", "2.0.0", cfg_arch), + ExtensionVersion.new("F", "2.2.0", cfg_arch), + ExtensionVersion.new("Zca", "1.0.0", cfg_arch), + ExtensionVersion.new("Zcf", "1.0.0", cfg_arch), + ExtensionVersion.new("Zicsr", "2.0.0", cfg_arch) + ].uniq + + assert_equal \ + [ + ExtensionVersion.new("C", "2.0.0", cfg_arch), + ExtensionVersion.new("F", "2.2.0", cfg_arch), + ExtensionVersion.new("Zca", "1.0.0", cfg_arch), + ExtensionVersion.new("Zcf", "1.0.0", cfg_arch), + ExtensionVersion.new("Zicsr", "2.0.0", cfg_arch) + ], + cfg_arch.expand_implemented_extension_list( + [ + ExtensionVersion.new("C", "2.0.0", cfg_arch), + ExtensionVersion.new("F", "2.2.0", cfg_arch) + ] + ).sort + + assert_equal \ + [ + ExtensionVersion.new("C", "2.0.0", cfg_arch), + ExtensionVersion.new("D", "2.2.0", cfg_arch), + ExtensionVersion.new("F", "2.2.0", cfg_arch), + ExtensionVersion.new("Zca", "1.0.0", cfg_arch), + ExtensionVersion.new("Zcd", "1.0.0", cfg_arch), + ExtensionVersion.new("Zcf", "1.0.0", cfg_arch), + ExtensionVersion.new("Zicsr", "2.0.0", cfg_arch) + ], + cfg_arch.expand_implemented_extension_list( + [ + ExtensionVersion.new("C", "2.0.0", cfg_arch), + ExtensionVersion.new("D", "2.2.0", cfg_arch) + ] + ).sort + + assert_equal \ + [ + ExtensionVersion.new("D", "2.2.0", cfg_arch), + ExtensionVersion.new("F", "2.2.0", cfg_arch), + ExtensionVersion.new("Zca", "1.0.0", cfg_arch), + ExtensionVersion.new("Zcd", "1.0.0", cfg_arch), + ExtensionVersion.new("Zcf", "1.0.0", cfg_arch), + ExtensionVersion.new("Zicsr", "2.0.0", cfg_arch) + ], + cfg_arch.expand_implemented_extension_list( + [ + ExtensionVersion.new("Zca", "1.0.0", cfg_arch), + ExtensionVersion.new("Zcf", "1.0.0", cfg_arch), + ExtensionVersion.new("Zcd", "1.0.0", cfg_arch) + ] + ).sort + end +end diff --git a/tools/ruby-gems/udb/test/test_cli.rb b/tools/ruby-gems/udb/test/test_cli.rb index 4621958915..d8aa60134f 100644 --- a/tools/ruby-gems/udb/test/test_cli.rb +++ b/tools/ruby-gems/udb/test/test_cli.rb @@ -4,7 +4,7 @@ # frozen_string_literal: true -require "minitest/autorun" +require_relative "test_helper" require "udb/cli" class TestCli < Minitest::Test diff --git a/tools/ruby-gems/udb/test/test_conditions.rb b/tools/ruby-gems/udb/test/test_conditions.rb new file mode 100644 index 0000000000..88e354d8b1 --- /dev/null +++ b/tools/ruby-gems/udb/test/test_conditions.rb @@ -0,0 +1,479 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: false +# frozen_string_literal: true + +require_relative "test_helper" + +require "fileutils" +require "tmpdir" +require "yaml" + +require "udb/condition" +require "udb/resolver" + +begin + $db_resolver = Udb::Resolver.new(Udb.repo_root) + $db_cfg_arch = $db_resolver.cfg_arch_for("_") +rescue RuntimeError + $db_cfg_arch = nil +end + +gen_path = Pathname.new(Dir.mktmpdir) +udb_gem_root = (Pathname.new(__dir__) / "..").realpath +$mock_resolver = Udb::Resolver.new( + schemas_path_override: udb_gem_root / "schemas", + cfgs_path_override: udb_gem_root / "test" / "mock_cfgs", + gen_path_override: gen_path, + std_path_override: udb_gem_root / "test" / "mock_spec" / "isa", + quiet: false +) +$mock_cfg_arch = $mock_resolver.cfg_arch_for("_") + +# clean up the temp dir when we are done +Minitest.after_run { FileUtils.rm_rf(gen_path) } + +class TestConditions < Minitest::Test + include Udb + + # def setup + + # capture_io do + # $mock_cfg_arch = $mock_resolver.cfg_arch_for("_") + # end + # end + + # def teardown + # FileUtils.rm_rf @gen_path + # end + + def test_single_extension_req + cond_str = <<~COND + extension: + name: A + COND + + cond_yaml = YAML.load(cond_str) + + cond = Condition.new(cond_yaml, $mock_cfg_arch) + + assert_equal SatisfiedResult::Maybe, cond.satisfied_by_cfg_arch?($mock_cfg_arch) + assert cond.could_be_satisfied_by_cfg_arch?($mock_cfg_arch) + refute_empty cond + + tree = cond.to_logic_tree(expand: true) + assert_equal 2, tree.terms.size # A has two version + assert_equal [ExtensionTerm.new("A", "=", "1.0.0"), ExtensionTerm.new("A", "=", "2.0.0")], tree.terms + cb = LogicNode.make_eval_cb do |term| + case term + when ExtensionTerm + [ExtensionVersion.new("A", "1.0", $mock_cfg_arch)].any? do |ext_ver| + term.to_ext_req($mock_cfg_arch).satisfied_by?(ext_ver) + end ? SatisfiedResult::Yes : SatisfiedResult::No + when ParameterTerm + term.eval(symtab) + end + end + assert_equal SatisfiedResult::Yes, tree.eval_cb(cb) + cb = LogicNode.make_eval_cb do |term| + case term + when ExtensionTerm + [ExtensionVersion.new("B", "2.1.0", $mock_cfg_arch)].any? do |ext_ver| + term.to_ext_req($mock_cfg_arch).satisfied_by?(ext_ver) + end ? SatisfiedResult::Yes : SatisfiedResult::No + when ParameterTerm + term.eval(symtab) + end + end + assert_equal SatisfiedResult::No, tree.eval_cb(cb) + assert_equal "((A=1.0 ∨ A=2.0) ∧ (A=1.0 → (true ∧ true)) ∧ (A=2.0 → (true ∧ true)))", tree.to_s + end + + def test_requirements_with_single_unconditional_implication + req_str = <<~COND + name: A + version: = 1.0 + COND + + req_yaml = YAML.load(req_str) + + + reqs = ExtensionRequirementList.new(req_yaml, $mock_cfg_arch) + ext_vers = reqs.implied_extension_versions + + assert_equal 1, ext_vers.size + assert_equal ExtensionVersion.new("A", "1.0", $mock_cfg_arch), ext_vers.fetch(0).ext_ver + assert_instance_of AlwaysTrueCondition, ext_vers.fetch(0).cond + end + + def test_requirements_with_two_unconditional_implication + req_str = <<~COND + allOf: + - name: A + version: = 1.0 + - name: C + version: = 1.0 + COND + + req_yaml = YAML.load(req_str) + + reqs = ExtensionRequirementList.new(req_yaml, $mock_cfg_arch) + ext_vers = reqs.implied_extension_versions + + assert_equal 2, ext_vers.size + assert_equal [ExtensionVersion.new("A", "1.0", $mock_cfg_arch), ExtensionVersion.new("C", "1.0", $mock_cfg_arch)], ext_vers.map(&:ext_ver) + assert_instance_of AlwaysTrueCondition, ext_vers.fetch(0).cond + end + + def test_requirements_with_one_unconditional_implication_and_a_requirement + req_str = <<~COND + allOf: + - name: A + version: = 1.0 + - name: C + version: ">= 1.0" + COND + + req_yaml = YAML.load(req_str) + + reqs = ExtensionRequirementList.new(req_yaml, $mock_cfg_arch) + ext_vers = reqs.implied_extension_versions + + assert_equal 1, ext_vers.size + assert_equal [ExtensionVersion.new("A", "1.0", $mock_cfg_arch)], ext_vers.map(&:ext_ver) + assert_instance_of AlwaysTrueCondition, ext_vers.fetch(0).cond + end + + def test_requirements_with_one_conditional_implication + req_str = <<~COND + name: C + version: "= 1.0" + when: + extension: + name: A + version: ">= 1.0" + COND + + req_yaml = YAML.load(req_str) + + reqs = ExtensionRequirementList.new(req_yaml, $mock_cfg_arch) + ext_vers = reqs.implied_extension_versions + + assert_equal 1, ext_vers.size + assert_equal [ExtensionVersion.new("C", "1.0", $mock_cfg_arch)], ext_vers.map(&:ext_ver) + assert_instance_of Condition, ext_vers.fetch(0).cond + assert_equal [ExtensionTerm.new("A", "=", "1.0"), ExtensionTerm.new("A", "=", "2.0")], ext_vers.fetch(0).cond.to_logic_tree(expand: true).terms + assert ext_vers.fetch(0).cond.satisfiability_depends_on_ext_req?(ExtensionRequirement.new("A", ">= 1.0", arch: $mock_cfg_arch)) + refute ext_vers.fetch(0).cond.satisfiability_depends_on_ext_req?(ExtensionVersion.new("B", "2.1.0", $mock_cfg_arch).to_ext_req) + end + + def test_single_extension_req_with_implication + cond_str = <<~COND + extension: + name: B + COND + + cond_yaml = YAML.load(cond_str) + + cond = Condition.new(cond_yaml, $mock_cfg_arch) + + assert_equal SatisfiedResult::Maybe, cond.satisfied_by_cfg_arch?($mock_cfg_arch) + assert cond.could_be_satisfied_by_cfg_arch?($mock_cfg_arch) + refute_empty cond + + tree = cond.to_logic_tree(expand: true) + assert_equal 2, tree.terms.size + def make_cb(ext_vers) + LogicNode.make_eval_cb do |term| + case term + when ExtensionTerm + ext_vers.any? { |ext_ver| term.to_ext_req($mock_cfg_arch).satisfied_by?(ext_ver) } ? SatisfiedResult::Yes : SatisfiedResult::No + when ParameterTerm + term.eval(symtab) + end + end + end + assert_equal SatisfiedResult::No, tree.eval_cb(make_cb([ExtensionVersion.new("A", "1.0", $mock_cfg_arch)])) + assert_equal SatisfiedResult::No, tree.eval_cb(make_cb([ExtensionVersion.new("B", "2.1.0", $mock_cfg_arch)])) + assert_equal SatisfiedResult::Yes, tree.eval_cb(make_cb([ExtensionVersion.new("A", "1.0", $mock_cfg_arch), ExtensionVersion.new("B", "2.1.0", $mock_cfg_arch)])) + end + + def test_single_extension_req_with_conditional_implication + cond_str = <<~COND + extension: + name: D + COND + + cond_yaml = YAML.load(cond_str) + + cond = Condition.new(cond_yaml, $mock_cfg_arch) + + assert_equal SatisfiedResult::Maybe, cond.satisfied_by_cfg_arch?($mock_cfg_arch) + assert cond.could_be_satisfied_by_cfg_arch?($mock_cfg_arch) + refute_empty cond + + # D alone should satisfy + assert cond.satisfiability_depends_on_ext_req?(ExtensionRequirement.new("D", ">= 0", arch: $mock_cfg_arch)) + + # D with C but not A should not satisfy + cb = LogicNode.make_eval_cb do |term| + case term + when ExtensionTerm + if term.name == "D" + SatisfiedResult::Yes + elsif term.name == "C" + SatisfiedResult::Yes + else + SatisfiedResult::No + end + when ParameterTerm + raise "?" + end + end + assert_equal SatisfiedResult::No, cond.to_logic_tree(expand: true).eval_cb(cb) + + # D with C and A should + cb = LogicNode.make_eval_cb do |term| + case term + when ExtensionTerm + if term.name == "D" + SatisfiedResult::Yes + elsif term.name == "C" + SatisfiedResult::Yes + elsif term.name == "A" + SatisfiedResult::Yes + else + SatisfiedResult::No + end + when ParameterTerm + raise "?" + end + end + assert_equal SatisfiedResult::Yes, cond.to_logic_tree(expand: true).eval_cb(cb) + end + + def test_single_param_req + cond_str = <<~COND + idl(): (MXLEN == 32) -> LITTLE_IS_BETTER; + reason: because + COND + + cond_yaml = YAML.load(cond_str) + + cond = Condition.new(cond_yaml, $mock_cfg_arch) + + assert_equal SatisfiedResult::Maybe, cond.satisfied_by_cfg_arch?($mock_cfg_arch) + + good_cfg_arch = $mock_resolver.cfg_arch_for("little_is_better") + good_cond = Condition.new(cond_yaml, good_cfg_arch) + + assert_equal SatisfiedResult::Yes, good_cond.satisfied_by_cfg_arch?(good_cfg_arch) + + bad_cfg_arch = $mock_resolver.cfg_arch_for("little_is_not_better") + bad_cond = Condition.new(cond_yaml, bad_cfg_arch) + + assert_equal SatisfiedResult::No, bad_cond.satisfied_by_cfg_arch?(bad_cfg_arch) + end + + def test_constraint_to_yaml + cond_str = <<~COND + idl(): | + for (U32 i = 0; i < 32; i++) { + HPM_COUNTER_EN[i] -> SCOUNTENABLE_EN[i]; + } + reason: Something compelling + COND + + cond_yaml = YAML.load(cond_str) + + cond = Condition.new(cond_yaml, $mock_cfg_arch) + + assert Condition.new(cond.to_h, $mock_cfg_arch).equivalent?(cond) + assert cond.equivalent?(Condition.new(cond.to_h, $mock_cfg_arch)) + + cond_str = <<~COND + idl(): true -> implemented?(ExtensionName::A); + reason: Something compelling + COND + + cond_yaml = YAML.load(cond_str) + + cond = Condition.new(cond_yaml, $mock_cfg_arch) + + assert Condition.new(cond.to_h, $mock_cfg_arch).equivalent?(cond) + assert cond.equivalent?(Condition.new(cond.to_h, $mock_cfg_arch)) + end + + def test_cnf + cond_str = <<~COND + extension: + allOf: + - name: A + - name: B + COND + + cond_yaml = YAML.load(cond_str) + + a_and_b = Condition.new(cond_yaml, $mock_cfg_arch) + + assert a_and_b.satisfiable? + + cond_str = <<~COND + extension: + anyOf: + - name: A + - name: B + COND + + cond_yaml = YAML.load(cond_str) + + a_or_b = Condition.new(cond_yaml, $mock_cfg_arch) + + assert a_or_b.satisfiable? + + assert a_and_b.compatible?(a_or_b) + assert a_or_b.compatible?(a_and_b) + end + + def test_idl_funcs + cond_str = <<~COND + idl(): implemented?(ExtensionName::A) && implemented?(ExtensionName::C) -> implemented?(ExtensionName::B) + reason: because + COND + + + end + + # skip checks on the real data if we can't find the repository root + unless $db_cfg_arch.nil? + + # test all instruction definedBy: + $db_cfg_arch.instructions.each do |inst| + define_method("test_inst_#{inst.name.gsub(".", "_")}_defined_by") do + assert inst.defined_by_condition.satisfiable? + assert inst.defined_by_condition.could_be_satisfied_by_cfg_arch?($db_cfg_arch) + h = inst.defined_by_condition.to_h + idl = inst.defined_by_condition.to_idl($db_cfg_arch) + + idl_cond = IdlCondition.new({ "idl()" => idl }, $db_cfg_arch, input_file: nil, input_line: nil) + h_cond = Condition.new(h, $db_cfg_arch) + + assert idl_cond.equivalent?(h_cond) + + end + end + + # test all param defined_by + $db_cfg_arch.params.each do |param| + define_method("test_param_#{param.name.gsub(".", "_")}_defined_by") do + assert param.defined_by_condition.satisfiable? + assert param.defined_by_condition.could_be_satisfied_by_cfg_arch?($db_cfg_arch) + + h = param.defined_by_condition.to_h + idl = param.defined_by_condition.to_idl($db_cfg_arch) + + idl_cond = IdlCondition.new({ "idl()" => idl }, $db_cfg_arch, input_file: nil, input_line: nil) + assert idl_cond.equivalent?(param.defined_by_condition) + h_cond = Condition.new(h, $db_cfg_arch) + assert h_cond.equivalent?(param.defined_by_condition) + + assert idl_cond.equivalent?(h_cond), "#{idl_cond.to_s_pretty} is not equivalent to #{h_cond.to_s_pretty}" + end + end + + # test all param requirements + $db_cfg_arch.params.each do |param| + define_method("test_param_#{param.name.gsub(".", "_")}_requirements") do + assert param.requirements_condition.satisfiable? + assert param.requirements_condition.could_be_satisfied_by_cfg_arch?($db_cfg_arch) + + h = param.requirements_condition.to_h + idl = param.requirements_condition.to_idl($db_cfg_arch) + + idl_cond = IdlCondition.new({ "idl()" => idl }, $db_cfg_arch, input_file: nil, input_line: nil) + assert idl_cond.equivalent?(param.requirements_condition), "Condition coversion to IDL is not logically equivalent: \n\nOriginal:\n#{param.requirements_condition}\n\nConversion:\n#{idl}" + h_cond = Condition.new(h, $db_cfg_arch) + assert h_cond.satisfiable? + assert h_cond.equivalent?(param.requirements_condition), "Condition coversion to YAML is not logically equivalent: \n\nOriginal:\n#{param.requirements_condition}\n\nConversion:\n#{h}" + + assert idl_cond.equivalent?(h_cond), "#{idl_cond.to_s_pretty} is not equivalent to #{h_cond.to_s_pretty}" + end + end + + + # test all csr definedBy: and csr field definedBy: + $db_cfg_arch.csrs.each do |csr| + define_method("test_csr_#{csr.name.gsub(".", "_")}_defined_by") do + assert csr.defined_by_condition.satisfiable? + assert csr.defined_by_condition.could_be_satisfied_by_cfg_arch?($db_cfg_arch) + h = csr.defined_by_condition.to_h + idl = csr.defined_by_condition.to_idl($db_cfg_arch) + + idl_cond = IdlCondition.new({ "idl()" => idl }, $db_cfg_arch, input_file: nil, input_line: nil) + assert idl_cond.equivalent?(csr.defined_by_condition) + h_cond = Condition.new(h, $db_cfg_arch) + assert h_cond.equivalent?(csr.defined_by_condition) + + assert idl_cond.equivalent?(h_cond), "#{idl_cond.to_s_pretty} is not equivalent to #{h_cond.to_s_pretty}" + + csr.fields.each do |field| + next if field.defined_by_condition.empty? + + assert field.defined_by_condition.satisfiable? + assert field.defined_by_condition.could_be_satisfied_by_cfg_arch?($db_cfg_arch) + h = field.defined_by_condition.to_h + idl = field.defined_by_condition.to_idl($db_cfg_arch) + + idl_cond = IdlCondition.new({ "idl()" => idl }, $db_cfg_arch, input_file: nil, input_line: nil) + assert idl_cond.equivalent?(field.defined_by_condition) + h_cond = Condition.new(h, $db_cfg_arch) + assert h_cond.equivalent?(field.defined_by_condition) + + end + + end + end + + # test all extension requirements + $db_cfg_arch.extensions.each do |ext| + define_method("test_ext_#{ext.name.gsub(".", "_")}_requirements") do + unless ext.requirements_condition.empty? + # check that the requirement makes sense + assert ext.requirements_condition.satisfiable? + + # and check that it could be satisfied by at least the unconfig + assert ext.requirements_condition.could_be_satisfied_by_cfg_arch?($db_cfg_arch) + + # conver to YAML and IDL + h = ext.defined_by_condition.to_h + idl = ext.defined_by_condition.to_idl($db_cfg_arch) + + # and then assert that they are equivalent (not necessarily identical) to each other + idl_cond = IdlCondition.new({ "idl()" => idl }, $db_cfg_arch, input_file: nil, input_line: nil) + assert idl_cond.equivalent?(ext.defined_by_condition) + h_cond = Condition.new(h, $db_cfg_arch) + assert h_cond.equivalent?(ext.defined_by_condition) + end + + # do the same for any version requirements + ext.versions.each do |ext_ver| + # skip if this is trivial + next if ext_ver.requirements_condition.empty? + + assert ext_ver.requirements_condition.satisfiable? + assert ext_ver.requirements_condition.could_be_satisfied_by_cfg_arch?($db_cfg_arch) + + h = ext_ver.requirements_condition.to_h + idl = ext_ver.requirements_condition.to_idl($db_cfg_arch) + + idl_cond = IdlCondition.new({ "idl()" => idl }, $db_cfg_arch, input_file: nil, input_line: nil) + assert idl_cond.equivalent?(ext_ver.requirements_condition) + h_cond = Condition.new(h, $db_cfg_arch) + assert h_cond.equivalent?(ext_ver.requirements_condition) + end + + end + end + end +end diff --git a/tools/ruby-gems/udb/test/test_helper.rb b/tools/ruby-gems/udb/test/test_helper.rb new file mode 100644 index 0000000000..28657317ac --- /dev/null +++ b/tools/ruby-gems/udb/test/test_helper.rb @@ -0,0 +1,28 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: false +# frozen_string_literal: true + +require "simplecov" +require "simplecov-cobertura" + +UDB_ROOT = (Pathname.new(__dir__) / "..").realpath + +unless SimpleCov.running + SimpleCov.start do + enable_coverage :branch + add_filter "/test/" + root UDB_ROOT.to_s + coverage_dir (UDB_ROOT / "coverage").to_s + enable_coverage_for_eval + formatter SimpleCov::Formatter::MultiFormatter.new([ + SimpleCov::Formatter::CoberturaFormatter, + SimpleCov::Formatter::HTMLFormatter, + ]) + end + + puts "[SimpleCov] Coverage started." +end + +require "minitest/autorun" diff --git a/tools/ruby-gems/udb/test/test_logic.rb b/tools/ruby-gems/udb/test/test_logic.rb new file mode 100644 index 0000000000..c10ef2f1d1 --- /dev/null +++ b/tools/ruby-gems/udb/test/test_logic.rb @@ -0,0 +1,1607 @@ +# Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. +# SPDX-License-Identifier: BSD-3-Clause-Clear + +# typed: false +# frozen_string_literal: true + +require_relative "test_helper" + +require "fileutils" +require "tmpdir" +require "yaml" + +require "udb/logic" +require "udb/cfg_arch" +require "udb/resolver" + +class TestLogic < Minitest::Test + extend T::Sig + include Udb + + sig { returns(ConfiguredArchitecture) } + def cfg_arch + return @cfg_arch unless @cfg_arch.nil? + + udb_gem_root = (Pathname.new(__dir__) / "..").realpath + @gen_path = Pathname.new(Dir.mktmpdir) + $resolver ||= Udb::Resolver.new( + schemas_path_override: udb_gem_root / "schemas", + cfgs_path_override: udb_gem_root / "test" / "mock_cfgs", + gen_path_override: @gen_path, + std_path_override: udb_gem_root / "test" / "mock_spec" / "isa", + quiet: false + ) + @cfg_arch = T.let(nil, T.nilable(ConfiguredArchitecture)) + capture_io do + @cfg_arch = $resolver.cfg_arch_for("_") + end + T.must(@cfg_arch) + end + + sig { returns(ConfiguredArchitecture) } + def partial_cfg_arch + return @partial_cfg_arch unless @partial_cfg_arch.nil? + + udb_gem_root = (Pathname.new(__dir__) / "..").realpath + @partial_gen_path = Pathname.new(Dir.mktmpdir) + $resolver ||= Udb::Resolver.new( + schemas_path_override: udb_gem_root / "schemas", + cfgs_path_override: udb_gem_root / "test" / "mock_cfgs", + gen_path_override: @partial_gen_path, + std_path_override: udb_gem_root / "test" / "mock_spec" / "isa", + quiet: false + ) + @partial_cfg_arch = T.let(nil, T.nilable(ConfiguredArchitecture)) + capture_io do + @partial_cfg_arch = $resolver.cfg_arch_for("little_is_better") + end + T.must(@partial_cfg_arch) + end + + sig { void } + def test_simple_or + n = + LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]), + ] + ) + + assert_equal "(A=1.0.0 OR B=1.0.0)", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "out = (a | b)", n.to_eqntott.eqn + assert n.satisfiable? + assert n.cnf? + assert_equal SatisfiedResult::Yes, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Yes : SatisfiedResult::No }) + assert_equal SatisfiedResult::Yes, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Yes : SatisfiedResult::No }) + assert_equal SatisfiedResult::Yes, n.eval_cb(proc { |_term| SatisfiedResult::Yes }) + assert_equal SatisfiedResult::No, n.eval_cb(proc { |_term| SatisfiedResult::No }) + assert_equal SatisfiedResult::Maybe, n.eval_cb(proc { |_term| SatisfiedResult::Maybe }) + assert_equal SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::No }) + assert_equal SatisfiedResult::Yes, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Yes : SatisfiedResult::Maybe }) + end + + sig { void } + def test_simple_and + n = + LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]), + ] + ) + + assert_equal "(A=1.0.0 AND B=1.0.0)", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "out = (a & b)", n.to_eqntott.eqn + assert n.cnf? + assert n.satisfiable? + assert_equal SatisfiedResult::No, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Yes : SatisfiedResult::No }) + assert_equal SatisfiedResult::No, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Yes : SatisfiedResult::No }) + assert_equal SatisfiedResult::Yes, n.eval_cb(proc { |_term| SatisfiedResult::Yes }) + assert_equal SatisfiedResult::No, n.eval_cb(proc { |_term| SatisfiedResult::No }) + assert_equal SatisfiedResult::Maybe, n.eval_cb(proc { |_term| SatisfiedResult::Maybe }) + assert_equal SatisfiedResult::No, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::No }) + assert_equal SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Yes : SatisfiedResult::Maybe }) + end + + sig { void } + def test_simple_not + n = + LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")])]) + + assert_equal "NOT A=1.0.0", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "out = !(a)", n.to_eqntott.eqn + assert n.satisfiable? + assert n.cnf? + assert_equal SatisfiedResult::No, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Yes : SatisfiedResult::No }) + assert_equal SatisfiedResult::Yes, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Yes : SatisfiedResult::No }) + assert_equal SatisfiedResult::No, n.eval_cb(proc { |_term| SatisfiedResult::Yes }) + assert_equal SatisfiedResult::Yes, n.eval_cb(proc { |_term| SatisfiedResult::No }) + assert_equal SatisfiedResult::Maybe, n.eval_cb(proc { |_term| SatisfiedResult::Maybe }) + assert_equal SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::No }) + end + + sig { void } + def test_ext_ver_convert + term = ExtensionTerm.new("A", "=", "1.0.0") + + assert_equal ExtensionVersion.new("A", "1.0.0", cfg_arch), term.to_ext_ver(cfg_arch) + assert_equal ["name", "version"], term.to_h.keys + assert_equal ExtensionVersion.new("A", "1.0.0", cfg_arch), ExtensionVersion.new(term.to_h["name"], term.to_h["version"].gsub("= ", ""), cfg_arch) + end + + sig { void } + def test_group_by_2 + n = + LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("C", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("D", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("E", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("F", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("G", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("H", "=", "1.0.0")]), + ] + ) + + assert n.satisfiable? + assert_equal "(A=1.0.0 AND B=1.0.0 AND C=1.0.0 AND D=1.0.0 AND E=1.0.0 AND F=1.0.0 AND G=1.0.0 AND H=1.0.0)", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "out = (a & b & c & d & e & f & g & h)", n.to_eqntott.eqn + assert_equal "(((((((A=1.0.0 AND B=1.0.0) AND C=1.0.0) AND D=1.0.0) AND E=1.0.0) AND F=1.0.0) AND G=1.0.0) AND H=1.0.0)", n.group_by_2.to_s(format: LogicNode::LogicSymbolFormat::English) + end + + sig { void } + def test_duplicate_and_terms + n = + LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]), + ] + ) + + assert n.satisfiable? + assert_equal "(A=1.0.0 AND B=1.0.0 AND A=1.0.0 AND B=1.0.0 AND A=1.0.0 AND B=1.0.0 AND A=1.0.0 AND B=1.0.0)", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "out = (a & b & a & b & a & b & a & b)", n.to_eqntott.eqn + assert_equal "(((((((A=1.0.0 AND B=1.0.0) AND A=1.0.0) AND B=1.0.0) AND A=1.0.0) AND B=1.0.0) AND A=1.0.0) AND B=1.0.0)", n.group_by_2.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_includes ["(A=1.0.0 AND B=1.0.0)", "(B=1.0.0 AND A=1.0.0)"], n.espresso(LogicNode::CanonicalizationType::SumOfProducts, false).to_s(format: LogicNode::LogicSymbolFormat::English) + assert n.equivalent?(n.espresso(LogicNode::CanonicalizationType::SumOfProducts, false)) + end + + sig { void } + def test_duplicate_or_terms + n = + LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]), + ] + ) + + assert n.satisfiable? + assert_equal "(A=1.0.0 OR B=1.0.0 OR A=1.0.0 OR B=1.0.0 OR A=1.0.0 OR B=1.0.0 OR A=1.0.0 OR B=1.0.0)", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "out = (a | b | a | b | a | b | a | b)", n.to_eqntott.eqn + assert_equal "(((((((A=1.0.0 OR B=1.0.0) OR A=1.0.0) OR B=1.0.0) OR A=1.0.0) OR B=1.0.0) OR A=1.0.0) OR B=1.0.0)", n.group_by_2.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_includes ["(A=1.0.0 OR B=1.0.0)", "(B=1.0.0 OR A=1.0.0)"], n.espresso(LogicNode::CanonicalizationType::SumOfProducts, false).to_s(format: LogicNode::LogicSymbolFormat::English) + assert n.equivalent?(n.espresso(LogicNode::CanonicalizationType::SumOfProducts, false)) + end + + def test_array_param_terms + h = { + "name" => "SCOUNTENABLE_EN", + "index" => 3, + "equal" => true, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal h, term.to_h + assert_equal "(SCOUNTENABLE_EN[3]==true)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(true) + assert_equal SatisfiedResult::No, term.eval_value(false) + + h = { + "name" => "INTEGER_PARAM", + "oneOf" => [32, 64], + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal h, term.to_h + assert_equal "(INTEGER_PARAM==32||INTEGER_PARAM==64)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(32) + assert_equal SatisfiedResult::Yes, term.eval_value(64) + assert_equal SatisfiedResult::No, term.eval_value(128) + + h = { + "name" => "SCOUNTENABLE_EN", + "index" => 4, + "not_equal" => true, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN[4]!=true)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(false) + assert_equal SatisfiedResult::No, term.eval_value(true) + + h = { + "name" => "SCOUNTENABLE_EN", + "index" => 4, + "equal" => false, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN[4]==false)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(false) + assert_equal SatisfiedResult::No, term.eval_value(true) + + h = { + "name" => "SCOUNTENABLE_EN", + "index" => 4, + "not_equal" => false, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN[4]!=false)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(true) + assert_equal SatisfiedResult::No, term.eval_value(false) + + h = { + "name" => "SCOUNTENABLE_EN", + "index" => 10, + "less_than" => 5, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN[10]<5)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(4) + assert_equal SatisfiedResult::No, term.eval_value(5) + assert_equal SatisfiedResult::No, term.eval_value(6) + + h = { + "name" => "SCOUNTENABLE_EN", + "index" => 10, + "greater_than" => 5, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN[10]>5)", term.to_s + assert_equal SatisfiedResult::No, term.eval_value(4) + assert_equal SatisfiedResult::No, term.eval_value(5) + assert_equal SatisfiedResult::Yes, term.eval_value(6) + + h = { + "name" => "SCOUNTENABLE_EN", + "index" => 10, + "less_than_or_equal" => 5, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN[10]<=5)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(4) + assert_equal SatisfiedResult::Yes, term.eval_value(5) + assert_equal SatisfiedResult::No, term.eval_value(6) + + h = { + "name" => "SCOUNTENABLE_EN", + "index" => 10, + "greater_than_or_equal" => 5, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN[10]>=5)", term.to_s + assert_equal SatisfiedResult::No, term.eval_value(4) + assert_equal SatisfiedResult::Yes, term.eval_value(5) + assert_equal SatisfiedResult::Yes, term.eval_value(6) + + h = { + "name" => "SCOUNTENABLE_EN", + "index" => 10, + "not_a_comparison" => 5, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_raises { term.to_s } + assert_raises { term.eval_value(5) } + end + + def test_scalar_param_terms + h = { + "name" => "SCOUNTENABLE_EN", + "equal" => true, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal h, term.to_h + assert_equal "(SCOUNTENABLE_EN==true)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(true) + assert_equal SatisfiedResult::No, term.eval_value(false) + + h = { + "name" => "SCOUNTENABLE_EN", + "not_equal" => true, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN!=true)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(false) + assert_equal SatisfiedResult::No, term.eval_value(true) + + h = { + "name" => "SCOUNTENABLE_EN", + "equal" => false, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN==false)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(false) + assert_equal SatisfiedResult::No, term.eval_value(true) + + h = { + "name" => "SCOUNTENABLE_EN", + "not_equal" => false, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN!=false)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(true) + assert_equal SatisfiedResult::No, term.eval_value(false) + + h = { + "name" => "SCOUNTENABLE_EN", + "less_than" => 5, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN<5)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(4) + assert_equal SatisfiedResult::No, term.eval_value(5) + assert_equal SatisfiedResult::No, term.eval_value(6) + + h = { + "name" => "SCOUNTENABLE_EN", + "greater_than" => 5, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN>5)", term.to_s + assert_equal SatisfiedResult::No, term.eval_value(4) + assert_equal SatisfiedResult::No, term.eval_value(5) + assert_equal SatisfiedResult::Yes, term.eval_value(6) + + h = { + "name" => "SCOUNTENABLE_EN", + "less_than_or_equal" => 5, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN<=5)", term.to_s + assert_equal SatisfiedResult::Yes, term.eval_value(4) + assert_equal SatisfiedResult::Yes, term.eval_value(5) + assert_equal SatisfiedResult::No, term.eval_value(6) + + h = { + "name" => "SCOUNTENABLE_EN", + "greater_than_or_equal" => 5, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_equal "(SCOUNTENABLE_EN>=5)", term.to_s + assert_equal SatisfiedResult::No, term.eval_value(4) + assert_equal SatisfiedResult::Yes, term.eval_value(5) + assert_equal SatisfiedResult::Yes, term.eval_value(6) + + h = { + "name" => "SCOUNTENABLE_EN", + "not_a_comparison" => 5, + "reason" => "blah" + } + term = ParameterTerm.new(h) + assert_raises { term.to_s } + assert_raises { term.eval_value(5) } + end + + def test_bad_logic_nodes + assert_raises { LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "1.0.0"), ExtensionTerm.new("B", "1.0.0")]) } + assert_raises { LogicNode.new(LogicNodeType::Term, [5]) } + assert_raises { LogicNode.new(LogicNodeType::Not, [ExtensionTerm.new("A", "1.0.0"), ExtensionTerm.new("B", "1.0.0")]) } + assert_raises { LogicNode.new(LogicNodeType::And, [ExtensionTerm.new("A", "1.0.0")]) } + assert_raises { LogicNode.new(LogicNodeType::Or, [ExtensionTerm.new("A", "1.0.0")]) } + assert_raises { LogicNode.new(LogicNodeType::Xor, [ExtensionTerm.new("A", "1.0.0")]) } + assert_raises { LogicNode.new(LogicNodeType::None, [ExtensionTerm.new("A", "1.0.0")]) } + assert_raises { LogicNode.new(LogicNodeType::If, [ExtensionTerm.new("A", "1.0.0")]) } + assert_raises { LogicNode.new(LogicNodeType::True, [ExtensionTerm.new("A", "1.0.0")]) } + assert_raises { LogicNode.new(LogicNodeType::False, [ExtensionTerm.new("A", "1.0.0")]) } + end + + def test_eval + n = LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]) + cb = LogicNode.make_eval_cb do |term| + if term.is_a?(ExtensionTerm) + if cfg_arch.possible_extension_versions.include?(term.to_ext_ver(cfg_arch)) + SatisfiedResult::Yes + else + SatisfiedResult::No + end + else + term.eval(cfg_arch) + end + end + assert_equal(SatisfiedResult::Yes, n.eval_cb(cb)) + assert_equal(SatisfiedResult::No, n.eval_cb(proc { |term| SatisfiedResult::No })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| SatisfiedResult::Maybe })) + + n = LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]) # which isn't defined + ] + ) + assert_equal(SatisfiedResult::No, n.eval_cb(cb)) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| SatisfiedResult::Maybe })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal(SatisfiedResult::No, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + assert_equal(SatisfiedResult::No, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + + + n = LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")]) + ] + ) + assert_equal(SatisfiedResult::Yes, n.eval_cb(cb)) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| SatisfiedResult::Maybe })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal(SatisfiedResult::No, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + assert_equal(SatisfiedResult::No, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + + n = LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")]) + ] + ) + assert_equal(SatisfiedResult::Yes, n.eval_cb(cb)) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| SatisfiedResult::Maybe })) + assert_equal(SatisfiedResult::Yes, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal(SatisfiedResult::Yes, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + + n = LogicNode.new( + LogicNodeType::Xor, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")]) + ] + ) + assert_equal(SatisfiedResult::No, n.eval_cb(cb)) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| SatisfiedResult::Maybe })) + assert_equal( + SatisfiedResult::Maybe, + n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::Yes }) + ) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + + + n = LogicNode.new( + LogicNodeType::Xor, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("C", "=", "1.0")]) + ] + ) + assert_equal(SatisfiedResult::No, n.eval_cb(cb)) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| SatisfiedResult::Maybe })) + assert_equal( + SatisfiedResult::No, + n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::Yes }) + ) + assert_equal( + SatisfiedResult::No, + n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal( + SatisfiedResult::No, + n.eval_cb(proc { |term| term.name == "C" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "C" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + + n = LogicNode.new( + LogicNodeType::None, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")]) + ] + ) + assert_equal(SatisfiedResult::No, n.eval_cb(cb)) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| SatisfiedResult::Maybe })) + assert_equal(SatisfiedResult::No, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal(SatisfiedResult::No, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + + n = LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + ] + ) + assert_equal(SatisfiedResult::No, n.eval_cb(cb)) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| SatisfiedResult::Maybe })) + + n = LogicNode.new( + LogicNodeType::If, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")]), + ] + ) + assert_equal(SatisfiedResult::Yes, n.eval_cb(cb)) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| SatisfiedResult::Maybe })) + assert_equal(SatisfiedResult::Yes, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::Yes })) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(proc { |term| term.name == "A" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + assert_equal(SatisfiedResult::Yes, n.eval_cb(proc { |term| term.name == "B" ? SatisfiedResult::Maybe : SatisfiedResult::No })) + + n = LogicNode.new( + LogicNodeType::If, + [ + LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("C", "=", "1.0")]) + ] + ), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")]), + ] + ) + assert_equal(SatisfiedResult::Yes, n.eval_cb(cb)) + assert_equal(SatisfiedResult::Yes, n.eval_cb(proc { |term| SatisfiedResult::No })) + cb2 = LogicNode.make_eval_cb do |term| + if term.to_ext_ver(cfg_arch) == ExtensionVersion.new("A", "1.0.0", cfg_arch) + SatisfiedResult::Yes + else + SatisfiedResult::No + end + end + assert_equal(SatisfiedResult::No, n.eval_cb(cb2)) + cb2 = LogicNode.make_eval_cb do |term| + if term.to_ext_ver(cfg_arch) == ExtensionVersion.new("C", "1.0", cfg_arch) + SatisfiedResult::Yes + else + SatisfiedResult::No + end + end + assert_equal(SatisfiedResult::No, n.eval_cb(cb2)) + cb2 = LogicNode.make_eval_cb do |term| + if term.to_ext_ver(cfg_arch) == ExtensionVersion.new("B", "2.1.0", cfg_arch) + SatisfiedResult::Yes + else + SatisfiedResult::No + end + end + assert_equal(SatisfiedResult::Yes, n.eval_cb(cb2)) + cb2 = LogicNode.make_eval_cb do |term| + if term.to_ext_ver(cfg_arch) == ExtensionVersion.new("A", "1.0.0", cfg_arch) || term.to_ext_ver(cfg_arch) == ExtensionVersion.new("B", "2.1.0", cfg_arch) + SatisfiedResult::Yes + else + SatisfiedResult::No + end + end + assert_equal(SatisfiedResult::Yes, n.eval_cb(cb2)) + cb2 = LogicNode.make_eval_cb do |term| + if term.is_a?(ExtensionTerm) + if term.to_ext_ver(cfg_arch) == ExtensionVersion.new("C", "1.0", cfg_arch) || term.to_ext_ver(cfg_arch) == ExtensionVersion.new("B", "2.1.0", cfg_arch) + SatisfiedResult::Yes + else + SatisfiedResult::No + end + else + term.eval(cfg_arch.symtab) + end + end + assert_equal(SatisfiedResult::Yes, n.eval_cb(cb2)) + + n = LogicNode.new(LogicNodeType::True, []) + assert_equal(SatisfiedResult::Yes, n.eval_cb(cb)) + assert_equal(SatisfiedResult::Yes, n.eval_cb(proc { |term| SatisfiedResult::No })) + + n = LogicNode.new(LogicNodeType::False, []) + assert_equal(SatisfiedResult::No, n.eval_cb(cb)) + assert_equal(SatisfiedResult::No, n.eval_cb(proc { |term| SatisfiedResult::Yes })) + + n = LogicNode.new(LogicNodeType::Term, [ParameterTerm.new({ + "name" => "MXLEN", + "equal" => 32, + "reason" => "blah" + })]) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(cb)) + cb2 = LogicNode.make_eval_cb do |term| + if term.is_a?(ExtensionTerm) + if partial_cfg_arch.possible_extension_versions.include?(term.to_ext_ver(partial_cfg_arch)) + SatisfiedResult::Yes + else + SatisfiedResult::No + end + else + term.eval(partial_cfg_arch) + end + end + assert_equal(SatisfiedResult::Yes, n.eval_cb(cb2)) + + n = LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "MXLEN", + "equal" => 32, + "reason" => "blah" + }) + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "LITTLE_IS_BETTER", + "equal" => true, + "reason" => "blah" + }) + ]) + ] + ) + assert n.satisfiable? + assert n.equivalent?(n.espresso(LogicNode::CanonicalizationType::SumOfProducts, false)) + assert_equal(SatisfiedResult::Maybe, n.eval_cb(cb)) + assert_equal(SatisfiedResult::Yes, n.eval_cb(cb2)) + end + + def test_to_s + n = LogicNode.new(LogicNodeType::True, []) + assert_equal "1", n.to_s(format: LogicNode::LogicSymbolFormat::C) + assert_equal "ONE", n.to_s(format: LogicNode::LogicSymbolFormat::Eqn) + assert_equal "true", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "true", n.to_s(format: LogicNode::LogicSymbolFormat::Predicate) + + n = LogicNode.new(LogicNodeType::False, []) + assert_equal "0", n.to_s(format: LogicNode::LogicSymbolFormat::C) + assert_equal "ZERO", n.to_s(format: LogicNode::LogicSymbolFormat::Eqn) + assert_equal "false", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "false", n.to_s(format: LogicNode::LogicSymbolFormat::Predicate) + + n = LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")])]) + assert_equal "!A=1.0.0", n.to_s(format: LogicNode::LogicSymbolFormat::C) + assert_equal "!A=1.0.0", n.to_s(format: LogicNode::LogicSymbolFormat::Eqn) + assert_equal "NOT A=1.0.0", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "\u00acA=1.0.0", n.to_s(format: LogicNode::LogicSymbolFormat::Predicate) + + n = LogicNode.new(LogicNodeType::And, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")])]) + assert_equal "(A=1.0.0 && B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::C) + assert_equal "(A=1.0.0 & B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::Eqn) + assert_equal "(A=1.0.0 AND B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "(A=1.0.0 \u2227 B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::Predicate) + + n = LogicNode.new(LogicNodeType::Or, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")])]) + assert_equal "(A=1.0.0 || B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::C) + assert_equal "(A=1.0.0 | B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::Eqn) + assert_equal "(A=1.0.0 OR B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "(A=1.0.0 \u2228 B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::Predicate) + + n = LogicNode.new(LogicNodeType::Xor, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")])]) + assert_equal "(A=1.0.0 ^ B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::C) + assert_equal "(A=1.0.0 XOR B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "(A=1.0.0 \u2295 B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::Predicate) + + n = LogicNode.new(LogicNodeType::If, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")])]) + assert_equal "(A=1.0.0 IMPLIES B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "(A=1.0.0 \u2192 B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::Predicate) + + n = LogicNode.new(LogicNodeType::None, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")])]) + assert_equal "!(A=1.0.0 || B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::C) + assert_equal "!(A=1.0.0 | B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::Eqn) + assert_equal "NOT (A=1.0.0 OR B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::English) + assert_equal "\u00ac(A=1.0.0 \u2228 B=2.1.0)", n.to_s(format: LogicNode::LogicSymbolFormat::Predicate) + + end + + def test_to_h + assert LogicNode.new(LogicNodeType::True, []).to_h + refute LogicNode.new(LogicNodeType::False, []).to_h + + a_node = LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]) + assert_equal ({ "extension" => { "name" => "A", "version" => "= 1.0.0" } }), a_node.to_h + assert_equal ({ "param" => { "name" => "A", "equal" => true } }), LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true)]).to_h + + n = LogicNode.new(LogicNodeType::Not, [a_node]) + assert_equal ({ "extension" => { "not" => { "name" => "A", "version" => "= 1.0.0" } } }), n.to_h + + n = LogicNode.new(LogicNodeType::Not, [n]) + assert_equal ({ "extension" => { "not" => { "not" => { "name" => "A", "version" => "= 1.0.0" } } } }), n.to_h + + n = LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ParameterTerm.new({ "name" => "A", "equal" => true, "reason" => "blah" })])]) + assert_equal ({ "param" => { "not" => { "name" => "A", "equal" => true, "reason" => "blah" } } }), n.to_h + + n = LogicNode.new(LogicNodeType::Not, [n]) + assert_equal ({ "param" => { "not" => { "not" => { "name" => "A", "equal" => true, "reason" => "blah" } } } }), n.to_h + + + n = LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "MXLEN", + "equal" => 32, + "reason" => "blah" + }) + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "LITTLE_IS_BETTER", + "equal" => true, + "reason" => "blah" + }) + ]) + ] + ) + h = { + "param" => { + "allOf" => [ + { "name" => "MXLEN", "equal" => 32, "reason" => "blah" }, + { "name" => "LITTLE_IS_BETTER", "equal" => true, "reason" => "blah" } + ] + } + } + assert_equal h, n.to_h + assert n.equivalent?(n.espresso(LogicNode::CanonicalizationType::SumOfProducts, false)) + assert n.satisfiable? + + n = LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("A", "=", "1.0.0") + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("B", "=", "1.0.0") + ]) + ] + ) + h = { + "extension" => { + "allOf" => [ + { "name" => "A", "version" => "= 1.0.0" }, + { "name" => "B", "version" => "= 1.0.0" } + ] + } + } + assert_equal h, n.to_h + assert n.equivalent?(n.espresso(LogicNode::CanonicalizationType::SumOfProducts, false)) + assert n.satisfiable? + + n = LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "MXLEN", + "equal" => 32, + "reason" => "blah" + }) + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("B", "=", "1.0.0") + ]) + ] + ) + h = { + "allOf" => [ + { "param" => { "name" => "MXLEN", "equal" => 32, "reason" => "blah" } }, + { "extension" => { "name" => "B", "version" => "= 1.0.0" } } + ] + } + assert_equal h, n.to_h + assert n.equivalent?(n.espresso(LogicNode::CanonicalizationType::SumOfProducts, false)) + assert n.satisfiable? + + n = LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "MXLEN", + "equal" => 32, + "reason" => "blah" + }) + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "LITTLE_IS_BETTER", + "equal" => true, + "reason" => "blah" + }) + ]) + ] + ) + h = { + "param" => { + "anyOf" => [ + { "name" => "MXLEN", "equal" => 32, "reason" => "blah" }, + { "name" => "LITTLE_IS_BETTER", "equal" => true, "reason" => "blah" } + ] + } + } + assert_equal h, n.to_h + assert n.equivalent?(n.espresso(LogicNode::CanonicalizationType::SumOfProducts, false)) + assert n.satisfiable? + + n = LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("A", "=", "1.0.0") + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("B", "=", "1.0.0") + ]) + ] + ) + h = { + "extension" => { + "anyOf" => [ + { "name" => "A", "version" => "= 1.0.0" }, + { "name" => "B", "version" => "= 1.0.0" } + ] + } + } + assert_equal h, n.to_h + assert n.equivalent?(n.espresso(LogicNode::CanonicalizationType::SumOfProducts, false)) + assert n.satisfiable? + + n = LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "MXLEN", + "equal" => 32, + "reason" => "blah" + }) + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("B", "=", "1.0.0") + ]) + ] + ) + h = { + "anyOf" => [ + { "param" => { "name" => "MXLEN", "equal" => 32, "reason" => "blah" } }, + { "extension" => { "name" => "B", "version" => "= 1.0.0" } } + ] + } + assert_equal h, n.to_h + + n = LogicNode.new( + LogicNodeType::Xor, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "MXLEN", + "equal" => 32, + "reason" => "blah" + }) + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "LITTLE_IS_BETTER", + "equal" => true, + "reason" => "blah" + }) + ]) + ] + ) + h = { + "param" => { + "oneOf" => [ + { "name" => "MXLEN", "equal" => 32, "reason" => "blah" }, + { "name" => "LITTLE_IS_BETTER", "equal" => true, "reason" => "blah" } + ] + } + } + assert_equal h, n.to_h + + n = LogicNode.new( + LogicNodeType::Xor, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("A", "=", "1.0.0") + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("B", "=", "1.0.0") + ]) + ] + ) + h = { + "extension" => { + "oneOf" => [ + { "name" => "A", "version" => "= 1.0.0" }, + { "name" => "B", "version" => "= 1.0.0" } + ] + } + } + assert_equal h, n.to_h + + n = LogicNode.new( + LogicNodeType::Xor, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "MXLEN", + "equal" => 32, + "reason" => "blah" + }) + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("B", "=", "1.0.0") + ]) + ] + ) + h = { + "oneOf" => [ + { "param" => { "name" => "MXLEN", "equal" => 32, "reason" => "blah" } }, + { "extension" => { "name" => "B", "version" => "= 1.0.0" } } + ] + } + assert_equal h, n.to_h + + n = LogicNode.new( + LogicNodeType::None, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "MXLEN", + "equal" => 32, + "reason" => "blah" + }) + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "LITTLE_IS_BETTER", + "equal" => true, + "reason" => "blah" + }) + ]) + ] + ) + h = { + "param" => { + "noneOf" => [ + { "name" => "MXLEN", "equal" => 32, "reason" => "blah" }, + { "name" => "LITTLE_IS_BETTER", "equal" => true, "reason" => "blah" } + ] + } + } + assert_equal h, n.to_h + + n = LogicNode.new( + LogicNodeType::None, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("A", "=", "1.0.0") + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("B", "=", "1.0.0") + ]) + ] + ) + h = { + "extension" => { + "noneOf" => [ + { "name" => "A", "version" => "= 1.0.0" }, + { "name" => "B", "version" => "= 1.0.0" } + ] + } + } + assert_equal h, n.to_h + + n = LogicNode.new( + LogicNodeType::None, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ParameterTerm.new({ + "name" => "MXLEN", + "equal" => 32, + "reason" => "blah" + }) + ]), + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("B", "=", "1.0.0") + ]) + ] + ) + h = { + "noneOf" => [ + { "param" => { "name" => "MXLEN", "equal" => 32, "reason" => "blah" } }, + { "extension" => { "name" => "B", "version" => "= 1.0.0" } } + ] + } + assert_equal h, n.to_h + + n = LogicNode.new( + LogicNodeType::If, + [ + LogicNode.new(LogicNodeType::True, []), + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("B", "=", "1.0.0") + ]) + ] + ) + + h = { + "if" => true, + "then" => { + "extension" => { + "name" => "B", "version" => "= 1.0.0" + } + } + } + assert_equal h, n.to_h + + n = LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::If, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "2.1.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("C", "=", "1.0.0")]) + ] + ), + LogicNode.new(LogicNodeType::If, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("D", "=", "2.1.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("E", "=", "1.0.0")]) + ] + ), + ] + ) + + h = { + "extension" => { + "allOf" => [ + { "name" => "A", "version" => "= 1.0.0" }, + { + "if" => { "extension" => { "name" => "B", "version" => "= 2.1.0" } }, + "then" => { "name" => "C", "version" => "= 1.0.0" } + }, + { + "if" => { "extension" => { "name" => "D", "version" => "= 2.1.0" } }, + "then" => { "name" => "E", "version" => "= 1.0.0" } + } + ] + } + } + assert_equal h, n.to_h + end + + def test_nnf + n = LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("A", "=", "1.0.0") + ] + ) + ] + ) + ] + ) + ] + ) + + nnf_n = + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new( + LogicNodeType::Term, + [ + ExtensionTerm.new("A", "=", "1.0.0") + ] + ) + ] + ) + + assert n.nnf.nnf? + # nnf_n is also the minimal form + assert_equal n.espresso(LogicNode::CanonicalizationType::SumOfProducts, false).to_s, n.nnf.to_s + assert n.equivalent?(nnf_n) + assert nnf_n.equivalent?(n) + + n = LogicNode.new( + LogicNodeType::If, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")]), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "B", "equal" => true, "reason" => "blah")]), + ] + ) + + nnf_n = LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")]), + ] + ), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "B", "equal" => true, "reason" => "blah")]), + ] + ) + + assert n.nnf.nnf? + assert n.equivalent?(nnf_n) + assert nnf_n.equivalent?(n) + + n = LogicNode.new( + LogicNodeType::Xor, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")]), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "B", "equal" => true, "reason" => "blah")]), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "C", "equal" => true, "reason" => "blah")]), + ] + ) + + nnf_n = LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")]), + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "B", "equal" => true, "reason" => "blah")]), + ] + ), + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "C", "equal" => true, "reason" => "blah")]), + ] + ) + ] + ), + LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")]), + ] + ), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "B", "equal" => true, "reason" => "blah")]), + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "C", "equal" => true, "reason" => "blah")]), + ] + ) + ] + ), + LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")]), + ] + ), + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "B", "equal" => true, "reason" => "blah")]), + ] + ), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "C", "equal" => true, "reason" => "blah")]) + ] + ), + ] + ) + + assert n.nnf.nnf? + assert n.equivalent?(nnf_n) + assert nnf_n.equivalent?(n) + + n = LogicNode.new(LogicNodeType::Not, [n]) + + nnf_n = LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")]), + ] + ), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "B", "equal" => true, "reason" => "blah")]), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "C", "equal" => true, "reason" => "blah")]), + ] + ), + LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")]), + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "B", "equal" => true, "reason" => "blah")]), + ] + ), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "C", "equal" => true, "reason" => "blah")]), + ] + ), + LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")]), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "B", "equal" => true, "reason" => "blah")]), + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "C", "equal" => true, "reason" => "blah")]), + ] + ), + ] + ), + ] + ) + + assert n.nnf.nnf? + assert n.equivalent?(nnf_n) + assert nnf_n.equivalent?(n) + + n = LogicNode.new( + LogicNodeType::None, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")]), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "B", "equal" => true, "reason" => "blah")]), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "C", "equal" => true, "reason" => "blah")]) + ] + ) + + nnf_n = LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")])]), + LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "B", "equal" => true, "reason" => "blah")])]), + LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "C", "equal" => true, "reason" => "blah")])]) + ] + ) + + assert n.nnf.nnf? + assert n.equivalent?(nnf_n) + assert nnf_n.equivalent?(n) + + n = LogicNode.new(LogicNodeType::Not, [n]) + + nnf_n = + LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")]), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "B", "equal" => true, "reason" => "blah")]), + LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "C", "equal" => true, "reason" => "blah")]) + ] + ) + + assert n.nnf.nnf? + assert n.equivalent?(nnf_n) + assert nnf_n.equivalent?(n) + end + + def test_equivalence + n = LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]) + m = LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]) + + assert n.equivalent?(m) + assert m.equivalent?(n) + + + n = LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]) + m = LogicNode.new(LogicNodeType::Term, [ParameterTerm.new("name" => "A", "equal" => true, "reason" => "blah")]) + + refute n.equivalent?(m) + refute m.equivalent?(n) + + + n = LogicNode.new(LogicNodeType::None, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]), LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("C", "=", "1.0.0")])]) + m = LogicNode.new(LogicNodeType::And, [LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")])]), LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")])]), LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("C", "=", "1.0.0")])])]) + + assert n.equisat_cnf.cnf? + assert m.equisat_cnf.cnf? + assert n.equivalent?(m) + assert m.equivalent?(n) + + n = LogicNode.new(LogicNodeType::None, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")]), LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")])]) + m = LogicNode.new(LogicNodeType::And, [LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")])]), LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")])])]) + + assert n.equisat_cnf.cnf? + assert m.equisat_cnf.cnf? + assert n.equivalent?(m) + assert m.equivalent?(n) + + + end + + def test_prime_implicants + + mterms = ["0100", "1000", "1001", "1010", "1011", "1100", "1110", "1111"] + res = LogicNode.find_prime_implicants(mterms, "1") + assert_equal res.essential.sort, ["-100", "10--", "1-1-"].sort + assert_equal res.minimal.sort, ["-100", "10--", "1-1-"].sort + # assert false + + # @example + # given the equation (reqpresenting implications of the "C" extension): + # Zca AND (!F OR Zcf) AND (!D OR Zcd) + # + # return: + # [ + # { term: Zca, cond: True }, + # { term: Zcf, cond: !F }, + # { term: Zcd, cond: !D } + # ] + t = LogicNode.new(LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("Zca", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Or, + [ + LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("F", "=", "2.0.0")])]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("Zcf", "=", "1.0.0")]) + ] + ), + LogicNode.new(LogicNodeType::Or, + [ + LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("D", "=", "2.0.0")])]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("Zcd", "=", "1.0.0")]) + ] + ) + ] + ) + mpi = t.minimize(LogicNode::CanonicalizationType::ProductOfSums) + + assert_equal 5, mpi.terms.size + assert_equal LogicNodeType::And, mpi.type + assert_equal 3, mpi.children.size + + assert mpi.equivalent?(t) + + # @example + # given the equation + # Zca AND ((Zc1 AND Zc2) OR (!Zcond)) + # + # return + # [ + # { term: Zca, cond True}, + # { term: Zc1, cond: !Zcond}, + # { term: Zc2, cond: !Zcond} + # ] + t = + LogicNode.new(LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("Zca", "=", "1.0.0")]), + LogicNode.new( + LogicNodeType::Or, + [ + LogicNode.new( + LogicNodeType::And, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("Zc1", "=", "1.0.0")]), + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("Zc2", "=", "1.0.0")]) + ] + ), + LogicNode.new( + LogicNodeType::Not, + [ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("Zcond", "=", "1.0.0")]) + ] + ) + ] + ) + ] + ) + + mpi = t.minimize(LogicNode::CanonicalizationType::ProductOfSums) + + assert_equal 4, mpi.terms.size + assert_equal LogicNodeType::And, mpi.type + assert_equal 3, mpi.children.size + + assert mpi.equivalent?(t) + end + + def node_from_json(ary) + case ary[0] + when ":AND" + LogicNode.new(LogicNodeType::And, ary[1..].map { |a| node_from_json(a) }) + when ":OR" + LogicNode.new(LogicNodeType::Or, ary[1..].map { |a| node_from_json(a) }) + when ":XOR" + LogicNode.new(LogicNodeType::Xor, ary[1..].map { |a| node_from_json(a) }) + when ":NOT" + LogicNode.new(LogicNodeType::Not, [node_from_json(ary[1])]) + when ":IMPLIES" + LogicNode.new(LogicNodeType::If, [node_from_json(ary[1]), node_from_json(ary[2])]) + when /[a-z]/ + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new(ary[0], ">=", "0")]) + else + raise "unhandled: #{ary[0]}" + end + end + + def test_tseytin + f = LogicNode.new(LogicNodeType::Not, [LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("A", "=", "1.0.0")])]) + # assert_equal 2, f.tseytin.terms.size + assert f.tseytin.cnf? + assert f.satisfiable? + + f = LogicNode.new(LogicNodeType::And, + [ + f, + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("B", "=", "1.0.0")]) + ] + ) + # assert_equal 4, f.tseytin.terms.size + assert f.tseytin.cnf? + assert f.satisfiable? + + f = LogicNode.new(LogicNodeType::Or, + [ + f, + LogicNode.new(LogicNodeType::Term, [ExtensionTerm.new("C", "=", "1.0.0")]) + ] + ) + # assert_equal 6, f.tseytin.terms.size + assert f.tseytin.cnf? + assert f.satisfiable? + + unsat = LogicNode.new(LogicNodeType::And, [f, LogicNode.new(LogicNodeType::Not, [f])]) + refute unsat.satisfiable? + end + + bool_eqns = JSON.load_file(File.join(__dir__, "boolean_expressions.json")) + bool_eqns.each_with_index do |json_eqn, index| + define_method("test_random_#{index}") do + node = node_from_json(json_eqn) + if node.satisfiable? + # test all the transformations + + # nnf gets covered by equiv_cnf + # nnf = node.nnf + # assert nnf.nnf? + # assert node.equivalent?(nnf) + + cnf = node.equisat_cnf + assert cnf.cnf? + assert node.equisatisfiable?(cnf) + + pos = node.minimize(LogicNode::CanonicalizationType::ProductOfSums) + assert \ + node.equivalent?(pos), + "#{node} was minimized to #{pos}, which is not equivalent" + assert pos.cnf? + + sop = node.minimize(LogicNode::CanonicalizationType::SumOfProducts) + assert node.equivalent?(sop) + assert sop.dnf? + else + min = node.minimize(LogicNode::CanonicalizationType::ProductOfSums) + assert_equal \ + LogicNodeType::False, + min.type, + "Unsatisfiable equation #{node} did not minimize to false. Got #{min}" + + min = node.minimize(LogicNode::CanonicalizationType::SumOfProducts) + assert_equal \ + LogicNodeType::False, + min.type, + "Unsatisfiable equation #{node} did not minimize to false. Got #{min}" + end + end + end +end diff --git a/tools/ruby-gems/udb/test/test_yaml_loader.rb b/tools/ruby-gems/udb/test/test_yaml_loader.rb index 94c6f4239d..1c08717aa3 100644 --- a/tools/ruby-gems/udb/test/test_yaml_loader.rb +++ b/tools/ruby-gems/udb/test/test_yaml_loader.rb @@ -1,11 +1,13 @@ +# typed: false # Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. # SPDX-License-Identifier: BSD-3-Clause-Clear # frozen_string_literal: true +require_relative "test_helper" + require "English" require "fileutils" -require "minitest/autorun" require "open3" require "tmpdir" require "yaml" @@ -286,7 +288,7 @@ def test_inherits_entire_object refute_nil(doc) assert_equal("test/test2.yaml#", doc["$child_of"]) assert_equal("Should take precedence", doc["target1"]) - assert_equal({ "a" => "hash", "sub1" => { "key_a" => "new_value_a", "key_b" => "old_value_b" }}, doc["target2"]) + assert_equal({ "a" => "hash", "sub1" => { "key_a" => "new_value_a", "key_b" => "old_value_b" } }, doc["target2"]) end def test_multi_inherits_in_the_same_document diff --git a/tools/ruby-gems/udb/udb.gemspec b/tools/ruby-gems/udb/udb.gemspec index ff318cd4c0..504e7e3c10 100644 --- a/tools/ruby-gems/udb/udb.gemspec +++ b/tools/ruby-gems/udb/udb.gemspec @@ -26,7 +26,7 @@ Gem::Specification.new do |s| "mailing_list_uri" => "https://lists.riscv.org/g/tech-unifieddb", "bug_tracker_uri" => "https://github.com/riscv-software-src/riscv-unified-db/issues" } - s.required_ruby_version = "~> 3.2" # only supported in UDB container + s.required_ruby_version = "~> 3.2" s.require_paths = ["lib"] s.bindir = "bin" @@ -38,10 +38,15 @@ Gem::Specification.new do |s| s.add_dependency "concurrent-ruby" s.add_dependency "idlc" s.add_dependency "json_schemer" + s.add_dependency "numbers_and_words" + s.add_dependency "pastel" + s.add_dependency "ruby-minisat", ">= 2.2.0.3" s.add_dependency "sorbet-runtime" s.add_dependency "terminal-table" s.add_dependency "thor" s.add_dependency "tilt" + s.add_dependency "tty-logger" + s.add_dependency "tty-progressbar" s.add_dependency "udb_helpers" s.add_development_dependency "rubocop-github" @@ -49,6 +54,7 @@ Gem::Specification.new do |s| s.add_development_dependency "rubocop-performance" s.add_development_dependency "rubocop-sorbet" s.add_development_dependency "simplecov" + s.add_development_dependency "simplecov-cobertura" s.add_development_dependency "sorbet" s.add_development_dependency "tapioca" s.add_development_dependency "yard" diff --git a/tools/ruby-gems/udb_helpers/udb_helpers.gemspec b/tools/ruby-gems/udb_helpers/udb_helpers.gemspec index 30fe4123f0..e1f533a475 100644 --- a/tools/ruby-gems/udb_helpers/udb_helpers.gemspec +++ b/tools/ruby-gems/udb_helpers/udb_helpers.gemspec @@ -24,7 +24,7 @@ Gem::Specification.new do |s| "mailing_list_uri" => "https://lists.riscv.org/g/tech-unifieddb", "bug_tracker_uri" => "https://github.com/riscv-software-src/riscv-unified-db/issues" } - s.required_ruby_version = "~> 3.2" # only supported in UDB container + s.required_ruby_version = "~> 3.2" s.require_paths = ["lib"]