diff --git a/Gemfile.lock b/Gemfile.lock index 7be4a9f0f..958755b8b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -9,6 +9,7 @@ PATH constant_resolver (>= 0.2.0) parallel parser + prism (>= 0.24.0) sorbet-runtime (>= 0.5.9914) zeitwerk (>= 2.6.1) @@ -60,15 +61,11 @@ GEM method_source (>= 0.6.7) rake (>= 0.9.2.2) method_source (1.0.0) - mini_portile2 (2.8.4) minitest (5.16.2) minitest-focus (1.3.1) minitest (>= 4, < 6) mocha (1.14.0) netrc (0.11.0) - nokogiri (1.15.3) - mini_portile2 (~> 2.8.2) - racc (~> 1.4) nokogiri (1.15.3-x86_64-darwin) racc (~> 1.4) nokogiri (1.15.3-x86_64-linux) @@ -77,6 +74,7 @@ GEM parser (3.2.2.0) ast (~> 2.4.1) prettier_print (0.1.0) + prism (0.24.0) pry (0.14.1) coderay (~> 1.1) method_source (~> 1.0) @@ -179,7 +177,6 @@ GEM zeitwerk (2.6.4) PLATFORMS - ruby x86_64-darwin x86_64-darwin-20 x86_64-linux diff --git a/lib/packwerk/file_processor.rb b/lib/packwerk/file_processor.rb index 6c3a4c1ac..88a59ba9b 100644 --- a/lib/packwerk/file_processor.rb +++ b/lib/packwerk/file_processor.rb @@ -59,7 +59,7 @@ def call(relative_file) For now, you can add this file to `packwerk.yml` `exclude` list. Please file an issue and include this error message and stacktrace: - #{e.message} #{e.backtrace}" + #{e.message} #{e.backtrace&.join("\n")}" MSG offense = Parsers::ParseResult.new(file: relative_file, message: message) diff --git a/lib/packwerk/parsers/ruby.rb b/lib/packwerk/parsers/ruby.rb index b218e20c2..b841d07fd 100644 --- a/lib/packwerk/parsers/ruby.rb +++ b/lib/packwerk/parsers/ruby.rb @@ -2,7 +2,7 @@ # frozen_string_literal: true require "parser" -require "parser/current" +require "prism" module Packwerk module Parsers @@ -11,7 +11,7 @@ class Ruby include ParserInterface - class RaiseExceptionsParser < Parser::CurrentRuby + class RaiseExceptionsParser < Prism::Translation::Parser extend T::Sig sig { params(builder: T.untyped).void } diff --git a/packwerk.gemspec b/packwerk.gemspec index e1b8edb6e..cbe1da56c 100644 --- a/packwerk.gemspec +++ b/packwerk.gemspec @@ -50,6 +50,7 @@ Gem::Specification.new do |spec| # For Ruby parsing spec.add_dependency("ast") spec.add_dependency("parser") + spec.add_dependency("prism", ">= 0.24.0") # 0.24.0 fixes a performance issue with the parser translator # For ERB parsing spec.add_dependency("better_html") diff --git a/sorbet/rbi/gems/nokogiri@1.13.8.rbi b/sorbet/rbi/gems/nokogiri@1.15.3.rbi similarity index 64% rename from sorbet/rbi/gems/nokogiri@1.13.8.rbi rename to sorbet/rbi/gems/nokogiri@1.15.3.rbi index 7012022b7..85ac222be 100644 --- a/sorbet/rbi/gems/nokogiri@1.13.8.rbi +++ b/sorbet/rbi/gems/nokogiri@1.15.3.rbi @@ -1,19 +1,42 @@ -# typed: true +# typed: false # DO NOT EDIT MANUALLY # This is an autogenerated file for types exported from the `nokogiri` gem. # Please instead update this file by running `bin/tapioca gem nokogiri`. -# -- -# DO NOT MODIFY!!!! -# This file is automatically generated by rex 1.0.7 -# from lexical definition file "lib/nokogiri/css/tokenizer.rex". -# ++ +# Nokogiri parses and searches XML/HTML very quickly, and also has +# correctly implemented CSS3 selector support as well as XPath 1.0 +# support. # -# source://nokogiri-1.13.8/lib/nokogiri.rb:40 +# Parsing a document returns either a Nokogiri::XML::Document, or a +# Nokogiri::HTML4::Document depending on the kind of document you parse. +# +# Here is an example: +# +# require 'nokogiri' +# require 'open-uri' +# +# # Get a Nokogiri::HTML4::Document for the page we’re interested in... +# +# doc = Nokogiri::HTML4(URI.open('http://www.google.com/search?q=tenderlove')) +# +# # Do funky things with it using Nokogiri::XML::Node methods... +# +# #### +# # Search for nodes by css +# doc.css('h3.r a.l').each do |link| +# puts link.content +# end +# +# See also: +# +# - Nokogiri::XML::Searchable#css for more information about CSS searching +# - Nokogiri::XML::Searchable#xpath for more information about XPath searching +# +# source://nokogiri-1.15.3/lib/nokogiri.rb:38 module Nokogiri class << self - # source://nokogiri-1.13.8/lib/nokogiri/html4.rb:10 + # source://nokogiri-1.15.3/lib/nokogiri/html4.rb:10 def HTML(input, url = T.unsafe(nil), encoding = T.unsafe(nil), options = T.unsafe(nil), &block); end # :call-seq: @@ -21,7 +44,7 @@ module Nokogiri # # Parse HTML. Convenience method for Nokogiri::HTML4::Document.parse # - # source://nokogiri-1.13.8/lib/nokogiri/html4.rb:10 + # source://nokogiri-1.15.3/lib/nokogiri/html4.rb:10 def HTML4(input, url = T.unsafe(nil), encoding = T.unsafe(nil), options = T.unsafe(nil), &block); end # Since v1.12.0 @@ -30,7 +53,7 @@ module Nokogiri # # Parse an HTML5 document. Convenience method for {Nokogiri::HTML5::Document.parse} # - # source://nokogiri-1.13.8/lib/nokogiri/html5.rb:30 + # source://nokogiri-1.15.3/lib/nokogiri/html5.rb:30 def HTML5(input, url = T.unsafe(nil), encoding = T.unsafe(nil), **options, &block); end # Parse a document and add the Slop decorator. The Slop decorator @@ -47,12 +70,12 @@ module Nokogiri # eohtml # assert_equal('second', doc.html.body.p[1].text) # - # source://nokogiri-1.13.8/lib/nokogiri.rb:85 + # source://nokogiri-1.15.3/lib/nokogiri.rb:91 def Slop(*args, &block); end # Parse XML. Convenience method for Nokogiri::XML::Document.parse # - # source://nokogiri-1.13.8/lib/nokogiri/xml.rb:7 + # source://nokogiri-1.15.3/lib/nokogiri/xml.rb:7 def XML(thing, url = T.unsafe(nil), encoding = T.unsafe(nil), options = T.unsafe(nil), &block); end # Create a Nokogiri::XSLT::Stylesheet with +stylesheet+. @@ -61,51 +84,51 @@ module Nokogiri # # xslt = Nokogiri::XSLT(File.read(ARGV[0])) # - # source://nokogiri-1.13.8/lib/nokogiri/xslt.rb:13 + # source://nokogiri-1.15.3/lib/nokogiri/xslt.rb:13 def XSLT(stylesheet, modules = T.unsafe(nil)); end - # source://nokogiri-1.13.8/lib/nokogiri.rb:90 + # source://nokogiri-1.15.3/lib/nokogiri.rb:96 def install_default_aliases; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:204 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:205 def jruby?; end - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:209 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:210 def libxml2_patches; end # Create a new Nokogiri::XML::DocumentFragment # - # source://nokogiri-1.13.8/lib/nokogiri.rb:62 + # source://nokogiri-1.15.3/lib/nokogiri.rb:68 def make(input = T.unsafe(nil), opts = T.unsafe(nil), &blk); end # Parse an HTML or XML document. +string+ contains the document. # - # source://nokogiri-1.13.8/lib/nokogiri.rb:44 + # source://nokogiri-1.15.3/lib/nokogiri.rb:42 def parse(string, url = T.unsafe(nil), encoding = T.unsafe(nil), options = T.unsafe(nil)); end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:199 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:200 def uses_gumbo?; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:191 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:192 def uses_libxml?(requirement = T.unsafe(nil)); end end end # Translate a CSS selector into an XPath 1.0 query # -# source://nokogiri-1.13.8/lib/nokogiri/css.rb:6 +# source://nokogiri-1.15.3/lib/nokogiri/css.rb:6 module Nokogiri::CSS class << self # TODO: Deprecate this method ahead of 2.0 and delete it in 2.0. # It is not used by Nokogiri and shouldn't be part of the public API. # - # source://nokogiri-1.13.8/lib/nokogiri/css.rb:10 + # source://nokogiri-1.15.3/lib/nokogiri/css.rb:10 def parse(selector); end # :call-seq: @@ -136,415 +159,417 @@ module Nokogiri::CSS # # πŸ’‘ Note that translated queries are cached for performance concerns. # - # source://nokogiri-1.13.8/lib/nokogiri/css.rb:42 + # @raise [TypeError] + # + # source://nokogiri-1.15.3/lib/nokogiri/css.rb:42 def xpath_for(selector, options = T.unsafe(nil)); end end end -# source://nokogiri-1.13.8/lib/nokogiri/css/node.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/css/node.rb:5 class Nokogiri::CSS::Node # Create a new Node with +type+ and +value+ # # @return [Node] a new instance of Node # - # source://nokogiri-1.13.8/lib/nokogiri/css/node.rb:14 + # source://nokogiri-1.15.3/lib/nokogiri/css/node.rb:14 def initialize(type, value); end # Accept +visitor+ # - # source://nokogiri-1.13.8/lib/nokogiri/css/node.rb:20 + # source://nokogiri-1.15.3/lib/nokogiri/css/node.rb:20 def accept(visitor); end # Find a node by type using +types+ # - # source://nokogiri-1.13.8/lib/nokogiri/css/node.rb:32 + # source://nokogiri-1.15.3/lib/nokogiri/css/node.rb:32 def find_by_type(types); end # Convert to array # - # source://nokogiri-1.13.8/lib/nokogiri/css/node.rb:49 + # source://nokogiri-1.15.3/lib/nokogiri/css/node.rb:49 def to_a; end # Convert to_type # - # source://nokogiri-1.13.8/lib/nokogiri/css/node.rb:42 + # source://nokogiri-1.15.3/lib/nokogiri/css/node.rb:42 def to_type; end # Convert this CSS node to xpath with +prefix+ using +visitor+ # - # source://nokogiri-1.13.8/lib/nokogiri/css/node.rb:26 + # source://nokogiri-1.15.3/lib/nokogiri/css/node.rb:26 def to_xpath(prefix, visitor); end # Get the type of this node # - # source://nokogiri-1.13.8/lib/nokogiri/css/node.rb:9 + # source://nokogiri-1.15.3/lib/nokogiri/css/node.rb:9 def type; end # Get the type of this node # - # source://nokogiri-1.13.8/lib/nokogiri/css/node.rb:9 + # source://nokogiri-1.15.3/lib/nokogiri/css/node.rb:9 def type=(_arg0); end # Get the value of this node # - # source://nokogiri-1.13.8/lib/nokogiri/css/node.rb:11 + # source://nokogiri-1.15.3/lib/nokogiri/css/node.rb:11 def value; end # Get the value of this node # - # source://nokogiri-1.13.8/lib/nokogiri/css/node.rb:11 + # source://nokogiri-1.15.3/lib/nokogiri/css/node.rb:11 def value=(_arg0); end end -# source://nokogiri-1.13.8/lib/nokogiri/css/node.rb:6 +# source://nokogiri-1.15.3/lib/nokogiri/css/node.rb:6 Nokogiri::CSS::Node::ALLOW_COMBINATOR_ON_SELF = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:7 +# source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:7 class Nokogiri::CSS::Parser < ::Racc::Parser # Create a new CSS parser with respect to +namespaces+ # # @return [Parser] a new instance of Parser # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:60 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:60 def initialize(namespaces = T.unsafe(nil)); end # reduce 0 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:361 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:361 def _reduce_1(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:407 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:407 def _reduce_10(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:412 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:412 def _reduce_11(val, _values, result); end # reduce 12 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:424 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:424 def _reduce_13(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:429 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:429 def _reduce_14(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:434 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:434 def _reduce_15(val, _values, result); end # reduce 16 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:441 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:441 def _reduce_17(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:446 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:446 def _reduce_18(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:451 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:451 def _reduce_19(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:367 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:367 def _reduce_2(val, _values, result); end # reduce 20 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:458 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:458 def _reduce_21(val, _values, result); end # reduce 22 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:465 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:465 def _reduce_23(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:470 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:470 def _reduce_24(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:475 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:475 def _reduce_25(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:482 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:482 def _reduce_26(val, _values, result); end # reduce 27 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:489 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:489 def _reduce_28(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:495 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:495 def _reduce_29(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:372 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:372 def _reduce_3(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:501 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:501 def _reduce_30(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:507 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:507 def _reduce_31(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:512 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:512 def _reduce_32(val, _values, result); end # reduce 33 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:519 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:519 def _reduce_34(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:525 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:525 def _reduce_35(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:531 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:531 def _reduce_36(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:537 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:537 def _reduce_37(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:543 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:543 def _reduce_38(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:549 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:549 def _reduce_39(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:377 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:377 def _reduce_4(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:554 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:554 def _reduce_40(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:559 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:559 def _reduce_41(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:564 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:564 def _reduce_42(val, _values, result); end # reduce 44 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:573 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:573 def _reduce_45(val, _values, result); end # reduce 46 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:590 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:590 def _reduce_47(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:600 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:600 def _reduce_48(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:616 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:616 def _reduce_49(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:382 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:382 def _reduce_5(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:636 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:636 def _reduce_50(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:642 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:642 def _reduce_51(val, _values, result); end # reduce 53 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:651 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:651 def _reduce_54(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:657 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:657 def _reduce_55(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:663 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:663 def _reduce_56(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:669 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:669 def _reduce_57(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:675 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:675 def _reduce_58(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:387 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:387 def _reduce_6(val, _values, result); end # reduce 63 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:691 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:691 def _reduce_64(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:696 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:696 def _reduce_65(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:701 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:701 def _reduce_66(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:706 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:706 def _reduce_67(val, _values, result); end # reduce 68 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:713 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:713 def _reduce_69(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:392 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:392 def _reduce_7(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:718 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:718 def _reduce_70(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:723 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:723 def _reduce_71(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:728 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:728 def _reduce_72(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:733 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:733 def _reduce_73(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:738 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:738 def _reduce_74(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:743 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:743 def _reduce_75(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:748 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:748 def _reduce_76(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:397 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:397 def _reduce_8(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:402 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:402 def _reduce_9(val, _values, result); end # reduce 81 omitted # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:764 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:764 def _reduce_none(val, _values, result); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:89 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:89 def cache_key(query, prefix, visitor); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:71 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:71 def next_token; end # On CSS parser error, raise an exception # # @raise [SyntaxError] # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:84 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:84 def on_error(error_token_id, error_value, value_stack); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:66 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:66 def parse(string); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:26 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:26 def unescape_css_identifier(identifier); end - # source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:30 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:30 def unescape_css_string(str); end # Get the xpath for +string+ using +options+ # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:76 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:76 def xpath_for(string, prefix, visitor); end class << self # Get the css selector in +string+ from the cache # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:25 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:25 def [](string); end # Set the css selector in +string+ in the cache to +value+ # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:32 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:32 def []=(string, value); end # Return a thread-local boolean indicating whether the CSS-to-XPath cache is active. (Default is `true`.) # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:15 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:15 def cache_on?; end # Clear the cache # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:39 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:39 def clear_cache(create_new_object = T.unsafe(nil)); end # Set a thread-local boolean to turn cacheing on and off. Truthy values turn the cache on, falsey values turn the cache off. # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:20 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:20 def set_cache(value); end # Execute +block+ without cache # - # source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:50 + # source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:50 def without_cache(&block); end end end -# source://nokogiri-1.13.8/lib/nokogiri/css/parser_extras.rb:8 +# source://nokogiri-1.15.3/lib/nokogiri/css/parser_extras.rb:8 Nokogiri::CSS::Parser::CACHE_SWITCH_NAME = T.let(T.unsafe(nil), Symbol) -# source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:279 +# source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:279 Nokogiri::CSS::Parser::Racc_arg = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/css/parser.rb:295 +# source://nokogiri-1.15.3/lib/nokogiri/css/parser.rb:295 Nokogiri::CSS::Parser::Racc_token_to_s_table = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/css/syntax_error.rb:6 +# source://nokogiri-1.15.3/lib/nokogiri/css/syntax_error.rb:6 class Nokogiri::CSS::SyntaxError < ::Nokogiri::SyntaxError; end -# source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:11 +# source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:11 class Nokogiri::CSS::Tokenizer - # source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:57 + # source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:57 def _next_token; end - # source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:26 + # source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:26 def action; end # Returns the value of attribute filename. # - # source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:17 + # source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:17 def filename; end # Returns the value of attribute lineno. # - # source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:16 + # source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:16 def lineno; end - # source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:36 + # source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:36 def load_file(filename); end - # source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:49 + # source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:49 def next_token; end - # source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:30 + # source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:30 def scan(str); end - # source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:43 + # source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:43 def scan_file(filename); end - # source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:20 + # source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:20 def scan_setup(str); end - # source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:30 + # source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:30 def scan_str(str); end # Returns the value of attribute state. # - # source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:18 + # source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:18 def state; end # Sets the attribute state # # @param value the value to set the attribute state to. # - # source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:18 + # source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:18 def state=(_arg0); end end -# source://nokogiri-1.13.8/lib/nokogiri/css/tokenizer.rb:14 +# source://nokogiri-1.15.3/lib/nokogiri/css/tokenizer.rb:14 class Nokogiri::CSS::Tokenizer::ScanError < ::StandardError; end # When translating CSS selectors to XPath queries with Nokogiri::CSS.xpath_for, the XPathVisitor # class allows for changing some of the behaviors related to builtin xpath functions and quirks # of HTML5. # -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:9 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:9 class Nokogiri::CSS::XPathVisitor # :call-seq: # new() β†’ XPathVisitor @@ -558,10 +583,10 @@ class Nokogiri::CSS::XPathVisitor # # @return [XPathVisitor] a new instance of XPathVisitor # - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:57 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:57 def initialize(builtins: T.unsafe(nil), doctype: T.unsafe(nil)); end - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:267 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:267 def accept(node); end # :call-seq: config() β†’ Hash @@ -570,136 +595,139 @@ class Nokogiri::CSS::XPathVisitor # a Hash representing the configuration of the XPathVisitor, suitable for use as # part of the CSS cache key. # - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:74 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:74 def config; end - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:263 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:263 def visit_attrib_name(node); end - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:154 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:154 def visit_attribute_condition(node); end + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:234 def visit_child_selector(node); end - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:215 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:215 def visit_class_condition(node); end - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:219 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:219 def visit_combinator(node); end - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:240 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:240 def visit_conditional_selector(node); end + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:234 def visit_descendant_selector(node); end + + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:234 def visit_direct_adjacent_selector(node); end - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:245 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:245 def visit_element_name(node); end + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:234 def visit_following_selector(node); end # :stopdoc: # - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:79 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:79 def visit_function(node); end - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:149 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:149 def visit_id(node); end - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:140 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:140 def visit_not(node); end - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:190 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:190 def visit_pseudo_class(node); end private - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:326 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:328 def css_class(hay, needle); end - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:273 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:273 def html5_element_name_needs_namespace_handling(node); end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:316 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:318 def is_of_type_pseudo_class?(node); end - # @raise [ArgumentError] - # - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:280 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:280 def nth(node, options = T.unsafe(nil)); end - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:302 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:304 def read_a_and_positive_b(values); end end # Enum to direct XPathVisitor when to use Nokogiri builtin XPath functions. # -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:13 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:13 module Nokogiri::CSS::XPathVisitor::BuiltinsConfig; end # Always use Nokogiri builtin functions whenever possible. This is probably only useful for testing. # -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:19 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:19 Nokogiri::CSS::XPathVisitor::BuiltinsConfig::ALWAYS = T.let(T.unsafe(nil), Symbol) # Never use Nokogiri builtin functions, always generate vanilla XPath 1.0 queries. This is # the default when calling Nokogiri::CSS.xpath_for directly. # -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:16 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:16 Nokogiri::CSS::XPathVisitor::BuiltinsConfig::NEVER = T.let(T.unsafe(nil), Symbol) # Only use Nokogiri builtin functions when they will be faster than vanilla XPath. This is # the behavior chosen when searching for CSS selectors on a Nokogiri document, fragment, or # node. # -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:24 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:24 Nokogiri::CSS::XPathVisitor::BuiltinsConfig::OPTIMAL = T.let(T.unsafe(nil), Symbol) -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:27 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:27 Nokogiri::CSS::XPathVisitor::BuiltinsConfig::VALUES = T.let(T.unsafe(nil), Array) # Enum to direct XPathVisitor when to tweak the XPath query to suit the nature of the document # being searched. Note that searches for CSS selectors from a Nokogiri document, fragment, or # node will choose the correct option automatically. # -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:33 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:33 module Nokogiri::CSS::XPathVisitor::DoctypeConfig; end # The document being searched is an HTML4 document. # -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:38 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:38 Nokogiri::CSS::XPathVisitor::DoctypeConfig::HTML4 = T.let(T.unsafe(nil), Symbol) # The document being searched is an HTML5 document. # -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:41 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:41 Nokogiri::CSS::XPathVisitor::DoctypeConfig::HTML5 = T.let(T.unsafe(nil), Symbol) -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:44 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:44 Nokogiri::CSS::XPathVisitor::DoctypeConfig::VALUES = T.let(T.unsafe(nil), Array) # The document being searched is an XML document. This is the default. # -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:35 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:35 Nokogiri::CSS::XPathVisitor::DoctypeConfig::XML = T.let(T.unsafe(nil), Symbol) -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:10 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:10 Nokogiri::CSS::XPathVisitor::WILDCARD_NAMESPACES = T.let(T.unsafe(nil), TrueClass) -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:337 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:339 module Nokogiri::CSS::XPathVisitorAlwaysUseBuiltins class << self - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:338 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:340 def new; end end end -# source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:347 +# source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:349 module Nokogiri::CSS::XPathVisitorOptimallyUseBuiltins class << self - # source://nokogiri-1.13.8/lib/nokogiri/css/xpath_visitor.rb:348 + # source://nokogiri-1.15.3/lib/nokogiri/css/xpath_visitor.rb:350 def new; end end end @@ -715,7 +743,7 @@ end # # This module is included into those key classes who need to do this. # -# source://nokogiri-1.13.8/lib/nokogiri/class_resolver.rb:19 +# source://nokogiri-1.15.3/lib/nokogiri/class_resolver.rb:19 module Nokogiri::ClassResolver # :call-seq: # related_class(class_name) β†’ Class @@ -740,42 +768,44 @@ module Nokogiri::ClassResolver # ThisIsATopLevelClass.new.related_class("Document") # # => Nokogiri::HTML4::Document # - # source://nokogiri-1.13.8/lib/nokogiri/class_resolver.rb:46 + # source://nokogiri-1.15.3/lib/nokogiri/class_resolver.rb:46 def related_class(class_name); end end # #related_class restricts matching namespaces to those matching this set. # -# source://nokogiri-1.13.8/lib/nokogiri/class_resolver.rb:21 +# source://nokogiri-1.15.3/lib/nokogiri/class_resolver.rb:21 Nokogiri::ClassResolver::VALID_NAMESPACES = T.let(T.unsafe(nil), Set) -# source://nokogiri-1.13.8/lib/nokogiri/decorators/slop.rb:4 +# source://nokogiri-1.15.3/lib/nokogiri/decorators/slop.rb:4 module Nokogiri::Decorators; end # The Slop decorator implements method missing such that a methods may be # used instead of XPath or CSS. See Nokogiri.Slop # -# source://nokogiri-1.13.8/lib/nokogiri/decorators/slop.rb:8 +# source://nokogiri-1.15.3/lib/nokogiri/decorators/slop.rb:8 module Nokogiri::Decorators::Slop # look for node with +name+. See Nokogiri.Slop # - # source://nokogiri-1.13.8/lib/nokogiri/decorators/slop.rb:14 + # source://nokogiri-1.15.3/lib/nokogiri/decorators/slop.rb:14 def method_missing(name, *args, &block); end private # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/decorators/slop.rb:37 + # source://nokogiri-1.15.3/lib/nokogiri/decorators/slop.rb:37 def respond_to_missing?(name, include_private = T.unsafe(nil)); end end # The default XPath search context for Slop # -# source://nokogiri-1.13.8/lib/nokogiri/decorators/slop.rb:10 +# source://nokogiri-1.15.3/lib/nokogiri/decorators/slop.rb:10 Nokogiri::Decorators::Slop::XPATH_PREFIX = T.let(T.unsafe(nil), String) +# source://nokogiri-1.15.3/lib/nokogiri/encoding_handler.rb:5 class Nokogiri::EncodingHandler + # Returns the value of attribute name. def name; end class << self @@ -783,38 +813,46 @@ class Nokogiri::EncodingHandler def alias(_arg0, _arg1); end def clear_aliases!; end def delete(_arg0); end + + # source://nokogiri-1.15.3/lib/nokogiri/encoding_handler.rb:15 + def install_default_aliases; end end end -# source://nokogiri-1.13.8/lib/nokogiri/gumbo.rb:4 +# Popular encoding aliases not known by all iconv implementations that Nokogiri should support. +# +# source://nokogiri-1.15.3/lib/nokogiri/encoding_handler.rb:7 +Nokogiri::EncodingHandler::USEFUL_ALIASES = T.let(T.unsafe(nil), Hash) + +# source://nokogiri-1.15.3/lib/nokogiri/gumbo.rb:4 module Nokogiri::Gumbo class << self def fragment(_arg0, _arg1, _arg2, _arg3, _arg4, _arg5); end - def parse(_arg0, _arg1, _arg2, _arg3, _arg4); end + def parse(_arg0, _arg1, _arg2, _arg3, _arg4, _arg5); end end end # The default maximum number of attributes per element. # -# source://nokogiri-1.13.8/lib/nokogiri/gumbo.rb:6 +# source://nokogiri-1.15.3/lib/nokogiri/gumbo.rb:6 Nokogiri::Gumbo::DEFAULT_MAX_ATTRIBUTES = T.let(T.unsafe(nil), Integer) # The default maximum number of errors for parsing a document or a fragment. # -# source://nokogiri-1.13.8/lib/nokogiri/gumbo.rb:9 +# source://nokogiri-1.15.3/lib/nokogiri/gumbo.rb:9 Nokogiri::Gumbo::DEFAULT_MAX_ERRORS = T.let(T.unsafe(nil), Integer) # The default maximum depth of the DOM tree produced by parsing a document # or fragment. # -# source://nokogiri-1.13.8/lib/nokogiri/gumbo.rb:13 +# source://nokogiri-1.15.3/lib/nokogiri/gumbo.rb:13 Nokogiri::Gumbo::DEFAULT_MAX_TREE_DEPTH = T.let(T.unsafe(nil), Integer) # πŸ’‘ This module/namespace is an alias for Nokogiri::HTML4 as of v1.12.0. Before v1.12.0, # Nokogiri::HTML4 did not exist, and this was the module/namespace for all HTML-related # classes. # -# source://nokogiri-1.13.8/lib/nokogiri/html.rb:8 +# source://nokogiri-1.15.3/lib/nokogiri/html.rb:8 Nokogiri::HTML = Nokogiri::HTML4 # Since v1.12.0 @@ -822,17 +860,17 @@ Nokogiri::HTML = Nokogiri::HTML4 # πŸ’‘ Before v1.12.0, Nokogiri::HTML4 did not exist, and Nokogiri::HTML was the module/namespace # for parsing HTML. # -# source://nokogiri-1.13.8/lib/nokogiri/html4.rb:19 +# source://nokogiri-1.15.3/lib/nokogiri/html4.rb:19 module Nokogiri::HTML4 class << self # Parse a fragment from +string+ in to a NodeSet. # - # source://nokogiri-1.13.8/lib/nokogiri/html4.rb:29 + # source://nokogiri-1.15.3/lib/nokogiri/html4.rb:29 def fragment(string, encoding = T.unsafe(nil), options = T.unsafe(nil), &block); end # Parse HTML. Convenience method for Nokogiri::HTML4::Document.parse # - # source://nokogiri-1.13.8/lib/nokogiri/html4.rb:23 + # source://nokogiri-1.15.3/lib/nokogiri/html4.rb:23 def parse(input, url = T.unsafe(nil), encoding = T.unsafe(nil), options = T.unsafe(nil), &block); end end end @@ -861,25 +899,25 @@ end # The HTML builder inherits from the XML builder, so make sure to read the # Nokogiri::XML::Builder documentation. # -# source://nokogiri-1.13.8/lib/nokogiri/html.rb:31 +# source://nokogiri-1.15.3/lib/nokogiri/html.rb:31 class Nokogiri::HTML4::Builder < ::Nokogiri::XML::Builder # Convert the builder to HTML # - # source://nokogiri-1.13.8/lib/nokogiri/html4/builder.rb:32 + # source://nokogiri-1.15.3/lib/nokogiri/html4/builder.rb:32 def to_html; end end -# source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:11 +# source://nokogiri-1.15.3/lib/nokogiri/html4/document.rb:8 class Nokogiri::HTML4::Document < ::Nokogiri::XML::Document # Create a Nokogiri::XML::DocumentFragment from +tags+ # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:149 + # source://nokogiri-1.15.3/lib/nokogiri/html4/document.rb:149 def fragment(tags = T.unsafe(nil)); end # Get the meta tag encoding for this document. If there is no meta tag, # then nil is returned. # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:12 + # source://nokogiri-1.15.3/lib/nokogiri/html4/document.rb:12 def meta_encoding; end # Set the meta tag encoding for this document. @@ -898,7 +936,7 @@ class Nokogiri::HTML4::Document < ::Nokogiri::XML::Document # Beware in CRuby, that libxml2 automatically inserts a meta tag # into a head element. # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:36 + # source://nokogiri-1.15.3/lib/nokogiri/html4/document.rb:36 def meta_encoding=(encoding); end # Serialize Node using +options+. Save options can also be set using a block. @@ -915,13 +953,13 @@ class Nokogiri::HTML4::Document < ::Nokogiri::XML::Document # config.format.as_xml # end # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:142 + # source://nokogiri-1.15.3/lib/nokogiri/html4/document.rb:142 def serialize(options = T.unsafe(nil)); end # Get the title string of this document. Return nil if there is # no title tag. # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:70 + # source://nokogiri-1.15.3/lib/nokogiri/html4/document.rb:70 def title; end # Set the title string of this document. @@ -935,7 +973,7 @@ class Nokogiri::HTML4::Document < ::Nokogiri::XML::Document # encoding/charset tag if any, and before any text node or # content element (typically ) if any. # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:85 + # source://nokogiri-1.15.3/lib/nokogiri/html4/document.rb:85 def title=(text); end def type; end @@ -947,15 +985,15 @@ class Nokogiri::HTML4::Document < ::Nokogiri::XML::Document # # See XPathVisitor for more information. # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:159 + # source://nokogiri-1.15.3/lib/nokogiri/html4/document.rb:159 def xpath_doctype; end private - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:60 + # source://nokogiri-1.15.3/lib/nokogiri/html4/document.rb:60 def meta_content_type; end - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:103 + # source://nokogiri-1.15.3/lib/nokogiri/html4/document.rb:103 def set_metadata_element(element); end class << self @@ -971,7 +1009,7 @@ class Nokogiri::HTML4::Document < ::Nokogiri::XML::Document # # @yield [options] # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:172 + # source://nokogiri-1.15.3/lib/nokogiri/html4/document.rb:172 def parse(string_or_io, url = T.unsafe(nil), encoding = T.unsafe(nil), options = T.unsafe(nil)); end def read_io(_arg0, _arg1, _arg2, _arg3); end @@ -979,92 +1017,29 @@ class Nokogiri::HTML4::Document < ::Nokogiri::XML::Document end end -# source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:224 -class Nokogiri::HTML4::Document::EncodingFound < ::StandardError - # @return [EncodingFound] a new instance of EncodingFound - # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:227 - def initialize(encoding); end - - # Returns the value of attribute found_encoding. - # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:225 - def found_encoding; end -end - -# source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:234 -class Nokogiri::HTML4::Document::EncodingReader - # @return [EncodingReader] a new instance of EncodingReader - # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:293 - def initialize(io); end - - # This method is used by the C extension so that - # Nokogiri::HTML4::Document#read_io() does not leak memory when - # EncodingFound is raised. - # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:302 - def encoding_found; end - - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:304 - def read(len); end - - class << self - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:270 - def detect_encoding(chunk); end - end -end - -# source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:257 -class Nokogiri::HTML4::Document::EncodingReader::JumpSAXHandler < ::Nokogiri::HTML4::Document::EncodingReader::SAXHandler - # @return [JumpSAXHandler] a new instance of JumpSAXHandler - # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:258 - def initialize(jumptag); end - - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:263 - def start_element(name, attrs = T.unsafe(nil)); end -end - -# source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:235 -class Nokogiri::HTML4::Document::EncodingReader::SAXHandler < ::Nokogiri::XML::SAX::Document - # @return [SAXHandler] a new instance of SAXHandler - # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:238 - def initialize; end - - # Returns the value of attribute encoding. - # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:236 - def encoding; end - - # source://nokogiri-1.13.8/lib/nokogiri/html4/document.rb:243 - def start_element(name, attrs = T.unsafe(nil)); end -end - -# source://nokogiri-1.13.8/lib/nokogiri/html4/document_fragment.rb:7 +# source://nokogiri-1.15.3/lib/nokogiri/html4/document_fragment.rb:5 class Nokogiri::HTML4::DocumentFragment < ::Nokogiri::XML::DocumentFragment # @return [DocumentFragment] a new instance of DocumentFragment # @yield [options] # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document_fragment.rb:27 + # source://nokogiri-1.15.3/lib/nokogiri/html4/document_fragment.rb:27 def initialize(document, tags = T.unsafe(nil), ctx = T.unsafe(nil), options = T.unsafe(nil)); end class << self # Create a Nokogiri::XML::DocumentFragment from +tags+, using +encoding+ # - # source://nokogiri-1.13.8/lib/nokogiri/html4/document_fragment.rb:8 + # source://nokogiri-1.15.3/lib/nokogiri/html4/document_fragment.rb:8 def parse(tags, encoding = T.unsafe(nil), options = T.unsafe(nil), &block); end end end -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description.rb:5 class Nokogiri::HTML4::ElementDescription # Is this element a block element? # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/html4/element_description.rb:8 + # source://nokogiri-1.15.3/lib/nokogiri/html4/element_description.rb:8 def block?; end def default_sub_element; end @@ -1086,7 +1061,7 @@ class Nokogiri::HTML4::ElementDescription # Inspection information # - # source://nokogiri-1.13.8/lib/nokogiri/html4/element_description.rb:20 + # source://nokogiri-1.15.3/lib/nokogiri/html4/element_description.rb:20 def inspect; end def name; end @@ -1100,12 +1075,12 @@ class Nokogiri::HTML4::ElementDescription # Convert this description to a string # - # source://nokogiri-1.13.8/lib/nokogiri/html4/element_description.rb:14 + # source://nokogiri-1.15.3/lib/nokogiri/html4/element_description.rb:14 def to_s; end private - # source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:21 + # source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:32 def default_desc; end class << self @@ -1113,93 +1088,93 @@ class Nokogiri::HTML4::ElementDescription end end -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:239 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:436 Nokogiri::HTML4::ElementDescription::ACTION_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:234 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:423 Nokogiri::HTML4::ElementDescription::ALIGN_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:173 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:239 Nokogiri::HTML4::ElementDescription::ALT_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:180 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:246 Nokogiri::HTML4::ElementDescription::APPLET_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:183 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:258 Nokogiri::HTML4::ElementDescription::AREA_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:159 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:212 Nokogiri::HTML4::ElementDescription::ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:168 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:221 Nokogiri::HTML4::ElementDescription::A_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:185 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:268 Nokogiri::HTML4::ElementDescription::BASEFONT_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:278 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:546 Nokogiri::HTML4::ElementDescription::BGCOLOR_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:141 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:171 Nokogiri::HTML4::ElementDescription::BLOCK = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:240 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:437 Nokogiri::HTML4::ElementDescription::BLOCKLI_ELT = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:188 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:271 Nokogiri::HTML4::ElementDescription::BODY_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:187 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:270 Nokogiri::HTML4::ElementDescription::BODY_CONTENTS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:189 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:272 Nokogiri::HTML4::ElementDescription::BODY_DEPR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:191 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:280 Nokogiri::HTML4::ElementDescription::BUTTON_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:160 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:213 Nokogiri::HTML4::ElementDescription::CELLHALIGN = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:161 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:214 Nokogiri::HTML4::ElementDescription::CELLVALIGN = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:176 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:242 Nokogiri::HTML4::ElementDescription::CLEAR_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:194 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:292 Nokogiri::HTML4::ElementDescription::COL_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:195 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:293 Nokogiri::HTML4::ElementDescription::COL_ELT = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:199 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:297 Nokogiri::HTML4::ElementDescription::COMPACT_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:197 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:295 Nokogiri::HTML4::ElementDescription::COMPACT_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:242 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:439 Nokogiri::HTML4::ElementDescription::CONTENT_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:154 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:199 Nokogiri::HTML4::ElementDescription::COREATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:165 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:218 Nokogiri::HTML4::ElementDescription::CORE_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:164 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:217 Nokogiri::HTML4::ElementDescription::CORE_I18N_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:281 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:549 Nokogiri::HTML4::ElementDescription::DIR_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:198 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:296 Nokogiri::HTML4::ElementDescription::DL_CONTENTS = T.let(T.unsafe(nil), Array) # This is filled in down below. # -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:19 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:30 Nokogiri::HTML4::ElementDescription::DefaultDescriptions = T.let(T.unsafe(nil), Hash) # Methods are defined protected by method_defined? because at @@ -1207,256 +1182,319 @@ Nokogiri::HTML4::ElementDescription::DefaultDescriptions = T.let(T.unsafe(nil), # and we don't want to clobber any methods that have been # defined there. # -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:11 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:11 Nokogiri::HTML4::ElementDescription::Desc = Struct -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:196 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:294 Nokogiri::HTML4::ElementDescription::EDIT_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:223 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:377 Nokogiri::HTML4::ElementDescription::EMBED_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:147 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:192 Nokogiri::HTML4::ElementDescription::EMPTY = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:156 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:201 Nokogiri::HTML4::ElementDescription::EVENTS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:201 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:299 Nokogiri::HTML4::ElementDescription::FIELDSET_CONTENTS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:145 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:190 Nokogiri::HTML4::ElementDescription::FLOW = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:179 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:245 Nokogiri::HTML4::ElementDescription::FLOW_PARAM = T.let(T.unsafe(nil), Array) # Attributes defined and categorized # -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:131 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:136 Nokogiri::HTML4::ElementDescription::FONTSTYLE = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:202 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:300 Nokogiri::HTML4::ElementDescription::FONT_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:140 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:170 Nokogiri::HTML4::ElementDescription::FORMCTRL = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:206 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:318 Nokogiri::HTML4::ElementDescription::FORM_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:203 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:301 Nokogiri::HTML4::ElementDescription::FORM_CONTENTS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:210 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:339 Nokogiri::HTML4::ElementDescription::FRAMESET_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:211 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:340 Nokogiri::HTML4::ElementDescription::FRAMESET_CONTENTS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:208 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:328 Nokogiri::HTML4::ElementDescription::FRAME_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:138 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:168 Nokogiri::HTML4::ElementDescription::HEADING = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:212 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:341 Nokogiri::HTML4::ElementDescription::HEAD_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:213 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:342 Nokogiri::HTML4::ElementDescription::HEAD_CONTENTS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:175 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:241 Nokogiri::HTML4::ElementDescription::HREF_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:215 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:352 Nokogiri::HTML4::ElementDescription::HR_DEPR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:163 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:216 Nokogiri::HTML4::ElementDescription::HTML_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:152 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:197 Nokogiri::HTML4::ElementDescription::HTML_CDATA = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:217 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:354 Nokogiri::HTML4::ElementDescription::HTML_CONTENT = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:149 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:194 Nokogiri::HTML4::ElementDescription::HTML_FLOW = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:150 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:195 Nokogiri::HTML4::ElementDescription::HTML_INLINE = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:151 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:196 Nokogiri::HTML4::ElementDescription::HTML_PCDATA = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:155 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:200 Nokogiri::HTML4::ElementDescription::I18N = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:166 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:219 Nokogiri::HTML4::ElementDescription::I18N_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:218 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:355 Nokogiri::HTML4::ElementDescription::IFRAME_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:221 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:368 Nokogiri::HTML4::ElementDescription::IMG_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:144 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:189 Nokogiri::HTML4::ElementDescription::INLINE = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:177 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:243 Nokogiri::HTML4::ElementDescription::INLINE_P = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:227 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:398 Nokogiri::HTML4::ElementDescription::INPUT_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:200 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:298 Nokogiri::HTML4::ElementDescription::LABEL_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:232 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:421 Nokogiri::HTML4::ElementDescription::LABEL_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:259 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:484 Nokogiri::HTML4::ElementDescription::LANGUAGE_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:233 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:422 Nokogiri::HTML4::ElementDescription::LEGEND_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:235 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:424 Nokogiri::HTML4::ElementDescription::LINK_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:139 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:169 Nokogiri::HTML4::ElementDescription::LIST = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:279 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:547 Nokogiri::HTML4::ElementDescription::LI_ELT = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:237 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:434 Nokogiri::HTML4::ElementDescription::MAP_CONTENTS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:241 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:438 Nokogiri::HTML4::ElementDescription::META_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:146 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:191 Nokogiri::HTML4::ElementDescription::MODIFIER = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:238 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:435 Nokogiri::HTML4::ElementDescription::NAME_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:244 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:441 Nokogiri::HTML4::ElementDescription::NOFRAMES_CONTENT = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:246 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:443 Nokogiri::HTML4::ElementDescription::OBJECT_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:245 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:442 Nokogiri::HTML4::ElementDescription::OBJECT_CONTENTS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:249 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:459 Nokogiri::HTML4::ElementDescription::OBJECT_DEPR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:250 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:460 Nokogiri::HTML4::ElementDescription::OL_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:252 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:462 Nokogiri::HTML4::ElementDescription::OPTGROUP_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:253 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:463 Nokogiri::HTML4::ElementDescription::OPTION_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:251 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:461 Nokogiri::HTML4::ElementDescription::OPTION_ELT = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:254 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:464 Nokogiri::HTML4::ElementDescription::PARAM_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:137 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:167 Nokogiri::HTML4::ElementDescription::PCDATA = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:132 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:137 Nokogiri::HTML4::ElementDescription::PHRASE = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:256 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:466 Nokogiri::HTML4::ElementDescription::PRE_CONTENT = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:231 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:420 Nokogiri::HTML4::ElementDescription::PROMPT_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:186 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:269 Nokogiri::HTML4::ElementDescription::QUOTE_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:172 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:238 Nokogiri::HTML4::ElementDescription::ROWS_COLS_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:258 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:483 Nokogiri::HTML4::ElementDescription::SCRIPT_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:261 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:486 Nokogiri::HTML4::ElementDescription::SELECT_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:260 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:485 Nokogiri::HTML4::ElementDescription::SELECT_CONTENT = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:134 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:149 Nokogiri::HTML4::ElementDescription::SPECIAL = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:174 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:240 Nokogiri::HTML4::ElementDescription::SRC_ALT_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:263 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:497 Nokogiri::HTML4::ElementDescription::STYLE_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:264 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:498 Nokogiri::HTML4::ElementDescription::TABLE_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:267 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:510 Nokogiri::HTML4::ElementDescription::TABLE_CONTENTS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:266 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:509 Nokogiri::HTML4::ElementDescription::TABLE_DEPR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:270 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:520 Nokogiri::HTML4::ElementDescription::TALIGN_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:171 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:237 Nokogiri::HTML4::ElementDescription::TARGET_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:274 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:533 Nokogiri::HTML4::ElementDescription::TEXTAREA_ATTRS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:272 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:522 Nokogiri::HTML4::ElementDescription::TH_TD_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:271 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:521 Nokogiri::HTML4::ElementDescription::TH_TD_DEPR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:277 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:545 Nokogiri::HTML4::ElementDescription::TR_CONTENTS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:269 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:519 Nokogiri::HTML4::ElementDescription::TR_ELT = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:243 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:440 Nokogiri::HTML4::ElementDescription::TYPE_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:280 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:548 Nokogiri::HTML4::ElementDescription::UL_DEPR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:216 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:353 Nokogiri::HTML4::ElementDescription::VERSION_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/element_description_defaults.rb:255 +# source://nokogiri-1.15.3/lib/nokogiri/html4/element_description_defaults.rb:465 Nokogiri::HTML4::ElementDescription::WIDTH_ATTR = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/html4/entity_lookup.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:14 +class Nokogiri::HTML4::EncodingReader + # @return [EncodingReader] a new instance of EncodingReader + # + # source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:82 + def initialize(io); end + + # This method is used by the C extension so that + # Nokogiri::HTML4::Document#read_io() does not leak memory when + # EncodingFound is raised. + # + # source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:91 + def encoding_found; end + + # source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:93 + def read(len); end + + class << self + # source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:59 + def detect_encoding(chunk); end + end +end + +# source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:15 +class Nokogiri::HTML4::EncodingReader::EncodingFound < ::StandardError + # @return [EncodingFound] a new instance of EncodingFound + # + # source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:18 + def initialize(encoding); end + + # Returns the value of attribute found_encoding. + # + # source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:16 + def found_encoding; end +end + +# source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:46 +class Nokogiri::HTML4::EncodingReader::JumpSAXHandler < ::Nokogiri::HTML4::EncodingReader::SAXHandler + # @return [JumpSAXHandler] a new instance of JumpSAXHandler + # + # source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:47 + def initialize(jumptag); end + + # source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:52 + def start_element(name, attrs = T.unsafe(nil)); end +end + +# source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:24 +class Nokogiri::HTML4::EncodingReader::SAXHandler < ::Nokogiri::XML::SAX::Document + # @return [SAXHandler] a new instance of SAXHandler + # + # source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:27 + def initialize; end + + # Returns the value of attribute encoding. + # + # source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:25 + def encoding; end + + # source://nokogiri-1.15.3/lib/nokogiri/html4/encoding_reader.rb:32 + def start_element(name, attrs = T.unsafe(nil)); end +end + +# source://nokogiri-1.15.3/lib/nokogiri/html4/entity_lookup.rb:5 class Nokogiri::HTML4::EntityDescription < ::Struct; end -# source://nokogiri-1.13.8/lib/nokogiri/html4/entity_lookup.rb:7 +# source://nokogiri-1.15.3/lib/nokogiri/html4/entity_lookup.rb:7 class Nokogiri::HTML4::EntityLookup # Look up entity with +name+ # - # source://nokogiri-1.13.8/lib/nokogiri/html4/entity_lookup.rb:10 + # source://nokogiri-1.15.3/lib/nokogiri/html4/entity_lookup.rb:10 def [](name); end def get(_arg0); end @@ -1464,7 +1502,7 @@ end # Instance of Nokogiri::HTML4::EntityLookup # -# source://nokogiri-1.13.8/lib/nokogiri/html4.rb:35 +# source://nokogiri-1.15.3/lib/nokogiri/html4.rb:35 Nokogiri::HTML4::NamedCharacters = T.let(T.unsafe(nil), Nokogiri::HTML4::EntityLookup) # Nokogiri lets you write a SAX parser to process HTML but get HTML correction features. @@ -1473,7 +1511,7 @@ Nokogiri::HTML4::NamedCharacters = T.let(T.unsafe(nil), Nokogiri::HTML4::EntityL # # For more information on SAX parsers, see Nokogiri::XML::SAX # -# source://nokogiri-1.13.8/lib/nokogiri/html4/sax/parser_context.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/html4/sax/parser_context.rb:5 module Nokogiri::HTML4::SAX; end # This class lets you perform SAX style parsing on HTML with HTML error correction. @@ -1491,21 +1529,21 @@ module Nokogiri::HTML4::SAX; end # # For more information on SAX parsers, see Nokogiri::XML::SAX # -# source://nokogiri-1.13.8/lib/nokogiri/html4/sax/parser.rb:29 +# source://nokogiri-1.15.3/lib/nokogiri/html4/sax/parser.rb:27 class Nokogiri::HTML4::SAX::Parser < ::Nokogiri::XML::SAX::Parser # Parse a file with +filename+ # # @raise [ArgumentError] # @yield [ctx] # - # source://nokogiri-1.13.8/lib/nokogiri/html4/sax/parser.rb:51 + # source://nokogiri-1.15.3/lib/nokogiri/html4/sax/parser.rb:51 def parse_file(filename, encoding = T.unsafe(nil)); end # Parse given +io+ # # @yield [ctx] # - # source://nokogiri-1.13.8/lib/nokogiri/html4/sax/parser.rb:41 + # source://nokogiri-1.15.3/lib/nokogiri/html4/sax/parser.rb:41 def parse_io(io, encoding = T.unsafe(nil)); end # Parse html stored in +data+ using +encoding+ @@ -1513,14 +1551,14 @@ class Nokogiri::HTML4::SAX::Parser < ::Nokogiri::XML::SAX::Parser # @raise [TypeError] # @yield [ctx] # - # source://nokogiri-1.13.8/lib/nokogiri/html4/sax/parser.rb:30 + # source://nokogiri-1.15.3/lib/nokogiri/html4/sax/parser.rb:30 def parse_memory(data, encoding = T.unsafe(nil)); end end # Context for HTML SAX parsers. This class is usually not instantiated by the user. Instead, # you should be looking at Nokogiri::HTML4::SAX::Parser # -# source://nokogiri-1.13.8/lib/nokogiri/html4/sax/parser_context.rb:9 +# source://nokogiri-1.15.3/lib/nokogiri/html4/sax/parser_context.rb:9 class Nokogiri::HTML4::SAX::ParserContext < ::Nokogiri::XML::SAX::ParserContext def parse_with(_arg0); end @@ -1528,46 +1566,46 @@ class Nokogiri::HTML4::SAX::ParserContext < ::Nokogiri::XML::SAX::ParserContext def file(_arg0, _arg1); end def memory(_arg0, _arg1); end - # source://nokogiri-1.13.8/lib/nokogiri/html4/sax/parser_context.rb:10 + # source://nokogiri-1.15.3/lib/nokogiri/html4/sax/parser_context.rb:10 def new(thing, encoding = T.unsafe(nil)); end end end -# source://nokogiri-1.13.8/lib/nokogiri/html4/sax/push_parser.rb:6 +# source://nokogiri-1.15.3/lib/nokogiri/html4/sax/push_parser.rb:6 class Nokogiri::HTML4::SAX::PushParser < ::Nokogiri::XML::SAX::PushParser # @return [PushParser] a new instance of PushParser # - # source://nokogiri-1.13.8/lib/nokogiri/html4/sax/push_parser.rb:11 + # source://nokogiri-1.15.3/lib/nokogiri/html4/sax/push_parser.rb:11 def initialize(doc = T.unsafe(nil), file_name = T.unsafe(nil), encoding = T.unsafe(nil)); end # Write a +chunk+ of HTML to the PushParser. Any callback methods # that can be called will be called immediately. # - # source://nokogiri-1.13.8/lib/nokogiri/html4/sax/push_parser.rb:23 + # source://nokogiri-1.15.3/lib/nokogiri/html4/sax/push_parser.rb:23 def <<(chunk, last_chunk = T.unsafe(nil)); end # The Nokogiri::HTML4::SAX::Document on which the PushParser will be # operating # - # source://nokogiri-1.13.8/lib/nokogiri/html4/sax/push_parser.rb:9 + # source://nokogiri-1.15.3/lib/nokogiri/html4/sax/push_parser.rb:9 def document; end # The Nokogiri::HTML4::SAX::Document on which the PushParser will be # operating # - # source://nokogiri-1.13.8/lib/nokogiri/html4/sax/push_parser.rb:9 + # source://nokogiri-1.15.3/lib/nokogiri/html4/sax/push_parser.rb:9 def document=(_arg0); end # Finish the parsing. This method is only necessary for # Nokogiri::HTML4::SAX::Document#end_document to be called. # - # source://nokogiri-1.13.8/lib/nokogiri/html4/sax/push_parser.rb:31 + # source://nokogiri-1.15.3/lib/nokogiri/html4/sax/push_parser.rb:31 def finish; end # Write a +chunk+ of HTML to the PushParser. Any callback methods # that can be called will be called immediately. # - # source://nokogiri-1.13.8/lib/nokogiri/html4/sax/push_parser.rb:23 + # source://nokogiri-1.15.3/lib/nokogiri/html4/sax/push_parser.rb:23 def write(chunk, last_chunk = T.unsafe(nil)); end private @@ -1771,16 +1809,13 @@ end # # Since v1.12.0 # -# source://nokogiri-1.13.8/lib/nokogiri/html5/document.rb:23 +# source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:23 module Nokogiri::HTML5 class << self - # source://nokogiri-1.13.8/lib/nokogiri/html5.rb:457 - def escape_text(text, encoding, attribute_mode); end - # Parse a fragment from +string+. Convenience method for # {Nokogiri::HTML5::DocumentFragment.parse}. # - # source://nokogiri-1.13.8/lib/nokogiri/html5.rb:245 + # source://nokogiri-1.15.3/lib/nokogiri/html5.rb:238 def fragment(string, encoding = T.unsafe(nil), **options); end # Fetch and parse a HTML document from the web, following redirects, @@ -1791,25 +1826,22 @@ module Nokogiri::HTML5 # * :follow_limit => number of redirects which are followed # * :basic_auth => [username, password] # - # source://nokogiri-1.13.8/lib/nokogiri/html5.rb:256 + # source://nokogiri-1.15.3/lib/nokogiri/html5.rb:249 def get(uri, options = T.unsafe(nil)); end - # source://nokogiri-1.13.8/lib/nokogiri/html5.rb:265 - def get_impl(uri, options = T.unsafe(nil)); end - # Parse an HTML 5 document. Convenience method for {Nokogiri::HTML5::Document.parse} # - # source://nokogiri-1.13.8/lib/nokogiri/html5.rb:239 + # source://nokogiri-1.15.3/lib/nokogiri/html5.rb:232 def parse(string, url = T.unsafe(nil), encoding = T.unsafe(nil), **options, &block); end - # @return [Boolean] - # - # source://nokogiri-1.13.8/lib/nokogiri/html5.rb:469 - def prepend_newline?(node); end - - # source://nokogiri-1.13.8/lib/nokogiri/html5.rb:314 + # source://nokogiri-1.15.3/lib/nokogiri/html5.rb:260 def read_and_encode(string, encoding); end + private + + # source://nokogiri-1.15.3/lib/nokogiri/html5.rb:286 + def get_impl(uri, options = T.unsafe(nil)); end + # Charset sniffing is a complex and controversial topic that understandably isn't done _by # default_ by the Ruby Net::HTTP library. This being said, it is a very real problem for # consumers of HTML as the default for HTML is iso-8859-1, most "good" producers use utf-8, and @@ -1822,11 +1854,8 @@ module Nokogiri::HTML5 # http://bugs.ruby-lang.org/issues/2567 # http://www.w3.org/TR/html5/syntax.html#determining-the-character-encoding # - # source://nokogiri-1.13.8/lib/nokogiri/html5.rb:350 + # source://nokogiri-1.15.3/lib/nokogiri/html5.rb:347 def reencode(body, content_type = T.unsafe(nil)); end - - # source://nokogiri-1.13.8/lib/nokogiri/html5.rb:392 - def serialize_node_internal(current_node, io, encoding, options); end end end @@ -1834,42 +1863,112 @@ end # # πŸ’‘ HTML5 functionality is not available when running JRuby. # -# source://nokogiri-1.13.8/lib/nokogiri/html5/document.rb:27 +# source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:39 class Nokogiri::HTML5::Document < ::Nokogiri::HTML4::Document - # source://nokogiri-1.13.8/lib/nokogiri/html5/document.rb:58 - def fragment(tags = T.unsafe(nil)); end + # @return [Document] a new instance of Document + # + # source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:129 + def initialize(*args); end - # source://nokogiri-1.13.8/lib/nokogiri/html5/document.rb:62 + # :call-seq: + # fragment() β†’ Nokogiri::HTML5::DocumentFragment + # fragment(markup) β†’ Nokogiri::HTML5::DocumentFragment + # + # Parse a HTML5 document fragment from +markup+, returning a Nokogiri::HTML5::DocumentFragment. + # + # [Properties] + # - +markup+ (String) The HTML5 markup fragment to be parsed + # + # [Returns] + # Nokogiri::HTML5::DocumentFragment. This object's children will be empty if `markup` is not passed, is empty, or is `nil`. + # + # source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:147 + def fragment(markup = T.unsafe(nil)); end + + # Get the parser's quirks mode value. See HTML5::QuirksMode. + # + # This method returns `nil` if the parser was not invoked (e.g., `Nokogiri::HTML5::Document.new`). + # + # Since v1.14.0 + # + # source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:49 + def quirks_mode; end + + # source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:151 def to_xml(options = T.unsafe(nil), &block); end + # Get the url name for this document, as passed into Document.parse, Document.read_io, or + # Document.read_memory + # + # source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:42 + def url; end + # :call-seq: # xpath_doctype() β†’ Nokogiri::CSS::XPathVisitor::DoctypeConfig # # [Returns] The document type which determines CSS-to-XPath translation. # - # See XPathVisitor for more information. + # See CSS::XPathVisitor for more information. # - # source://nokogiri-1.13.8/lib/nokogiri/html5/document.rb:74 + # source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:163 def xpath_doctype; end class << self - # source://nokogiri-1.13.8/lib/nokogiri/html5/document.rb:80 - def do_parse(string_or_io, url, encoding, options); end - + # :call-seq: + # parse(input) + # parse(input, url=nil, encoding=nil, **options) + # parse(input, url=nil, encoding=nil) { |options| ... } + # + # Parse HTML5 input. + # + # [Parameters] + # - +input+ may be a String, or any object that responds to _read_ and _close_ such as an + # IO, or StringIO. + # + # - +url+ (optional) is a String indicating the canonical URI where this document is located. + # + # - +encoding+ (optional) is the encoding that should be used when processing + # the document. + # + # - +options+ (optional) is a configuration Hash (or keyword arguments) to set options + # during parsing. The three currently supported options are +:max_errors+, + # +:max_tree_depth+ and +:max_attributes+, described at Nokogiri::HTML5. + # + # ⚠ Note that these options are different than those made available by + # Nokogiri::XML::Document and Nokogiri::HTML4::Document. + # + # - +block+ (optional) is passed a configuration Hash on which parse options may be set. See + # Nokogiri::HTML5 for more information and usage. + # + # [Returns] Nokogiri::HTML5::Document + # # @yield [options] # - # source://nokogiri-1.13.8/lib/nokogiri/html5/document.rb:28 + # source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:80 def parse(string_or_io, url = T.unsafe(nil), encoding = T.unsafe(nil), **options, &block); end + # Create a new document from an IO object. + # + # πŸ’‘ Most users should prefer Document.parse to this method. + # # @raise [ArgumentError] # - # source://nokogiri-1.13.8/lib/nokogiri/html5/document.rb:46 + # source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:101 def read_io(io, url = T.unsafe(nil), encoding = T.unsafe(nil), **options); end + # Create a new document from a String. + # + # πŸ’‘ Most users should prefer Document.parse to this method. + # # @raise [ArgumentError] # - # source://nokogiri-1.13.8/lib/nokogiri/html5/document.rb:52 + # source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:110 def read_memory(string, url = T.unsafe(nil), encoding = T.unsafe(nil), **options); end + + private + + # source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:118 + def do_parse(string_or_io, url, encoding, options); end end end @@ -1877,76 +1976,77 @@ end # # πŸ’‘ HTML5 functionality is not available when running JRuby. # -# source://nokogiri-1.13.8/lib/nokogiri/html5/document_fragment.rb:27 +# source://nokogiri-1.15.3/lib/nokogiri/html5/document_fragment.rb:27 class Nokogiri::HTML5::DocumentFragment < ::Nokogiri::HTML4::DocumentFragment # Create a document fragment. # # @return [DocumentFragment] a new instance of DocumentFragment # - # source://nokogiri-1.13.8/lib/nokogiri/html5/document_fragment.rb:32 + # source://nokogiri-1.15.3/lib/nokogiri/html5/document_fragment.rb:39 def initialize(doc, tags = T.unsafe(nil), ctx = T.unsafe(nil), options = T.unsafe(nil)); end # Returns the value of attribute document. # - # source://nokogiri-1.13.8/lib/nokogiri/html5/document_fragment.rb:28 + # source://nokogiri-1.15.3/lib/nokogiri/html5/document_fragment.rb:28 def document; end # Sets the attribute document # # @param value the value to set the attribute document to. # - # source://nokogiri-1.13.8/lib/nokogiri/html5/document_fragment.rb:28 + # source://nokogiri-1.15.3/lib/nokogiri/html5/document_fragment.rb:28 def document=(_arg0); end # Returns the value of attribute errors. # - # source://nokogiri-1.13.8/lib/nokogiri/html5/document_fragment.rb:29 + # source://nokogiri-1.15.3/lib/nokogiri/html5/document_fragment.rb:29 def errors; end # Sets the attribute errors # # @param value the value to set the attribute errors to. # - # source://nokogiri-1.13.8/lib/nokogiri/html5/document_fragment.rb:29 + # source://nokogiri-1.15.3/lib/nokogiri/html5/document_fragment.rb:29 def errors=(_arg0); end - # source://nokogiri-1.13.8/lib/nokogiri/html5/document_fragment.rb:58 + # source://nokogiri-1.15.3/lib/nokogiri/html5/document_fragment.rb:65 def extract_params(params); end - # source://nokogiri-1.13.8/lib/nokogiri/html5/document_fragment.rb:44 + # Get the parser's quirks mode value. See HTML5::QuirksMode. + # + # This method returns `nil` if the parser was not invoked (e.g., `Nokogiri::HTML5::DocumentFragment.new(doc)`). + # + # Since v1.14.0 + # + # source://nokogiri-1.15.3/lib/nokogiri/html5/document_fragment.rb:36 + def quirks_mode; end + + # source://nokogiri-1.15.3/lib/nokogiri/html5/document_fragment.rb:51 def serialize(options = T.unsafe(nil), &block); end class << self # Parse a document fragment from +tags+, returning a Nodeset. # - # source://nokogiri-1.13.8/lib/nokogiri/html5/document_fragment.rb:51 + # source://nokogiri-1.15.3/lib/nokogiri/html5/document_fragment.rb:58 def parse(tags, encoding = T.unsafe(nil), options = T.unsafe(nil)); end end end -# HTML uses the XHTML namespace. -# -# source://nokogiri-1.13.8/lib/nokogiri/html5.rb:231 -Nokogiri::HTML5::HTML_NAMESPACE = T.let(T.unsafe(nil), String) - -# source://nokogiri-1.13.8/lib/nokogiri/html5.rb:232 -Nokogiri::HTML5::MATHML_NAMESPACE = T.let(T.unsafe(nil), String) - # Since v1.12.0 # # πŸ’‘ HTML5 functionality is not available when running JRuby. # -# source://nokogiri-1.13.8/lib/nokogiri/html5/node.rb:27 +# source://nokogiri-1.15.3/lib/nokogiri/html5/node.rb:30 module Nokogiri::HTML5::Node - # source://nokogiri-1.13.8/lib/nokogiri/html5/node.rb:67 + # source://nokogiri-1.15.3/lib/nokogiri/html5/node.rb:70 def fragment(tags); end - # source://nokogiri-1.13.8/lib/nokogiri/html5/node.rb:28 + # source://nokogiri-1.15.3/lib/nokogiri/html5/node.rb:31 def inner_html(options = T.unsafe(nil)); end # @yield [config] # - # source://nokogiri-1.13.8/lib/nokogiri/html5/node.rb:36 + # source://nokogiri-1.15.3/lib/nokogiri/html5/node.rb:39 def write_to(io, *options); end private @@ -1957,21 +2057,34 @@ module Nokogiri::HTML5::Node # annoying with attribute names like xml:lang since libxml2 will # actually create the xml namespace if it doesn't exist already. # - # source://nokogiri-1.13.8/lib/nokogiri/html5/node.rb:80 + # source://nokogiri-1.15.3/lib/nokogiri/html5/node.rb:83 def add_child_node_and_reparent_attrs(node); end end -# source://nokogiri-1.13.8/lib/nokogiri/html5.rb:233 -Nokogiri::HTML5::SVG_NAMESPACE = T.let(T.unsafe(nil), String) +# Enum for the HTML5 parser quirks mode values. Values returned by HTML5::Document#quirks_mode +# +# See https://dom.spec.whatwg.org/#concept-document-quirks for more information on HTML5 quirks +# mode. +# +# Since v1.14.0 +# +# source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:30 +module Nokogiri::HTML5::QuirksMode; end -# source://nokogiri-1.13.8/lib/nokogiri/html5.rb:234 -Nokogiri::HTML5::XLINK_NAMESPACE = T.let(T.unsafe(nil), String) +# The document was parsed in "limited-quirks" mode +# +# source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:33 +Nokogiri::HTML5::QuirksMode::LIMITED_QUIRKS = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/html5.rb:236 -Nokogiri::HTML5::XMLNS_NAMESPACE = T.let(T.unsafe(nil), String) +# The document was parsed in "no-quirks" mode +# +# source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:31 +Nokogiri::HTML5::QuirksMode::NO_QUIRKS = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/html5.rb:235 -Nokogiri::HTML5::XML_NAMESPACE = T.let(T.unsafe(nil), String) +# The document was parsed in "quirks" mode +# +# source://nokogiri-1.15.3/lib/nokogiri/html5/document.rb:32 +Nokogiri::HTML5::QuirksMode::QUIRKS = T.let(T.unsafe(nil), Integer) Nokogiri::LIBXML2_PATCHES = T.let(T.unsafe(nil), Array) Nokogiri::LIBXML_COMPILED_VERSION = T.let(T.unsafe(nil), String) @@ -1984,8 +2097,9 @@ Nokogiri::LIBXSLT_LOADED_VERSION = T.let(T.unsafe(nil), String) Nokogiri::LIBXSLT_PATCHES = T.let(T.unsafe(nil), Array) Nokogiri::OTHER_LIBRARY_VERSIONS = T.let(T.unsafe(nil), String) Nokogiri::PACKAGED_LIBRARIES = T.let(T.unsafe(nil), TrueClass) +Nokogiri::PRECOMPILED_LIBRARIES = T.let(T.unsafe(nil), TrueClass) -# source://nokogiri-1.13.8/lib/nokogiri/syntax_error.rb:4 +# source://nokogiri-1.15.3/lib/nokogiri/syntax_error.rb:4 class Nokogiri::SyntaxError < ::StandardError; end module Nokogiri::Test @@ -1996,88 +2110,95 @@ end # The version of Nokogiri you are using # -# source://nokogiri-1.13.8/lib/nokogiri/version/constant.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/version/constant.rb:5 Nokogiri::VERSION = T.let(T.unsafe(nil), String) # Detailed version info about Nokogiri and the installed extension dependencies. # -# source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:221 +# source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:222 Nokogiri::VERSION_INFO = T.let(T.unsafe(nil), Hash) -# source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:7 +# source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:7 class Nokogiri::VersionInfo include ::Singleton extend ::Singleton::SingletonClassMethods - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:33 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:33 def compiled_libxml_version; end - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:44 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:44 def compiled_libxslt_version; end - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:22 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:22 def engine; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:10 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:10 def jruby?; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:48 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:48 def libxml2?; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:52 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:52 def libxml2_has_iconv?; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:68 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:68 def libxml2_precompiled?; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:60 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:60 def libxml2_using_packaged?; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:64 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:64 def libxml2_using_system?; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:56 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:56 def libxslt_has_datetime?; end - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:26 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:26 def loaded_libxml_version; end - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:37 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:37 def loaded_libxslt_version; end - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:18 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:18 def ruby_minor; end - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:88 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:88 def to_hash; end - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:179 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:180 def to_markdown; end - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:72 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:72 def warnings; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/version/info.rb:14 + # source://nokogiri-1.15.3/lib/nokogiri/version/info.rb:14 def windows?; end + + class << self + private + + def allocate; end + def new(*_arg0); end + end end -# source://nokogiri-1.13.8/lib/nokogiri/xml.rb:12 +# source://nokogiri-1.15.3/lib/nokogiri/xml.rb:12 module Nokogiri::XML class << self # Parse an XML document using the Nokogiri::XML::Reader API. See @@ -2085,43 +2206,90 @@ module Nokogiri::XML # # @yield [options] # - # source://nokogiri-1.13.8/lib/nokogiri/xml.rb:23 + # source://nokogiri-1.15.3/lib/nokogiri/xml.rb:23 def Reader(string_or_io, url = T.unsafe(nil), encoding = T.unsafe(nil), options = T.unsafe(nil)); end # Create a new Nokogiri::XML::RelaxNG document from +string_or_io+. # See Nokogiri::XML::RelaxNG for an example. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/relax_ng.rb:9 + # source://nokogiri-1.15.3/lib/nokogiri/xml/relax_ng.rb:9 def RelaxNG(string_or_io, options = T.unsafe(nil)); end # Create a new Nokogiri::XML::Schema object using a +string_or_io+ # object. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/schema.rb:9 + # source://nokogiri-1.15.3/lib/nokogiri/xml/schema.rb:9 def Schema(string_or_io, options = T.unsafe(nil)); end # Parse a fragment from +string+ in to a NodeSet. # - # source://nokogiri-1.13.8/lib/nokogiri/xml.rb:42 + # source://nokogiri-1.15.3/lib/nokogiri/xml.rb:42 def fragment(string, options = T.unsafe(nil), &block); end # Parse XML. Convenience method for Nokogiri::XML::Document.parse # - # source://nokogiri-1.13.8/lib/nokogiri/xml.rb:36 + # source://nokogiri-1.15.3/lib/nokogiri/xml.rb:36 def parse(thing, url = T.unsafe(nil), encoding = T.unsafe(nil), options = T.unsafe(nil), &block); end end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/attr.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/xml/attr.rb:6 class Nokogiri::XML::Attr < ::Nokogiri::XML::Node def content=(_arg0); end + + # :call-seq: deconstruct_keys(array_of_names) β†’ Hash + # + # Returns a hash describing the Attr, to use in pattern matching. + # + # Valid keys and their values: + # - +name+ β†’ (String) The name of the attribute. + # - +value+ β†’ (String) The value of the attribute. + # - +namespace+ β†’ (Namespace, nil) The Namespace of the attribute, or +nil+ if there is no namespace. + # + # ⚑ This is an experimental feature, available since v1.14.0 + # + # *Example* + # + # doc = Nokogiri::XML.parse(<<~XML) + # + # + # + # + # XML + # + # attributes = doc.root.elements.first.attribute_nodes + # # => [#(Attr:0x35c { name = "foo", value = "abc" }), + # # #(Attr:0x370 { + # # name = "bar", + # # namespace = #(Namespace:0x384 { + # # prefix = "noko", + # # href = "http://nokogiri.org/ns/noko" + # # }), + # # value = "def" + # # })] + # + # attributes.first.deconstruct_keys([:name, :value, :namespace]) + # # => {:name=>"foo", :value=>"abc", :namespace=>nil} + # + # attributes.last.deconstruct_keys([:name, :value, :namespace]) + # # => {:name=>"bar", + # # :value=>"def", + # # :namespace=> + # # #(Namespace:0x384 { + # # prefix = "noko", + # # href = "http://nokogiri.org/ns/noko" + # # })} + # + # source://nokogiri-1.15.3/lib/nokogiri/xml/attr.rb:55 + def deconstruct_keys(keys); end + def to_s; end def value; end def value=(_arg0); end private - # source://nokogiri-1.13.8/lib/nokogiri/xml/attr.rb:12 + # source://nokogiri-1.15.3/lib/nokogiri/xml/attr.rb:61 def inspect_attributes; end class << self @@ -2131,14 +2299,16 @@ end # Represents an attribute declaration in a DTD # -# source://nokogiri-1.13.8/lib/nokogiri/xml/attribute_decl.rb:7 +# source://nokogiri-1.15.3/lib/nokogiri/xml/attribute_decl.rb:7 class Nokogiri::XML::AttributeDecl < ::Nokogiri::XML::Node def attribute_type; end def default; end def enumeration; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/attribute_decl.rb:15 - def inspect; end + private + + # source://nokogiri-1.15.3/lib/nokogiri/xml/attribute_decl.rb:17 + def inspect_attributes; end end # Nokogiri builder can be used for building XML and HTML documents. @@ -2372,7 +2542,7 @@ end # # == Document Types # -# To create a document type (DTD), access use the Builder#doc method to get +# To create a document type (DTD), use the Builder#doc method to get # the current context document. Then call Node#create_internal_subset to # create the DTD node. # @@ -2399,7 +2569,7 @@ end # # # -# source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:264 +# source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:264 class Nokogiri::XML::Builder include ::Nokogiri::ClassResolver @@ -2414,84 +2584,84 @@ class Nokogiri::XML::Builder # # @return [Builder] a new instance of Builder # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:307 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:307 def initialize(options = T.unsafe(nil), root = T.unsafe(nil), &block); end # Append the given raw XML +string+ to the document # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:390 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:390 def <<(string); end # Build a tag that is associated with namespace +ns+. Raises an # ArgumentError if +ns+ has not been defined higher in the tree. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:358 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:358 def [](ns); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:278 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:278 def arity; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:278 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:278 def arity=(_arg0); end # Create a CDATA Node with content of +string+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:345 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:345 def cdata(string); end # Create a Comment Node with content of +string+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:351 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:351 def comment(string); end # A context object for use when the block has no arguments # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:276 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:276 def context; end # A context object for use when the block has no arguments # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:276 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:276 def context=(_arg0); end # The current Document object being built # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:270 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:270 def doc; end # The current Document object being built # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:270 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:270 def doc=(_arg0); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:394 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:394 def method_missing(method, *args, &block); end # The parent of the current node being built # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:273 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:273 def parent; end # The parent of the current node being built # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:273 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:273 def parent=(_arg0); end # Create a Text Node with content of +string+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:339 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:339 def text(string); end # Convert this Builder object to XML # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:377 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:377 def to_xml(*args); end private # Insert +node+ as a child of the current Node # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:423 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:423 def insert(node, &block); end class << self @@ -2508,36 +2678,36 @@ class Nokogiri::XML::Builder # xml.awesome # add the "awesome" tag below "some_tag" # end # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:294 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:294 def with(root, &block); end end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:267 +# source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:267 Nokogiri::XML::Builder::DEFAULT_DOCUMENT_OPTIONS = T.let(T.unsafe(nil), Hash) -# source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:442 +# source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:442 class Nokogiri::XML::Builder::NodeBuilder # @return [NodeBuilder] a new instance of NodeBuilder # - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:443 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:443 def initialize(node, doc_builder); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:452 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:452 def [](k); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:448 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:448 def []=(k, v); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/builder.rb:456 + # source://nokogiri-1.15.3/lib/nokogiri/xml/builder.rb:456 def method_missing(method, *args, &block); end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/cdata.rb:7 +# source://nokogiri-1.15.3/lib/nokogiri/xml/cdata.rb:5 class Nokogiri::XML::CDATA < ::Nokogiri::XML::Text # Get the name of this CDATA node # - # source://nokogiri-1.13.8/lib/nokogiri/xml/cdata.rb:8 + # source://nokogiri-1.15.3/lib/nokogiri/xml/cdata.rb:8 def name; end class << self @@ -2545,7 +2715,7 @@ class Nokogiri::XML::CDATA < ::Nokogiri::XML::Text end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/character_data.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/xml/character_data.rb:5 class Nokogiri::XML::CharacterData < ::Nokogiri::XML::Node include ::Nokogiri::XML::PP::CharacterData end @@ -2556,11 +2726,11 @@ class Nokogiri::XML::Comment < ::Nokogiri::XML::CharacterData end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/dtd.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/xml/dtd.rb:5 class Nokogiri::XML::DTD < ::Nokogiri::XML::Node def attributes; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/dtd.rb:17 + # source://nokogiri-1.15.3/lib/nokogiri/xml/dtd.rb:17 def each; end def elements; end @@ -2569,15 +2739,15 @@ class Nokogiri::XML::DTD < ::Nokogiri::XML::Node # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/dtd.rb:27 + # source://nokogiri-1.15.3/lib/nokogiri/xml/dtd.rb:27 def html5_dtd?; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/dtd.rb:23 + # source://nokogiri-1.15.3/lib/nokogiri/xml/dtd.rb:23 def html_dtd?; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/dtd.rb:13 + # source://nokogiri-1.15.3/lib/nokogiri/xml/dtd.rb:13 def keys; end def notations; end @@ -2592,17 +2762,17 @@ end # For searching a Document, see Nokogiri::XML::Searchable#css and # Nokogiri::XML::Searchable#xpath # -# source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:17 +# source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:14 class Nokogiri::XML::Document < ::Nokogiri::XML::Node # @return [Document] a new instance of Document # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:168 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:178 def initialize(*args); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:384 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:394 def <<(node_or_tags); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:384 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:394 def add_child(node_or_tags); end def canonicalize(*_arg0); end @@ -2644,17 +2814,17 @@ class Nokogiri::XML::Document < ::Nokogiri::XML::Node # # {"xmlns:foo" => "baz"} # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:307 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:317 def collect_namespaces; end # Create a CDATA Node containing +string+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:252 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:262 def create_cdata(string, &block); end # Create a Comment Node containing +string+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:257 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:267 def create_comment(string, &block); end # :call-seq: @@ -2705,29 +2875,71 @@ class Nokogiri::XML::Document < ::Nokogiri::XML::Node # # doc.create_element("div") { |node| node["class"] = "blue" if before_noon? } # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:222 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:232 def create_element(name, *contents_or_attrs, &block); end def create_entity(*_arg0); end # Create a Text Node with +string+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:247 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:257 def create_text_node(string, &block); end + # :call-seq: deconstruct_keys(array_of_names) β†’ Hash + # + # Returns a hash describing the Document, to use in pattern matching. + # + # Valid keys and their values: + # - +root+ β†’ (Node, nil) The root node of the Document, or +nil+ if the document is empty. + # + # In the future, other keys may allow accessing things like doctype and processing + # instructions. If you have a use case and would like this functionality, please let us know + # by opening an issue or a discussion on the github project. + # + # ⚑ This is an experimental feature, available since v1.14.0 + # + # *Example* + # + # doc = Nokogiri::XML.parse(<<~XML) + # + # + # + # + # XML + # + # doc.deconstruct_keys([:root]) + # # => {:root=> + # # #(Element:0x35c { + # # name = "root", + # # children = [ + # # #(Text "\n" + " "), + # # #(Element:0x370 { name = "child", children = [ #(Text "\n")] }), + # # #(Text "\n")] + # # })} + # + # *Example* of an empty document + # + # doc = Nokogiri::XML::Document.new + # + # doc.deconstruct_keys([:root]) + # # => {:root=>nil} + # + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:458 + def deconstruct_keys(keys); end + # Apply any decorators to +node+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:355 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:365 def decorate(node); end # Get the list of decorators given +key+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:314 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:324 def decorators(key); end # A reference to +self+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:267 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:277 def document; end def dup(*_arg0); end @@ -2738,25 +2950,25 @@ class Nokogiri::XML::Document < ::Nokogiri::XML::Node # # [Returns] Array # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:119 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:128 def errors; end # The errors found while parsing a document. # # [Returns] Array # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:119 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:128 def errors=(_arg0); end # Create a Nokogiri::XML::DocumentFragment from +tags+ # Returns an empty fragment if +tags+ is nil. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:376 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:386 def fragment(tags = T.unsafe(nil)); end # The name of this document. Always returns "document" # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:262 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:272 def name; end # When `true`, reparented elements without a namespace will inherit their new parent's @@ -2805,7 +3017,7 @@ class Nokogiri::XML::Document < ::Nokogiri::XML::Node # # Since v1.12.4 # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:166 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:175 def namespace_inheritance; end # When `true`, reparented elements without a namespace will inherit their new parent's @@ -2854,12 +3066,12 @@ class Nokogiri::XML::Document < ::Nokogiri::XML::Node # # Since v1.12.4 # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:166 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:175 def namespace_inheritance=(_arg0); end # Get the hash of namespaces on the root Nokogiri::XML::Node # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:369 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:379 def namespaces; end def remove_namespaces!; end @@ -2881,10 +3093,10 @@ class Nokogiri::XML::Document < ::Nokogiri::XML::Node # irb> doc.slop! # ... which does absolutely nothing. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:344 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:354 def slop!; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1187 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1280 def to_xml(*args, &block); end def url; end @@ -2892,7 +3104,7 @@ class Nokogiri::XML::Document < ::Nokogiri::XML::Node # Validate this Document against it's DTD. Returns a list of errors on # the document or +nil+ when there is no DTD. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:322 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:332 def validate; end def version; end @@ -2904,20 +3116,15 @@ class Nokogiri::XML::Document < ::Nokogiri::XML::Node # # See XPathVisitor for more information. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:404 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:414 def xpath_doctype; end private - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:418 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:466 def inspect_attributes; end class << self - # @return [Boolean] - # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:410 - def empty_doc?(string_or_io); end - def new(*_arg0); end # Parse an XML file. @@ -2947,31 +3154,38 @@ class Nokogiri::XML::Document < ::Nokogiri::XML::Node # # @yield [options] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:48 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:48 def parse(string_or_io, url = T.unsafe(nil), encoding = T.unsafe(nil), options = T.unsafe(nil)); end def read_io(_arg0, _arg1, _arg2, _arg3); end def read_memory(_arg0, _arg1, _arg2, _arg3); end + + private + + # @return [Boolean] + # + # source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:83 + def empty_doc?(string_or_io); end end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:416 +# source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:464 Nokogiri::XML::Document::IMPLIED_XPATH_CONTEXTS = T.let(T.unsafe(nil), Array) -# source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:19 +# source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:19 Nokogiri::XML::Document::NCNAME_CHAR = T.let(T.unsafe(nil), String) -# source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:20 +# source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:20 Nokogiri::XML::Document::NCNAME_RE = T.let(T.unsafe(nil), Regexp) # See http://www.w3.org/TR/REC-xml-names/#ns-decl for more details. Note that we're not # attempting to handle unicode characters partly because libxml2 doesn't handle unicode # characters in NCNAMEs. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/document.rb:18 +# source://nokogiri-1.15.3/lib/nokogiri/xml/document.rb:18 Nokogiri::XML::Document::NCNAME_START_CHAR = T.let(T.unsafe(nil), String) -# source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:7 +# source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:6 class Nokogiri::XML::DocumentFragment < ::Nokogiri::XML::Node # Create a new DocumentFragment from +tags+. # @@ -2982,7 +3196,7 @@ class Nokogiri::XML::DocumentFragment < ::Nokogiri::XML::Node # @return [DocumentFragment] a new instance of DocumentFragment # @yield [options] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:18 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:19 def initialize(document, tags = T.unsafe(nil), ctx = T.unsafe(nil), options = T.unsafe(nil)); end # call-seq: css *rules, [namespace-bindings, custom-pseudo-class] @@ -2992,26 +3206,70 @@ class Nokogiri::XML::DocumentFragment < ::Nokogiri::XML::Node # # For more information see Nokogiri::XML::Searchable#css # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:105 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:102 def css(*args); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:41 + # :call-seq: deconstruct() β†’ Array + # + # Returns the root nodes of this document fragment as an array, to use in pattern matching. + # + # πŸ’‘ Note that text nodes are returned as well as elements. If you wish to operate only on + # root elements, you should deconstruct the array returned by + # DocumentFragment#elements. + # + # ⚑ This is an experimental feature, available since v1.14.0 + # + # *Example* + # + # frag = Nokogiri::HTML5.fragment(<<~HTML) + #
Start
+ # This is a shortcut for you. + #
End
+ # HTML + # + # frag.deconstruct + # # => [#(Element:0x35c { name = "div", children = [ #(Text "Start")] }), + # # #(Text "\n" + "This is a "), + # # #(Element:0x370 { + # # name = "a", + # # attributes = [ #(Attr:0x384 { name = "href", value = "#jump" })], + # # children = [ #(Text "shortcut")] + # # }), + # # #(Text " for you.\n"), + # # #(Element:0x398 { name = "div", children = [ #(Text "End")] }), + # # #(Text "\n")] + # + # *Example* only the elements, not the text nodes. + # + # frag.elements.deconstruct + # # => [#(Element:0x35c { name = "div", children = [ #(Text "Start")] }), + # # #(Element:0x370 { + # # name = "a", + # # attributes = [ #(Attr:0x384 { name = "href", value = "#jump" })], + # # children = [ #(Text "shortcut")] + # # }), + # # #(Element:0x398 { name = "div", children = [ #(Text "End")] })] + # + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:190 + def deconstruct; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:42 def dup; end # A list of Nokogiri::XML::SyntaxError found when parsing a document # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:139 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:136 def errors; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:143 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:140 def errors=(things); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:147 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:144 def fragment(data); end # return the name for DocumentFragment # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:53 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:54 def name; end # call-seq: search *paths, [namespace-bindings, xpath-variable-bindings, custom-handler-class] @@ -3020,42 +3278,42 @@ class Nokogiri::XML::DocumentFragment < ::Nokogiri::XML::Node # # For more information see Nokogiri::XML::Searchable#search # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:124 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:121 def search(*rules); end # Convert this DocumentFragment to a string # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:59 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:60 def serialize; end # Convert this DocumentFragment to html # See Nokogiri::XML::NodeSet#to_html # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:66 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:67 def to_html(*args); end # Convert this DocumentFragment to a string # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:59 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:60 def to_s; end # Convert this DocumentFragment to xhtml # See Nokogiri::XML::NodeSet#to_xhtml # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:80 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:79 def to_xhtml(*args); end # Convert this DocumentFragment to xml # See Nokogiri::XML::NodeSet#to_xml # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:94 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:91 def to_xml(*args); end private # fix for issue 770 # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:154 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:197 def namespace_declarations(ctx); end class << self @@ -3063,7 +3321,7 @@ class Nokogiri::XML::DocumentFragment < ::Nokogiri::XML::Node # Create a Nokogiri::XML::DocumentFragment from +tags+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/document_fragment.rb:8 + # source://nokogiri-1.15.3/lib/nokogiri/xml/document_fragment.rb:9 def parse(tags, options = T.unsafe(nil), &block); end end end @@ -3078,19 +3336,21 @@ class Nokogiri::XML::Element < ::Nokogiri::XML::Node; end # ]> # # -# ElementContent represents the tree inside the tag shown above -# that lists the possible content for the div1 tag. +# ElementContent represents the binary tree inside the tag shown above that lists the +# possible content for the div1 tag. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/element_content.rb:16 +# source://nokogiri-1.15.3/lib/nokogiri/xml/element_content.rb:16 class Nokogiri::XML::ElementContent + include ::Nokogiri::XML::PP::Node + # Get the children of this ElementContent node # - # source://nokogiri-1.13.8/lib/nokogiri/xml/element_content.rb:33 + # source://nokogiri-1.15.3/lib/nokogiri/xml/element_content.rb:35 def children; end # Returns the value of attribute document. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/element_content.rb:29 + # source://nokogiri-1.15.3/lib/nokogiri/xml/element_content.rb:31 def document; end def name; end @@ -3102,61 +3362,66 @@ class Nokogiri::XML::ElementContent def c1; end def c2; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/element_content.rb:41 + def inspect_attributes; end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/element_content.rb:19 +# source://nokogiri-1.15.3/lib/nokogiri/xml/element_content.rb:21 Nokogiri::XML::ElementContent::ELEMENT = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/xml/element_content.rb:26 +# source://nokogiri-1.15.3/lib/nokogiri/xml/element_content.rb:28 Nokogiri::XML::ElementContent::MULT = T.let(T.unsafe(nil), Integer) # Possible content occurrences # -# source://nokogiri-1.13.8/lib/nokogiri/xml/element_content.rb:24 +# source://nokogiri-1.15.3/lib/nokogiri/xml/element_content.rb:26 Nokogiri::XML::ElementContent::ONCE = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/xml/element_content.rb:25 +# source://nokogiri-1.15.3/lib/nokogiri/xml/element_content.rb:27 Nokogiri::XML::ElementContent::OPT = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/xml/element_content.rb:21 +# source://nokogiri-1.15.3/lib/nokogiri/xml/element_content.rb:23 Nokogiri::XML::ElementContent::OR = T.let(T.unsafe(nil), Integer) # Possible definitions of type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/element_content.rb:18 +# source://nokogiri-1.15.3/lib/nokogiri/xml/element_content.rb:20 Nokogiri::XML::ElementContent::PCDATA = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/xml/element_content.rb:27 +# source://nokogiri-1.15.3/lib/nokogiri/xml/element_content.rb:29 Nokogiri::XML::ElementContent::PLUS = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/xml/element_content.rb:20 +# source://nokogiri-1.15.3/lib/nokogiri/xml/element_content.rb:22 Nokogiri::XML::ElementContent::SEQ = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/xml/element_decl.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/xml/element_decl.rb:5 class Nokogiri::XML::ElementDecl < ::Nokogiri::XML::Node def content; end def element_type; end + def prefix; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/element_decl.rb:10 - def inspect; end + private - def prefix; end + # source://nokogiri-1.15.3/lib/nokogiri/xml/element_decl.rb:12 + def inspect_attributes; end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/entity_decl.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/xml/entity_decl.rb:5 class Nokogiri::XML::EntityDecl < ::Nokogiri::XML::Node def content; end def entity_type; end def external_id; end - - # source://nokogiri-1.13.8/lib/nokogiri/xml/entity_decl.rb:16 - def inspect; end - def original_content; end def system_id; end + private + + # source://nokogiri-1.15.3/lib/nokogiri/xml/entity_decl.rb:18 + def inspect_attributes; end + class << self - # source://nokogiri-1.13.8/lib/nokogiri/xml/entity_decl.rb:12 + # source://nokogiri-1.15.3/lib/nokogiri/xml/entity_decl.rb:12 def new(name, doc, *args); end end end @@ -3168,12 +3433,12 @@ Nokogiri::XML::EntityDecl::INTERNAL_GENERAL = T.let(T.unsafe(nil), Integer) Nokogiri::XML::EntityDecl::INTERNAL_PARAMETER = T.let(T.unsafe(nil), Integer) Nokogiri::XML::EntityDecl::INTERNAL_PREDEFINED = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/xml/entity_reference.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/xml/entity_reference.rb:5 class Nokogiri::XML::EntityReference < ::Nokogiri::XML::Node - # source://nokogiri-1.13.8/lib/nokogiri/xml/entity_reference.rb:6 + # source://nokogiri-1.15.3/lib/nokogiri/xml/entity_reference.rb:6 def children; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/entity_reference.rb:15 + # source://nokogiri-1.15.3/lib/nokogiri/xml/entity_reference.rb:15 def inspect_attributes; end class << self @@ -3181,13 +3446,51 @@ class Nokogiri::XML::EntityReference < ::Nokogiri::XML::Node end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/namespace.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/xml/namespace.rb:6 class Nokogiri::XML::Namespace include ::Nokogiri::XML::PP::Node + # :call-seq: deconstruct_keys(array_of_names) β†’ Hash + # + # Returns a hash describing the Namespace, to use in pattern matching. + # + # Valid keys and their values: + # - +prefix+ β†’ (String, nil) The namespace's prefix, or +nil+ if there is no prefix (e.g., default namespace). + # - +href+ β†’ (String) The namespace's URI + # + # ⚑ This is an experimental feature, available since v1.14.0 + # + # *Example* + # + # doc = Nokogiri::XML.parse(<<~XML) + # + # + # + # + # + # XML + # + # doc.root.elements.first.namespace + # # => #(Namespace:0x35c { href = "http://nokogiri.org/ns/default" }) + # + # doc.root.elements.first.namespace.deconstruct_keys([:prefix, :href]) + # # => {:prefix=>nil, :href=>"http://nokogiri.org/ns/default"} + # + # doc.root.elements.last.namespace + # # => #(Namespace:0x370 { + # # prefix = "noko", + # # href = "http://nokogiri.org/ns/noko" + # # }) + # + # doc.root.elements.last.namespace.deconstruct_keys([:prefix, :href]) + # # => {:prefix=>"noko", :href=>"http://nokogiri.org/ns/noko"} + # + # source://nokogiri-1.15.3/lib/nokogiri/xml/namespace.rb:47 + def deconstruct_keys(keys); end + # Returns the value of attribute document. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/namespace.rb:7 + # source://nokogiri-1.15.3/lib/nokogiri/xml/namespace.rb:8 def document; end def href; end @@ -3195,7 +3498,7 @@ class Nokogiri::XML::Namespace private - # source://nokogiri-1.13.8/lib/nokogiri/xml/namespace.rb:11 + # source://nokogiri-1.15.3/lib/nokogiri/xml/namespace.rb:53 def inspect_attributes; end end @@ -3247,7 +3550,7 @@ end # # See the method group entitled Node@Searching+via+XPath+or+CSS+Queries for the full set of methods. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:56 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:56 class Nokogiri::XML::Node include ::Nokogiri::HTML5::Node include ::Nokogiri::XML::PP::Node @@ -3277,28 +3580,30 @@ class Nokogiri::XML::Node # # @return [Node] a new instance of Node # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:126 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:126 def initialize(name, document); end # Add +node_or_tags+ as a child of this Node. - # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup. # - # Returns self, to support chaining of calls (e.g., root << child1 << child2) + # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a String + # containing markup. + # + # Returns +self+, to support chaining of calls (e.g., root << child1 << child2) # # Also see related method +add_child+. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:191 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:256 def <<(node_or_tags); end # Compare two Node objects with respect to their Document. Nodes from # different documents cannot be compared. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1163 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1256 def <=>(other); end # Test to see if this Node is equal to +other+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1153 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1246 def ==(other); end # :call-seq: [](name) β†’ (String, nil) @@ -3331,7 +3636,7 @@ class Nokogiri::XML::Node # doc.at_css("child").attribute_with_ns("size", "http://example.com/widths").value # # => "broad" # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:419 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:512 def [](name); end # :call-seq: []=(name, value) β†’ value @@ -3368,22 +3673,25 @@ class Nokogiri::XML::Node # # " \n" + # # "\n" # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:457 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:550 def []=(name, value); end # Accept a visitor. This method calls "visit" on +visitor+ with self. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1147 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1240 def accept(visitor); end # Add +node_or_tags+ as a child of this Node. - # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup. # - # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is a DocumentFragment, NodeSet, or string). + # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a String + # containing markup. + # + # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is + # a DocumentFragment, NodeSet, or String). # # Also see related method +<<+. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:145 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:148 def add_child(node_or_tags); end # :call-seq: add_class(names) β†’ self @@ -3427,50 +3735,58 @@ class Nokogiri::XML::Node # node # =>
# node.add_class(["section", "header"]) # =>
# - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:622 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:715 def add_class(names); end def add_namespace(_arg0, _arg1); end def add_namespace_definition(_arg0, _arg1); end # Insert +node_or_tags+ after this Node (as a sibling). - # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup. # - # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is a DocumentFragment, NodeSet, or string). + # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a String + # containing markup. + # + # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is + # a DocumentFragment, NodeSet, or String). # # Also see related method +after+. # # @raise [ArgumentError] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:217 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:288 def add_next_sibling(node_or_tags); end # Insert +node_or_tags+ before this Node (as a sibling). - # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup. # - # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is a DocumentFragment, NodeSet, or string). + # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a String + # containing markup. + # + # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is + # a DocumentFragment, NodeSet, or String). # # Also see related method +before+. # # @raise [ArgumentError] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:203 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:271 def add_previous_sibling(node_or_tags); end # Insert +node_or_tags+ after this node (as a sibling). - # +node_or_tags+ can be a Nokogiri::XML::Node, a Nokogiri::XML::DocumentFragment, or a string containing markup. # - # Returns self, to support chaining of calls. + # +node_or_tags+ can be a Nokogiri::XML::Node, a Nokogiri::XML::DocumentFragment, or a String + # containing markup. + # + # Returns +self+, to support chaining of calls. # # Also see related method +add_next_sibling+. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:243 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:318 def after(node_or_tags); end # Get a list of ancestor Node for this Node. If +selector+ is given, # the ancestors must match +selector+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1116 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1209 def ancestors(selector = T.unsafe(nil)); end # :call-seq: append_class(names) β†’ self @@ -3512,7 +3828,7 @@ class Nokogiri::XML::Node # node.append_class(["section", "header"]) # =>
# node.append_class(["section", "header"]) # =>
# - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:666 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:759 def append_class(names); end # :call-seq: [](name) β†’ (String, nil) @@ -3545,7 +3861,7 @@ class Nokogiri::XML::Node # doc.at_css("child").attribute_with_ns("size", "http://example.com/widths").value # # => "broad" # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:419 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:512 def attr(name); end def attribute(_arg0); end @@ -3606,40 +3922,44 @@ class Nokogiri::XML::Node # # value = "tall" # # })} # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:516 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:609 def attributes; end # Insert +node_or_tags+ before this node (as a sibling). - # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup. # - # Returns self, to support chaining of calls. + # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a String + # containing markup. + # + # Returns +self+, to support chaining of calls. # # Also see related method +add_previous_sibling+. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:231 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:304 def before(node_or_tags); end def blank?; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1306 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1407 def canonicalize(mode = T.unsafe(nil), inclusive_namespaces = T.unsafe(nil), with_comments = T.unsafe(nil)); end # Returns true if this is a CDATA # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1037 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1130 def cdata?; end def child; end def children; end - # Set the inner html for this Node +node_or_tags+ - # +node_or_tags+ can be a Nokogiri::XML::Node, a Nokogiri::XML::DocumentFragment, or a string containing markup. + # Set the content for this Node +node_or_tags+ + # + # +node_or_tags+ can be a Nokogiri::XML::Node, a Nokogiri::XML::DocumentFragment, or a String + # containing markup. # # Also see related method +inner_html=+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:262 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:349 def children=(node_or_tags); end # :call-seq: classes() β†’ Array @@ -3661,7 +3981,7 @@ class Nokogiri::XML::Node # node # =>
# node.classes # => ["section", "title", "header"] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:576 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:669 def classes; end def clone(*_arg0); end @@ -3670,14 +3990,15 @@ class Nokogiri::XML::Node # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1032 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1125 def comment?; end def content; end - # Set the Node's content to a Text node containing +string+. The string gets XML escaped, not interpreted as markup. + # Set the Node's content to a Text node containing +string+. The string gets XML escaped, not + # interpreted as markup. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:318 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:411 def content=(string); end def create_external_subset(_arg0, _arg1, _arg2); end @@ -3685,12 +4006,64 @@ class Nokogiri::XML::Node # Get the path to this node as a CSS expression # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1107 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1200 def css_path; end + # :call-seq: deconstruct_keys(array_of_names) β†’ Hash + # + # Returns a hash describing the Node, to use in pattern matching. + # + # Valid keys and their values: + # - +name+ β†’ (String) The name of this node, or "text" if it is a Text node. + # - +namespace+ β†’ (Namespace, nil) The namespace of this node, or nil if there is no namespace. + # - +attributes+ β†’ (Array) The attributes of this node. + # - +children+ β†’ (Array) The children of this node. πŸ’‘ Note this includes text nodes. + # - +elements+ β†’ (Array) The child elements of this node. πŸ’‘ Note this does not include text nodes. + # - +content+ β†’ (String) The contents of all the text nodes in this node's subtree. See #content. + # - +inner_html+ β†’ (String) The inner markup for the children of this node. See #inner_html. + # + # ⚑ This is an experimental feature, available since v1.14.0 + # + # *Example* + # + # doc = Nokogiri::XML.parse(<<~XML) + # + # + # First + # Second + # + # XML + # + # doc.root.deconstruct_keys([:name, :namespace]) + # # => {:name=>"parent", + # # :namespace=> + # # #(Namespace:0x35c { href = "http://nokogiri.org/ns/default" })} + # + # doc.root.deconstruct_keys([:inner_html, :content]) + # # => {:content=>"\n" + " First\n" + " Second\n", + # # :inner_html=> + # # "\n" + + # # " First\n" + + # # " Second\n"} + # + # doc.root.elements.first.deconstruct_keys([:attributes]) + # # => {:attributes=> + # # [#(Attr:0x370 { name = "foo", value = "abc" }), + # # #(Attr:0x384 { + # # name = "bar", + # # namespace = #(Namespace:0x398 { + # # prefix = "noko", + # # href = "http://nokogiri.org/ns/noko" + # # }), + # # value = "def" + # # })]} + # + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1468 + def deconstruct_keys(keys); end + # Decorate this node with the decorators set up in this node's Document # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:132 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:132 def decorate!; end # Adds a default namespace supplied as a string +url+ href, to self. @@ -3699,18 +4072,18 @@ class Nokogiri::XML::Node # now show up in #attributes, but when this node is serialized to XML an # "xmlns" attribute will appear. See also #namespace and #namespace= # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:334 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:427 def default_namespace=(url); end # Remove the attribute named +name+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:550 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:643 def delete(name); end # Fetch the Nokogiri::HTML4::ElementDescription for this node. Returns # nil on XML documents and on unknown tags. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1074 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1167 def description; end # Do xinclude substitution on the subtree below node. If given a block, a @@ -3719,7 +4092,7 @@ class Nokogiri::XML::Node # # @yield [options] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:361 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:454 def do_xinclude(options = T.unsafe(nil)); end def document; end @@ -3728,28 +4101,28 @@ class Nokogiri::XML::Node # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1052 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1145 def document?; end def dup(*_arg0); end # Iterate over each attribute name and value pair for this Node. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:542 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:635 def each; end # Returns true if this is an Element node # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1088 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1181 def elem?; end # Returns true if this is an Element node # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1088 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1181 def element?; end def element_children; end @@ -3761,14 +4134,14 @@ class Nokogiri::XML::Node # Create a DocumentFragment containing +tags+ that is relative to _this_ # context node. # - # source://nokogiri-1.13.8/lib/nokogiri/html5/node.rb:67 + # source://nokogiri-1.15.3/lib/nokogiri/html5/node.rb:70 def fragment(tags); end # Returns true if this is a DocumentFragment # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1067 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1160 def fragment?; end # :call-seq: [](name) β†’ (String, nil) @@ -3801,7 +4174,7 @@ class Nokogiri::XML::Node # doc.at_css("child").attribute_with_ns("size", "http://example.com/widths").value # # => "broad" # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:419 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:512 def get_attribute(name); end def has_attribute?(_arg0); end @@ -3810,20 +4183,30 @@ class Nokogiri::XML::Node # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1047 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1140 def html?; end # Get the inner_html for this node's Node#children # - # source://nokogiri-1.13.8/lib/nokogiri/html5/node.rb:28 + # source://nokogiri-1.15.3/lib/nokogiri/html5/node.rb:31 def inner_html(options = T.unsafe(nil)); end - # Set the inner html for this Node to +node_or_tags+ - # +node_or_tags+ can be a Nokogiri::XML::Node, a Nokogiri::XML::DocumentFragment, or a string containing markup. + # Set the content for this Node to +node_or_tags+. + # + # +node_or_tags+ can be a Nokogiri::XML::Node, a Nokogiri::XML::DocumentFragment, or a String + # containing markup. + # + # ⚠ Please note that despite the name, this method will *not* always parse a String argument + # as HTML. A String argument will be parsed with the +DocumentFragment+ parser related to this + # node's document. + # + # For example, if the document is an HTML4::Document then the string will be parsed as HTML4 + # using HTML4::DocumentFragment; but if the document is an XML::Document then it will + # parse the string as XML using XML::DocumentFragment. # # Also see related method +children=+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:253 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:338 def inner_html=(node_or_tags); end # :section: @@ -3834,7 +4217,7 @@ class Nokogiri::XML::Node # Get the attribute names for this Node. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:536 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:629 def keys; end # :call-seq: @@ -3888,7 +4271,7 @@ class Nokogiri::XML::Node # # Since v1.11.0 # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:799 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:892 def kwattr_add(attribute_name, keywords); end # :call-seq: @@ -3937,7 +4320,7 @@ class Nokogiri::XML::Node # # Since v1.11.0 # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:852 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:945 def kwattr_append(attribute_name, keywords); end # :call-seq: @@ -3976,7 +4359,7 @@ class Nokogiri::XML::Node # # Since v1.11.0 # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:895 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:988 def kwattr_remove(attribute_name, keywords); end # :call-seq: @@ -4005,7 +4388,7 @@ class Nokogiri::XML::Node # # Since v1.11.0 # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:745 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:838 def kwattr_values(attribute_name); end def lang; end @@ -4018,7 +4401,7 @@ class Nokogiri::XML::Node # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:922 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1015 def matches?(selector); end def name; end @@ -4031,7 +4414,7 @@ class Nokogiri::XML::Node # for this node. You probably want #default_namespace= instead, or perhaps # #add_namespace_definition with a nil prefix argument. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:344 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:437 def namespace=(ns); end def namespace_definitions; end @@ -4074,22 +4457,25 @@ class Nokogiri::XML::Node # # "xmlns"=>"http://example.com/root", # # "xmlns:in_scope"=>"http://example.com/in_scope"} # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1023 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1116 def namespaces; end def native_content=(_arg0); end def next; end # Insert +node_or_tags+ after this Node (as a sibling). - # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup. # - # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is a DocumentFragment, NodeSet, or string). + # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a String + # containing markup. + # + # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is + # a DocumentFragment, NodeSet, or String). # # Also see related method +after+. # # @raise [ArgumentError] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:217 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:288 def next=(node_or_tags); end def next_element; end @@ -4101,7 +4487,7 @@ class Nokogiri::XML::Node # Set the parent Node for this Node # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:324 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:417 def parent=(parent_node); end # Parse +string_or_io+ as a document fragment within the context of @@ -4110,34 +4496,40 @@ class Nokogiri::XML::Node # # @yield [options] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:937 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1030 def parse(string_or_io, options = T.unsafe(nil)); end def path; end def pointer_id; end # Add +node_or_tags+ as the first child of this Node. - # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup. # - # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is a DocumentFragment, NodeSet, or string). + # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a String + # containing markup. + # + # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is + # a DocumentFragment, NodeSet, or String). # # Also see related method +add_child+. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:162 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:168 def prepend_child(node_or_tags); end def previous; end # Insert +node_or_tags+ before this Node (as a sibling). - # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup. # - # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is a DocumentFragment, NodeSet, or string). + # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a String + # containing markup. + # + # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is + # a DocumentFragment, NodeSet, or String). # # Also see related method +before+. # # @raise [ArgumentError] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:203 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:271 def previous=(node_or_tags); end def previous_element; end @@ -4147,21 +4539,21 @@ class Nokogiri::XML::Node # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1057 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1150 def processing_instruction?; end # Is this a read only node? # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1082 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1175 def read_only?; end def remove; end # Remove the attribute named +name+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:550 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:643 def remove_attribute(name); end # :call-seq: @@ -4210,17 +4602,20 @@ class Nokogiri::XML::Node # node # =>
# node.remove_class(["section", "float"]) # =>
# - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:716 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:809 def remove_class(names = T.unsafe(nil)); end # Replace this Node with +node_or_tags+. - # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup. # - # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is a DocumentFragment, NodeSet, or string). + # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a String + # containing markup. + # + # Returns the reparented node (if +node_or_tags+ is a Node), or NodeSet (if +node_or_tags+ is + # a DocumentFragment, NodeSet, or String). # # Also see related method +swap+. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:279 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:369 def replace(node_or_tags); end # Serialize Node using +options+. Save options can also be set using a block. @@ -4229,15 +4624,13 @@ class Nokogiri::XML::Node # # These two statements are equivalent: # - # node.serialize(:encoding => 'UTF-8', :save_with => FORMAT | AS_XML) # # or # - # node.serialize(:encoding => 'UTF-8') do |config| # config.format.as_xml # end # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1187 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1280 def serialize(*args, &block); end # :call-seq: []=(name, value) β†’ value @@ -4274,17 +4667,19 @@ class Nokogiri::XML::Node # # " \n" + # # "\n" # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:457 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:550 def set_attribute(name, value); end # Swap this Node for +node_or_tags+ - # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a string containing markup. + # + # +node_or_tags+ can be a Nokogiri::XML::Node, a ::DocumentFragment, a ::NodeSet, or a String + # Containing markup. # # Returns self, to support chaining of calls. # # Also see related method +replace+. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:311 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:403 def swap(node_or_tags); end def text; end @@ -4293,7 +4688,7 @@ class Nokogiri::XML::Node # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1062 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1155 def text?; end # Serialize this Node to HTML @@ -4303,33 +4698,31 @@ class Nokogiri::XML::Node # See Node#write_to for a list of +options+. For formatted output, # use Node#to_xhtml instead. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1214 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1306 def to_html(options = T.unsafe(nil)); end # Turn this node in to a string. If the document is HTML, this method # returns html. If the document is XML, this method returns XML. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1097 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1190 def to_s; end def to_str; end # Serialize this Node to XHTML using +options+ # - # doc.to_xhtml(:indent => 5, :encoding => 'UTF-8') # # See Node#write_to for a list of +options+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1235 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1327 def to_xhtml(options = T.unsafe(nil)); end # Serialize this Node to XML using +options+ # - # doc.to_xml(:indent => 5, :encoding => 'UTF-8') # # See Node#write_to for a list of +options+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1224 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1316 def to_xml(options = T.unsafe(nil)); end # Yields self and all children to +block+ recursively. @@ -4337,7 +4730,7 @@ class Nokogiri::XML::Node # @yield [_self] # @yieldparam _self [Nokogiri::XML::Node] the object that the method was called on # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1140 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1233 def traverse(&block); end def type; end @@ -4347,54 +4740,100 @@ class Nokogiri::XML::Node # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:530 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:623 def value?(value); end # Get the attribute values for this Node. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:524 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:617 def values; end - # Add html around this node + # :call-seq: + # wrap(markup) -> self + # wrap(node) -> self # - # Returns self + # Wrap this Node with the node parsed from +markup+ or a dup of the +node+. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:177 - def wrap(html); end + # [Parameters] + # - *markup* (String) + # Markup that is parsed and used as the wrapper. This node's parent, if it exists, is used + # as the context node for parsing; otherwise the associated document is used. If the parsed + # fragment has multiple roots, the first root node is used as the wrapper. + # - *node* (Nokogiri::XML::Node) + # An element that is `#dup`ed and used as the wrapper. + # + # [Returns] +self+, to support chaining. + # + # Also see NodeSet#wrap + # + # *Example* with a +String+ argument: + # + # doc = Nokogiri::HTML5(<<~HTML) + # + # asdf + # + # HTML + # doc.at_css("a").wrap("
") + # doc.to_html + # # => + # # + # # + # + # *Example* with a +Node+ argument: + # + # doc = Nokogiri::HTML5(<<~HTML) + # + # asdf + # + # HTML + # doc.at_css("a").wrap(doc.create_element("div")) + # doc.to_html + # # + # # + # # + # + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:223 + def wrap(node_or_tags); end # Write Node as HTML to +io+ with +options+ # # See Node#write_to for a list of +options+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1283 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1384 def write_html_to(io, options = T.unsafe(nil)); end - # Write Node to +io+ with +options+. +options+ modify the output of - # this method. Valid options are: + # :call-seq: + # write_to(io, *options) + # + # Serialize this node or document to +io+. + # + # [Parameters] + # - +io+ (IO) An IO-like object to which the serialized content will be written. + # - +options+ (Hash) See below # - # * +:encoding+ for changing the encoding - # * +:indent_text+ the indentation text, defaults to one space - # * +:indent+ the number of +:indent_text+ to use, defaults to 2 - # * +:save_with+ a combination of SaveOptions constants. + # [Options] + # * +:encoding+ (String or Encoding) specify the encoding of the output (defaults to document encoding) + # * +:indent_text+ (String) the indentation text (defaults to " ") + # * +:indent+ (Integer) the number of +:indent_text+ to use (defaults to +2+) + # * +:save_with+ (Integer) a combination of SaveOptions constants # # To save with UTF-8 indented twice: # - # node.write_to(io, :encoding => 'UTF-8', :indent => 2) # # To save indented with two dashes: # - # node.write_to(io, :indent_text => '-', :indent => 2) + # node.write_to(io, indent_text: '-', indent: 2) # # @yield [config] # - # source://nokogiri-1.13.8/lib/nokogiri/html5/node.rb:36 + # source://nokogiri-1.15.3/lib/nokogiri/html5/node.rb:39 def write_to(io, *options); end # Write Node as XHTML to +io+ with +options+ # # See Node#write_to for a list of +options+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1291 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1392 def write_xhtml_to(io, options = T.unsafe(nil)); end # Write Node as XML to +io+ with +options+ @@ -4403,57 +4842,59 @@ class Nokogiri::XML::Node # # See Node#write_to for a list of options # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1301 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1402 def write_xml_to(io, options = T.unsafe(nil)); end # Returns true if this is an XML::Document node # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1042 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1135 def xml?; end protected # @raise [ArgumentError] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1318 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1482 def coerce(data); end private def add_child_node(_arg0); end - # source://nokogiri-1.13.8/lib/nokogiri/html5/node.rb:80 + # source://nokogiri-1.15.3/lib/nokogiri/html5/node.rb:83 def add_child_node_and_reparent_attrs(node); end def add_next_sibling_node(_arg0); end def add_previous_sibling_node(_arg0); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1352 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1516 def add_sibling(next_or_previous, node_or_tags); end def compare(_arg0); end def dump_html; end def get(_arg0); end + def html_standard_serialize(_arg0); end def in_context(_arg0, _arg1); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1391 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1555 def inspect_attributes; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1340 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1504 def keywordify(keywords); end def native_write_to(_arg0, _arg1, _arg2, _arg3); end + def prepend_newline?; end def process_xincludes(_arg0); end def replace_node(_arg0); end def set(_arg0, _arg1); end def set_namespace(_arg0); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1377 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1541 def to_format(save_option, options); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1384 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1548 def write_format_to(save_option, io, options); end class << self @@ -4463,211 +4904,259 @@ end # Attribute declaration type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:93 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:93 Nokogiri::XML::Node::ATTRIBUTE_DECL = T.let(T.unsafe(nil), Integer) # Attribute node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:65 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:65 Nokogiri::XML::Node::ATTRIBUTE_NODE = T.let(T.unsafe(nil), Integer) # CDATA node type, see Nokogiri::XML::Node#cdata? # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:69 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:69 Nokogiri::XML::Node::CDATA_SECTION_NODE = T.let(T.unsafe(nil), Integer) # Comment node type, see Nokogiri::XML::Node#comment? # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:77 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:77 Nokogiri::XML::Node::COMMENT_NODE = T.let(T.unsafe(nil), Integer) +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1415 +Nokogiri::XML::Node::DECONSTRUCT_KEYS = T.let(T.unsafe(nil), Array) + +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1416 +Nokogiri::XML::Node::DECONSTRUCT_METHODS = T.let(T.unsafe(nil), Hash) + # DOCB document node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:103 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:103 Nokogiri::XML::Node::DOCB_DOCUMENT_NODE = T.let(T.unsafe(nil), Integer) # Document fragment node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:83 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:83 Nokogiri::XML::Node::DOCUMENT_FRAG_NODE = T.let(T.unsafe(nil), Integer) # Document node type, see Nokogiri::XML::Node#xml? # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:79 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:79 Nokogiri::XML::Node::DOCUMENT_NODE = T.let(T.unsafe(nil), Integer) # Document type node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:81 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:81 Nokogiri::XML::Node::DOCUMENT_TYPE_NODE = T.let(T.unsafe(nil), Integer) # DTD node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:89 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:89 Nokogiri::XML::Node::DTD_NODE = T.let(T.unsafe(nil), Integer) # Element declaration type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:91 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:91 Nokogiri::XML::Node::ELEMENT_DECL = T.let(T.unsafe(nil), Integer) # Element node type, see Nokogiri::XML::Node#element? # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:63 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:63 Nokogiri::XML::Node::ELEMENT_NODE = T.let(T.unsafe(nil), Integer) # Entity declaration type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:95 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:95 Nokogiri::XML::Node::ENTITY_DECL = T.let(T.unsafe(nil), Integer) # Entity node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:73 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:73 Nokogiri::XML::Node::ENTITY_NODE = T.let(T.unsafe(nil), Integer) # Entity reference node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:71 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:71 Nokogiri::XML::Node::ENTITY_REF_NODE = T.let(T.unsafe(nil), Integer) # HTML document node type, see Nokogiri::XML::Node#html? # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:87 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:87 Nokogiri::XML::Node::HTML_DOCUMENT_NODE = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:1395 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:1559 Nokogiri::XML::Node::IMPLIED_XPATH_CONTEXTS = T.let(T.unsafe(nil), Array) # Namespace declaration type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:97 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:97 Nokogiri::XML::Node::NAMESPACE_DECL = T.let(T.unsafe(nil), Integer) # Notation node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:85 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:85 Nokogiri::XML::Node::NOTATION_NODE = T.let(T.unsafe(nil), Integer) # PI node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:75 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:75 Nokogiri::XML::Node::PI_NODE = T.let(T.unsafe(nil), Integer) # Save options for serializing nodes. # See the method group entitled Node@Serialization+and+Generating+Output for usage. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:9 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:9 class Nokogiri::XML::Node::SaveOptions # Create a new SaveOptions object with +options+ # # @return [SaveOptions] a new instance of SaveOptions # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:45 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:47 def initialize(options = T.unsafe(nil)); end + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:53 def as_html; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:58 def as_html?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:53 def as_xhtml; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:58 def as_xhtml?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:53 def as_xml; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:58 def as_xml?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:53 def default_html; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:58 def default_html?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:53 def default_xhtml; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:58 def default_xhtml?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:53 def default_xml; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:58 def default_xml?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:53 def format; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:58 def format?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:66 + def inspect; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:53 def no_declaration; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:58 def no_declaration?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:53 def no_empty_tags; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:58 def no_empty_tags?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:53 def no_xhtml; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:58 def no_xhtml?; end # Integer representation of the SaveOptions # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:42 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:44 def options; end # Integer representation of the SaveOptions # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:42 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:44 def to_i; end end # Save as HTML # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:23 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:23 Nokogiri::XML::Node::SaveOptions::AS_HTML = T.let(T.unsafe(nil), Integer) # Save as XHTML # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:19 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:19 Nokogiri::XML::Node::SaveOptions::AS_XHTML = T.let(T.unsafe(nil), Integer) # Save as XML # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:21 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:21 Nokogiri::XML::Node::SaveOptions::AS_XML = T.let(T.unsafe(nil), Integer) # the default for HTML document # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:36 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:38 Nokogiri::XML::Node::SaveOptions::DEFAULT_HTML = T.let(T.unsafe(nil), Integer) # the default for XHTML document # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:39 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:40 Nokogiri::XML::Node::SaveOptions::DEFAULT_XHTML = T.let(T.unsafe(nil), Integer) # the default for XML documents # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:34 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:36 Nokogiri::XML::Node::SaveOptions::DEFAULT_XML = T.let(T.unsafe(nil), Integer) # Format serialized xml # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:11 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:11 Nokogiri::XML::Node::SaveOptions::FORMAT = T.let(T.unsafe(nil), Integer) # Do not include declarations # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:13 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:13 Nokogiri::XML::Node::SaveOptions::NO_DECLARATION = T.let(T.unsafe(nil), Integer) # Do not include empty tags # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:15 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:15 Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS = T.let(T.unsafe(nil), Integer) # Do not save XHTML # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node/save_options.rb:17 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node/save_options.rb:17 Nokogiri::XML::Node::SaveOptions::NO_XHTML = T.let(T.unsafe(nil), Integer) # Text node type, see Nokogiri::XML::Node#text? # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:67 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:67 Nokogiri::XML::Node::TEXT_NODE = T.let(T.unsafe(nil), Integer) # XInclude end type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:101 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:101 Nokogiri::XML::Node::XINCLUDE_END = T.let(T.unsafe(nil), Integer) # XInclude start type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node.rb:99 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node.rb:99 Nokogiri::XML::Node::XINCLUDE_START = T.let(T.unsafe(nil), Integer) # A NodeSet contains a list of Nokogiri::XML::Node objects. Typically # a NodeSet is return as a result of searching a Document via # Nokogiri::XML::Searchable#css or Nokogiri::XML::Searchable#xpath # -# source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:9 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:10 class Nokogiri::XML::NodeSet include ::Nokogiri::XML::Searchable include ::Enumerable @@ -4678,7 +5167,7 @@ class Nokogiri::XML::NodeSet # @yield [_self] # @yieldparam _self [Nokogiri::XML::NodeSet] the object that the method was called on # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:19 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:20 def initialize(document, list = T.unsafe(nil)); end # call-seq: search *paths, [namespace-bindings, xpath-variable-bindings, custom-handler-class] @@ -4692,7 +5181,7 @@ class Nokogiri::XML::NodeSet # # node_set.at(3) # same as node_set[3] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:118 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:119 def %(*args); end def &(_arg0); end @@ -4704,7 +5193,7 @@ class Nokogiri::XML::NodeSet # of elements and if each element is equal to the corresponding # element in the other NodeSet # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:325 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:393 def ==(other); end def [](*_arg0); end @@ -4714,12 +5203,12 @@ class Nokogiri::XML::NodeSet # # See Nokogiri::XML::Node#add_class for more information. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:138 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:139 def add_class(name); end # Insert +datum+ after the last Node in this NodeSet # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:68 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:69 def after(datum); end # Append the class attribute +name+ to all Node objects in the @@ -4727,7 +5216,7 @@ class Nokogiri::XML::NodeSet # # See Nokogiri::XML::Node#append_class for more information. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:150 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:151 def append_class(name); end # call-seq: search *paths, [namespace-bindings, xpath-variable-bindings, custom-handler-class] @@ -4741,7 +5230,7 @@ class Nokogiri::XML::NodeSet # # node_set.at(3) # same as node_set[3] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:118 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:119 def at(*args); end # Set attributes on each Node in the NodeSet, or get an @@ -4776,7 +5265,7 @@ class Nokogiri::XML::NodeSet # # node_set.attr("class") { |node| node.name } # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:202 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:203 def attr(key, value = T.unsafe(nil), &block); end # Set attributes on each Node in the NodeSet, or get an @@ -4811,18 +5300,18 @@ class Nokogiri::XML::NodeSet # # node_set.attr("class") { |node| node.name } # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:202 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:203 def attribute(key, value = T.unsafe(nil), &block); end # Insert +datum+ before the first Node in this NodeSet # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:62 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:63 def before(datum); end # Returns a new NodeSet containing all the children of all the nodes in # the NodeSet # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:338 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:406 def children; end def clone; end @@ -4834,55 +5323,64 @@ class Nokogiri::XML::NodeSet # # For more information see Nokogiri::XML::Searchable#css # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:82 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:83 def css(*args); end + # :call-seq: deconstruct() β†’ Array + # + # Returns the members of this NodeSet as an array, to use in pattern matching. + # + # ⚑ This is an experimental feature, available since v1.14.0 + # + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:440 + def deconstruct; end + def delete(_arg0); end # The Document this NodeSet is associated with # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:14 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:15 def document; end # The Document this NodeSet is associated with # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:14 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:15 def document=(_arg0); end def dup; end # Iterate over each node, yielding to +block+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:230 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:231 def each; end # Is this NodeSet empty? # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:44 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:45 def empty?; end # Filter this list for nodes that match +expr+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:129 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:130 def filter(expr); end # Get the first element of the NodeSet. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:28 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:29 def first(n = T.unsafe(nil)); end def include?(_arg0); end # Returns the index of the first node in self that is == to +node+ or meets the given block. Returns nil if no match is found. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:50 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:51 def index(node = T.unsafe(nil)); end # Get the inner html of all contained Node objects # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:259 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:260 def inner_html(*args); end # Get the inner text of all contained Node objects @@ -4898,17 +5396,17 @@ class Nokogiri::XML::NodeSet # # See Nokogiri::XML::Node#content for more information. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:252 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:253 def inner_text; end # Return a nicely formated string representation # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:359 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:427 def inspect; end # Get the last element of the NodeSet. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:38 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:39 def last; end def length; end @@ -4916,7 +5414,7 @@ class Nokogiri::XML::NodeSet # Removes the last element from set and returns it, or +nil+ if # the set is empty # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:306 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:374 def pop; end def push(_arg0); end @@ -4924,12 +5422,12 @@ class Nokogiri::XML::NodeSet # Remove the attributed named +name+ from all Node objects in the NodeSet # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:222 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:223 def remove_attr(name); end # Remove the attributed named +name+ from all Node objects in the NodeSet # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:222 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:223 def remove_attribute(name); end # Remove the class attribute +name+ from all Node objects in the @@ -4937,13 +5435,13 @@ class Nokogiri::XML::NodeSet # # See Nokogiri::XML::Node#remove_class for more information. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:162 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:163 def remove_class(name = T.unsafe(nil)); end # Returns a new NodeSet containing all the nodes in the NodeSet # in reverse order # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:349 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:417 def reverse; end # Set attributes on each Node in the NodeSet, or get an @@ -4978,13 +5476,13 @@ class Nokogiri::XML::NodeSet # # node_set.attr("class") { |node| node.name } # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:202 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:203 def set(key, value = T.unsafe(nil), &block); end # Returns the first element of the NodeSet and removes it. Returns # +nil+ if the set is empty. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:315 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:383 def shift; end def size; end @@ -5003,7 +5501,7 @@ class Nokogiri::XML::NodeSet # # See Nokogiri::XML::Node#content for more information. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:252 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:253 def text; end def to_a; end @@ -5011,30 +5509,92 @@ class Nokogiri::XML::NodeSet # Convert this NodeSet to HTML # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:277 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:341 def to_html(*args); end # Convert this NodeSet to a string. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:271 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:335 def to_s; end # Convert this NodeSet to XHTML # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:290 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:358 def to_xhtml(*args); end # Convert this NodeSet to XML # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:296 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:364 def to_xml(*args); end def unlink; end - # Wrap this NodeSet with +html+ + # :call-seq: + # wrap(markup) -> self + # wrap(node) -> self + # + # Wrap each member of this NodeSet with the node parsed from +markup+ or a dup of the +node+. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:265 - def wrap(html); end + # [Parameters] + # - *markup* (String) + # Markup that is parsed, once per member of the NodeSet, and used as the wrapper. Each + # node's parent, if it exists, is used as the context node for parsing; otherwise the + # associated document is used. If the parsed fragment has multiple roots, the first root + # node is used as the wrapper. + # - *node* (Nokogiri::XML::Node) + # An element that is `#dup`ed and used as the wrapper. + # + # [Returns] +self+, to support chaining. + # + # ⚠ Note that if a +String+ is passed, the markup will be parsed once per node in the + # NodeSet. You can avoid this overhead in cases where you know exactly the wrapper you wish to + # use by passing a +Node+ instead. + # + # Also see Node#wrap + # + # *Example* with a +String+ argument: + # + # doc = Nokogiri::HTML5(<<~HTML) + # + # a + # b + # c + # d + # + # HTML + # doc.css("a").wrap("
") + # doc.to_html + # # => + # # + # # + # # + # # + # # + # + # *Example* with a +Node+ argument + # + # πŸ’‘ Note that this is faster than the equivalent call passing a +String+ because it avoids + # having to reparse the wrapper markup for each node. + # + # doc = Nokogiri::HTML5(<<~HTML) + # + # a + # b + # c + # d + # + # HTML + # doc.css("a").wrap(doc.create_element("div")) + # doc.to_html + # # => + # # + # # + # # + # # + # # + # + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:328 + def wrap(node_or_tags); end # call-seq: xpath *paths, [namespace-bindings, variable-bindings, custom-handler-class] # @@ -5043,317 +5603,521 @@ class Nokogiri::XML::NodeSet # # For more information see Nokogiri::XML::Searchable#xpath # - # source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:98 + # source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:99 def xpath(*args); end def |(_arg0); end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/node_set.rb:365 +# source://nokogiri-1.15.3/lib/nokogiri/xml/node_set.rb:444 Nokogiri::XML::NodeSet::IMPLIED_XPATH_CONTEXTS = T.let(T.unsafe(nil), Array) # Struct representing an {XML Schema Notation}[https://www.w3.org/TR/xml/#Notations] # -# source://nokogiri-1.13.8/lib/nokogiri/xml/notation.rb:7 +# source://nokogiri-1.15.3/lib/nokogiri/xml/notation.rb:6 class Nokogiri::XML::Notation < ::Struct; end -# source://nokogiri-1.13.8/lib/nokogiri/xml/pp/node.rb:6 +# source://nokogiri-1.15.3/lib/nokogiri/xml/pp/node.rb:6 module Nokogiri::XML::PP; end -# source://nokogiri-1.13.8/lib/nokogiri/xml/pp/character_data.rb:7 +# source://nokogiri-1.15.3/lib/nokogiri/xml/pp/character_data.rb:7 module Nokogiri::XML::PP::CharacterData - # source://nokogiri-1.13.8/lib/nokogiri/xml/pp/character_data.rb:15 + # source://nokogiri-1.15.3/lib/nokogiri/xml/pp/character_data.rb:15 def inspect; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/pp/character_data.rb:8 + # source://nokogiri-1.15.3/lib/nokogiri/xml/pp/character_data.rb:8 def pretty_print(pp); end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/pp/node.rb:7 +# source://nokogiri-1.15.3/lib/nokogiri/xml/pp/node.rb:7 module Nokogiri::XML::PP::Node - # source://nokogiri-1.13.8/lib/nokogiri/xml/pp/node.rb:8 + # source://nokogiri-1.15.3/lib/nokogiri/xml/pp/node.rb:10 def inspect; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/pp/node.rb:20 + # source://nokogiri-1.15.3/lib/nokogiri/xml/pp/node.rb:27 def pretty_print(pp); end end -# Parse options for passing to Nokogiri.XML or Nokogiri.HTML -# -# == Building combinations of parse options -# You can build your own combinations of these parse options by using any of the following methods: -# *Note*: All examples attempt to set the +RECOVER+ & +NOENT+ options. -# [Ruby's bitwise operators] You can use the Ruby bitwise operators to set various combinations. -# Nokogiri.XML('Chapter 1Chapter 1Chapter 1no{option} method in lowercase. You can call these methods on an instance of +ParseOptions+ to remove the option. -# Note that this is not available for +STRICT+. -# -# # Setting the RECOVER & NOENT options... -# options = Nokogiri::XML::ParseOptions.new.recover.noent -# # later... -# options.norecover # Removes the Nokogiri::XML::ParseOptions::RECOVER option -# options.nonoent # Removes the Nokogiri::XML::ParseOptions::NOENT option -# -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:29 +# source://nokogiri-1.15.3/lib/nokogiri/xml/pp/node.rb:8 +Nokogiri::XML::PP::Node::COLLECTIONS = T.let(T.unsafe(nil), Array) + +# Options that control the parsing behavior for XML::Document, XML::DocumentFragment, +# HTML4::Document, HTML4::DocumentFragment, XSLT::Stylesheet, and XML::Schema. +# +# These options directly expose libxml2's parse options, which are all boolean in the sense that +# an option is "on" or "off". +# +# πŸ’‘ Note that HTML5 parsing has a separate, orthogonal set of options due to the nature of the +# HTML5 specification. See Nokogiri::HTML5. +# +# ⚠ Not all parse options are supported on JRuby. Nokogiri will attempt to invoke the equivalent +# behavior in Xerces/NekoHTML on JRuby when it's possible. +# +# == Setting and unsetting parse options +# +# You can build your own combinations of parse options by using any of the following methods: +# +# [ParseOptions method chaining] +# +# Every option has an equivalent method in lowercase. You can chain these methods together to +# set various combinations. +# +# # Set the HUGE & PEDANTIC options +# po = Nokogiri::XML::ParseOptions.new.huge.pedantic +# doc = Nokogiri::XML::Document.parse(xml, nil, nil, po) +# +# Every option has an equivalent no{option} method in lowercase. You can call these +# methods on an instance of ParseOptions to unset the option. +# +# # Set the HUGE & PEDANTIC options +# po = Nokogiri::XML::ParseOptions.new.huge.pedantic +# +# # later we want to modify the options +# po.nohuge # Unset the HUGE option +# po.nopedantic # Unset the PEDANTIC option +# +# πŸ’‘ Note that some options begin with "no" leading to the logical but perhaps unintuitive +# double negative: +# +# po.nocdata # Set the NOCDATA parse option +# po.nonocdata # Unset the NOCDATA parse option +# +# πŸ’‘ Note that negation is not available for STRICT, which is itself a negation of all other +# features. +# +# +# [Using Ruby Blocks] +# +# Most parsing methods will accept a block for configuration of parse options, and we +# recommend chaining the setter methods: +# +# doc = Nokogiri::XML::Document.parse(xml) { |config| config.huge.pedantic } +# +# +# [ParseOptions constants] +# +# You can also use the constants declared under Nokogiri::XML::ParseOptions to set various +# combinations. They are bits in a bitmask, and so can be combined with bitwise operators: +# +# po = Nokogiri::XML::ParseOptions.new(Nokogiri::XML::ParseOptions::HUGE | Nokogiri::XML::ParseOptions::PEDANTIC) +# doc = Nokogiri::XML::Document.parse(xml, nil, nil, po) +# +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:67 class Nokogiri::XML::ParseOptions # @return [ParseOptions] a new instance of ParseOptions # - # source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:86 + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:165 def initialize(options = T.unsafe(nil)); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:119 + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:198 def ==(other); end + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def big_lines; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def big_lines?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def compact; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def compact?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def default_html; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def default_html?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def default_schema; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def default_schema?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def default_xml; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def default_xml?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def default_xslt; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def default_xslt?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def dtdattr; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def dtdattr?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def dtdload; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def dtdload?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def dtdvalid; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def dtdvalid?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def huge; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def huge?; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:125 + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:204 def inspect; end + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def nobasefix; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def nobasefix?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nobig_lines; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def noblanks; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def noblanks?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def nocdata; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def nocdata?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nocompact; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nodefault_html; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nodefault_schema; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nodefault_xml; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nodefault_xslt; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def nodict; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def nodict?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nodtdattr; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nodtdload; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nodtdvalid; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def noent; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def noent?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def noerror; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def noerror?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nohuge; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def nonet; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def nonet?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nonobasefix; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nonoblanks; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nonocdata; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nonodict; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nonoent; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nonoerror; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nononet; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nonowarning; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nonoxincnode; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nonsclean; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def noold10; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nopedantic; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def norecover; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def nosax1; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def nowarning; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def nowarning?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:178 def noxinclude; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def noxincnode; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def noxincnode?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def nsclean; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def nsclean?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def old10; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def old10?; end # Returns the value of attribute options. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:84 + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:163 def options; end # Sets the attribute options # # @param value the value to set the attribute options to. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:84 + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:163 def options=(_arg0); end + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def pedantic; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def pedantic?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def recover; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def recover?; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def sax1; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def sax1?; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:110 + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:189 def strict; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:115 + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:194 def strict?; end # Returns the value of attribute options. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:84 + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:163 def to_i; end + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:173 def xinclude; end + + # source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:183 def xinclude?; end end -# line numbers stored as long int (instead of a short int) +# Support line numbers up to long int (default is a short int). On +# by default for for XML::Document, XML::DocumentFragment, HTML4::Document, +# HTML4::DocumentFragment, XSLT::Stylesheet, and XML::Schema. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:73 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:149 Nokogiri::XML::ParseOptions::BIG_LINES = T.let(T.unsafe(nil), Integer) -# compact small text nodes; no modification of the tree allowed afterwards (will possibly crash if you try to modify the tree) +# Compact small text nodes. Off by default. +# +# ⚠ No modification of the DOM tree is allowed after parsing. libxml2 may crash if you try to +# modify the tree. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:65 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:133 Nokogiri::XML::ParseOptions::COMPACT = T.let(T.unsafe(nil), Integer) -# the default options used for parsing HTML documents +# The options mask used by default used for parsing HTML4::Document and HTML4::DocumentFragment # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:80 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:158 Nokogiri::XML::ParseOptions::DEFAULT_HTML = T.let(T.unsafe(nil), Integer) -# the default options used for parsing XML schemas +# The options mask used by default used for parsing XML::Schema # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:82 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:161 Nokogiri::XML::ParseOptions::DEFAULT_SCHEMA = T.let(T.unsafe(nil), Integer) -# the default options used for parsing XML documents +# The options mask used by default for parsing XML::Document and XML::DocumentFragment # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:76 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:152 Nokogiri::XML::ParseOptions::DEFAULT_XML = T.let(T.unsafe(nil), Integer) -# the default options used for parsing XSLT stylesheets +# The options mask used by default used for parsing XSLT::Stylesheet # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:78 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:155 Nokogiri::XML::ParseOptions::DEFAULT_XSLT = T.let(T.unsafe(nil), Integer) -# Default DTD attributes +# Default DTD attributes. On by default for XSLT::Stylesheet. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:39 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:88 Nokogiri::XML::ParseOptions::DTDATTR = T.let(T.unsafe(nil), Integer) -# Load external subsets +# Load external subsets. On by default for XSLT::Stylesheet. +# +# ⚠ It is UNSAFE to set this option when parsing untrusted documents. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:37 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:85 Nokogiri::XML::ParseOptions::DTDLOAD = T.let(T.unsafe(nil), Integer) -# validate with the DTD +# Validate with the DTD. Off by default. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:41 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:91 Nokogiri::XML::ParseOptions::DTDVALID = T.let(T.unsafe(nil), Integer) -# relax any hardcoded limit from the parser +# Relax any hardcoded limit from the parser. Off by default. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:71 +# ⚠ There may be a performance penalty when this option is set. +# +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:144 Nokogiri::XML::ParseOptions::HUGE = T.let(T.unsafe(nil), Integer) -# do not fixup XINCLUDE xml:base uris +# Do not fixup XInclude xml:base uris. Off by default # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:69 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:139 Nokogiri::XML::ParseOptions::NOBASEFIX = T.let(T.unsafe(nil), Integer) -# remove blank nodes +# Remove blank nodes. Off by default. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:49 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:103 Nokogiri::XML::ParseOptions::NOBLANKS = T.let(T.unsafe(nil), Integer) -# merge CDATA as text nodes +# Merge CDATA as text nodes. On by default for XSLT::Stylesheet. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:61 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:124 Nokogiri::XML::ParseOptions::NOCDATA = T.let(T.unsafe(nil), Integer) -# Do not reuse the context dictionary +# Do not reuse the context dictionary. Off by default. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:57 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:118 Nokogiri::XML::ParseOptions::NODICT = T.let(T.unsafe(nil), Integer) -# Substitute entities +# Substitute entities. Off by default. +# +# ⚠ This option enables entity substitution, contrary to what the name implies. +# +# ⚠ It is UNSAFE to set this option when parsing untrusted documents. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:35 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:80 Nokogiri::XML::ParseOptions::NOENT = T.let(T.unsafe(nil), Integer) -# suppress error reports +# Suppress error reports. On by default for HTML4::Document and HTML4::DocumentFragment # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:43 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:94 Nokogiri::XML::ParseOptions::NOERROR = T.let(T.unsafe(nil), Integer) -# Forbid network access. Recommended for dealing with untrusted documents. +# Forbid network access. On by default for XML::Document, XML::DocumentFragment, +# HTML4::Document, HTML4::DocumentFragment, XSLT::Stylesheet, and XML::Schema. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:55 +# ⚠ It is UNSAFE to unset this option when parsing untrusted documents. +# +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:115 Nokogiri::XML::ParseOptions::NONET = T.let(T.unsafe(nil), Integer) -# suppress warning reports +# Suppress warning reports. On by default for HTML4::Document and HTML4::DocumentFragment # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:45 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:97 Nokogiri::XML::ParseOptions::NOWARNING = T.let(T.unsafe(nil), Integer) -# do not generate XINCLUDE START/END nodes +# Do not generate XInclude START/END nodes. Off by default. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:63 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:127 Nokogiri::XML::ParseOptions::NOXINCNODE = T.let(T.unsafe(nil), Integer) -# remove redundant namespaces declarations +# Remove redundant namespaces declarations. Off by default. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:59 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:121 Nokogiri::XML::ParseOptions::NSCLEAN = T.let(T.unsafe(nil), Integer) -# parse using XML-1.0 before update 5 +# Parse using XML-1.0 before update 5. Off by default # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:67 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:136 Nokogiri::XML::ParseOptions::OLD10 = T.let(T.unsafe(nil), Integer) -# pedantic error reporting +# Enable pedantic error reporting. Off by default. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:47 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:100 Nokogiri::XML::ParseOptions::PEDANTIC = T.let(T.unsafe(nil), Integer) -# Recover from errors +# Recover from errors. On by default for XML::Document, XML::DocumentFragment, +# HTML4::Document, HTML4::DocumentFragment, XSLT::Stylesheet, and XML::Schema. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:33 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:73 Nokogiri::XML::ParseOptions::RECOVER = T.let(T.unsafe(nil), Integer) -# use the SAX1 interface internally +# Use the SAX1 interface internally. Off by default. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:51 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:106 Nokogiri::XML::ParseOptions::SAX1 = T.let(T.unsafe(nil), Integer) # Strict parsing # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:31 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:69 Nokogiri::XML::ParseOptions::STRICT = T.let(T.unsafe(nil), Integer) -# Implement XInclude substitution +# Implement XInclude substitution. Off by default. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/parse_options.rb:53 +# source://nokogiri-1.15.3/lib/nokogiri/xml/parse_options.rb:109 Nokogiri::XML::ParseOptions::XINCLUDE = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/xml/processing_instruction.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/xml/processing_instruction.rb:5 class Nokogiri::XML::ProcessingInstruction < ::Nokogiri::XML::Node # @return [ProcessingInstruction] a new instance of ProcessingInstruction # - # source://nokogiri-1.13.8/lib/nokogiri/xml/processing_instruction.rb:6 + # source://nokogiri-1.15.3/lib/nokogiri/xml/processing_instruction.rb:6 def initialize(document, name, content); end class << self @@ -5388,13 +6152,13 @@ end # The Reader parser is good for when you need the speed of a SAX parser, # but do not want to write a Document handler. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:32 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:32 class Nokogiri::XML::Reader include ::Enumerable # @return [Reader] a new instance of Reader # - # source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:79 + # source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:79 def initialize(source, url = T.unsafe(nil), encoding = T.unsafe(nil)); end def attribute(_arg0); end @@ -5410,7 +6174,7 @@ class Nokogiri::XML::Reader # [Returns] # (Hash) Attribute names and values, and namespace prefixes and hrefs. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:92 + # source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:92 def attributes; end def attributes?; end @@ -5420,7 +6184,7 @@ class Nokogiri::XML::Reader # Move the cursor through the document yielding the cursor to the block # - # source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:98 + # source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:98 def each; end def empty_element?; end @@ -5428,12 +6192,12 @@ class Nokogiri::XML::Reader # A list of errors encountered while parsing # - # source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:72 + # source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:72 def errors; end # A list of errors encountered while parsing # - # source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:72 + # source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:72 def errors=(_arg0); end def inner_xml; end @@ -5450,7 +6214,7 @@ class Nokogiri::XML::Reader # The XML source # - # source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:75 + # source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:75 def source; end def state; end @@ -5466,90 +6230,90 @@ end # Attribute node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:39 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:39 Nokogiri::XML::Reader::TYPE_ATTRIBUTE = T.let(T.unsafe(nil), Integer) # CDATA node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:43 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:43 Nokogiri::XML::Reader::TYPE_CDATA = T.let(T.unsafe(nil), Integer) # Comment node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:51 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:51 Nokogiri::XML::Reader::TYPE_COMMENT = T.let(T.unsafe(nil), Integer) # Document node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:53 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:53 Nokogiri::XML::Reader::TYPE_DOCUMENT = T.let(T.unsafe(nil), Integer) # Document Fragment node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:57 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:57 Nokogiri::XML::Reader::TYPE_DOCUMENT_FRAGMENT = T.let(T.unsafe(nil), Integer) # Document Type node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:55 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:55 Nokogiri::XML::Reader::TYPE_DOCUMENT_TYPE = T.let(T.unsafe(nil), Integer) # Element node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:37 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:37 Nokogiri::XML::Reader::TYPE_ELEMENT = T.let(T.unsafe(nil), Integer) # Element end node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:65 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:65 Nokogiri::XML::Reader::TYPE_END_ELEMENT = T.let(T.unsafe(nil), Integer) # Entity end node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:67 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:67 Nokogiri::XML::Reader::TYPE_END_ENTITY = T.let(T.unsafe(nil), Integer) # Entity node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:47 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:47 Nokogiri::XML::Reader::TYPE_ENTITY = T.let(T.unsafe(nil), Integer) # Entity Reference node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:45 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:45 Nokogiri::XML::Reader::TYPE_ENTITY_REFERENCE = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:35 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:35 Nokogiri::XML::Reader::TYPE_NONE = T.let(T.unsafe(nil), Integer) # Notation node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:59 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:59 Nokogiri::XML::Reader::TYPE_NOTATION = T.let(T.unsafe(nil), Integer) # PI node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:49 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:49 Nokogiri::XML::Reader::TYPE_PROCESSING_INSTRUCTION = T.let(T.unsafe(nil), Integer) # Significant Whitespace node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:63 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:63 Nokogiri::XML::Reader::TYPE_SIGNIFICANT_WHITESPACE = T.let(T.unsafe(nil), Integer) # Text node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:41 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:41 Nokogiri::XML::Reader::TYPE_TEXT = T.let(T.unsafe(nil), Integer) # Whitespace node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:61 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:61 Nokogiri::XML::Reader::TYPE_WHITESPACE = T.let(T.unsafe(nil), Integer) # XML Declaration node type # -# source://nokogiri-1.13.8/lib/nokogiri/xml/reader.rb:69 +# source://nokogiri-1.15.3/lib/nokogiri/xml/reader.rb:69 Nokogiri::XML::Reader::TYPE_XML_DECLARATION = T.let(T.unsafe(nil), Integer) # Nokogiri::XML::RelaxNG is used for validating XML against a @@ -5573,7 +6337,7 @@ Nokogiri::XML::Reader::TYPE_XML_DECLARATION = T.let(T.unsafe(nil), Integer) # underlying parsing libraries to access network resources. This is counter to Nokogiri's # "untrusted by default" security policy, but is a limitation of the underlying libraries. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/relax_ng.rb:35 +# source://nokogiri-1.15.3/lib/nokogiri/xml/relax_ng.rb:35 class Nokogiri::XML::RelaxNG < ::Nokogiri::XML::Schema private @@ -5625,7 +6389,7 @@ end # deal with reading your XML, use the Nokogiri::XML::SAX::Parser. If you want to have fine grain # control over the XML input, use the Nokogiri::XML::SAX::PushParser. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:45 +# source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:45 module Nokogiri::XML::SAX; end # This class is used for registering types of events you are interested in handling. All of @@ -5648,12 +6412,12 @@ module Nokogiri::XML::SAX; end # You can use this event handler for any SAX style parser included with Nokogiri. See # Nokogiri::XML::SAX, and Nokogiri::HTML4::SAX. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:66 +# source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:66 class Nokogiri::XML::SAX::Document # Called when cdata blocks are found # +string+ contains the cdata content # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:155 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:155 def cdata_block(string); end # Characters read between a tag. This method might be called multiple @@ -5661,24 +6425,24 @@ class Nokogiri::XML::SAX::Document # # +string+ contains the character data # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:131 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:131 def characters(string); end # Called when comments are encountered # +string+ contains the comment data # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:137 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:137 def comment(string); end # Called when document ends parsing # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:79 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:79 def end_document; end # Called at the end of an element # +name+ is the tag name # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:93 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:93 def end_element(name); end # Called at the end of an element @@ -5686,25 +6450,25 @@ class Nokogiri::XML::SAX::Document # +prefix+ is the namespace prefix associated with the element # +uri+ is the associated namespace URI # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:120 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:120 def end_element_namespace(name, prefix = T.unsafe(nil), uri = T.unsafe(nil)); end # Called on document errors # +string+ contains the error # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:149 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:149 def error(string); end # Called when processing instructions are found # +name+ is the target of the instruction # +content+ is the value of the instruction # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:162 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:162 def processing_instruction(name, content); end # Called when document starts parsing # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:74 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:74 def start_document; end # Called at the beginning of an element @@ -5712,7 +6476,7 @@ class Nokogiri::XML::SAX::Document # * +attrs+ are an assoc list of namespaces and attributes, e.g.: # [ ["xmlns:foo", "http://sample.net"], ["size", "large"] ] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:87 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:87 def start_element(name, attrs = T.unsafe(nil)); end # Called at the beginning of an element @@ -5722,18 +6486,18 @@ class Nokogiri::XML::SAX::Document # +uri+ is the associated namespace URI # +ns+ is a hash of namespace prefix:urls associated with the element # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:103 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:103 def start_element_namespace(name, attrs = T.unsafe(nil), prefix = T.unsafe(nil), uri = T.unsafe(nil), ns = T.unsafe(nil)); end # Called on document warnings # +string+ contains the warning # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:143 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:143 def warning(string); end # Called when an XML declaration is parsed # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/document.rb:69 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/document.rb:69 def xmldecl(version, encoding, standalone); end end @@ -5765,39 +6529,39 @@ end # For more information about SAX parsers, see Nokogiri::XML::SAX. Also # see Nokogiri::XML::SAX::Document for the available events. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:34 +# source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:34 class Nokogiri::XML::SAX::Parser # Create a new Parser with +doc+ and +encoding+ # # @return [Parser] a new instance of Parser # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:72 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:72 def initialize(doc = T.unsafe(nil), encoding = T.unsafe(nil)); end # The Nokogiri::XML::SAX::Document where events will be sent. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:66 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:66 def document; end # The Nokogiri::XML::SAX::Document where events will be sent. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:66 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:66 def document=(_arg0); end # The encoding beings used for this document. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:69 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:69 def encoding; end # The encoding beings used for this document. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:69 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:69 def encoding=(_arg0); end # Parse given +thing+ which may be a string containing xml, or an # IO object. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:81 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:81 def parse(thing, &block); end # Parse a file with +filename+ @@ -5805,40 +6569,40 @@ class Nokogiri::XML::SAX::Parser # @raise [ArgumentError] # @yield [ctx] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:100 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:99 def parse_file(filename); end # Parse given +io+ # # @yield [ctx] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:91 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:91 def parse_io(io, encoding = T.unsafe(nil)); end # @yield [ctx] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:110 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:109 def parse_memory(data); end private - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:118 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:117 def check_encoding(encoding); end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:35 +# source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:35 class Nokogiri::XML::SAX::Parser::Attribute < ::Struct; end # Encodinds this parser supports # -# source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser.rb:39 +# source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser.rb:39 Nokogiri::XML::SAX::Parser::ENCODINGS = T.let(T.unsafe(nil), Hash) # Context for XML SAX parsers. This class is usually not instantiated # by the user. Instead, you should be looking at # Nokogiri::XML::SAX::Parser # -# source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser_context.rb:10 +# source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser_context.rb:10 class Nokogiri::XML::SAX::ParserContext def column; end def line; end @@ -5853,7 +6617,7 @@ class Nokogiri::XML::SAX::ParserContext def io(_arg0, _arg1); end def memory(_arg0); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/parser_context.rb:11 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/parser_context.rb:11 def new(thing, encoding = T.unsafe(nil)); end end end @@ -5879,38 +6643,38 @@ end # parser << "/div>" # parser.finish # -# source://nokogiri-1.13.8/lib/nokogiri/xml/sax/push_parser.rb:27 +# source://nokogiri-1.15.3/lib/nokogiri/xml/sax/push_parser.rb:27 class Nokogiri::XML::SAX::PushParser # Create a new PushParser with +doc+ as the SAX Document, providing # an optional +file_name+ and +encoding+ # # @return [PushParser] a new instance of PushParser # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/push_parser.rb:35 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/push_parser.rb:35 def initialize(doc = T.unsafe(nil), file_name = T.unsafe(nil), encoding = T.unsafe(nil)); end # Write a +chunk+ of XML to the PushParser. Any callback methods # that can be called will be called immediately. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/push_parser.rb:47 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/push_parser.rb:47 def <<(chunk, last_chunk = T.unsafe(nil)); end # The Nokogiri::XML::SAX::Document on which the PushParser will be # operating # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/push_parser.rb:30 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/push_parser.rb:30 def document; end # The Nokogiri::XML::SAX::Document on which the PushParser will be # operating # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/push_parser.rb:30 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/push_parser.rb:30 def document=(_arg0); end # Finish the parsing. This method is only necessary for # Nokogiri::XML::SAX::Document#end_document to be called. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/push_parser.rb:55 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/push_parser.rb:55 def finish; end def options; end @@ -5921,7 +6685,7 @@ class Nokogiri::XML::SAX::PushParser # Write a +chunk+ of XML to the PushParser. Any callback methods # that can be called will be called immediately. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/sax/push_parser.rb:47 + # source://nokogiri-1.15.3/lib/nokogiri/xml/sax/push_parser.rb:47 def write(chunk, last_chunk = T.unsafe(nil)); end private @@ -5953,26 +6717,26 @@ end # security policy. If a document is trusted, then the caller may turn off the NONET option via # the ParseOptions to re-enable external entity resolution over a network connection. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/schema.rb:37 +# source://nokogiri-1.15.3/lib/nokogiri/xml/schema.rb:37 class Nokogiri::XML::Schema # Errors while parsing the schema file # - # source://nokogiri-1.13.8/lib/nokogiri/xml/schema.rb:39 + # source://nokogiri-1.15.3/lib/nokogiri/xml/schema.rb:39 def errors; end # Errors while parsing the schema file # - # source://nokogiri-1.13.8/lib/nokogiri/xml/schema.rb:39 + # source://nokogiri-1.15.3/lib/nokogiri/xml/schema.rb:39 def errors=(_arg0); end # The Nokogiri::XML::ParseOptions used to parse the schema # - # source://nokogiri-1.13.8/lib/nokogiri/xml/schema.rb:41 + # source://nokogiri-1.15.3/lib/nokogiri/xml/schema.rb:41 def parse_options; end # The Nokogiri::XML::ParseOptions used to parse the schema # - # source://nokogiri-1.13.8/lib/nokogiri/xml/schema.rb:41 + # source://nokogiri-1.15.3/lib/nokogiri/xml/schema.rb:41 def parse_options=(_arg0); end # Returns true if +thing+ is a valid Nokogiri::XML::Document or @@ -5980,7 +6744,7 @@ class Nokogiri::XML::Schema # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/schema.rb:68 + # source://nokogiri-1.15.3/lib/nokogiri/xml/schema.rb:68 def valid?(thing); end # Validate +thing+ against this schema. +thing+ can be a @@ -5988,7 +6752,7 @@ class Nokogiri::XML::Schema # Nokogiri::XML::SyntaxError objects found while validating the # +thing+ is returned. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/schema.rb:55 + # source://nokogiri-1.15.3/lib/nokogiri/xml/schema.rb:55 def validate(thing); end private @@ -6002,7 +6766,7 @@ class Nokogiri::XML::Schema # Create a new Nokogiri::XML::Schema object using a +string_or_io+ # object. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/schema.rb:46 + # source://nokogiri-1.15.3/lib/nokogiri/xml/schema.rb:46 def new(string_or_io, options = T.unsafe(nil)); end def read_memory(*_arg0); end @@ -6015,7 +6779,7 @@ end # as well as allowing specific implementations to specialize some # of the important behaviors. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:13 +# source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:13 module Nokogiri::XML::Searchable # call-seq: # at(*paths, [namespace-bindings, xpath-variable-bindings, custom-handler-class]) @@ -6025,7 +6789,7 @@ module Nokogiri::XML::Searchable # # See Searchable#search for more information. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:71 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:74 def %(*args); end # call-seq: @@ -6046,20 +6810,23 @@ module Nokogiri::XML::Searchable # node.search('.//address[@domestic=$value]', nil, {:value => 'Yes'}) # # πŸ’‘ Custom XPath functions and CSS pseudo-selectors may also be defined. To define custom - # functions create a class and implement the function you want to define. The first argument - # to the method will be the current matching NodeSet. Any other arguments are ones that you - # pass in. Note that this class may appear anywhere in the argument list. For example: + # functions create a class and implement the function you want to define, which will be in the + # `nokogiri` namespace in XPath queries. + # + # The first argument to the method will be the current matching NodeSet. Any other arguments + # are ones that you pass in. Note that this class may appear anywhere in the argument + # list. For example: # # handler = Class.new { # def regex node_set, regex # node_set.find_all { |node| node['some_attribute'] =~ /#{regex}/ } # end # }.new - # node.search('.//title[regex(., "\w+")]', 'div.employee:regex("[0-9]+")', handler) + # node.search('.//title[nokogiri:regex(., "\w+")]', 'div.employee:regex("[0-9]+")', handler) # # See Searchable#xpath and Searchable#css for further usage help. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:51 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:54 def /(*args); end # :call-seq: @@ -6067,7 +6834,7 @@ module Nokogiri::XML::Searchable # # Search this node's immediate children using CSS selector +selector+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:196 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:201 def >(selector); end # call-seq: @@ -6078,7 +6845,7 @@ module Nokogiri::XML::Searchable # # See Searchable#search for more information. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:71 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:74 def at(*args); end # call-seq: @@ -6089,7 +6856,7 @@ module Nokogiri::XML::Searchable # # See Searchable#css for more information. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:140 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:143 def at_css(*args); end # call-seq: @@ -6100,7 +6867,7 @@ module Nokogiri::XML::Searchable # # See Searchable#xpath for more information. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:188 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:193 def at_xpath(*args); end # call-seq: @@ -6152,7 +6919,7 @@ module Nokogiri::XML::Searchable # you'll never find anything. However, "H1" might be found in an XML document, where tags # names are case-sensitive (e.g., "H1" is distinct from "h1"). # - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:126 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:129 def css(*args); end # call-seq: @@ -6173,20 +6940,23 @@ module Nokogiri::XML::Searchable # node.search('.//address[@domestic=$value]', nil, {:value => 'Yes'}) # # πŸ’‘ Custom XPath functions and CSS pseudo-selectors may also be defined. To define custom - # functions create a class and implement the function you want to define. The first argument - # to the method will be the current matching NodeSet. Any other arguments are ones that you - # pass in. Note that this class may appear anywhere in the argument list. For example: + # functions create a class and implement the function you want to define, which will be in the + # `nokogiri` namespace in XPath queries. + # + # The first argument to the method will be the current matching NodeSet. Any other arguments + # are ones that you pass in. Note that this class may appear anywhere in the argument + # list. For example: # # handler = Class.new { # def regex node_set, regex # node_set.find_all { |node| node['some_attribute'] =~ /#{regex}/ } # end # }.new - # node.search('.//title[regex(., "\w+")]', 'div.employee:regex("[0-9]+")', handler) + # node.search('.//title[nokogiri:regex(., "\w+")]', 'div.employee:regex("[0-9]+")', handler) # # See Searchable#xpath and Searchable#css for further usage help. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:51 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:54 def search(*args); end # call-seq: @@ -6207,150 +6977,152 @@ module Nokogiri::XML::Searchable # node.xpath('.//address[@domestic=$value]', nil, {:value => 'Yes'}) # # πŸ’‘ Custom XPath functions may also be defined. To define custom functions create a class and - # implement the function you want to define. The first argument to the method will be the - # current matching NodeSet. Any other arguments are ones that you pass in. Note that this - # class may appear anywhere in the argument list. For example: + # implement the function you want to define, which will be in the `nokogiri` namespace. + # + # The first argument to the method will be the current matching NodeSet. Any other arguments + # are ones that you pass in. Note that this class may appear anywhere in the argument + # list. For example: # # handler = Class.new { # def regex(node_set, regex) # node_set.find_all { |node| node['some_attribute'] =~ /#{regex}/ } # end # }.new - # node.xpath('.//title[regex(., "\w+")]', handler) + # node.xpath('.//title[nokogiri:regex(., "\w+")]', handler) # - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:174 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:179 def xpath(*args); end private - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:205 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:210 def css_internal(node, rules, handler, ns); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:236 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:241 def css_rules_to_xpath(rules, ns); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:251 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:259 def extract_params(params); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:224 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:229 def xpath_impl(node, path, handler, ns, binds); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:209 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:214 def xpath_internal(node, paths, handler, ns, binds); end - # source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:240 + # source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:245 def xpath_query_from_css_rule(rule, ns); end end # Regular expression used by Searchable#search to determine if a query # string is CSS or XPath # -# source://nokogiri-1.13.8/lib/nokogiri/xml/searchable.rb:16 +# source://nokogiri-1.15.3/lib/nokogiri/xml/searchable.rb:16 Nokogiri::XML::Searchable::LOOKS_LIKE_XPATH = T.let(T.unsafe(nil), Regexp) # This class provides information about XML SyntaxErrors. These # exceptions are typically stored on Nokogiri::XML::Document#errors. # -# source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:8 +# source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:8 class Nokogiri::XML::SyntaxError < ::Nokogiri::SyntaxError # Returns the value of attribute code. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:10 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:10 def code; end # Returns the value of attribute column. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:18 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:18 def column; end # Returns the value of attribute domain. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:9 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:9 def domain; end # return true if this is an error # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:34 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:34 def error?; end # return true if this error is fatal # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:40 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:40 def fatal?; end # Returns the value of attribute file. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:12 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:12 def file; end # Returns the value of attribute int1. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:17 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:17 def int1; end # Returns the value of attribute level. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:11 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:11 def level; end # Returns the value of attribute line. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:13 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:13 def line; end # return true if this is a non error # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:22 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:22 def none?; end # Returns the value of attribute str1. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:14 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:14 def str1; end # Returns the value of attribute str2. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:15 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:15 def str2; end # Returns the value of attribute str3. # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:16 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:16 def str3; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:44 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:44 def to_s; end # return true if this is a warning # # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:28 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:28 def warning?; end private - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:53 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:53 def level_to_s; end - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:65 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:65 def location_to_s; end # @return [Boolean] # - # source://nokogiri-1.13.8/lib/nokogiri/xml/syntax_error.rb:61 + # source://nokogiri-1.15.3/lib/nokogiri/xml/syntax_error.rb:61 def nil_or_zero?(attribute); end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/text.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/xml/text.rb:5 class Nokogiri::XML::Text < ::Nokogiri::XML::CharacterData - # source://nokogiri-1.13.8/lib/nokogiri/xml/text.rb:6 + # source://nokogiri-1.15.3/lib/nokogiri/xml/text.rb:6 def content=(string); end class << self @@ -6360,55 +7132,55 @@ end # Original C14N 1.0 spec canonicalization # -# source://nokogiri-1.13.8/lib/nokogiri/xml.rb:14 +# source://nokogiri-1.15.3/lib/nokogiri/xml.rb:14 Nokogiri::XML::XML_C14N_1_0 = T.let(T.unsafe(nil), Integer) # C14N 1.1 spec canonicalization # -# source://nokogiri-1.13.8/lib/nokogiri/xml.rb:18 +# source://nokogiri-1.15.3/lib/nokogiri/xml.rb:18 Nokogiri::XML::XML_C14N_1_1 = T.let(T.unsafe(nil), Integer) # Exclusive C14N 1.0 spec canonicalization # -# source://nokogiri-1.13.8/lib/nokogiri/xml.rb:16 +# source://nokogiri-1.15.3/lib/nokogiri/xml.rb:16 Nokogiri::XML::XML_C14N_EXCLUSIVE_1_0 = T.let(T.unsafe(nil), Integer) -# source://nokogiri-1.13.8/lib/nokogiri/xml/xpath.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/xml/xpath.rb:5 module Nokogiri::XML::XPath; end # The XPath search prefix to search direct descendants of the current element, +./+ # -# source://nokogiri-1.13.8/lib/nokogiri/xml/xpath.rb:13 +# source://nokogiri-1.15.3/lib/nokogiri/xml/xpath.rb:13 Nokogiri::XML::XPath::CURRENT_SEARCH_PREFIX = T.let(T.unsafe(nil), String) # The XPath search prefix to search globally, +//+ # -# source://nokogiri-1.13.8/lib/nokogiri/xml/xpath.rb:7 +# source://nokogiri-1.15.3/lib/nokogiri/xml/xpath.rb:7 Nokogiri::XML::XPath::GLOBAL_SEARCH_PREFIX = T.let(T.unsafe(nil), String) # The XPath search prefix to search direct descendants of the root element, +/+ # -# source://nokogiri-1.13.8/lib/nokogiri/xml/xpath.rb:10 +# source://nokogiri-1.15.3/lib/nokogiri/xml/xpath.rb:10 Nokogiri::XML::XPath::ROOT_SEARCH_PREFIX = T.let(T.unsafe(nil), String) # The XPath search prefix to search anywhere in the current element's subtree, +.//+ # -# source://nokogiri-1.13.8/lib/nokogiri/xml/xpath.rb:16 +# source://nokogiri-1.15.3/lib/nokogiri/xml/xpath.rb:16 Nokogiri::XML::XPath::SUBTREE_SEARCH_PREFIX = T.let(T.unsafe(nil), String) -# source://nokogiri-1.13.8/lib/nokogiri/xml/xpath/syntax_error.rb:6 +# source://nokogiri-1.15.3/lib/nokogiri/xml/xpath/syntax_error.rb:6 class Nokogiri::XML::XPath::SyntaxError < ::Nokogiri::XML::SyntaxError - # source://nokogiri-1.13.8/lib/nokogiri/xml/xpath/syntax_error.rb:7 + # source://nokogiri-1.15.3/lib/nokogiri/xml/xpath/syntax_error.rb:7 def to_s; end end -# source://nokogiri-1.13.8/lib/nokogiri/xml/xpath_context.rb:5 +# source://nokogiri-1.15.3/lib/nokogiri/xml/xpath_context.rb:5 class Nokogiri::XML::XPathContext def evaluate(*_arg0); end # Register namespaces in +namespaces+ # - # source://nokogiri-1.13.8/lib/nokogiri/xml/xpath_context.rb:8 + # source://nokogiri-1.15.3/lib/nokogiri/xml/xpath_context.rb:8 def register_namespaces(namespaces); end def register_ns(_arg0, _arg1); end @@ -6422,12 +7194,63 @@ end # See Nokogiri::XSLT::Stylesheet for creating and manipulating # Stylesheet object. # -# source://nokogiri-1.13.8/lib/nokogiri/xslt.rb:21 +# source://nokogiri-1.15.3/lib/nokogiri/xslt.rb:21 module Nokogiri::XSLT class << self - # Parse the stylesheet in +string+, register any +modules+ + # :call-seq: + # parse(xsl) β†’ Nokogiri::XSLT::Stylesheet + # parse(xsl, modules) β†’ Nokogiri::XSLT::Stylesheet + # + # Parse the stylesheet in +xsl+, registering optional +modules+ as custom class handlers. + # + # [Parameters] + # - +xsl+ (String) XSL content to be parsed into a stylesheet + # - +modules+ (Hash) A hash of URI-to-handler relations for linking a + # namespace to a custom function handler. + # + # ⚠ The XSLT handler classes are registered *globally*. + # + # Also see Nokogiri::XSLT.register + # + # *Example* + # + # xml = Nokogiri.XML(<<~XML) + # + # Foo + # Bar + # + # XML + # + # handler = Class.new do + # def reverse(node) + # node.text.reverse + # end + # end + # + # xsl = <<~XSL + # + # + # + # + # + # + # + # + # + # XSL + # + # xsl = Nokogiri.XSLT(xsl, "http://nokogiri.org/xslt/myfuncs" => handler) + # xsl.transform(xml).to_xml + # # => "\n" + + # # "\n" + + # # " ooF\n" + + # # " raB\n" + + # # "\n" # - # source://nokogiri-1.13.8/lib/nokogiri/xslt.rb:25 + # source://nokogiri-1.15.3/lib/nokogiri/xslt.rb:76 def parse(string, modules = T.unsafe(nil)); end # :call-seq: @@ -6441,7 +7264,7 @@ module Nokogiri::XSLT # # [Returns] Array of string parameters, with quotes correctly escaped for use with XSLT::Stylesheet.transform # - # source://nokogiri-1.13.8/lib/nokogiri/xslt.rb:49 + # source://nokogiri-1.15.3/lib/nokogiri/xslt.rb:100 def quote_params(params); end def register(_arg0, _arg1); end @@ -6460,13 +7283,13 @@ end # See Nokogiri::XSLT::Stylesheet#transform for more transformation # information. # -# source://nokogiri-1.13.8/lib/nokogiri/xslt/stylesheet.rb:17 +# source://nokogiri-1.15.3/lib/nokogiri/xslt/stylesheet.rb:17 class Nokogiri::XSLT::Stylesheet # Apply an XSLT stylesheet to an XML::Document. # +params+ is an array of strings used as XSLT parameters. # returns serialized document # - # source://nokogiri-1.13.8/lib/nokogiri/xslt/stylesheet.rb:22 + # source://nokogiri-1.15.3/lib/nokogiri/xslt/stylesheet.rb:22 def apply_to(document, params = T.unsafe(nil)); end def serialize(_arg0); end diff --git a/sorbet/rbi/gems/prism@0.24.0.rbi b/sorbet/rbi/gems/prism@0.24.0.rbi new file mode 100644 index 000000000..0aa3a53c6 --- /dev/null +++ b/sorbet/rbi/gems/prism@0.24.0.rbi @@ -0,0 +1,29982 @@ +# typed: true + +# DO NOT EDIT MANUALLY +# This is an autogenerated file for types exported from the `prism` gem. +# Please instead update this file by running `bin/tapioca gem prism`. + +# The Prism Ruby parser. +# +# "Parsing Ruby is suddenly manageable!" +# - You, hopefully +# +# source://prism-0.24.0/lib/prism.rb:8 +module Prism + class << self + # Mirror the Prism.dump API by using the serialization API. + def dump(*_arg0); end + + # Mirror the Prism.dump_file API by using the serialization API. + def dump_file(*_arg0); end + + # Mirror the Prism.lex API by using the serialization API. + def lex(*_arg0); end + + # :call-seq: + # Prism::lex_compat(source, **options) -> ParseResult + # + # Returns a parse result whose value is an array of tokens that closely + # resembles the return value of Ripper::lex. The main difference is that the + # `:on_sp` token is not emitted. + # + # For supported options, see Prism::parse. + # + # source://prism-0.24.0/lib/prism.rb:46 + def lex_compat(source, **options); end + + # Mirror the Prism.lex_file API by using the serialization API. + def lex_file(*_arg0); end + + # :call-seq: + # Prism::lex_ripper(source) -> Array + # + # This lexes with the Ripper lex. It drops any space events but otherwise + # returns the same tokens. Raises SyntaxError if the syntax in source is + # invalid. + # + # source://prism-0.24.0/lib/prism.rb:56 + def lex_ripper(source); end + + # :call-seq: + # Prism::load(source, serialized) -> ParseResult + # + # Load the serialized AST using the source as a reference into a tree. + # + # source://prism-0.24.0/lib/prism.rb:64 + def load(source, serialized); end + + # Mirror the Prism.parse API by using the serialization API. + def parse(*_arg0); end + + # Mirror the Prism.parse_comments API by using the serialization API. + def parse_comments(*_arg0); end + + # :call-seq: + # Prism::parse_failure?(source, **options) -> bool + # + # Returns true if the source parses with errors. + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism.rb:72 + def parse_failure?(source, **options); end + + # Mirror the Prism.parse_file API by using the serialization API. This uses + # native strings instead of Ruby strings because it allows us to use mmap when + # it is available. + def parse_file(*_arg0); end + + # Mirror the Prism.parse_file_comments API by using the serialization + # API. This uses native strings instead of Ruby strings because it allows us + # to use mmap when it is available. + def parse_file_comments(*_arg0); end + + # :call-seq: + # Prism::parse_file_failure?(filepath, **options) -> bool + # + # Returns true if the file at filepath parses with errors. + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism.rb:80 + def parse_file_failure?(filepath, **options); end + + # Mirror the Prism.parse_file_success? API by using the serialization API. + # + # @return [Boolean] + def parse_file_success?(*_arg0); end + + # Mirror the Prism.parse_lex API by using the serialization API. + def parse_lex(*_arg0); end + + # Mirror the Prism.parse_lex_file API by using the serialization API. + def parse_lex_file(*_arg0); end + + # Mirror the Prism.parse_success? API by using the serialization API. + # + # @return [Boolean] + def parse_success?(*_arg0); end + end +end + +# Represents the use of the `alias` keyword to alias a global variable. +# +# alias $foo $bar +# ^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:97 +class Prism::AliasGlobalVariableNode < ::Prism::Node + # def initialize: (Node new_name, Node old_name, Location keyword_loc, Location location) -> void + # + # @return [AliasGlobalVariableNode] a new instance of AliasGlobalVariableNode + # + # source://prism-0.24.0/lib/prism/node.rb:99 + def initialize(source, new_name, old_name, keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:109 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:114 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:124 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:119 + def compact_child_nodes; end + + # def copy: (**params) -> AliasGlobalVariableNode + # + # source://prism-0.24.0/lib/prism/node.rb:129 + sig { params(params: T.untyped).returns(Prism::AliasGlobalVariableNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:114 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { new_name: Node, old_name: Node, keyword_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:143 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:166 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:161 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:154 + sig { returns(Prism::Location) } + def keyword_loc; end + + # attr_reader new_name: Node + # + # source://prism-0.24.0/lib/prism/node.rb:148 + sig { returns(Prism::Node) } + def new_name; end + + # attr_reader old_name: Node + # + # source://prism-0.24.0/lib/prism/node.rb:151 + sig { returns(Prism::Node) } + def old_name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:190 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:200 + def type; end + end +end + +# Represents the use of the `alias` keyword to alias a method. +# +# alias foo bar +# ^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:209 +class Prism::AliasMethodNode < ::Prism::Node + # def initialize: (Node new_name, Node old_name, Location keyword_loc, Location location) -> void + # + # @return [AliasMethodNode] a new instance of AliasMethodNode + # + # source://prism-0.24.0/lib/prism/node.rb:211 + def initialize(source, new_name, old_name, keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:221 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:226 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:236 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:231 + def compact_child_nodes; end + + # def copy: (**params) -> AliasMethodNode + # + # source://prism-0.24.0/lib/prism/node.rb:241 + sig { params(params: T.untyped).returns(Prism::AliasMethodNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:226 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { new_name: Node, old_name: Node, keyword_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:255 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:278 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:273 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:266 + sig { returns(Prism::Location) } + def keyword_loc; end + + # attr_reader new_name: Node + # + # source://prism-0.24.0/lib/prism/node.rb:260 + sig { returns(Prism::Node) } + def new_name; end + + # attr_reader old_name: Node + # + # source://prism-0.24.0/lib/prism/node.rb:263 + sig { returns(Prism::Node) } + def old_name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:302 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:312 + def type; end + end +end + +# Represents an alternation pattern in pattern matching. +# +# foo => bar | baz +# ^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:321 +class Prism::AlternationPatternNode < ::Prism::Node + # def initialize: (Node left, Node right, Location operator_loc, Location location) -> void + # + # @return [AlternationPatternNode] a new instance of AlternationPatternNode + # + # source://prism-0.24.0/lib/prism/node.rb:323 + def initialize(source, left, right, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:333 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:338 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:348 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:343 + def compact_child_nodes; end + + # def copy: (**params) -> AlternationPatternNode + # + # source://prism-0.24.0/lib/prism/node.rb:353 + sig { params(params: T.untyped).returns(Prism::AlternationPatternNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:338 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { left: Node, right: Node, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:367 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:390 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader left: Node + # + # source://prism-0.24.0/lib/prism/node.rb:372 + sig { returns(Prism::Node) } + def left; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:385 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:378 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader right: Node + # + # source://prism-0.24.0/lib/prism/node.rb:375 + sig { returns(Prism::Node) } + def right; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:414 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:424 + def type; end + end +end + +# Represents the use of the `&&` operator or the `and` keyword. +# +# left and right +# ^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:433 +class Prism::AndNode < ::Prism::Node + # def initialize: (Node left, Node right, Location operator_loc, Location location) -> void + # + # @return [AndNode] a new instance of AndNode + # + # source://prism-0.24.0/lib/prism/node.rb:435 + def initialize(source, left, right, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:445 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:450 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:460 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:455 + def compact_child_nodes; end + + # def copy: (**params) -> AndNode + # + # source://prism-0.24.0/lib/prism/node.rb:465 + sig { params(params: T.untyped).returns(Prism::AndNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:450 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { left: Node, right: Node, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:479 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:517 + def inspect(inspector = T.unsafe(nil)); end + + # Represents the left side of the expression. It can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). + # + # left and right + # ^^^^ + # + # 1 && 2 + # ^ + # + # source://prism-0.24.0/lib/prism/node.rb:490 + sig { returns(Prism::Node) } + def left; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:512 + sig { returns(String) } + def operator; end + + # The location of the `and` keyword or the `&&` operator. + # + # left and right + # ^^^ + # + # source://prism-0.24.0/lib/prism/node.rb:505 + sig { returns(Prism::Location) } + def operator_loc; end + + # Represents the right side of the expression. It can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). + # + # left && right + # ^^^^^ + # + # 1 and 2 + # ^ + # + # source://prism-0.24.0/lib/prism/node.rb:499 + sig { returns(Prism::Node) } + def right; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:541 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:551 + def type; end + end +end + +# Represents a set of arguments to a method or a keyword. +# +# return foo, bar, baz +# ^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:560 +class Prism::ArgumentsNode < ::Prism::Node + # def initialize: (Integer flags, Array[Node] arguments, Location location) -> void + # + # @return [ArgumentsNode] a new instance of ArgumentsNode + # + # source://prism-0.24.0/lib/prism/node.rb:562 + def initialize(source, flags, arguments, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:571 + def accept(visitor); end + + # attr_reader arguments: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:613 + sig { returns(T::Array[Prism::Node]) } + def arguments; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:576 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:586 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:581 + def compact_child_nodes; end + + # def contains_keyword_splat?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:617 + sig { returns(T::Boolean) } + def contains_keyword_splat?; end + + # def copy: (**params) -> ArgumentsNode + # + # source://prism-0.24.0/lib/prism/node.rb:591 + sig { params(params: T.untyped).returns(Prism::ArgumentsNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:576 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, arguments: Array[Node], location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:604 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:622 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:644 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:609 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:654 + def type; end + end +end + +# Flags for arguments nodes. +# +# source://prism-0.24.0/lib/prism/node.rb:19241 +module Prism::ArgumentsNodeFlags; end + +# if arguments contain keyword splat +# +# source://prism-0.24.0/lib/prism/node.rb:19243 +Prism::ArgumentsNodeFlags::CONTAINS_KEYWORD_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. +# +# [1, 2, 3] +# ^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:663 +class Prism::ArrayNode < ::Prism::Node + # def initialize: (Integer flags, Array[Node] elements, Location? opening_loc, Location? closing_loc, Location location) -> void + # + # @return [ArrayNode] a new instance of ArrayNode + # + # source://prism-0.24.0/lib/prism/node.rb:665 + def initialize(source, flags, elements, opening_loc, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:676 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:681 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:758 + sig { returns(T.nilable(String)) } + def closing; end + + # attr_reader closing_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:735 + sig { returns(T.nilable(Prism::Location)) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:691 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:686 + def compact_child_nodes; end + + # def contains_splat?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:748 + sig { returns(T::Boolean) } + def contains_splat?; end + + # def copy: (**params) -> ArrayNode + # + # source://prism-0.24.0/lib/prism/node.rb:696 + sig { params(params: T.untyped).returns(Prism::ArrayNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:681 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, elements: Array[Node], opening_loc: Location?, closing_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:711 + def deconstruct_keys(keys); end + + # attr_reader elements: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:720 + sig { returns(T::Array[Prism::Node]) } + def elements; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:763 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:753 + sig { returns(T.nilable(String)) } + def opening; end + + # attr_reader opening_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:723 + sig { returns(T.nilable(Prism::Location)) } + def opening_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:787 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:716 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:797 + def type; end + end +end + +# Flags for array nodes. +# +# source://prism-0.24.0/lib/prism/node.rb:19247 +module Prism::ArrayNodeFlags; end + +# if array contains splat nodes +# +# source://prism-0.24.0/lib/prism/node.rb:19249 +Prism::ArrayNodeFlags::CONTAINS_SPLAT = T.let(T.unsafe(nil), Integer) + +# Represents an array pattern in pattern matching. +# +# foo in 1, 2 +# ^^^^^^^^^^^ +# +# foo in [1, 2] +# ^^^^^^^^^^^^^ +# +# foo in *1 +# ^^^^^^^^^ +# +# foo in Bar[] +# ^^^^^^^^^^^^ +# +# foo in Bar[1, 2, 3] +# ^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:818 +class Prism::ArrayPatternNode < ::Prism::Node + # def initialize: (Node? constant, Array[Node] requireds, Node? rest, Array[Node] posts, Location? opening_loc, Location? closing_loc, Location location) -> void + # + # @return [ArrayPatternNode] a new instance of ArrayPatternNode + # + # source://prism-0.24.0/lib/prism/node.rb:820 + def initialize(source, constant, requireds, rest, posts, opening_loc, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:833 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:838 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:922 + sig { returns(T.nilable(String)) } + def closing; end + + # attr_reader closing_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:904 + sig { returns(T.nilable(Prism::Location)) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:853 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:843 + def compact_child_nodes; end + + # attr_reader constant: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:880 + sig { returns(T.nilable(Prism::Node)) } + def constant; end + + # def copy: (**params) -> ArrayPatternNode + # + # source://prism-0.24.0/lib/prism/node.rb:858 + sig { params(params: T.untyped).returns(Prism::ArrayPatternNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:838 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { constant: Node?, requireds: Array[Node], rest: Node?, posts: Array[Node], opening_loc: Location?, closing_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:875 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:927 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:917 + sig { returns(T.nilable(String)) } + def opening; end + + # attr_reader opening_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:892 + sig { returns(T.nilable(Prism::Location)) } + def opening_loc; end + + # attr_reader posts: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:889 + sig { returns(T::Array[Prism::Node]) } + def posts; end + + # attr_reader requireds: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:883 + sig { returns(T::Array[Prism::Node]) } + def requireds; end + + # attr_reader rest: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:886 + sig { returns(T.nilable(Prism::Node)) } + def rest; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:962 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:972 + def type; end + end +end + +# Represents a hash key/value pair. +# +# { a => b } +# ^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:981 +class Prism::AssocNode < ::Prism::Node + # def initialize: (Node key, Node value, Location? operator_loc, Location location) -> void + # + # @return [AssocNode] a new instance of AssocNode + # + # source://prism-0.24.0/lib/prism/node.rb:983 + def initialize(source, key, value, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:993 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:998 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:1008 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1003 + def compact_child_nodes; end + + # def copy: (**params) -> AssocNode + # + # source://prism-0.24.0/lib/prism/node.rb:1013 + sig { params(params: T.untyped).returns(Prism::AssocNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:998 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { key: Node, value: Node, operator_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:1027 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1074 + def inspect(inspector = T.unsafe(nil)); end + + # The key of the association. This can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). + # + # { a: b } + # ^ + # + # { foo => bar } + # ^^^ + # + # { def a; end => 1 } + # ^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/node.rb:1041 + sig { returns(Prism::Node) } + def key; end + + # def operator: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:1069 + sig { returns(T.nilable(String)) } + def operator; end + + # The location of the `=>` operator, if present. + # + # { foo => bar } + # ^^ + # + # source://prism-0.24.0/lib/prism/node.rb:1056 + sig { returns(T.nilable(Prism::Location)) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1098 + def type; end + + # The value of the association, if present. This can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). + # + # { foo => bar } + # ^^^ + # + # { x: 1 } + # ^ + # + # source://prism-0.24.0/lib/prism/node.rb:1050 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1108 + def type; end + end +end + +# Represents a splat in a hash literal. +# +# { **foo } +# ^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:1117 +class Prism::AssocSplatNode < ::Prism::Node + # def initialize: (Node? value, Location operator_loc, Location location) -> void + # + # @return [AssocSplatNode] a new instance of AssocSplatNode + # + # source://prism-0.24.0/lib/prism/node.rb:1119 + def initialize(source, value, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:1128 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1133 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:1145 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1138 + def compact_child_nodes; end + + # def copy: (**params) -> AssocSplatNode + # + # source://prism-0.24.0/lib/prism/node.rb:1150 + sig { params(params: T.untyped).returns(Prism::AssocSplatNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1133 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { value: Node?, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:1163 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1189 + def inspect(inspector = T.unsafe(nil)); end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1184 + sig { returns(String) } + def operator; end + + # The location of the `**` operator. + # + # { **x } + # ^^ + # + # source://prism-0.24.0/lib/prism/node.rb:1177 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1215 + def type; end + + # The value to be splatted, if present. Will be missing when keyword rest argument forwarding is used. + # + # { **foo } + # ^^^ + # + # source://prism-0.24.0/lib/prism/node.rb:1171 + sig { returns(T.nilable(Prism::Node)) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1225 + def type; end + end +end + +Prism::BACKEND = T.let(T.unsafe(nil), Symbol) + +# Represents reading a reference to a field in the previous match. +# +# $' +# ^^ +# +# source://prism-0.24.0/lib/prism/node.rb:1234 +class Prism::BackReferenceReadNode < ::Prism::Node + # def initialize: (Symbol name, Location location) -> void + # + # @return [BackReferenceReadNode] a new instance of BackReferenceReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:1236 + def initialize(source, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:1244 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1249 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:1259 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1254 + def compact_child_nodes; end + + # def copy: (**params) -> BackReferenceReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:1264 + sig { params(params: T.untyped).returns(Prism::BackReferenceReadNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1249 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:1276 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1289 + def inspect(inspector = T.unsafe(nil)); end + + # The name of the back-reference variable, including the leading `$`. + # + # $& # name `:$&` + # + # $+ # name `:$+` + # + # source://prism-0.24.0/lib/prism/node.rb:1285 + sig { returns(Symbol) } + def name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1309 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1319 + def type; end + end +end + +# A class that knows how to walk down the tree. None of the individual visit +# methods are implemented on this visitor, so it forces the consumer to +# implement each one that they need. For a default implementation that +# continues walking the tree, see the Visitor class. +# +# source://prism-0.24.0/lib/prism/visitor.rb:13 +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-0.24.0/lib/prism/visitor.rb:16 + def visit(node); end + + # Visits each node in `nodes` by calling `accept` on each one. + # + # source://prism-0.24.0/lib/prism/visitor.rb:21 + def visit_all(nodes); end + + # Visits the child nodes of `node` by calling `accept` on each one. + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_child_nodes(node); end +end + +# Represents a begin statement. +# +# begin +# foo +# end +# ^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:1330 +class Prism::BeginNode < ::Prism::Node + # def initialize: (Location? begin_keyword_loc, StatementsNode? statements, RescueNode? rescue_clause, ElseNode? else_clause, EnsureNode? ensure_clause, Location? end_keyword_loc, Location location) -> void + # + # @return [BeginNode] a new instance of BeginNode + # + # source://prism-0.24.0/lib/prism/node.rb:1332 + def initialize(source, begin_keyword_loc, statements, rescue_clause, else_clause, ensure_clause, end_keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:1345 + def accept(visitor); end + + # def begin_keyword: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:1433 + sig { returns(T.nilable(String)) } + def begin_keyword; end + + # attr_reader begin_keyword_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:1396 + sig { returns(T.nilable(Prism::Location)) } + def begin_keyword_loc; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1354 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:1369 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1359 + def compact_child_nodes; end + + # def copy: (**params) -> BeginNode + # + # source://prism-0.24.0/lib/prism/node.rb:1374 + sig { params(params: T.untyped).returns(Prism::BeginNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1354 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { begin_keyword_loc: Location?, statements: StatementsNode?, rescue_clause: RescueNode?, else_clause: ElseNode?, ensure_clause: EnsureNode?, end_keyword_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:1391 + def deconstruct_keys(keys); end + + # attr_reader else_clause: ElseNode? + # + # source://prism-0.24.0/lib/prism/node.rb:1414 + sig { returns(T.nilable(Prism::ElseNode)) } + def else_clause; end + + # def end_keyword: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:1438 + sig { returns(T.nilable(String)) } + def end_keyword; end + + # attr_reader end_keyword_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:1420 + sig { returns(T.nilable(Prism::Location)) } + def end_keyword_loc; end + + # attr_reader ensure_clause: EnsureNode? + # + # source://prism-0.24.0/lib/prism/node.rb:1417 + sig { returns(T.nilable(Prism::EnsureNode)) } + def ensure_clause; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1443 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader rescue_clause: RescueNode? + # + # source://prism-0.24.0/lib/prism/node.rb:1411 + sig { returns(T.nilable(Prism::RescueNode)) } + def rescue_clause; end + + # source://prism-0.24.0/lib/prism/node.rb:1349 + def set_newline_flag(newline_marked); end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:1408 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1488 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1498 + def type; end + end +end + +# Represents block method arguments. +# +# bar(&args) +# ^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:1507 +class Prism::BlockArgumentNode < ::Prism::Node + # def initialize: (Node? expression, Location operator_loc, Location location) -> void + # + # @return [BlockArgumentNode] a new instance of BlockArgumentNode + # + # source://prism-0.24.0/lib/prism/node.rb:1509 + def initialize(source, expression, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:1518 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1523 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:1535 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1528 + def compact_child_nodes; end + + # def copy: (**params) -> BlockArgumentNode + # + # source://prism-0.24.0/lib/prism/node.rb:1540 + sig { params(params: T.untyped).returns(Prism::BlockArgumentNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1523 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { expression: Node?, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:1553 + def deconstruct_keys(keys); end + + # attr_reader expression: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:1558 + sig { returns(T.nilable(Prism::Node)) } + def expression; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1573 + def inspect(inspector = T.unsafe(nil)); end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1568 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:1561 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1599 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1609 + def type; end + end +end + +# Represents a block local variable. +# +# a { |; b| } +# ^ +# +# source://prism-0.24.0/lib/prism/node.rb:1618 +class Prism::BlockLocalVariableNode < ::Prism::Node + # def initialize: (Integer flags, Symbol name, Location location) -> void + # + # @return [BlockLocalVariableNode] a new instance of BlockLocalVariableNode + # + # source://prism-0.24.0/lib/prism/node.rb:1620 + def initialize(source, flags, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:1629 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1634 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:1644 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1639 + def compact_child_nodes; end + + # def copy: (**params) -> BlockLocalVariableNode + # + # source://prism-0.24.0/lib/prism/node.rb:1649 + sig { params(params: T.untyped).returns(Prism::BlockLocalVariableNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1634 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:1662 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1680 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1671 + sig { returns(Symbol) } + def name; end + + # def repeated_parameter?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:1675 + sig { returns(T::Boolean) } + def repeated_parameter?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1702 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:1667 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1712 + def type; end + end +end + +# Represents a block of ruby code. +# +# [1, 2, 3].each { |i| puts x } +# ^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:1721 +class Prism::BlockNode < ::Prism::Node + # def initialize: (Array[Symbol] locals, Node? parameters, Node? body, Location opening_loc, Location closing_loc, Location location) -> void + # + # @return [BlockNode] a new instance of BlockNode + # + # source://prism-0.24.0/lib/prism/node.rb:1723 + def initialize(source, locals, parameters, body, opening_loc, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:1735 + def accept(visitor); end + + # attr_reader body: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:1785 + sig { returns(T.nilable(Prism::Node)) } + def body; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1740 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1806 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:1794 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:1753 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1745 + def compact_child_nodes; end + + # def copy: (**params) -> BlockNode + # + # source://prism-0.24.0/lib/prism/node.rb:1758 + sig { params(params: T.untyped).returns(Prism::BlockNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1740 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { locals: Array[Symbol], parameters: Node?, body: Node?, opening_loc: Location, closing_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:1774 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1811 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader locals: Array[Symbol] + # + # source://prism-0.24.0/lib/prism/node.rb:1779 + sig { returns(T::Array[Symbol]) } + def locals; end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1801 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:1788 + sig { returns(Prism::Location) } + def opening_loc; end + + # attr_reader parameters: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:1782 + sig { returns(T.nilable(Prism::Node)) } + def parameters; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1845 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1855 + def type; end + end +end + +# Represents a block parameter to a method, block, or lambda definition. +# +# def a(&b) +# ^^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:1865 +class Prism::BlockParameterNode < ::Prism::Node + # def initialize: (Integer flags, Symbol? name, Location? name_loc, Location operator_loc, Location location) -> void + # + # @return [BlockParameterNode] a new instance of BlockParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:1867 + def initialize(source, flags, name, name_loc, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:1878 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1883 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:1893 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1888 + def compact_child_nodes; end + + # def copy: (**params) -> BlockParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:1898 + sig { params(params: T.untyped).returns(Prism::BlockParameterNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:1883 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, name: Symbol?, name_loc: Location?, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:1913 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1954 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol? + # + # source://prism-0.24.0/lib/prism/node.rb:1922 + sig { returns(T.nilable(Symbol)) } + def name; end + + # attr_reader name_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:1925 + sig { returns(T.nilable(Prism::Location)) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:1949 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:1937 + sig { returns(Prism::Location) } + def operator_loc; end + + # def repeated_parameter?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:1944 + sig { returns(T::Boolean) } + def repeated_parameter?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1982 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:1918 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:1992 + def type; end + end +end + +# Represents a block's parameters declaration. +# +# -> (a, b = 1; local) { } +# ^^^^^^^^^^^^^^^^^ +# +# foo do |a, b = 1; local| +# ^^^^^^^^^^^^^^^^^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:2005 +class Prism::BlockParametersNode < ::Prism::Node + # def initialize: (ParametersNode? parameters, Array[Node] locals, Location? opening_loc, Location? closing_loc, Location location) -> void + # + # @return [BlockParametersNode] a new instance of BlockParametersNode + # + # source://prism-0.24.0/lib/prism/node.rb:2007 + def initialize(source, parameters, locals, opening_loc, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:2018 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2023 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:2097 + sig { returns(T.nilable(String)) } + def closing; end + + # attr_reader closing_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:2079 + sig { returns(T.nilable(Prism::Location)) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:2036 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2028 + def compact_child_nodes; end + + # def copy: (**params) -> BlockParametersNode + # + # source://prism-0.24.0/lib/prism/node.rb:2041 + sig { params(params: T.untyped).returns(Prism::BlockParametersNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2023 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { parameters: ParametersNode?, locals: Array[Node], opening_loc: Location?, closing_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:2056 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:2102 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader locals: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2064 + sig { returns(T::Array[Prism::Node]) } + def locals; end + + # def opening: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:2092 + sig { returns(T.nilable(String)) } + def opening; end + + # attr_reader opening_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:2067 + sig { returns(T.nilable(Prism::Location)) } + def opening_loc; end + + # attr_reader parameters: ParametersNode? + # + # source://prism-0.24.0/lib/prism/node.rb:2061 + sig { returns(T.nilable(Prism::ParametersNode)) } + def parameters; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2130 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2140 + def type; end + end +end + +# Represents the use of the `break` keyword. +# +# break foo +# ^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:2149 +class Prism::BreakNode < ::Prism::Node + # def initialize: (ArgumentsNode? arguments, Location keyword_loc, Location location) -> void + # + # @return [BreakNode] a new instance of BreakNode + # + # source://prism-0.24.0/lib/prism/node.rb:2151 + def initialize(source, arguments, keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:2160 + def accept(visitor); end + + # attr_reader arguments: ArgumentsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:2200 + sig { returns(T.nilable(Prism::ArgumentsNode)) } + def arguments; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2165 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:2177 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2170 + def compact_child_nodes; end + + # def copy: (**params) -> BreakNode + # + # source://prism-0.24.0/lib/prism/node.rb:2182 + sig { params(params: T.untyped).returns(Prism::BreakNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2165 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { arguments: ArgumentsNode?, keyword_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:2195 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:2215 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:2210 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:2203 + sig { returns(Prism::Location) } + def keyword_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2241 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2251 + def type; end + end +end + +# Represents the use of the `&&=` operator on a call. +# +# foo.bar &&= value +# ^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:2260 +class Prism::CallAndWriteNode < ::Prism::Node + # def initialize: (Integer flags, Node? receiver, Location? call_operator_loc, Location? message_loc, Symbol read_name, Symbol write_name, Location operator_loc, Node value, Location location) -> void + # + # @return [CallAndWriteNode] a new instance of CallAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:2262 + def initialize(source, flags, receiver, call_operator_loc, message_loc, read_name, write_name, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:2277 + def accept(visitor); end + + # def attribute_write?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:2381 + sig { returns(T::Boolean) } + def attribute_write?; end + + # def call_operator: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:2391 + sig { returns(T.nilable(String)) } + def call_operator; end + + # attr_reader call_operator_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:2331 + sig { returns(T.nilable(Prism::Location)) } + def call_operator_loc; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2282 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:2295 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2287 + def compact_child_nodes; end + + # def copy: (**params) -> CallAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:2300 + sig { params(params: T.untyped).returns(Prism::CallAndWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2282 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, receiver: Node?, call_operator_loc: Location?, message_loc: Location?, read_name: Symbol, write_name: Symbol, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:2319 + def deconstruct_keys(keys); end + + # def ignore_visibility?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:2386 + sig { returns(T::Boolean) } + def ignore_visibility?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:2406 + def inspect(inspector = T.unsafe(nil)); end + + # def message: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:2396 + sig { returns(T.nilable(String)) } + def message; end + + # attr_reader message_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:2343 + sig { returns(T.nilable(Prism::Location)) } + def message_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:2401 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:2361 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader read_name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2355 + sig { returns(Symbol) } + def read_name; end + + # attr_reader receiver: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:2328 + sig { returns(T.nilable(Prism::Node)) } + def receiver; end + + # def safe_navigation?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:2371 + sig { returns(T::Boolean) } + def safe_navigation?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2440 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:2367 + sig { returns(Prism::Node) } + def value; end + + # def variable_call?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:2376 + sig { returns(T::Boolean) } + def variable_call?; end + + # attr_reader write_name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2358 + sig { returns(Symbol) } + def write_name; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:2324 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2450 + def type; end + end +end + +# Represents a method call, in all of the various forms that can take. +# +# foo +# ^^^ +# +# foo() +# ^^^^^ +# +# +foo +# ^^^^ +# +# foo + bar +# ^^^^^^^^^ +# +# foo.bar +# ^^^^^^^ +# +# foo&.bar +# ^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:2474 +class Prism::CallNode < ::Prism::Node + # def initialize: (Integer flags, Node? receiver, Location? call_operator_loc, Symbol name, Location? message_loc, Location? opening_loc, ArgumentsNode? arguments, Location? closing_loc, Node? block, Location location) -> void + # + # @return [CallNode] a new instance of CallNode + # + # source://prism-0.24.0/lib/prism/node.rb:2476 + def initialize(source, flags, receiver, call_operator_loc, name, message_loc, opening_loc, arguments, closing_loc, block, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:2492 + def accept(visitor); end + + # attr_reader arguments: ArgumentsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:2596 + sig { returns(T.nilable(Prism::ArgumentsNode)) } + def arguments; end + + # def attribute_write?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:2625 + sig { returns(T::Boolean) } + def attribute_write?; end + + # attr_reader block: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:2611 + sig { returns(T.nilable(Prism::Node)) } + def block; end + + # def call_operator: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:2635 + sig { returns(T.nilable(String)) } + def call_operator; end + + # attr_reader call_operator_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:2557 + sig { returns(T.nilable(Prism::Location)) } + def call_operator_loc; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2497 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:2650 + sig { returns(T.nilable(String)) } + def closing; end + + # attr_reader closing_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:2599 + sig { returns(T.nilable(Prism::Location)) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:2511 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2502 + def compact_child_nodes; end + + # def copy: (**params) -> CallNode + # + # source://prism-0.24.0/lib/prism/node.rb:2516 + sig { params(params: T.untyped).returns(Prism::CallNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2497 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, receiver: Node?, call_operator_loc: Location?, name: Symbol, message_loc: Location?, opening_loc: Location?, arguments: ArgumentsNode?, closing_loc: Location?, block: Node?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:2536 + def deconstruct_keys(keys); end + + # def ignore_visibility?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:2630 + sig { returns(T::Boolean) } + def ignore_visibility?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:2655 + def inspect(inspector = T.unsafe(nil)); end + + # def message: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:2640 + sig { returns(T.nilable(String)) } + def message; end + + # attr_reader message_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:2572 + sig { returns(T.nilable(Prism::Location)) } + def message_loc; end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2569 + sig { returns(Symbol) } + def name; end + + # def opening: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:2645 + sig { returns(T.nilable(String)) } + def opening; end + + # attr_reader opening_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:2584 + sig { returns(T.nilable(Prism::Location)) } + def opening_loc; end + + # The object that the method is being called on. This can be either `nil` or any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). + # + # foo.bar + # ^^^ + # + # +foo + # ^^^ + # + # foo + bar + # ^^^ + # + # source://prism-0.24.0/lib/prism/node.rb:2554 + sig { returns(T.nilable(Prism::Node)) } + def receiver; end + + # def safe_navigation?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:2615 + sig { returns(T::Boolean) } + def safe_navigation?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2699 + def type; end + + # def variable_call?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:2620 + sig { returns(T::Boolean) } + def variable_call?; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:2541 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2709 + def type; end + end +end + +# Flags for call nodes. +# +# source://prism-0.24.0/lib/prism/node.rb:19253 +module Prism::CallNodeFlags; end + +# a call that is an attribute write, so the value being written should be returned +# +# source://prism-0.24.0/lib/prism/node.rb:19261 +Prism::CallNodeFlags::ATTRIBUTE_WRITE = T.let(T.unsafe(nil), Integer) + +# a call that ignores method visibility +# +# source://prism-0.24.0/lib/prism/node.rb:19264 +Prism::CallNodeFlags::IGNORE_VISIBILITY = T.let(T.unsafe(nil), Integer) + +# &. operator +# +# source://prism-0.24.0/lib/prism/node.rb:19255 +Prism::CallNodeFlags::SAFE_NAVIGATION = T.let(T.unsafe(nil), Integer) + +# a call that could have been a local variable +# +# source://prism-0.24.0/lib/prism/node.rb:19258 +Prism::CallNodeFlags::VARIABLE_CALL = T.let(T.unsafe(nil), Integer) + +# Represents the use of an assignment operator on a call. +# +# foo.bar += baz +# ^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:2718 +class Prism::CallOperatorWriteNode < ::Prism::Node + # def initialize: (Integer flags, Node? receiver, Location? call_operator_loc, Location? message_loc, Symbol read_name, Symbol write_name, Symbol operator, Location operator_loc, Node value, Location location) -> void + # + # @return [CallOperatorWriteNode] a new instance of CallOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:2720 + def initialize(source, flags, receiver, call_operator_loc, message_loc, read_name, write_name, operator, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:2736 + def accept(visitor); end + + # def attribute_write?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:2844 + sig { returns(T::Boolean) } + def attribute_write?; end + + # def call_operator: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:2854 + sig { returns(T.nilable(String)) } + def call_operator; end + + # attr_reader call_operator_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:2791 + sig { returns(T.nilable(Prism::Location)) } + def call_operator_loc; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2741 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:2754 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2746 + def compact_child_nodes; end + + # def copy: (**params) -> CallOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:2759 + sig { params(params: T.untyped).returns(Prism::CallOperatorWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2741 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, receiver: Node?, call_operator_loc: Location?, message_loc: Location?, read_name: Symbol, write_name: Symbol, operator: Symbol, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:2779 + def deconstruct_keys(keys); end + + # def ignore_visibility?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:2849 + sig { returns(T::Boolean) } + def ignore_visibility?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:2864 + def inspect(inspector = T.unsafe(nil)); end + + # def message: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:2859 + sig { returns(T.nilable(String)) } + def message; end + + # attr_reader message_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:2803 + sig { returns(T.nilable(Prism::Location)) } + def message_loc; end + + # attr_reader operator: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2821 + sig { returns(Symbol) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:2824 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader read_name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2815 + sig { returns(Symbol) } + def read_name; end + + # attr_reader receiver: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:2788 + sig { returns(T.nilable(Prism::Node)) } + def receiver; end + + # def safe_navigation?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:2834 + sig { returns(T::Boolean) } + def safe_navigation?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2899 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:2830 + sig { returns(Prism::Node) } + def value; end + + # def variable_call?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:2839 + sig { returns(T::Boolean) } + def variable_call?; end + + # attr_reader write_name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2818 + sig { returns(Symbol) } + def write_name; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:2784 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:2909 + def type; end + end +end + +# Represents the use of the `||=` operator on a call. +# +# foo.bar ||= value +# ^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:2918 +class Prism::CallOrWriteNode < ::Prism::Node + # def initialize: (Integer flags, Node? receiver, Location? call_operator_loc, Location? message_loc, Symbol read_name, Symbol write_name, Location operator_loc, Node value, Location location) -> void + # + # @return [CallOrWriteNode] a new instance of CallOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:2920 + def initialize(source, flags, receiver, call_operator_loc, message_loc, read_name, write_name, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:2935 + def accept(visitor); end + + # def attribute_write?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:3039 + sig { returns(T::Boolean) } + def attribute_write?; end + + # def call_operator: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:3049 + sig { returns(T.nilable(String)) } + def call_operator; end + + # attr_reader call_operator_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:2989 + sig { returns(T.nilable(Prism::Location)) } + def call_operator_loc; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2940 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:2953 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2945 + def compact_child_nodes; end + + # def copy: (**params) -> CallOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:2958 + sig { params(params: T.untyped).returns(Prism::CallOrWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:2940 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, receiver: Node?, call_operator_loc: Location?, message_loc: Location?, read_name: Symbol, write_name: Symbol, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:2977 + def deconstruct_keys(keys); end + + # def ignore_visibility?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:3044 + sig { returns(T::Boolean) } + def ignore_visibility?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3064 + def inspect(inspector = T.unsafe(nil)); end + + # def message: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:3054 + sig { returns(T.nilable(String)) } + def message; end + + # attr_reader message_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:3001 + sig { returns(T.nilable(Prism::Location)) } + def message_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3059 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:3019 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader read_name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3013 + sig { returns(Symbol) } + def read_name; end + + # attr_reader receiver: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:2986 + sig { returns(T.nilable(Prism::Node)) } + def receiver; end + + # def safe_navigation?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:3029 + sig { returns(T::Boolean) } + def safe_navigation?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3098 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:3025 + sig { returns(Prism::Node) } + def value; end + + # def variable_call?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:3034 + sig { returns(T::Boolean) } + def variable_call?; end + + # attr_reader write_name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3016 + sig { returns(Symbol) } + def write_name; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:2982 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3108 + def type; end + end +end + +# Represents assigning to a method call. +# +# foo.bar, = 1 +# ^^^^^^^ +# +# begin +# rescue => foo.bar +# ^^^^^^^ +# end +# +# for foo.bar in baz do end +# ^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:3125 +class Prism::CallTargetNode < ::Prism::Node + # def initialize: (Integer flags, Node receiver, Location call_operator_loc, Symbol name, Location message_loc, Location location) -> void + # + # @return [CallTargetNode] a new instance of CallTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:3127 + def initialize(source, flags, receiver, call_operator_loc, name, message_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:3139 + def accept(visitor); end + + # def attribute_write?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:3213 + sig { returns(T::Boolean) } + def attribute_write?; end + + # def call_operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3223 + sig { returns(String) } + def call_operator; end + + # attr_reader call_operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:3187 + sig { returns(Prism::Location) } + def call_operator_loc; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3144 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:3154 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3149 + def compact_child_nodes; end + + # def copy: (**params) -> CallTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:3159 + sig { params(params: T.untyped).returns(Prism::CallTargetNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3144 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, receiver: Node, call_operator_loc: Location, name: Symbol, message_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:3175 + def deconstruct_keys(keys); end + + # def ignore_visibility?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:3218 + sig { returns(T::Boolean) } + def ignore_visibility?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3233 + def inspect(inspector = T.unsafe(nil)); end + + # def message: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3228 + sig { returns(String) } + def message; end + + # attr_reader message_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:3196 + sig { returns(Prism::Location) } + def message_loc; end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3193 + sig { returns(Symbol) } + def name; end + + # attr_reader receiver: Node + # + # source://prism-0.24.0/lib/prism/node.rb:3184 + sig { returns(Prism::Node) } + def receiver; end + + # def safe_navigation?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:3203 + sig { returns(T::Boolean) } + def safe_navigation?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3259 + def type; end + + # def variable_call?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:3208 + sig { returns(T::Boolean) } + def variable_call?; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:3180 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3269 + def type; end + end +end + +# Represents assigning to a local variable in pattern matching. +# +# foo => [bar => baz] +# ^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:3278 +class Prism::CapturePatternNode < ::Prism::Node + # def initialize: (Node value, Node target, Location operator_loc, Location location) -> void + # + # @return [CapturePatternNode] a new instance of CapturePatternNode + # + # source://prism-0.24.0/lib/prism/node.rb:3280 + def initialize(source, value, target, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:3290 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3295 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:3305 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3300 + def compact_child_nodes; end + + # def copy: (**params) -> CapturePatternNode + # + # source://prism-0.24.0/lib/prism/node.rb:3310 + sig { params(params: T.untyped).returns(Prism::CapturePatternNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3295 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { value: Node, target: Node, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:3324 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3347 + def inspect(inspector = T.unsafe(nil)); end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3342 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:3335 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader target: Node + # + # source://prism-0.24.0/lib/prism/node.rb:3332 + sig { returns(Prism::Node) } + def target; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3371 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:3329 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3381 + def type; end + end +end + +# Represents the use of a case statement for pattern matching. +# +# case true +# in false +# end +# ^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:3392 +class Prism::CaseMatchNode < ::Prism::Node + # def initialize: (Node? predicate, Array[Node] conditions, ElseNode? consequent, Location case_keyword_loc, Location end_keyword_loc, Location location) -> void + # + # @return [CaseMatchNode] a new instance of CaseMatchNode + # + # source://prism-0.24.0/lib/prism/node.rb:3394 + def initialize(source, predicate, conditions, consequent, case_keyword_loc, end_keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:3406 + def accept(visitor); end + + # def case_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3473 + sig { returns(String) } + def case_keyword; end + + # attr_reader case_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:3460 + sig { returns(Prism::Location) } + def case_keyword_loc; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3411 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:3425 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3416 + def compact_child_nodes; end + + # attr_reader conditions: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3454 + sig { returns(T::Array[Prism::Node]) } + def conditions; end + + # attr_reader consequent: ElseNode? + # + # source://prism-0.24.0/lib/prism/node.rb:3457 + sig { returns(T.nilable(Prism::ElseNode)) } + def consequent; end + + # def copy: (**params) -> CaseMatchNode + # + # source://prism-0.24.0/lib/prism/node.rb:3430 + sig { params(params: T.untyped).returns(Prism::CaseMatchNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3411 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { predicate: Node?, conditions: Array[Node], consequent: ElseNode?, case_keyword_loc: Location, end_keyword_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:3446 + def deconstruct_keys(keys); end + + # def end_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3478 + sig { returns(String) } + def end_keyword; end + + # attr_reader end_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:3466 + sig { returns(Prism::Location) } + def end_keyword_loc; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3483 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader predicate: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:3451 + sig { returns(T.nilable(Prism::Node)) } + def predicate; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3517 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3527 + def type; end + end +end + +# Represents the use of a case statement. +# +# case true +# when false +# end +# ^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:3538 +class Prism::CaseNode < ::Prism::Node + # def initialize: (Node? predicate, Array[Node] conditions, ElseNode? consequent, Location case_keyword_loc, Location end_keyword_loc, Location location) -> void + # + # @return [CaseNode] a new instance of CaseNode + # + # source://prism-0.24.0/lib/prism/node.rb:3540 + def initialize(source, predicate, conditions, consequent, case_keyword_loc, end_keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:3552 + def accept(visitor); end + + # def case_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3619 + sig { returns(String) } + def case_keyword; end + + # attr_reader case_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:3606 + sig { returns(Prism::Location) } + def case_keyword_loc; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3557 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:3571 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3562 + def compact_child_nodes; end + + # attr_reader conditions: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3600 + sig { returns(T::Array[Prism::Node]) } + def conditions; end + + # attr_reader consequent: ElseNode? + # + # source://prism-0.24.0/lib/prism/node.rb:3603 + sig { returns(T.nilable(Prism::ElseNode)) } + def consequent; end + + # def copy: (**params) -> CaseNode + # + # source://prism-0.24.0/lib/prism/node.rb:3576 + sig { params(params: T.untyped).returns(Prism::CaseNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3557 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { predicate: Node?, conditions: Array[Node], consequent: ElseNode?, case_keyword_loc: Location, end_keyword_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:3592 + def deconstruct_keys(keys); end + + # def end_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3624 + sig { returns(String) } + def end_keyword; end + + # attr_reader end_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:3612 + sig { returns(Prism::Location) } + def end_keyword_loc; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3629 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader predicate: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:3597 + sig { returns(T.nilable(Prism::Node)) } + def predicate; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3663 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3673 + def type; end + end +end + +# Represents a class declaration involving the `class` keyword. +# +# class Foo end +# ^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:3682 +class Prism::ClassNode < ::Prism::Node + # def initialize: (Array[Symbol] locals, Location class_keyword_loc, Node constant_path, Location? inheritance_operator_loc, Node? superclass, Node? body, Location end_keyword_loc, Symbol name, Location location) -> void + # + # @return [ClassNode] a new instance of ClassNode + # + # source://prism-0.24.0/lib/prism/node.rb:3684 + def initialize(source, locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, body, end_keyword_loc, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:3699 + def accept(visitor); end + + # attr_reader body: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:3774 + sig { returns(T.nilable(Prism::Node)) } + def body; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3704 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def class_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3787 + sig { returns(String) } + def class_keyword; end + + # attr_reader class_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:3750 + sig { returns(Prism::Location) } + def class_keyword_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:3718 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3709 + def compact_child_nodes; end + + # attr_reader constant_path: Node + # + # source://prism-0.24.0/lib/prism/node.rb:3756 + sig { returns(Prism::Node) } + def constant_path; end + + # def copy: (**params) -> ClassNode + # + # source://prism-0.24.0/lib/prism/node.rb:3723 + sig { params(params: T.untyped).returns(Prism::ClassNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3704 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { locals: Array[Symbol], class_keyword_loc: Location, constant_path: Node, inheritance_operator_loc: Location?, superclass: Node?, body: Node?, end_keyword_loc: Location, name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:3742 + def deconstruct_keys(keys); end + + # def end_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3797 + sig { returns(String) } + def end_keyword; end + + # attr_reader end_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:3777 + sig { returns(Prism::Location) } + def end_keyword_loc; end + + # def inheritance_operator: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:3792 + sig { returns(T.nilable(String)) } + def inheritance_operator; end + + # attr_reader inheritance_operator_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:3759 + sig { returns(T.nilable(Prism::Location)) } + def inheritance_operator_loc; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3802 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader locals: Array[Symbol] + # + # source://prism-0.24.0/lib/prism/node.rb:3747 + sig { returns(T::Array[Symbol]) } + def locals; end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3783 + sig { returns(Symbol) } + def name; end + + # attr_reader superclass: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:3771 + sig { returns(T.nilable(Prism::Node)) } + def superclass; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3840 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3850 + def type; end + end +end + +# Represents the use of the `&&=` operator for assignment to a class variable. +# +# @@target &&= value +# ^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:3859 +class Prism::ClassVariableAndWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Location operator_loc, Node value, Location location) -> void + # + # @return [ClassVariableAndWriteNode] a new instance of ClassVariableAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:3861 + def initialize(source, name, name_loc, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:3872 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3877 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:3887 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3882 + def compact_child_nodes; end + + # def copy: (**params) -> ClassVariableAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:3892 + sig { params(params: T.untyped).returns(Prism::ClassVariableAndWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3877 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:3907 + def deconstruct_keys(keys); end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:125 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3936 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3912 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:3915 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:3931 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:3921 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3960 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:3927 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:3970 + def type; end + end +end + +# Represents assigning to a class variable using an operator that isn't `=`. +# +# @@target += value +# ^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:3979 +class Prism::ClassVariableOperatorWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Location operator_loc, Node value, Symbol operator, Location location) -> void + # + # @return [ClassVariableOperatorWriteNode] a new instance of ClassVariableOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:3981 + def initialize(source, name, name_loc, operator_loc, value, operator, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:3993 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3998 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:4008 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4003 + def compact_child_nodes; end + + # def copy: (**params) -> ClassVariableOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4013 + sig { params(params: T.untyped).returns(Prism::ClassVariableOperatorWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:3998 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, operator_loc: Location, value: Node, operator: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:4029 + def deconstruct_keys(keys); end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:137 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4056 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4034 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:4037 + sig { returns(Prism::Location) } + def name_loc; end + + # attr_reader operator: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4052 + sig { returns(Symbol) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:4043 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4081 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:4049 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4091 + def type; end + end +end + +# Represents the use of the `||=` operator for assignment to a class variable. +# +# @@target ||= value +# ^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:4100 +class Prism::ClassVariableOrWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Location operator_loc, Node value, Location location) -> void + # + # @return [ClassVariableOrWriteNode] a new instance of ClassVariableOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4102 + def initialize(source, name, name_loc, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:4113 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4118 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:4128 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4123 + def compact_child_nodes; end + + # def copy: (**params) -> ClassVariableOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4133 + sig { params(params: T.untyped).returns(Prism::ClassVariableOrWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4118 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:4148 + def deconstruct_keys(keys); end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:131 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4177 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4153 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:4156 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4172 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:4162 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4201 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:4168 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4211 + def type; end + end +end + +# Represents referencing a class variable. +# +# @@foo +# ^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:4220 +class Prism::ClassVariableReadNode < ::Prism::Node + # def initialize: (Symbol name, Location location) -> void + # + # @return [ClassVariableReadNode] a new instance of ClassVariableReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:4222 + def initialize(source, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:4230 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4235 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:4245 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4240 + def compact_child_nodes; end + + # def copy: (**params) -> ClassVariableReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:4250 + sig { params(params: T.untyped).returns(Prism::ClassVariableReadNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4235 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:4262 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4275 + def inspect(inspector = T.unsafe(nil)); end + + # The name of the class variable, which is a `@@` followed by an [identifier](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#identifiers). + # + # @@abc # name `:@@abc` + # + # @@_test # name `:@@_test` + # + # source://prism-0.24.0/lib/prism/node.rb:4271 + sig { returns(Symbol) } + def name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4295 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4305 + def type; end + end +end + +# Represents writing to a class variable in a context that doesn't have an explicit value. +# +# @@foo, @@bar = baz +# ^^^^^ ^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:4314 +class Prism::ClassVariableTargetNode < ::Prism::Node + # def initialize: (Symbol name, Location location) -> void + # + # @return [ClassVariableTargetNode] a new instance of ClassVariableTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:4316 + def initialize(source, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:4324 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4329 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:4339 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4334 + def compact_child_nodes; end + + # def copy: (**params) -> ClassVariableTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:4344 + sig { params(params: T.untyped).returns(Prism::ClassVariableTargetNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4329 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:4356 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4365 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4361 + sig { returns(Symbol) } + def name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4385 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4395 + def type; end + end +end + +# Represents writing to a class variable. +# +# @@foo = 1 +# ^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:4404 +class Prism::ClassVariableWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Node value, Location? operator_loc, Location location) -> void + # + # @return [ClassVariableWriteNode] a new instance of ClassVariableWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4406 + def initialize(source, name, name_loc, value, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:4417 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4422 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:4432 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4427 + def compact_child_nodes; end + + # def copy: (**params) -> ClassVariableWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4437 + sig { params(params: T.untyped).returns(Prism::ClassVariableWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4422 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, value: Node, operator_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:4452 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4487 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4457 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:4460 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:4482 + sig { returns(T.nilable(String)) } + def operator; end + + # attr_reader operator_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:4469 + sig { returns(T.nilable(Prism::Location)) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4511 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:4466 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4521 + def type; end + end +end + +# This represents a comment that was encountered during parsing. It is the +# base class for all comment types. +# +# source://prism-0.24.0/lib/prism/parse_result.rb:258 +class Prism::Comment + # Create a new comment object with the given location. + # + # @return [Comment] a new instance of Comment + # + # source://prism-0.24.0/lib/prism/parse_result.rb:263 + def initialize(location); end + + # Implement the hash pattern matching interface for Comment. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:268 + def deconstruct_keys(keys); end + + # The location of this comment in the source. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:260 + sig { returns(Prism::Location) } + def location; end + + sig { returns(T::Boolean) } + def trailing?; end +end + +# A compiler is a visitor that returns the value of each node as it visits. +# This is as opposed to a visitor which will only walk the tree. This can be +# useful when you are trying to compile a tree into a different format. +# +# For example, to build a representation of the tree as s-expressions, you +# could write: +# +# class SExpressions < Prism::Compiler +# def visit_arguments_node(node) = [:arguments, super] +# def visit_call_node(node) = [:call, super] +# def visit_integer_node(node) = [:integer] +# def visit_program_node(node) = [:program, super] +# end +# +# Prism.parse("1 + 2").value.accept(SExpressions.new) +# # => [:program, [[[:call, [[:integer], [:arguments, [[:integer]]]]]]]] +# +# source://prism-0.24.0/lib/prism/compiler.rb:26 +class Prism::Compiler + # Visit an individual node. + # + # source://prism-0.24.0/lib/prism/compiler.rb:28 + def visit(node); end + + # Visit the child nodes of the given node. + # Compile a AliasGlobalVariableNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_alias_global_variable_node(node); end + + # Visit the child nodes of the given node. + # Compile a AliasMethodNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_alias_method_node(node); end + + # Visit a list of nodes. + # + # source://prism-0.24.0/lib/prism/compiler.rb:33 + def visit_all(nodes); end + + # Visit the child nodes of the given node. + # Compile a AlternationPatternNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_alternation_pattern_node(node); end + + # Visit the child nodes of the given node. + # Compile a AndNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_and_node(node); end + + # Visit the child nodes of the given node. + # Compile a ArgumentsNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_arguments_node(node); end + + # Visit the child nodes of the given node. + # Compile a ArrayNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_array_node(node); end + + # Visit the child nodes of the given node. + # Compile a ArrayPatternNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_array_pattern_node(node); end + + # Visit the child nodes of the given node. + # Compile a AssocNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_assoc_node(node); end + + # Visit the child nodes of the given node. + # Compile a AssocSplatNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_assoc_splat_node(node); end + + # Visit the child nodes of the given node. + # Compile a BackReferenceReadNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_back_reference_read_node(node); end + + # Visit the child nodes of the given node. + # Compile a BeginNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_begin_node(node); end + + # Visit the child nodes of the given node. + # Compile a BlockArgumentNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_block_argument_node(node); end + + # Visit the child nodes of the given node. + # Compile a BlockLocalVariableNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_block_local_variable_node(node); end + + # Visit the child nodes of the given node. + # Compile a BlockNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_block_node(node); end + + # Visit the child nodes of the given node. + # Compile a BlockParameterNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_block_parameter_node(node); end + + # Visit the child nodes of the given node. + # Compile a BlockParametersNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_block_parameters_node(node); end + + # Visit the child nodes of the given node. + # Compile a BreakNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_break_node(node); end + + # Visit the child nodes of the given node. + # Compile a CallAndWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_call_and_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a CallNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_call_node(node); end + + # Visit the child nodes of the given node. + # Compile a CallOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_call_operator_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a CallOrWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_call_or_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a CallTargetNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_call_target_node(node); end + + # Visit the child nodes of the given node. + # Compile a CapturePatternNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_capture_pattern_node(node); end + + # Visit the child nodes of the given node. + # Compile a CaseMatchNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_case_match_node(node); end + + # Visit the child nodes of the given node. + # Compile a CaseNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_case_node(node); end + + # Visit the child nodes of the given node. + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_child_nodes(node); end + + # Visit the child nodes of the given node. + # Compile a ClassNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_class_node(node); end + + # Visit the child nodes of the given node. + # Compile a ClassVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_class_variable_and_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a ClassVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_class_variable_operator_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a ClassVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_class_variable_or_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a ClassVariableReadNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_class_variable_read_node(node); end + + # Visit the child nodes of the given node. + # Compile a ClassVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_class_variable_target_node(node); end + + # Visit the child nodes of the given node. + # Compile a ClassVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_class_variable_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a ConstantAndWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_constant_and_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a ConstantOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_constant_operator_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a ConstantOrWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_constant_or_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a ConstantPathAndWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_constant_path_and_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a ConstantPathNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_constant_path_node(node); end + + # Visit the child nodes of the given node. + # Compile a ConstantPathOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_constant_path_operator_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a ConstantPathOrWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_constant_path_or_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a ConstantPathTargetNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_constant_path_target_node(node); end + + # Visit the child nodes of the given node. + # Compile a ConstantPathWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_constant_path_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a ConstantReadNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_constant_read_node(node); end + + # Visit the child nodes of the given node. + # Compile a ConstantTargetNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_constant_target_node(node); end + + # Visit the child nodes of the given node. + # Compile a ConstantWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_constant_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a DefNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_def_node(node); end + + # Visit the child nodes of the given node. + # Compile a DefinedNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_defined_node(node); end + + # Visit the child nodes of the given node. + # Compile a ElseNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_else_node(node); end + + # Visit the child nodes of the given node. + # Compile a EmbeddedStatementsNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_embedded_statements_node(node); end + + # Visit the child nodes of the given node. + # Compile a EmbeddedVariableNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_embedded_variable_node(node); end + + # Visit the child nodes of the given node. + # Compile a EnsureNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_ensure_node(node); end + + # Visit the child nodes of the given node. + # Compile a FalseNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_false_node(node); end + + # Visit the child nodes of the given node. + # Compile a FindPatternNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_find_pattern_node(node); end + + # Visit the child nodes of the given node. + # Compile a FlipFlopNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_flip_flop_node(node); end + + # Visit the child nodes of the given node. + # Compile a FloatNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_float_node(node); end + + # Visit the child nodes of the given node. + # Compile a ForNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_for_node(node); end + + # Visit the child nodes of the given node. + # Compile a ForwardingArgumentsNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_forwarding_arguments_node(node); end + + # Visit the child nodes of the given node. + # Compile a ForwardingParameterNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_forwarding_parameter_node(node); end + + # Visit the child nodes of the given node. + # Compile a ForwardingSuperNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_forwarding_super_node(node); end + + # Visit the child nodes of the given node. + # Compile a GlobalVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_global_variable_and_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a GlobalVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_global_variable_operator_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a GlobalVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_global_variable_or_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a GlobalVariableReadNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_global_variable_read_node(node); end + + # Visit the child nodes of the given node. + # Compile a GlobalVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_global_variable_target_node(node); end + + # Visit the child nodes of the given node. + # Compile a GlobalVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_global_variable_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a HashNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_hash_node(node); end + + # Visit the child nodes of the given node. + # Compile a HashPatternNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_hash_pattern_node(node); end + + # Visit the child nodes of the given node. + # Compile a IfNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_if_node(node); end + + # Visit the child nodes of the given node. + # Compile a ImaginaryNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_imaginary_node(node); end + + # Visit the child nodes of the given node. + # Compile a ImplicitNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_implicit_node(node); end + + # Visit the child nodes of the given node. + # Compile a ImplicitRestNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_implicit_rest_node(node); end + + # Visit the child nodes of the given node. + # Compile a InNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_in_node(node); end + + # Visit the child nodes of the given node. + # Compile a IndexAndWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_index_and_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a IndexOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_index_operator_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a IndexOrWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_index_or_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a IndexTargetNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_index_target_node(node); end + + # Visit the child nodes of the given node. + # Compile a InstanceVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_instance_variable_and_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a InstanceVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_instance_variable_operator_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a InstanceVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_instance_variable_or_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a InstanceVariableReadNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_instance_variable_read_node(node); end + + # Visit the child nodes of the given node. + # Compile a InstanceVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_instance_variable_target_node(node); end + + # Visit the child nodes of the given node. + # Compile a InstanceVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_instance_variable_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a IntegerNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_integer_node(node); end + + # Visit the child nodes of the given node. + # Compile a InterpolatedMatchLastLineNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_interpolated_match_last_line_node(node); end + + # Visit the child nodes of the given node. + # Compile a InterpolatedRegularExpressionNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_interpolated_regular_expression_node(node); end + + # Visit the child nodes of the given node. + # Compile a InterpolatedStringNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_interpolated_string_node(node); end + + # Visit the child nodes of the given node. + # Compile a InterpolatedSymbolNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_interpolated_symbol_node(node); end + + # Visit the child nodes of the given node. + # Compile a InterpolatedXStringNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_interpolated_x_string_node(node); end + + # Visit the child nodes of the given node. + # Compile a KeywordHashNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_keyword_hash_node(node); end + + # Visit the child nodes of the given node. + # Compile a KeywordRestParameterNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_keyword_rest_parameter_node(node); end + + # Visit the child nodes of the given node. + # Compile a LambdaNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_lambda_node(node); end + + # Visit the child nodes of the given node. + # Compile a LocalVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_local_variable_and_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a LocalVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_local_variable_operator_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a LocalVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_local_variable_or_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a LocalVariableReadNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_local_variable_read_node(node); end + + # Visit the child nodes of the given node. + # Compile a LocalVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_local_variable_target_node(node); end + + # Visit the child nodes of the given node. + # Compile a LocalVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_local_variable_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a MatchLastLineNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_match_last_line_node(node); end + + # Visit the child nodes of the given node. + # Compile a MatchPredicateNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_match_predicate_node(node); end + + # Visit the child nodes of the given node. + # Compile a MatchRequiredNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_match_required_node(node); end + + # Visit the child nodes of the given node. + # Compile a MatchWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_match_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a MissingNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_missing_node(node); end + + # Visit the child nodes of the given node. + # Compile a ModuleNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_module_node(node); end + + # Visit the child nodes of the given node. + # Compile a MultiTargetNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_multi_target_node(node); end + + # Visit the child nodes of the given node. + # Compile a MultiWriteNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_multi_write_node(node); end + + # Visit the child nodes of the given node. + # Compile a NextNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_next_node(node); end + + # Visit the child nodes of the given node. + # Compile a NilNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_nil_node(node); end + + # Visit the child nodes of the given node. + # Compile a NoKeywordsParameterNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_no_keywords_parameter_node(node); end + + # Visit the child nodes of the given node. + # Compile a NumberedParametersNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_numbered_parameters_node(node); end + + # Visit the child nodes of the given node. + # Compile a NumberedReferenceReadNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_numbered_reference_read_node(node); end + + # Visit the child nodes of the given node. + # Compile a OptionalKeywordParameterNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_optional_keyword_parameter_node(node); end + + # Visit the child nodes of the given node. + # Compile a OptionalParameterNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_optional_parameter_node(node); end + + # Visit the child nodes of the given node. + # Compile a OrNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_or_node(node); end + + # Visit the child nodes of the given node. + # Compile a ParametersNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_parameters_node(node); end + + # Visit the child nodes of the given node. + # Compile a ParenthesesNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_parentheses_node(node); end + + # Visit the child nodes of the given node. + # Compile a PinnedExpressionNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_pinned_expression_node(node); end + + # Visit the child nodes of the given node. + # Compile a PinnedVariableNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_pinned_variable_node(node); end + + # Visit the child nodes of the given node. + # Compile a PostExecutionNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_post_execution_node(node); end + + # Visit the child nodes of the given node. + # Compile a PreExecutionNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_pre_execution_node(node); end + + # Visit the child nodes of the given node. + # Compile a ProgramNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_program_node(node); end + + # Visit the child nodes of the given node. + # Compile a RangeNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_range_node(node); end + + # Visit the child nodes of the given node. + # Compile a RationalNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_rational_node(node); end + + # Visit the child nodes of the given node. + # Compile a RedoNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_redo_node(node); end + + # Visit the child nodes of the given node. + # Compile a RegularExpressionNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_regular_expression_node(node); end + + # Visit the child nodes of the given node. + # Compile a RequiredKeywordParameterNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_required_keyword_parameter_node(node); end + + # Visit the child nodes of the given node. + # Compile a RequiredParameterNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_required_parameter_node(node); end + + # Visit the child nodes of the given node. + # Compile a RescueModifierNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_rescue_modifier_node(node); end + + # Visit the child nodes of the given node. + # Compile a RescueNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_rescue_node(node); end + + # Visit the child nodes of the given node. + # Compile a RestParameterNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_rest_parameter_node(node); end + + # Visit the child nodes of the given node. + # Compile a RetryNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_retry_node(node); end + + # Visit the child nodes of the given node. + # Compile a ReturnNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_return_node(node); end + + # Visit the child nodes of the given node. + # Compile a SelfNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_self_node(node); end + + # Visit the child nodes of the given node. + # Compile a SingletonClassNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_singleton_class_node(node); end + + # Visit the child nodes of the given node. + # Compile a SourceEncodingNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_source_encoding_node(node); end + + # Visit the child nodes of the given node. + # Compile a SourceFileNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_source_file_node(node); end + + # Visit the child nodes of the given node. + # Compile a SourceLineNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_source_line_node(node); end + + # Visit the child nodes of the given node. + # Compile a SplatNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_splat_node(node); end + + # Visit the child nodes of the given node. + # Compile a StatementsNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_statements_node(node); end + + # Visit the child nodes of the given node. + # Compile a StringNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_string_node(node); end + + # Visit the child nodes of the given node. + # Compile a SuperNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_super_node(node); end + + # Visit the child nodes of the given node. + # Compile a SymbolNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_symbol_node(node); end + + # Visit the child nodes of the given node. + # Compile a TrueNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_true_node(node); end + + # Visit the child nodes of the given node. + # Compile a UndefNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_undef_node(node); end + + # Visit the child nodes of the given node. + # Compile a UnlessNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_unless_node(node); end + + # Visit the child nodes of the given node. + # Compile a UntilNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_until_node(node); end + + # Visit the child nodes of the given node. + # Compile a WhenNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_when_node(node); end + + # Visit the child nodes of the given node. + # Compile a WhileNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_while_node(node); end + + # Visit the child nodes of the given node. + # Compile a XStringNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_x_string_node(node); end + + # Visit the child nodes of the given node. + # Compile a YieldNode node + # + # source://prism-0.24.0/lib/prism/compiler.rb:38 + def visit_yield_node(node); end +end + +# Represents the use of the `&&=` operator for assignment to a constant. +# +# Target &&= value +# ^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:4530 +class Prism::ConstantAndWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Location operator_loc, Node value, Location location) -> void + # + # @return [ConstantAndWriteNode] a new instance of ConstantAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4532 + def initialize(source, name, name_loc, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:4543 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4548 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:4558 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4553 + def compact_child_nodes; end + + # def copy: (**params) -> ConstantAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4563 + sig { params(params: T.untyped).returns(Prism::ConstantAndWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4548 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:4578 + def deconstruct_keys(keys); end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:143 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4607 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4583 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:4586 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4602 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:4592 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4631 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:4598 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4641 + def type; end + end +end + +# Represents assigning to a constant using an operator that isn't `=`. +# +# Target += value +# ^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:4650 +class Prism::ConstantOperatorWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Location operator_loc, Node value, Symbol operator, Location location) -> void + # + # @return [ConstantOperatorWriteNode] a new instance of ConstantOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4652 + def initialize(source, name, name_loc, operator_loc, value, operator, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:4664 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4669 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:4679 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4674 + def compact_child_nodes; end + + # def copy: (**params) -> ConstantOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4684 + sig { params(params: T.untyped).returns(Prism::ConstantOperatorWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4669 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, operator_loc: Location, value: Node, operator: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:4700 + def deconstruct_keys(keys); end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:155 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4727 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4705 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:4708 + sig { returns(Prism::Location) } + def name_loc; end + + # attr_reader operator: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4723 + sig { returns(Symbol) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:4714 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4752 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:4720 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4762 + def type; end + end +end + +# Represents the use of the `||=` operator for assignment to a constant. +# +# Target ||= value +# ^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:4771 +class Prism::ConstantOrWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Location operator_loc, Node value, Location location) -> void + # + # @return [ConstantOrWriteNode] a new instance of ConstantOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4773 + def initialize(source, name, name_loc, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:4784 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4789 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:4799 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4794 + def compact_child_nodes; end + + # def copy: (**params) -> ConstantOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4804 + sig { params(params: T.untyped).returns(Prism::ConstantOrWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4789 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:4819 + def deconstruct_keys(keys); end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:149 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4848 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4824 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:4827 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4843 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:4833 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4872 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:4839 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4882 + def type; end + end +end + +# Represents the use of the `&&=` operator for assignment to a constant path. +# +# Parent::Child &&= value +# ^^^^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:4891 +class Prism::ConstantPathAndWriteNode < ::Prism::Node + # def initialize: (ConstantPathNode target, Location operator_loc, Node value, Location location) -> void + # + # @return [ConstantPathAndWriteNode] a new instance of ConstantPathAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4893 + def initialize(source, target, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:4903 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4908 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:4918 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4913 + def compact_child_nodes; end + + # def copy: (**params) -> ConstantPathAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:4923 + sig { params(params: T.untyped).returns(Prism::ConstantPathAndWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:4908 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { target: ConstantPathNode, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:4937 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4960 + def inspect(inspector = T.unsafe(nil)); end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:4955 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:4945 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader target: ConstantPathNode + # + # source://prism-0.24.0/lib/prism/node.rb:4942 + sig { returns(Prism::ConstantPathNode) } + def target; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4984 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:4951 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:4994 + def type; end + end +end + +# Represents accessing a constant through a path of `::` operators. +# +# Foo::Bar +# ^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:5003 +class Prism::ConstantPathNode < ::Prism::Node + # def initialize: (Node? parent, Node child, Location delimiter_loc, Location location) -> void + # + # @return [ConstantPathNode] a new instance of ConstantPathNode + # + # source://prism-0.24.0/lib/prism/node.rb:5005 + def initialize(source, parent, child, delimiter_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:5015 + def accept(visitor); end + + # attr_reader child: Node + # + # source://prism-0.24.0/lib/prism/node.rb:5060 + sig { returns(Prism::Node) } + def child; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5020 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:5033 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5025 + def compact_child_nodes; end + + # def copy: (**params) -> ConstantPathNode + # + # source://prism-0.24.0/lib/prism/node.rb:5038 + sig { params(params: T.untyped).returns(Prism::ConstantPathNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5020 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { parent: Node?, child: Node, delimiter_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:5052 + def deconstruct_keys(keys); end + + # def delimiter: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5070 + sig { returns(String) } + def delimiter; end + + # attr_reader delimiter_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:5063 + sig { returns(Prism::Location) } + def delimiter_loc; end + + # Returns the full name of this constant path. For example: "Foo::Bar" + # + # source://prism-0.24.0/lib/prism/node_ext.rb:129 + def full_name; end + + # Returns the list of parts for the full name of this constant path. + # For example: [:Foo, :Bar] + # + # source://prism-0.24.0/lib/prism/node_ext.rb:112 + def full_name_parts; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5075 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader parent: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:5057 + sig { returns(T.nilable(Prism::Node)) } + def parent; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5103 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5113 + def type; end + end +end + +# An error class raised when dynamic parts are found while computing a +# constant path's full name. For example: +# Foo::Bar::Baz -> does not raise because all parts of the constant path are +# simple constants +# var::Bar::Baz -> raises because the first part of the constant path is a +# local variable +# +# source://prism-0.24.0/lib/prism/node_ext.rb:108 +class Prism::ConstantPathNode::DynamicPartsInConstantPathError < ::StandardError; end + +# Represents assigning to a constant path using an operator that isn't `=`. +# +# Parent::Child += value +# ^^^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:5122 +class Prism::ConstantPathOperatorWriteNode < ::Prism::Node + # def initialize: (ConstantPathNode target, Location operator_loc, Node value, Symbol operator, Location location) -> void + # + # @return [ConstantPathOperatorWriteNode] a new instance of ConstantPathOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:5124 + def initialize(source, target, operator_loc, value, operator, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:5135 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5140 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:5150 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5145 + def compact_child_nodes; end + + # def copy: (**params) -> ConstantPathOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:5155 + sig { params(params: T.untyped).returns(Prism::ConstantPathOperatorWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5140 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { target: ConstantPathNode, operator_loc: Location, value: Node, operator: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:5170 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5191 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader operator: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5187 + sig { returns(Symbol) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:5178 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader target: ConstantPathNode + # + # source://prism-0.24.0/lib/prism/node.rb:5175 + sig { returns(Prism::ConstantPathNode) } + def target; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5216 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:5184 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5226 + def type; end + end +end + +# Represents the use of the `||=` operator for assignment to a constant path. +# +# Parent::Child ||= value +# ^^^^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:5235 +class Prism::ConstantPathOrWriteNode < ::Prism::Node + # def initialize: (ConstantPathNode target, Location operator_loc, Node value, Location location) -> void + # + # @return [ConstantPathOrWriteNode] a new instance of ConstantPathOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:5237 + def initialize(source, target, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:5247 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5252 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:5262 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5257 + def compact_child_nodes; end + + # def copy: (**params) -> ConstantPathOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:5267 + sig { params(params: T.untyped).returns(Prism::ConstantPathOrWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5252 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { target: ConstantPathNode, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:5281 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5304 + def inspect(inspector = T.unsafe(nil)); end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5299 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:5289 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader target: ConstantPathNode + # + # source://prism-0.24.0/lib/prism/node.rb:5286 + sig { returns(Prism::ConstantPathNode) } + def target; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5328 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:5295 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5338 + def type; end + end +end + +# Represents writing to a constant path in a context that doesn't have an explicit value. +# +# Foo::Foo, Bar::Bar = baz +# ^^^^^^^^ ^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:5347 +class Prism::ConstantPathTargetNode < ::Prism::Node + # def initialize: (Node? parent, Node child, Location delimiter_loc, Location location) -> void + # + # @return [ConstantPathTargetNode] a new instance of ConstantPathTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:5349 + def initialize(source, parent, child, delimiter_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:5359 + def accept(visitor); end + + # attr_reader child: Node + # + # source://prism-0.24.0/lib/prism/node.rb:5404 + sig { returns(Prism::Node) } + def child; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5364 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:5377 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5369 + def compact_child_nodes; end + + # def copy: (**params) -> ConstantPathTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:5382 + sig { params(params: T.untyped).returns(Prism::ConstantPathTargetNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5364 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { parent: Node?, child: Node, delimiter_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:5396 + def deconstruct_keys(keys); end + + # def delimiter: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5414 + sig { returns(String) } + def delimiter; end + + # attr_reader delimiter_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:5407 + sig { returns(Prism::Location) } + def delimiter_loc; end + + # Returns the full name of this constant path. For example: "Foo::Bar" + # + # source://prism-0.24.0/lib/prism/node_ext.rb:152 + def full_name; end + + # Returns the list of parts for the full name of this constant path. + # For example: [:Foo, :Bar] + # + # source://prism-0.24.0/lib/prism/node_ext.rb:137 + def full_name_parts; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5419 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader parent: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:5401 + sig { returns(T.nilable(Prism::Node)) } + def parent; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5447 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5457 + def type; end + end +end + +# Represents writing to a constant path. +# +# ::Foo = 1 +# ^^^^^^^^^ +# +# Foo::Bar = 1 +# ^^^^^^^^^^^^ +# +# ::Foo::Bar = 1 +# ^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:5472 +class Prism::ConstantPathWriteNode < ::Prism::Node + # def initialize: (ConstantPathNode target, Location operator_loc, Node value, Location location) -> void + # + # @return [ConstantPathWriteNode] a new instance of ConstantPathWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:5474 + def initialize(source, target, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:5484 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5489 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:5499 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5494 + def compact_child_nodes; end + + # def copy: (**params) -> ConstantPathWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:5504 + sig { params(params: T.untyped).returns(Prism::ConstantPathWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5489 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { target: ConstantPathNode, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:5518 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5541 + def inspect(inspector = T.unsafe(nil)); end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5536 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:5526 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader target: ConstantPathNode + # + # source://prism-0.24.0/lib/prism/node.rb:5523 + sig { returns(Prism::ConstantPathNode) } + def target; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5565 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:5532 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5575 + def type; end + end +end + +# Represents referencing a constant. +# +# Foo +# ^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:5584 +class Prism::ConstantReadNode < ::Prism::Node + # def initialize: (Symbol name, Location location) -> void + # + # @return [ConstantReadNode] a new instance of ConstantReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:5586 + def initialize(source, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:5594 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5599 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:5609 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5604 + def compact_child_nodes; end + + # def copy: (**params) -> ConstantReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:5614 + sig { params(params: T.untyped).returns(Prism::ConstantReadNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5599 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:5626 + def deconstruct_keys(keys); end + + # Returns the full name of this constant. For example: "Foo" + # + # source://prism-0.24.0/lib/prism/node_ext.rb:96 + def full_name; end + + # Returns the list of parts for the full name of this constant. + # For example: [:Foo] + # + # source://prism-0.24.0/lib/prism/node_ext.rb:91 + def full_name_parts; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5639 + def inspect(inspector = T.unsafe(nil)); end + + # The name of the [constant](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#constants). + # + # X # name `:X` + # + # SOME_CONSTANT # name `:SOME_CONSTANT` + # + # source://prism-0.24.0/lib/prism/node.rb:5635 + sig { returns(Symbol) } + def name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5659 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5669 + def type; end + end +end + +# Represents writing to a constant in a context that doesn't have an explicit value. +# +# Foo, Bar = baz +# ^^^ ^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:5678 +class Prism::ConstantTargetNode < ::Prism::Node + # def initialize: (Symbol name, Location location) -> void + # + # @return [ConstantTargetNode] a new instance of ConstantTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:5680 + def initialize(source, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:5688 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5693 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:5703 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5698 + def compact_child_nodes; end + + # def copy: (**params) -> ConstantTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:5708 + sig { params(params: T.untyped).returns(Prism::ConstantTargetNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5693 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:5720 + def deconstruct_keys(keys); end + + # Returns the full name of this constant. For example: "Foo" + # + # source://prism-0.24.0/lib/prism/node_ext.rb:165 + def full_name; end + + # Returns the list of parts for the full name of this constant. + # For example: [:Foo] + # + # source://prism-0.24.0/lib/prism/node_ext.rb:160 + def full_name_parts; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5729 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5725 + sig { returns(Symbol) } + def name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5749 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5759 + def type; end + end +end + +# Represents writing to a constant. +# +# Foo = 1 +# ^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:5768 +class Prism::ConstantWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Node value, Location operator_loc, Location location) -> void + # + # @return [ConstantWriteNode] a new instance of ConstantWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:5770 + def initialize(source, name, name_loc, value, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:5781 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5786 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:5796 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5791 + def compact_child_nodes; end + + # def copy: (**params) -> ConstantWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:5801 + sig { params(params: T.untyped).returns(Prism::ConstantWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5786 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, value: Node, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:5816 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5845 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5821 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:5824 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:5840 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:5833 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5869 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:5830 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5879 + def type; end + end +end + +class Prism::DATAComment < Prism::Comment; end + +# The DSL module provides a set of methods that can be used to create prism +# nodes in a more concise manner. For example, instead of writing: +# +# source = Prism::Source.new("[1]") +# +# Prism::ArrayNode.new( +# [ +# Prism::IntegerNode.new( +# Prism::IntegerBaseFlags::DECIMAL, +# Prism::Location.new(source, 1, 1), +# source +# ) +# ], +# Prism::Location.new(source, 0, 1), +# Prism::Location.new(source, 2, 1), +# source +# ) +# +# you could instead write: +# +# source = Prism::Source.new("[1]") +# +# ArrayNode( +# IntegerNode(Prism::IntegerBaseFlags::DECIMAL, Location(source, 1, 1)), source), +# Location(source, 0, 1), +# Location(source, 2, 1), +# source +# ) +# +# This is mostly helpful in the context of writing tests, but can also be used +# to generate trees programmatically. +# +# source://prism-0.24.0/lib/prism/dsl.rb:40 +module Prism::DSL + private + + # Create a new AliasGlobalVariableNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:49 + def AliasGlobalVariableNode(new_name, old_name, keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new AliasMethodNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:54 + def AliasMethodNode(new_name, old_name, keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new AlternationPatternNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:59 + def AlternationPatternNode(left, right, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new AndNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:64 + def AndNode(left, right, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ArgumentsNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:69 + def ArgumentsNode(flags, arguments, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ArrayNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:74 + def ArrayNode(flags, elements, opening_loc, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ArrayPatternNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:79 + def ArrayPatternNode(constant, requireds, rest, posts, opening_loc, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new AssocNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:84 + def AssocNode(key, value, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new AssocSplatNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:89 + def AssocSplatNode(value, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new BackReferenceReadNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:94 + def BackReferenceReadNode(name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new BeginNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:99 + def BeginNode(begin_keyword_loc, statements, rescue_clause, else_clause, ensure_clause, end_keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new BlockArgumentNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:104 + def BlockArgumentNode(expression, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new BlockLocalVariableNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:109 + def BlockLocalVariableNode(flags, name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new BlockNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:114 + def BlockNode(locals, parameters, body, opening_loc, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new BlockParameterNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:119 + def BlockParameterNode(flags, name, name_loc, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new BlockParametersNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:124 + def BlockParametersNode(parameters, locals, opening_loc, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new BreakNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:129 + def BreakNode(arguments, keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new CallAndWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:134 + def CallAndWriteNode(flags, receiver, call_operator_loc, message_loc, read_name, write_name, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new CallNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:139 + def CallNode(flags, receiver, call_operator_loc, name, message_loc, opening_loc, arguments, closing_loc, block, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new CallOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:144 + def CallOperatorWriteNode(flags, receiver, call_operator_loc, message_loc, read_name, write_name, operator, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new CallOrWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:149 + def CallOrWriteNode(flags, receiver, call_operator_loc, message_loc, read_name, write_name, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new CallTargetNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:154 + def CallTargetNode(flags, receiver, call_operator_loc, name, message_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new CapturePatternNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:159 + def CapturePatternNode(value, target, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new CaseMatchNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:164 + def CaseMatchNode(predicate, conditions, consequent, case_keyword_loc, end_keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new CaseNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:169 + def CaseNode(predicate, conditions, consequent, case_keyword_loc, end_keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ClassNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:174 + def ClassNode(locals, class_keyword_loc, constant_path, inheritance_operator_loc, superclass, body, end_keyword_loc, name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ClassVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:179 + def ClassVariableAndWriteNode(name, name_loc, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ClassVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:184 + def ClassVariableOperatorWriteNode(name, name_loc, operator_loc, value, operator, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ClassVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:189 + def ClassVariableOrWriteNode(name, name_loc, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ClassVariableReadNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:194 + def ClassVariableReadNode(name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ClassVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:199 + def ClassVariableTargetNode(name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ClassVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:204 + def ClassVariableWriteNode(name, name_loc, value, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ConstantAndWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:209 + def ConstantAndWriteNode(name, name_loc, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ConstantOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:214 + def ConstantOperatorWriteNode(name, name_loc, operator_loc, value, operator, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ConstantOrWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:219 + def ConstantOrWriteNode(name, name_loc, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ConstantPathAndWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:224 + def ConstantPathAndWriteNode(target, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ConstantPathNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:229 + def ConstantPathNode(parent, child, delimiter_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ConstantPathOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:234 + def ConstantPathOperatorWriteNode(target, operator_loc, value, operator, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ConstantPathOrWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:239 + def ConstantPathOrWriteNode(target, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ConstantPathTargetNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:244 + def ConstantPathTargetNode(parent, child, delimiter_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ConstantPathWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:249 + def ConstantPathWriteNode(target, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ConstantReadNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:254 + def ConstantReadNode(name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ConstantTargetNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:259 + def ConstantTargetNode(name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ConstantWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:264 + def ConstantWriteNode(name, name_loc, value, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new DefNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:269 + def DefNode(name, name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new DefinedNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:274 + def DefinedNode(lparen_loc, value, rparen_loc, keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ElseNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:279 + def ElseNode(else_keyword_loc, statements, end_keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new EmbeddedStatementsNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:284 + def EmbeddedStatementsNode(opening_loc, statements, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new EmbeddedVariableNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:289 + def EmbeddedVariableNode(operator_loc, variable, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new EnsureNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:294 + def EnsureNode(ensure_keyword_loc, statements, end_keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new FalseNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:299 + def FalseNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new FindPatternNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:304 + def FindPatternNode(constant, left, requireds, right, opening_loc, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new FlipFlopNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:309 + def FlipFlopNode(flags, left, right, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new FloatNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:314 + def FloatNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ForNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:319 + def ForNode(index, collection, statements, for_keyword_loc, in_keyword_loc, do_keyword_loc, end_keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ForwardingArgumentsNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:324 + def ForwardingArgumentsNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ForwardingParameterNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:329 + def ForwardingParameterNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ForwardingSuperNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:334 + def ForwardingSuperNode(block, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new GlobalVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:339 + def GlobalVariableAndWriteNode(name, name_loc, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new GlobalVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:344 + def GlobalVariableOperatorWriteNode(name, name_loc, operator_loc, value, operator, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new GlobalVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:349 + def GlobalVariableOrWriteNode(name, name_loc, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new GlobalVariableReadNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:354 + def GlobalVariableReadNode(name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new GlobalVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:359 + def GlobalVariableTargetNode(name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new GlobalVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:364 + def GlobalVariableWriteNode(name, name_loc, value, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new HashNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:369 + def HashNode(opening_loc, elements, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new HashPatternNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:374 + def HashPatternNode(constant, elements, rest, opening_loc, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new IfNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:379 + def IfNode(if_keyword_loc, predicate, then_keyword_loc, statements, consequent, end_keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ImaginaryNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:384 + def ImaginaryNode(numeric, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ImplicitNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:389 + def ImplicitNode(value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ImplicitRestNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:394 + def ImplicitRestNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new InNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:399 + def InNode(pattern, statements, in_loc, then_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new IndexAndWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:404 + def IndexAndWriteNode(flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new IndexOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:409 + def IndexOperatorWriteNode(flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, operator, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new IndexOrWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:414 + def IndexOrWriteNode(flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new IndexTargetNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:419 + def IndexTargetNode(flags, receiver, opening_loc, arguments, closing_loc, block, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new InstanceVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:424 + def InstanceVariableAndWriteNode(name, name_loc, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new InstanceVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:429 + def InstanceVariableOperatorWriteNode(name, name_loc, operator_loc, value, operator, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new InstanceVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:434 + def InstanceVariableOrWriteNode(name, name_loc, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new InstanceVariableReadNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:439 + def InstanceVariableReadNode(name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new InstanceVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:444 + def InstanceVariableTargetNode(name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new InstanceVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:449 + def InstanceVariableWriteNode(name, name_loc, value, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new IntegerNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:454 + def IntegerNode(flags, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new InterpolatedMatchLastLineNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:459 + def InterpolatedMatchLastLineNode(flags, opening_loc, parts, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new InterpolatedRegularExpressionNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:464 + def InterpolatedRegularExpressionNode(flags, opening_loc, parts, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new InterpolatedStringNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:469 + def InterpolatedStringNode(opening_loc, parts, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new InterpolatedSymbolNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:474 + def InterpolatedSymbolNode(opening_loc, parts, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new InterpolatedXStringNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:479 + def InterpolatedXStringNode(opening_loc, parts, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new KeywordHashNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:484 + def KeywordHashNode(flags, elements, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new KeywordRestParameterNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:489 + def KeywordRestParameterNode(flags, name, name_loc, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new LambdaNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:494 + def LambdaNode(locals, operator_loc, opening_loc, closing_loc, parameters, body, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new LocalVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:499 + def LocalVariableAndWriteNode(name_loc, operator_loc, value, name, depth, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new LocalVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:504 + def LocalVariableOperatorWriteNode(name_loc, operator_loc, value, name, operator, depth, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new LocalVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:509 + def LocalVariableOrWriteNode(name_loc, operator_loc, value, name, depth, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new LocalVariableReadNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:514 + def LocalVariableReadNode(name, depth, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new LocalVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:519 + def LocalVariableTargetNode(name, depth, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new LocalVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:524 + def LocalVariableWriteNode(name, depth, name_loc, value, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new Location object + # + # source://prism-0.24.0/lib/prism/dsl.rb:44 + def Location(source = T.unsafe(nil), start_offset = T.unsafe(nil), length = T.unsafe(nil)); end + + # Create a new MatchLastLineNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:529 + def MatchLastLineNode(flags, opening_loc, content_loc, closing_loc, unescaped, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new MatchPredicateNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:534 + def MatchPredicateNode(value, pattern, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new MatchRequiredNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:539 + def MatchRequiredNode(value, pattern, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new MatchWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:544 + def MatchWriteNode(call, targets, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new MissingNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:549 + def MissingNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ModuleNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:554 + def ModuleNode(locals, module_keyword_loc, constant_path, body, end_keyword_loc, name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new MultiTargetNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:559 + def MultiTargetNode(lefts, rest, rights, lparen_loc, rparen_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new MultiWriteNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:564 + def MultiWriteNode(lefts, rest, rights, lparen_loc, rparen_loc, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new NextNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:569 + def NextNode(arguments, keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new NilNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:574 + def NilNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new NoKeywordsParameterNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:579 + def NoKeywordsParameterNode(operator_loc, keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new NumberedParametersNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:584 + def NumberedParametersNode(maximum, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new NumberedReferenceReadNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:589 + def NumberedReferenceReadNode(number, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new OptionalKeywordParameterNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:594 + def OptionalKeywordParameterNode(flags, name, name_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new OptionalParameterNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:599 + def OptionalParameterNode(flags, name, name_loc, operator_loc, value, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new OrNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:604 + def OrNode(left, right, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ParametersNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:609 + def ParametersNode(requireds, optionals, rest, posts, keywords, keyword_rest, block, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ParenthesesNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:614 + def ParenthesesNode(body, opening_loc, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new PinnedExpressionNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:619 + def PinnedExpressionNode(expression, operator_loc, lparen_loc, rparen_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new PinnedVariableNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:624 + def PinnedVariableNode(variable, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new PostExecutionNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:629 + def PostExecutionNode(statements, keyword_loc, opening_loc, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new PreExecutionNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:634 + def PreExecutionNode(statements, keyword_loc, opening_loc, closing_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ProgramNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:639 + def ProgramNode(locals, statements, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new RangeNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:644 + def RangeNode(flags, left, right, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new RationalNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:649 + def RationalNode(numeric, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new RedoNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:654 + def RedoNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new RegularExpressionNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:659 + def RegularExpressionNode(flags, opening_loc, content_loc, closing_loc, unescaped, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new RequiredKeywordParameterNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:664 + def RequiredKeywordParameterNode(flags, name, name_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new RequiredParameterNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:669 + def RequiredParameterNode(flags, name, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new RescueModifierNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:674 + def RescueModifierNode(expression, keyword_loc, rescue_expression, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new RescueNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:679 + def RescueNode(keyword_loc, exceptions, operator_loc, reference, statements, consequent, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new RestParameterNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:684 + def RestParameterNode(flags, name, name_loc, operator_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new RetryNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:689 + def RetryNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new ReturnNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:694 + def ReturnNode(keyword_loc, arguments, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new SelfNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:699 + def SelfNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new SingletonClassNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:704 + def SingletonClassNode(locals, class_keyword_loc, operator_loc, expression, body, end_keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new SourceEncodingNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:709 + def SourceEncodingNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new SourceFileNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:714 + def SourceFileNode(filepath, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new SourceLineNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:719 + def SourceLineNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new SplatNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:724 + def SplatNode(operator_loc, expression, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new StatementsNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:729 + def StatementsNode(body, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new StringNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:734 + def StringNode(flags, opening_loc, content_loc, closing_loc, unescaped, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new SuperNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:739 + def SuperNode(keyword_loc, lparen_loc, arguments, rparen_loc, block, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new SymbolNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:744 + def SymbolNode(flags, opening_loc, value_loc, closing_loc, unescaped, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new TrueNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:749 + def TrueNode(source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new UndefNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:754 + def UndefNode(names, keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new UnlessNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:759 + def UnlessNode(keyword_loc, predicate, then_keyword_loc, statements, consequent, end_keyword_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new UntilNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:764 + def UntilNode(flags, keyword_loc, closing_loc, predicate, statements, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new WhenNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:769 + def WhenNode(keyword_loc, conditions, statements, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new WhileNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:774 + def WhileNode(flags, keyword_loc, closing_loc, predicate, statements, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new XStringNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:779 + def XStringNode(flags, opening_loc, content_loc, closing_loc, unescaped, source = T.unsafe(nil), location = T.unsafe(nil)); end + + # Create a new YieldNode node + # + # source://prism-0.24.0/lib/prism/dsl.rb:784 + def YieldNode(keyword_loc, lparen_loc, arguments, rparen_loc, source = T.unsafe(nil), location = T.unsafe(nil)); end +end + +# This module is used for testing and debugging and is not meant to be used by +# consumers of this library. +# +# source://prism-0.24.0/lib/prism/debug.rb:6 +module Prism::Debug + class << self + # :call-seq: + # Debug::cruby_locals(source) -> Array + # + # For the given source, compiles with CRuby and returns a list of all of the + # sets of local variables that were encountered. + # + # source://prism-0.24.0/lib/prism/debug.rb:54 + def cruby_locals(source); end + + def format_errors(_arg0, _arg1); end + def inspect_node(_arg0); end + def memsize(_arg0); end + def named_captures(_arg0); end + + # :call-seq: + # Debug::newlines(source) -> Array + # + # For the given source string, return the byte offsets of every newline in + # the source. + # + # source://prism-0.24.0/lib/prism/debug.rb:202 + def newlines(source); end + + # :call-seq: + # Debug::prism_locals(source) -> Array + # + # For the given source, parses with prism and returns a list of all of the + # sets of local variables that were encountered. + # + # source://prism-0.24.0/lib/prism/debug.rb:98 + def prism_locals(source); end + + def profile_file(_arg0); end + end +end + +# Used to hold the place of a local that will be in the local table but +# cannot be accessed directly from the source code. For example, the +# iteration variable in a for loop or the positional parameter on a method +# definition that is destructured. +# +# source://prism-0.24.0/lib/prism/debug.rb:90 +Prism::Debug::AnonymousLocal = T.let(T.unsafe(nil), Object) + +# A wrapper around a RubyVM::InstructionSequence that provides a more +# convenient interface for accessing parts of the iseq. +# +# source://prism-0.24.0/lib/prism/debug.rb:9 +class Prism::Debug::ISeq + # @return [ISeq] a new instance of ISeq + # + # source://prism-0.24.0/lib/prism/debug.rb:12 + def initialize(parts); end + + # source://prism-0.24.0/lib/prism/debug.rb:28 + def each_child; end + + # source://prism-0.24.0/lib/prism/debug.rb:24 + def instructions; end + + # source://prism-0.24.0/lib/prism/debug.rb:20 + def local_table; end + + # source://prism-0.24.0/lib/prism/debug.rb:10 + def parts; end + + # source://prism-0.24.0/lib/prism/debug.rb:16 + def type; end +end + +# Represents a method definition. +# +# def method +# end +# ^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:5889 +class Prism::DefNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Node? receiver, ParametersNode? parameters, Node? body, Array[Symbol] locals, Location def_keyword_loc, Location? operator_loc, Location? lparen_loc, Location? rparen_loc, Location? equal_loc, Location? end_keyword_loc, Location location) -> void + # + # @return [DefNode] a new instance of DefNode + # + # source://prism-0.24.0/lib/prism/node.rb:5891 + def initialize(source, name, name_loc, receiver, parameters, body, locals, def_keyword_loc, operator_loc, lparen_loc, rparen_loc, equal_loc, end_keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:5910 + def accept(visitor); end + + # attr_reader body: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:5977 + sig { returns(T.nilable(Prism::Node)) } + def body; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5915 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:5929 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5920 + def compact_child_nodes; end + + # def copy: (**params) -> DefNode + # + # source://prism-0.24.0/lib/prism/node.rb:5934 + sig { params(params: T.untyped).returns(Prism::DefNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:5915 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, receiver: Node?, parameters: ParametersNode?, body: Node?, locals: Array[Symbol], def_keyword_loc: Location, operator_loc: Location?, lparen_loc: Location?, rparen_loc: Location?, equal_loc: Location?, end_keyword_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:5957 + def deconstruct_keys(keys); end + + # def def_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6050 + sig { returns(String) } + def def_keyword; end + + # attr_reader def_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:5983 + sig { returns(Prism::Location) } + def def_keyword_loc; end + + # def end_keyword: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:6075 + sig { returns(T.nilable(String)) } + def end_keyword; end + + # attr_reader end_keyword_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:6037 + sig { returns(T.nilable(Prism::Location)) } + def end_keyword_loc; end + + # def equal: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:6070 + sig { returns(T.nilable(String)) } + def equal; end + + # attr_reader equal_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:6025 + sig { returns(T.nilable(Prism::Location)) } + def equal_loc; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6080 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader locals: Array[Symbol] + # + # source://prism-0.24.0/lib/prism/node.rb:5980 + sig { returns(T::Array[Symbol]) } + def locals; end + + # def lparen: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:6060 + sig { returns(T.nilable(String)) } + def lparen; end + + # attr_reader lparen_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:6001 + sig { returns(T.nilable(Prism::Location)) } + def lparen_loc; end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:5962 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:5965 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:6055 + sig { returns(T.nilable(String)) } + def operator; end + + # attr_reader operator_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:5989 + sig { returns(T.nilable(Prism::Location)) } + def operator_loc; end + + # attr_reader parameters: ParametersNode? + # + # source://prism-0.24.0/lib/prism/node.rb:5974 + sig { returns(T.nilable(Prism::ParametersNode)) } + def parameters; end + + # attr_reader receiver: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:5971 + sig { returns(T.nilable(Prism::Node)) } + def receiver; end + + # def rparen: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:6065 + sig { returns(T.nilable(String)) } + def rparen; end + + # attr_reader rparen_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:6013 + sig { returns(T.nilable(Prism::Location)) } + def rparen_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6126 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6136 + def type; end + end +end + +# Represents the use of the `defined?` keyword. +# +# defined?(a) +# ^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:6145 +class Prism::DefinedNode < ::Prism::Node + # def initialize: (Location? lparen_loc, Node value, Location? rparen_loc, Location keyword_loc, Location location) -> void + # + # @return [DefinedNode] a new instance of DefinedNode + # + # source://prism-0.24.0/lib/prism/node.rb:6147 + def initialize(source, lparen_loc, value, rparen_loc, keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:6158 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6163 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:6173 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6168 + def compact_child_nodes; end + + # def copy: (**params) -> DefinedNode + # + # source://prism-0.24.0/lib/prism/node.rb:6178 + sig { params(params: T.untyped).returns(Prism::DefinedNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6163 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { lparen_loc: Location?, value: Node, rparen_loc: Location?, keyword_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:6193 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6247 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6242 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:6225 + sig { returns(Prism::Location) } + def keyword_loc; end + + # def lparen: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:6232 + sig { returns(T.nilable(String)) } + def lparen; end + + # attr_reader lparen_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:6198 + sig { returns(T.nilable(Prism::Location)) } + def lparen_loc; end + + # def rparen: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:6237 + sig { returns(T.nilable(String)) } + def rparen; end + + # attr_reader rparen_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:6213 + sig { returns(T.nilable(Prism::Location)) } + def rparen_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6271 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:6210 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6281 + def type; end + end +end + +# source://prism-0.24.0/lib/prism/desugar_compiler.rb:4 +class Prism::DesugarAndWriteNode + # @return [DesugarAndWriteNode] a new instance of DesugarAndWriteNode + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:7 + def initialize(node, source, read_class, write_class, *arguments); end + + # Returns the value of attribute arguments. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:5 + def arguments; end + + # Desugar `x &&= y` to `x && x = y` + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:16 + def compile; end + + # Returns the value of attribute node. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:5 + def node; end + + # Returns the value of attribute read_class. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:5 + def read_class; end + + # Returns the value of attribute source. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:5 + def source; end + + # Returns the value of attribute write_class. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:5 + 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-0.24.0/lib/prism/desugar_compiler.rb:216 +class Prism::DesugarCompiler < ::Prism::MutationCompiler + # @@foo &&= bar + # + # becomes + # + # @@foo && @@foo = bar + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:222 + def visit_class_variable_and_write_node(node); end + + # @@foo += bar + # + # becomes + # + # @@foo = @@foo + bar + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:240 + def visit_class_variable_operator_write_node(node); end + + # @@foo ||= bar + # + # becomes + # + # defined?(@@foo) ? @@foo : @@foo = bar + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:231 + def visit_class_variable_or_write_node(node); end + + # Foo &&= bar + # + # becomes + # + # Foo && Foo = bar + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:249 + def visit_constant_and_write_node(node); end + + # Foo += bar + # + # becomes + # + # Foo = Foo + bar + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:267 + def visit_constant_operator_write_node(node); end + + # Foo ||= bar + # + # becomes + # + # defined?(Foo) ? Foo : Foo = bar + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:258 + def visit_constant_or_write_node(node); end + + # $foo &&= bar + # + # becomes + # + # $foo && $foo = bar + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:276 + def visit_global_variable_and_write_node(node); end + + # $foo += bar + # + # becomes + # + # $foo = $foo + bar + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:294 + def visit_global_variable_operator_write_node(node); end + + # $foo ||= bar + # + # becomes + # + # defined?($foo) ? $foo : $foo = bar + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:285 + def visit_global_variable_or_write_node(node); end + + # becomes + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:303 + def visit_instance_variable_and_write_node(node); end + + # becomes + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:321 + def visit_instance_variable_operator_write_node(node); end + + # becomes + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:312 + def visit_instance_variable_or_write_node(node); end + + # foo &&= bar + # + # becomes + # + # foo && foo = bar + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:330 + def visit_local_variable_and_write_node(node); end + + # foo += bar + # + # becomes + # + # foo = foo + bar + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:348 + def visit_local_variable_operator_write_node(node); end + + # foo ||= bar + # + # becomes + # + # foo || foo = bar + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:339 + def visit_local_variable_or_write_node(node); end +end + +# source://prism-0.24.0/lib/prism/desugar_compiler.rb:63 +class Prism::DesugarOperatorWriteNode + # @return [DesugarOperatorWriteNode] a new instance of DesugarOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:66 + def initialize(node, source, read_class, write_class, *arguments); end + + # Returns the value of attribute arguments. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:64 + def arguments; end + + # Desugar `x += y` to `x = x + y` + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:75 + def compile; end + + # Returns the value of attribute node. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:64 + def node; end + + # Returns the value of attribute read_class. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:64 + def read_class; end + + # Returns the value of attribute source. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:64 + def source; end + + # Returns the value of attribute write_class. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:64 + def write_class; end +end + +# source://prism-0.24.0/lib/prism/desugar_compiler.rb:27 +class Prism::DesugarOrWriteDefinedNode + # @return [DesugarOrWriteDefinedNode] a new instance of DesugarOrWriteDefinedNode + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:30 + def initialize(node, source, read_class, write_class, *arguments); end + + # Returns the value of attribute arguments. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:28 + def arguments; end + + # Desugar `x ||= y` to `defined?(x) ? x : x = y` + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:39 + def compile; end + + # Returns the value of attribute node. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:28 + def node; end + + # Returns the value of attribute read_class. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:28 + def read_class; end + + # Returns the value of attribute source. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:28 + def source; end + + # Returns the value of attribute write_class. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:28 + def write_class; end +end + +# source://prism-0.24.0/lib/prism/desugar_compiler.rb:99 +class Prism::DesugarOrWriteNode + # @return [DesugarOrWriteNode] a new instance of DesugarOrWriteNode + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:102 + def initialize(node, source, read_class, write_class, *arguments); end + + # Returns the value of attribute arguments. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:100 + def arguments; end + + # Desugar `x ||= y` to `x || x = y` + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:111 + def compile; end + + # Returns the value of attribute node. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:100 + def node; end + + # Returns the value of attribute read_class. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:100 + def read_class; end + + # Returns the value of attribute source. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:100 + def source; end + + # Returns the value of attribute write_class. + # + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:100 + def write_class; end +end + +# The dispatcher class fires events for nodes that are found while walking an +# AST to all registered listeners. It's useful for performing different types +# of analysis on the AST while only having to walk the tree once. +# +# To use the dispatcher, you would first instantiate it and register listeners +# for the events you're interested in: +# +# class OctalListener +# def on_integer_node_enter(node) +# if node.octal? && !node.slice.start_with?("0o") +# warn("Octal integers should be written with the 0o prefix") +# end +# end +# end +# +# dispatcher = Dispatcher.new +# dispatcher.register(listener, :on_integer_node_enter) +# +# Then, you can walk any number of trees and dispatch events to the listeners: +# +# result = Prism.parse("001 + 002 + 003") +# dispatcher.dispatch(result.value) +# +# Optionally, you can also use `#dispatch_once` to dispatch enter and leave +# events for a single node without recursing further down the tree. This can +# be useful in circumstances where you want to reuse the listeners you already +# have registers but want to stop walking the tree at a certain point. +# +# integer = result.value.statements.body.first.receiver.receiver +# dispatcher.dispatch_once(integer) +# +# source://prism-0.24.0/lib/prism/dispatcher.rb:40 +class Prism::Dispatcher < ::Prism::Visitor + # Initialize a new dispatcher. + # + # @return [Dispatcher] a new instance of Dispatcher + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:45 + def initialize; end + + # Walks `root` dispatching events to all registered listeners. + # + # def dispatch: (Node) -> void + # + # source://prism-0.24.0/lib/prism/visitor.rb:16 + def dispatch(node); end + + # Dispatches a single event for `node` to all registered listeners. + # + # def dispatch_once: (Node) -> void + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:64 + def dispatch_once(node); end + + # attr_reader listeners: Hash[Symbol, Array[Listener]] + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:42 + def listeners; end + + # Register a listener for one or more events. + # + # def register: (Listener, *Symbol) -> void + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:52 + def register(listener, *events); end + + # Dispatch enter and leave events for AliasGlobalVariableNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:70 + def visit_alias_global_variable_node(node); end + + # Dispatch enter and leave events for AliasMethodNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:78 + def visit_alias_method_node(node); end + + # Dispatch enter and leave events for AlternationPatternNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:86 + def visit_alternation_pattern_node(node); end + + # Dispatch enter and leave events for AndNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:94 + def visit_and_node(node); end + + # Dispatch enter and leave events for ArgumentsNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:102 + def visit_arguments_node(node); end + + # Dispatch enter and leave events for ArrayNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:110 + def visit_array_node(node); end + + # Dispatch enter and leave events for ArrayPatternNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:118 + def visit_array_pattern_node(node); end + + # Dispatch enter and leave events for AssocNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:126 + def visit_assoc_node(node); end + + # Dispatch enter and leave events for AssocSplatNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:134 + def visit_assoc_splat_node(node); end + + # Dispatch enter and leave events for BackReferenceReadNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:142 + def visit_back_reference_read_node(node); end + + # Dispatch enter and leave events for BeginNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:150 + def visit_begin_node(node); end + + # Dispatch enter and leave events for BlockArgumentNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:158 + def visit_block_argument_node(node); end + + # Dispatch enter and leave events for BlockLocalVariableNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:166 + def visit_block_local_variable_node(node); end + + # Dispatch enter and leave events for BlockNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:174 + def visit_block_node(node); end + + # Dispatch enter and leave events for BlockParameterNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:182 + def visit_block_parameter_node(node); end + + # Dispatch enter and leave events for BlockParametersNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:190 + def visit_block_parameters_node(node); end + + # Dispatch enter and leave events for BreakNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:198 + def visit_break_node(node); end + + # Dispatch enter and leave events for CallAndWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:206 + def visit_call_and_write_node(node); end + + # Dispatch enter and leave events for CallNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:214 + def visit_call_node(node); end + + # Dispatch enter and leave events for CallOperatorWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:222 + def visit_call_operator_write_node(node); end + + # Dispatch enter and leave events for CallOrWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:230 + def visit_call_or_write_node(node); end + + # Dispatch enter and leave events for CallTargetNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:238 + def visit_call_target_node(node); end + + # Dispatch enter and leave events for CapturePatternNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:246 + def visit_capture_pattern_node(node); end + + # Dispatch enter and leave events for CaseMatchNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:254 + def visit_case_match_node(node); end + + # Dispatch enter and leave events for CaseNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:262 + def visit_case_node(node); end + + # Dispatch enter and leave events for ClassNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:270 + def visit_class_node(node); end + + # Dispatch enter and leave events for ClassVariableAndWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:278 + def visit_class_variable_and_write_node(node); end + + # Dispatch enter and leave events for ClassVariableOperatorWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:286 + def visit_class_variable_operator_write_node(node); end + + # Dispatch enter and leave events for ClassVariableOrWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:294 + def visit_class_variable_or_write_node(node); end + + # Dispatch enter and leave events for ClassVariableReadNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:302 + def visit_class_variable_read_node(node); end + + # Dispatch enter and leave events for ClassVariableTargetNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:310 + def visit_class_variable_target_node(node); end + + # Dispatch enter and leave events for ClassVariableWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:318 + def visit_class_variable_write_node(node); end + + # Dispatch enter and leave events for ConstantAndWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:326 + def visit_constant_and_write_node(node); end + + # Dispatch enter and leave events for ConstantOperatorWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:334 + def visit_constant_operator_write_node(node); end + + # Dispatch enter and leave events for ConstantOrWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:342 + def visit_constant_or_write_node(node); end + + # Dispatch enter and leave events for ConstantPathAndWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:350 + def visit_constant_path_and_write_node(node); end + + # Dispatch enter and leave events for ConstantPathNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:358 + def visit_constant_path_node(node); end + + # Dispatch enter and leave events for ConstantPathOperatorWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:366 + def visit_constant_path_operator_write_node(node); end + + # Dispatch enter and leave events for ConstantPathOrWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:374 + def visit_constant_path_or_write_node(node); end + + # Dispatch enter and leave events for ConstantPathTargetNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:382 + def visit_constant_path_target_node(node); end + + # Dispatch enter and leave events for ConstantPathWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:390 + def visit_constant_path_write_node(node); end + + # Dispatch enter and leave events for ConstantReadNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:398 + def visit_constant_read_node(node); end + + # Dispatch enter and leave events for ConstantTargetNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:406 + def visit_constant_target_node(node); end + + # Dispatch enter and leave events for ConstantWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:414 + def visit_constant_write_node(node); end + + # Dispatch enter and leave events for DefNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:422 + def visit_def_node(node); end + + # Dispatch enter and leave events for DefinedNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:430 + def visit_defined_node(node); end + + # Dispatch enter and leave events for ElseNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:438 + def visit_else_node(node); end + + # Dispatch enter and leave events for EmbeddedStatementsNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:446 + def visit_embedded_statements_node(node); end + + # Dispatch enter and leave events for EmbeddedVariableNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:454 + def visit_embedded_variable_node(node); end + + # Dispatch enter and leave events for EnsureNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:462 + def visit_ensure_node(node); end + + # Dispatch enter and leave events for FalseNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:470 + def visit_false_node(node); end + + # Dispatch enter and leave events for FindPatternNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:478 + def visit_find_pattern_node(node); end + + # Dispatch enter and leave events for FlipFlopNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:486 + def visit_flip_flop_node(node); end + + # Dispatch enter and leave events for FloatNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:494 + def visit_float_node(node); end + + # Dispatch enter and leave events for ForNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:502 + def visit_for_node(node); end + + # Dispatch enter and leave events for ForwardingArgumentsNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:510 + def visit_forwarding_arguments_node(node); end + + # Dispatch enter and leave events for ForwardingParameterNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:518 + def visit_forwarding_parameter_node(node); end + + # Dispatch enter and leave events for ForwardingSuperNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:526 + def visit_forwarding_super_node(node); end + + # Dispatch enter and leave events for GlobalVariableAndWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:534 + def visit_global_variable_and_write_node(node); end + + # Dispatch enter and leave events for GlobalVariableOperatorWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:542 + def visit_global_variable_operator_write_node(node); end + + # Dispatch enter and leave events for GlobalVariableOrWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:550 + def visit_global_variable_or_write_node(node); end + + # Dispatch enter and leave events for GlobalVariableReadNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:558 + def visit_global_variable_read_node(node); end + + # Dispatch enter and leave events for GlobalVariableTargetNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:566 + def visit_global_variable_target_node(node); end + + # Dispatch enter and leave events for GlobalVariableWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:574 + def visit_global_variable_write_node(node); end + + # Dispatch enter and leave events for HashNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:582 + def visit_hash_node(node); end + + # Dispatch enter and leave events for HashPatternNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:590 + def visit_hash_pattern_node(node); end + + # Dispatch enter and leave events for IfNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:598 + def visit_if_node(node); end + + # Dispatch enter and leave events for ImaginaryNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:606 + def visit_imaginary_node(node); end + + # Dispatch enter and leave events for ImplicitNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:614 + def visit_implicit_node(node); end + + # Dispatch enter and leave events for ImplicitRestNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:622 + def visit_implicit_rest_node(node); end + + # Dispatch enter and leave events for InNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:630 + def visit_in_node(node); end + + # Dispatch enter and leave events for IndexAndWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:638 + def visit_index_and_write_node(node); end + + # Dispatch enter and leave events for IndexOperatorWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:646 + def visit_index_operator_write_node(node); end + + # Dispatch enter and leave events for IndexOrWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:654 + def visit_index_or_write_node(node); end + + # Dispatch enter and leave events for IndexTargetNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:662 + def visit_index_target_node(node); end + + # Dispatch enter and leave events for InstanceVariableAndWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:670 + def visit_instance_variable_and_write_node(node); end + + # Dispatch enter and leave events for InstanceVariableOperatorWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:678 + def visit_instance_variable_operator_write_node(node); end + + # Dispatch enter and leave events for InstanceVariableOrWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:686 + def visit_instance_variable_or_write_node(node); end + + # Dispatch enter and leave events for InstanceVariableReadNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:694 + def visit_instance_variable_read_node(node); end + + # Dispatch enter and leave events for InstanceVariableTargetNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:702 + def visit_instance_variable_target_node(node); end + + # Dispatch enter and leave events for InstanceVariableWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:710 + def visit_instance_variable_write_node(node); end + + # Dispatch enter and leave events for IntegerNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:718 + def visit_integer_node(node); end + + # Dispatch enter and leave events for InterpolatedMatchLastLineNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:726 + def visit_interpolated_match_last_line_node(node); end + + # Dispatch enter and leave events for InterpolatedRegularExpressionNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:734 + def visit_interpolated_regular_expression_node(node); end + + # Dispatch enter and leave events for InterpolatedStringNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:742 + def visit_interpolated_string_node(node); end + + # Dispatch enter and leave events for InterpolatedSymbolNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:750 + def visit_interpolated_symbol_node(node); end + + # Dispatch enter and leave events for InterpolatedXStringNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:758 + def visit_interpolated_x_string_node(node); end + + # Dispatch enter and leave events for KeywordHashNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:766 + def visit_keyword_hash_node(node); end + + # Dispatch enter and leave events for KeywordRestParameterNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:774 + def visit_keyword_rest_parameter_node(node); end + + # Dispatch enter and leave events for LambdaNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:782 + def visit_lambda_node(node); end + + # Dispatch enter and leave events for LocalVariableAndWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:790 + def visit_local_variable_and_write_node(node); end + + # Dispatch enter and leave events for LocalVariableOperatorWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:798 + def visit_local_variable_operator_write_node(node); end + + # Dispatch enter and leave events for LocalVariableOrWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:806 + def visit_local_variable_or_write_node(node); end + + # Dispatch enter and leave events for LocalVariableReadNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:814 + def visit_local_variable_read_node(node); end + + # Dispatch enter and leave events for LocalVariableTargetNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:822 + def visit_local_variable_target_node(node); end + + # Dispatch enter and leave events for LocalVariableWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:830 + def visit_local_variable_write_node(node); end + + # Dispatch enter and leave events for MatchLastLineNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:838 + def visit_match_last_line_node(node); end + + # Dispatch enter and leave events for MatchPredicateNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:846 + def visit_match_predicate_node(node); end + + # Dispatch enter and leave events for MatchRequiredNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:854 + def visit_match_required_node(node); end + + # Dispatch enter and leave events for MatchWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:862 + def visit_match_write_node(node); end + + # Dispatch enter and leave events for MissingNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:870 + def visit_missing_node(node); end + + # Dispatch enter and leave events for ModuleNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:878 + def visit_module_node(node); end + + # Dispatch enter and leave events for MultiTargetNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:886 + def visit_multi_target_node(node); end + + # Dispatch enter and leave events for MultiWriteNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:894 + def visit_multi_write_node(node); end + + # Dispatch enter and leave events for NextNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:902 + def visit_next_node(node); end + + # Dispatch enter and leave events for NilNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:910 + def visit_nil_node(node); end + + # Dispatch enter and leave events for NoKeywordsParameterNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:918 + def visit_no_keywords_parameter_node(node); end + + # Dispatch enter and leave events for NumberedParametersNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:926 + def visit_numbered_parameters_node(node); end + + # Dispatch enter and leave events for NumberedReferenceReadNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:934 + def visit_numbered_reference_read_node(node); end + + # Dispatch enter and leave events for OptionalKeywordParameterNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:942 + def visit_optional_keyword_parameter_node(node); end + + # Dispatch enter and leave events for OptionalParameterNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:950 + def visit_optional_parameter_node(node); end + + # Dispatch enter and leave events for OrNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:958 + def visit_or_node(node); end + + # Dispatch enter and leave events for ParametersNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:966 + def visit_parameters_node(node); end + + # Dispatch enter and leave events for ParenthesesNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:974 + def visit_parentheses_node(node); end + + # Dispatch enter and leave events for PinnedExpressionNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:982 + def visit_pinned_expression_node(node); end + + # Dispatch enter and leave events for PinnedVariableNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:990 + def visit_pinned_variable_node(node); end + + # Dispatch enter and leave events for PostExecutionNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:998 + def visit_post_execution_node(node); end + + # Dispatch enter and leave events for PreExecutionNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1006 + def visit_pre_execution_node(node); end + + # Dispatch enter and leave events for ProgramNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1014 + def visit_program_node(node); end + + # Dispatch enter and leave events for RangeNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1022 + def visit_range_node(node); end + + # Dispatch enter and leave events for RationalNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1030 + def visit_rational_node(node); end + + # Dispatch enter and leave events for RedoNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1038 + def visit_redo_node(node); end + + # Dispatch enter and leave events for RegularExpressionNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1046 + def visit_regular_expression_node(node); end + + # Dispatch enter and leave events for RequiredKeywordParameterNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1054 + def visit_required_keyword_parameter_node(node); end + + # Dispatch enter and leave events for RequiredParameterNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1062 + def visit_required_parameter_node(node); end + + # Dispatch enter and leave events for RescueModifierNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1070 + def visit_rescue_modifier_node(node); end + + # Dispatch enter and leave events for RescueNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1078 + def visit_rescue_node(node); end + + # Dispatch enter and leave events for RestParameterNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1086 + def visit_rest_parameter_node(node); end + + # Dispatch enter and leave events for RetryNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1094 + def visit_retry_node(node); end + + # Dispatch enter and leave events for ReturnNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1102 + def visit_return_node(node); end + + # Dispatch enter and leave events for SelfNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1110 + def visit_self_node(node); end + + # Dispatch enter and leave events for SingletonClassNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1118 + def visit_singleton_class_node(node); end + + # Dispatch enter and leave events for SourceEncodingNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1126 + def visit_source_encoding_node(node); end + + # Dispatch enter and leave events for SourceFileNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1134 + def visit_source_file_node(node); end + + # Dispatch enter and leave events for SourceLineNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1142 + def visit_source_line_node(node); end + + # Dispatch enter and leave events for SplatNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1150 + def visit_splat_node(node); end + + # Dispatch enter and leave events for StatementsNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1158 + def visit_statements_node(node); end + + # Dispatch enter and leave events for StringNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1166 + def visit_string_node(node); end + + # Dispatch enter and leave events for SuperNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1174 + def visit_super_node(node); end + + # Dispatch enter and leave events for SymbolNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1182 + def visit_symbol_node(node); end + + # Dispatch enter and leave events for TrueNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1190 + def visit_true_node(node); end + + # Dispatch enter and leave events for UndefNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1198 + def visit_undef_node(node); end + + # Dispatch enter and leave events for UnlessNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1206 + def visit_unless_node(node); end + + # Dispatch enter and leave events for UntilNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1214 + def visit_until_node(node); end + + # Dispatch enter and leave events for WhenNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1222 + def visit_when_node(node); end + + # Dispatch enter and leave events for WhileNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1230 + def visit_while_node(node); end + + # Dispatch enter and leave events for XStringNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1238 + def visit_x_string_node(node); end + + # Dispatch enter and leave events for YieldNode nodes and continue + # walking the tree. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1246 + def visit_yield_node(node); end +end + +# source://prism-0.24.0/lib/prism/dispatcher.rb:1252 +class Prism::Dispatcher::DispatchOnce < ::Prism::Visitor + # @return [DispatchOnce] a new instance of DispatchOnce + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1255 + def initialize(listeners); end + + # Returns the value of attribute listeners. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1253 + def listeners; end + + # Dispatch enter and leave events for AliasGlobalVariableNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1260 + def visit_alias_global_variable_node(node); end + + # Dispatch enter and leave events for AliasMethodNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1266 + def visit_alias_method_node(node); end + + # Dispatch enter and leave events for AlternationPatternNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1272 + def visit_alternation_pattern_node(node); end + + # Dispatch enter and leave events for AndNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1278 + def visit_and_node(node); end + + # Dispatch enter and leave events for ArgumentsNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1284 + def visit_arguments_node(node); end + + # Dispatch enter and leave events for ArrayNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1290 + def visit_array_node(node); end + + # Dispatch enter and leave events for ArrayPatternNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1296 + def visit_array_pattern_node(node); end + + # Dispatch enter and leave events for AssocNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1302 + def visit_assoc_node(node); end + + # Dispatch enter and leave events for AssocSplatNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1308 + def visit_assoc_splat_node(node); end + + # Dispatch enter and leave events for BackReferenceReadNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1314 + def visit_back_reference_read_node(node); end + + # Dispatch enter and leave events for BeginNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1320 + def visit_begin_node(node); end + + # Dispatch enter and leave events for BlockArgumentNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1326 + def visit_block_argument_node(node); end + + # Dispatch enter and leave events for BlockLocalVariableNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1332 + def visit_block_local_variable_node(node); end + + # Dispatch enter and leave events for BlockNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1338 + def visit_block_node(node); end + + # Dispatch enter and leave events for BlockParameterNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1344 + def visit_block_parameter_node(node); end + + # Dispatch enter and leave events for BlockParametersNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1350 + def visit_block_parameters_node(node); end + + # Dispatch enter and leave events for BreakNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1356 + def visit_break_node(node); end + + # Dispatch enter and leave events for CallAndWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1362 + def visit_call_and_write_node(node); end + + # Dispatch enter and leave events for CallNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1368 + def visit_call_node(node); end + + # Dispatch enter and leave events for CallOperatorWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1374 + def visit_call_operator_write_node(node); end + + # Dispatch enter and leave events for CallOrWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1380 + def visit_call_or_write_node(node); end + + # Dispatch enter and leave events for CallTargetNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1386 + def visit_call_target_node(node); end + + # Dispatch enter and leave events for CapturePatternNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1392 + def visit_capture_pattern_node(node); end + + # Dispatch enter and leave events for CaseMatchNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1398 + def visit_case_match_node(node); end + + # Dispatch enter and leave events for CaseNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1404 + def visit_case_node(node); end + + # Dispatch enter and leave events for ClassNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1410 + def visit_class_node(node); end + + # Dispatch enter and leave events for ClassVariableAndWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1416 + def visit_class_variable_and_write_node(node); end + + # Dispatch enter and leave events for ClassVariableOperatorWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1422 + def visit_class_variable_operator_write_node(node); end + + # Dispatch enter and leave events for ClassVariableOrWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1428 + def visit_class_variable_or_write_node(node); end + + # Dispatch enter and leave events for ClassVariableReadNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1434 + def visit_class_variable_read_node(node); end + + # Dispatch enter and leave events for ClassVariableTargetNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1440 + def visit_class_variable_target_node(node); end + + # Dispatch enter and leave events for ClassVariableWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1446 + def visit_class_variable_write_node(node); end + + # Dispatch enter and leave events for ConstantAndWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1452 + def visit_constant_and_write_node(node); end + + # Dispatch enter and leave events for ConstantOperatorWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1458 + def visit_constant_operator_write_node(node); end + + # Dispatch enter and leave events for ConstantOrWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1464 + def visit_constant_or_write_node(node); end + + # Dispatch enter and leave events for ConstantPathAndWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1470 + def visit_constant_path_and_write_node(node); end + + # Dispatch enter and leave events for ConstantPathNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1476 + def visit_constant_path_node(node); end + + # Dispatch enter and leave events for ConstantPathOperatorWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1482 + def visit_constant_path_operator_write_node(node); end + + # Dispatch enter and leave events for ConstantPathOrWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1488 + def visit_constant_path_or_write_node(node); end + + # Dispatch enter and leave events for ConstantPathTargetNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1494 + def visit_constant_path_target_node(node); end + + # Dispatch enter and leave events for ConstantPathWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1500 + def visit_constant_path_write_node(node); end + + # Dispatch enter and leave events for ConstantReadNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1506 + def visit_constant_read_node(node); end + + # Dispatch enter and leave events for ConstantTargetNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1512 + def visit_constant_target_node(node); end + + # Dispatch enter and leave events for ConstantWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1518 + def visit_constant_write_node(node); end + + # Dispatch enter and leave events for DefNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1524 + def visit_def_node(node); end + + # Dispatch enter and leave events for DefinedNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1530 + def visit_defined_node(node); end + + # Dispatch enter and leave events for ElseNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1536 + def visit_else_node(node); end + + # Dispatch enter and leave events for EmbeddedStatementsNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1542 + def visit_embedded_statements_node(node); end + + # Dispatch enter and leave events for EmbeddedVariableNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1548 + def visit_embedded_variable_node(node); end + + # Dispatch enter and leave events for EnsureNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1554 + def visit_ensure_node(node); end + + # Dispatch enter and leave events for FalseNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1560 + def visit_false_node(node); end + + # Dispatch enter and leave events for FindPatternNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1566 + def visit_find_pattern_node(node); end + + # Dispatch enter and leave events for FlipFlopNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1572 + def visit_flip_flop_node(node); end + + # Dispatch enter and leave events for FloatNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1578 + def visit_float_node(node); end + + # Dispatch enter and leave events for ForNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1584 + def visit_for_node(node); end + + # Dispatch enter and leave events for ForwardingArgumentsNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1590 + def visit_forwarding_arguments_node(node); end + + # Dispatch enter and leave events for ForwardingParameterNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1596 + def visit_forwarding_parameter_node(node); end + + # Dispatch enter and leave events for ForwardingSuperNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1602 + def visit_forwarding_super_node(node); end + + # Dispatch enter and leave events for GlobalVariableAndWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1608 + def visit_global_variable_and_write_node(node); end + + # Dispatch enter and leave events for GlobalVariableOperatorWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1614 + def visit_global_variable_operator_write_node(node); end + + # Dispatch enter and leave events for GlobalVariableOrWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1620 + def visit_global_variable_or_write_node(node); end + + # Dispatch enter and leave events for GlobalVariableReadNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1626 + def visit_global_variable_read_node(node); end + + # Dispatch enter and leave events for GlobalVariableTargetNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1632 + def visit_global_variable_target_node(node); end + + # Dispatch enter and leave events for GlobalVariableWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1638 + def visit_global_variable_write_node(node); end + + # Dispatch enter and leave events for HashNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1644 + def visit_hash_node(node); end + + # Dispatch enter and leave events for HashPatternNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1650 + def visit_hash_pattern_node(node); end + + # Dispatch enter and leave events for IfNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1656 + def visit_if_node(node); end + + # Dispatch enter and leave events for ImaginaryNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1662 + def visit_imaginary_node(node); end + + # Dispatch enter and leave events for ImplicitNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1668 + def visit_implicit_node(node); end + + # Dispatch enter and leave events for ImplicitRestNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1674 + def visit_implicit_rest_node(node); end + + # Dispatch enter and leave events for InNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1680 + def visit_in_node(node); end + + # Dispatch enter and leave events for IndexAndWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1686 + def visit_index_and_write_node(node); end + + # Dispatch enter and leave events for IndexOperatorWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1692 + def visit_index_operator_write_node(node); end + + # Dispatch enter and leave events for IndexOrWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1698 + def visit_index_or_write_node(node); end + + # Dispatch enter and leave events for IndexTargetNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1704 + def visit_index_target_node(node); end + + # Dispatch enter and leave events for InstanceVariableAndWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1710 + def visit_instance_variable_and_write_node(node); end + + # Dispatch enter and leave events for InstanceVariableOperatorWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1716 + def visit_instance_variable_operator_write_node(node); end + + # Dispatch enter and leave events for InstanceVariableOrWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1722 + def visit_instance_variable_or_write_node(node); end + + # Dispatch enter and leave events for InstanceVariableReadNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1728 + def visit_instance_variable_read_node(node); end + + # Dispatch enter and leave events for InstanceVariableTargetNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1734 + def visit_instance_variable_target_node(node); end + + # Dispatch enter and leave events for InstanceVariableWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1740 + def visit_instance_variable_write_node(node); end + + # Dispatch enter and leave events for IntegerNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1746 + def visit_integer_node(node); end + + # Dispatch enter and leave events for InterpolatedMatchLastLineNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1752 + def visit_interpolated_match_last_line_node(node); end + + # Dispatch enter and leave events for InterpolatedRegularExpressionNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1758 + def visit_interpolated_regular_expression_node(node); end + + # Dispatch enter and leave events for InterpolatedStringNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1764 + def visit_interpolated_string_node(node); end + + # Dispatch enter and leave events for InterpolatedSymbolNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1770 + def visit_interpolated_symbol_node(node); end + + # Dispatch enter and leave events for InterpolatedXStringNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1776 + def visit_interpolated_x_string_node(node); end + + # Dispatch enter and leave events for KeywordHashNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1782 + def visit_keyword_hash_node(node); end + + # Dispatch enter and leave events for KeywordRestParameterNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1788 + def visit_keyword_rest_parameter_node(node); end + + # Dispatch enter and leave events for LambdaNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1794 + def visit_lambda_node(node); end + + # Dispatch enter and leave events for LocalVariableAndWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1800 + def visit_local_variable_and_write_node(node); end + + # Dispatch enter and leave events for LocalVariableOperatorWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1806 + def visit_local_variable_operator_write_node(node); end + + # Dispatch enter and leave events for LocalVariableOrWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1812 + def visit_local_variable_or_write_node(node); end + + # Dispatch enter and leave events for LocalVariableReadNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1818 + def visit_local_variable_read_node(node); end + + # Dispatch enter and leave events for LocalVariableTargetNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1824 + def visit_local_variable_target_node(node); end + + # Dispatch enter and leave events for LocalVariableWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1830 + def visit_local_variable_write_node(node); end + + # Dispatch enter and leave events for MatchLastLineNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1836 + def visit_match_last_line_node(node); end + + # Dispatch enter and leave events for MatchPredicateNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1842 + def visit_match_predicate_node(node); end + + # Dispatch enter and leave events for MatchRequiredNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1848 + def visit_match_required_node(node); end + + # Dispatch enter and leave events for MatchWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1854 + def visit_match_write_node(node); end + + # Dispatch enter and leave events for MissingNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1860 + def visit_missing_node(node); end + + # Dispatch enter and leave events for ModuleNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1866 + def visit_module_node(node); end + + # Dispatch enter and leave events for MultiTargetNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1872 + def visit_multi_target_node(node); end + + # Dispatch enter and leave events for MultiWriteNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1878 + def visit_multi_write_node(node); end + + # Dispatch enter and leave events for NextNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1884 + def visit_next_node(node); end + + # Dispatch enter and leave events for NilNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1890 + def visit_nil_node(node); end + + # Dispatch enter and leave events for NoKeywordsParameterNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1896 + def visit_no_keywords_parameter_node(node); end + + # Dispatch enter and leave events for NumberedParametersNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1902 + def visit_numbered_parameters_node(node); end + + # Dispatch enter and leave events for NumberedReferenceReadNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1908 + def visit_numbered_reference_read_node(node); end + + # Dispatch enter and leave events for OptionalKeywordParameterNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1914 + def visit_optional_keyword_parameter_node(node); end + + # Dispatch enter and leave events for OptionalParameterNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1920 + def visit_optional_parameter_node(node); end + + # Dispatch enter and leave events for OrNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1926 + def visit_or_node(node); end + + # Dispatch enter and leave events for ParametersNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1932 + def visit_parameters_node(node); end + + # Dispatch enter and leave events for ParenthesesNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1938 + def visit_parentheses_node(node); end + + # Dispatch enter and leave events for PinnedExpressionNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1944 + def visit_pinned_expression_node(node); end + + # Dispatch enter and leave events for PinnedVariableNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1950 + def visit_pinned_variable_node(node); end + + # Dispatch enter and leave events for PostExecutionNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1956 + def visit_post_execution_node(node); end + + # Dispatch enter and leave events for PreExecutionNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1962 + def visit_pre_execution_node(node); end + + # Dispatch enter and leave events for ProgramNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1968 + def visit_program_node(node); end + + # Dispatch enter and leave events for RangeNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1974 + def visit_range_node(node); end + + # Dispatch enter and leave events for RationalNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1980 + def visit_rational_node(node); end + + # Dispatch enter and leave events for RedoNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1986 + def visit_redo_node(node); end + + # Dispatch enter and leave events for RegularExpressionNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1992 + def visit_regular_expression_node(node); end + + # Dispatch enter and leave events for RequiredKeywordParameterNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:1998 + def visit_required_keyword_parameter_node(node); end + + # Dispatch enter and leave events for RequiredParameterNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2004 + def visit_required_parameter_node(node); end + + # Dispatch enter and leave events for RescueModifierNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2010 + def visit_rescue_modifier_node(node); end + + # Dispatch enter and leave events for RescueNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2016 + def visit_rescue_node(node); end + + # Dispatch enter and leave events for RestParameterNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2022 + def visit_rest_parameter_node(node); end + + # Dispatch enter and leave events for RetryNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2028 + def visit_retry_node(node); end + + # Dispatch enter and leave events for ReturnNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2034 + def visit_return_node(node); end + + # Dispatch enter and leave events for SelfNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2040 + def visit_self_node(node); end + + # Dispatch enter and leave events for SingletonClassNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2046 + def visit_singleton_class_node(node); end + + # Dispatch enter and leave events for SourceEncodingNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2052 + def visit_source_encoding_node(node); end + + # Dispatch enter and leave events for SourceFileNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2058 + def visit_source_file_node(node); end + + # Dispatch enter and leave events for SourceLineNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2064 + def visit_source_line_node(node); end + + # Dispatch enter and leave events for SplatNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2070 + def visit_splat_node(node); end + + # Dispatch enter and leave events for StatementsNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2076 + def visit_statements_node(node); end + + # Dispatch enter and leave events for StringNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2082 + def visit_string_node(node); end + + # Dispatch enter and leave events for SuperNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2088 + def visit_super_node(node); end + + # Dispatch enter and leave events for SymbolNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2094 + def visit_symbol_node(node); end + + # Dispatch enter and leave events for TrueNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2100 + def visit_true_node(node); end + + # Dispatch enter and leave events for UndefNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2106 + def visit_undef_node(node); end + + # Dispatch enter and leave events for UnlessNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2112 + def visit_unless_node(node); end + + # Dispatch enter and leave events for UntilNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2118 + def visit_until_node(node); end + + # Dispatch enter and leave events for WhenNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2124 + def visit_when_node(node); end + + # Dispatch enter and leave events for WhileNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2130 + def visit_while_node(node); end + + # Dispatch enter and leave events for XStringNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2136 + def visit_x_string_node(node); end + + # Dispatch enter and leave events for YieldNode nodes. + # + # source://prism-0.24.0/lib/prism/dispatcher.rb:2142 + 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-0.24.0/lib/prism/dot_visitor.rb:13 +class Prism::DotVisitor < ::Prism::Visitor + # Initialize a new dot visitor. + # + # @return [DotVisitor] a new instance of DotVisitor + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:105 + def initialize; end + + # The digraph that is being built. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:102 + def digraph; end + + # Convert this visitor into a graphviz dot graph string. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:110 + def to_dot; end + + # Visit a AliasGlobalVariableNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:115 + def visit_alias_global_variable_node(node); end + + # Visit a AliasMethodNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:140 + def visit_alias_method_node(node); end + + # Visit a AlternationPatternNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:165 + def visit_alternation_pattern_node(node); end + + # Visit a AndNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:190 + def visit_and_node(node); end + + # Visit a ArgumentsNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:215 + def visit_arguments_node(node); end + + # Visit a ArrayNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:245 + def visit_array_node(node); end + + # Visit a ArrayPatternNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:285 + def visit_array_pattern_node(node); end + + # Visit a AssocNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:347 + def visit_assoc_node(node); end + + # Visit a AssocSplatNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:374 + def visit_assoc_splat_node(node); end + + # Visit a BackReferenceReadNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:397 + def visit_back_reference_read_node(node); end + + # Visit a BeginNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:414 + def visit_begin_node(node); end + + # Visit a BlockArgumentNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:462 + def visit_block_argument_node(node); end + + # Visit a BlockLocalVariableNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:485 + def visit_block_local_variable_node(node); end + + # Visit a BlockNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:505 + def visit_block_node(node); end + + # Visit a BlockParameterNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:540 + def visit_block_parameter_node(node); end + + # Visit a BlockParametersNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:568 + def visit_block_parameters_node(node); end + + # Visit a BreakNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:611 + def visit_break_node(node); end + + # Visit a CallAndWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:634 + def visit_call_and_write_node(node); end + + # Visit a CallNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:680 + def visit_call_node(node); end + + # Visit a CallOperatorWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:738 + def visit_call_operator_write_node(node); end + + # Visit a CallOrWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:787 + def visit_call_or_write_node(node); end + + # Visit a CallTargetNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:833 + def visit_call_target_node(node); end + + # Visit a CapturePatternNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:863 + def visit_capture_pattern_node(node); end + + # Visit a CaseMatchNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:888 + def visit_case_match_node(node); end + + # Visit a CaseNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:933 + def visit_case_node(node); end + + # Visit a ClassNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:978 + def visit_class_node(node); end + + # Visit a ClassVariableAndWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1025 + def visit_class_variable_and_write_node(node); end + + # Visit a ClassVariableOperatorWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1052 + def visit_class_variable_operator_write_node(node); end + + # Visit a ClassVariableOrWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1082 + def visit_class_variable_or_write_node(node); end + + # Visit a ClassVariableReadNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1109 + def visit_class_variable_read_node(node); end + + # Visit a ClassVariableTargetNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1126 + def visit_class_variable_target_node(node); end + + # Visit a ClassVariableWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1143 + def visit_class_variable_write_node(node); end + + # Visit a ConstantAndWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1172 + def visit_constant_and_write_node(node); end + + # Visit a ConstantOperatorWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1199 + def visit_constant_operator_write_node(node); end + + # Visit a ConstantOrWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1229 + def visit_constant_or_write_node(node); end + + # Visit a ConstantPathAndWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1256 + def visit_constant_path_and_write_node(node); end + + # Visit a ConstantPathNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1281 + def visit_constant_path_node(node); end + + # Visit a ConstantPathOperatorWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1308 + def visit_constant_path_operator_write_node(node); end + + # Visit a ConstantPathOrWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1336 + def visit_constant_path_or_write_node(node); end + + # Visit a ConstantPathTargetNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1361 + def visit_constant_path_target_node(node); end + + # Visit a ConstantPathWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1388 + def visit_constant_path_write_node(node); end + + # Visit a ConstantReadNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1413 + def visit_constant_read_node(node); end + + # Visit a ConstantTargetNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1430 + def visit_constant_target_node(node); end + + # Visit a ConstantWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1447 + def visit_constant_write_node(node); end + + # Visit a DefNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1474 + def visit_def_node(node); end + + # Visit a DefinedNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1543 + def visit_defined_node(node); end + + # Visit a ElseNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1574 + def visit_else_node(node); end + + # Visit a EmbeddedStatementsNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1602 + def visit_embedded_statements_node(node); end + + # Visit a EmbeddedVariableNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1628 + def visit_embedded_variable_node(node); end + + # Visit a EnsureNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1649 + def visit_ensure_node(node); end + + # Visit a FalseNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1675 + def visit_false_node(node); end + + # Visit a FindPatternNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1689 + def visit_find_pattern_node(node); end + + # Visit a FlipFlopNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1740 + def visit_flip_flop_node(node); end + + # Visit a FloatNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1772 + def visit_float_node(node); end + + # Visit a ForNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1786 + def visit_for_node(node); end + + # Visit a ForwardingArgumentsNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1828 + def visit_forwarding_arguments_node(node); end + + # Visit a ForwardingParameterNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1842 + def visit_forwarding_parameter_node(node); end + + # Visit a ForwardingSuperNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1856 + def visit_forwarding_super_node(node); end + + # Visit a GlobalVariableAndWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1876 + def visit_global_variable_and_write_node(node); end + + # Visit a GlobalVariableOperatorWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1903 + def visit_global_variable_operator_write_node(node); end + + # Visit a GlobalVariableOrWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1933 + def visit_global_variable_or_write_node(node); end + + # Visit a GlobalVariableReadNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1960 + def visit_global_variable_read_node(node); end + + # Visit a GlobalVariableTargetNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1977 + def visit_global_variable_target_node(node); end + + # Visit a GlobalVariableWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:1994 + def visit_global_variable_write_node(node); end + + # Visit a HashNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2021 + def visit_hash_node(node); end + + # Visit a HashPatternNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2054 + def visit_hash_pattern_node(node); end + + # Visit a IfNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2103 + def visit_if_node(node); end + + # Visit a ImaginaryNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2148 + def visit_imaginary_node(node); end + + # Visit a ImplicitNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2166 + def visit_implicit_node(node); end + + # Visit a ImplicitRestNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2184 + def visit_implicit_rest_node(node); end + + # Visit a InNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2198 + def visit_in_node(node); end + + # Visit a IndexAndWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2230 + def visit_index_and_write_node(node); end + + # Visit a IndexOperatorWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2283 + def visit_index_operator_write_node(node); end + + # Visit a IndexOrWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2339 + def visit_index_or_write_node(node); end + + # Visit a IndexTargetNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2392 + def visit_index_target_node(node); end + + # Visit a InstanceVariableAndWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2431 + def visit_instance_variable_and_write_node(node); end + + # Visit a InstanceVariableOperatorWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2458 + def visit_instance_variable_operator_write_node(node); end + + # Visit a InstanceVariableOrWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2488 + def visit_instance_variable_or_write_node(node); end + + # Visit a InstanceVariableReadNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2515 + def visit_instance_variable_read_node(node); end + + # Visit a InstanceVariableTargetNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2532 + def visit_instance_variable_target_node(node); end + + # Visit a InstanceVariableWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2549 + def visit_instance_variable_write_node(node); end + + # Visit a IntegerNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2576 + def visit_integer_node(node); end + + # Visit a InterpolatedMatchLastLineNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2593 + def visit_interpolated_match_last_line_node(node); end + + # Visit a InterpolatedRegularExpressionNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2629 + def visit_interpolated_regular_expression_node(node); end + + # Visit a InterpolatedStringNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2665 + def visit_interpolated_string_node(node); end + + # Visit a InterpolatedSymbolNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2702 + def visit_interpolated_symbol_node(node); end + + # Visit a InterpolatedXStringNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2739 + def visit_interpolated_x_string_node(node); end + + # Visit a KeywordHashNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2772 + def visit_keyword_hash_node(node); end + + # Visit a KeywordRestParameterNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2802 + def visit_keyword_rest_parameter_node(node); end + + # Visit a LambdaNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2830 + def visit_lambda_node(node); end + + # Visit a LocalVariableAndWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2868 + def visit_local_variable_and_write_node(node); end + + # Visit a LocalVariableOperatorWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2898 + def visit_local_variable_operator_write_node(node); end + + # Visit a LocalVariableOrWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2931 + def visit_local_variable_or_write_node(node); end + + # Visit a LocalVariableReadNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2961 + def visit_local_variable_read_node(node); end + + # Visit a LocalVariableTargetNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:2981 + def visit_local_variable_target_node(node); end + + # Visit a LocalVariableWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3001 + def visit_local_variable_write_node(node); end + + # Visit a MatchLastLineNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3031 + def visit_match_last_line_node(node); end + + # Visit a MatchPredicateNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3060 + def visit_match_predicate_node(node); end + + # Visit a MatchRequiredNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3085 + def visit_match_required_node(node); end + + # Visit a MatchWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3110 + def visit_match_write_node(node); end + + # Visit a MissingNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3141 + def visit_missing_node(node); end + + # Visit a ModuleNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3155 + def visit_module_node(node); end + + # Visit a MultiTargetNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3191 + def visit_multi_target_node(node); end + + # Visit a MultiWriteNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3247 + def visit_multi_write_node(node); end + + # Visit a NextNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3310 + def visit_next_node(node); end + + # Visit a NilNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3333 + def visit_nil_node(node); end + + # Visit a NoKeywordsParameterNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3347 + def visit_no_keywords_parameter_node(node); end + + # Visit a NumberedParametersNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3367 + def visit_numbered_parameters_node(node); end + + # Visit a NumberedReferenceReadNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3384 + def visit_numbered_reference_read_node(node); end + + # Visit a OptionalKeywordParameterNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3401 + def visit_optional_keyword_parameter_node(node); end + + # Visit a OptionalParameterNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3428 + def visit_optional_parameter_node(node); end + + # Visit a OrNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3458 + def visit_or_node(node); end + + # Visit a ParametersNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3483 + def visit_parameters_node(node); end + + # Visit a ParenthesesNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3567 + def visit_parentheses_node(node); end + + # Visit a PinnedExpressionNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3593 + def visit_pinned_expression_node(node); end + + # Visit a PinnedVariableNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3620 + def visit_pinned_variable_node(node); end + + # Visit a PostExecutionNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3641 + def visit_post_execution_node(node); end + + # Visit a PreExecutionNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3670 + def visit_pre_execution_node(node); end + + # Visit a ProgramNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3699 + def visit_program_node(node); end + + # Visit a RangeNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3720 + def visit_range_node(node); end + + # Visit a RationalNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3752 + def visit_rational_node(node); end + + # Visit a RedoNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3770 + def visit_redo_node(node); end + + # Visit a RegularExpressionNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3784 + def visit_regular_expression_node(node); end + + # Visit a RequiredKeywordParameterNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3813 + def visit_required_keyword_parameter_node(node); end + + # Visit a RequiredParameterNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3836 + def visit_required_parameter_node(node); end + + # Visit a RescueModifierNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3856 + def visit_rescue_modifier_node(node); end + + # Visit a RescueNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3881 + def visit_rescue_node(node); end + + # Visit a RestParameterNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3934 + def visit_rest_parameter_node(node); end + + # Visit a RetryNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3962 + def visit_retry_node(node); end + + # Visit a ReturnNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3976 + def visit_return_node(node); end + + # Visit a SelfNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:3999 + def visit_self_node(node); end + + # Visit a SingletonClassNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4013 + def visit_singleton_class_node(node); end + + # Visit a SourceEncodingNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4049 + def visit_source_encoding_node(node); end + + # Visit a SourceFileNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4063 + def visit_source_file_node(node); end + + # Visit a SourceLineNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4080 + def visit_source_line_node(node); end + + # Visit a SplatNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4094 + def visit_splat_node(node); end + + # Visit a StatementsNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4117 + def visit_statements_node(node); end + + # Visit a StringNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4144 + def visit_string_node(node); end + + # Visit a SuperNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4177 + def visit_super_node(node); end + + # Visit a SymbolNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4216 + def visit_symbol_node(node); end + + # Visit a TrueNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4251 + def visit_true_node(node); end + + # Visit a UndefNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4265 + def visit_undef_node(node); end + + # Visit a UnlessNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4295 + def visit_unless_node(node); end + + # Visit a UntilNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4338 + def visit_until_node(node); end + + # Visit a WhenNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4373 + def visit_when_node(node); end + + # Visit a WhileNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4409 + def visit_while_node(node); end + + # Visit a XStringNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4444 + def visit_x_string_node(node); end + + # Visit a YieldNode node. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4473 + def visit_yield_node(node); end + + private + + # Inspect a node that has arguments_node_flags flags to display the flags as a + # comma-separated list. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4519 + 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-0.24.0/lib/prism/dot_visitor.rb:4527 + 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-0.24.0/lib/prism/dot_visitor.rb:4535 + 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-0.24.0/lib/prism/dot_visitor.rb:4546 + 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-0.24.0/lib/prism/dot_visitor.rb:4555 + def integer_base_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-0.24.0/lib/prism/dot_visitor.rb:4566 + def keyword_hash_node_flags_inspect(node); end + + # Inspect a location to display the start and end line and column numbers. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4513 + def location_inspect(location); end + + # Inspect a node that has loop_flags flags to display the flags as a + # comma-separated list. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4574 + def loop_flags_inspect(node); end + + # Generate a unique node ID for a node throughout the digraph. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4508 + def node_id(node); end + + # Inspect a node that has parameter_flags flags to display the flags as a + # comma-separated list. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4582 + def parameter_flags_inspect(node); end + + # Inspect a node that has range_flags flags to display the flags as a + # comma-separated list. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4590 + 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-0.24.0/lib/prism/dot_visitor.rb:4598 + def regular_expression_flags_inspect(node); end + + # Inspect a node that has string_flags flags to display the flags as a + # comma-separated list. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:4616 + 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-0.24.0/lib/prism/dot_visitor.rb:4626 + def symbol_flags_inspect(node); end +end + +# source://prism-0.24.0/lib/prism/dot_visitor.rb:58 +class Prism::DotVisitor::Digraph + # @return [Digraph] a new instance of Digraph + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:61 + def initialize; end + + # source://prism-0.24.0/lib/prism/dot_visitor.rb:75 + def edge(value); end + + # Returns the value of attribute edges. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:59 + def edges; end + + # source://prism-0.24.0/lib/prism/dot_visitor.rb:67 + def node(value); end + + # Returns the value of attribute nodes. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:59 + def nodes; end + + # source://prism-0.24.0/lib/prism/dot_visitor.rb:79 + def to_dot; end + + # source://prism-0.24.0/lib/prism/dot_visitor.rb:71 + def waypoint(value); end + + # Returns the value of attribute waypoints. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:59 + def waypoints; end +end + +# source://prism-0.24.0/lib/prism/dot_visitor.rb:14 +class Prism::DotVisitor::Field + # @return [Field] a new instance of Field + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:17 + def initialize(name, value, port); end + + # Returns the value of attribute name. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:15 + def name; end + + # Returns the value of attribute port. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:15 + def port; end + + # source://prism-0.24.0/lib/prism/dot_visitor.rb:23 + def to_dot; end + + # Returns the value of attribute value. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:15 + def value; end +end + +# source://prism-0.24.0/lib/prism/dot_visitor.rb:32 +class Prism::DotVisitor::Table + # @return [Table] a new instance of Table + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:35 + def initialize(name); end + + # source://prism-0.24.0/lib/prism/dot_visitor.rb:40 + def field(name, value = T.unsafe(nil), port: T.unsafe(nil)); end + + # Returns the value of attribute fields. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:33 + def fields; end + + # Returns the value of attribute name. + # + # source://prism-0.24.0/lib/prism/dot_visitor.rb:33 + def name; end + + # source://prism-0.24.0/lib/prism/dot_visitor.rb:44 + def to_dot; end +end + +# Represents an `else` clause in a `case`, `if`, or `unless` statement. +# +# if a then b else c end +# ^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:6290 +class Prism::ElseNode < ::Prism::Node + # def initialize: (Location else_keyword_loc, StatementsNode? statements, Location? end_keyword_loc, Location location) -> void + # + # @return [ElseNode] a new instance of ElseNode + # + # source://prism-0.24.0/lib/prism/node.rb:6292 + def initialize(source, else_keyword_loc, statements, end_keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:6302 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6307 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:6319 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6312 + def compact_child_nodes; end + + # def copy: (**params) -> ElseNode + # + # source://prism-0.24.0/lib/prism/node.rb:6324 + sig { params(params: T.untyped).returns(Prism::ElseNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6307 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { else_keyword_loc: Location, statements: StatementsNode?, end_keyword_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:6338 + def deconstruct_keys(keys); end + + # def else_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6365 + sig { returns(String) } + def else_keyword; end + + # attr_reader else_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:6343 + sig { returns(Prism::Location) } + def else_keyword_loc; end + + # def end_keyword: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:6370 + sig { returns(T.nilable(String)) } + def end_keyword; end + + # attr_reader end_keyword_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:6352 + sig { returns(T.nilable(Prism::Location)) } + def end_keyword_loc; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6375 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:6349 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6402 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6412 + def type; end + end +end + +# EmbDocComment objects correspond to comments that are surrounded by =begin +# and =end. +# +# source://prism-0.24.0/lib/prism/parse_result.rb:290 +class Prism::EmbDocComment < ::Prism::Comment + # Returns a string representation of this comment. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:297 + def inspect; end + + # This can only be true for inline comments. + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/parse_result.rb:292 + def trailing?; end +end + +# Represents an interpolated set of statements. +# +# "foo #{bar}" +# ^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:6421 +class Prism::EmbeddedStatementsNode < ::Prism::Node + # def initialize: (Location opening_loc, StatementsNode? statements, Location closing_loc, Location location) -> void + # + # @return [EmbeddedStatementsNode] a new instance of EmbeddedStatementsNode + # + # source://prism-0.24.0/lib/prism/node.rb:6423 + def initialize(source, opening_loc, statements, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:6433 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6438 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6495 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:6483 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:6450 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6443 + def compact_child_nodes; end + + # def copy: (**params) -> EmbeddedStatementsNode + # + # source://prism-0.24.0/lib/prism/node.rb:6455 + sig { params(params: T.untyped).returns(Prism::EmbeddedStatementsNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6438 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { opening_loc: Location, statements: StatementsNode?, closing_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:6469 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6500 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6490 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:6474 + sig { returns(Prism::Location) } + def opening_loc; end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:6480 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6527 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6537 + def type; end + end +end + +# Represents an interpolated variable. +# +# "foo #@bar" +# ^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:6546 +class Prism::EmbeddedVariableNode < ::Prism::Node + # def initialize: (Location operator_loc, Node variable, Location location) -> void + # + # @return [EmbeddedVariableNode] a new instance of EmbeddedVariableNode + # + # source://prism-0.24.0/lib/prism/node.rb:6548 + def initialize(source, operator_loc, variable, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:6557 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6562 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:6572 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6567 + def compact_child_nodes; end + + # def copy: (**params) -> EmbeddedVariableNode + # + # source://prism-0.24.0/lib/prism/node.rb:6577 + sig { params(params: T.untyped).returns(Prism::EmbeddedVariableNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6562 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { operator_loc: Location, variable: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:6590 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6610 + def inspect(inspector = T.unsafe(nil)); end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6605 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:6595 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6632 + def type; end + + # attr_reader variable: Node + # + # source://prism-0.24.0/lib/prism/node.rb:6601 + sig { returns(Prism::Node) } + def variable; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6642 + def type; end + end +end + +# Flags for nodes that have unescaped content. +# +# source://prism-0.24.0/lib/prism/node.rb:19268 +module Prism::EncodingFlags; end + +# internal bytes forced the encoding to binary +# +# source://prism-0.24.0/lib/prism/node.rb:19273 +Prism::EncodingFlags::FORCED_BINARY_ENCODING = T.let(T.unsafe(nil), Integer) + +# internal bytes forced the encoding to UTF-8 +# +# source://prism-0.24.0/lib/prism/node.rb:19270 +Prism::EncodingFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) + +# Represents an `ensure` clause in a `begin` statement. +# +# begin +# foo +# ensure +# ^^^^^^ +# bar +# end +# +# source://prism-0.24.0/lib/prism/node.rb:6655 +class Prism::EnsureNode < ::Prism::Node + # def initialize: (Location ensure_keyword_loc, StatementsNode? statements, Location end_keyword_loc, Location location) -> void + # + # @return [EnsureNode] a new instance of EnsureNode + # + # source://prism-0.24.0/lib/prism/node.rb:6657 + def initialize(source, ensure_keyword_loc, statements, end_keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:6667 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6672 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:6684 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6677 + def compact_child_nodes; end + + # def copy: (**params) -> EnsureNode + # + # source://prism-0.24.0/lib/prism/node.rb:6689 + sig { params(params: T.untyped).returns(Prism::EnsureNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6672 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { ensure_keyword_loc: Location, statements: StatementsNode?, end_keyword_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:6703 + def deconstruct_keys(keys); end + + # def end_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6729 + sig { returns(String) } + def end_keyword; end + + # attr_reader end_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:6717 + sig { returns(Prism::Location) } + def end_keyword_loc; end + + # def ensure_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6724 + sig { returns(String) } + def ensure_keyword; end + + # attr_reader ensure_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:6708 + sig { returns(Prism::Location) } + def ensure_keyword_loc; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6734 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:6714 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6761 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6771 + def type; end + end +end + +# Represents the use of the literal `false` keyword. +# +# false +# ^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:6780 +class Prism::FalseNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [FalseNode] a new instance of FalseNode + # + # source://prism-0.24.0/lib/prism/node.rb:6782 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:6789 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6794 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:6804 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6799 + def compact_child_nodes; end + + # def copy: (**params) -> FalseNode + # + # source://prism-0.24.0/lib/prism/node.rb:6809 + sig { params(params: T.untyped).returns(Prism::FalseNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6794 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:6820 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6826 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6845 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:6855 + def type; end + end +end + +# Represents a find pattern in pattern matching. +# +# foo in *bar, baz, *qux +# ^^^^^^^^^^^^^^^ +# +# foo in [*bar, baz, *qux] +# ^^^^^^^^^^^^^^^^^ +# +# foo in Foo(*bar, baz, *qux) +# ^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:6870 +class Prism::FindPatternNode < ::Prism::Node + # def initialize: (Node? constant, Node left, Array[Node] requireds, Node right, Location? opening_loc, Location? closing_loc, Location location) -> void + # + # @return [FindPatternNode] a new instance of FindPatternNode + # + # source://prism-0.24.0/lib/prism/node.rb:6872 + def initialize(source, constant, left, requireds, right, opening_loc, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:6885 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6890 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:6974 + sig { returns(T.nilable(String)) } + def closing; end + + # attr_reader closing_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:6956 + sig { returns(T.nilable(Prism::Location)) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:6905 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6895 + def compact_child_nodes; end + + # attr_reader constant: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:6932 + sig { returns(T.nilable(Prism::Node)) } + def constant; end + + # def copy: (**params) -> FindPatternNode + # + # source://prism-0.24.0/lib/prism/node.rb:6910 + sig { params(params: T.untyped).returns(Prism::FindPatternNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6890 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { constant: Node?, left: Node, requireds: Array[Node], right: Node, opening_loc: Location?, closing_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:6927 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:6979 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader left: Node + # + # source://prism-0.24.0/lib/prism/node.rb:6935 + sig { returns(Prism::Node) } + def left; end + + # def opening: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:6969 + sig { returns(T.nilable(String)) } + def opening; end + + # attr_reader opening_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:6944 + sig { returns(T.nilable(Prism::Location)) } + def opening_loc; end + + # attr_reader requireds: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:6938 + sig { returns(T::Array[Prism::Node]) } + def requireds; end + + # attr_reader right: Node + # + # source://prism-0.24.0/lib/prism/node.rb:6941 + sig { returns(Prism::Node) } + def right; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7011 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7021 + def type; end + end +end + +# Represents the use of the `..` or `...` operators to create flip flops. +# +# baz if foo .. bar +# ^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:7030 +class Prism::FlipFlopNode < ::Prism::Node + # def initialize: (Integer flags, Node? left, Node? right, Location operator_loc, Location location) -> void + # + # @return [FlipFlopNode] a new instance of FlipFlopNode + # + # source://prism-0.24.0/lib/prism/node.rb:7032 + def initialize(source, flags, left, right, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:7043 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7048 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:7061 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7053 + def compact_child_nodes; end + + # def copy: (**params) -> FlipFlopNode + # + # source://prism-0.24.0/lib/prism/node.rb:7066 + sig { params(params: T.untyped).returns(Prism::FlipFlopNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7048 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, left: Node?, right: Node?, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:7081 + def deconstruct_keys(keys); end + + # def exclude_end?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:7103 + sig { returns(T::Boolean) } + def exclude_end?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7113 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader left: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:7090 + sig { returns(T.nilable(Prism::Node)) } + def left; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7108 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:7096 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader right: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:7093 + sig { returns(T.nilable(Prism::Node)) } + def right; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7147 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:7086 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7157 + def type; end + end +end + +# Represents a floating point number literal. +# +# 1.0 +# ^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:7166 +class Prism::FloatNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [FloatNode] a new instance of FloatNode + # + # source://prism-0.24.0/lib/prism/node.rb:7168 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:7175 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7180 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:7190 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7185 + def compact_child_nodes; end + + # def copy: (**params) -> FloatNode + # + # source://prism-0.24.0/lib/prism/node.rb:7195 + sig { params(params: T.untyped).returns(Prism::FloatNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7180 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:7206 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7212 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7231 + def type; end + + # Returns the value of the node as a Ruby Float. + # + # source://prism-0.24.0/lib/prism/node_ext.rb:62 + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7241 + def type; end + end +end + +# Represents the use of the `for` keyword. +# +# for i in a end +# ^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:7250 +class Prism::ForNode < ::Prism::Node + # def initialize: (Node index, Node collection, StatementsNode? statements, Location for_keyword_loc, Location in_keyword_loc, Location? do_keyword_loc, Location end_keyword_loc, Location location) -> void + # + # @return [ForNode] a new instance of ForNode + # + # source://prism-0.24.0/lib/prism/node.rb:7252 + def initialize(source, index, collection, statements, for_keyword_loc, in_keyword_loc, do_keyword_loc, end_keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:7266 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7271 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # attr_reader collection: Node + # + # source://prism-0.24.0/lib/prism/node.rb:7316 + sig { returns(Prism::Node) } + def collection; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:7285 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7276 + def compact_child_nodes; end + + # def copy: (**params) -> ForNode + # + # source://prism-0.24.0/lib/prism/node.rb:7290 + sig { params(params: T.untyped).returns(Prism::ForNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7271 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { index: Node, collection: Node, statements: StatementsNode?, for_keyword_loc: Location, in_keyword_loc: Location, do_keyword_loc: Location?, end_keyword_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:7308 + def deconstruct_keys(keys); end + + # def do_keyword: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:7363 + sig { returns(T.nilable(String)) } + def do_keyword; end + + # attr_reader do_keyword_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:7334 + sig { returns(T.nilable(Prism::Location)) } + def do_keyword_loc; end + + # def end_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7368 + sig { returns(String) } + def end_keyword; end + + # attr_reader end_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:7346 + sig { returns(Prism::Location) } + def end_keyword_loc; end + + # def for_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7353 + sig { returns(String) } + def for_keyword; end + + # attr_reader for_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:7322 + sig { returns(Prism::Location) } + def for_keyword_loc; end + + # def in_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7358 + sig { returns(String) } + def in_keyword; end + + # attr_reader in_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:7328 + sig { returns(Prism::Location) } + def in_keyword_loc; end + + # attr_reader index: Node + # + # source://prism-0.24.0/lib/prism/node.rb:7313 + sig { returns(Prism::Node) } + def index; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7373 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:7319 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7406 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7416 + def type; end + end +end + +# Represents forwarding all arguments to this method to another method. +# +# def foo(...) +# bar(...) +# ^^^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:7427 +class Prism::ForwardingArgumentsNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [ForwardingArgumentsNode] a new instance of ForwardingArgumentsNode + # + # source://prism-0.24.0/lib/prism/node.rb:7429 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:7436 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7441 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:7451 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7446 + def compact_child_nodes; end + + # def copy: (**params) -> ForwardingArgumentsNode + # + # source://prism-0.24.0/lib/prism/node.rb:7456 + sig { params(params: T.untyped).returns(Prism::ForwardingArgumentsNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7441 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:7467 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7473 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7492 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7502 + def type; end + end +end + +# Represents the use of the forwarding parameter in a method, block, or lambda declaration. +# +# def foo(...) +# ^^^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:7512 +class Prism::ForwardingParameterNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [ForwardingParameterNode] a new instance of ForwardingParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:7514 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:7521 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7526 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:7536 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7531 + def compact_child_nodes; end + + # def copy: (**params) -> ForwardingParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:7541 + sig { params(params: T.untyped).returns(Prism::ForwardingParameterNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7526 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:7552 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7558 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7577 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7587 + def type; end + end +end + +# Represents the use of the `super` keyword without parentheses or arguments. +# +# super +# ^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:7596 +class Prism::ForwardingSuperNode < ::Prism::Node + # def initialize: (BlockNode? block, Location location) -> void + # + # @return [ForwardingSuperNode] a new instance of ForwardingSuperNode + # + # source://prism-0.24.0/lib/prism/node.rb:7598 + def initialize(source, block, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:7606 + def accept(visitor); end + + # attr_reader block: BlockNode? + # + # source://prism-0.24.0/lib/prism/node.rb:7645 + sig { returns(T.nilable(Prism::BlockNode)) } + def block; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7611 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:7623 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7616 + def compact_child_nodes; end + + # def copy: (**params) -> ForwardingSuperNode + # + # source://prism-0.24.0/lib/prism/node.rb:7628 + sig { params(params: T.untyped).returns(Prism::ForwardingSuperNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7611 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { block: BlockNode?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:7640 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7649 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7674 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7684 + def type; end + end +end + +# Represents the use of the `&&=` operator for assignment to a global variable. +# +# $target &&= value +# ^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:7693 +class Prism::GlobalVariableAndWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Location operator_loc, Node value, Location location) -> void + # + # @return [GlobalVariableAndWriteNode] a new instance of GlobalVariableAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:7695 + def initialize(source, name, name_loc, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:7706 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7711 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:7721 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7716 + def compact_child_nodes; end + + # def copy: (**params) -> GlobalVariableAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:7726 + sig { params(params: T.untyped).returns(Prism::GlobalVariableAndWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7711 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:7741 + def deconstruct_keys(keys); end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:161 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7770 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7746 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:7749 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7765 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:7755 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7794 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:7761 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7804 + def type; end + end +end + +# Represents assigning to a global variable using an operator that isn't `=`. +# +# $target += value +# ^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:7813 +class Prism::GlobalVariableOperatorWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Location operator_loc, Node value, Symbol operator, Location location) -> void + # + # @return [GlobalVariableOperatorWriteNode] a new instance of GlobalVariableOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:7815 + def initialize(source, name, name_loc, operator_loc, value, operator, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:7827 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7832 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:7842 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7837 + def compact_child_nodes; end + + # def copy: (**params) -> GlobalVariableOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:7847 + sig { params(params: T.untyped).returns(Prism::GlobalVariableOperatorWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7832 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, operator_loc: Location, value: Node, operator: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:7863 + def deconstruct_keys(keys); end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:173 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:7890 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7868 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:7871 + sig { returns(Prism::Location) } + def name_loc; end + + # attr_reader operator: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7886 + sig { returns(Symbol) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:7877 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7915 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:7883 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7925 + def type; end + end +end + +# Represents the use of the `||=` operator for assignment to a global variable. +# +# $target ||= value +# ^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:7934 +class Prism::GlobalVariableOrWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Location operator_loc, Node value, Location location) -> void + # + # @return [GlobalVariableOrWriteNode] a new instance of GlobalVariableOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:7936 + def initialize(source, name, name_loc, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:7947 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7952 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:7962 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7957 + def compact_child_nodes; end + + # def copy: (**params) -> GlobalVariableOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:7967 + sig { params(params: T.untyped).returns(Prism::GlobalVariableOrWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:7952 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:7982 + def deconstruct_keys(keys); end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:167 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8011 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:7987 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:7990 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8006 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:7996 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8035 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:8002 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8045 + def type; end + end +end + +# Represents referencing a global variable. +# +# $foo +# ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:8054 +class Prism::GlobalVariableReadNode < ::Prism::Node + # def initialize: (Symbol name, Location location) -> void + # + # @return [GlobalVariableReadNode] a new instance of GlobalVariableReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:8056 + def initialize(source, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:8064 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8069 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:8079 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8074 + def compact_child_nodes; end + + # def copy: (**params) -> GlobalVariableReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:8084 + sig { params(params: T.untyped).returns(Prism::GlobalVariableReadNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8069 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:8096 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8109 + def inspect(inspector = T.unsafe(nil)); end + + # The name of the global variable, which is a `$` followed by an [identifier](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#identifier). Alternatively, it can be one of the special global variables designated by a symbol. + # + # $foo # name `:$foo` + # + # $_Test # name `:$_Test` + # + # source://prism-0.24.0/lib/prism/node.rb:8105 + sig { returns(Symbol) } + def name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8129 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8139 + def type; end + end +end + +# Represents writing to a global variable in a context that doesn't have an explicit value. +# +# $foo, $bar = baz +# ^^^^ ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:8148 +class Prism::GlobalVariableTargetNode < ::Prism::Node + # def initialize: (Symbol name, Location location) -> void + # + # @return [GlobalVariableTargetNode] a new instance of GlobalVariableTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:8150 + def initialize(source, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:8158 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8163 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:8173 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8168 + def compact_child_nodes; end + + # def copy: (**params) -> GlobalVariableTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:8178 + sig { params(params: T.untyped).returns(Prism::GlobalVariableTargetNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8163 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:8190 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8199 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8195 + sig { returns(Symbol) } + def name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8219 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8229 + def type; end + end +end + +# Represents writing to a global variable. +# +# $foo = 1 +# ^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:8238 +class Prism::GlobalVariableWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Node value, Location operator_loc, Location location) -> void + # + # @return [GlobalVariableWriteNode] a new instance of GlobalVariableWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:8240 + def initialize(source, name, name_loc, value, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:8251 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8256 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:8266 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8261 + def compact_child_nodes; end + + # def copy: (**params) -> GlobalVariableWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:8271 + sig { params(params: T.untyped).returns(Prism::GlobalVariableWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8256 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, value: Node, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:8286 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8315 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8291 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:8294 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8310 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:8303 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8339 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:8300 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8349 + def type; end + end +end + +# Represents a hash literal. +# +# { a => b } +# ^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:8358 +class Prism::HashNode < ::Prism::Node + # def initialize: (Location opening_loc, Array[Node] elements, Location closing_loc, Location location) -> void + # + # @return [HashNode] a new instance of HashNode + # + # source://prism-0.24.0/lib/prism/node.rb:8360 + def initialize(source, opening_loc, elements, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:8370 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8375 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8442 + sig { returns(String) } + def closing; end + + # The location of the closing brace. + # + # { a => b } + # ^ + # + # source://prism-0.24.0/lib/prism/node.rb:8430 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:8385 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8380 + def compact_child_nodes; end + + # def copy: (**params) -> HashNode + # + # source://prism-0.24.0/lib/prism/node.rb:8390 + sig { params(params: T.untyped).returns(Prism::HashNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8375 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { opening_loc: Location, elements: Array[Node], closing_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:8404 + def deconstruct_keys(keys); end + + # The elements of the hash. These can be either `AssocNode`s or `AssocSplatNode`s. + # + # { a: b } + # ^^^^ + # + # { **foo } + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/node.rb:8424 + sig { returns(T::Array[Prism::Node]) } + def elements; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8447 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8437 + sig { returns(String) } + def opening; end + + # The location of the opening brace. + # + # { a => b } + # ^ + # + # source://prism-0.24.0/lib/prism/node.rb:8412 + sig { returns(Prism::Location) } + def opening_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8469 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8479 + def type; end + end +end + +# Represents a hash pattern in pattern matching. +# +# foo => { a: 1, b: 2 } +# ^^^^^^^^^^^^^^ +# +# foo => { a: 1, b: 2, **c } +# ^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:8491 +class Prism::HashPatternNode < ::Prism::Node + # def initialize: (Node? constant, Array[Node] elements, Node? rest, Location? opening_loc, Location? closing_loc, Location location) -> void + # + # @return [HashPatternNode] a new instance of HashPatternNode + # + # source://prism-0.24.0/lib/prism/node.rb:8493 + def initialize(source, constant, elements, rest, opening_loc, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:8505 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8510 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:8589 + sig { returns(T.nilable(String)) } + def closing; end + + # attr_reader closing_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:8571 + sig { returns(T.nilable(Prism::Location)) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:8524 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8515 + def compact_child_nodes; end + + # attr_reader constant: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:8550 + sig { returns(T.nilable(Prism::Node)) } + def constant; end + + # def copy: (**params) -> HashPatternNode + # + # source://prism-0.24.0/lib/prism/node.rb:8529 + sig { params(params: T.untyped).returns(Prism::HashPatternNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8510 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { constant: Node?, elements: Array[Node], rest: Node?, opening_loc: Location?, closing_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:8545 + def deconstruct_keys(keys); end + + # attr_reader elements: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8553 + sig { returns(T::Array[Prism::Node]) } + def elements; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8594 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:8584 + sig { returns(T.nilable(String)) } + def opening; end + + # attr_reader opening_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:8559 + sig { returns(T.nilable(Prism::Location)) } + def opening_loc; end + + # attr_reader rest: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:8556 + sig { returns(T.nilable(Prism::Node)) } + def rest; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8628 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8638 + def type; end + end +end + +# source://prism-0.24.0/lib/prism/node_ext.rb:35 +module Prism::HeredocQuery + # Returns true if this node was represented as a heredoc in the source code. + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node_ext.rb:37 + def heredoc?; end +end + +# Represents the use of the `if` keyword, either in the block form or the modifier form. +# +# bar if foo +# ^^^^^^^^^^ +# +# if foo then bar end +# ^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:8650 +class Prism::IfNode < ::Prism::Node + # def initialize: (Location? if_keyword_loc, Node predicate, Location? then_keyword_loc, StatementsNode? statements, Node? consequent, Location? end_keyword_loc, Location location) -> void + # + # @return [IfNode] a new instance of IfNode + # + # source://prism-0.24.0/lib/prism/node.rb:8652 + def initialize(source, if_keyword_loc, predicate, then_keyword_loc, statements, consequent, end_keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:8665 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8674 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:8688 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8679 + def compact_child_nodes; end + + # attr_reader consequent: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:8745 + sig { returns(T.nilable(Prism::Node)) } + def consequent; end + + # def copy: (**params) -> IfNode + # + # source://prism-0.24.0/lib/prism/node.rb:8693 + sig { params(params: T.untyped).returns(Prism::IfNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8674 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { if_keyword_loc: Location?, predicate: Node, then_keyword_loc: Location?, statements: StatementsNode?, consequent: Node?, end_keyword_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:8710 + def deconstruct_keys(keys); end + + # def end_keyword: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:8771 + sig { returns(T.nilable(String)) } + def end_keyword; end + + # attr_reader end_keyword_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:8748 + sig { returns(T.nilable(Prism::Location)) } + def end_keyword_loc; end + + # def if_keyword: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:8761 + sig { returns(T.nilable(String)) } + def if_keyword; end + + # attr_reader if_keyword_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:8715 + sig { returns(T.nilable(Prism::Location)) } + def if_keyword_loc; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8776 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader predicate: Node + # + # source://prism-0.24.0/lib/prism/node.rb:8727 + sig { returns(Prism::Node) } + def predicate; end + + # source://prism-0.24.0/lib/prism/node.rb:8669 + def set_newline_flag(newline_marked); end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:8742 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # def then_keyword: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:8766 + sig { returns(T.nilable(String)) } + def then_keyword; end + + # attr_reader then_keyword_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:8730 + sig { returns(T.nilable(Prism::Location)) } + def then_keyword_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8812 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8822 + def type; end + end +end + +# Represents an imaginary number literal. +# +# 1.0i +# ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:8831 +class Prism::ImaginaryNode < ::Prism::Node + # def initialize: (Node numeric, Location location) -> void + # + # @return [ImaginaryNode] a new instance of ImaginaryNode + # + # source://prism-0.24.0/lib/prism/node.rb:8833 + def initialize(source, numeric, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:8841 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8846 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:8856 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8851 + def compact_child_nodes; end + + # def copy: (**params) -> ImaginaryNode + # + # source://prism-0.24.0/lib/prism/node.rb:8861 + sig { params(params: T.untyped).returns(Prism::ImaginaryNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8846 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { numeric: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:8873 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8882 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader numeric: Node + # + # source://prism-0.24.0/lib/prism/node.rb:8878 + sig { returns(Prism::Node) } + def numeric; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8903 + def type; end + + # Returns the value of the node as a Ruby Complex. + # + # source://prism-0.24.0/lib/prism/node_ext.rb:69 + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:8913 + def type; end + end +end + +# Represents a node that is implicitly being added to the tree but doesn't correspond directly to a node in the source. +# +# { foo: } +# ^^^^ +# +# { Foo: } +# ^^^^ +# +# foo in { bar: } +# ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:8928 +class Prism::ImplicitNode < ::Prism::Node + # def initialize: (Node value, Location location) -> void + # + # @return [ImplicitNode] a new instance of ImplicitNode + # + # source://prism-0.24.0/lib/prism/node.rb:8930 + def initialize(source, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:8938 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8943 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:8953 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8948 + def compact_child_nodes; end + + # def copy: (**params) -> ImplicitNode + # + # source://prism-0.24.0/lib/prism/node.rb:8958 + sig { params(params: T.untyped).returns(Prism::ImplicitNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:8943 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:8970 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:8979 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9000 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:8975 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9010 + def type; end + end +end + +# Represents using a trailing comma to indicate an implicit rest parameter. +# +# foo { |bar,| } +# ^ +# +# foo in [bar,] +# ^ +# +# for foo, in bar do end +# ^ +# +# foo, = bar +# ^ +# +# source://prism-0.24.0/lib/prism/node.rb:9028 +class Prism::ImplicitRestNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [ImplicitRestNode] a new instance of ImplicitRestNode + # + # source://prism-0.24.0/lib/prism/node.rb:9030 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:9037 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9042 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:9052 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9047 + def compact_child_nodes; end + + # def copy: (**params) -> ImplicitRestNode + # + # source://prism-0.24.0/lib/prism/node.rb:9057 + sig { params(params: T.untyped).returns(Prism::ImplicitRestNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9042 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:9068 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9074 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9093 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9103 + def type; end + end +end + +# Represents the use of the `in` keyword in a case statement. +# +# case a; in b then c end +# ^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:9112 +class Prism::InNode < ::Prism::Node + # def initialize: (Node pattern, StatementsNode? statements, Location in_loc, Location? then_loc, Location location) -> void + # + # @return [InNode] a new instance of InNode + # + # source://prism-0.24.0/lib/prism/node.rb:9114 + def initialize(source, pattern, statements, in_loc, then_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:9125 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9130 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:9143 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9135 + def compact_child_nodes; end + + # def copy: (**params) -> InNode + # + # source://prism-0.24.0/lib/prism/node.rb:9148 + sig { params(params: T.untyped).returns(Prism::InNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9130 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { pattern: Node, statements: StatementsNode?, in_loc: Location, then_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:9163 + def deconstruct_keys(keys); end + + # def in: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9193 + sig { returns(String) } + def in; end + + # attr_reader in_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:9174 + sig { returns(Prism::Location) } + def in_loc; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9203 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader pattern: Node + # + # source://prism-0.24.0/lib/prism/node.rb:9168 + sig { returns(Prism::Node) } + def pattern; end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:9171 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # def then: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:9198 + sig { returns(T.nilable(String)) } + def then; end + + # attr_reader then_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:9180 + sig { returns(T.nilable(Prism::Location)) } + def then_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9232 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9242 + def type; end + end +end + +# Represents the use of the `&&=` operator on a call to the `[]` method. +# +# foo.bar[baz] &&= value +# ^^^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:9251 +class Prism::IndexAndWriteNode < ::Prism::Node + # def initialize: (Integer flags, Node? receiver, Location? call_operator_loc, Location opening_loc, ArgumentsNode? arguments, Location closing_loc, Node? block, Location operator_loc, Node value, Location location) -> void + # + # @return [IndexAndWriteNode] a new instance of IndexAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:9253 + def initialize(source, flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:9269 + def accept(visitor); end + + # attr_reader arguments: ArgumentsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:9344 + sig { returns(T.nilable(Prism::ArgumentsNode)) } + def arguments; end + + # def attribute_write?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:9376 + sig { returns(T::Boolean) } + def attribute_write?; end + + # attr_reader block: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:9353 + sig { returns(T.nilable(Prism::Node)) } + def block; end + + # def call_operator: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:9386 + sig { returns(T.nilable(String)) } + def call_operator; end + + # attr_reader call_operator_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:9326 + sig { returns(T.nilable(Prism::Location)) } + def call_operator_loc; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9274 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9396 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:9347 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:9289 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9279 + def compact_child_nodes; end + + # def copy: (**params) -> IndexAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:9294 + sig { params(params: T.untyped).returns(Prism::IndexAndWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9274 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, receiver: Node?, call_operator_loc: Location?, opening_loc: Location, arguments: ArgumentsNode?, closing_loc: Location, block: Node?, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:9314 + def deconstruct_keys(keys); end + + # def ignore_visibility?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:9381 + sig { returns(T::Boolean) } + def ignore_visibility?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9406 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9391 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:9338 + sig { returns(Prism::Location) } + def opening_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9401 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:9356 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader receiver: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:9323 + sig { returns(T.nilable(Prism::Node)) } + def receiver; end + + # def safe_navigation?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:9366 + sig { returns(T::Boolean) } + def safe_navigation?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9451 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:9362 + sig { returns(Prism::Node) } + def value; end + + # def variable_call?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:9371 + sig { returns(T::Boolean) } + def variable_call?; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:9319 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9461 + def type; end + end +end + +# Represents the use of an assignment operator on a call to `[]`. +# +# foo.bar[baz] += value +# ^^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:9470 +class Prism::IndexOperatorWriteNode < ::Prism::Node + # def initialize: (Integer flags, Node? receiver, Location? call_operator_loc, Location opening_loc, ArgumentsNode? arguments, Location closing_loc, Node? block, Symbol operator, Location operator_loc, Node value, Location location) -> void + # + # @return [IndexOperatorWriteNode] a new instance of IndexOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:9472 + def initialize(source, flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, operator, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:9489 + def accept(visitor); end + + # attr_reader arguments: ArgumentsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:9565 + sig { returns(T.nilable(Prism::ArgumentsNode)) } + def arguments; end + + # def attribute_write?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:9600 + sig { returns(T::Boolean) } + def attribute_write?; end + + # attr_reader block: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:9574 + sig { returns(T.nilable(Prism::Node)) } + def block; end + + # def call_operator: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:9610 + sig { returns(T.nilable(String)) } + def call_operator; end + + # attr_reader call_operator_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:9547 + sig { returns(T.nilable(Prism::Location)) } + def call_operator_loc; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9494 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9620 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:9568 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:9509 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9499 + def compact_child_nodes; end + + # def copy: (**params) -> IndexOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:9514 + sig { params(params: T.untyped).returns(Prism::IndexOperatorWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9494 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, receiver: Node?, call_operator_loc: Location?, opening_loc: Location, arguments: ArgumentsNode?, closing_loc: Location, block: Node?, operator: Symbol, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:9535 + def deconstruct_keys(keys); end + + # def ignore_visibility?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:9605 + sig { returns(T::Boolean) } + def ignore_visibility?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9625 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9615 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:9559 + sig { returns(Prism::Location) } + def opening_loc; end + + # attr_reader operator: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9577 + sig { returns(Symbol) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:9580 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader receiver: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:9544 + sig { returns(T.nilable(Prism::Node)) } + def receiver; end + + # def safe_navigation?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:9590 + sig { returns(T::Boolean) } + def safe_navigation?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9671 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:9586 + sig { returns(Prism::Node) } + def value; end + + # def variable_call?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:9595 + sig { returns(T::Boolean) } + def variable_call?; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:9540 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9681 + def type; end + end +end + +# Represents the use of the `||=` operator on a call to `[]`. +# +# foo.bar[baz] ||= value +# ^^^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:9690 +class Prism::IndexOrWriteNode < ::Prism::Node + # def initialize: (Integer flags, Node? receiver, Location? call_operator_loc, Location opening_loc, ArgumentsNode? arguments, Location closing_loc, Node? block, Location operator_loc, Node value, Location location) -> void + # + # @return [IndexOrWriteNode] a new instance of IndexOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:9692 + def initialize(source, flags, receiver, call_operator_loc, opening_loc, arguments, closing_loc, block, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:9708 + def accept(visitor); end + + # attr_reader arguments: ArgumentsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:9783 + sig { returns(T.nilable(Prism::ArgumentsNode)) } + def arguments; end + + # def attribute_write?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:9815 + sig { returns(T::Boolean) } + def attribute_write?; end + + # attr_reader block: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:9792 + sig { returns(T.nilable(Prism::Node)) } + def block; end + + # def call_operator: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:9825 + sig { returns(T.nilable(String)) } + def call_operator; end + + # attr_reader call_operator_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:9765 + sig { returns(T.nilable(Prism::Location)) } + def call_operator_loc; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9713 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9835 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:9786 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:9728 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9718 + def compact_child_nodes; end + + # def copy: (**params) -> IndexOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:9733 + sig { params(params: T.untyped).returns(Prism::IndexOrWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9713 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, receiver: Node?, call_operator_loc: Location?, opening_loc: Location, arguments: ArgumentsNode?, closing_loc: Location, block: Node?, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:9753 + def deconstruct_keys(keys); end + + # def ignore_visibility?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:9820 + sig { returns(T::Boolean) } + def ignore_visibility?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9845 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9830 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:9777 + sig { returns(Prism::Location) } + def opening_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:9840 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:9795 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader receiver: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:9762 + sig { returns(T.nilable(Prism::Node)) } + def receiver; end + + # def safe_navigation?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:9805 + sig { returns(T::Boolean) } + def safe_navigation?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9890 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:9801 + sig { returns(Prism::Node) } + def value; end + + # def variable_call?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:9810 + sig { returns(T::Boolean) } + def variable_call?; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:9758 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:9900 + def type; end + end +end + +# Represents assigning to an index. +# +# foo[bar], = 1 +# ^^^^^^^^ +# +# begin +# rescue => foo[bar] +# ^^^^^^^^ +# end +# +# for foo[bar] in baz do end +# ^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:9917 +class Prism::IndexTargetNode < ::Prism::Node + # def initialize: (Integer flags, Node receiver, Location opening_loc, ArgumentsNode? arguments, Location closing_loc, Node? block, Location location) -> void + # + # @return [IndexTargetNode] a new instance of IndexTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:9919 + def initialize(source, flags, receiver, opening_loc, arguments, closing_loc, block, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:9932 + def accept(visitor); end + + # attr_reader arguments: ArgumentsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:9991 + sig { returns(T.nilable(Prism::ArgumentsNode)) } + def arguments; end + + # def attribute_write?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10014 + sig { returns(T::Boolean) } + def attribute_write?; end + + # attr_reader block: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:10000 + sig { returns(T.nilable(Prism::Node)) } + def block; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9937 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10029 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:9994 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:9951 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9942 + def compact_child_nodes; end + + # def copy: (**params) -> IndexTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:9956 + sig { params(params: T.untyped).returns(Prism::IndexTargetNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:9937 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, receiver: Node, opening_loc: Location, arguments: ArgumentsNode?, closing_loc: Location, block: Node?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:9973 + def deconstruct_keys(keys); end + + # def ignore_visibility?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10019 + sig { returns(T::Boolean) } + def ignore_visibility?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10034 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10024 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:9985 + sig { returns(Prism::Location) } + def opening_loc; end + + # attr_reader receiver: Node + # + # source://prism-0.24.0/lib/prism/node.rb:9982 + sig { returns(Prism::Node) } + def receiver; end + + # def safe_navigation?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10004 + sig { returns(T::Boolean) } + def safe_navigation?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10071 + def type; end + + # def variable_call?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10009 + sig { returns(T::Boolean) } + def variable_call?; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:9978 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10081 + def type; end + end +end + +# InlineComment objects are the most common. They correspond to comments in +# the source file like this one that start with #. +# +# source://prism-0.24.0/lib/prism/parse_result.rb:275 +class Prism::InlineComment < ::Prism::Comment + # Returns a string representation of this comment. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:283 + def inspect; end + + # Returns true if this comment happens on the same line as other code and + # false if the comment is by itself. + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/parse_result.rb:278 + sig { override.returns(T::Boolean) } + def trailing?; end +end + +# Represents the use of the `&&=` operator for assignment to an instance variable. +# +# @target &&= value +# ^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:10090 +class Prism::InstanceVariableAndWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Location operator_loc, Node value, Location location) -> void + # + # @return [InstanceVariableAndWriteNode] a new instance of InstanceVariableAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:10092 + def initialize(source, name, name_loc, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:10103 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10108 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:10118 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10113 + def compact_child_nodes; end + + # def copy: (**params) -> InstanceVariableAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:10123 + sig { params(params: T.untyped).returns(Prism::InstanceVariableAndWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10108 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:10138 + def deconstruct_keys(keys); end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:179 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10167 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10143 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:10146 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10162 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:10152 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10191 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:10158 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10201 + def type; end + end +end + +# Represents assigning to an instance variable using an operator that isn't `=`. +# +# @target += value +# ^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:10210 +class Prism::InstanceVariableOperatorWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Location operator_loc, Node value, Symbol operator, Location location) -> void + # + # @return [InstanceVariableOperatorWriteNode] a new instance of InstanceVariableOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:10212 + def initialize(source, name, name_loc, operator_loc, value, operator, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:10224 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10229 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:10239 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10234 + def compact_child_nodes; end + + # def copy: (**params) -> InstanceVariableOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:10244 + sig { params(params: T.untyped).returns(Prism::InstanceVariableOperatorWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10229 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, operator_loc: Location, value: Node, operator: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:10260 + def deconstruct_keys(keys); end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:191 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10287 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10265 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:10268 + sig { returns(Prism::Location) } + def name_loc; end + + # attr_reader operator: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10283 + sig { returns(Symbol) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:10274 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10312 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:10280 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10322 + def type; end + end +end + +# Represents the use of the `||=` operator for assignment to an instance variable. +# +# @target ||= value +# ^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:10331 +class Prism::InstanceVariableOrWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Location operator_loc, Node value, Location location) -> void + # + # @return [InstanceVariableOrWriteNode] a new instance of InstanceVariableOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:10333 + def initialize(source, name, name_loc, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:10344 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10349 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:10359 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10354 + def compact_child_nodes; end + + # def copy: (**params) -> InstanceVariableOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:10364 + sig { params(params: T.untyped).returns(Prism::InstanceVariableOrWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10349 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:10379 + def deconstruct_keys(keys); end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:185 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10408 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10384 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:10387 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10403 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:10393 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10432 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:10399 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10442 + def type; end + end +end + +# Represents referencing an instance variable. +# +# @foo +# ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:10451 +class Prism::InstanceVariableReadNode < ::Prism::Node + # def initialize: (Symbol name, Location location) -> void + # + # @return [InstanceVariableReadNode] a new instance of InstanceVariableReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:10453 + def initialize(source, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:10461 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10466 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:10476 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10471 + def compact_child_nodes; end + + # def copy: (**params) -> InstanceVariableReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:10481 + sig { params(params: T.untyped).returns(Prism::InstanceVariableReadNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10466 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:10493 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10506 + def inspect(inspector = T.unsafe(nil)); end + + # The name of the instance variable, which is a `@` followed by an [identifier](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#identifiers). + # + # @x # name `:@x` + # + # @_test # name `:@_test` + # + # source://prism-0.24.0/lib/prism/node.rb:10502 + sig { returns(Symbol) } + def name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10526 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10536 + def type; end + end +end + +# Represents writing to an instance variable in a context that doesn't have an explicit value. +# +# @foo, @bar = baz +# ^^^^ ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:10545 +class Prism::InstanceVariableTargetNode < ::Prism::Node + # def initialize: (Symbol name, Location location) -> void + # + # @return [InstanceVariableTargetNode] a new instance of InstanceVariableTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:10547 + def initialize(source, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:10555 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10560 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:10570 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10565 + def compact_child_nodes; end + + # def copy: (**params) -> InstanceVariableTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:10575 + sig { params(params: T.untyped).returns(Prism::InstanceVariableTargetNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10560 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:10587 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10596 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10592 + sig { returns(Symbol) } + def name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10616 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10626 + def type; end + end +end + +# Represents writing to an instance variable. +# +# @foo = 1 +# ^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:10635 +class Prism::InstanceVariableWriteNode < ::Prism::Node + # def initialize: (Symbol name, Location name_loc, Node value, Location operator_loc, Location location) -> void + # + # @return [InstanceVariableWriteNode] a new instance of InstanceVariableWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:10637 + def initialize(source, name, name_loc, value, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:10648 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10653 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:10663 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10658 + def compact_child_nodes; end + + # def copy: (**params) -> InstanceVariableWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:10668 + sig { params(params: T.untyped).returns(Prism::InstanceVariableWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10653 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, name_loc: Location, value: Node, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:10683 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10712 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10688 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:10691 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10707 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:10700 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10736 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:10697 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10746 + def type; end + end +end + +# Flags for integer nodes that correspond to the base of the integer. +# +# source://prism-0.24.0/lib/prism/node.rb:19277 +module Prism::IntegerBaseFlags; end + +# 0b prefix +# +# source://prism-0.24.0/lib/prism/node.rb:19279 +Prism::IntegerBaseFlags::BINARY = T.let(T.unsafe(nil), Integer) + +# 0d or no prefix +# +# source://prism-0.24.0/lib/prism/node.rb:19282 +Prism::IntegerBaseFlags::DECIMAL = T.let(T.unsafe(nil), Integer) + +# 0x prefix +# +# source://prism-0.24.0/lib/prism/node.rb:19288 +Prism::IntegerBaseFlags::HEXADECIMAL = T.let(T.unsafe(nil), Integer) + +# 0o or 0 prefix +# +# source://prism-0.24.0/lib/prism/node.rb:19285 +Prism::IntegerBaseFlags::OCTAL = T.let(T.unsafe(nil), Integer) + +# Represents an integer number literal. +# +# 1 +# ^ +# +# source://prism-0.24.0/lib/prism/node.rb:10755 +class Prism::IntegerNode < ::Prism::Node + # def initialize: (Integer flags, Location location) -> void + # + # @return [IntegerNode] a new instance of IntegerNode + # + # source://prism-0.24.0/lib/prism/node.rb:10757 + def initialize(source, flags, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:10765 + def accept(visitor); end + + # def binary?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10807 + sig { returns(T::Boolean) } + def binary?; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10770 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:10780 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10775 + def compact_child_nodes; end + + # def copy: (**params) -> IntegerNode + # + # source://prism-0.24.0/lib/prism/node.rb:10785 + sig { params(params: T.untyped).returns(Prism::IntegerNode) } + def copy(**params); end + + # def decimal?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10812 + sig { returns(T::Boolean) } + def decimal?; end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10770 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:10797 + def deconstruct_keys(keys); end + + # def hexadecimal?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10822 + sig { returns(T::Boolean) } + def hexadecimal?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:10827 + def inspect(inspector = T.unsafe(nil)); end + + # def octal?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10817 + sig { returns(T::Boolean) } + def octal?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10848 + def type; end + + # Returns the value of the node as a Ruby Integer. + # + # source://prism-0.24.0/lib/prism/node_ext.rb:76 + def value; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:10802 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:10858 + def type; end + end +end + +# Represents a regular expression literal that contains interpolation that is being used in the predicate of a conditional to implicitly match against the last line read by an IO object. +# +# if /foo #{bar} baz/ then end +# ^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:10867 +class Prism::InterpolatedMatchLastLineNode < ::Prism::Node + include ::Prism::RegularExpressionOptions + + # def initialize: (Integer flags, Location opening_loc, Array[Node] parts, Location closing_loc, Location location) -> void + # + # @return [InterpolatedMatchLastLineNode] a new instance of InterpolatedMatchLastLineNode + # + # source://prism-0.24.0/lib/prism/node.rb:10869 + def initialize(source, flags, opening_loc, parts, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:10880 + def accept(visitor); end + + # def ascii_8bit?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10970 + sig { returns(T::Boolean) } + def ascii_8bit?; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10890 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11005 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:10938 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:10900 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10895 + def compact_child_nodes; end + + # def copy: (**params) -> InterpolatedMatchLastLineNode + # + # source://prism-0.24.0/lib/prism/node.rb:10905 + sig { params(params: T.untyped).returns(Prism::InterpolatedMatchLastLineNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10890 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, opening_loc: Location, parts: Array[Node], closing_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:10920 + def deconstruct_keys(keys); end + + # def euc_jp?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10965 + sig { returns(T::Boolean) } + def euc_jp?; end + + # def extended?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10950 + sig { returns(T::Boolean) } + def extended?; end + + # def forced_binary_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10990 + sig { returns(T::Boolean) } + def forced_binary_encoding?; end + + # def forced_us_ascii_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10995 + sig { returns(T::Boolean) } + def forced_us_ascii_encoding?; end + + # def forced_utf8_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10985 + sig { returns(T::Boolean) } + def forced_utf8_encoding?; end + + # def ignore_case?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10945 + sig { returns(T::Boolean) } + def ignore_case?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11010 + def inspect(inspector = T.unsafe(nil)); end + + # def multi_line?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10955 + sig { returns(T::Boolean) } + def multi_line?; end + + # def once?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10960 + sig { returns(T::Boolean) } + def once?; end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11000 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:10929 + sig { returns(Prism::Location) } + def opening_loc; end + + # attr_reader parts: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:10935 + sig { returns(T::Array[Prism::Node]) } + def parts; end + + # source://prism-0.24.0/lib/prism/node.rb:10884 + def set_newline_flag(newline_marked); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11034 + def type; end + + # def utf_8?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10980 + sig { returns(T::Boolean) } + def utf_8?; end + + # def windows_31j?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:10975 + sig { returns(T::Boolean) } + def windows_31j?; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:10925 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11044 + def type; end + end +end + +# Represents a regular expression literal that contains interpolation. +# +# /foo #{bar} baz/ +# ^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:11053 +class Prism::InterpolatedRegularExpressionNode < ::Prism::Node + include ::Prism::RegularExpressionOptions + + # def initialize: (Integer flags, Location opening_loc, Array[Node] parts, Location closing_loc, Location location) -> void + # + # @return [InterpolatedRegularExpressionNode] a new instance of InterpolatedRegularExpressionNode + # + # source://prism-0.24.0/lib/prism/node.rb:11055 + def initialize(source, flags, opening_loc, parts, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:11066 + def accept(visitor); end + + # def ascii_8bit?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11156 + sig { returns(T::Boolean) } + def ascii_8bit?; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11076 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11191 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:11124 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:11086 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11081 + def compact_child_nodes; end + + # def copy: (**params) -> InterpolatedRegularExpressionNode + # + # source://prism-0.24.0/lib/prism/node.rb:11091 + sig { params(params: T.untyped).returns(Prism::InterpolatedRegularExpressionNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11076 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, opening_loc: Location, parts: Array[Node], closing_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:11106 + def deconstruct_keys(keys); end + + # def euc_jp?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11151 + sig { returns(T::Boolean) } + def euc_jp?; end + + # def extended?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11136 + sig { returns(T::Boolean) } + def extended?; end + + # def forced_binary_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11176 + sig { returns(T::Boolean) } + def forced_binary_encoding?; end + + # def forced_us_ascii_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11181 + sig { returns(T::Boolean) } + def forced_us_ascii_encoding?; end + + # def forced_utf8_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11171 + sig { returns(T::Boolean) } + def forced_utf8_encoding?; end + + # def ignore_case?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11131 + sig { returns(T::Boolean) } + def ignore_case?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11196 + def inspect(inspector = T.unsafe(nil)); end + + # def multi_line?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11141 + sig { returns(T::Boolean) } + def multi_line?; end + + # def once?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11146 + sig { returns(T::Boolean) } + def once?; end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11186 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:11115 + sig { returns(Prism::Location) } + def opening_loc; end + + # attr_reader parts: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11121 + sig { returns(T::Array[Prism::Node]) } + def parts; end + + # source://prism-0.24.0/lib/prism/node.rb:11070 + def set_newline_flag(newline_marked); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11220 + def type; end + + # def utf_8?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11166 + sig { returns(T::Boolean) } + def utf_8?; end + + # def windows_31j?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11161 + sig { returns(T::Boolean) } + def windows_31j?; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:11111 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11230 + def type; end + end +end + +# Represents a string literal that contains interpolation. +# +# "foo #{bar} baz" +# ^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:11239 +class Prism::InterpolatedStringNode < ::Prism::Node + include ::Prism::HeredocQuery + + # def initialize: (Location? opening_loc, Array[Node] parts, Location? closing_loc, Location location) -> void + # + # @return [InterpolatedStringNode] a new instance of InterpolatedStringNode + # + # source://prism-0.24.0/lib/prism/node.rb:11241 + def initialize(source, opening_loc, parts, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:11251 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11261 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:11328 + sig { returns(T.nilable(String)) } + def closing; end + + # attr_reader closing_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:11310 + sig { returns(T.nilable(Prism::Location)) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:11271 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11266 + def compact_child_nodes; end + + # def copy: (**params) -> InterpolatedStringNode + # + # source://prism-0.24.0/lib/prism/node.rb:11276 + sig { params(params: T.untyped).returns(Prism::InterpolatedStringNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11261 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { opening_loc: Location?, parts: Array[Node], closing_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:11290 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11333 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:11323 + sig { returns(T.nilable(String)) } + def opening; end + + # attr_reader opening_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:11295 + sig { returns(T.nilable(Prism::Location)) } + def opening_loc; end + + # attr_reader parts: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11307 + sig { returns(T::Array[Prism::Node]) } + def parts; end + + # source://prism-0.24.0/lib/prism/node.rb:11255 + def set_newline_flag(newline_marked); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11355 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11365 + def type; end + end +end + +# Represents a symbol literal that contains interpolation. +# +# :"foo #{bar} baz" +# ^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:11374 +class Prism::InterpolatedSymbolNode < ::Prism::Node + # def initialize: (Location? opening_loc, Array[Node] parts, Location? closing_loc, Location location) -> void + # + # @return [InterpolatedSymbolNode] a new instance of InterpolatedSymbolNode + # + # source://prism-0.24.0/lib/prism/node.rb:11376 + def initialize(source, opening_loc, parts, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:11386 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11396 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:11463 + sig { returns(T.nilable(String)) } + def closing; end + + # attr_reader closing_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:11445 + sig { returns(T.nilable(Prism::Location)) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:11406 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11401 + def compact_child_nodes; end + + # def copy: (**params) -> InterpolatedSymbolNode + # + # source://prism-0.24.0/lib/prism/node.rb:11411 + sig { params(params: T.untyped).returns(Prism::InterpolatedSymbolNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11396 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { opening_loc: Location?, parts: Array[Node], closing_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:11425 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11468 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:11458 + sig { returns(T.nilable(String)) } + def opening; end + + # attr_reader opening_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:11430 + sig { returns(T.nilable(Prism::Location)) } + def opening_loc; end + + # attr_reader parts: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11442 + sig { returns(T::Array[Prism::Node]) } + def parts; end + + # source://prism-0.24.0/lib/prism/node.rb:11390 + def set_newline_flag(newline_marked); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11490 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11500 + def type; end + end +end + +# Represents an xstring literal that contains interpolation. +# +# `foo #{bar} baz` +# ^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:11509 +class Prism::InterpolatedXStringNode < ::Prism::Node + include ::Prism::HeredocQuery + + # def initialize: (Location opening_loc, Array[Node] parts, Location closing_loc, Location location) -> void + # + # @return [InterpolatedXStringNode] a new instance of InterpolatedXStringNode + # + # source://prism-0.24.0/lib/prism/node.rb:11511 + def initialize(source, opening_loc, parts, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:11521 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11531 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11586 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:11574 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:11541 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11536 + def compact_child_nodes; end + + # def copy: (**params) -> InterpolatedXStringNode + # + # source://prism-0.24.0/lib/prism/node.rb:11546 + sig { params(params: T.untyped).returns(Prism::InterpolatedXStringNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11531 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { opening_loc: Location, parts: Array[Node], closing_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:11560 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11591 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11581 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:11565 + sig { returns(Prism::Location) } + def opening_loc; end + + # attr_reader parts: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11571 + sig { returns(T::Array[Prism::Node]) } + def parts; end + + # source://prism-0.24.0/lib/prism/node.rb:11525 + def set_newline_flag(newline_marked); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11613 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11623 + def type; end + end +end + +# Represents a hash literal without opening and closing braces. +# +# foo(a: b) +# ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:11632 +class Prism::KeywordHashNode < ::Prism::Node + # def initialize: (Integer flags, Array[Node] elements, Location location) -> void + # + # @return [KeywordHashNode] a new instance of KeywordHashNode + # + # source://prism-0.24.0/lib/prism/node.rb:11634 + def initialize(source, flags, elements, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:11643 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11648 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:11658 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11653 + def compact_child_nodes; end + + # def copy: (**params) -> KeywordHashNode + # + # source://prism-0.24.0/lib/prism/node.rb:11663 + sig { params(params: T.untyped).returns(Prism::KeywordHashNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11648 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, elements: Array[Node], location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:11676 + def deconstruct_keys(keys); end + + # attr_reader elements: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11685 + sig { returns(T::Array[Prism::Node]) } + def elements; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11694 + def inspect(inspector = T.unsafe(nil)); end + + # def symbol_keys?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11689 + sig { returns(T::Boolean) } + def symbol_keys?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11716 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:11681 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11726 + def type; end + end +end + +# Flags for keyword hash nodes. +# +# source://prism-0.24.0/lib/prism/node.rb:19292 +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-0.24.0/lib/prism/node.rb:19294 +Prism::KeywordHashNodeFlags::SYMBOL_KEYS = T.let(T.unsafe(nil), Integer) + +# Represents a keyword rest parameter to a method, block, or lambda definition. +# +# def a(**b) +# ^^^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:11736 +class Prism::KeywordRestParameterNode < ::Prism::Node + # def initialize: (Integer flags, Symbol? name, Location? name_loc, Location operator_loc, Location location) -> void + # + # @return [KeywordRestParameterNode] a new instance of KeywordRestParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:11738 + def initialize(source, flags, name, name_loc, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:11749 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11754 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:11764 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11759 + def compact_child_nodes; end + + # def copy: (**params) -> KeywordRestParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:11769 + sig { params(params: T.untyped).returns(Prism::KeywordRestParameterNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11754 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, name: Symbol?, name_loc: Location?, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:11784 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11825 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol? + # + # source://prism-0.24.0/lib/prism/node.rb:11793 + sig { returns(T.nilable(Symbol)) } + def name; end + + # attr_reader name_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:11796 + sig { returns(T.nilable(Prism::Location)) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11820 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:11808 + sig { returns(Prism::Location) } + def operator_loc; end + + # def repeated_parameter?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:11815 + sig { returns(T::Boolean) } + def repeated_parameter?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11853 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:11789 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:11863 + def type; end + end +end + +# Represents using a lambda literal (not the lambda method call). +# +# ->(value) { value * 2 } +# ^^^^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:11872 +class Prism::LambdaNode < ::Prism::Node + # def initialize: (Array[Symbol] locals, Location operator_loc, Location opening_loc, Location closing_loc, Node? parameters, Node? body, Location location) -> void + # + # @return [LambdaNode] a new instance of LambdaNode + # + # source://prism-0.24.0/lib/prism/node.rb:11874 + def initialize(source, locals, operator_loc, opening_loc, closing_loc, parameters, body, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:11887 + def accept(visitor); end + + # attr_reader body: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:11956 + sig { returns(T.nilable(Prism::Node)) } + def body; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11892 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11970 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:11947 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:11905 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11897 + def compact_child_nodes; end + + # def copy: (**params) -> LambdaNode + # + # source://prism-0.24.0/lib/prism/node.rb:11910 + sig { params(params: T.untyped).returns(Prism::LambdaNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:11892 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { locals: Array[Symbol], operator_loc: Location, opening_loc: Location, closing_loc: Location, parameters: Node?, body: Node?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:11927 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11975 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader locals: Array[Symbol] + # + # source://prism-0.24.0/lib/prism/node.rb:11932 + sig { returns(T::Array[Symbol]) } + def locals; end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11965 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:11941 + sig { returns(Prism::Location) } + def opening_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:11960 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:11935 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader parameters: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:11953 + sig { returns(T.nilable(Prism::Node)) } + def parameters; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12010 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12020 + def type; end + end +end + +# This class is responsible for lexing the source using prism and then +# converting those tokens to be compatible with Ripper. In the vast majority +# of cases, this is a one-to-one mapping of the token type. Everything else +# generally lines up. However, there are a few cases that require special +# handling. +# +# source://prism-0.24.0/lib/prism/lex_compat.rb:12 +class Prism::LexCompat + # @return [LexCompat] a new instance of LexCompat + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:600 + def initialize(source, **options); end + + # Returns the value of attribute options. + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:598 + def options; end + + # source://prism-0.24.0/lib/prism/lex_compat.rb:605 + def result; end + + # Returns the value of attribute source. + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:598 + 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-0.24.0/lib/prism/lex_compat.rb:211 +class Prism::LexCompat::EndContentToken < ::Prism::LexCompat::Token + # source://prism-0.24.0/lib/prism/lex_compat.rb:212 + def ==(other); end +end + +# A heredoc in this case is a list of tokens that belong to the body of the +# heredoc that should be appended onto the list of tokens when the heredoc +# closes. +# +# source://prism-0.24.0/lib/prism/lex_compat.rb:272 +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-0.24.0/lib/prism/lex_compat.rb:584 + def build(opening); end + end +end + +# Dash heredocs are a little more complicated. They are a list of tokens +# 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-0.24.0/lib/prism/lex_compat.rb:296 +class Prism::LexCompat::Heredoc::DashHeredoc + # @return [DashHeredoc] a new instance of DashHeredoc + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:299 + def initialize(split); end + + # source://prism-0.24.0/lib/prism/lex_compat.rb:304 + def <<(token); end + + # source://prism-0.24.0/lib/prism/lex_compat.rb:297 + def split; end + + # source://prism-0.24.0/lib/prism/lex_compat.rb:308 + def to_a; end + + # source://prism-0.24.0/lib/prism/lex_compat.rb:297 + def tokens; end +end + +# Heredocs that are dedenting heredocs are a little more complicated. +# Ripper outputs on_ignored_sp tokens for the whitespace that is being +# removed from the output. prism only modifies the node itself and keeps +# the token the same. This simplifies prism, but makes comparing against +# Ripper much harder because there is a length mismatch. +# +# Fortunately, we already have to pull out the heredoc tokens in order to +# insert them into the stream in the correct order. As such, we can do +# some extra manipulation on the tokens to make them match Ripper's +# output by mirroring the dedent logic that Ripper uses. +# +# source://prism-0.24.0/lib/prism/lex_compat.rb:355 +class Prism::LexCompat::Heredoc::DedentingHeredoc + # @return [DedentingHeredoc] a new instance of DedentingHeredoc + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:360 + 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-0.24.0/lib/prism/lex_compat.rb:371 + def <<(token); end + + # Returns the value of attribute dedent. + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:358 + def dedent; end + + # Returns the value of attribute dedent_next. + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:358 + def dedent_next; end + + # Returns the value of attribute embexpr_balance. + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:358 + def embexpr_balance; end + + # source://prism-0.24.0/lib/prism/lex_compat.rb:408 + def to_a; end + + # Returns the value of attribute tokens. + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:358 + def tokens; end +end + +# source://prism-0.24.0/lib/prism/lex_compat.rb:356 +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. +# We need to keep them around so that we can insert them in the correct +# 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-0.24.0/lib/prism/lex_compat.rb:277 +class Prism::LexCompat::Heredoc::PlainHeredoc + # @return [PlainHeredoc] a new instance of PlainHeredoc + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:280 + def initialize; end + + # source://prism-0.24.0/lib/prism/lex_compat.rb:284 + def <<(token); end + + # source://prism-0.24.0/lib/prism/lex_compat.rb:288 + def to_a; end + + # source://prism-0.24.0/lib/prism/lex_compat.rb:278 + def tokens; end +end + +# Ident tokens for the most part are exactly the same, except sometimes we +# know an ident is a local when ripper doesn't (when they are introduced +# through named captures in regular expressions). In that case we don't +# compare the state. +# +# source://prism-0.24.0/lib/prism/lex_compat.rb:229 +class Prism::LexCompat::IdentToken < ::Prism::LexCompat::Token + # source://prism-0.24.0/lib/prism/lex_compat.rb:230 + def ==(other); end +end + +# Tokens where state should be ignored +# used for :on_comment, :on_heredoc_end, :on_embexpr_end +# +# source://prism-0.24.0/lib/prism/lex_compat.rb:219 +class Prism::LexCompat::IgnoreStateToken < ::Prism::LexCompat::Token + # source://prism-0.24.0/lib/prism/lex_compat.rb:220 + def ==(other); end +end + +# Ignored newlines can occasionally have a LABEL state attached to them, so +# we compare the state differently here. +# +# source://prism-0.24.0/lib/prism/lex_compat.rb:240 +class Prism::LexCompat::IgnoredNewlineToken < ::Prism::LexCompat::Token + # source://prism-0.24.0/lib/prism/lex_compat.rb:241 + def ==(other); end +end + +# If we have an identifier that follows a method name like: +# +# def foo bar +# +# then Ripper will mark bar as END|LABEL if there is a local in a parent +# scope named bar because it hasn't pushed the local table yet. We do this +# more accurately, so we need to allow comparing against both END and +# END|LABEL. +# +# source://prism-0.24.0/lib/prism/lex_compat.rb:260 +class Prism::LexCompat::ParamToken < ::Prism::LexCompat::Token + # source://prism-0.24.0/lib/prism/lex_compat.rb:261 + def ==(other); end +end + +# This is a mapping of prism token types to Ripper token types. This is a +# many-to-one mapping because we split up our token types, whereas Ripper +# tends to group them. +# +# source://prism-0.24.0/lib/prism/lex_compat.rb:16 +Prism::LexCompat::RIPPER = T.let(T.unsafe(nil), Hash) + +# When we produce tokens, we produce the same arrays that Ripper does. +# 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-0.24.0/lib/prism/lex_compat.rb:187 +class Prism::LexCompat::Token < ::SimpleDelegator + # The type of the token. + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:194 + def event; end + + # The location of the token in the source. + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:189 + def location; end + + # The state of the lexer when this token was produced. + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:204 + def state; end + + # The slice of the source that this token represents. + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:199 + def value; end +end + +# This is a class that wraps the Ripper lexer to produce almost exactly the +# same tokens. +# +# source://prism-0.24.0/lib/prism/lex_compat.rb:853 +class Prism::LexRipper + # @return [LexRipper] a new instance of LexRipper + # + # source://prism-0.24.0/lib/prism/lex_compat.rb:856 + def initialize(source); end + + # source://prism-0.24.0/lib/prism/lex_compat.rb:860 + def result; end + + # source://prism-0.24.0/lib/prism/lex_compat.rb:854 + def source; end + + private + + # source://prism-0.24.0/lib/prism/lex_compat.rb:894 + def lex(source); end +end + +# Represents the use of the `&&=` operator for assignment to a local variable. +# +# target &&= value +# ^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:12029 +class Prism::LocalVariableAndWriteNode < ::Prism::Node + # def initialize: (Location name_loc, Location operator_loc, Node value, Symbol name, Integer depth, Location location) -> void + # + # @return [LocalVariableAndWriteNode] a new instance of LocalVariableAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:12031 + def initialize(source, name_loc, operator_loc, value, name, depth, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:12043 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12048 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:12058 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12053 + def compact_child_nodes; end + + # def copy: (**params) -> LocalVariableAndWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:12063 + sig { params(params: T.untyped).returns(Prism::LocalVariableAndWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12048 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name_loc: Location, operator_loc: Location, value: Node, name: Symbol, depth: Integer, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:12079 + def deconstruct_keys(keys); end + + # attr_reader depth: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:12102 + sig { returns(Integer) } + def depth; end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:197 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12111 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12099 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:12084 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12106 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:12090 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12136 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:12096 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12146 + def type; end + end +end + +# Represents assigning to a local variable using an operator that isn't `=`. +# +# target += value +# ^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:12155 +class Prism::LocalVariableOperatorWriteNode < ::Prism::Node + # def initialize: (Location name_loc, Location operator_loc, Node value, Symbol name, Symbol operator, Integer depth, Location location) -> void + # + # @return [LocalVariableOperatorWriteNode] a new instance of LocalVariableOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:12157 + def initialize(source, name_loc, operator_loc, value, name, operator, depth, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:12170 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12175 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:12185 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12180 + def compact_child_nodes; end + + # def copy: (**params) -> LocalVariableOperatorWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:12190 + sig { params(params: T.untyped).returns(Prism::LocalVariableOperatorWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12175 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name_loc: Location, operator_loc: Location, value: Node, name: Symbol, operator: Symbol, depth: Integer, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:12207 + def deconstruct_keys(keys); end + + # attr_reader depth: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:12233 + sig { returns(Integer) } + def depth; end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:209 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12237 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12227 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:12212 + sig { returns(Prism::Location) } + def name_loc; end + + # attr_reader operator: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12230 + sig { returns(Symbol) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:12218 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12263 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:12224 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12273 + def type; end + end +end + +# Represents the use of the `||=` operator for assignment to a local variable. +# +# target ||= value +# ^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:12282 +class Prism::LocalVariableOrWriteNode < ::Prism::Node + # def initialize: (Location name_loc, Location operator_loc, Node value, Symbol name, Integer depth, Location location) -> void + # + # @return [LocalVariableOrWriteNode] a new instance of LocalVariableOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:12284 + def initialize(source, name_loc, operator_loc, value, name, depth, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:12296 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12301 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:12311 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12306 + def compact_child_nodes; end + + # def copy: (**params) -> LocalVariableOrWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:12316 + sig { params(params: T.untyped).returns(Prism::LocalVariableOrWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12301 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name_loc: Location, operator_loc: Location, value: Node, name: Symbol, depth: Integer, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:12332 + def deconstruct_keys(keys); end + + # attr_reader depth: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:12355 + sig { returns(Integer) } + def depth; end + + # source://prism-0.24.0/lib/prism/desugar_compiler.rb:203 + def desugar; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12364 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12352 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:12337 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12359 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:12343 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12389 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:12349 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12399 + def type; end + end +end + +# Represents reading a local variable. Note that this requires that a local variable of the same name has already been written to in the same scope, otherwise it is parsed as a method call. +# +# foo +# ^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:12408 +class Prism::LocalVariableReadNode < ::Prism::Node + # def initialize: (Symbol name, Integer depth, Location location) -> void + # + # @return [LocalVariableReadNode] a new instance of LocalVariableReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:12410 + def initialize(source, name, depth, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:12419 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12424 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:12434 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12429 + def compact_child_nodes; end + + # def copy: (**params) -> LocalVariableReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:12439 + sig { params(params: T.untyped).returns(Prism::LocalVariableReadNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12424 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, depth: Integer, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:12452 + def deconstruct_keys(keys); end + + # The number of visible scopes that should be searched to find the origin of this local variable. + # + # foo = 1; foo # depth 0 + # + # bar = 2; tap { bar } # depth 1 + # + # 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-0.24.0/lib/prism/node.rb:12478 + sig { returns(Integer) } + def depth; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12482 + def inspect(inspector = T.unsafe(nil)); end + + # The name of the local variable, which is an [identifier](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#identifiers). + # + # x # name `:x` + # + # _Test # name `:_Test` + # + # Note that this can also be an underscore followed by a number for the default block parameters. + # + # _1 # name `:_1` + # + # Finally, for the default `it` block parameter, the name is `0it`. This is to distinguish it from an `it` local variable that is explicitly declared. + # + # it # name `:0it` + # + # source://prism-0.24.0/lib/prism/node.rb:12469 + sig { returns(Symbol) } + def name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12503 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12513 + def type; end + end +end + +# Represents writing to a local variable in a context that doesn't have an explicit value. +# +# foo, bar = baz +# ^^^ ^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:12522 +class Prism::LocalVariableTargetNode < ::Prism::Node + # def initialize: (Symbol name, Integer depth, Location location) -> void + # + # @return [LocalVariableTargetNode] a new instance of LocalVariableTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:12524 + def initialize(source, name, depth, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:12533 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12538 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:12548 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12543 + def compact_child_nodes; end + + # def copy: (**params) -> LocalVariableTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:12553 + sig { params(params: T.untyped).returns(Prism::LocalVariableTargetNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12538 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, depth: Integer, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:12566 + def deconstruct_keys(keys); end + + # attr_reader depth: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:12574 + sig { returns(Integer) } + def depth; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12578 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12571 + sig { returns(Symbol) } + def name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12599 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12609 + def type; end + end +end + +# Represents writing to a local variable. +# +# foo = 1 +# ^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:12618 +class Prism::LocalVariableWriteNode < ::Prism::Node + # def initialize: (Symbol name, Integer depth, Location name_loc, Node value, Location operator_loc, Location location) -> void + # + # @return [LocalVariableWriteNode] a new instance of LocalVariableWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:12620 + def initialize(source, name, depth, name_loc, value, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:12632 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12637 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:12647 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12642 + def compact_child_nodes; end + + # def copy: (**params) -> LocalVariableWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:12652 + sig { params(params: T.untyped).returns(Prism::LocalVariableWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12637 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { name: Symbol, depth: Integer, name_loc: Location, value: Node, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:12668 + def deconstruct_keys(keys); end + + # attr_reader depth: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:12676 + sig { returns(Integer) } + def depth; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12700 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12673 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:12679 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12695 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:12688 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12725 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:12685 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12735 + def type; end + end +end + +# This represents a location in the source. +# +# source://prism-0.24.0/lib/prism/parse_result.rb:98 +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-0.24.0/lib/prism/parse_result.rb:116 + def initialize(source, start_offset, length); end + + # Returns true if the given other location is equal to this location. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:232 + def ==(other); end + + # The list of comments attached to this location + # + # source://prism-0.24.0/lib/prism/parse_result.rb:112 + sig { returns(T::Array[Prism::Comment]) } + def comments; end + + # Create a new location object with the given options. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:124 + sig { params(options: T.untyped).returns(Prism::Location) } + def copy(**options); end + + # Implement the hash pattern matching interface for Location. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:222 + def deconstruct_keys(keys); end + + # The column number in characters where this location ends from the start of + # the line. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:211 + def end_character_column; end + + # The character offset from the beginning of the source where this location + # ends. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:160 + 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-0.24.0/lib/prism/parse_result.rb:217 + 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-0.24.0/lib/prism/parse_result.rb:165 + 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-0.24.0/lib/prism/parse_result.rb:205 + sig { returns(Integer) } + def end_column; end + + # The line number where this location ends. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:181 + sig { returns(Integer) } + def end_line; end + + # The byte offset from the beginning of the source where this location ends. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:154 + sig { returns(Integer) } + def end_offset; end + + # Returns a string representation of this location. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:133 + def inspect; end + + # Returns a new location that stretches from this location to the given + # 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-0.24.0/lib/prism/parse_result.rb:241 + def join(other); end + + # The length of this location in bytes. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:109 + def length; end + + # Implement the pretty print interface for Location. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:227 + def pretty_print(q); end + + # The source code that this location represents. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:138 + sig { returns(String) } + def slice; end + + # The column number in characters where this location ends from the start of + # the line. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:193 + def start_character_column; end + + # The character offset from the beginning of the source where this location + # starts. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:144 + 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-0.24.0/lib/prism/parse_result.rb:199 + 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-0.24.0/lib/prism/parse_result.rb:149 + 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-0.24.0/lib/prism/parse_result.rb:187 + sig { returns(Integer) } + def start_column; end + + # The line number where this location starts. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:170 + sig { returns(Integer) } + def start_line; end + + # The content of the line where this location starts before this location. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:175 + def start_line_slice; end + + # The byte offset from the beginning of the source where this location + # starts. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:106 + sig { returns(Integer) } + def start_offset; end + + protected + + # A Source object that is used to determine more information from the given + # offset and length. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:101 + def source; end + + class << self + # Returns a null location that does not correspond to a source and points to + # the beginning of the file. Useful for when you want a location object but + # do not care where it points. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:251 + def null; end + end +end + +# Flags for while and until loop nodes. +# +# source://prism-0.24.0/lib/prism/node.rb:19298 +module Prism::LoopFlags; end + +# a loop after a begin statement, so the body is executed first before the condition +# +# source://prism-0.24.0/lib/prism/node.rb:19300 +Prism::LoopFlags::BEGIN_MODIFIER = T.let(T.unsafe(nil), Integer) + +# This represents a magic comment that was encountered during parsing. +# +# source://prism-0.24.0/lib/prism/parse_result.rb:303 +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-0.24.0/lib/prism/parse_result.rb:311 + def initialize(key_loc, value_loc); end + + # Implement the hash pattern matching interface for MagicComment. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:327 + def deconstruct_keys(keys); end + + # Returns a string representation of this magic comment. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:332 + def inspect; end + + # Returns the key of the magic comment by slicing it from the source code. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:317 + def key; end + + # A Location object representing the location of the key in the source. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:305 + def key_loc; end + + # Returns the value of the magic comment by slicing it from the source code. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:322 + def value; end + + # A Location object representing the location of the value in the source. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:308 + def value_loc; end +end + +# Represents a regular expression literal used in the predicate of a conditional to implicitly match against the last line read by an IO object. +# +# if /foo/i then end +# ^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:12744 +class Prism::MatchLastLineNode < ::Prism::Node + include ::Prism::RegularExpressionOptions + + # def initialize: (Integer flags, Location opening_loc, Location content_loc, Location closing_loc, String unescaped, Location location) -> void + # + # @return [MatchLastLineNode] a new instance of MatchLastLineNode + # + # source://prism-0.24.0/lib/prism/node.rb:12746 + def initialize(source, flags, opening_loc, content_loc, closing_loc, unescaped, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:12758 + def accept(visitor); end + + # def ascii_8bit?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:12850 + sig { returns(T::Boolean) } + def ascii_8bit?; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12763 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12890 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:12815 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:12773 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12768 + def compact_child_nodes; end + + # def content: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12885 + sig { returns(String) } + def content; end + + # attr_reader content_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:12809 + sig { returns(Prism::Location) } + def content_loc; end + + # def copy: (**params) -> MatchLastLineNode + # + # source://prism-0.24.0/lib/prism/node.rb:12778 + sig { params(params: T.untyped).returns(Prism::MatchLastLineNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12763 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:12794 + def deconstruct_keys(keys); end + + # def euc_jp?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:12845 + sig { returns(T::Boolean) } + def euc_jp?; end + + # def extended?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:12830 + sig { returns(T::Boolean) } + def extended?; end + + # def forced_binary_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:12870 + sig { returns(T::Boolean) } + def forced_binary_encoding?; end + + # def forced_us_ascii_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:12875 + sig { returns(T::Boolean) } + def forced_us_ascii_encoding?; end + + # def forced_utf8_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:12865 + sig { returns(T::Boolean) } + def forced_utf8_encoding?; end + + # def ignore_case?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:12825 + sig { returns(T::Boolean) } + def ignore_case?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12895 + def inspect(inspector = T.unsafe(nil)); end + + # def multi_line?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:12835 + sig { returns(T::Boolean) } + def multi_line?; end + + # def once?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:12840 + sig { returns(T::Boolean) } + def once?; end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:12880 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:12803 + sig { returns(Prism::Location) } + def opening_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12920 + def type; end + + # attr_reader unescaped: String + # + # source://prism-0.24.0/lib/prism/node.rb:12821 + sig { returns(String) } + def unescaped; end + + # def utf_8?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:12860 + sig { returns(T::Boolean) } + def utf_8?; end + + # def windows_31j?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:12855 + sig { returns(T::Boolean) } + def windows_31j?; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:12799 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:12930 + def type; end + end +end + +# Represents the use of the modifier `in` operator. +# +# foo in bar +# ^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:12939 +class Prism::MatchPredicateNode < ::Prism::Node + # def initialize: (Node value, Node pattern, Location operator_loc, Location location) -> void + # + # @return [MatchPredicateNode] a new instance of MatchPredicateNode + # + # source://prism-0.24.0/lib/prism/node.rb:12941 + def initialize(source, value, pattern, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:12951 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12956 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:12966 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12961 + def compact_child_nodes; end + + # def copy: (**params) -> MatchPredicateNode + # + # source://prism-0.24.0/lib/prism/node.rb:12971 + sig { params(params: T.untyped).returns(Prism::MatchPredicateNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:12956 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { value: Node, pattern: Node, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:12985 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13008 + def inspect(inspector = T.unsafe(nil)); end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13003 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:12996 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader pattern: Node + # + # source://prism-0.24.0/lib/prism/node.rb:12993 + sig { returns(Prism::Node) } + def pattern; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13032 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:12990 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13042 + def type; end + end +end + +# Represents the use of the `=>` operator. +# +# foo => bar +# ^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:13051 +class Prism::MatchRequiredNode < ::Prism::Node + # def initialize: (Node value, Node pattern, Location operator_loc, Location location) -> void + # + # @return [MatchRequiredNode] a new instance of MatchRequiredNode + # + # source://prism-0.24.0/lib/prism/node.rb:13053 + def initialize(source, value, pattern, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:13063 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13068 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:13078 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13073 + def compact_child_nodes; end + + # def copy: (**params) -> MatchRequiredNode + # + # source://prism-0.24.0/lib/prism/node.rb:13083 + sig { params(params: T.untyped).returns(Prism::MatchRequiredNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13068 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { value: Node, pattern: Node, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:13097 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13120 + def inspect(inspector = T.unsafe(nil)); end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13115 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:13108 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader pattern: Node + # + # source://prism-0.24.0/lib/prism/node.rb:13105 + sig { returns(Prism::Node) } + def pattern; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13144 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:13102 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13154 + def type; end + end +end + +# Represents writing local variables using a regular expression match with named capture groups. +# +# /(?bar)/ =~ baz +# ^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:13163 +class Prism::MatchWriteNode < ::Prism::Node + # def initialize: (CallNode call, Array[Node] targets, Location location) -> void + # + # @return [MatchWriteNode] a new instance of MatchWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:13165 + def initialize(source, call, targets, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:13174 + def accept(visitor); end + + # attr_reader call: CallNode + # + # source://prism-0.24.0/lib/prism/node.rb:13212 + sig { returns(Prism::CallNode) } + def call; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13179 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:13189 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13184 + def compact_child_nodes; end + + # def copy: (**params) -> MatchWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:13194 + sig { params(params: T.untyped).returns(Prism::MatchWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13179 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { call: CallNode, targets: Array[Node], location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:13207 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13219 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader targets: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13215 + sig { returns(T::Array[Prism::Node]) } + def targets; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13241 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13251 + def type; end + end +end + +# Represents a node that is missing from the source and results in a syntax error. +# +# source://prism-0.24.0/lib/prism/node.rb:13257 +class Prism::MissingNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [MissingNode] a new instance of MissingNode + # + # source://prism-0.24.0/lib/prism/node.rb:13259 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:13266 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13271 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:13281 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13276 + def compact_child_nodes; end + + # def copy: (**params) -> MissingNode + # + # source://prism-0.24.0/lib/prism/node.rb:13286 + sig { params(params: T.untyped).returns(Prism::MissingNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13271 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:13297 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13303 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13322 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13332 + def type; end + end +end + +# Represents a module declaration involving the `module` keyword. +# +# module Foo end +# ^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:13341 +class Prism::ModuleNode < ::Prism::Node + # def initialize: (Array[Symbol] locals, Location module_keyword_loc, Node constant_path, Node? body, Location end_keyword_loc, Symbol name, Location location) -> void + # + # @return [ModuleNode] a new instance of ModuleNode + # + # source://prism-0.24.0/lib/prism/node.rb:13343 + def initialize(source, locals, module_keyword_loc, constant_path, body, end_keyword_loc, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:13356 + def accept(visitor); end + + # attr_reader body: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:13413 + sig { returns(T.nilable(Prism::Node)) } + def body; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13361 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:13374 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13366 + def compact_child_nodes; end + + # attr_reader constant_path: Node + # + # source://prism-0.24.0/lib/prism/node.rb:13410 + sig { returns(Prism::Node) } + def constant_path; end + + # def copy: (**params) -> ModuleNode + # + # source://prism-0.24.0/lib/prism/node.rb:13379 + sig { params(params: T.untyped).returns(Prism::ModuleNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13361 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { locals: Array[Symbol], module_keyword_loc: Location, constant_path: Node, body: Node?, end_keyword_loc: Location, name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:13396 + def deconstruct_keys(keys); end + + # def end_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13431 + sig { returns(String) } + def end_keyword; end + + # attr_reader end_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:13416 + sig { returns(Prism::Location) } + def end_keyword_loc; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13436 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader locals: Array[Symbol] + # + # source://prism-0.24.0/lib/prism/node.rb:13401 + sig { returns(T::Array[Symbol]) } + def locals; end + + # def module_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13426 + sig { returns(String) } + def module_keyword; end + + # attr_reader module_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:13404 + sig { returns(Prism::Location) } + def module_keyword_loc; end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13422 + sig { returns(Symbol) } + def name; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13467 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13477 + def type; end + end +end + +# Represents a multi-target expression. +# +# a, (b, c) = 1, 2, 3 +# ^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:13486 +class Prism::MultiTargetNode < ::Prism::Node + # def initialize: (Array[Node] lefts, Node? rest, Array[Node] rights, Location? lparen_loc, Location? rparen_loc, Location location) -> void + # + # @return [MultiTargetNode] a new instance of MultiTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:13488 + def initialize(source, lefts, rest, rights, lparen_loc, rparen_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:13500 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13505 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:13519 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13510 + def compact_child_nodes; end + + # def copy: (**params) -> MultiTargetNode + # + # source://prism-0.24.0/lib/prism/node.rb:13524 + sig { params(params: T.untyped).returns(Prism::MultiTargetNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13505 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { lefts: Array[Node], rest: Node?, rights: Array[Node], lparen_loc: Location?, rparen_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:13540 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13589 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader lefts: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13545 + sig { returns(T::Array[Prism::Node]) } + def lefts; end + + # def lparen: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:13579 + sig { returns(T.nilable(String)) } + def lparen; end + + # attr_reader lparen_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:13554 + sig { returns(T.nilable(Prism::Location)) } + def lparen_loc; end + + # attr_reader rest: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:13548 + sig { returns(T.nilable(Prism::Node)) } + def rest; end + + # attr_reader rights: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13551 + sig { returns(T::Array[Prism::Node]) } + def rights; end + + # def rparen: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:13584 + sig { returns(T.nilable(String)) } + def rparen; end + + # attr_reader rparen_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:13566 + sig { returns(T.nilable(Prism::Location)) } + def rparen_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13618 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13628 + def type; end + end +end + +# Represents a write to a multi-target expression. +# +# a, b, c = 1, 2, 3 +# ^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:13637 +class Prism::MultiWriteNode < ::Prism::Node + # def initialize: (Array[Node] lefts, Node? rest, Array[Node] rights, Location? lparen_loc, Location? rparen_loc, Location operator_loc, Node value, Location location) -> void + # + # @return [MultiWriteNode] a new instance of MultiWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:13639 + def initialize(source, lefts, rest, rights, lparen_loc, rparen_loc, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:13653 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13658 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:13673 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13663 + def compact_child_nodes; end + + # def copy: (**params) -> MultiWriteNode + # + # source://prism-0.24.0/lib/prism/node.rb:13678 + sig { params(params: T.untyped).returns(Prism::MultiWriteNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13658 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { lefts: Array[Node], rest: Node?, rights: Array[Node], lparen_loc: Location?, rparen_loc: Location?, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:13696 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13759 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader lefts: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13701 + sig { returns(T::Array[Prism::Node]) } + def lefts; end + + # def lparen: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:13744 + sig { returns(T.nilable(String)) } + def lparen; end + + # attr_reader lparen_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:13710 + sig { returns(T.nilable(Prism::Location)) } + def lparen_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13754 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:13734 + sig { returns(Prism::Location) } + def operator_loc; end + + # attr_reader rest: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:13704 + sig { returns(T.nilable(Prism::Node)) } + def rest; end + + # attr_reader rights: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13707 + sig { returns(T::Array[Prism::Node]) } + def rights; end + + # def rparen: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:13749 + sig { returns(T.nilable(String)) } + def rparen; end + + # attr_reader rparen_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:13722 + sig { returns(T.nilable(Prism::Location)) } + def rparen_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13791 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:13740 + sig { returns(Prism::Node) } + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13801 + def type; end + end +end + +# This visitor walks through the tree and copies each node as it is being +# 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-0.24.0/lib/prism/mutation_compiler.rb:12 +class Prism::MutationCompiler < ::Prism::Compiler + # Copy a AliasGlobalVariableNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:14 + def visit_alias_global_variable_node(node); end + + # Copy a AliasMethodNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:19 + def visit_alias_method_node(node); end + + # Copy a AlternationPatternNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:24 + def visit_alternation_pattern_node(node); end + + # Copy a AndNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:29 + def visit_and_node(node); end + + # Copy a ArgumentsNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:34 + def visit_arguments_node(node); end + + # Copy a ArrayNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:39 + def visit_array_node(node); end + + # Copy a ArrayPatternNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:44 + def visit_array_pattern_node(node); end + + # Copy a AssocNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:49 + def visit_assoc_node(node); end + + # Copy a AssocSplatNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:54 + def visit_assoc_splat_node(node); end + + # Copy a BackReferenceReadNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:59 + def visit_back_reference_read_node(node); end + + # Copy a BeginNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:64 + def visit_begin_node(node); end + + # Copy a BlockArgumentNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:69 + def visit_block_argument_node(node); end + + # Copy a BlockLocalVariableNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:74 + def visit_block_local_variable_node(node); end + + # Copy a BlockNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:79 + def visit_block_node(node); end + + # Copy a BlockParameterNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:84 + def visit_block_parameter_node(node); end + + # Copy a BlockParametersNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:89 + def visit_block_parameters_node(node); end + + # Copy a BreakNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:94 + def visit_break_node(node); end + + # Copy a CallAndWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:99 + def visit_call_and_write_node(node); end + + # Copy a CallNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:104 + def visit_call_node(node); end + + # Copy a CallOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:109 + def visit_call_operator_write_node(node); end + + # Copy a CallOrWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:114 + def visit_call_or_write_node(node); end + + # Copy a CallTargetNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:119 + def visit_call_target_node(node); end + + # Copy a CapturePatternNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:124 + def visit_capture_pattern_node(node); end + + # Copy a CaseMatchNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:129 + def visit_case_match_node(node); end + + # Copy a CaseNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:134 + def visit_case_node(node); end + + # Copy a ClassNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:139 + def visit_class_node(node); end + + # Copy a ClassVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:144 + def visit_class_variable_and_write_node(node); end + + # Copy a ClassVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:149 + def visit_class_variable_operator_write_node(node); end + + # Copy a ClassVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:154 + def visit_class_variable_or_write_node(node); end + + # Copy a ClassVariableReadNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:159 + def visit_class_variable_read_node(node); end + + # Copy a ClassVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:164 + def visit_class_variable_target_node(node); end + + # Copy a ClassVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:169 + def visit_class_variable_write_node(node); end + + # Copy a ConstantAndWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:174 + def visit_constant_and_write_node(node); end + + # Copy a ConstantOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:179 + def visit_constant_operator_write_node(node); end + + # Copy a ConstantOrWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:184 + def visit_constant_or_write_node(node); end + + # Copy a ConstantPathAndWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:189 + def visit_constant_path_and_write_node(node); end + + # Copy a ConstantPathNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:194 + def visit_constant_path_node(node); end + + # Copy a ConstantPathOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:199 + def visit_constant_path_operator_write_node(node); end + + # Copy a ConstantPathOrWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:204 + def visit_constant_path_or_write_node(node); end + + # Copy a ConstantPathTargetNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:209 + def visit_constant_path_target_node(node); end + + # Copy a ConstantPathWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:214 + def visit_constant_path_write_node(node); end + + # Copy a ConstantReadNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:219 + def visit_constant_read_node(node); end + + # Copy a ConstantTargetNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:224 + def visit_constant_target_node(node); end + + # Copy a ConstantWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:229 + def visit_constant_write_node(node); end + + # Copy a DefNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:234 + def visit_def_node(node); end + + # Copy a DefinedNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:239 + def visit_defined_node(node); end + + # Copy a ElseNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:244 + def visit_else_node(node); end + + # Copy a EmbeddedStatementsNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:249 + def visit_embedded_statements_node(node); end + + # Copy a EmbeddedVariableNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:254 + def visit_embedded_variable_node(node); end + + # Copy a EnsureNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:259 + def visit_ensure_node(node); end + + # Copy a FalseNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:264 + def visit_false_node(node); end + + # Copy a FindPatternNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:269 + def visit_find_pattern_node(node); end + + # Copy a FlipFlopNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:274 + def visit_flip_flop_node(node); end + + # Copy a FloatNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:279 + def visit_float_node(node); end + + # Copy a ForNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:284 + def visit_for_node(node); end + + # Copy a ForwardingArgumentsNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:289 + def visit_forwarding_arguments_node(node); end + + # Copy a ForwardingParameterNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:294 + def visit_forwarding_parameter_node(node); end + + # Copy a ForwardingSuperNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:299 + def visit_forwarding_super_node(node); end + + # Copy a GlobalVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:304 + def visit_global_variable_and_write_node(node); end + + # Copy a GlobalVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:309 + def visit_global_variable_operator_write_node(node); end + + # Copy a GlobalVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:314 + def visit_global_variable_or_write_node(node); end + + # Copy a GlobalVariableReadNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:319 + def visit_global_variable_read_node(node); end + + # Copy a GlobalVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:324 + def visit_global_variable_target_node(node); end + + # Copy a GlobalVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:329 + def visit_global_variable_write_node(node); end + + # Copy a HashNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:334 + def visit_hash_node(node); end + + # Copy a HashPatternNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:339 + def visit_hash_pattern_node(node); end + + # Copy a IfNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:344 + def visit_if_node(node); end + + # Copy a ImaginaryNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:349 + def visit_imaginary_node(node); end + + # Copy a ImplicitNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:354 + def visit_implicit_node(node); end + + # Copy a ImplicitRestNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:359 + def visit_implicit_rest_node(node); end + + # Copy a InNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:364 + def visit_in_node(node); end + + # Copy a IndexAndWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:369 + def visit_index_and_write_node(node); end + + # Copy a IndexOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:374 + def visit_index_operator_write_node(node); end + + # Copy a IndexOrWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:379 + def visit_index_or_write_node(node); end + + # Copy a IndexTargetNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:384 + def visit_index_target_node(node); end + + # Copy a InstanceVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:389 + def visit_instance_variable_and_write_node(node); end + + # Copy a InstanceVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:394 + def visit_instance_variable_operator_write_node(node); end + + # Copy a InstanceVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:399 + def visit_instance_variable_or_write_node(node); end + + # Copy a InstanceVariableReadNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:404 + def visit_instance_variable_read_node(node); end + + # Copy a InstanceVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:409 + def visit_instance_variable_target_node(node); end + + # Copy a InstanceVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:414 + def visit_instance_variable_write_node(node); end + + # Copy a IntegerNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:419 + def visit_integer_node(node); end + + # Copy a InterpolatedMatchLastLineNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:424 + def visit_interpolated_match_last_line_node(node); end + + # Copy a InterpolatedRegularExpressionNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:429 + def visit_interpolated_regular_expression_node(node); end + + # Copy a InterpolatedStringNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:434 + def visit_interpolated_string_node(node); end + + # Copy a InterpolatedSymbolNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:439 + def visit_interpolated_symbol_node(node); end + + # Copy a InterpolatedXStringNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:444 + def visit_interpolated_x_string_node(node); end + + # Copy a KeywordHashNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:449 + def visit_keyword_hash_node(node); end + + # Copy a KeywordRestParameterNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:454 + def visit_keyword_rest_parameter_node(node); end + + # Copy a LambdaNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:459 + def visit_lambda_node(node); end + + # Copy a LocalVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:464 + def visit_local_variable_and_write_node(node); end + + # Copy a LocalVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:469 + def visit_local_variable_operator_write_node(node); end + + # Copy a LocalVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:474 + def visit_local_variable_or_write_node(node); end + + # Copy a LocalVariableReadNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:479 + def visit_local_variable_read_node(node); end + + # Copy a LocalVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:484 + def visit_local_variable_target_node(node); end + + # Copy a LocalVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:489 + def visit_local_variable_write_node(node); end + + # Copy a MatchLastLineNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:494 + def visit_match_last_line_node(node); end + + # Copy a MatchPredicateNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:499 + def visit_match_predicate_node(node); end + + # Copy a MatchRequiredNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:504 + def visit_match_required_node(node); end + + # Copy a MatchWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:509 + def visit_match_write_node(node); end + + # Copy a MissingNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:514 + def visit_missing_node(node); end + + # Copy a ModuleNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:519 + def visit_module_node(node); end + + # Copy a MultiTargetNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:524 + def visit_multi_target_node(node); end + + # Copy a MultiWriteNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:529 + def visit_multi_write_node(node); end + + # Copy a NextNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:534 + def visit_next_node(node); end + + # Copy a NilNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:539 + def visit_nil_node(node); end + + # Copy a NoKeywordsParameterNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:544 + def visit_no_keywords_parameter_node(node); end + + # Copy a NumberedParametersNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:549 + def visit_numbered_parameters_node(node); end + + # Copy a NumberedReferenceReadNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:554 + def visit_numbered_reference_read_node(node); end + + # Copy a OptionalKeywordParameterNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:559 + def visit_optional_keyword_parameter_node(node); end + + # Copy a OptionalParameterNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:564 + def visit_optional_parameter_node(node); end + + # Copy a OrNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:569 + def visit_or_node(node); end + + # Copy a ParametersNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:574 + def visit_parameters_node(node); end + + # Copy a ParenthesesNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:579 + def visit_parentheses_node(node); end + + # Copy a PinnedExpressionNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:584 + def visit_pinned_expression_node(node); end + + # Copy a PinnedVariableNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:589 + def visit_pinned_variable_node(node); end + + # Copy a PostExecutionNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:594 + def visit_post_execution_node(node); end + + # Copy a PreExecutionNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:599 + def visit_pre_execution_node(node); end + + # Copy a ProgramNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:604 + def visit_program_node(node); end + + # Copy a RangeNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:609 + def visit_range_node(node); end + + # Copy a RationalNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:614 + def visit_rational_node(node); end + + # Copy a RedoNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:619 + def visit_redo_node(node); end + + # Copy a RegularExpressionNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:624 + def visit_regular_expression_node(node); end + + # Copy a RequiredKeywordParameterNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:629 + def visit_required_keyword_parameter_node(node); end + + # Copy a RequiredParameterNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:634 + def visit_required_parameter_node(node); end + + # Copy a RescueModifierNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:639 + def visit_rescue_modifier_node(node); end + + # Copy a RescueNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:644 + def visit_rescue_node(node); end + + # Copy a RestParameterNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:649 + def visit_rest_parameter_node(node); end + + # Copy a RetryNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:654 + def visit_retry_node(node); end + + # Copy a ReturnNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:659 + def visit_return_node(node); end + + # Copy a SelfNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:664 + def visit_self_node(node); end + + # Copy a SingletonClassNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:669 + def visit_singleton_class_node(node); end + + # Copy a SourceEncodingNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:674 + def visit_source_encoding_node(node); end + + # Copy a SourceFileNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:679 + def visit_source_file_node(node); end + + # Copy a SourceLineNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:684 + def visit_source_line_node(node); end + + # Copy a SplatNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:689 + def visit_splat_node(node); end + + # Copy a StatementsNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:694 + def visit_statements_node(node); end + + # Copy a StringNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:699 + def visit_string_node(node); end + + # Copy a SuperNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:704 + def visit_super_node(node); end + + # Copy a SymbolNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:709 + def visit_symbol_node(node); end + + # Copy a TrueNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:714 + def visit_true_node(node); end + + # Copy a UndefNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:719 + def visit_undef_node(node); end + + # Copy a UnlessNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:724 + def visit_unless_node(node); end + + # Copy a UntilNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:729 + def visit_until_node(node); end + + # Copy a WhenNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:734 + def visit_when_node(node); end + + # Copy a WhileNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:739 + def visit_while_node(node); end + + # Copy a XStringNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:744 + def visit_x_string_node(node); end + + # Copy a YieldNode node + # + # source://prism-0.24.0/lib/prism/mutation_compiler.rb:749 + def visit_yield_node(node); end +end + +# Represents the use of the `next` keyword. +# +# next 1 +# ^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:13810 +class Prism::NextNode < ::Prism::Node + # def initialize: (ArgumentsNode? arguments, Location keyword_loc, Location location) -> void + # + # @return [NextNode] a new instance of NextNode + # + # source://prism-0.24.0/lib/prism/node.rb:13812 + def initialize(source, arguments, keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:13821 + def accept(visitor); end + + # attr_reader arguments: ArgumentsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:13861 + sig { returns(T.nilable(Prism::ArgumentsNode)) } + def arguments; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13826 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:13838 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13831 + def compact_child_nodes; end + + # def copy: (**params) -> NextNode + # + # source://prism-0.24.0/lib/prism/node.rb:13843 + sig { params(params: T.untyped).returns(Prism::NextNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13826 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { arguments: ArgumentsNode?, keyword_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:13856 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13876 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13871 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:13864 + sig { returns(Prism::Location) } + def keyword_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13902 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13912 + def type; end + end +end + +# Represents the use of the `nil` keyword. +# +# nil +# ^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:13921 +class Prism::NilNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [NilNode] a new instance of NilNode + # + # source://prism-0.24.0/lib/prism/node.rb:13923 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:13930 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13935 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:13945 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13940 + def compact_child_nodes; end + + # def copy: (**params) -> NilNode + # + # source://prism-0.24.0/lib/prism/node.rb:13950 + sig { params(params: T.untyped).returns(Prism::NilNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:13935 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:13961 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:13967 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13986 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:13996 + def type; end + end +end + +# Represents the use of `**nil` inside method arguments. +# +# def a(**nil) +# ^^^^^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:14006 +class Prism::NoKeywordsParameterNode < ::Prism::Node + # def initialize: (Location operator_loc, Location keyword_loc, Location location) -> void + # + # @return [NoKeywordsParameterNode] a new instance of NoKeywordsParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:14008 + def initialize(source, operator_loc, keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:14017 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14022 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:14032 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14027 + def compact_child_nodes; end + + # def copy: (**params) -> NoKeywordsParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:14037 + sig { params(params: T.untyped).returns(Prism::NoKeywordsParameterNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14022 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { operator_loc: Location, keyword_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:14050 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14078 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14073 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:14061 + sig { returns(Prism::Location) } + def keyword_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14068 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:14055 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14099 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14109 + def type; end + end +end + +# This represents a node in the tree. It is the parent class of all of the +# various node types. +# +# source://prism-0.24.0/lib/prism/node.rb:11 +class Prism::Node + # Accepts a visitor and calls back into the specialized visit function. + # + # @raise [NoMethodError] + # + # source://prism-0.24.0/lib/prism/node.rb:62 + def accept(visitor); end + + # Returns an array of child nodes, including `nil`s in the place of optional + # nodes that were not present. + # + # @raise [NoMethodError] + # + # source://prism-0.24.0/lib/prism/node.rb:68 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # Returns an array of child nodes and locations that could potentially have + # comments attached to them. + # + # @raise [NoMethodError] + # + # source://prism-0.24.0/lib/prism/node.rb:82 + def comment_targets; end + + # Returns an array of child nodes, excluding any `nil`s in the place of + # optional nodes that were not present. + # + # @raise [NoMethodError] + # + # source://prism-0.24.0/lib/prism/node.rb:76 + sig { returns(T::Array[Prism::Node]) } + def compact_child_nodes; end + + # Returns an array of child nodes, including `nil`s in the place of optional + # nodes that were not present. + # + # @raise [NoMethodError] + # + # source://prism-0.24.0/lib/prism/node.rb:68 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # A Location instance that represents the location of this node in the + # source. + # + # source://prism-0.24.0/lib/prism/node.rb:18 + sig { returns(Prism::Location) } + def location; end + + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:23 + def newline?; end + + # Similar to inspect, but respects the current level of indentation given by + # the pretty print object. + # + # source://prism-0.24.0/lib/prism/node.rb:42 + def pretty_print(q); end + + # source://prism-0.24.0/lib/prism/node.rb:27 + def set_newline_flag(newline_marked); end + + # Slice the location of the node from the source. + # + # source://prism-0.24.0/lib/prism/node.rb:36 + sig { returns(String) } + def slice; end + + # Convert this node into a graphviz dot graph string. + # + # source://prism-0.24.0/lib/prism/node.rb:50 + sig { returns(String) } + def to_dot; end + + # Returns a symbol symbolizing the type of node that this represents. This + # is particularly useful for case statements and array comparisons. + # + # @raise [NoMethodError] + # + # source://prism-0.24.0/lib/prism/node.rb:88 + sig { returns(Symbol) } + def type; end + + private + + # A pointer to the source that this node was created from. + # + # source://prism-0.24.0/lib/prism/node.rb:13 + def source; end +end + +# This object is responsible for generating the output for the inspect method +# implementations of child nodes. +# +# source://prism-0.24.0/lib/prism/node_inspector.rb:6 +class Prism::NodeInspector + # @return [NodeInspector] a new instance of NodeInspector + # + # source://prism-0.24.0/lib/prism/node_inspector.rb:9 + def initialize(prefix = T.unsafe(nil)); end + + # Appends a line to the output with the current prefix. + # + # source://prism-0.24.0/lib/prism/node_inspector.rb:15 + def <<(line); end + + # Returns a new inspector that can be used to inspect a child node. + # + # source://prism-0.24.0/lib/prism/node_inspector.rb:59 + def child_inspector(append); end + + # Generates a string that represents a child node. + # + # source://prism-0.24.0/lib/prism/node_inspector.rb:54 + def child_node(node, append); end + + # This generates a string that is used as the header of the inspect output + # for any given node. + # + # source://prism-0.24.0/lib/prism/node_inspector.rb:21 + def header(node); end + + # Generates a string that represents a list of nodes. It handles properly + # using the box drawing characters to make the output look nice. + # + # source://prism-0.24.0/lib/prism/node_inspector.rb:31 + def list(prefix, nodes); end + + # Generates a string that represents a location field on a node. + # + # source://prism-0.24.0/lib/prism/node_inspector.rb:45 + def location(value); end + + # source://prism-0.24.0/lib/prism/node_inspector.rb:7 + sig { returns(String) } + def output; end + + # source://prism-0.24.0/lib/prism/node_inspector.rb:7 + sig { returns(String) } + def prefix; end + + # Returns the output as a string. + # + # source://prism-0.24.0/lib/prism/node_inspector.rb:64 + sig { returns(String) } + def to_str; end +end + +# Represents an implicit set of parameters through the use of numbered parameters within a block or lambda. +# +# -> { _1 + _2 } +# ^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:14118 +class Prism::NumberedParametersNode < ::Prism::Node + # def initialize: (Integer maximum, Location location) -> void + # + # @return [NumberedParametersNode] a new instance of NumberedParametersNode + # + # source://prism-0.24.0/lib/prism/node.rb:14120 + def initialize(source, maximum, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:14128 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14133 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:14143 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14138 + def compact_child_nodes; end + + # def copy: (**params) -> NumberedParametersNode + # + # source://prism-0.24.0/lib/prism/node.rb:14148 + sig { params(params: T.untyped).returns(Prism::NumberedParametersNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14133 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { maximum: Integer, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:14160 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14169 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader maximum: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:14165 + sig { returns(Integer) } + def maximum; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14189 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14199 + def type; end + end +end + +# Represents reading a numbered reference to a capture in the previous match. +# +# $1 +# ^^ +# +# source://prism-0.24.0/lib/prism/node.rb:14208 +class Prism::NumberedReferenceReadNode < ::Prism::Node + # def initialize: (Integer number, Location location) -> void + # + # @return [NumberedReferenceReadNode] a new instance of NumberedReferenceReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:14210 + def initialize(source, number, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:14218 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14223 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:14233 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14228 + def compact_child_nodes; end + + # def copy: (**params) -> NumberedReferenceReadNode + # + # source://prism-0.24.0/lib/prism/node.rb:14238 + sig { params(params: T.untyped).returns(Prism::NumberedReferenceReadNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14223 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { number: Integer, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:14250 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14265 + def inspect(inspector = T.unsafe(nil)); end + + # The (1-indexed, from the left) number of the capture group. Numbered references that would overflow a `uint32` result in a `number` of exactly `2**32 - 1`. + # + # $1 # number `1` + # + # $5432 # number `5432` + # + # $4294967296 # number `4294967295` + # + # source://prism-0.24.0/lib/prism/node.rb:14261 + sig { returns(Integer) } + def number; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14285 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14295 + def type; end + end +end + +# Represents an optional keyword parameter to a method, block, or lambda definition. +# +# def a(b: 1) +# ^^^^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:14305 +class Prism::OptionalKeywordParameterNode < ::Prism::Node + # def initialize: (Integer flags, Symbol name, Location name_loc, Node value, Location location) -> void + # + # @return [OptionalKeywordParameterNode] a new instance of OptionalKeywordParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:14307 + def initialize(source, flags, name, name_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:14318 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14323 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:14333 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14328 + def compact_child_nodes; end + + # def copy: (**params) -> OptionalKeywordParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:14338 + sig { params(params: T.untyped).returns(Prism::OptionalKeywordParameterNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14323 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, name: Symbol, name_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:14353 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14380 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14362 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:14365 + sig { returns(Prism::Location) } + def name_loc; end + + # def repeated_parameter?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:14375 + sig { returns(T::Boolean) } + def repeated_parameter?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14405 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:14371 + sig { returns(Prism::Node) } + def value; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:14358 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14415 + def type; end + end +end + +# Represents an optional parameter to a method, block, or lambda definition. +# +# def a(b = 1) +# ^^^^^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:14425 +class Prism::OptionalParameterNode < ::Prism::Node + # def initialize: (Integer flags, Symbol name, Location name_loc, Location operator_loc, Node value, Location location) -> void + # + # @return [OptionalParameterNode] a new instance of OptionalParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:14427 + def initialize(source, flags, name, name_loc, operator_loc, value, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:14439 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14444 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:14454 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14449 + def compact_child_nodes; end + + # def copy: (**params) -> OptionalParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:14459 + sig { params(params: T.untyped).returns(Prism::OptionalParameterNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14444 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, name: Symbol, name_loc: Location, operator_loc: Location, value: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:14475 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14513 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14484 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:14487 + sig { returns(Prism::Location) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14508 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:14493 + sig { returns(Prism::Location) } + def operator_loc; end + + # def repeated_parameter?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:14503 + sig { returns(T::Boolean) } + def repeated_parameter?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14539 + def type; end + + # attr_reader value: Node + # + # source://prism-0.24.0/lib/prism/node.rb:14499 + sig { returns(Prism::Node) } + def value; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:14480 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14549 + def type; end + end +end + +# Represents the use of the `||` operator or the `or` keyword. +# +# left or right +# ^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:14558 +class Prism::OrNode < ::Prism::Node + # def initialize: (Node left, Node right, Location operator_loc, Location location) -> void + # + # @return [OrNode] a new instance of OrNode + # + # source://prism-0.24.0/lib/prism/node.rb:14560 + def initialize(source, left, right, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:14570 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14575 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:14585 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14580 + def compact_child_nodes; end + + # def copy: (**params) -> OrNode + # + # source://prism-0.24.0/lib/prism/node.rb:14590 + sig { params(params: T.untyped).returns(Prism::OrNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14575 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { left: Node, right: Node, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:14604 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14642 + def inspect(inspector = T.unsafe(nil)); end + + # Represents the left side of the expression. It can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). + # + # left or right + # ^^^^ + # + # 1 || 2 + # ^ + # + # source://prism-0.24.0/lib/prism/node.rb:14615 + sig { returns(Prism::Node) } + def left; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14637 + sig { returns(String) } + def operator; end + + # The location of the `or` keyword or the `||` operator. + # + # left or right + # ^^ + # + # source://prism-0.24.0/lib/prism/node.rb:14630 + sig { returns(Prism::Location) } + def operator_loc; end + + # Represents the right side of the expression. It can be any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). + # + # left || right + # ^^^^^ + # + # 1 or 2 + # ^ + # + # source://prism-0.24.0/lib/prism/node.rb:14624 + sig { returns(Prism::Node) } + def right; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14666 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14676 + def type; end + end +end + +# A parser for the pack template language. +# +# source://prism-0.24.0/lib/prism/pack.rb:5 +module Prism::Pack + class << self + def parse(_arg0, _arg1, _arg2); end + end +end + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::AGNOSTIC_ENDIAN = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::BACK = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::BER = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::BIG_ENDIAN = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::COMMENT = T.let(T.unsafe(nil), Symbol) + +# A directive in the pack template language. +# +# source://prism-0.24.0/lib/prism/pack.rb:59 +class Prism::Pack::Directive + # Initialize a new directive with the given values. + # + # @return [Directive] a new instance of Directive + # + # source://prism-0.24.0/lib/prism/pack.rb:88 + def initialize(version, variant, source, type, signed, endian, size, length_type, length); end + + # Provide a human-readable description of the directive. + # + # source://prism-0.24.0/lib/prism/pack.rb:130 + def describe; end + + # The type of endianness of the directive. + # + # source://prism-0.24.0/lib/prism/pack.rb:76 + def endian; end + + # The length of this directive (used for integers). + # + # source://prism-0.24.0/lib/prism/pack.rb:85 + def length; end + + # The length type of this directive (used for integers). + # + # source://prism-0.24.0/lib/prism/pack.rb:82 + def length_type; end + + # The type of signedness of the directive. + # + # source://prism-0.24.0/lib/prism/pack.rb:73 + def signed; end + + # The size of the directive. + # + # source://prism-0.24.0/lib/prism/pack.rb:79 + def size; end + + # A byteslice of the source string that this directive represents. + # + # source://prism-0.24.0/lib/prism/pack.rb:67 + def source; end + + # The type of the directive. + # + # source://prism-0.24.0/lib/prism/pack.rb:70 + def type; end + + # A symbol representing whether or not we are packing or unpacking. + # + # source://prism-0.24.0/lib/prism/pack.rb:64 + def variant; end + + # A symbol representing the version of Ruby. + # + # source://prism-0.24.0/lib/prism/pack.rb:61 + def version; end +end + +# The descriptions of the various types of endianness. +# +# source://prism-0.24.0/lib/prism/pack.rb:101 +Prism::Pack::Directive::ENDIAN_DESCRIPTIONS = T.let(T.unsafe(nil), Hash) + +# The descriptions of the various types of signedness. +# +# source://prism-0.24.0/lib/prism/pack.rb:110 +Prism::Pack::Directive::SIGNED_DESCRIPTIONS = T.let(T.unsafe(nil), Hash) + +# The descriptions of the various types of sizes. +# +# source://prism-0.24.0/lib/prism/pack.rb:117 +Prism::Pack::Directive::SIZE_DESCRIPTIONS = T.let(T.unsafe(nil), Hash) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::ENDIAN_NA = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::FLOAT = T.let(T.unsafe(nil), Symbol) + +# The result of parsing a pack template. +# +# source://prism-0.24.0/lib/prism/pack.rb:195 +class Prism::Pack::Format + # Create a new Format with the given directives and encoding. + # + # @return [Format] a new instance of Format + # + # source://prism-0.24.0/lib/prism/pack.rb:203 + def initialize(directives, encoding); end + + # Provide a human-readable description of the format. + # + # source://prism-0.24.0/lib/prism/pack.rb:209 + def describe; end + + # A list of the directives in the template. + # + # source://prism-0.24.0/lib/prism/pack.rb:197 + def directives; end + + # The encoding of the template. + # + # source://prism-0.24.0/lib/prism/pack.rb:200 + def encoding; end +end + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::INTEGER = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::LENGTH_FIXED = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::LENGTH_MAX = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::LENGTH_NA = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::LENGTH_RELATIVE = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::LITTLE_ENDIAN = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::MOVE = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::NATIVE_ENDIAN = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::NULL = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SIGNED = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SIGNED_NA = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SIZE_16 = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SIZE_32 = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SIZE_64 = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SIZE_8 = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SIZE_INT = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SIZE_LONG = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SIZE_LONG_LONG = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SIZE_NA = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SIZE_P = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SIZE_SHORT = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::SPACE = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::STRING_BASE64 = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::STRING_FIXED = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::STRING_HEX_HIGH = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::STRING_HEX_LOW = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::STRING_LSB = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::STRING_MIME = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::STRING_MSB = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::STRING_NULL_PADDED = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::STRING_NULL_TERMINATED = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::STRING_POINTER = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::STRING_SPACE_PADDED = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::STRING_UU = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::UNSIGNED = T.let(T.unsafe(nil), Symbol) + +# source://prism-0.24.0/lib/prism/pack.rb:55 +Prism::Pack::UTF8 = T.let(T.unsafe(nil), Symbol) + +# Flags for parameter nodes. +# +# source://prism-0.24.0/lib/prism/node.rb:19304 +module Prism::ParameterFlags; end + +# a parameter name that has been repeated in the method signature +# +# source://prism-0.24.0/lib/prism/node.rb:19306 +Prism::ParameterFlags::REPEATED_PARAMETER = T.let(T.unsafe(nil), Integer) + +# Represents the list of parameters on a method, block, or lambda definition. +# +# def a(b, c, d) +# ^^^^^^^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:14686 +class Prism::ParametersNode < ::Prism::Node + # def initialize: (Array[Node] requireds, Array[Node] optionals, Node? rest, Array[Node] posts, Array[Node] keywords, Node? keyword_rest, BlockParameterNode? block, Location location) -> void + # + # @return [ParametersNode] a new instance of ParametersNode + # + # source://prism-0.24.0/lib/prism/node.rb:14688 + def initialize(source, requireds, optionals, rest, posts, keywords, keyword_rest, block, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:14702 + def accept(visitor); end + + # attr_reader block: BlockParameterNode? + # + # source://prism-0.24.0/lib/prism/node.rb:14771 + sig { returns(T.nilable(Prism::BlockParameterNode)) } + def block; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14707 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:14725 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14712 + def compact_child_nodes; end + + # def copy: (**params) -> ParametersNode + # + # source://prism-0.24.0/lib/prism/node.rb:14730 + sig { params(params: T.untyped).returns(Prism::ParametersNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14707 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { requireds: Array[Node], optionals: Array[Node], rest: Node?, posts: Array[Node], keywords: Array[Node], keyword_rest: Node?, block: BlockParameterNode?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:14748 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14775 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader keyword_rest: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:14768 + sig { returns(T.nilable(Prism::Node)) } + def keyword_rest; end + + # attr_reader keywords: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14765 + sig { returns(T::Array[Prism::Node]) } + def keywords; end + + # attr_reader optionals: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14756 + sig { returns(T::Array[Prism::Node]) } + def optionals; end + + # attr_reader posts: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14762 + sig { returns(T::Array[Prism::Node]) } + def posts; end + + # attr_reader requireds: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14753 + sig { returns(T::Array[Prism::Node]) } + def requireds; end + + # attr_reader rest: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:14759 + sig { returns(T.nilable(Prism::Node)) } + def rest; end + + # Mirrors the Method#parameters method. + # + # source://prism-0.24.0/lib/prism/node_ext.rb:172 + def signature; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14816 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14826 + def type; end + end +end + +# Represents a parenthesized expression +# +# (10 + 34) +# ^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:14835 +class Prism::ParenthesesNode < ::Prism::Node + # def initialize: (Node? body, Location opening_loc, Location closing_loc, Location location) -> void + # + # @return [ParenthesesNode] a new instance of ParenthesesNode + # + # source://prism-0.24.0/lib/prism/node.rb:14837 + def initialize(source, body, opening_loc, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:14847 + def accept(visitor); end + + # attr_reader body: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:14892 + sig { returns(T.nilable(Prism::Node)) } + def body; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14856 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14913 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:14901 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:14868 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14861 + def compact_child_nodes; end + + # def copy: (**params) -> ParenthesesNode + # + # source://prism-0.24.0/lib/prism/node.rb:14873 + sig { params(params: T.untyped).returns(Prism::ParenthesesNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14856 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { body: Node?, opening_loc: Location, closing_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:14887 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14918 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:14908 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:14895 + sig { returns(Prism::Location) } + def opening_loc; end + + # source://prism-0.24.0/lib/prism/node.rb:14851 + def set_newline_flag(newline_marked); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14945 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:14955 + def type; end + end +end + +# This represents an error that was encountered during parsing. +# +# source://prism-0.24.0/lib/prism/parse_result.rb:338 +class Prism::ParseError + # Create a new error object with the given message and location. + # + # @return [ParseError] a new instance of ParseError + # + # source://prism-0.24.0/lib/prism/parse_result.rb:349 + def initialize(message, location, level); end + + # Implement the hash pattern matching interface for ParseError. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:356 + def deconstruct_keys(keys); end + + # Returns a string representation of this error. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:361 + def inspect; end + + # The level of this error. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:346 + def level; end + + # A Location object representing the location of this error in the source. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:343 + sig { returns(Prism::Location) } + def location; end + + # The message associated with this error. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:340 + sig { returns(String) } + def message; end +end + +# This represents the result of a call to ::parse or ::parse_file. It contains +# the AST, any comments that were encounters, and any errors that were +# encountered. +# +# source://prism-0.24.0/lib/prism/parse_result.rb:398 +class Prism::ParseResult + # Create a new parse result object with the given values. + # + # @return [ParseResult] a new instance of ParseResult + # + # source://prism-0.24.0/lib/prism/parse_result.rb:425 + def initialize(value, comments, magic_comments, data_loc, errors, warnings, source); end + + # Attach the list of comments to their respective locations in the tree. + # + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:173 + def attach_comments!; end + + # The list of comments that were encountered during parsing. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:405 + sig { returns(T::Array[Prism::Comment]) } + def comments; end + + # An optional location that represents the location of the __END__ marker + # 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-0.24.0/lib/prism/parse_result.rb:413 + def data_loc; end + + # Implement the hash pattern matching interface for ParseResult. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:436 + def deconstruct_keys(keys); end + + # The list of errors that were generated during parsing. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:416 + sig { returns(T::Array[Prism::ParseError]) } + def errors; end + + # Returns true if there were errors during parsing and false if there were + # not. + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/parse_result.rb:448 + def failure?; end + + # The list of magic comments that were encountered during parsing. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:408 + def magic_comments; end + + # Walk the tree and mark nodes that are on a new line. + # + # source://prism-0.24.0/lib/prism/parse_result/newlines.rb:60 + def mark_newlines!; end + + # A Source instance that represents the source code that was parsed. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:422 + sig { returns(Prism::Source) } + def source; end + + # Returns true if there were no errors during parsing and false if there + # were. + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/parse_result.rb:442 + def success?; end + + # The value that was generated by parsing. Normally this holds the AST, but + # it can sometimes how a list of tokens or other results passed back from + # the parser. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:402 + sig { returns(Prism::ProgramNode) } + def value; end + + # The list of warnings that were generated during parsing. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:419 + sig { returns(T::Array[Prism::ParseWarning]) } + def warnings; end +end + +# When we've parsed the source, we have both the syntax tree and the list of +# comments that we found in the source. This class is responsible for +# walking the tree and finding the nearest location to attach each comment. +# +# It does this by first finding the nearest locations to each comment. +# Locations can either come from nodes directly or from location fields on +# nodes. For example, a `ClassNode` has an overall location encompassing the +# entire class, but it also has a location for the `class` keyword. +# +# Once the nearest locations are found, it determines which one to attach +# to. If it's a trailing comment (a comment on the same line as other source +# code), it will favor attaching to the nearest location that occurs before +# the comment. Otherwise it will favor attaching to the nearest location +# that is after the comment. +# +# source://prism-0.24.0/lib/prism/parse_result/comments.rb:19 +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-0.24.0/lib/prism/parse_result/comments.rb:78 + def initialize(parse_result); end + + # Attach the comments to their respective locations in the tree by + # mutating the parse result. + # + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:84 + def attach!; end + + # The parse result that we are attaching comments to. + # + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:74 + def parse_result; end + + private + + # Responsible for finding the nearest targets to the given comment within + # the context of the given encapsulating node. + # + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:103 + 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-0.24.0/lib/prism/parse_result/comments.rb:49 +class Prism::ParseResult::Comments::LocationTarget + # @return [LocationTarget] a new instance of LocationTarget + # + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:52 + def initialize(location); end + + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:68 + def <<(comment); end + + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:64 + def encloses?(comment); end + + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:60 + def end_offset; end + + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:50 + def location; end + + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:56 + def start_offset; end +end + +# A target for attaching comments that is based on a specific node's +# location. +# +# source://prism-0.24.0/lib/prism/parse_result/comments.rb:22 +class Prism::ParseResult::Comments::NodeTarget + # @return [NodeTarget] a new instance of NodeTarget + # + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:25 + def initialize(node); end + + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:42 + def <<(comment); end + + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:37 + def encloses?(comment); end + + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:33 + def end_offset; end + + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:23 + def node; end + + # source://prism-0.24.0/lib/prism/parse_result/comments.rb:29 + def start_offset; end +end + +# The :line tracepoint event gets fired whenever the Ruby VM encounters an +# expression on a new line. The types of expressions that can trigger this +# event are: +# +# * if statements +# * unless statements +# * nodes that are children of statements lists +# +# In order to keep track of the newlines, we have a list of offsets that +# come back from the parser. We assign these offsets to the first nodes that +# we find in the tree that are on those lines. +# +# Note that the logic in this file should be kept in sync with the Java +# MarkNewlinesVisitor, since that visitor is responsible for marking the +# newlines for JRuby/TruffleRuby. +# +# source://prism-0.24.0/lib/prism/parse_result/newlines.rb:20 +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-0.24.0/lib/prism/parse_result/newlines.rb:22 + def initialize(newline_marked); end + + # Permit block/lambda nodes to mark newlines within themselves. + # + # source://prism-0.24.0/lib/prism/parse_result/newlines.rb:27 + def visit_block_node(node); end + + # Mark if/unless nodes as newlines. + # + # source://prism-0.24.0/lib/prism/parse_result/newlines.rb:41 + def visit_if_node(node); end + + # Permit block/lambda nodes to mark newlines within themselves. + # + # source://prism-0.24.0/lib/prism/parse_result/newlines.rb:27 + def visit_lambda_node(node); end + + # Permit statements lists to mark newlines within themselves. + # + # source://prism-0.24.0/lib/prism/parse_result/newlines.rb:49 + def visit_statements_node(node); end + + # Mark if/unless nodes as newlines. + # + # source://prism-0.24.0/lib/prism/parse_result/newlines.rb:41 + def visit_unless_node(node); end +end + +# This represents a warning that was encountered during parsing. +# +# source://prism-0.24.0/lib/prism/parse_result.rb:367 +class Prism::ParseWarning + # Create a new warning object with the given message and location. + # + # @return [ParseWarning] a new instance of ParseWarning + # + # source://prism-0.24.0/lib/prism/parse_result.rb:378 + def initialize(message, location, level); end + + # Implement the hash pattern matching interface for ParseWarning. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:385 + def deconstruct_keys(keys); end + + # Returns a string representation of this warning. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:390 + def inspect; end + + # The level of this warning. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:375 + def level; end + + # A Location object representing the location of this warning in the source. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:372 + sig { returns(Prism::Location) } + def location; end + + # The message associated with this warning. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:369 + sig { returns(String) } + def message; end +end + +# A pattern is an object that wraps a Ruby pattern matching expression. The +# expression would normally be passed to an `in` clause within a `case` +# expression or a rightward assignment expression. For example, in the +# following snippet: +# +# case node +# in ConstantPathNode[ConstantReadNode[name: :Prism], ConstantReadNode[name: :Pattern]] +# end +# +# the pattern is the ConstantPathNode[...] expression. +# +# The pattern gets compiled into an object that responds to #call by running +# the #compile method. This method itself will run back through Prism to +# parse the expression into a tree, then walk the tree to generate the +# necessary callable objects. For example, if you wanted to compile the +# expression above into a callable, you would: +# +# callable = Prism::Pattern.new("ConstantPathNode[ConstantReadNode[name: :Prism], ConstantReadNode[name: :Pattern]]").compile +# callable.call(node) +# +# The callable object returned by #compile is guaranteed to respond to #call +# with a single argument, which is the node to match against. It also is +# guaranteed to respond to #===, which means it itself can be used in a `case` +# expression, as in: +# +# case node +# when callable +# end +# +# If the query given to the initializer cannot be compiled into a valid +# matcher (either because of a syntax error or because it is using syntax we +# do not yet support) then a Prism::Pattern::CompilationError will be +# raised. +# +# source://prism-0.24.0/lib/prism/pattern.rb:37 +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-0.24.0/lib/prism/pattern.rb:63 + def initialize(query); end + + # Compile the query into a callable object that can be used to match against + # nodes. + # + # source://prism-0.24.0/lib/prism/pattern.rb:70 + def compile; end + + # The query that this pattern was initialized with. + # + # source://prism-0.24.0/lib/prism/pattern.rb:59 + def query; end + + # Scan the given node and all of its children for nodes that match the + # pattern. If a block is given, it will be called with each node that + # matches the pattern. If no block is given, an enumerator will be returned + # that will yield each node that matches the pattern. + # + # source://prism-0.24.0/lib/prism/pattern.rb:79 + def scan(root); end + + private + + # Shortcut for combining two procs into one that returns true if both return + # true. + # + # source://prism-0.24.0/lib/prism/pattern.rb:95 + def combine_and(left, right); end + + # Shortcut for combining two procs into one that returns true if either + # returns true. + # + # source://prism-0.24.0/lib/prism/pattern.rb:101 + def combine_or(left, right); end + + # in foo | bar + # + # source://prism-0.24.0/lib/prism/pattern.rb:136 + def compile_alternation_pattern_node(node); end + + # in [foo, bar, baz] + # + # source://prism-0.24.0/lib/prism/pattern.rb:111 + def compile_array_pattern_node(node); end + + # in Prism::ConstantReadNode + # + # source://prism-0.24.0/lib/prism/pattern.rb:141 + def compile_constant_path_node(node); end + + # in ConstantReadNode + # in String + # + # source://prism-0.24.0/lib/prism/pattern.rb:153 + def compile_constant_read_node(node); end + + # Raise an error because the given node is not supported. + # + # @raise [CompilationError] + # + # source://prism-0.24.0/lib/prism/pattern.rb:106 + def compile_error(node); end + + # in InstanceVariableReadNode[name: Symbol] + # in { name: Symbol } + # + # source://prism-0.24.0/lib/prism/pattern.rb:171 + def compile_hash_pattern_node(node); end + + # in nil + # + # source://prism-0.24.0/lib/prism/pattern.rb:196 + 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-0.24.0/lib/prism/pattern.rb:225 + def compile_node(node); end + + # in /foo/ + # + # source://prism-0.24.0/lib/prism/pattern.rb:201 + def compile_regular_expression_node(node); end + + # in "" + # in "foo" + # + # source://prism-0.24.0/lib/prism/pattern.rb:209 + def compile_string_node(node); end + + # in :+ + # in :foo + # + # source://prism-0.24.0/lib/prism/pattern.rb:217 + 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-0.24.0/lib/prism/pattern.rb:40 +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-0.24.0/lib/prism/pattern.rb:43 + def initialize(repr); end +end + +# Represents the use of the `^` operator for pinning an expression in a pattern matching expression. +# +# foo in ^(bar) +# ^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:14964 +class Prism::PinnedExpressionNode < ::Prism::Node + # def initialize: (Node expression, Location operator_loc, Location lparen_loc, Location rparen_loc, Location location) -> void + # + # @return [PinnedExpressionNode] a new instance of PinnedExpressionNode + # + # source://prism-0.24.0/lib/prism/node.rb:14966 + def initialize(source, expression, operator_loc, lparen_loc, rparen_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:14977 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14982 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:14992 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14987 + def compact_child_nodes; end + + # def copy: (**params) -> PinnedExpressionNode + # + # source://prism-0.24.0/lib/prism/node.rb:14997 + sig { params(params: T.untyped).returns(Prism::PinnedExpressionNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:14982 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { expression: Node, operator_loc: Location, lparen_loc: Location, rparen_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:15012 + def deconstruct_keys(keys); end + + # attr_reader expression: Node + # + # source://prism-0.24.0/lib/prism/node.rb:15017 + sig { returns(Prism::Node) } + def expression; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15054 + def inspect(inspector = T.unsafe(nil)); end + + # def lparen: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15044 + sig { returns(String) } + def lparen; end + + # attr_reader lparen_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15026 + sig { returns(Prism::Location) } + def lparen_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15039 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15020 + sig { returns(Prism::Location) } + def operator_loc; end + + # def rparen: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15049 + sig { returns(String) } + def rparen; end + + # attr_reader rparen_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15032 + sig { returns(Prism::Location) } + def rparen_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15078 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15088 + def type; end + end +end + +# Represents the use of the `^` operator for pinning a variable in a pattern matching expression. +# +# foo in ^bar +# ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:15097 +class Prism::PinnedVariableNode < ::Prism::Node + # def initialize: (Node variable, Location operator_loc, Location location) -> void + # + # @return [PinnedVariableNode] a new instance of PinnedVariableNode + # + # source://prism-0.24.0/lib/prism/node.rb:15099 + def initialize(source, variable, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:15108 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15113 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:15123 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15118 + def compact_child_nodes; end + + # def copy: (**params) -> PinnedVariableNode + # + # source://prism-0.24.0/lib/prism/node.rb:15128 + sig { params(params: T.untyped).returns(Prism::PinnedVariableNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15113 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { variable: Node, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:15141 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15161 + def inspect(inspector = T.unsafe(nil)); end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15156 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15149 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15183 + def type; end + + # attr_reader variable: Node + # + # source://prism-0.24.0/lib/prism/node.rb:15146 + sig { returns(Prism::Node) } + def variable; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15193 + def type; end + end +end + +# Represents the use of the `END` keyword. +# +# END { foo } +# ^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:15202 +class Prism::PostExecutionNode < ::Prism::Node + # def initialize: (StatementsNode? statements, Location keyword_loc, Location opening_loc, Location closing_loc, Location location) -> void + # + # @return [PostExecutionNode] a new instance of PostExecutionNode + # + # source://prism-0.24.0/lib/prism/node.rb:15204 + def initialize(source, statements, keyword_loc, opening_loc, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:15215 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15220 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15289 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15272 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:15232 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15225 + def compact_child_nodes; end + + # def copy: (**params) -> PostExecutionNode + # + # source://prism-0.24.0/lib/prism/node.rb:15237 + sig { params(params: T.untyped).returns(Prism::PostExecutionNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15220 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { statements: StatementsNode?, keyword_loc: Location, opening_loc: Location, closing_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:15252 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15294 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15279 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15260 + sig { returns(Prism::Location) } + def keyword_loc; end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15284 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15266 + sig { returns(Prism::Location) } + def opening_loc; end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:15257 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15322 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15332 + def type; end + end +end + +# Represents the use of the `BEGIN` keyword. +# +# BEGIN { foo } +# ^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:15341 +class Prism::PreExecutionNode < ::Prism::Node + # def initialize: (StatementsNode? statements, Location keyword_loc, Location opening_loc, Location closing_loc, Location location) -> void + # + # @return [PreExecutionNode] a new instance of PreExecutionNode + # + # source://prism-0.24.0/lib/prism/node.rb:15343 + def initialize(source, statements, keyword_loc, opening_loc, closing_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:15354 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15359 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15428 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15411 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:15371 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15364 + def compact_child_nodes; end + + # def copy: (**params) -> PreExecutionNode + # + # source://prism-0.24.0/lib/prism/node.rb:15376 + sig { params(params: T.untyped).returns(Prism::PreExecutionNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15359 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { statements: StatementsNode?, keyword_loc: Location, opening_loc: Location, closing_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:15391 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15433 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15418 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15399 + sig { returns(Prism::Location) } + def keyword_loc; end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15423 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15405 + sig { returns(Prism::Location) } + def opening_loc; end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:15396 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15461 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15471 + def type; end + end +end + +# The top level node of any parse tree. +# +# source://prism-0.24.0/lib/prism/node.rb:15477 +class Prism::ProgramNode < ::Prism::Node + # def initialize: (Array[Symbol] locals, StatementsNode statements, Location location) -> void + # + # @return [ProgramNode] a new instance of ProgramNode + # + # source://prism-0.24.0/lib/prism/node.rb:15479 + def initialize(source, locals, statements, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:15488 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15493 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:15503 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15498 + def compact_child_nodes; end + + # def copy: (**params) -> ProgramNode + # + # source://prism-0.24.0/lib/prism/node.rb:15508 + sig { params(params: T.untyped).returns(Prism::ProgramNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15493 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { locals: Array[Symbol], statements: StatementsNode, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:15521 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15533 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader locals: Array[Symbol] + # + # source://prism-0.24.0/lib/prism/node.rb:15526 + sig { returns(T::Array[Symbol]) } + def locals; end + + # attr_reader statements: StatementsNode + # + # source://prism-0.24.0/lib/prism/node.rb:15529 + sig { returns(Prism::StatementsNode) } + def statements; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15555 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15565 + def type; end + end +end + +# Flags for range and flip-flop nodes. +# +# source://prism-0.24.0/lib/prism/node.rb:19310 +module Prism::RangeFlags; end + +# ... operator +# +# source://prism-0.24.0/lib/prism/node.rb:19312 +Prism::RangeFlags::EXCLUDE_END = T.let(T.unsafe(nil), Integer) + +# Represents the use of the `..` or `...` operators. +# +# 1..2 +# ^^^^ +# +# c if a =~ /left/ ... b =~ /right/ +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:15577 +class Prism::RangeNode < ::Prism::Node + # def initialize: (Integer flags, Node? left, Node? right, Location operator_loc, Location location) -> void + # + # @return [RangeNode] a new instance of RangeNode + # + # source://prism-0.24.0/lib/prism/node.rb:15579 + def initialize(source, flags, left, right, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:15590 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15595 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:15608 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15600 + def compact_child_nodes; end + + # def copy: (**params) -> RangeNode + # + # source://prism-0.24.0/lib/prism/node.rb:15613 + sig { params(params: T.untyped).returns(Prism::RangeNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15595 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, left: Node?, right: Node?, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:15628 + def deconstruct_keys(keys); end + + # def exclude_end?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:15663 + sig { returns(T::Boolean) } + def exclude_end?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15673 + def inspect(inspector = T.unsafe(nil)); end + + # The left-hand side of the range, if present. It can be either `nil` or any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). + # + # 1... + # ^ + # + # hello...goodbye + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/node.rb:15643 + sig { returns(T.nilable(Prism::Node)) } + def left; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15668 + sig { returns(String) } + def operator; end + + # The location of the `..` or `...` operator. + # + # source://prism-0.24.0/lib/prism/node.rb:15656 + sig { returns(Prism::Location) } + def operator_loc; end + + # The right-hand side of the range, if present. It can be either `nil` or any [non-void expression](https://github.com/ruby/prism/blob/main/docs/parsing_rules.md#non-void-expression). + # + # ..5 + # ^ + # + # 1...foo + # ^^^ + # If neither right-hand or left-hand side was included, this will be a MissingNode. + # + # source://prism-0.24.0/lib/prism/node.rb:15653 + sig { returns(T.nilable(Prism::Node)) } + def right; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15707 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:15633 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15717 + def type; end + end +end + +# Represents a rational number literal. +# +# 1.0r +# ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:15726 +class Prism::RationalNode < ::Prism::Node + # def initialize: (Node numeric, Location location) -> void + # + # @return [RationalNode] a new instance of RationalNode + # + # source://prism-0.24.0/lib/prism/node.rb:15728 + def initialize(source, numeric, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:15736 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15741 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:15751 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15746 + def compact_child_nodes; end + + # def copy: (**params) -> RationalNode + # + # source://prism-0.24.0/lib/prism/node.rb:15756 + sig { params(params: T.untyped).returns(Prism::RationalNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15741 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { numeric: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:15768 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15777 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader numeric: Node + # + # source://prism-0.24.0/lib/prism/node.rb:15773 + sig { returns(Prism::Node) } + def numeric; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15798 + def type; end + + # Returns the value of the node as a Ruby Rational. + # + # source://prism-0.24.0/lib/prism/node_ext.rb:83 + def value; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15808 + def type; end + end +end + +# Represents the use of the `redo` keyword. +# +# redo +# ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:15817 +class Prism::RedoNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [RedoNode] a new instance of RedoNode + # + # source://prism-0.24.0/lib/prism/node.rb:15819 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:15826 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15831 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:15841 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15836 + def compact_child_nodes; end + + # def copy: (**params) -> RedoNode + # + # source://prism-0.24.0/lib/prism/node.rb:15846 + sig { params(params: T.untyped).returns(Prism::RedoNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15831 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:15857 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:15863 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15882 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:15892 + def type; end + end +end + +# Flags for regular expression and match last line nodes. +# +# source://prism-0.24.0/lib/prism/node.rb:19316 +module Prism::RegularExpressionFlags; end + +# n - forces the ASCII-8BIT encoding +# +# source://prism-0.24.0/lib/prism/node.rb:19333 +Prism::RegularExpressionFlags::ASCII_8BIT = T.let(T.unsafe(nil), Integer) + +# e - forces the EUC-JP encoding +# +# source://prism-0.24.0/lib/prism/node.rb:19330 +Prism::RegularExpressionFlags::EUC_JP = T.let(T.unsafe(nil), Integer) + +# x - ignores whitespace and allows comments in regular expressions +# +# source://prism-0.24.0/lib/prism/node.rb:19321 +Prism::RegularExpressionFlags::EXTENDED = T.let(T.unsafe(nil), Integer) + +# internal bytes forced the encoding to binary +# +# source://prism-0.24.0/lib/prism/node.rb:19345 +Prism::RegularExpressionFlags::FORCED_BINARY_ENCODING = T.let(T.unsafe(nil), Integer) + +# internal bytes forced the encoding to US-ASCII +# +# source://prism-0.24.0/lib/prism/node.rb:19348 +Prism::RegularExpressionFlags::FORCED_US_ASCII_ENCODING = T.let(T.unsafe(nil), Integer) + +# internal bytes forced the encoding to UTF-8 +# +# source://prism-0.24.0/lib/prism/node.rb:19342 +Prism::RegularExpressionFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) + +# i - ignores the case of characters when matching +# +# source://prism-0.24.0/lib/prism/node.rb:19318 +Prism::RegularExpressionFlags::IGNORE_CASE = T.let(T.unsafe(nil), Integer) + +# m - allows $ to match the end of lines within strings +# +# source://prism-0.24.0/lib/prism/node.rb:19324 +Prism::RegularExpressionFlags::MULTI_LINE = T.let(T.unsafe(nil), Integer) + +# o - only interpolates values into the regular expression once +# +# source://prism-0.24.0/lib/prism/node.rb:19327 +Prism::RegularExpressionFlags::ONCE = T.let(T.unsafe(nil), Integer) + +# u - forces the UTF-8 encoding +# +# source://prism-0.24.0/lib/prism/node.rb:19339 +Prism::RegularExpressionFlags::UTF_8 = T.let(T.unsafe(nil), Integer) + +# s - forces the Windows-31J encoding +# +# source://prism-0.24.0/lib/prism/node.rb:19336 +Prism::RegularExpressionFlags::WINDOWS_31J = T.let(T.unsafe(nil), Integer) + +# Represents a regular expression literal with no interpolation. +# +# /foo/i +# ^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:15901 +class Prism::RegularExpressionNode < ::Prism::Node + include ::Prism::RegularExpressionOptions + + # def initialize: (Integer flags, Location opening_loc, Location content_loc, Location closing_loc, String unescaped, Location location) -> void + # + # @return [RegularExpressionNode] a new instance of RegularExpressionNode + # + # source://prism-0.24.0/lib/prism/node.rb:15903 + def initialize(source, flags, opening_loc, content_loc, closing_loc, unescaped, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:15915 + def accept(visitor); end + + # def ascii_8bit?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:16007 + sig { returns(T::Boolean) } + def ascii_8bit?; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15920 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16047 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15972 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:15930 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15925 + def compact_child_nodes; end + + # def content: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16042 + sig { returns(String) } + def content; end + + # attr_reader content_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15966 + sig { returns(Prism::Location) } + def content_loc; end + + # def copy: (**params) -> RegularExpressionNode + # + # source://prism-0.24.0/lib/prism/node.rb:15935 + sig { params(params: T.untyped).returns(Prism::RegularExpressionNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:15920 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:15951 + def deconstruct_keys(keys); end + + # def euc_jp?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:16002 + sig { returns(T::Boolean) } + def euc_jp?; end + + # def extended?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:15987 + sig { returns(T::Boolean) } + def extended?; end + + # def forced_binary_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:16027 + sig { returns(T::Boolean) } + def forced_binary_encoding?; end + + # def forced_us_ascii_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:16032 + sig { returns(T::Boolean) } + def forced_us_ascii_encoding?; end + + # def forced_utf8_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:16022 + sig { returns(T::Boolean) } + def forced_utf8_encoding?; end + + # def ignore_case?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:15982 + sig { returns(T::Boolean) } + def ignore_case?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16052 + def inspect(inspector = T.unsafe(nil)); end + + # def multi_line?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:15992 + sig { returns(T::Boolean) } + def multi_line?; end + + # def once?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:15997 + sig { returns(T::Boolean) } + def once?; end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16037 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:15960 + sig { returns(Prism::Location) } + def opening_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16077 + def type; end + + # attr_reader unescaped: String + # + # source://prism-0.24.0/lib/prism/node.rb:15978 + sig { returns(String) } + def unescaped; end + + # def utf_8?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:16017 + sig { returns(T::Boolean) } + def utf_8?; end + + # def windows_31j?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:16012 + sig { returns(T::Boolean) } + def windows_31j?; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:15956 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16087 + def type; end + end +end + +# source://prism-0.24.0/lib/prism/node_ext.rb:6 +module Prism::RegularExpressionOptions + # Returns a numeric value that represents the flags that were used to create + # the regular expression. + # + # source://prism-0.24.0/lib/prism/node_ext.rb:9 + def options; end +end + +# Represents a required keyword parameter to a method, block, or lambda definition. +# +# def a(b: ) +# ^^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:16097 +class Prism::RequiredKeywordParameterNode < ::Prism::Node + # def initialize: (Integer flags, Symbol name, Location name_loc, Location location) -> void + # + # @return [RequiredKeywordParameterNode] a new instance of RequiredKeywordParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:16099 + def initialize(source, flags, name, name_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:16109 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16114 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:16124 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16119 + def compact_child_nodes; end + + # def copy: (**params) -> RequiredKeywordParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:16129 + sig { params(params: T.untyped).returns(Prism::RequiredKeywordParameterNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16114 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, name: Symbol, name_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:16143 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16167 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16152 + sig { returns(Symbol) } + def name; end + + # attr_reader name_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:16155 + sig { returns(Prism::Location) } + def name_loc; end + + # def repeated_parameter?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:16162 + sig { returns(T::Boolean) } + def repeated_parameter?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16190 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:16148 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16200 + def type; end + end +end + +# Represents a required parameter to a method, block, or lambda definition. +# +# def a(b) +# ^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:16210 +class Prism::RequiredParameterNode < ::Prism::Node + # def initialize: (Integer flags, Symbol name, Location location) -> void + # + # @return [RequiredParameterNode] a new instance of RequiredParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:16212 + def initialize(source, flags, name, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:16221 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16226 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:16236 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16231 + def compact_child_nodes; end + + # def copy: (**params) -> RequiredParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:16241 + sig { params(params: T.untyped).returns(Prism::RequiredParameterNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16226 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, name: Symbol, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:16254 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16272 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16263 + sig { returns(Symbol) } + def name; end + + # def repeated_parameter?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:16267 + sig { returns(T::Boolean) } + def repeated_parameter?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16294 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:16259 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16304 + def type; end + end +end + +# Represents an expression modified with a rescue. +# +# foo rescue nil +# ^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:16313 +class Prism::RescueModifierNode < ::Prism::Node + # def initialize: (Node expression, Location keyword_loc, Node rescue_expression, Location location) -> void + # + # @return [RescueModifierNode] a new instance of RescueModifierNode + # + # source://prism-0.24.0/lib/prism/node.rb:16315 + def initialize(source, expression, keyword_loc, rescue_expression, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:16325 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16334 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:16344 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16339 + def compact_child_nodes; end + + # def copy: (**params) -> RescueModifierNode + # + # source://prism-0.24.0/lib/prism/node.rb:16349 + sig { params(params: T.untyped).returns(Prism::RescueModifierNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16334 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { expression: Node, keyword_loc: Location, rescue_expression: Node, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:16363 + def deconstruct_keys(keys); end + + # attr_reader expression: Node + # + # source://prism-0.24.0/lib/prism/node.rb:16368 + sig { returns(Prism::Node) } + def expression; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16386 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16381 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:16371 + sig { returns(Prism::Location) } + def keyword_loc; end + + # attr_reader rescue_expression: Node + # + # source://prism-0.24.0/lib/prism/node.rb:16377 + sig { returns(Prism::Node) } + def rescue_expression; end + + # source://prism-0.24.0/lib/prism/node.rb:16329 + def set_newline_flag(newline_marked); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16410 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16420 + def type; end + end +end + +# Represents a rescue statement. +# +# begin +# rescue Foo, *splat, Bar => ex +# foo +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +# end +# +# `Foo, *splat, Bar` are in the `exceptions` field. `ex` is in the `exception` field. +# +# source://prism-0.24.0/lib/prism/node.rb:16434 +class Prism::RescueNode < ::Prism::Node + # def initialize: (Location keyword_loc, Array[Node] exceptions, Location? operator_loc, Node? reference, StatementsNode? statements, RescueNode? consequent, Location location) -> void + # + # @return [RescueNode] a new instance of RescueNode + # + # source://prism-0.24.0/lib/prism/node.rb:16436 + def initialize(source, keyword_loc, exceptions, operator_loc, reference, statements, consequent, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:16449 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16454 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:16469 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16459 + def compact_child_nodes; end + + # attr_reader consequent: RescueNode? + # + # source://prism-0.24.0/lib/prism/node.rb:16523 + sig { returns(T.nilable(Prism::RescueNode)) } + def consequent; end + + # def copy: (**params) -> RescueNode + # + # source://prism-0.24.0/lib/prism/node.rb:16474 + sig { params(params: T.untyped).returns(Prism::RescueNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16454 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { keyword_loc: Location, exceptions: Array[Node], operator_loc: Location?, reference: Node?, statements: StatementsNode?, consequent: RescueNode?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:16491 + def deconstruct_keys(keys); end + + # attr_reader exceptions: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16502 + sig { returns(T::Array[Prism::Node]) } + def exceptions; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16537 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16527 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:16496 + sig { returns(Prism::Location) } + def keyword_loc; end + + # def operator: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:16532 + sig { returns(T.nilable(String)) } + def operator; end + + # attr_reader operator_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:16505 + sig { returns(T.nilable(Prism::Location)) } + def operator_loc; end + + # attr_reader reference: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:16517 + sig { returns(T.nilable(Prism::Node)) } + def reference; end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:16520 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16577 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16587 + def type; end + end +end + +# Represents a rest parameter to a method, block, or lambda definition. +# +# def a(*b) +# ^^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:16597 +class Prism::RestParameterNode < ::Prism::Node + # def initialize: (Integer flags, Symbol? name, Location? name_loc, Location operator_loc, Location location) -> void + # + # @return [RestParameterNode] a new instance of RestParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:16599 + def initialize(source, flags, name, name_loc, operator_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:16610 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16615 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:16625 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16620 + def compact_child_nodes; end + + # def copy: (**params) -> RestParameterNode + # + # source://prism-0.24.0/lib/prism/node.rb:16630 + sig { params(params: T.untyped).returns(Prism::RestParameterNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16615 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, name: Symbol?, name_loc: Location?, operator_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:16645 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16686 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader name: Symbol? + # + # source://prism-0.24.0/lib/prism/node.rb:16654 + sig { returns(T.nilable(Symbol)) } + def name; end + + # attr_reader name_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:16657 + sig { returns(T.nilable(Prism::Location)) } + def name_loc; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16681 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:16669 + sig { returns(Prism::Location) } + def operator_loc; end + + # def repeated_parameter?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:16676 + sig { returns(T::Boolean) } + def repeated_parameter?; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16714 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:16650 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16724 + def type; end + end +end + +# Represents the use of the `retry` keyword. +# +# retry +# ^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:16733 +class Prism::RetryNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [RetryNode] a new instance of RetryNode + # + # source://prism-0.24.0/lib/prism/node.rb:16735 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:16742 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16747 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:16757 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16752 + def compact_child_nodes; end + + # def copy: (**params) -> RetryNode + # + # source://prism-0.24.0/lib/prism/node.rb:16762 + sig { params(params: T.untyped).returns(Prism::RetryNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16747 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:16773 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16779 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16798 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16808 + def type; end + end +end + +# Represents the use of the `return` keyword. +# +# return 1 +# ^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:16817 +class Prism::ReturnNode < ::Prism::Node + # def initialize: (Location keyword_loc, ArgumentsNode? arguments, Location location) -> void + # + # @return [ReturnNode] a new instance of ReturnNode + # + # source://prism-0.24.0/lib/prism/node.rb:16819 + def initialize(source, keyword_loc, arguments, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:16828 + def accept(visitor); end + + # attr_reader arguments: ArgumentsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:16874 + sig { returns(T.nilable(Prism::ArgumentsNode)) } + def arguments; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16833 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:16845 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16838 + def compact_child_nodes; end + + # def copy: (**params) -> ReturnNode + # + # source://prism-0.24.0/lib/prism/node.rb:16850 + sig { params(params: T.untyped).returns(Prism::ReturnNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16833 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { keyword_loc: Location, arguments: ArgumentsNode?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:16863 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16883 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16878 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:16868 + sig { returns(Prism::Location) } + def keyword_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16909 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16919 + def type; end + end +end + +# Represents the `self` keyword. +# +# self +# ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:16928 +class Prism::SelfNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [SelfNode] a new instance of SelfNode + # + # source://prism-0.24.0/lib/prism/node.rb:16930 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:16937 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16942 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:16952 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16947 + def compact_child_nodes; end + + # def copy: (**params) -> SelfNode + # + # source://prism-0.24.0/lib/prism/node.rb:16957 + sig { params(params: T.untyped).returns(Prism::SelfNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:16942 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:16968 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:16974 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:16993 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17003 + def type; end + end +end + +# A module responsible for deserializing parse results. +# +# source://prism-0.24.0/lib/prism/serialize.rb:23 +module Prism::Serialize + class << self + # Deserialize the AST represented by the given string into a parse result. + # + # source://prism-0.24.0/lib/prism/serialize.rb:37 + def load(input, serialized); end + + # Deserialize the tokens represented by the given string into a parse + # result. + # + # source://prism-0.24.0/lib/prism/serialize.rb:49 + def load_tokens(source, serialized); end + end +end + +# source://prism-0.24.0/lib/prism/serialize.rb:53 +class Prism::Serialize::Loader + # @return [Loader] a new instance of Loader + # + # source://prism-0.24.0/lib/prism/serialize.rb:58 + def initialize(source, serialized); end + + # Returns the value of attribute constant_pool. + # + # source://prism-0.24.0/lib/prism/serialize.rb:55 + def constant_pool; end + + # Returns the value of attribute constant_pool_offset. + # + # source://prism-0.24.0/lib/prism/serialize.rb:55 + def constant_pool_offset; end + + # Returns the value of attribute encoding. + # + # source://prism-0.24.0/lib/prism/serialize.rb:54 + def encoding; end + + # Returns the value of attribute input. + # + # source://prism-0.24.0/lib/prism/serialize.rb:54 + def input; end + + # Returns the value of attribute io. + # + # source://prism-0.24.0/lib/prism/serialize.rb:54 + def io; end + + # source://prism-0.24.0/lib/prism/serialize.rb:96 + def load_comments; end + + # source://prism-0.24.0/lib/prism/serialize.rb:82 + def load_encoding; end + + # source://prism-0.24.0/lib/prism/serialize.rb:73 + def load_header; end + + # source://prism-0.24.0/lib/prism/serialize.rb:92 + def load_line_offsets; end + + # source://prism-0.24.0/lib/prism/serialize.rb:106 + def load_metadata; end + + # source://prism-0.24.0/lib/prism/serialize.rb:140 + def load_nodes; end + + # source://prism-0.24.0/lib/prism/serialize.rb:154 + def load_result; end + + # source://prism-0.24.0/lib/prism/serialize.rb:88 + def load_start_line; end + + # source://prism-0.24.0/lib/prism/serialize.rb:115 + def load_tokens; end + + # source://prism-0.24.0/lib/prism/serialize.rb:128 + def load_tokens_result; end + + # Returns the value of attribute serialized. + # + # source://prism-0.24.0/lib/prism/serialize.rb:54 + def serialized; end + + # Returns the value of attribute source. + # + # source://prism-0.24.0/lib/prism/serialize.rb:55 + def source; end + + # Returns the value of attribute start_line. + # + # source://prism-0.24.0/lib/prism/serialize.rb:56 + def start_line; end + + private + + # source://prism-0.24.0/lib/prism/serialize.rb:217 + def load_constant(index); end + + # source://prism-0.24.0/lib/prism/serialize.rb:193 + def load_embedded_string; end + + # source://prism-0.24.0/lib/prism/serialize.rb:247 + def load_error_level; end + + # source://prism-0.24.0/lib/prism/serialize.rb:209 + def load_location; end + + # source://prism-0.24.0/lib/prism/serialize.rb:274 + def load_node; end + + # source://prism-0.24.0/lib/prism/serialize.rb:242 + def load_optional_constant; end + + # source://prism-0.24.0/lib/prism/serialize.rb:213 + def load_optional_location; end + + # source://prism-0.24.0/lib/prism/serialize.rb:186 + def load_optional_node; end + + # source://prism-0.24.0/lib/prism/serialize.rb:238 + def load_required_constant; end + + # source://prism-0.24.0/lib/prism/serialize.rb:182 + def load_serialized_length; end + + # source://prism-0.24.0/lib/prism/serialize.rb:197 + def load_string; end + + # source://prism-0.24.0/lib/prism/serialize.rb:177 + 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-0.24.0/lib/prism/serialize.rb:163 + def load_varuint; end + + # source://prism-0.24.0/lib/prism/serialize.rb:260 + def load_warning_level; end +end + +# The major version of prism that we are expecting to find in the serialized +# strings. +# +# source://prism-0.24.0/lib/prism/serialize.rb:26 +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-0.24.0/lib/prism/serialize.rb:30 +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-0.24.0/lib/prism/serialize.rb:34 +Prism::Serialize::PATCH_VERSION = T.let(T.unsafe(nil), Integer) + +# The token types that can be indexed by their enum values. +# +# source://prism-0.24.0/lib/prism/serialize.rb:1482 +Prism::Serialize::TOKEN_TYPES = T.let(T.unsafe(nil), Array) + +# Represents a singleton class declaration involving the `class` keyword. +# +# class << self end +# ^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:17012 +class Prism::SingletonClassNode < ::Prism::Node + # def initialize: (Array[Symbol] locals, Location class_keyword_loc, Location operator_loc, Node expression, Node? body, Location end_keyword_loc, Location location) -> void + # + # @return [SingletonClassNode] a new instance of SingletonClassNode + # + # source://prism-0.24.0/lib/prism/node.rb:17014 + def initialize(source, locals, class_keyword_loc, operator_loc, expression, body, end_keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:17027 + def accept(visitor); end + + # attr_reader body: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:17090 + sig { returns(T.nilable(Prism::Node)) } + def body; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17032 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def class_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17100 + sig { returns(String) } + def class_keyword; end + + # attr_reader class_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:17075 + sig { returns(Prism::Location) } + def class_keyword_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:17045 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17037 + def compact_child_nodes; end + + # def copy: (**params) -> SingletonClassNode + # + # source://prism-0.24.0/lib/prism/node.rb:17050 + sig { params(params: T.untyped).returns(Prism::SingletonClassNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17032 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { locals: Array[Symbol], class_keyword_loc: Location, operator_loc: Location, expression: Node, body: Node?, end_keyword_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:17067 + def deconstruct_keys(keys); end + + # def end_keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17110 + sig { returns(String) } + def end_keyword; end + + # attr_reader end_keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:17093 + sig { returns(Prism::Location) } + def end_keyword_loc; end + + # attr_reader expression: Node + # + # source://prism-0.24.0/lib/prism/node.rb:17087 + sig { returns(Prism::Node) } + def expression; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17115 + def inspect(inspector = T.unsafe(nil)); end + + # attr_reader locals: Array[Symbol] + # + # source://prism-0.24.0/lib/prism/node.rb:17072 + sig { returns(T::Array[Symbol]) } + def locals; end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17105 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:17081 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17146 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17156 + def type; end + end +end + +# This represents a source of Ruby code that has been parsed. It is used in +# conjunction with locations to allow them to resolve line numbers and source +# ranges. +# +# source://prism-0.24.0/lib/prism/parse_result.rb:7 +class Prism::Source + # Create a new source object with the given source code. + # + # @return [Source] a new instance of Source + # + # source://prism-0.24.0/lib/prism/parse_result.rb:18 + 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-0.24.0/lib/prism/parse_result.rb:53 + def character_column(byte_offset); end + + # Return the character offset for the given byte offset. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:48 + def character_offset(byte_offset); end + + # Returns the column number in code units for the given encoding for the + # given byte offset. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:70 + def code_units_column(byte_offset, encoding); end + + # Returns the offset from the start of the file for the given byte offset + # counting in code units for the given encoding. + # + # This method is tested with UTF-8, UTF-16, and UTF-32. If there is the + # concept of code units that differs from the number of characters in other + # encodings, it is not captured here. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:63 + def code_units_offset(byte_offset, encoding); end + + # Return the column number for the given byte offset. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:43 + def column(byte_offset); end + + # Binary search through the offsets to find the line number for the given + # byte offset. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:32 + def line(byte_offset); end + + sig { params(value: Integer).returns(Integer) } + def line_offset(value); end + + # Return the byte offset of the start of the line corresponding to the given + # byte offset. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:38 + def line_start(byte_offset); end + + # The list of newline byte offsets in the source code. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:15 + sig { returns(T::Array[Integer]) } + def offsets; end + + # Perform a byteslice on the source code using the given byte offset and + # byte length. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:26 + def slice(byte_offset, length); end + + # The source code that this source object represents. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:9 + sig { returns(String) } + def source; end + + # The line number where this source starts. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:12 + def start_line; end + + private + + # Binary search through the offsets to find the line number for the given + # byte offset. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:78 + def find_line(byte_offset); end +end + +# Represents the use of the `__ENCODING__` keyword. +# +# __ENCODING__ +# ^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:17165 +class Prism::SourceEncodingNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [SourceEncodingNode] a new instance of SourceEncodingNode + # + # source://prism-0.24.0/lib/prism/node.rb:17167 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:17174 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17179 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:17189 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17184 + def compact_child_nodes; end + + # def copy: (**params) -> SourceEncodingNode + # + # source://prism-0.24.0/lib/prism/node.rb:17194 + sig { params(params: T.untyped).returns(Prism::SourceEncodingNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17179 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:17205 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17211 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17230 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17240 + def type; end + end +end + +# Represents the use of the `__FILE__` keyword. +# +# __FILE__ +# ^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:17249 +class Prism::SourceFileNode < ::Prism::Node + # def initialize: (String filepath, Location location) -> void + # + # @return [SourceFileNode] a new instance of SourceFileNode + # + # source://prism-0.24.0/lib/prism/node.rb:17251 + def initialize(source, filepath, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:17259 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17264 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:17274 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17269 + def compact_child_nodes; end + + # def copy: (**params) -> SourceFileNode + # + # source://prism-0.24.0/lib/prism/node.rb:17279 + sig { params(params: T.untyped).returns(Prism::SourceFileNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17264 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { filepath: String, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:17291 + def deconstruct_keys(keys); end + + # attr_reader filepath: String + # + # source://prism-0.24.0/lib/prism/node.rb:17296 + sig { returns(String) } + def filepath; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17300 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17320 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17330 + def type; end + end +end + +# Represents the use of the `__LINE__` keyword. +# +# __LINE__ +# ^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:17339 +class Prism::SourceLineNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [SourceLineNode] a new instance of SourceLineNode + # + # source://prism-0.24.0/lib/prism/node.rb:17341 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:17348 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17353 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:17363 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17358 + def compact_child_nodes; end + + # def copy: (**params) -> SourceLineNode + # + # source://prism-0.24.0/lib/prism/node.rb:17368 + sig { params(params: T.untyped).returns(Prism::SourceLineNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17353 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:17379 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17385 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17404 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17414 + def type; end + end +end + +# Represents the use of the splat operator. +# +# [*a] +# ^^ +# +# source://prism-0.24.0/lib/prism/node.rb:17423 +class Prism::SplatNode < ::Prism::Node + # def initialize: (Location operator_loc, Node? expression, Location location) -> void + # + # @return [SplatNode] a new instance of SplatNode + # + # source://prism-0.24.0/lib/prism/node.rb:17425 + def initialize(source, operator_loc, expression, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:17434 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17439 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:17451 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17444 + def compact_child_nodes; end + + # def copy: (**params) -> SplatNode + # + # source://prism-0.24.0/lib/prism/node.rb:17456 + sig { params(params: T.untyped).returns(Prism::SplatNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17439 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { operator_loc: Location, expression: Node?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:17469 + def deconstruct_keys(keys); end + + # attr_reader expression: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:17480 + sig { returns(T.nilable(Prism::Node)) } + def expression; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17489 + def inspect(inspector = T.unsafe(nil)); end + + # def operator: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17484 + sig { returns(String) } + def operator; end + + # attr_reader operator_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:17474 + sig { returns(Prism::Location) } + def operator_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17515 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17525 + def type; end + end +end + +# Represents a set of statements contained within some scope. +# +# foo; bar; baz +# ^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:17534 +class Prism::StatementsNode < ::Prism::Node + # def initialize: (Array[Node] body, Location location) -> void + # + # @return [StatementsNode] a new instance of StatementsNode + # + # source://prism-0.24.0/lib/prism/node.rb:17536 + def initialize(source, body, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:17544 + def accept(visitor); end + + # attr_reader body: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17581 + sig { returns(T::Array[Prism::Node]) } + def body; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17549 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:17559 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17554 + def compact_child_nodes; end + + # def copy: (**params) -> StatementsNode + # + # source://prism-0.24.0/lib/prism/node.rb:17564 + sig { params(params: T.untyped).returns(Prism::StatementsNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17549 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { body: Array[Node], location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:17576 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17585 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17605 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17615 + def type; end + end +end + +# Flags for string nodes. +# +# source://prism-0.24.0/lib/prism/node.rb:19352 +module Prism::StringFlags; end + +# internal bytes forced the encoding to binary +# +# source://prism-0.24.0/lib/prism/node.rb:19357 +Prism::StringFlags::FORCED_BINARY_ENCODING = T.let(T.unsafe(nil), Integer) + +# internal bytes forced the encoding to UTF-8 +# +# source://prism-0.24.0/lib/prism/node.rb:19354 +Prism::StringFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) + +# frozen by virtue of a `frozen_string_literal` comment +# +# source://prism-0.24.0/lib/prism/node.rb:19360 +Prism::StringFlags::FROZEN = 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. +# +# "foo" +# ^^^^^ +# +# %w[foo] +# ^^^ +# +# "foo #{bar} baz" +# ^^^^ ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:17630 +class Prism::StringNode < ::Prism::Node + include ::Prism::HeredocQuery + + # def initialize: (Integer flags, Location? opening_loc, Location content_loc, Location? closing_loc, String unescaped, Location location) -> void + # + # @return [StringNode] a new instance of StringNode + # + # source://prism-0.24.0/lib/prism/node.rb:17632 + def initialize(source, flags, opening_loc, content_loc, closing_loc, unescaped, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:17644 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17649 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:17748 + sig { returns(T.nilable(String)) } + def closing; end + + # attr_reader closing_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:17707 + sig { returns(T.nilable(Prism::Location)) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:17659 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17654 + def compact_child_nodes; end + + # def content: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17743 + sig { returns(String) } + def content; end + + # attr_reader content_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:17701 + sig { returns(Prism::Location) } + def content_loc; end + + # def copy: (**params) -> StringNode + # + # source://prism-0.24.0/lib/prism/node.rb:17664 + sig { params(params: T.untyped).returns(Prism::StringNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17649 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, opening_loc: Location?, content_loc: Location, closing_loc: Location?, unescaped: String, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:17680 + def deconstruct_keys(keys); end + + # def forced_binary_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:17728 + sig { returns(T::Boolean) } + def forced_binary_encoding?; end + + # def forced_utf8_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:17723 + sig { returns(T::Boolean) } + def forced_utf8_encoding?; end + + # def frozen?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:17733 + sig { returns(T::Boolean) } + def frozen?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17753 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:17738 + sig { returns(T.nilable(String)) } + def opening; end + + # attr_reader opening_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:17689 + sig { returns(T.nilable(Prism::Location)) } + def opening_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17778 + def type; end + + # attr_reader unescaped: String + # + # source://prism-0.24.0/lib/prism/node.rb:17719 + sig { returns(String) } + def unescaped; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:17685 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17788 + def type; end + end +end + +# Represents the use of the `super` keyword with parentheses or arguments. +# +# super() +# ^^^^^^^ +# +# super foo, bar +# ^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:17800 +class Prism::SuperNode < ::Prism::Node + # def initialize: (Location keyword_loc, Location? lparen_loc, ArgumentsNode? arguments, Location? rparen_loc, Node? block, Location location) -> void + # + # @return [SuperNode] a new instance of SuperNode + # + # source://prism-0.24.0/lib/prism/node.rb:17802 + def initialize(source, keyword_loc, lparen_loc, arguments, rparen_loc, block, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:17814 + def accept(visitor); end + + # attr_reader arguments: ArgumentsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:17876 + sig { returns(T.nilable(Prism::ArgumentsNode)) } + def arguments; end + + # attr_reader block: Node? + # + # source://prism-0.24.0/lib/prism/node.rb:17891 + sig { returns(T.nilable(Prism::Node)) } + def block; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17819 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:17832 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17824 + def compact_child_nodes; end + + # def copy: (**params) -> SuperNode + # + # source://prism-0.24.0/lib/prism/node.rb:17837 + sig { params(params: T.untyped).returns(Prism::SuperNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17819 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { keyword_loc: Location, lparen_loc: Location?, arguments: ArgumentsNode?, rparen_loc: Location?, block: Node?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:17853 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17910 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:17895 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:17858 + sig { returns(Prism::Location) } + def keyword_loc; end + + # def lparen: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:17900 + sig { returns(T.nilable(String)) } + def lparen; end + + # attr_reader lparen_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:17864 + sig { returns(T.nilable(Prism::Location)) } + def lparen_loc; end + + # def rparen: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:17905 + sig { returns(T.nilable(String)) } + def rparen; end + + # attr_reader rparen_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:17879 + sig { returns(T.nilable(Prism::Location)) } + def rparen_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17944 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:17954 + def type; end + end +end + +# Flags for symbol nodes. +# +# source://prism-0.24.0/lib/prism/node.rb:19364 +module Prism::SymbolFlags; end + +# internal bytes forced the encoding to binary +# +# source://prism-0.24.0/lib/prism/node.rb:19369 +Prism::SymbolFlags::FORCED_BINARY_ENCODING = T.let(T.unsafe(nil), Integer) + +# internal bytes forced the encoding to US-ASCII +# +# source://prism-0.24.0/lib/prism/node.rb:19372 +Prism::SymbolFlags::FORCED_US_ASCII_ENCODING = T.let(T.unsafe(nil), Integer) + +# internal bytes forced the encoding to UTF-8 +# +# source://prism-0.24.0/lib/prism/node.rb:19366 +Prism::SymbolFlags::FORCED_UTF8_ENCODING = T.let(T.unsafe(nil), Integer) + +# Represents a symbol literal or a symbol contained within a `%i` list. +# +# :foo +# ^^^^ +# +# %i[foo] +# ^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:17966 +class Prism::SymbolNode < ::Prism::Node + # def initialize: (Integer flags, Location? opening_loc, Location? value_loc, Location? closing_loc, String unescaped, Location location) -> void + # + # @return [SymbolNode] a new instance of SymbolNode + # + # source://prism-0.24.0/lib/prism/node.rb:17968 + def initialize(source, flags, opening_loc, value_loc, closing_loc, unescaped, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:17980 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17985 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:18090 + sig { returns(T.nilable(String)) } + def closing; end + + # attr_reader closing_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:18049 + sig { returns(T.nilable(Prism::Location)) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:17995 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17990 + def compact_child_nodes; end + + # def copy: (**params) -> SymbolNode + # + # source://prism-0.24.0/lib/prism/node.rb:18000 + sig { params(params: T.untyped).returns(Prism::SymbolNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:17985 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, opening_loc: Location?, value_loc: Location?, closing_loc: Location?, unescaped: String, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:18016 + def deconstruct_keys(keys); end + + # def forced_binary_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:18070 + sig { returns(T::Boolean) } + def forced_binary_encoding?; end + + # def forced_us_ascii_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:18075 + sig { returns(T::Boolean) } + def forced_us_ascii_encoding?; end + + # def forced_utf8_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:18065 + sig { returns(T::Boolean) } + def forced_utf8_encoding?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:18095 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:18080 + sig { returns(T.nilable(String)) } + def opening; end + + # attr_reader opening_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:18025 + sig { returns(T.nilable(Prism::Location)) } + def opening_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18120 + def type; end + + # attr_reader unescaped: String + # + # source://prism-0.24.0/lib/prism/node.rb:18061 + sig { returns(String) } + def unescaped; end + + # def value: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:18085 + sig { returns(T.nilable(String)) } + def value; end + + # attr_reader value_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:18037 + sig { returns(T.nilable(Prism::Location)) } + def value_loc; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:18021 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18130 + def type; end + end +end + +# This represents a token from the Ruby source. +# +# source://prism-0.24.0/lib/prism/parse_result.rb:454 +class Prism::Token + # Create a new token object with the given type, value, and location. + # + # @return [Token] a new instance of Token + # + # source://prism-0.24.0/lib/prism/parse_result.rb:466 + def initialize(source, type, value, location); end + + # Returns true if the given other token is equal to this token. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:500 + def ==(other); end + + # Implement the hash pattern matching interface for Token. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:474 + def deconstruct_keys(keys); end + + # A Location object representing the location of this token in the source. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:479 + sig { returns(Prism::Location) } + def location; end + + # Implement the pretty print interface for Token. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:485 + def pretty_print(q); end + + # The type of token that this token is. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:460 + sig { returns(T.untyped) } + def type; end + + # A byteslice of the source that this token represents. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:463 + sig { returns(String) } + def value; end + + private + + # The Source object that represents the source this token came from. + # + # source://prism-0.24.0/lib/prism/parse_result.rb:456 + def source; end +end + +# This module is responsible for converting the prism syntax tree into other +# syntax trees. +# +# source://prism-0.24.0/lib/prism/translation.rb:6 +module Prism::Translation; end + +# This class is the entry-point for converting a prism syntax tree into the +# whitequark/parser gem's syntax tree. It inherits from the base parser for +# the parser gem, and overrides the parse* methods to parse with prism and +# then translate. +# +# source://prism-0.24.0/lib/prism/translation/parser.rb:11 +class Prism::Translation::Parser < ::Parser::Base + # The default encoding for Ruby files is UTF-8. + # + # source://prism-0.24.0/lib/prism/translation/parser.rb:33 + def default_encoding; end + + # Parses a source buffer and returns the AST. + # + # source://prism-0.24.0/lib/prism/translation/parser.rb:41 + def parse(source_buffer); end + + # Parses a source buffer and returns the AST and the source code comments. + # + # source://prism-0.24.0/lib/prism/translation/parser.rb:54 + 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-0.24.0/lib/prism/translation/parser.rb:71 + 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-0.24.0/lib/prism/translation/parser.rb:97 + def try_declare_numparam(node); end + + # source://prism-0.24.0/lib/prism/translation/parser.rb:28 + def version; end + + # source://prism-0.24.0/lib/prism/translation/parser.rb:37 + def yyerror; end + + private + + # Build the parser gem AST from the prism AST. + # + # source://prism-0.24.0/lib/prism/translation/parser.rb:146 + def build_ast(program, offset_cache); end + + # Build the parser gem comments from the prism comments. + # + # source://prism-0.24.0/lib/prism/translation/parser.rb:151 + def build_comments(comments, offset_cache); end + + # Prism deals with offsets in bytes, while the parser gem deals with + # offsets in characters. We need to handle this conversion in order to + # build the parser gem AST. + # + # If the bytesize of the source is the same as the length, then we can + # 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-0.24.0/lib/prism/translation/parser.rb:129 + def build_offset_cache(source); end + + # Build a range from a prism location. + # + # source://prism-0.24.0/lib/prism/translation/parser.rb:163 + def build_range(location, offset_cache); end + + # Build the parser gem tokens from the prism tokens. + # + # source://prism-0.24.0/lib/prism/translation/parser.rb:158 + def build_tokens(tokens, offset_cache); end + + # Converts the version format handled by Parser to the format handled by Prism. + # + # source://prism-0.24.0/lib/prism/translation/parser.rb:172 + def convert_for_prism(version); end + + # If there was a error generated during the parse, then raise an + # appropriate syntax error. Otherwise return the result. + # + # source://prism-0.24.0/lib/prism/translation/parser.rb:111 + def unwrap(result, offset_cache); end + + # This is a hook to allow consumers to disable some errors if they don't + # want them to block creating the syntax tree. + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/translation/parser.rb:105 + def valid_error?(error); end +end + +# A visitor that knows how to convert a prism syntax tree into the +# whitequark/parser gem's syntax tree. +# +# source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:8 +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-0.24.0/lib/prism/translation/parser/compiler.rb:39 + 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-0.24.0/lib/prism/translation/parser/compiler.rb:18 + def builder; end + + # The types of values that can be forwarded in the current scope. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:29 + def forwarding; end + + # Whether or not the current node is in a destructure. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:32 + def in_destructure; end + + # Whether or not the current node is in a pattern. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:35 + def in_pattern; end + + # The offset cache that is used to map between byte and character + # offsets in the file. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:26 + def offset_cache; end + + # The Parser::Base instance that is being used to build the AST. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:14 + def parser; end + + # The Parser::Source::Buffer instance that is holding a reference to the + # source code. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:22 + def source_buffer; end + + # alias $foo $bar + # ^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:58 + def visit_alias_global_variable_node(node); end + + # alias foo bar + # ^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:52 + def visit_alias_method_node(node); end + + # foo => bar | baz + # ^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:64 + def visit_alternation_pattern_node(node); end + + # a and b + # ^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:70 + def visit_and_node(node); end + + # foo(bar) + # ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:101 + def visit_arguments_node(node); end + + # [] + # ^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:76 + def visit_array_node(node); end + + # foo => [bar] + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:82 + def visit_array_pattern_node(node); end + + # { a: 1 } + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:107 + def visit_assoc_node(node); end + + # def foo(**); bar(**); end + # ^^ + # + # { **foo } + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:141 + def visit_assoc_splat_node(node); end + + # $+ + # ^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:151 + def visit_back_reference_read_node(node); end + + # begin end + # ^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:157 + def visit_begin_node(node); end + + # foo(&bar) + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:195 + def visit_block_argument_node(node); end + + # foo { |; bar| } + # ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:201 + def visit_block_local_variable_node(node); end + + # A block on a keyword or method call. + # + # @raise [CompilationError] + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:206 + def visit_block_node(node); end + + # def foo(&bar); end + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:212 + def visit_block_parameter_node(node); end + + # A block's parameters. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:217 + def visit_block_parameters_node(node); end + + # break + # ^^^^^ + # + # break foo + # ^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:226 + def visit_break_node(node); end + + # foo.bar += baz + # ^^^^^^^^^^^^^^^ + # foo.bar &&= baz + # ^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:300 + def visit_call_and_write_node(node); end + + # foo + # ^^^ + # + # foo.bar + # ^^^^^^^ + # + # foo.bar() {} + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:238 + def visit_call_node(node); end + + # foo.bar += baz + # ^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:300 + def visit_call_operator_write_node(node); end + + # foo.bar += baz + # ^^^^^^^^^^^^^^^ + # foo.bar ||= baz + # ^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:300 + def visit_call_or_write_node(node); end + + # foo.bar, = 1 + # ^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:327 + def visit_call_target_node(node); end + + # foo => bar => baz + # ^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:339 + def visit_capture_pattern_node(node); end + + # case foo; in bar; end + # ^^^^^^^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:358 + def visit_case_match_node(node); end + + # case foo; when bar; end + # ^^^^^^^^^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:345 + def visit_case_node(node); end + + # class Foo; end + # ^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:371 + def visit_class_node(node); end + + # @@foo += bar + # ^^^^^^^^^^^^ + # @@foo &&= bar + # ^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:403 + def visit_class_variable_and_write_node(node); end + + # @@foo += bar + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:403 + def visit_class_variable_operator_write_node(node); end + + # @@foo += bar + # ^^^^^^^^^^^^ + # @@foo ||= bar + # ^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:403 + def visit_class_variable_or_write_node(node); end + + # @@foo + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:384 + def visit_class_variable_read_node(node); end + + # @@foo, = bar + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:421 + def visit_class_variable_target_node(node); end + + # @@foo = 1 + # ^^^^^^^^^ + # + # @@foo, @@bar = 1 + # ^^^^^ ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:393 + def visit_class_variable_write_node(node); end + + # Foo += bar + # ^^^^^^^^^^^ + # Foo &&= bar + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:442 + def visit_constant_and_write_node(node); end + + # Foo += bar + # ^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:442 + def visit_constant_operator_write_node(node); end + + # Foo += bar + # ^^^^^^^^^^^ + # Foo ||= bar + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:442 + def visit_constant_or_write_node(node); end + + # Foo::Bar += baz + # ^^^^^^^^^^^^^^^ + # Foo::Bar &&= baz + # ^^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:496 + def visit_constant_path_and_write_node(node); end + + # Foo::Bar + # ^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:466 + def visit_constant_path_node(node); end + + # Foo::Bar += baz + # ^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:496 + def visit_constant_path_operator_write_node(node); end + + # Foo::Bar += baz + # ^^^^^^^^^^^^^^^ + # Foo::Bar ||= baz + # ^^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:496 + def visit_constant_path_or_write_node(node); end + + # Foo::Bar, = baz + # ^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:514 + def visit_constant_path_target_node(node); end + + # Foo::Bar = 1 + # ^^^^^^^^^^^^ + # + # Foo::Foo, Bar::Bar = 1 + # ^^^^^^^^ ^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:486 + def visit_constant_path_write_node(node); end + + # Foo + # ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:427 + def visit_constant_read_node(node); end + + # Foo, = bar + # ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:460 + def visit_constant_target_node(node); end + + # Foo = 1 + # ^^^^^^^ + # + # Foo, Bar = 1 + # ^^^ ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:436 + def visit_constant_write_node(node); end + + # def foo; end + # ^^^^^^^^^^^^ + # + # def self.foo; end + # ^^^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:523 + def visit_def_node(node); end + + # defined? a + # ^^^^^^^^^^ + # + # defined?(a) + # ^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:570 + def visit_defined_node(node); end + + # if foo then bar else baz end + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:582 + def visit_else_node(node); end + + # "foo #{bar}" + # ^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:588 + def visit_embedded_statements_node(node); end + + # "foo #@bar" + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:598 + def visit_embedded_variable_node(node); end + + # begin; foo; ensure; bar; end + # ^^^^^^^^^^^^ + # + # @raise [CompilationError] + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:604 + def visit_ensure_node(node); end + + # false + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:610 + def visit_false_node(node); end + + # foo => [*, bar, *] + # ^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:616 + def visit_find_pattern_node(node); end + + # 0..5 + # ^^^^ + # if foo .. bar; end + # ^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1302 + def visit_flip_flop_node(node); end + + # 1.0 + # ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:628 + def visit_float_node(node); end + + # for foo in bar do end + # ^^^^^^^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:634 + def visit_for_node(node); end + + # def foo(...); bar(...); end + # ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:652 + def visit_forwarding_arguments_node(node); end + + # def foo(...); end + # ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:658 + def visit_forwarding_parameter_node(node); end + + # super + # ^^^^^ + # + # super {} + # ^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:667 + def visit_forwarding_super_node(node); end + + # $foo += bar + # ^^^^^^^^^^^ + # $foo &&= bar + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:698 + def visit_global_variable_and_write_node(node); end + + # $foo += bar + # ^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:698 + def visit_global_variable_operator_write_node(node); end + + # $foo += bar + # ^^^^^^^^^^^ + # $foo ||= bar + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:698 + def visit_global_variable_or_write_node(node); end + + # $foo + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:679 + def visit_global_variable_read_node(node); end + + # $foo, = bar + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:716 + def visit_global_variable_target_node(node); end + + # $foo = 1 + # ^^^^^^^^ + # + # $foo, $bar = 1 + # ^^^^ ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:688 + def visit_global_variable_write_node(node); end + + # {} + # ^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:722 + def visit_hash_node(node); end + + # foo => {} + # ^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:732 + def visit_hash_pattern_node(node); end + + # if foo then bar end + # ^^^^^^^^^^^^^^^^^^^ + # + # bar if foo + # ^^^^^^^^^^ + # + # foo ? bar : baz + # ^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:750 + def visit_if_node(node); end + + # 1i + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:791 + def visit_imaginary_node(node); end + + # { foo: } + # ^^^^ + # + # @raise [CompilationError] + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:797 + def visit_implicit_node(node); end + + # foo { |bar,| } + # ^ + # + # @raise [CompilationError] + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:803 + def visit_implicit_rest_node(node); end + + # case foo; in bar; end + # ^^^^^^^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:809 + def visit_in_node(node); end + + # foo[bar] += baz + # ^^^^^^^^^^^^^^^ + # foo[bar] &&= baz + # ^^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:835 + def visit_index_and_write_node(node); end + + # foo[bar] += baz + # ^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:835 + def visit_index_operator_write_node(node); end + + # foo[bar] += baz + # ^^^^^^^^^^^^^^^ + # foo[bar] ||= baz + # ^^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:835 + def visit_index_or_write_node(node); end + + # foo[bar], = 1 + # ^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:861 + def visit_index_target_node(node); end + + # ^^^^^^^^^^^ + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:891 + def visit_instance_variable_and_write_node(node); end + + # ^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:891 + def visit_instance_variable_operator_write_node(node); end + + # ^^^^^^^^^^^ + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:891 + def visit_instance_variable_or_write_node(node); end + + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:872 + def visit_instance_variable_read_node(node); end + + # @foo, = bar + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:909 + def visit_instance_variable_target_node(node); end + + # ^^^^^^^^ + # + # @foo, @bar = 1 + # ^^^^ ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:881 + def visit_instance_variable_write_node(node); end + + # 1 + # ^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:915 + def visit_integer_node(node); end + + # /foo #{bar}/ + # ^^^^^^^^^^^^ + # if /foo #{bar}/ then end + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:921 + def visit_interpolated_match_last_line_node(node); end + + # /foo #{bar}/ + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:921 + def visit_interpolated_regular_expression_node(node); end + + # "foo #{bar}" + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:936 + def visit_interpolated_string_node(node); end + + # :"foo #{bar}" + # ^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:951 + def visit_interpolated_symbol_node(node); end + + # `foo #{bar}` + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:961 + def visit_interpolated_x_string_node(node); end + + # foo(bar: baz) + # ^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:976 + def visit_keyword_hash_node(node); end + + # def foo(**bar); end + # ^^^^^ + # + # def foo(**); end + # ^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:985 + def visit_keyword_rest_parameter_node(node); end + + # -> {} + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:993 + def visit_lambda_node(node); end + + # foo += bar + # ^^^^^^^^^^ + # foo &&= bar + # ^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1037 + def visit_local_variable_and_write_node(node); end + + # foo += bar + # ^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1037 + def visit_local_variable_operator_write_node(node); end + + # foo += bar + # ^^^^^^^^^^ + # foo ||= bar + # ^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1037 + def visit_local_variable_or_write_node(node); end + + # foo + # ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1018 + def visit_local_variable_read_node(node); end + + # foo, = bar + # ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1055 + def visit_local_variable_target_node(node); end + + # foo = 1 + # ^^^^^^^ + # + # foo, bar = 1 + # ^^^ ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1027 + def visit_local_variable_write_node(node); end + + # /foo/ + # ^^^^^ + # if /foo/ then end + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1336 + def visit_match_last_line_node(node); end + + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1066 + def visit_match_predicate_node(node); end + + # foo => bar + # ^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1085 + def visit_match_required_node(node); end + + # /(?foo)/ =~ bar + # ^^^^^^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1095 + 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-0.24.0/lib/prism/translation/parser/compiler.rb:1106 + def visit_missing_node(node); end + + # module Foo; end + # ^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1112 + def visit_module_node(node); end + + # foo, bar = baz + # ^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1123 + def visit_multi_target_node(node); end + + # foo, bar = baz + # ^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1137 + def visit_multi_write_node(node); end + + # next + # ^^^^ + # + # next foo + # ^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1158 + def visit_next_node(node); end + + # nil + # ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1170 + def visit_nil_node(node); end + + # def foo(**nil); end + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1176 + def visit_no_keywords_parameter_node(node); end + + # -> { _1 + _2 } + # ^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1186 + def visit_numbered_parameters_node(node); end + + # $1 + # ^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1192 + def visit_numbered_reference_read_node(node); end + + # def foo(bar: baz); end + # ^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1198 + def visit_optional_keyword_parameter_node(node); end + + # def foo(bar = 1); end + # ^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1204 + def visit_optional_parameter_node(node); end + + # a or b + # ^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1210 + def visit_or_node(node); end + + # def foo(bar, *baz); end + # ^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1216 + def visit_parameters_node(node); end + + # () + # ^^ + # + # (1) + # ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1255 + def visit_parentheses_node(node); end + + # foo => ^(bar) + # ^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1265 + def visit_pinned_expression_node(node); end + + # foo = 1 and bar => ^foo + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1271 + def visit_pinned_variable_node(node); end + + # END {} + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1276 + def visit_post_execution_node(node); end + + # BEGIN {} + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1286 + def visit_pre_execution_node(node); end + + # The top-level program node. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1296 + def visit_program_node(node); end + + # 0..5 + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1302 + def visit_range_node(node); end + + # 1r + # ^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1324 + def visit_rational_node(node); end + + # redo + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1330 + def visit_redo_node(node); end + + # /foo/ + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1336 + def visit_regular_expression_node(node); end + + # def foo(bar:); end + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1351 + def visit_required_keyword_parameter_node(node); end + + # def foo(bar); end + # ^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1357 + def visit_required_parameter_node(node); end + + # foo rescue bar + # ^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1363 + def visit_rescue_modifier_node(node); end + + # begin; rescue; end + # ^^^^^^^ + # + # @raise [CompilationError] + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1381 + def visit_rescue_node(node); end + + # def foo(*bar); end + # ^^^^ + # + # def foo(*); end + # ^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1390 + def visit_rest_parameter_node(node); end + + # retry + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1396 + def visit_retry_node(node); end + + # return + # ^^^^^^ + # + # return 1 + # ^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1405 + def visit_return_node(node); end + + # self + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1417 + def visit_self_node(node); end + + # class << self; end + # ^^^^^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1423 + def visit_singleton_class_node(node); end + + # __ENCODING__ + # ^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1435 + def visit_source_encoding_node(node); end + + # __FILE__ + # ^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1441 + def visit_source_file_node(node); end + + # __LINE__ + # ^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1447 + def visit_source_line_node(node); end + + # foo(*bar) + # ^^^^ + # + # def foo((bar, *baz)); end + # ^^^^ + # + # def foo(*); bar(*); end + # ^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1459 + def visit_splat_node(node); end + + # A list of statements. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1472 + def visit_statements_node(node); end + + # "foo" + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1478 + def visit_string_node(node); end + + # super(foo) + # ^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1495 + def visit_super_node(node); end + + # :foo + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1518 + def visit_symbol_node(node); end + + # true + # ^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1536 + def visit_true_node(node); end + + # undef foo + # ^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1542 + def visit_undef_node(node); end + + # unless foo; bar end + # ^^^^^^^^^^^^^^^^^^^ + # + # bar unless foo + # ^^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1551 + def visit_unless_node(node); end + + # until foo; bar end + # ^^^^^^^^^^^^^^^^^ + # + # bar until foo + # ^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1581 + def visit_until_node(node); end + + # case foo; when bar; end + # ^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1603 + def visit_when_node(node); end + + # while foo; bar end + # ^^^^^^^^^^^^^^^^^^ + # + # bar while foo + # ^^^^^^^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1617 + def visit_while_node(node); end + + # `foo` + # ^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1639 + def visit_x_string_node(node); end + + # yield + # ^^^^^ + # + # yield 1 + # ^^^^^^^ + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1657 + def visit_yield_node(node); end + + private + + # Initialize a new compiler with the given option overrides, used to + # visit a subtree with the given options. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1671 + 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-0.24.0/lib/prism/translation/parser/compiler.rb:1678 + def find_forwarding(node); end + + # Blocks can have a special set of parameters that automatically expand + # when given arrays if they have a single required parameter and no + # other parameters. + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1693 + def procarg0?(parameters); end + + # Constructs a new source range from the given start and end offsets. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1710 + def srange(location); end + + # Constructs a new source range by finding the given tokens between the + # given start offset and end offset. If the needle is not found, it + # returns nil. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1722 + def srange_find(start_offset, end_offset, tokens); end + + # Constructs a new source range from the given start and end offsets. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1715 + def srange_offsets(start_offset, end_offset); end + + # Transform a location into a token that the parser gem expects. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1731 + def token(location); end + + # Visit a block node on a call. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1736 + def visit_block(call, block); end + + # Visit a heredoc that can be either a string or an xstring. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1769 + def visit_heredoc(node); end + + # Visit a numeric node and account for the optional sign. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1815 + def visit_numeric(node, value); end + + # Within the given block, track that we're within a pattern. + # + # source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:1827 + def within_pattern; end +end + +# Raised when the tree is malformed or there is a bug in the compiler. +# +# source://prism-0.24.0/lib/prism/translation/parser/compiler.rb:10 +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-0.24.0/lib/prism/translation/parser/compiler.rb:1707 +Prism::Translation::Parser::Compiler::Range = Parser::Source::Range + +# 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-0.24.0/lib/prism/translation/parser.rb:15 +class Prism::Translation::Parser::Diagnostic < ::Parser::Diagnostic + # Initialize a new diagnostic with the given message and location. + # + # @return [Diagnostic] a new instance of Diagnostic + # + # source://prism-0.24.0/lib/prism/translation/parser.rb:20 + def initialize(message, location); end + + # The message generated by prism. + # + # source://prism-0.24.0/lib/prism/translation/parser.rb:17 + def message; end +end + +# Accepts a list of prism tokens and converts them into the expected +# format for the parser gem. +# +# source://prism-0.24.0/lib/prism/translation/parser/lexer.rb:8 +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-0.24.0/lib/prism/translation/parser/lexer.rb:193 + def initialize(source_buffer, lexed, offset_cache); end + + # An array of prism tokens that we lexed. + # + # source://prism-0.24.0/lib/prism/translation/parser/lexer.rb:186 + def lexed; end + + # A hash that maps offsets in bytes to offsets in characters. + # + # source://prism-0.24.0/lib/prism/translation/parser/lexer.rb:189 + def offset_cache; end + + # The Parser::Source::Buffer that the tokens were lexed from. + # + # source://prism-0.24.0/lib/prism/translation/parser/lexer.rb:183 + def source_buffer; end + + # Convert the prism tokens into the expected format for the parser gem. + # + # source://prism-0.24.0/lib/prism/translation/parser/lexer.rb:203 + def to_a; end + + private + + # Parse a complex from the string representation. + # + # source://prism-0.24.0/lib/prism/translation/parser/lexer.rb:310 + def parse_complex(value); end + + # Parse a rational from the string representation. + # + # source://prism-0.24.0/lib/prism/translation/parser/lexer.rb:323 + def parse_rational(value); end +end + +# source://prism-0.24.0/lib/prism/translation/parser/lexer.rb:199 +Prism::Translation::Parser::Lexer::Range = Parser::Source::Range + +# The direct translating of types between the two lexers. +# +# source://prism-0.24.0/lib/prism/translation/parser/lexer.rb:10 +Prism::Translation::Parser::Lexer::TYPES = T.let(T.unsafe(nil), Hash) + +# Note: This integration is not finished, and therefore still has many +# inconsistencies with Ripper. If you'd like to help out, pull requests would +# be greatly appreciated! +# +# This class is meant to provide 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. +# +# This class is going to necessarily be slower than the native Ripper API. It +# is meant as a stopgap until developers migrate to using prism. It is also +# meant as a test harness for the prism parser. +# +# To use this class, you treat `Prism::Translation::Ripper` effectively as you would +# treat the `Ripper` class. +# +# source://prism-0.24.0/lib/prism/translation/ripper.rb:21 +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-0.24.0/lib/prism/translation/ripper.rb:75 + def initialize(source); end + + # The current column number of the parser. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:72 + def column; end + + # True if the parser encountered an error during parsing. + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:87 + def error?; end + + # The current line number of the parser. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:69 + def lineno; end + + # Parse the source and return the result. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:92 + def parse; end + + # The source that is being parsed. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:66 + def source; end + + # Visit an AliasGlobalVariableNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:247 + def visit_alias_global_variable_node(node); end + + # Visit an AliasMethodNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:226 + def visit_alias_method_node(node); end + + # Visit an AndNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:264 + def visit_and_node(node); end + + # Visit an ArrayNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:113 + def visit_array_node(node); end + + # Visit a BackReferenceReadNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:258 + def visit_back_reference_read_node(node); end + + # Visit a BeginNode node. + # This is not at all bulletproof against different structures of begin/rescue/else/ensure/end. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:315 + def visit_begin_node(node); end + + # Visit a BlockNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:191 + def visit_block_node(node); end + + # Visit a BlockParametersNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:200 + def visit_block_parameters_node(node); end + + # Visit a BreakNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:218 + def visit_break_node(node); end + + # Visit a CallNode node. + # Ripper distinguishes between many different method-call + # nodes -- unary and binary operators, "command" calls with + # no parentheses, and call/fcall/vcall. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:123 + def visit_call_node(node); end + + # Visit an EmbeddedStatementsNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:371 + def visit_embedded_statements_node(node); end + + # Visit a FalseNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:280 + def visit_false_node(node); end + + # Visit a FloatNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:286 + def visit_float_node(node); end + + # Visit a GlobalVariableReadNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:252 + def visit_global_variable_read_node(node); end + + # Visit a ImaginaryNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:291 + def visit_imaginary_node(node); end + + # Visit an IntegerNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:296 + def visit_integer_node(node); end + + # Visit an InterpolatedStringNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:366 + def visit_interpolated_string_node(node); end + + # Visit an InterpolatedSymbolNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:381 + def visit_interpolated_symbol_node(node); end + + # Visit a LocalVariableAndWriteNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:168 + def visit_local_variable_and_write_node(node); end + + # Visit nodes for +=, *=, -=, etc., called LocalVariableOperatorWriteNodes. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:178 + def visit_local_variable_operator_write_node(node); end + + # Visit a LocalVariableOrWriteNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:173 + def visit_local_variable_or_write_node(node); end + + # Visit a LocalVariableReadNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:183 + def visit_local_variable_read_node(node); end + + # Visit a LocalVariableWriteNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:161 + def visit_local_variable_write_node(node); end + + # Visit an OrNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:269 + def visit_or_node(node); end + + # Visit a ParametersNode. + # This will require expanding as we support more kinds of parameters. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:206 + def visit_parameters_node(node); end + + # Visit a ParenthesesNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:301 + def visit_parentheses_node(node); end + + # Visit a ProgramNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:327 + def visit_program_node(node); end + + # Visit a RangeNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:334 + def visit_range_node(node); end + + # Visit a RationalNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:347 + def visit_rational_node(node); end + + # Visit a RequiredParameterNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:212 + def visit_required_parameter_node(node); end + + # Visit a RescueNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:322 + def visit_rescue_node(node); end + + # Visit a StatementsNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:386 + def visit_statements_node(node); end + + # Visit a StringNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:352 + def visit_string_node(node); end + + # Visit a SymbolNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:376 + def visit_symbol_node(node); end + + # Visit a TrueNode. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:274 + def visit_true_node(node); end + + # Visit an XStringNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:359 + def visit_x_string_node(node); end + + private + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def _dispatch0; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def _dispatch1(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def _dispatch2(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def _dispatch3(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:684 + def _dispatch4(_, _, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:685 + def _dispatch5(_, _, _, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:686 + def _dispatch7(_, _, _, _, _, _, _); end + + # This method is responsible for updating lineno and column information + # to reflect the current node. + # + # This method could be drastically improved with some caching on the start + # of every line, but for now it's good enough. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:663 + def bounds(location); end + + # If we need to do something unusual, we can directly update the line number + # and column to reflect the current node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:670 + def bounds_values(lineno, column); end + + # For CRuby et al, "no block" in an on_block_var is false + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:646 + def no_block_value; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_BEGIN(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_CHAR(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_END(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on___end__(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_alias(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_alias_error(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_aref(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_aref_field(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_arg_ambiguous(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_arg_paren(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_args_add(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_args_add_block(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_args_add_star(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_args_forward; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_args_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_array(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:684 + def on_aryptn(_, _, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_assign(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_assign_error(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_assoc_new(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_assoc_splat(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_assoclist_from_args(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_backref(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_backtick(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_bare_assoc_hash(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_begin(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_binary(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_block_var(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_blockarg(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:684 + def on_bodystmt(_, _, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_brace_block(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_break(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_call(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_case(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_class(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_class_name_error(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_comma(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_command(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:684 + def on_command_call(_, _, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_comment(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_const(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_const_path_field(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_const_path_ref(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_const_ref(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_cvar(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_def(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_defined(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:685 + def on_defs(_, _, _, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_do_block(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_dot2(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_dot3(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_dyna_symbol(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_else(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_elsif(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_embdoc(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_embdoc_beg(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_embdoc_end(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_embexpr_beg(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_embexpr_end(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_embvar(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_ensure(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_excessed_comma; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_fcall(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_field(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_float(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:684 + def on_fndptn(_, _, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_for(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_gvar(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_hash(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_heredoc_beg(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_heredoc_dedent(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_heredoc_end(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_hshptn(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_ident(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_if(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_if_mod(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_ifop(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_ignored_nl(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_ignored_sp(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_imaginary(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_in(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_int(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_ivar(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_kw(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_kwrest_param(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_label(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_label_end(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_lambda(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_lbrace(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_lbracket(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_lparen(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_magic_comment(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_massign(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_method_add_arg(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_method_add_block(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_mlhs_add(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_mlhs_add_post(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_mlhs_add_star(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_mlhs_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_mlhs_paren(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_module(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_mrhs_add(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_mrhs_add_star(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_mrhs_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_mrhs_new_from_args(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_next(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_nl(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_nokw_param(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_op(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_opassign(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_operator_ambiguous(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_param_error(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:686 + def on_params(_, _, _, _, _, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_paren(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_parse_error(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_period(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_program(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_qsymbols_add(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_qsymbols_beg(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_qsymbols_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_qwords_add(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_qwords_beg(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_qwords_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_rational(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_rbrace(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_rbracket(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_redo; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_regexp_add(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_regexp_beg(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_regexp_end(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_regexp_literal(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_regexp_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:684 + def on_rescue(_, _, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_rescue_mod(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_rest_param(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_retry; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_return(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_return0; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_rparen(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_sclass(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_semicolon(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_sp(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_stmts_add(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_stmts_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_string_add(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_string_concat(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_string_content; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_string_dvar(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_string_embexpr(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_string_literal(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_super(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_symbeg(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_symbol(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_symbol_literal(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_symbols_add(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_symbols_beg(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_symbols_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_tlambda(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_tlambeg(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_top_const_field(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_top_const_ref(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_tstring_beg(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_tstring_content(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_tstring_end(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_unary(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_undef(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_unless(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_unless_mod(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_until(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_until_mod(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_var_alias(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_var_field(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_var_ref(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_vcall(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_void_stmt; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:683 + def on_when(_, _, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_while(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_while_mod(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_word_add(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_word_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_words_add(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_words_beg(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_words_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_words_sep(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:682 + def on_xstring_add(_, _); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_xstring_literal(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_xstring_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:681 + def on_yield(_); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_yield0; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:680 + def on_zsuper; end + + # Lazily initialize the parse result. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:676 + def result; end + + # In Prism this is a CallNode with :[]= as the operator. + # In Ripper it's an :aref_field. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:521 + def visit_aref_field_node(node); end + + # In Prism this is a CallNode with :[] as the operator. + # In Ripper it's an :aref. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:513 + def visit_aref_node(node); end + + # Visit an operation-and-assign node, such as +=. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:501 + def visit_binary_op_assign(node, operator: T.unsafe(nil)); end + + # Visit a binary operator node like an AndNode or OrNode + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:652 + def visit_binary_operator(node); end + + # Visit a list of elements, like the elements of an array or arguments. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:474 + def visit_elements(elements); end + + # Visit an InterpolatedStringNode or an InterpolatedSymbolNode node. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:482 + def visit_enumerated_node(node); end + + # Generate Ripper events for a CallNode with no opening_loc + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:410 + def visit_no_paren_call(node); end + + # Visit a node that represents a number. We need to explicitly handle the + # unary - operator. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:611 + def visit_number(node); end + + # Ripper has several methods of emitting a symbol literal. Inside an alias + # sometimes it suppresses the [:symbol] wrapper around ident. If the symbol + # is also the name of a keyword (e.g. :if) it will emit a :@kw wrapper, not + # an :@ident wrapper, with similar treatment for constants and operators. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:580 + def visit_symbol_literal_node(node, no_symbol_wrapper: T.unsafe(nil)); end + + # For most Rubies and JRuby after 9.4.6.0 this is a no-op. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:634 + def visit_unary_operator(value); end + + class << self + # This is a convenience method that runs the SexpBuilderPP subclass parser. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:403 + def sexp(source); end + + # This is a convenience method that runs the SexpBuilder subclass parser. + # + # source://prism-0.24.0/lib/prism/translation/ripper.rb:398 + def sexp_raw(source); end + end +end + +# In an alias statement Ripper will emit @kw instead of @ident if the object +# being aliased is a Ruby keyword. For instance, in the line "alias :foo :if", +# the :if is treated as a lexer keyword. So we need to know what symbols are +# also keywords. +# +# source://prism-0.24.0/lib/prism/translation/ripper.rb:532 +Prism::Translation::Ripper::RUBY_KEYWORDS = T.let(T.unsafe(nil), Array) + +# This class mirrors the ::Ripper::SexpBuilder subclass of ::Ripper that +# returns the arrays of [type, *children]. +# +# source://prism-0.24.0/lib/prism/translation/ripper.rb:24 +class Prism::Translation::Ripper::SexpBuilder < ::Prism::Translation::Ripper + private + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_BEGIN(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_CHAR(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_END(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on___end__(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_alias(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_alias_error(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_aref(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_aref_field(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_arg_ambiguous(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_arg_paren(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_args_add(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_args_add_block(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_args_add_star(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_args_forward(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_args_new(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_array(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_aryptn(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_assign(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_assign_error(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_assoc_new(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_assoc_splat(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_assoclist_from_args(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_backref(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_backtick(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_bare_assoc_hash(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_begin(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_binary(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_block_var(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_blockarg(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_bodystmt(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_brace_block(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_break(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_call(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_case(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_class(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_class_name_error(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_comma(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_command(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_command_call(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_comment(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_const(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_const_path_field(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_const_path_ref(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_const_ref(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_cvar(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_def(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_defined(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_defs(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_do_block(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_dot2(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_dot3(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_dyna_symbol(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_else(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_elsif(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_embdoc(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_embdoc_beg(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_embdoc_end(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_embexpr_beg(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_embexpr_end(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_embvar(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_ensure(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_excessed_comma(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_fcall(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_field(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_float(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_fndptn(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_for(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_gvar(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_hash(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_heredoc_beg(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_heredoc_dedent(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_heredoc_end(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_hshptn(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_ident(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_if(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_if_mod(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_ifop(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_ignored_nl(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_ignored_sp(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_imaginary(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_in(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_int(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_ivar(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_kw(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_kwrest_param(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_label(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_label_end(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_lambda(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_lbrace(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_lbracket(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_lparen(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_magic_comment(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_massign(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_method_add_arg(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_method_add_block(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_mlhs_add(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_mlhs_add_post(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_mlhs_add_star(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_mlhs_new(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_mlhs_paren(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_module(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_mrhs_add(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_mrhs_add_star(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_mrhs_new(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_mrhs_new_from_args(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_next(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_nl(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_nokw_param(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_op(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_opassign(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_operator_ambiguous(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_param_error(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_params(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_paren(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_parse_error(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_period(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_program(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_qsymbols_add(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_qsymbols_beg(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_qsymbols_new(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_qwords_add(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_qwords_beg(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_qwords_new(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_rational(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_rbrace(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_rbracket(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_redo(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_regexp_add(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_regexp_beg(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_regexp_end(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_regexp_literal(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_regexp_new(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_rescue(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_rescue_mod(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_rest_param(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_retry(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_return(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_return0(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_rparen(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_sclass(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_semicolon(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_sp(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_stmts_add(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_stmts_new(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_string_add(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_string_concat(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_string_content(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_string_dvar(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_string_embexpr(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_string_literal(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_super(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_symbeg(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_symbol(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_symbol_literal(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_symbols_add(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_symbols_beg(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_symbols_new(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_tlambda(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_tlambeg(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_top_const_field(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_top_const_ref(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_tstring_beg(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_tstring_content(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_tstring_end(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_unary(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_undef(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_unless(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_unless_mod(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_until(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_until_mod(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_var_alias(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_var_field(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_var_ref(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_vcall(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_void_stmt(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_when(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_while(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_while_mod(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_word_add(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_word_new(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_words_add(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_words_beg(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_words_new(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:34 + def on_words_sep(value); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_xstring_add(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_xstring_literal(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_xstring_new(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_yield(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_yield0(*args); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:28 + def on_zsuper(*args); end +end + +# This class mirrors the ::Ripper::SexpBuilderPP subclass of ::Ripper that +# returns the same values as ::Ripper::SexpBuilder except with a couple of +# niceties that flatten linked lists into arrays. +# +# source://prism-0.24.0/lib/prism/translation/ripper.rb:43 +class Prism::Translation::Ripper::SexpBuilderPP < ::Prism::Translation::Ripper::SexpBuilder + private + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:46 + def _dispatch_event_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def _dispatch_event_push(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def on_args_add(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:46 + def on_args_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def on_mlhs_add(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:46 + def on_mlhs_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def on_mrhs_add(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:46 + def on_mrhs_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def on_qsymbols_add(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:46 + def on_qsymbols_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def on_qwords_add(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:46 + def on_qwords_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def on_regexp_add(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:46 + def on_regexp_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def on_stmts_add(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:46 + def on_stmts_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def on_string_add(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def on_symbols_add(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:46 + def on_symbols_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def on_word_add(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:46 + def on_word_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def on_words_add(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:46 + def on_words_new; end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:50 + def on_xstring_add(list, item); end + + # source://prism-0.24.0/lib/prism/translation/ripper.rb:46 + def on_xstring_new; end +end + +# Represents the use of the literal `true` keyword. +# +# true +# ^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:18139 +class Prism::TrueNode < ::Prism::Node + # def initialize: (Location location) -> void + # + # @return [TrueNode] a new instance of TrueNode + # + # source://prism-0.24.0/lib/prism/node.rb:18141 + def initialize(source, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:18148 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18153 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:18163 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18158 + def compact_child_nodes; end + + # def copy: (**params) -> TrueNode + # + # source://prism-0.24.0/lib/prism/node.rb:18168 + sig { params(params: T.untyped).returns(Prism::TrueNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18153 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:18179 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:18185 + def inspect(inspector = T.unsafe(nil)); end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18204 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18214 + def type; end + end +end + +# Represents the use of the `undef` keyword. +# +# undef :foo, :bar, :baz +# ^^^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:18223 +class Prism::UndefNode < ::Prism::Node + # def initialize: (Array[Node] names, Location keyword_loc, Location location) -> void + # + # @return [UndefNode] a new instance of UndefNode + # + # source://prism-0.24.0/lib/prism/node.rb:18225 + def initialize(source, names, keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:18234 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18239 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:18249 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18244 + def compact_child_nodes; end + + # def copy: (**params) -> UndefNode + # + # source://prism-0.24.0/lib/prism/node.rb:18254 + sig { params(params: T.untyped).returns(Prism::UndefNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18239 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { names: Array[Node], keyword_loc: Location, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:18267 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:18287 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:18282 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:18275 + sig { returns(Prism::Location) } + def keyword_loc; end + + # attr_reader names: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18272 + sig { returns(T::Array[Prism::Node]) } + def names; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18308 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18318 + def type; end + end +end + +# Represents the use of the `unless` keyword, either in the block form or the modifier form. +# +# bar unless foo +# ^^^^^^^^^^^^^^ +# +# unless foo then bar end +# ^^^^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:18330 +class Prism::UnlessNode < ::Prism::Node + # def initialize: (Location keyword_loc, Node predicate, Location? then_keyword_loc, StatementsNode? statements, ElseNode? consequent, Location? end_keyword_loc, Location location) -> void + # + # @return [UnlessNode] a new instance of UnlessNode + # + # source://prism-0.24.0/lib/prism/node.rb:18332 + def initialize(source, keyword_loc, predicate, then_keyword_loc, statements, consequent, end_keyword_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:18345 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18354 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:18368 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18359 + def compact_child_nodes; end + + # attr_reader consequent: ElseNode? + # + # source://prism-0.24.0/lib/prism/node.rb:18419 + sig { returns(T.nilable(Prism::ElseNode)) } + def consequent; end + + # def copy: (**params) -> UnlessNode + # + # source://prism-0.24.0/lib/prism/node.rb:18373 + sig { params(params: T.untyped).returns(Prism::UnlessNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18354 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { keyword_loc: Location, predicate: Node, then_keyword_loc: Location?, statements: StatementsNode?, consequent: ElseNode?, end_keyword_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:18390 + def deconstruct_keys(keys); end + + # def end_keyword: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:18445 + sig { returns(T.nilable(String)) } + def end_keyword; end + + # attr_reader end_keyword_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:18422 + sig { returns(T.nilable(Prism::Location)) } + def end_keyword_loc; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:18450 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:18435 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:18395 + sig { returns(Prism::Location) } + def keyword_loc; end + + # attr_reader predicate: Node + # + # source://prism-0.24.0/lib/prism/node.rb:18401 + sig { returns(Prism::Node) } + def predicate; end + + # source://prism-0.24.0/lib/prism/node.rb:18349 + def set_newline_flag(newline_marked); end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:18416 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # def then_keyword: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:18440 + sig { returns(T.nilable(String)) } + def then_keyword; end + + # attr_reader then_keyword_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:18404 + sig { returns(T.nilable(Prism::Location)) } + def then_keyword_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18486 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18496 + def type; end + end +end + +# Represents the use of the `until` keyword, either in the block form or the modifier form. +# +# bar until foo +# ^^^^^^^^^^^^^ +# +# until foo do bar end +# ^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:18508 +class Prism::UntilNode < ::Prism::Node + # def initialize: (Integer flags, Location keyword_loc, Location? closing_loc, Node predicate, StatementsNode? statements, Location location) -> void + # + # @return [UntilNode] a new instance of UntilNode + # + # source://prism-0.24.0/lib/prism/node.rb:18510 + def initialize(source, flags, keyword_loc, closing_loc, predicate, statements, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:18522 + def accept(visitor); end + + # def begin_modifier?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:18599 + sig { returns(T::Boolean) } + def begin_modifier?; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18531 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:18609 + sig { returns(T.nilable(String)) } + def closing; end + + # attr_reader closing_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:18580 + sig { returns(T.nilable(Prism::Location)) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:18544 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18536 + def compact_child_nodes; end + + # def copy: (**params) -> UntilNode + # + # source://prism-0.24.0/lib/prism/node.rb:18549 + sig { params(params: T.untyped).returns(Prism::UntilNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18531 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, keyword_loc: Location, closing_loc: Location?, predicate: Node, statements: StatementsNode?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:18565 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:18614 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:18604 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:18574 + sig { returns(Prism::Location) } + def keyword_loc; end + + # attr_reader predicate: Node + # + # source://prism-0.24.0/lib/prism/node.rb:18592 + sig { returns(Prism::Node) } + def predicate; end + + # source://prism-0.24.0/lib/prism/node.rb:18526 + def set_newline_flag(newline_marked); end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:18595 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18645 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:18570 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18655 + def type; end + end +end + +# The version constant is set by reading the result of calling pm_version. +Prism::VERSION = T.let(T.unsafe(nil), String) + +# A visitor is a class that provides a default implementation for every accept +# method defined on the nodes. This means it can walk a tree without the +# caller needing to define any special handling. This allows you to handle a +# subset of the tree, while still walking the whole tree. +# +# For example, to find all of the method calls that call the `foo` method, you +# could write: +# +# class FooCalls < Prism::Visitor +# def visit_call_node(node) +# if node.name == "foo" +# # Do something with the node +# end +# +# # Call super so that the visitor continues walking the tree +# super +# end +# end +# +# source://prism-0.24.0/lib/prism/visitor.rb:50 +class Prism::Visitor < ::Prism::BasicVisitor + # Visit a AliasGlobalVariableNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_alias_global_variable_node(node); end + + # Visit a AliasMethodNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_alias_method_node(node); end + + # Visit a AlternationPatternNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_alternation_pattern_node(node); end + + # Visit a AndNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_and_node(node); end + + # Visit a ArgumentsNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_arguments_node(node); end + + # Visit a ArrayNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_array_node(node); end + + # Visit a ArrayPatternNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_array_pattern_node(node); end + + # Visit a AssocNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_assoc_node(node); end + + # Visit a AssocSplatNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_assoc_splat_node(node); end + + # Visit a BackReferenceReadNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_back_reference_read_node(node); end + + # Visit a BeginNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_begin_node(node); end + + # Visit a BlockArgumentNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_block_argument_node(node); end + + # Visit a BlockLocalVariableNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_block_local_variable_node(node); end + + # Visit a BlockNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_block_node(node); end + + # Visit a BlockParameterNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_block_parameter_node(node); end + + # Visit a BlockParametersNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_block_parameters_node(node); end + + # Visit a BreakNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_break_node(node); end + + # Visit a CallAndWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_call_and_write_node(node); end + + # Visit a CallNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_call_node(node); end + + # Visit a CallOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_call_operator_write_node(node); end + + # Visit a CallOrWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_call_or_write_node(node); end + + # Visit a CallTargetNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_call_target_node(node); end + + # Visit a CapturePatternNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_capture_pattern_node(node); end + + # Visit a CaseMatchNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_case_match_node(node); end + + # Visit a CaseNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_case_node(node); end + + # Visit a ClassNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_class_node(node); end + + # Visit a ClassVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_class_variable_and_write_node(node); end + + # Visit a ClassVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_class_variable_operator_write_node(node); end + + # Visit a ClassVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_class_variable_or_write_node(node); end + + # Visit a ClassVariableReadNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_class_variable_read_node(node); end + + # Visit a ClassVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_class_variable_target_node(node); end + + # Visit a ClassVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_class_variable_write_node(node); end + + # Visit a ConstantAndWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_constant_and_write_node(node); end + + # Visit a ConstantOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_constant_operator_write_node(node); end + + # Visit a ConstantOrWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_constant_or_write_node(node); end + + # Visit a ConstantPathAndWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_constant_path_and_write_node(node); end + + # Visit a ConstantPathNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_constant_path_node(node); end + + # Visit a ConstantPathOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_constant_path_operator_write_node(node); end + + # Visit a ConstantPathOrWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_constant_path_or_write_node(node); end + + # Visit a ConstantPathTargetNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_constant_path_target_node(node); end + + # Visit a ConstantPathWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_constant_path_write_node(node); end + + # Visit a ConstantReadNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_constant_read_node(node); end + + # Visit a ConstantTargetNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_constant_target_node(node); end + + # Visit a ConstantWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_constant_write_node(node); end + + # Visit a DefNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_def_node(node); end + + # Visit a DefinedNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_defined_node(node); end + + # Visit a ElseNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_else_node(node); end + + # Visit a EmbeddedStatementsNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_embedded_statements_node(node); end + + # Visit a EmbeddedVariableNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_embedded_variable_node(node); end + + # Visit a EnsureNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_ensure_node(node); end + + # Visit a FalseNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_false_node(node); end + + # Visit a FindPatternNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_find_pattern_node(node); end + + # Visit a FlipFlopNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_flip_flop_node(node); end + + # Visit a FloatNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_float_node(node); end + + # Visit a ForNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_for_node(node); end + + # Visit a ForwardingArgumentsNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_forwarding_arguments_node(node); end + + # Visit a ForwardingParameterNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_forwarding_parameter_node(node); end + + # Visit a ForwardingSuperNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_forwarding_super_node(node); end + + # Visit a GlobalVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_global_variable_and_write_node(node); end + + # Visit a GlobalVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_global_variable_operator_write_node(node); end + + # Visit a GlobalVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_global_variable_or_write_node(node); end + + # Visit a GlobalVariableReadNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_global_variable_read_node(node); end + + # Visit a GlobalVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_global_variable_target_node(node); end + + # Visit a GlobalVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_global_variable_write_node(node); end + + # Visit a HashNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_hash_node(node); end + + # Visit a HashPatternNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_hash_pattern_node(node); end + + # Visit a IfNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_if_node(node); end + + # Visit a ImaginaryNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_imaginary_node(node); end + + # Visit a ImplicitNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_implicit_node(node); end + + # Visit a ImplicitRestNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_implicit_rest_node(node); end + + # Visit a InNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_in_node(node); end + + # Visit a IndexAndWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_index_and_write_node(node); end + + # Visit a IndexOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_index_operator_write_node(node); end + + # Visit a IndexOrWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_index_or_write_node(node); end + + # Visit a IndexTargetNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_index_target_node(node); end + + # Visit a InstanceVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_instance_variable_and_write_node(node); end + + # Visit a InstanceVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_instance_variable_operator_write_node(node); end + + # Visit a InstanceVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_instance_variable_or_write_node(node); end + + # Visit a InstanceVariableReadNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_instance_variable_read_node(node); end + + # Visit a InstanceVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_instance_variable_target_node(node); end + + # Visit a InstanceVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_instance_variable_write_node(node); end + + # Visit a IntegerNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_integer_node(node); end + + # Visit a InterpolatedMatchLastLineNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_interpolated_match_last_line_node(node); end + + # Visit a InterpolatedRegularExpressionNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_interpolated_regular_expression_node(node); end + + # Visit a InterpolatedStringNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_interpolated_string_node(node); end + + # Visit a InterpolatedSymbolNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_interpolated_symbol_node(node); end + + # Visit a InterpolatedXStringNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_interpolated_x_string_node(node); end + + # Visit a KeywordHashNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_keyword_hash_node(node); end + + # Visit a KeywordRestParameterNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_keyword_rest_parameter_node(node); end + + # Visit a LambdaNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_lambda_node(node); end + + # Visit a LocalVariableAndWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_local_variable_and_write_node(node); end + + # Visit a LocalVariableOperatorWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_local_variable_operator_write_node(node); end + + # Visit a LocalVariableOrWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_local_variable_or_write_node(node); end + + # Visit a LocalVariableReadNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_local_variable_read_node(node); end + + # Visit a LocalVariableTargetNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_local_variable_target_node(node); end + + # Visit a LocalVariableWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_local_variable_write_node(node); end + + # Visit a MatchLastLineNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_match_last_line_node(node); end + + # Visit a MatchPredicateNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_match_predicate_node(node); end + + # Visit a MatchRequiredNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_match_required_node(node); end + + # Visit a MatchWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_match_write_node(node); end + + # Visit a MissingNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_missing_node(node); end + + # Visit a ModuleNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_module_node(node); end + + # Visit a MultiTargetNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_multi_target_node(node); end + + # Visit a MultiWriteNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_multi_write_node(node); end + + # Visit a NextNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_next_node(node); end + + # Visit a NilNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_nil_node(node); end + + # Visit a NoKeywordsParameterNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_no_keywords_parameter_node(node); end + + # Visit a NumberedParametersNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_numbered_parameters_node(node); end + + # Visit a NumberedReferenceReadNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_numbered_reference_read_node(node); end + + # Visit a OptionalKeywordParameterNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_optional_keyword_parameter_node(node); end + + # Visit a OptionalParameterNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_optional_parameter_node(node); end + + # Visit a OrNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_or_node(node); end + + # Visit a ParametersNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_parameters_node(node); end + + # Visit a ParenthesesNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_parentheses_node(node); end + + # Visit a PinnedExpressionNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_pinned_expression_node(node); end + + # Visit a PinnedVariableNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_pinned_variable_node(node); end + + # Visit a PostExecutionNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_post_execution_node(node); end + + # Visit a PreExecutionNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_pre_execution_node(node); end + + # Visit a ProgramNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_program_node(node); end + + # Visit a RangeNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_range_node(node); end + + # Visit a RationalNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_rational_node(node); end + + # Visit a RedoNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_redo_node(node); end + + # Visit a RegularExpressionNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_regular_expression_node(node); end + + # Visit a RequiredKeywordParameterNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_required_keyword_parameter_node(node); end + + # Visit a RequiredParameterNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_required_parameter_node(node); end + + # Visit a RescueModifierNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_rescue_modifier_node(node); end + + # Visit a RescueNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_rescue_node(node); end + + # Visit a RestParameterNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_rest_parameter_node(node); end + + # Visit a RetryNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_retry_node(node); end + + # Visit a ReturnNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_return_node(node); end + + # Visit a SelfNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_self_node(node); end + + # Visit a SingletonClassNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_singleton_class_node(node); end + + # Visit a SourceEncodingNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_source_encoding_node(node); end + + # Visit a SourceFileNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_source_file_node(node); end + + # Visit a SourceLineNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_source_line_node(node); end + + # Visit a SplatNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_splat_node(node); end + + # Visit a StatementsNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_statements_node(node); end + + # Visit a StringNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_string_node(node); end + + # Visit a SuperNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_super_node(node); end + + # Visit a SymbolNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_symbol_node(node); end + + # Visit a TrueNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_true_node(node); end + + # Visit a UndefNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_undef_node(node); end + + # Visit a UnlessNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_unless_node(node); end + + # Visit a UntilNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_until_node(node); end + + # Visit a WhenNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_when_node(node); end + + # Visit a WhileNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_while_node(node); end + + # Visit a XStringNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_x_string_node(node); end + + # Visit a YieldNode node + # + # source://prism-0.24.0/lib/prism/visitor.rb:26 + def visit_yield_node(node); end +end + +# Represents the use of the `when` keyword within a case statement. +# +# case true +# when true +# ^^^^^^^^^ +# end +# +# source://prism-0.24.0/lib/prism/node.rb:18666 +class Prism::WhenNode < ::Prism::Node + # def initialize: (Location keyword_loc, Array[Node] conditions, StatementsNode? statements, Location location) -> void + # + # @return [WhenNode] a new instance of WhenNode + # + # source://prism-0.24.0/lib/prism/node.rb:18668 + def initialize(source, keyword_loc, conditions, statements, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:18678 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18683 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:18696 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18688 + def compact_child_nodes; end + + # attr_reader conditions: Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18726 + sig { returns(T::Array[Prism::Node]) } + def conditions; end + + # def copy: (**params) -> WhenNode + # + # source://prism-0.24.0/lib/prism/node.rb:18701 + sig { params(params: T.untyped).returns(Prism::WhenNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18683 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { keyword_loc: Location, conditions: Array[Node], statements: StatementsNode?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:18715 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:18738 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:18733 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:18720 + sig { returns(Prism::Location) } + def keyword_loc; end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:18729 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18765 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18775 + def type; end + end +end + +# Represents the use of the `while` keyword, either in the block form or the modifier form. +# +# bar while foo +# ^^^^^^^^^^^^^ +# +# while foo do bar end +# ^^^^^^^^^^^^^^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:18787 +class Prism::WhileNode < ::Prism::Node + # def initialize: (Integer flags, Location keyword_loc, Location? closing_loc, Node predicate, StatementsNode? statements, Location location) -> void + # + # @return [WhileNode] a new instance of WhileNode + # + # source://prism-0.24.0/lib/prism/node.rb:18789 + def initialize(source, flags, keyword_loc, closing_loc, predicate, statements, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:18801 + def accept(visitor); end + + # def begin_modifier?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:18878 + sig { returns(T::Boolean) } + def begin_modifier?; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18810 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:18888 + sig { returns(T.nilable(String)) } + def closing; end + + # attr_reader closing_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:18859 + sig { returns(T.nilable(Prism::Location)) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:18823 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18815 + def compact_child_nodes; end + + # def copy: (**params) -> WhileNode + # + # source://prism-0.24.0/lib/prism/node.rb:18828 + sig { params(params: T.untyped).returns(Prism::WhileNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18810 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, keyword_loc: Location, closing_loc: Location?, predicate: Node, statements: StatementsNode?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:18844 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:18893 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:18883 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:18853 + sig { returns(Prism::Location) } + def keyword_loc; end + + # attr_reader predicate: Node + # + # source://prism-0.24.0/lib/prism/node.rb:18871 + sig { returns(Prism::Node) } + def predicate; end + + # source://prism-0.24.0/lib/prism/node.rb:18805 + def set_newline_flag(newline_marked); end + + # attr_reader statements: StatementsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:18874 + sig { returns(T.nilable(Prism::StatementsNode)) } + def statements; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18924 + def type; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:18849 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:18934 + def type; end + end +end + +# Represents an xstring literal with no interpolation. +# +# `foo` +# ^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:18943 +class Prism::XStringNode < ::Prism::Node + include ::Prism::HeredocQuery + + # def initialize: (Integer flags, Location opening_loc, Location content_loc, Location closing_loc, String unescaped, Location location) -> void + # + # @return [XStringNode] a new instance of XStringNode + # + # source://prism-0.24.0/lib/prism/node.rb:18945 + def initialize(source, flags, opening_loc, content_loc, closing_loc, unescaped, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:18957 + def accept(visitor); end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18962 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def closing: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:19044 + sig { returns(String) } + def closing; end + + # attr_reader closing_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:19014 + sig { returns(Prism::Location) } + def closing_loc; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:18972 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18967 + def compact_child_nodes; end + + # def content: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:19039 + sig { returns(String) } + def content; end + + # attr_reader content_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:19008 + sig { returns(Prism::Location) } + def content_loc; end + + # def copy: (**params) -> XStringNode + # + # source://prism-0.24.0/lib/prism/node.rb:18977 + sig { params(params: T.untyped).returns(Prism::XStringNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:18962 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { flags: Integer, opening_loc: Location, content_loc: Location, closing_loc: Location, unescaped: String, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:18993 + def deconstruct_keys(keys); end + + # def forced_binary_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:19029 + sig { returns(T::Boolean) } + def forced_binary_encoding?; end + + # def forced_utf8_encoding?: () -> bool + # + # @return [Boolean] + # + # source://prism-0.24.0/lib/prism/node.rb:19024 + sig { returns(T::Boolean) } + def forced_utf8_encoding?; end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:19049 + def inspect(inspector = T.unsafe(nil)); end + + # def opening: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:19034 + sig { returns(String) } + def opening; end + + # attr_reader opening_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:19002 + sig { returns(Prism::Location) } + def opening_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:19074 + def type; end + + # attr_reader unescaped: String + # + # source://prism-0.24.0/lib/prism/node.rb:19020 + sig { returns(String) } + def unescaped; end + + private + + # private attr_reader flags: Integer + # + # source://prism-0.24.0/lib/prism/node.rb:18998 + sig { returns(Integer) } + def flags; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:19084 + def type; end + end +end + +# Represents the use of the `yield` keyword. +# +# yield 1 +# ^^^^^^^ +# +# source://prism-0.24.0/lib/prism/node.rb:19093 +class Prism::YieldNode < ::Prism::Node + # def initialize: (Location keyword_loc, Location? lparen_loc, ArgumentsNode? arguments, Location? rparen_loc, Location location) -> void + # + # @return [YieldNode] a new instance of YieldNode + # + # source://prism-0.24.0/lib/prism/node.rb:19095 + def initialize(source, keyword_loc, lparen_loc, arguments, rparen_loc, location); end + + # def accept: (Visitor visitor) -> void + # + # source://prism-0.24.0/lib/prism/node.rb:19106 + def accept(visitor); end + + # attr_reader arguments: ArgumentsNode? + # + # source://prism-0.24.0/lib/prism/node.rb:19166 + sig { returns(T.nilable(Prism::ArgumentsNode)) } + def arguments; end + + # def child_nodes: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:19111 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def child_nodes; end + + # def comment_targets: () -> Array[Node | Location] + # + # source://prism-0.24.0/lib/prism/node.rb:19123 + def comment_targets; end + + # def compact_child_nodes: () -> Array[Node] + # + # source://prism-0.24.0/lib/prism/node.rb:19116 + def compact_child_nodes; end + + # def copy: (**params) -> YieldNode + # + # source://prism-0.24.0/lib/prism/node.rb:19128 + sig { params(params: T.untyped).returns(Prism::YieldNode) } + def copy(**params); end + + # def child_nodes: () -> Array[nil | Node] + # def deconstruct: () -> Array[nil | Node] + # + # source://prism-0.24.0/lib/prism/node.rb:19111 + sig { returns(T::Array[T.nilable(Prism::Node)]) } + def deconstruct; end + + # def deconstruct_keys: (Array[Symbol] keys) -> { keyword_loc: Location, lparen_loc: Location?, arguments: ArgumentsNode?, rparen_loc: Location?, location: Location } + # + # source://prism-0.24.0/lib/prism/node.rb:19143 + def deconstruct_keys(keys); end + + # def inspect(NodeInspector inspector) -> String + # + # source://prism-0.24.0/lib/prism/node.rb:19197 + def inspect(inspector = T.unsafe(nil)); end + + # def keyword: () -> String + # + # source://prism-0.24.0/lib/prism/node.rb:19182 + sig { returns(String) } + def keyword; end + + # attr_reader keyword_loc: Location + # + # source://prism-0.24.0/lib/prism/node.rb:19148 + sig { returns(Prism::Location) } + def keyword_loc; end + + # def lparen: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:19187 + sig { returns(T.nilable(String)) } + def lparen; end + + # attr_reader lparen_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:19154 + sig { returns(T.nilable(Prism::Location)) } + def lparen_loc; end + + # def rparen: () -> String? + # + # source://prism-0.24.0/lib/prism/node.rb:19192 + sig { returns(T.nilable(String)) } + def rparen; end + + # attr_reader rparen_loc: Location? + # + # source://prism-0.24.0/lib/prism/node.rb:19169 + sig { returns(T.nilable(Prism::Location)) } + def rparen_loc; end + + # Sometimes you want to check an instance of a node against a list of + # classes to see what kind of behavior to perform. Usually this is done by + # calling `[cls1, cls2].include?(node.class)` or putting the node into a + # case statement and doing `case node; when cls1; when cls2; end`. Both of + # these approaches are relatively slow because of the constant lookups, + # method calls, and/or array allocations. + # + # Instead, you can call #type, which will return to you a symbol that you + # can use for comparison. This is faster than the other approaches because + # it uses a single integer comparison, but also because if you're on CRuby + # you can take advantage of the fact that case statements with all symbol + # keys will use a jump table. + # + # def type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:19225 + def type; end + + class << self + # Similar to #type, this method returns a symbol that you can use for + # splitting on the type of the node without having to do a long === chain. + # Note that like #type, it will still be slower than using == for a single + # class, but should be faster in a case statement or an array comparison. + # + # def self.type: () -> Symbol + # + # source://prism-0.24.0/lib/prism/node.rb:19235 + def type; end + end +end + +# source://rubocop-1.34.1/lib/rubocop/target_ruby.rb:7 +RuboCop::TargetRuby::KNOWN_RUBIES = T.let(T.unsafe(nil), Array) diff --git a/test/unit/packwerk/file_processor_test.rb b/test/unit/packwerk/file_processor_test.rb index 4b3b49821..9ddca2daa 100644 --- a/test/unit/packwerk/file_processor_test.rb +++ b/test/unit/packwerk/file_processor_test.rb @@ -116,7 +116,7 @@ class FileProcessorTest < Minitest::Test assert_equal 0, processed_file.unresolved_references.count offenses = processed_file.offenses assert_equal 1, offenses.length - assert_equal "Syntax error: unexpected token $end", offenses.first.message + assert_equal "Syntax error: expected a delimiter to close the parameters", offenses.first.message end test "#call with a path that can't be parsed outputs error message" do