From 1d87b8c46cbc1e32370ee8bc0f4625b7c41bf67e Mon Sep 17 00:00:00 2001 From: Ufuk Kayserilioglu Date: Wed, 6 Mar 2024 14:32:24 -0500 Subject: [PATCH] Fix some missing methods/signatures in RBIs --- rbi/prism/compiler.rbi | 2 +- rbi/prism/translation/ripper.rbi | 10 +++++----- templates/lib/prism/node.rb.erb | 5 +++++ templates/rbi/prism/node.rbi.erb | 7 +++++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/rbi/prism/compiler.rbi b/rbi/prism/compiler.rbi index 954c9202c28..b37abd546c4 100644 --- a/rbi/prism/compiler.rbi +++ b/rbi/prism/compiler.rbi @@ -9,6 +9,6 @@ class Prism::Compiler sig { params(nodes: T::Array[T.nilable(Prism::Node)]).returns(T::Array[T.nilable(Result)]) } def visit_all(nodes); end - sig { params(node: T.nilable(Prism::Node)).returns(T::Array[T.nilable(Result)]) } + sig { params(node: Prism::Node).returns(T::Array[T.nilable(Result)]) } def visit_child_nodes(node); end end diff --git a/rbi/prism/translation/ripper.rbi b/rbi/prism/translation/ripper.rbi index 0e19ee8a467..5173e4c2f88 100644 --- a/rbi/prism/translation/ripper.rbi +++ b/rbi/prism/translation/ripper.rbi @@ -1,6 +1,6 @@ # typed: strict -class Prism::Translation::Ripper < Prism::Translation::RipperCompiler +class Prism::Translation::Ripper < Prism::Compiler Result = type_member sig { returns(T::Boolean) } @@ -9,11 +9,11 @@ class Prism::Translation::Ripper < Prism::Translation::RipperCompiler sig { returns(T.nilable(Result)) } def parse; end - sig { params(source: String).returns(T.untyped) } - def self.sexp_raw(source); end + sig { params(source: String, filename: String, lineno: Integer, raise_errors: T.untyped).returns(T.untyped) } + def self.sexp_raw(source, filename = "-", lineno = 1, raise_errors: false); end - sig { params(source: String).returns(T.untyped) } - def self.sexp(source); end + sig { params(source: String, filename: String, lineno: Integer, raise_errors: T.untyped).returns(T.untyped) } + def self.sexp(source, filename = "-", lineno = 1, raise_errors: false); end end class Prism::Translation::Ripper::SexpBuilder < Prism::Translation::Ripper diff --git a/templates/lib/prism/node.rb.erb b/templates/lib/prism/node.rb.erb index 72d291e8159..12a984e5a28 100644 --- a/templates/lib/prism/node.rb.erb +++ b/templates/lib/prism/node.rb.erb @@ -97,6 +97,11 @@ module Prism def type raise NoMethodError, "undefined method `type' for #{inspect}" end + + # Returns a string representation of the node. + def inspect(inspector = NodeInspector.new) + raise NoMethodError, "undefined method `inspect' for #{inspect}" + end end <%- nodes.each do |node| -%> diff --git a/templates/rbi/prism/node.rbi.erb b/templates/rbi/prism/node.rbi.erb index 5008ea6e209..987375b95ea 100644 --- a/templates/rbi/prism/node.rbi.erb +++ b/templates/rbi/prism/node.rbi.erb @@ -22,7 +22,7 @@ class Prism::Node sig { returns(String) } def to_dot; end - sig { abstract.params(visitor: Prism::Visitor).void } + sig { abstract.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end sig { abstract.returns(T::Array[T.nilable(Prism::Node)]) } @@ -39,6 +39,9 @@ class Prism::Node sig { abstract.returns(Symbol) } def type; end + + sig { abstract.params(inspector: Prism::NodeInspector).returns(String) } + def inspect(inspector = Prism::NodeInspector.new); end end <%- nodes.each do |node| -%> @@ -54,7 +57,7 @@ class Prism::<%= node.name -%> < Prism::Node sig { params(<%= ["source: Prism::Source", *node.fields.map { |field| "#{field.name}: #{field.rbi_class}" }, "location: Prism::Location"].join(", ") %>).void } def initialize(<%= ["source", *node.fields.map(&:name), "location"].join(", ") %>); end - sig { override.params(visitor: Prism::Visitor).void } + sig { override.params(visitor: Prism::Visitor).returns(T.untyped) } def accept(visitor); end sig { override.returns(T::Array[T.nilable(Prism::Node)]) }